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

下载本文档

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

文档简介

1、数 字 钟 - EDA课程设计姓 名: 专 业: 班 级: 指导教师: 2010年12月15日一、数字钟的设计要求(1)具有正确的星期、时、分、秒计时功能。(2)计时结果要用6个数码管分别显示时、分、秒的十位和个位。(3)有校时功能。当键MINUTE按下时,分计数器以秒脉冲的速度递增,并按60min循环,即计数到59min后再回00。当HOUR键按下时,时计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回00。当WEEK键按下时,星期计数器以秒脉冲速度递增,并按7天循环,即计数到日后再回到一。二、数字钟顶层结构根据数字钟的功能要求,就可以对数字钟按照功能进行模块划分。图2-1是它的

2、顶层电路原理图。在图2-1中,外界通过CLK端输入1Hz的脉冲信号。1Hz信号作为秒脉冲信号送入SECOND(60进制)计数器进行秒计时,满60s产生一个进位信号CARRY,经过或门被送入MINUTE(60进制)计数器进行分计数。当按下SECOND键后,1Hz秒脉冲信号通过或门被送入MINUTE(60进制)计数器进行分计数,从而实现快速校分功能。HOUR(24进制)计数器也是经过同样的过程实现计数和校时功能。时、分、秒计数器的输出均是十位和个位分开显示的8421BCD码,将这六组BCD码通过一个六选一数据选择器MUX6_1SCAN选出一组BCD码。由外界输入的CLKCAN信号作为MUX6_1S

3、CAN的选择控制信号,然后再将选出的一组BCD码送至七段译码显示器进行译码。译码每输出结果同时送至6个LED数码管的a、b、c、d、e、f 7个段,至于哪个数码管能够显示,取决于扫描控制信号SEL的输出结果,即SEL选择哪个数码管,那个数码管就点亮。用多个(个)数码管显示数据时有并行显示和动态扫描显示两种方式。所谓并行显示,是个数码管同时被驱动,它需要同时对组BCD码数据进行编译,并输出6组LED段驱动信号去驱动个数码管的个显示段,共需要42个I/O管脚,另外还需要个BCD/段译码器。本设计采用动态扫描显示,每次仅仅点亮个数码管,各个数码管轮流被扫描点亮,如果扫描的速度足够快,由于人眼存在视觉

4、暂留现象,就看不出闪烁。开始工作时,先从组数据中选出一组,通过段译码器译码后输出,然后选出下一组数据译码输出。数据选择的时序和顺序由个进制计数器SEL控制,与此同时,MUX6_1SCAN产生选通信号。这种显示方式需要的资源少,而且节能。模块WEEK和WEEKDISP为星期(7进制)计数模块和显示模块,当时间为23:59:59时,一个秒脉冲过来,使时间为00:00:00并产生一个星期进位信号,星期计数器驱动显示模块显示相应的信息。图2-1 数字钟的顶层原理图三、数字钟各模块的VHDL源程序设计以下是数字钟各模块的VHDL程序及部分主要模块的仿真波形。(1)秒计数器的源程序LIBRARY IEEE

5、;ENTITY second IS PORT(clk,reset:IN STD_LOGIC; sec1,sec2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); carry:OUT STD_LOGIC);END second;ARCHITECTURE rt1 OF second IS SIGNAL sec1_t,sec2_t:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk,reset) BEGIN IF reset='1' THEN sec1_t<="0000" sec2_t<=&

6、quot;0000" ELSIF clk'event AND clk='1' THEN IF sec1_t="1001" THEN sec1_t<="0000" IF sec2_t="0101" THEN sec2_t<="0000" ELSE sec2_t<=sec2_t+1; END IF;图3-1 秒计数器 ELSE sec1_t<=sec1_t+1; END IF; IF sec1_t="1001" AND sec2_t=&quo

7、t;0101" THEN carry<='1' ELSE carry<='0' END IF; END IF; sec1<=sec1_t; sec2<=sec2_t; END PROCESS;END rt1;图3-2 秒计数器仿真波形图3-3 秒计数器局部放大仿真波形(2)分计数器的源程序LIBRARY IEEE;ENTITY minute IS PORT(clk,reset:IN STD_LOGIC; min1,min2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); carry:OUT STD_LOGIC

8、); END minute;ARCHITECTURE rt1 OF minute IS SIGNAL min1_t,min2_t:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk,reset) BEGIN IF reset='1' THEN min1_t<="0000" min2_t<="0000" ELSIF clk'event AND clk='1' THEN IF min1_t="1001" THEN min2_t<="

9、;0000" IF min2_t="0101" THEN min2_t<="0000" ELSE min2_t<=min2_t+1; END IF; ELSE min1_t<=min1_t+1; END IF;图3-3 分计数器 IF min1_t="1001" AND min2_t="0101" THEN carry<='1' ELSE carry<='0' END IF; END IF; min1<=min1_t; min2<=

