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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数电课设vhdl数字钟设计.docx

1、数电课设vhdl数字钟设计大连理工大学本科实验报告题目:数字钟的设计课程名称: 数字电路课程设计 学院(系): 电子信息与电气工程学部 专 业: * 班 级: * 学生姓名: * 学 号: * 完成日期: * 成 绩: 2012 年 12 月 28 日实验题目:多功能数字钟的设计一、设计要求1.能够显示基本的数字钟并能自主运行。2.数字钟能够进行调时,包括小时分钟秒钟都能调。3.在接近整点时led灯会闪烁提示,并且整点时另一个led灯会提示。4.数字钟能够转变成秒表并能运行与暂停,秒表能够进行一键清零。5.数字钟还能够转变成倒计时,倒计时范围可手动调节,在倒计时停止时会有led灯闪烁提示。二、

2、设计分析与系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。利用硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用0.5s的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码管显示。从59分50秒开始,数字钟进入整点报时功能。每隔两秒提示一次。(本设计中以两个LED灯代替蜂鸣器,进行报时)

3、2. 多功能数字钟的秒表功能部分,计时范围从00分00.00秒至59分59.99秒。可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。将硬件中的50MHZ晶振经过分频获得周期为0.01秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。3. 多功能数字钟的倒计时功能部分,可通过按键(LOAD6调秒,LOAD7调分,LOAD8调时)设定倒计时开始时刻。倒计时的时钟与数字钟的时钟相同,每迎到一个时钟上升沿,则计数器减一。计数器减至00时,分钟位、秒钟位恢复至59,时钟位恢复至23。倒计时结束时(即00时00分00秒)。 本设计通过数据选择器控制译码

4、器,使数码管独立显示,各功能之间互不影响。当LOAD4为高电平,则对秒表信号进行译码,数码管显示秒表数据;当LOAD4为低电平,LOAD5为高电平,则对倒计时信号进行译码,数码管显示倒计时信号数据;当LOAD4,LOAD5全为低电平,则对正常时钟信号进行译码,数码管显示时钟信号数据。系统总体结构框图 三、系统以及模块硬件电路设计硬件模块包含与,或,非多个基本逻辑单元,由硬件芯片内部提供,软件编程是为了目的性的操作硬件。50MHZ分频如下根据上式得到周期分别为1s,0.01s,0.5s的时钟。系统硬件电路设计图如下实验接口引脚连接如下接口名称类型(输入/输出)结构图上的信号名引脚号说明clkIn

5、put Pin_N2250MHz clock 信号En1InputPin_P21秒表运行使能段EN2InputPin_B132倒计时运行使能段KEY1InputPin_N235秒钟调节按键Led1OutputPin_AF237接近整点显示Led2OutputPin_AB217整点显示Load1InputPin_V21时钟运行使能端Load2InputPin_U41数字钟分钟调节按键Load3InputPin_V11数字时钟调节按键Load4InputPin_T71选择秒表显示Load5InputPin_A134选择倒计时显示Load6InputPin_AF143倒计时初始秒钟设定Load7In

6、putPin_AD138倒计时初始分钟设定Load8InputPin_AC138倒计时初始时钟设定q10Output Pin_AF108秒钟低位数码管显示q11OutputPin_AB128q12OutputPin_AC128q13OutputPin_AD118q14OutputPin_AE118q15OutputPin_V148q16OutputPin_V138q20OutputPin_V206秒钟高位数码管显示q21OutputPin_V216q22OutputPin_W216q23OutputPin_Y226q24OutputPin_AA246q25OutputPin_AA236q26O

7、utputPin_AB246q30OutputPin_AB236分钟低位数码管显示q31OutputPin_V226q32OutputPin_AC256q33OutputPin_AC266q34OutputPin_AB266q35OutputPin_AB256q36OutputPin_Y246q40OutputPin_Y236分钟高位数码管显示分钟高位数码管显示q41OutputPin_AA256q42OutputPin_AA266q43OutputPin_Y266q44OutputPin_Y256q45OutputPin_U226q46OutputPin_W246q50OutputPin_U

