小数分频器vhdl实现_VHDL学习笔记(1)
时间: 2023-11-26 22:06:03 浏览: 133
wenjian.rar_442 _vhdl 6分频器
5星 · 资源好评率100%
小数分频器是一种常见的电路,能够将输入时钟信号分频为一个小于1的分数。VHDL是硬件描述语言,可以用于设计数字电路。下面是一个小数分频器的VHDL实现。
```vhdl
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity Fractional_Divider is
Port ( CLK_IN : in STD_LOGIC;
CLK_OUT : out STD_LOGIC;
EN : in STD_LOGIC;
RST : in STD_LOGIC;
N : in UNSIGNED(9 downto 0);
D : in UNSIGNED(9 downto 0));
end Fractional_Divider;
architecture Behavioral of Fractional_Divider is
signal counter : UNSIGNED(9 downto 0) := (others => '0');
signal div : UNSIGNED(19 downto 0) := (others => '0');
signal clk_div : STD_LOGIC := '0';
begin
process (CLK_IN, RST)
begin
if (RST = '1') then
counter <= (others => '0');
div <= (others => '0');
clk_div <= '0';
elsif rising_edge(CLK_IN) then
if (EN = '1') then
counter <= counter + 1;
if (counter = (D - 1)) then
counter <= (others => '0');
div <= div + N;
clk_div <= not clk_div;
end if;
end if;
end if;
end process;
CLK_OUT <= clk_div;
end Behavioral;
```
这个小数分频器的输入是一个时钟信号`CLK_IN`,还有一个使能信号`EN`和复位信号`RST`。输出是分频后的时钟信号`CLK_OUT`。`N`和`D`分别是分子和分母,用于计算分数。
在`process`中,首先根据复位信号清空计数器和除数寄存器以及分频后的时钟信号。然后在时钟上升沿触发时,如果使能信号为1,则将计数器加1。当计数器计数到D-1时,说明经过了D个时钟周期,需要对除数寄存器加上分数N,并将计数器清零。同时,分频后的时钟信号取反。
最后将分频后的时钟信号赋值给输出端口`CLK_OUT`即可。
这是一个简单的小数分频器的VHDL实现。
阅读全文