ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:538.23KB ,
资源ID:8928507      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8928507.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字钟VHDL程序.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字钟VHDL程序.docx

1、数字钟VHDL程序大连理工大学本科实验报告题目:数字钟的VHDL设计课程名称: 数字电路课程设计学院(系):电子信息与电气工程学部 专 业: 电子信息工程班 级: 学生姓名: 学 号: 完成日期: 成 绩: 2013 年 12 月 15 日数字钟的VHDL设计1.设计任务及要求:设计任务:设计一台能显示时、分、秒的数字钟。具体要求如下:(1) 设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟 的时间,秒针的计数频率为IHz,可由系统脉冲分频得到。(2) 在整点进行提示,可通过LED闪烁实现,闪烁频率及花型可自己设计。(3) 能够调整小时和分钟的时间,调整的形式为通过按键进

2、行累加。(4) 具有闹钟功能,闹钟时间可以任意设泄(设泄的形式同样为通过按键累加),并且 在设建的时间能够进行提示,提示同样可以由LED闪烁实现设计要求:(1)编写设计报告,要求包括方案选择、程序代码淸单、调试过程、测试结果 及心得体会。2设计原理图1数字钟的系统框图该系统山振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时 电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号, 它直接决定计时系统的精度秒计数器”采用六十进制计数器,每累计60秒向 “分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数 器”进位时计数器”采用二十四进制计数器,按照“

3、24翻规律计数。“时、 分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时 对“时、分、秒”进行校对调整。整点报时电路是根据计时系统的输出状态产生 一脉冲信号,然后去触发音频发生器实现报时。3.设计过程3.1.设计思路时钟脉冲信号作为数字钟的时间基准,再经分频器输岀标准秒脉冲。秒i数器计满60 后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器是计满24后,系统 自动复位重新开始汁数。计数器的输出经译码电路后送到显示器显示。可以用校时电路进行 校时。整点报时电路在每小时的最后50秒开始报时间隔一秒报一次时直至下一小时开始。3. 2.数字钟的设计方案数字钟的设计

4、包括编码模块、分频模块、秒计时模块、分计时模块、小时讣时模块、闹 钟模块和报时模块。该数字钟可以实现3个功能:计时功能、报时功能、闹铃和设置时间功 能。3. 2.1.编码模块编码模块主要是对时、分、秒的设宜输入。3. 2.2.分频模块在数字钟的设汁中,外部输入时钟信号ClkI的频率为50Mhz,其分频后的频率为elk, 使其分频结果为Ihz,用来提供给秒计时模块、分计时模块、小时计时模块。3. 2. 3.秒计时模块将“秒计时脉冲” CIk接信号源单元的IHZ脉冲信号,此时秒显示将从00计时到59, 然后回到00,重新计时。在秒位进行计时的过程中。秒计时器是由一个60进制的计数器构成的,具有置数

5、和计数功能。其中reset为宜数 信号,当reset为1时,秒计时器置数。CIk为驱动秒计时器的时钟,SeC2、SeCl为秒计时 器的髙位和低位输出。3. 2.4.分计时模块分计时电路:将“分计时脉冲” CIk接信号源单元的CI脉冲信号,此时分显示将从00 计时到59,然后回到00,重新计时。在分位进行计时的过程中。分计时器是由一个60进制 的计数器构成的,具有置数和计数功能。其中rese为置数信号,当reset为1时,分计时 器置数。fen4、fen3为分计时器的高位和低位输出。3. 2. 5.小时计时模块将“小时汁时脉冲”Clk接信号源单元的c2脉冲信号,此时小时显示将从00汁时到23,

6、然后回到00,重新计时。时计时器是由一个24进制的计数器构成的,具有置数和计数功能。其中的reset为宜 数信号,当reset为1时,时计时器置数。Shi6、shi5为时计时器的高位和低位输出。3. 2. 6.报时模块当分位到59时,秒位计到51秒、53秒、55秒、57秒、59秒时报时一次,而后小时位 加IO3.2. 7. VHDL引脚分配图4.源程序4.1.数字钟整体程序整个程序分为六个部分,分别为分频部分、校时部分、秒部分、分部分、小时部分和报 时部分。4. 2. VHDL程序及波形分析4.2.1. VHDL 程序Iibrary ieee; COUnt60USe ieee Std_IOgi

7、C-1164 all;USe ieeestd_logic_unsigned.all;entity COUnt60 isPOrt(elk:in Std-IOgic;reset: in Std-IOgic;set:in Std-IOgic;inc:in Std-IOgic;OUt1:OUt Std IOgiC VeCtOr (3 downto 0):out2:OUt Std-IOgiC-VeCtOr(3 downto 0);c:OUt Std-IOgic;alight:OUt Std-IOgiC);end;architecture run2 Of COUnt60 isSignaI tsl, ts2