8、91q51OutputPin_U11q52OutputPin_U21小时低位数码管显示q53OutputPin_T41q54OutputPin_R71q55OutputPin_R61q56OutputPin_T31q60OutputPin_T21小时高位数码管显示q61OutputPin_P61q62OutputPin_P71q63OutputPin_T91q64OutputPin_R51q65OutputPin_R41q66OutputPin_R31rst1InputPin_P11秒表异步清零Rst2InputPin_C134倒计时异步清零四、系统的程序设计1.分频模块process(clk

9、) begin if rising_edge(clk) then if p1=49 then p1=0;cp1=1; else p1=p1+1;cp1=0; end if; end if; end process; process(cp1) begin if rising_edge(cp1) then if p2=999 then p2=0;cp2=1; else p2=p2+1;cp2=0; end if; end if; end process; process(cp2) begin if rising_edge(cp2) then if p3=999 then p3=0;cp3=1; e

10、lse p3=p3+1;cp3=0; end if; end if; end process; process(cp2) begin if rising_edge(cp2) then if a=1001 then a=0000;a1=1; else a=a+1;a1=0; end if; end if; end process; process(cp2) begin if rising_edge(cp2) then if clfsa=499 then clfsa=0;hlfs=1; else clfsa=clfsa+1;hlfs=0; end if; end if; end process;

11、(1)分频模块进行了三次大的分频首先乘以50得到CP1也就是0.000001s的信号在CP1的基础上继续分频乘以1000得到cp2就是0.001s信号在cp2的基础上分频乘以1000得到cp3就是1s的信号(2)利用cp2(0.001s)信号加一个模10计数器变成al信号即为0.01s信号用于秒表计时(3)利用cp2(0.001s)信号加一个模500计数器变成hlfs信号即为0.5s信号用于时钟以及秒表的设定 2.数字钟模块process(cp3,load1,key1) begin if rising_edge(cp3) then if load1=1 then if key1=0 then

12、if qq2=0101 and qq1=1001 then qq1=0000; qq2=0000; elsif qq1=1001 then qq1=0000;qq2=qq2+1; else qq1=qq1+1; end if; end if; else if load1=0 then if qq2=0101 and qq1=1001 then qq1=0000; qq2=0000;cp4=1; elsif qq1=1001 then qq1=0000;qq2=qq2+1;cp4=0; else qq1=qq1+1;cp4led1led1led1led1led2led1=0;led2=0; en

13、d case; else led1=0;led2=0; end if; end if; end if; end if; end process; process(hlfs,cp4,load2) begin if load2=1 then clkx=hlfs;else clkx=cp4;end if; if rising_edge(clkx)then if qq4=0101 and qq3=1001 then qq3=0000; qq4=0000;cp5=1; elsif qq3=1001 then qq3=0000;qq4=qq4+1;cp5=0; else qq3=qq3+1;cp5=0;

14、end if; end if; if qq3=1001 and qq4=0101 then en=1; else en=0; end if; end process; process(hlfs,cp5,load1) begin if load3=1 then clkx1=hlfs;else clkx1=cp5;end if; if rising_edge(clkx1) then if qq5=0011 and qq6=0010 then qq5=0000; qq6=0000; elsif qq5=1001 then qq5=0000;qq6=qq6+1; else qq5=qq5+1; end

15、 if; end if; end process; 数字钟模块在load1=1,key1=0时进行秒钟手动调节 Load1=0时运行秒钟并设定整点报时 Load2=1时进行分钟手动调节 Load2=0时运行分钟 Load3=1时进行时钟手动调节 Load3=0时运行时钟3.秒表模块process(a1,rst1,en1) -秒表计数器 begin if rst1=1 then b=0000;c=0000; -秒表异步清零 elsif rising_edge(a1) then if en1=1 then if b=1001 and c=1001 then b=0000;c=0000;c1=1;

