--分频模块:--24 进制模块:--60 进制模块:--扫描显示及译码模块
-- 整点报时模块:
1、完成秒/分/时的依次显示并正确计数;
2、秒/分/时各段个位满 10 正确进位,秒/分能做到满 60 向前进位;
3、定时闹钟:实现每到整点时报时,扬声器发出报时声音;
4、时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;
秒还可以手动调 0;
1) 分频模块:
源代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
enty yxfrequencydivider is
port(clk:in std_logic;
hz512,hz256,hz64,hz4,hz1:out std_logic);
end yxfrequencydivider ;
architecture hz of yxfrequencydivider is
signal count:std_logic_vector(9 downto 0);
begin
process(clk)
begin
if (clk'event and clk='1') then
if (count="1111111111") then
count<="0000000000";
else
count<= count+1;
end if;
end if;
end process;
hz512 <= count(0);
hz256 <= count(1);
hz64 <= count(3);
hz4<=count(7);
hz1<=count(9);
end architecture;
模块说明:由于 clk 的频率为 1024hz,所以可以定义一个 std_logic_vecture(9 downto 0),使它
不停地从 0000000000 加到 1111111111 然后又返回 000000000,由于最低位在 clk 脉冲到来
时从 0 变成 1,然后又在下一个脉冲变回 0,因此最低位的时钟周期为 clk 的时钟周期的两
倍 , 它 的 频 率 就 为 clk 频 率 的 1/2 即 512HZ 。 同 理 , 次 高 位 的 频 率 就 为 clk 频 率 的
1/2*1/2=1/4,用这种方法就可以得到各种能整除 1024 的频率,从而实现分频功能。
2) 24 进制模块
源程序
评论0