本秒表计时器用于体育竞赛及各种要求有较精确时的各领_第1页
本秒表计时器用于体育竞赛及各种要求有较精确时的各领_第2页
本秒表计时器用于体育竞赛及各种要求有较精确时的各领_第3页
本秒表计时器用于体育竞赛及各种要求有较精确时的各领_第4页
本秒表计时器用于体育竞赛及各种要求有较精确时的各领_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本秒表计时器用于体育竞赛及各种要求有较精确时的各领域。此计时器是用一块专用的芯片,用VHDL语言描述的。它除开关、时钟和显示功能以外,它还包括1/100s计时器所有的控制和定时功能,其体积小,携带方便。计时器的设计功能:(1)                精度应大于1/100s(2)             

2、0;  计时器的最长计时时间为1小时在一般的短时间计时应用中,1小时应该足够了。为此需要一个6位显示器,显示最长时间为59分59.99秒。(3)                设置复位和启/停开关复位开关用来使计时器清0,并作好清0准备。启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程应立即终止,并

3、对计时器清零。设计方案:为了便于描述,将整个计时控制芯片分成5个子模块:键输入子模块(keyin),时钟产生子模块(clkgen),控制子模块(ctrl),定时计数子模块(cntclk)和显示子模块(disp),各模块之间信号连接关系的方框图如下:芯片设计:各模块程序及生成的符号文件如下:keyin模块设计该模块的描述是为了产生单个复位脉冲res和启停脉冲stst.整个功能模块用两个进程语句描述。library ieee;entity keyin isport(reset,start_stop,clk :in std_logic;res,stst :out std_logic);end ent

4、ity;architecture a of keyin issignal res0,res1,stst0,stst1 :std_logic;beginprocess(clk)beginif(clk'event and clk='0')then res1<=res0; res0<=reset; stst1<=stst0; stst0<=start_stop;end if;end process;process(res0,res1,stst0,stst1)beginres<=clk and res0 and (not res1);stst<

5、;=clk and stst0 and (not stst1);end process;end a;clkgen模块设计该模块的功能是产生100Hz的计时允许信号cntclk和25Hz的宽度为1ms的键输入时钟信号keycek.LIBRARY IEEE;ENTITY cnt10 IS PORT (reset,en,clk:IN STD_LOGIC; carry:OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT10;ARCHITECTURE rtl OF cnt10 IS SIGNAL qs :STD_LOGIC_VECTOR(

6、3 DOWNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROCESS(clk) BEGIN IF(clk'EVENT 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&

7、lt;='1' ELSELIBRARY IEEE;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 PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')

8、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) BE

9、GIN q<=qs; carry<=ca AND en; END PROCESS; END rtl; ctrl子模块该模块的功能是产生计时计数模块的计数允许信号cntenlibrary ieee;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'

10、or res='1') thenenb1<='0'elsif(stst'event and stst='1') thenenb1<=not enb1;end if;end process;centen<=enb1 and cntclk;end rtl;cntblk模块设计该模块的功能是实现计时计数,它由四个十进制计数器和两个六进制计数器串结而成。LIBRARY IEEE;ENTITY cnt10 IS PORT (reset,en,clk:IN STD_LOGIC; carry:OUT STD_LOGIC; q :OUT

11、 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(clk'EVENT AND clk='1')THEN IF(reset='1')THEN qs<="0000" ELSIF(en='1') THEN IF(qs="1001") T

12、HEN qs<= "0000" ca<='0' ELSIF(qs="1000") THEN qs<= qs+1; ca<='1' ELSE qs<=qs+1; ca<='0' END IF; END IF; END IF; END PROCESS; PROCESS(ca,en) BEGIN q<=qs; carry<=ca AND en; END PROCESS; END rtl; LIBRARY IEEE;ENTITY cnt6 IS PORT (reset

13、,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(clk'EVENT AND clk='1')THEN IF(reset='1')THEN qs<="0000" ELSIF(en='1')THEN IF(qs="0101") THEN qs<= "0000" ca<='0' EL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论