10、min2_t; END PROCESS;END rt1;图3-4 分计数器仿真波形图3-5 分计数器局部放大仿真波形(3)时计数器的源程序LIBRARY IEEE;ENTITY hour IS PORT(clk,reset:IN STD_LOGIC; hour1,hour2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); carry:OUT STD_LOGIC);END hour;ARCHITECTURE rt1 OF hour IS SIGNAL hour1_t:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL hour2_t:STD_LOGIC_

11、VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk,reset) BEGIN IF reset='1' THEN hour1_t<="0000" hour2_t<="0000" ELSIF clk'event AND clk='1' THEN IF hour1_t="0011" AND hour2_t="0010" THEN hour1_t<="0000" hour2_t<="0000" E

12、LSE IF hour1_t="1001" THEN hour1_t<="0000" IF hour2_t="0010" THEN hour2_t<="0000" ELSE hour2_t<=hour2_t+1; END IF; ELSE hour1_t<=hour1_t+1; END IF; END IF; IF hour1_t="0000" AND hour2_t="0000" THEN图3-6 时计数器 carry<='1'

13、 ELSE carry<='0' END IF; END IF; hour1<=hour1_t; hour2<=hour2_t; END PROCESS;END rt1;图3-7 时计数器仿真波形(4)星期计数器的源程序LIBRARY IEEE;ENTITY week IS PORT(clk,reset:IN STD_LOGIC; week:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END week;ARCHITECTURE rt1 OF week IS SIGNAL week_t:STD_LOGIC_VECTOR(3 DOWNTO

14、0);BEGIN PROCESS(clk,reset) BEGIN IF reset='1' THEN week_t<="0000" ELSIF clk'event AND clk='1' THEN IF week_t="0111" THEN week_t<="0001" ELSE week_t<=week_t+1; END IF; END IF; week<=week_t; END PROCESS;END rt1;图3-8 星期计数器仿真波形(5)扫描六选一多路选择器的

15、源程序扫描六选一多路选择器MUX6_1SCAN可根据CLKCAN信号选出不同的显示数据,并驱动相应的LED数码管显示数据。LIBRARY IEEE;ENTITY mux6_1scan IS PORT(clkscan,reset:IN STD_LOGIC; in1,in2,in3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); in4,in5,in6:IN STD_LOGIC_VECTOR(3 DOWNTO 0); data:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END mu

16、x6_1scan;ARCHITECTURE rt1 OF mux6_1scan IS SIGNAL count:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN PROCESS(clkscan,reset) BEGIN IF reset='1' THEN count<="000" ELSIF clkscan'event AND clkscan='1' THEN IF count="101" THEN count<="000" ELSE count<=coun

17、t+1; END IF; END IF; END PROCESS;PROCESS(count)图3-9 MUX6_1SCANBEGIN CASE count IS WHEN "000"=>data<=in1; WHEN "001"=>data<=in2; WHEN "010"=>data<=in3; WHEN "011"=>data<=in4; WHEN "100"=>data<=in5; WHEN others=>data<

18、;=in6; END CASE;END PROCESS; sel<=count; END rt1;图3-10 MUX6_1SCAN仿真波形(6)LED扫描控制模块源程序LIBRARY IEEE;ENTITY decoder3_6 IS PORT(i:IN STD_LOGIC_VECTOR(2 DOWNTO 0); o:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END decoder3_6;ARCHITECTURE behav OF decoder3_6 ISBEGIN PROCESS(i) BEGIN CASE i IS WHEN "000"=

19、>o<="000001" WHEN "001"=>o<="000010" WHEN "010"=>o<="000100" WHEN "011"=>o<="001000" WHEN "100"=>o<="010000" WHEN "101"=>o<="100000" WHEN OTHERS=>o<

20、="000000" END CASE;END PROCESS;END behav;(7)七段译码显示源程序SEGMENT7模块是BCD7段译码器,完成BCD码向7段显示码的变换作用。LIBRARY IEEE;ENTITY segment7 IS PORT(data:IN STD_LOGIC_VECTOR(3 DOWNTO 0); dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END segment7;ARCHITECTURE behav OF segment7 ISBEGIN PROCESS(data) BEGIN CASE data IS W

21、HEN "0000"=>dout<="0111111" WHEN "0001"=>dout<="0000110" WHEN "0010"=>dout<="1011011" WHEN "0011"=>dout<="1001111" WHEN "0100"=>dout<="1100110"图3-11 SEGMENT7 WHEN "0101"=>dout<="1101101" WHEN "0110"=>dout<="1111101" WHEN "0111"=>dout<="0100111" WHEN "1000"=>dout<="1111111" WHEN "1001"=>dout<="1101111" WHEN others=>dou

温馨提示

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

评论

0/150

提交评论