文档详情

EDA数字时钟设计.doc

发布:2017-05-24约4.3千字共8页下载文档
文本预览下载声明
Quartus数字时钟设计 设计功能 可以快速设置时钟起始值; 在59分50秒时开始报时,七声低音,一声高音,报完刚好整点。 二.功能实现 1.顶层设计(采用BDF文件图形设计,文件名:timer.bdf) 秒计时器模块设计 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity second1 is port(clk1s:in std_logic; reset:in std_logic; sec2,sec1:buffer std_logic_vector(3 downto 0);--秒的十位和个位 seco: out std_logic); --秒计时器的进位输出 end; architecture A of second1 is begin process(clk1s,reset) begin if reset = 0 then sec2 = 0000; sec1 = 0000; --清零秒计时器 seco = 0; elsif clk1sevent and clk1s =1 then if (sec1 = 1001 and sec2 = 0101) then sec2 = 0000;sec1 =0000; --在59秒时回零 seco = 1; --进位 elsif (sec1 =1001) then sec1 =0000; sec2 = sec2+1; seco = 0; else sec1 = sec1+1; seco = 0; end if; end if; end process; end; 3.分计时器模块设计 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity minute1 is port(clkm,clk1s,setm:in std_logic; --秒进位输入,1HZ校分时钟输入信号,校分控制信号 min2,min1:buffer std_logic_vector(3 downto 0); --分计时器的十位和个位 minco:out std_logic); end; architecture A of minute1 is signal clkx:std_logic; begin Pclkm:process(clkm,clk1s,setm) begin --根据是否校分选择计时时钟 if setm =1 then clkx = clk1s; --利用clk1s信号对分的初值进行快速设置 else clkx =clkm; --利用秒的进位信号正常计时 end if; end process; Pcontm:process(clkx) begin if clkxevent and clkx =1 then if (min1 = 1001 and min2 = 0101) then min1 =0000;min2 =0000;minco =1; --59分时回零并进位 elsif (min1 = 1001) then min1 =0000;min2 = min2+1; minco = 0; else min1 = min1+1;minco =0; end if; end if; end process; end; 4.时计时器模块设计 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.a
显示全部
相似文档