8、, asl, as2:Std-IOgiC-VeCtor ( 3 downto O):二0000;SignaI tclk,aclk: Std-IOgic;beginPrOCeSS (inc, elk, Set)根据设置模式,处理inc上的脉冲信号beginif Set- O then 时间调整模式aclk=,0,;if clk=, and inc二i then CIk=I则tclk通过挖洞方式添加一个脉冲 tclk= 0;elsif CIk= O and inc=i then clk=O, K tclk=l,产生一个高电平,添加一 脉冲tdk= r ;elsetclk=clk;end if;el

9、sif set=* then -闹铃调整模式tclk=clk;aclk=inc; inc上的脉冲直接修改闹铃立时值end if Jend process;PrOCeSS(tclk, reset)beginif(reset= O) then tsl=OOOO; ts2=0000,z;elsif (tclk,event and tclk=,)thenif tsl=zz1001,z then tsl=OOOOif ts2=010 then ts2=0000,z;else ts2=ts2+l;end if;else tsl=tsl+l;-讣数过程end if;end if;end process;-结

10、束进程PrOCeSS(aclk, reset)beginif(reset= O,)then asl=0000;as2=0000;elsif (aclk,event and aclk=,)then辻 asl=zz100f, then asl=0000;if as2=01Or then as2=0000;else as2=as2+l;end if Jelse asl=asl+l;-计数过程end 辻;end if;end process;-结束进程PrOCeSS (tsl, ts2, asl, as2) 显示时间或闹铃立时值 beginif Set=0 then 显示时间OUtK=tsl;out2

11、=ts2;else 显示定时值OUtl=asl;out2=as2;end if;end process;PrOCeSS (tsl, ts2, asl, as2)判断定时值与时间值相等,输出闹铃触发信号 begin辻(tsl=zZIOOrZ and ts2=,z01Or) thenC= 1,;else c=j 0,;end 辻;if tsl=asl and ts2=as2 thenalight=, ;elsealight=,0;end if;end process;end run2;Iibrary ieee; COUnt24USe ieee Std-IOgic_l164 all;USe ieee

12、std_logic_unsigned.all;entity COUnt24 isPOrt(elk:in Std-IOgic;reset: in Std-IOgic;set:in Std-IOgic;inc:in Std-IOgic;OUt1:OUt Std-IOgiC-VeCtOr(3 downto 0);out2:OUt Std-IOgiC-VeCtOr(3 downto O);c:OUt Std-IOgic;alight:OUt Std-IOgiC);end;architecture runl Of COUnt24 isSignaI tsl, ts2, asl, as2:Std-IOgiC

13、-VeCtor ( 3 downto O):=OooO;SignaI tclk,aclk: Std-IOgic;beginPrOCeSS (inc, elk, Set)根据设置模式,处理inc上的脉冲信号beginif Set- O then 时间调整模式aclk=,0,;if clk=* and inc=i then CIk=I 贝IJ tclk 通过挖洞方式添加一个脉冲 tclk= 0;elsif CW 0, and inc=i then clk=O,则 tclk=l,产生一个高电平,添加一 脉冲tclk=j 1,;elsetclk=clk;end if;elsif set= then 闹