16、elsif b=1001 then b=0000;c=c+1;c1=0; else b=b+1;c1=0; end if; end if; end if; end process; process(c1,rst1,en1) begin if rst1=1 then d=0000;e=0000; elsif rising_edge(c1) then if en1=1 then if d=1001 and e=0101 then d=0000;e=0000;e1=1; elsif d=1001 then d=0000;e=e+1;e1=0; else d=d+1;e1=0; end if;end

17、if; end if; end process; process(e1,rst1,en1) begin if rst1=1 then f=0000;g=0000; elsif rising_edge(e1) then if en1=1 then if f=1001 and g=0101 then f=0000;g=0000; elsif f=1001 then f=0000;g=g+1; else f=f+1; end if; end if; end if; end process;秒表模块中Rse1=1时秒表异步清零利用上升沿a1当en1=1时运行秒表并进行进位处理与时钟相类似,en1=0时

18、秒表暂停。 4.倒计时模块process(cp3,rst2,en2,clkx2,load6,hlfs) -倒计时计数器 begin if load6=1 then clkx2=hlfs; else clkx2=cp3;end if; if rst2=1 then z2=0000;z1=0000;alz1=1; -倒计时异步清零 elsif rising_edge(clkx2) then if en2=1 then if z2=0000 and z1=0000 then z2=0101;z1=1001;alz1=1; elsif z1=0000 then z1=1001;z2=z2-1;alz1

19、=0; else z1=z1-1;alz1=0; end if; if alz5=1 then if z1=0001 and z2=0000 then led3=1;else led3=0; end if;end if; end if; end if; end process; process(alz1,rst2,en2,load7,clkx3,hlfs) begin if load7=1 then clkx3=hlfs;else clkx3=alz1;end if; if rst2=1 then z4=0000;z3=0000;alz2=1; elsif rising_edge(clkx3)

20、 then if z4=0000 and z3=0000 then z4=0101;z3=1001;alz2=1; elsif z3=0000 then z3=1001;z4=z4-1;alz2=0; else z3=z3-1;alz2=0; end if; if alz4=1 then if z4=0000 and z3=0000 then alz5=1; else alz5=0;end if; end if; end if; end process; process(clkx4,alz2,rst2,en2,load8,hlfs) begin if load8=1 then clkx4=hl

21、fs;else clkx4=alz2;end if; if rst2=1 then z6=0000;z5=0000; elsif rising_edge(clkx4) then if z6=0000 and z5=0000 then z6=0010;z5=0011; elsif z5=0000 then z5=1001;z6=z6-1; else z5=z5-1; end if; if z5=0000 and z6=0000 then alz4=1;else alz4=0;end if; end if; end process; 倒计时模块中当LOAD4为低电平,LOAD5为高电平时,数码管显

22、示倒计时。当EN2为高电平,倒计时开始;当EN2为低电平,倒计时中止。当RST2为高电平,倒计时归零。由LOAD8,LOAD7,LOAD6分别对倒计时初始时刻的时、分、秒进行设定。5.功能选择模块process(qq1,qq2,qq3,qq4,qq5,qq6,b,c,d,e,f,g,load4,load5,z1,z2,z3,z4,z5,z6) begin if load4=1 then vis1=b;vis2=c;vis3=d;vis4=e;vis5=f;vis6=g; elsif load5=1 then vis1=z1;vis2=z2;vis3=z3;vis4=z4;vis5=z5;vis6=z6; else vis1=qq1;vis2=qq2;vis3=qq3;vis4=qq4;vis5=qq5;vis6q1q1q1q1q1q1q1q1q1q1 null; end case; case vis2 is when 0000=q2q2q2q2q2q2q2q2q2q2 null; end case; case vis3 is when 0000=q3q3q3q3q3q3q3q3q3q3 null; end case; case vis4 is when 0000=q4q4q4q4=

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

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