您的当前位置:首页分频器的设计

分频器的设计

来源:小侦探旅游网


(2)具体软件设计:

1. 分频模块FENPINQI:

系统时钟CLK经过分频器后形成64分频后输出CLK1。

entity fenpinqi is

port(clk:in std_logic;--系统时钟做输入。

clk1:out std_logic);

end;

architecture beh of fenpinqi is

signal add:std_logic_vector(12 downto 0);--定义中间累加信号量。

begin

process(clk)

begin

if clk'event and clk='1' then

if add=\"1111111111111\" then add<=\"0000000000000\";--当中间信号add累加到“1111111111111”时归零。

else add<=add+1;--每遇一个clk的上升沿则add加1。

end if;

end if;

clk1<=add(5);--取add(4)时频率高实验箱A上屏幕不能显示,取add(5)将频率再缩小一倍可以显示,取add(5)实现64分频。

end process;

end;

2. 地址生成模块DIZHI:

产生一个八位的二进制地址送给数字信号存储器,一共256个地址对应256个数字码元值。

entity dizhi3 is

port(clk:in std_logic;--经2次分频后的时钟(频率较低的)做输入。

address:out std_logic_vector(7 downto 0));

end;

architecture beh of dizhi3 is

signal add: std_logic_vector(7 downto 0); --定义中间累加信号量。

begin

process(clk)

begin

if clk'event and clk='1' then

if add=\"11111111\" then add<=\"00000000\";--当中间信号add累加到“111”时归零。

else add<=add+1; --每遇一个clk的上升沿则add加1。

end if;

end if;

address<=add;--将中间信号量的值赋给address。

end process;

end;

3. 波形存储器模块LPM_ROM:

由地址生成器产生的地址查表模拟出信号输出。例如在本程序中,在存储器中存储的是十六位二进制数字信号,则模拟出的方波形如图3-2所示(mif文件见附录):

(3)仿真时序图:

图4-2 DDS仿真时序图

因篇幅问题不能全部显示,请点此查看更多更全内容