数字秒表的设计的vhdl语言

上传人:xmg****18 文档编号:118793345 上传时间:2019-12-25 格式:DOC 页数:8 大小:37.50KB
返回 下载 相关 举报
数字秒表的设计的vhdl语言_第1页
第1页 / 共8页
数字秒表的设计的vhdl语言_第2页
第2页 / 共8页
数字秒表的设计的vhdl语言_第3页
第3页 / 共8页
数字秒表的设计的vhdl语言_第4页
第4页 / 共8页
数字秒表的设计的vhdl语言_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《数字秒表的设计的vhdl语言》由会员分享,可在线阅读,更多相关《数字秒表的设计的vhdl语言(8页珍藏版)》请在金锄头文库上搜索。

1、word格式数字秒表的VHDL语言的程序设计本秒表计时器用于体育竞赛及各种要求有较精确时的各领域。此计时器是用一块专用的芯片,用VHDL语言描述的。它除开关、时钟和显示功能以外,它还包括1/100s计时器所有的控制和定时功能,其体积小,携带方便。计时器的设计功能:(1) 精度应大于1/100s(2) 计时器的最长计时时间为1小时在一般的短时间计时应用中,1小时应该足够了。为此需要一个6位显示器,显示最长时间为59分59.99秒。(3) 设置复位和启/停开关复位开关用来使计时器清0,并作好清0准备。启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停

2、开关计时终止。复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程应立即终止,并对计时器清零。设计方案:为了便于描述,将整个计时控制芯片分成5个子模块:键输入子模块(keyin),时钟产生子模块(clkgen),控制子模块(ctrl),定时计数子模块(cntclk)和显示子模块(disp)。芯片设计:各模块程序及生成的符号文件如下:keyin模块设计该模块的描述是为了产生单个复位脉冲res和启停脉冲stst.整个功能模块用两个进程语句描述。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsign

3、ed.all;entity keyin isport(reset,start_stop,clk :in std_logic;res,stst :out std_logic);end entity;architecture a of keyin issignal res0,res1,stst0,stst1 :std_logic;beginprocess(clk)beginif(clkevent and clk=0)thenres1=res0;res0=reset;stst1=stst0;stst0=start_stop;end if;end process;process(res0,res1,s

4、tst0,stst1)beginres=clk and res0 and (not res1);stst=clk and stst0 and (not stst1);end process;end a;clkgen模块设计该模块的功能是产生100Hz的计时允许信号cntclk和25Hz的宽度为1ms的键输入时钟信号keycek.LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 IS PORT (reset,en,clk:IN STD_LOGIC; carry:OUT STD

5、_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT10;ARCHITECTURE rtl OF cnt10 IS SIGNAL qs :STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(reset=1)THEN qs=0000; ELSIF(en=1) THEN IF(qs=1001) THEN qs= 0000; ca=0; ELSIF(qs=1000) THEN qs= qs+1

6、; ca=1; ELSELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt4 IS PORT (reset,en,clk:IN STD_LOGIC; carry :OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END CNT4;ARCHITECTURE rtl OF cnt4 IS SIGNAL qs :STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROC

7、ESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(reset=1)THEN qs=00; ELSIF (EN=1)THEN IF(qs=11) THEN qs= 00; ca=0; ELSIF(qs=10) THEN qs= qs+1; ca=1; ELSE qs=qs+1; ca=0; END IF; END IF; END IF; END PROCESS; PROCESS(ca) BEGIN q=qs; carry=ca AND en; END PROCESS; END rtl;ctrl子模块该模块的功能是产生计时计数模块的计数允许信号cntenli

8、brary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity ctrl isport(sysres,res,stst,cntclk:in std_ulogic;centen:out std_ulogic);end ctrl;architecture rtl of ctrl issignal enb1:std_ulogic;begin process(stst,sysres,res)begin if(sysres=1 or res=1) thenenb1=0;elsif(ststevent and stst=

9、1) thenenb1=not enb1;end if;end process;centen=enb1 and cntclk;end rtl;cntblk模块设计该模块的功能是实现计时计数,它由四个十进制计数器和两个六进制计数器串结而成。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 IS PORT (reset,en,clk:IN STD_LOGIC; carry:OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);EN

10、D CNT10;ARCHITECTURE rtl OF cnt10 IS SIGNAL qs :STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(reset=1)THEN qs=0000; ELSIF(en=1) THEN IF(qs=1001) THEN qs= 0000; ca=0; ELSIF(qs=1000) THEN qs= qs+1; ca=1; ELSE qs=qs+1; ca=0; END IF; END IF; EN

11、D IF; END PROCESS; PROCESS(ca,en) BEGIN q=qs; carry=ca AND en; END PROCESS; END rtl; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt6 IS PORT (reset,en,clk:IN STD_LOGIC; carry :OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT6;ARCHITECTURE rtl OF cnt6 IS SIGNAL qs :STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(reset=1)THEN qs=0000; ELSIF(en=1)THEN IF(qs=0101) THEN qs= 0000; ca=0; ELSIF(qs=0100) THEN qs= qs+1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号