EDA课程设计数字秒表设计_第1页
EDA课程设计数字秒表设计_第2页
EDA课程设计数字秒表设计_第3页
EDA课程设计数字秒表设计_第4页
EDA课程设计数字秒表设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、电子课程设计数字秒表的设计数字秒表的设计一、设计任务与要求 1、数字秒表的计时范围是0秒59分59.99秒,显示的最长时间为59分59秒。 2、数字秒表的计时精度是10ms。 3、复位开关可以在任何情况下使用,即便在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备。 4、具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。二、总体框图高/低电平频率信号输入微妙模块秒模块分模块置数/位选显示模块进位进位由频率信号输出端输出频率为100hz的时钟信号,输入到微妙模块的时钟端clk,微妙模块为100进制的计数器,产生的进位信号co输入到下一级秒模块

2、的时钟端,以此类推,直到分模块计数到59进60时,产生的进位信号不输出,计数清零。将微妙、秒、分产生的计数通过置数/位选再通过显示模块实时显示。设计方案:利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在cpld器件上用vhdl语言实现。这样设计具有体积小,设计周期短,调试方便,故障率地和修改升级容易等特点, 本设计采用自顶向下,混合输入方式(原理图输入顶层文件链接和vhdl语言输入各模块程序设计)实现数字秒表的设计,下载和调试。三、功能模块1. 微秒模块采用vhdl语言输入方式,以时钟clk,清零信号clr以及暂停信号stop为进程敏感变量,程序如下:libr

3、ary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minsecondb isport(clk,clrm,stop:in std_logic;-时钟/清零信号 secm1,secm0:out std_logic_vector(3 downto 0);-秒高位/低位 co:out std_logic);-输出/进位信号end minsecondb;architecture sec of minsecondb issignal clk1,dout2:std_logic;beginprocess(cl

4、k,clrm)variable cnt1,cnt0:std_logic_vector(3 downto 0);-计数 variable count2 :integer range 0 to 10 beginif clk'event and clk='1'then if count2>=0 and count2<10 then count2:=count2+1; else count2:=0; dout2<= not dout2; end if; end if;if clrm='1' then-当clr为1时,高低位均为0cnt1:=&q

5、uot;0000"cnt0:="0000"elsif clk'event and clk='1' then if stop='1' then cnt0:=cnt0; cnt1:=cnt1; end if;if cnt1="1001" and cnt0="1000" ;then-当记数为98(实际是经过59个记时脉冲)co<='1'-进位cnt0:="1001"-低位为9elsif cnt0<"1001" then-小于

6、9时cnt0:=cnt0+1;-计数-elsif cnt0="1001" then-clk1<=not clk1;elsecnt0:="0000"if cnt1<"1001" then-高位小于9时cnt1:=cnt1+1;elsecnt1:="0000" co<='0' end if; end if; end if;secm1<=cnt1;secm0<=cnt0;end process;end sec;程序生成器件如图:微妙模块生成的器件可以实现带有100进制进位和清

7、零功能,暂停等功能,minsecondb输入为100hz脉冲和低电平的清零信号clr与暂停信号stop,输出微妙个位、十位及进位信号co。2、秒模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(clk,clr:in std_logic;-时钟/清零信号 sec1,sec0:out std_logic_vector(3 downto 0);-秒高位/低位 co:out std_logic);-输出/进位信号end second;architecture s

8、ec of second isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);-计数beginif clr='1' then-当ckr为1时,高低位均为0cnt1:="0000"cnt0:="0000"elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" then-当记数为58(实际是经过59个记时脉冲)co<

9、='1'-进位cnt0:="1001"-低位为9elsif cnt0<"1001" then-小于9时cnt0:=cnt0+1;-计数elsecnt0:="0000"if cnt1<"0101" then-高位小于5时cnt1:=cnt1+1;elsecnt1:="0000"co<='0'end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end sec;程序生成器件如图:此器

10、件实现60进制带有进位功能和清零功能的秒计数模块second,输入为微妙模块的进位信号和低电平有效的清零信号clr,输出秒个位、十位及进位信号co。3、分模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk,en:in std_logic; min1,min0:out std_logic_vector(3 downto 0); co:out std_logic);process(clk)variable cnt1,cnt0:std_logic_vec

11、tor(3 downto 0);beginif clk'event and clk='1' thenif en='1' thenif cnt1="0101" and cnt0="1000" thenco<='1'cnt0:="1001"elsif cnt0<"1001" thencnt0:=cnt0+1;elsecnt0:="0000"end minute;architecture min of minute isbeginif

12、 cnt1<"0101" thencnt1:=cnt1+1;elsecnt1:="0000"co<='0'end if;end if;end if;end if;min1<=cnt1;min0<=cnt0;end process;end min;程序生成器件如图:此器件实现进制带有进位和置数功能的分计数模块minute,输入为妙进位信号和高电平有效的使能信号en,输出分个位、十位及进位信号co。4、动态扫描模块 library ieee;use ieee.std_logic_1164.all;use ieee.st

13、d_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime is port( clk:in std_logic;-扫描时钟 secm1,secm0,sec1,sec0,min1,min0,h1,h0:in std_logic_vector(3 downto 0);-分别为秒个位/时位;分个位/ daout:out std_logic_vector(3 downto 0);-输出 sel:out std_logic_vector(2 downto 0);-位选信号end seltime;architecture fun of

14、seltime is signal count:std_logic_vector(2 downto 0);-计数信号begin sel<=count; process(clk) begin if(clk'event and clk='1') then if(count>="111") then count<="000" else count<=count+1; end if; end if; case count is when"111"=>daout<= secm0; wh

15、en"110"=>daout<= secm1; when"101"=>daout<= sec0; when"100"=>daout<= sec1; when"011"=>daout<=min0; when"010"=>daout<=min1; when"001"=>daout<=h0; when others =>daout<=h1; end case; end process;end fun

16、;程序生成器件如图:此器件实现复用功能模块seltime,输入为妙(含个/十位)、分、时、扫描时钟clk,输出为d和显示控制信号sel。5、显示模块library ieee;use ieee.std_logic_1164.all;entity display is port(d:in std_logic_vector(3 downto 0);-连接seltime扫描部分d信号 q:out std_logic_vector(6 downto 0);-输出段选信号(电平)end display;architecture disp_are of display isbegin process(d)

17、begincase d is when"0000" =>q<="0111111"-显示0 when"0001" =>q<="0000110"-显示1 when"0010" =>q<="1011011"-显示2 when"0011" =>q<="1001111"-显示3 when"0100" =>q<="1100110"-显示4 when"0101" =>q<="1101101"-显示5 when"0110" =>q<="1111101"-显示6 when"0111" =>q<="0100111"-显示7 when"1000" =>q<="1111111"-显示8 when others

温馨提示

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

评论

0/150

提交评论