14、铃调整模式tclk=clk;aclk=inc; inc上的脉冲直接修改闹铃左时值end if Jend process;PrOCeSS(tclk, reset)beginif(reset= O)then tsl=OOOO;ts2=0000;elsif(tclk, event and tclk=,) thenif ts2OOlOZZ thenif(tsI=A,10Or) then tsl=z0000ts2=ts2+l;else tsl=tsl+l;end if Jelsif(ts2=0010 thenif(tsl=OOIr) thentsl=OoOO; ts2 二0000;计数过程else ts

15、l=tsl+l;end if;end 辻;end if;end process;-结束进程PrOCeSS(aclk, reset)begin辻(reset= ,) then asl=0000;as2=OOOOzZ;elsif (aclk,event and aclk=,)thenif as2z,0010 then辻(asl=100) then asl=zz0000;as2=as2+l;else asl=asl+l;end if;elsif(as2=0010) thenif(asl=,zOOIr) thenasl=zzOOOO; as2=z,0000; 计数过程else asl=asl+l;en

16、d if;end if;end if;end process;-结束进程PrOCeSS (tsl, ts2, asl, as2) 显示时间或闹铃定时值beginif set=O then 显示时间OUtl=tsl;out2=ts2;else 显示定时值OUtl=asl;out2=as2;end if;end process;PrOCeSS (tsl, ts2, asl, as2)判断定时值与时间值相等,输出闹铃触发信号begin辻 tsl二0010 and ts2=0011 thenc= 1,;else cU O;end if;if tsl=asl and ts2=as2 thenalight

17、=, ;elsealightqqC=IOOOoOO;When 0001二qqqqqqC=OIIooO0;When 0100二qqqqqqqqqqqq=ZZOOIOOOOZz;end case;end process;end;library ieee; ShiZhOngUSe ieee Std-IOgic_l164 all;USe ieee Std-IOgiC-UnSigned all;entity ShiZhOng isPOrt (elk:in Std-IOgic;-PIN-N2reset:in std_logic;PIN_N25Set:in Std-IOgic;-PIN-N26incl, i

18、nc2, inc3:in std_logic;PIN.G26, PIN.N23, PDLP23shi6, shi5, fen4, fen3, miao2, miaol:OUt Std-IOgiC-VeCtOr(6 downto 0);alight, Iightl, Iight2:oUt Std-IOgiC);-闹铃end;architecture run Of ShiZhOng isSignaI sshi6, sshi5, sfen4, sfen3, SmiaO2, SmiaOI: Std-IOgiC-VeCtOr(3 downto 0);SignaI cl, c2, c3, clkls, c

19、lk2ms, ClkIms:Std-IOgic;SignaI alightl, alight2, alight3:Std-IOgiC;COmPOnent COUnt60POrt(elk:in Std-IOgic;reset:in Std-IOgic;set:in Std-IOgiC;inc:in Std-IOgiC;outl:out Std-IOgiC-VeCtOr(3 downto 0);out2:OUt std_IOgiC-VeCtOr(3 downto 0);c:OUt std_logic;alight:OUt Std-IOgiC);end COmPOnent;COmPOnent COU

20、nt24POrt(Clk:in Std-IOgic;reset:in Std-IOgic;set:in Std-IOgic;inc:in std-logic;OUt1:OUt Std-IOgiC-VeCtOr(3 downto 0);out2:OUt Std-IOgiC-VeCtOr(3 downto 0);c:OUt Std-IOgic;alight:OUt Std-IOgiC);end COmPOnent;COmPOnent XianShiPOrt (elk:in Std-IOgiC-VeCtOr(3 downto O);Qq:OUt Std-IOgiC-VeCtOr(6 downto O

21、);end COmPOnent;beginPrOCeSS(CIk)Variable COUnt1: integer range O to 49999999;beginif (clk, event and clk=* ) then COUnt 1: =COUnt 1+1;在 Clk 的上升沿计数 if COUnt1=24999999 then clkls=,0,;elsif COUntl=49999999 then clkls= f ;else COUntI:=0;end 辻;end if;end process;产生周期为IS的时钟信号PrOCeSS(CIk)Variable COUnt2:i

22、nteger range O to 99999;beginif (elk* event and clk=* ) then COUnt2: =COUnt2+1: -在 Clk 的上升沿计数 辻 COUnt2=49999 then clk2ms=:,O;elsif COUnt2=99999 then clk2ms=, f ;else COUnt2:=0;end if;end if;end process; -产生周期为2ms的时钟信号500HZPrOCeSS(CIk)Variable COUnt3:integer range O to 49999;beginif (elk* event and c

23、lk=* ) then COUnt3: =COUnt 3+1; -在 CIk 的上升沿计数 if COUnt3=24999 then CIkImS=,O;elsif COUnt3=49999 then CIkImS 1,;else COUnt3:=0;end if;end if;end process;产生周期为ImS的时钟信号 IOOOHZPrOCeSS(alightl, alight2, alight3)beginif alightl= and alight2=, and alight3=, then alight=, ;else alight=* 0,;end if;end proces

24、s;PrOCeSS (Sfen4,Sfen3, SmiaO2, SmiaOl) beginif sfen4=zZOlOr and Sfen3=10Or then if SmiaO2=z0IOIzZ thenif smiaol=z,0001,z thenIightI=clk2ms;elsif SmiaOI=ZZOOlIzZ thenIightI=clk2ms;elsif SmiaOI=zzOlOlzz thenIightI=clk2ms;elsif SmiaOI=,0InZZ thenIightl=clk2ms;elsif SmiaOI=ZZIOOIzZ thenIight2=clklms; elseIightK= 0,;Iight2JCI. JJ ca: :UAtg込s 6.a勾5.实验结果及说明本实验采用VHDL语言描述系统功能,并在QUARTUS II I具软件中进行仿真,下载 到EDA实验箱进行验证。配置文件下载成功后,上电后,秒满59向分进1后又从00开始计数,分满59向 小时进1后从00开始计数,小时满24从00开始计数。按键reset后,计时停止,可以用 键key2h keylh key0分别对小时、分、秒进行重新设置时间数码管显示为设置的新 时间,再按键reset后,系统就再设置的时间上开始计数。当时间到59分51、53、55、55、 59秒时,输出报时信号。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1