12小时数字钟电路设计

上传人:gui****hi 文档编号:100427354 上传时间:2022-06-02 格式:DOC 页数:16 大小:255.91KB
收藏 版权申诉 举报 下载
12小时数字钟电路设计_第1页
第1页 / 共16页
12小时数字钟电路设计_第2页
第2页 / 共16页
12小时数字钟电路设计_第3页
第3页 / 共16页
资源描述:

《12小时数字钟电路设计》由会员分享,可在线阅读,更多相关《12小时数字钟电路设计(16页珍藏版)》请在装配图网上搜索。

1、沈阳航空航天大学 课 程 设 计 报 告课程设计名称:计算机组成原理课程设计课程设计题目:12小时数字钟电路设计与实现院(系):计算机学院专 业:计算机科学与技术班 级:34010104学 号:2013040101164姓 名:指导教师:胡光元完成日期:2016 年 1月 13 日沈阳航空航天大学课程设计报告 目 录第1章 总体设计方案21.1 设计原理21.2 设计思路21.3 设计环境2第2章 详细设计方案22.1 算法与程序的设计与实现32.2 流程图的设计与实现4第3章 程序调试与结果测试73.1 程序调试7列举出调试过程中存在的问题73.2 程序测试及结果分析7参考文献9附 录(源代

2、码)10-沈阳航空航天大学课程设计报告 附录第1章 总体设计方案1.1 设计原理 通过Verilog语言,编写12小时数字钟电路设计与实现的Verilog程序,一般的做法是底层文件用verilog写代码表示,顶层用写的代码生成的原理图文件链接组成,最后在加上输入输出端口。采用自上而下的方法,顶层设计采用原理图设计输入的方式。1.2 设计思路 1.实时数字钟显示功能,即时、分、秒的正常显示模式,并且在此基础上增加上,下午显示。 2.手动校准。按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。1.3 设计环

3、境(1)硬件环境伟福COP2000型计算机组成原理实验仪COP2000计算机组成原理实验系统由COP2000集成调试软件COP2000 集成开发环境是为.(2)EDA环境Xilinx foundation f3.1设计软件Xilinx foundation f3.1是Xilinx公司的可编程期间.第2章 详细设计方案2.1 算法与程序的设计与实现 (1)秒钟计时器 由于秒计数器为60进制计数器,所以以秒计数器作为示例说明其编程思想。其中秒计数器模块在程序中为always (posedge clk)的程序段,由上面分析得秒计数器由一个十进制计数器与一个六进制计数器组成,程序中有second0表示

4、秒计数器低位即10进制计数器,second1表示秒计数器的高位为一个六进制计数器。clk为时钟信号,时钟周期1/60(S),当低位second0满10时,自动进一位,即second1自动进位。Second0,second1位宽均为4位reg型变量。(2) 分钟钟计时器 分钟计时器由于秒计数器为12 进制计数器,示例说明其编程思想。其中秒计数器模块在程序中为always (posedge mod )的程序段,由分析得小时计数器由一个二进制计数器与一个三进制计数器组成,程序中有hour0表示秒计数器低位即二进制计数器,hour1表示秒计数器的高位为一个三进制计数器。Mod为时钟信号,来自分钟计时模

5、块的mod,时钟周期360(S),当低位hour0满3时,自动进一位,即hour1自动进位。hour1,hour1位宽均为4位reg型变量。(3) 小时计时器 小时计时器同秒钟计时器其中小时计数器模块在程序中为always (posedge tun)的程序段,分钟计时器的低位、高位分别由minute0、minute1表示,但分钟计时器模块的敏感信号为“posedge tun”时钟信号,“tun”的产生自秒钟计时器,可知其产生的时钟信号为1(S),每触发一次则分钟计数器计数加1一次,同时产生mod的时钟信号,同时由于做的是12小时数字钟电路,所有zox表示的是显示上下午,当小时计数器满12时zo

6、x变化一次,其中zox=0表示的是上午,zox=1表示的是下午。(4) 时间设置 时间设置模块实现的功能为通过按键调节可以对当前时间进行手动控制。其主要是在时间设置使能端有效地情况下通过SW1和i_SW2两个按键对数字钟的小时和分钟数进行调节。Disp_drive为设置中的显示控制,即通过SW1对位的调整,Disp_drive随之变化。i_SW2为对每一位上的数字在其范围内进行加1调节。Disp_drive取值000、001、010和011分别对应hour1、hour0、minute1和minute0的设置,其中的加1设置在各个计时器模块,这样做的原因是防止两个“always”进程对同一个变量

7、赋值发生错误。(5)控制显示模块 控制显示模块在整个数字钟的设计中起着非常重要的作用。它的作用是将时间等数据用数码管显示的控制和数据传输模块,包括数据的传输以及BCD码译码等。通过几个控制使能端将其不同功能时的时间在数码管上显示出来。本模块中端口定义比较多,下面是其所对应的功能。clk:时间自动模式工作使能信号;Timeset_EN:时间设置使能信号;Time_disp_select:时间显示位选信号;Disp_select:显示位选信号输出;程序设计中,各使能端信号为1表示执行该功能,以时间自动工作模式使能信号有效为例说明,当Time_EN为1时,首先将时间显示位选信号isp_select的

8、值赋给显示位选信号disp_select输出,定义time_disp_select的状态一共有6个,分别为100000、010000、001000、000100、000010和000001,其在各状态下分别依次表示将、hour0、hour1、minute0、minute1、second0和second1的值赋给data,用case语句来实现,其实现语句如下:always(clk,TimeSet_EN,time_disp_select,disp_select,hour1,hour0,minute1,minute0,second1,second0) begin /时钟,秒表显示 if(clk |

9、TimeSet_EN) = 1b1) begin disp_select = time_disp_select; case(time_disp_select) 6b100000: Data = hour1; 6b010000: Data = hour0; 6b001000: Data = minute1; 6b000100: Data = minute0; 6b000010: Data = second1; 6b000001: Data = second0; default: Data = 4b0; endcase end显示译码数据段主要程序如下: case(Data) 4b0000: di

10、sp_data=7b1111110; 4b0001: disp_data=7b0110000; 4b0010: disp_data=7b1101101; 4b0011: disp_data=7b1111001; 4b0100: disp_data=7b0110011; 4b0101: disp_data=7b1011011; 4b0110: disp_data=7b1011111; 4b0111: disp_data=7b1110000; 4b1000: disp_data=7b1111111; 4b1001: disp_data=7b1111011; default: disp_data=7

11、b0; endcase 显示译码程序说明了0到9十个数在7段数码管中所对应的值,在case语句里面最重要的是一定不能忘了default,否则仿真会发生所不希望看到的结果。下图13为闹钟设置使能有效时仿真结果。 2.2 流程图的设计与实现 1.数字钟数字钟主体小时计数器分计数器秒计数器24进制计数器60进制计数器6进制计数器10进制计数器Zox=0(上午)Zox=1(下午)2. 12小时数字时钟整体12小时数字钟显 示时钟时间数值 时间的校验第3章 程序调试与结果测试3.1 程序调试1、 Error (10170): Verilog HDL syntax error at a.v(65) nea

12、r text always; expecting end 忘记在begin之后加end结束语2、 Error (10161): Verilog HDL error at a.v(165): object Dat is not declared 在程序开始Dat忘记标记和定义3、 Error (10170): Verilog HDL syntax error at Time.v(49) near text else; expecting endmodule 程序后面没加endmodule4、 Error (10170): Verilog HDL syntax error at Time.v(56

13、) near text =; expecting ., or an identifier 把“=”改为“=”3.2 程序测试及结果分析1. 从图中可以看出当second0满1010即10时被置为0000,而second1加1,满足秒的低位满十进一位的设置。2.从图中可以看出,在第一个时钟周期内,时间显示位选信号time_disp_select的值为000000,此时应执行case语句的default,Data的值为0;在第二个时钟周期内,time_disp_select的值为000001,此时对应其最后一种状态,将second0的值赋给Data,即Data的值为0110,从图中看,仿真结果正确

14、,disp_data表示的是将当前数据译码显示之后七段数码管的显示,所以在第一个周期内值为1111110,表示值为0,与Data所表示的数对应。依次类推,可将Data的值全部表示出来。3.从图中可以看出,当只有Timeset_EN:时间设置使能信号有效时,其七段数码管显示结果,与数字钟自动工作使能端的区别为闹钟设置使能端有效时只需对hour0、hour1、minute0和minute1进行设置,由于其同样需要将值赋给disp_select,为了统一期间,其值也设为6位,其4个状态分别为100000、010000、001000和000100。其他与自动工作模式相同。参考文献1张明.Verilog

15、HDL实用教程.成都:电子科技大学出版社,19992齐洪喜,陆颖.VHDL电路设计M.北京:清华大学出版社,20043江国强,李哲英.EDA技术与应用M.北京:电子工业出版社,20044雷伏容.VHDL电路设计M.北京:清华大学出版社,20065曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,20006潘松,王国栋.VHDL实用教程.成都:电子科技大学出版社,20007赵雅兴.FPGA原理、设计与应用.天津:天津大学出版社,19988陈俊硕,刘景林,张金萍.基于FPGA的直流电机PWM控制器设计J.微电机2009(10)9卢杰,赖毅.VHDL与数字电路设计.北京:科学出版社,2001

16、10张昌凡,龙永红,彭涛.可编程逻辑器件及VHDL设计技术.广州:华南工学院出版社,2001附 录(源代码) 源代码: /timescale 1ns/1nsModule aa(clk,TimeSet_EN, SW1,i_SW2,zox,disp_select,hour1,hour0,minute1,minute0,second1,second0); input clk; input TimeSet_EN; /时间设置使能信号 input SW1; input i_SW2; output zox; /上下午指示模 output 5:0 disp_select; output 3:0 hour1,

17、hour0,minute1,minute0,second1,second0; reg 7:0 second,minute,hour; reg tun,mod,zox; wire r_SW2; reg 2:0 disp_drive; reg 6:0 time_disp_select; reg 6:0 disp_select; reg 3:0 Data,hour1,hour0,minute1,minute0,second1,second0; reg 6:0 disp_data; reg mt,nt; initial begin tun=0; mod=0; zox=0; hour=0; minute

18、=0; second=0; disp_drive=3b000; end assign r_SW2=i_SW2;/ /秒钟计时器 always (posedge clk) /上升沿触发 begin if(r_SW2=1b1) begin if(disp_drive=3b110) second=0; tun=0; end else if(second=8h59) begin second=0; tun=1; end else begin if(second3:0=9) begin second3:0=0; second7:4=second7:4+1; end else begin second3:

19、0=second3:0+1; end tun=0; end second1=second7:4; second0=second3:0; end/ /分钟计时器always (posedge tun) /上升沿触发 begin if(r_SW2=1b1) begin case(disp_drive) 3b010: begin /分的高位 if(minute7:45) minute7:4=minute7:4 + 1; else minute7:4=0; end 3b011: begin if(minute3:0 9) minute3:0=minute3:0+1; else minute3:0=0;

20、 end default: begin end endcase mod=0; end else if(minute=8h59) begin minute=0; mod=1; end else begin if(minute3:0=9) begin minute3:0=0; minute7:4=minute7:4+1; end else begin minute3:0=minute3:0+1; end mod=0; end minute1=minute7:4; minute0=minute3:0; end/ /时钟计时器always (posedge mod ) /上升沿触发begin if(r

21、_SW2=1b1) begin case(disp_drive) 3b000: begin if(hour7:4=0) hour7:4= hour7:4+1; else begin hour7:4= 0; if(zox=0) zox=1; else zox=0; end end 3b001: begin /小时的低位 if(hour3:01) hour3:0= hour3:0 +1; else hour3:0=0; end default: begin end endcase end else begin if(hour=8h11) begin hour=0; if(zox=0) zox=1;

22、 else zox=0; end else hour3:0=hour3:0+1; end hour1=hour7:4; hour0=hour3:0; end/ /时间设置always (posedge SW1) /手动设置使能begin if(TimeSet_EN = 1b1) begin if(disp_drive 3b101) disp_drive = disp_drive + 3b1; else disp_drive = 3b000; endend/ /时钟显示 always (clk, TimeSet_EN,time_disp_select, disp_select,hour1,hou

23、r0,minute1,minute0,second1,second0) begin /时钟,秒表显示 if(clk | TimeSet_EN) = 1b1) begin /时钟,秒表显示 if(clk | TimeSet_EN = 1b1) begin disp_select = time_disp_select; case(time_disp_select) 6b100000: Data = hour1; 6b010000: Data = hour0; 6b001000: Data = minute1; 6b000100: Data = minute0; 6b000010: Data = s

24、econd1; 6b000001: Data = second0; default: Data = 4b0; endcase end case(Data) /显示数据译码 4b0000: disp_data = 7b1111110; 4b0001: disp_data = 7b0110000; 4b0010: disp_data = 7b1101101; 4b0011: disp_data = 7b1111001; 4b0100: disp_data = 7b0110011; 4b0101: disp_data = 7b1011011; 4b0110: disp_data = 7b101111

25、1; 4b0111: disp_data = 7b1110000; 4b1000: disp_data = 7b1111111; 4b1001: disp_data = 7b1111011; default: disp_data = 7b0; endcase end endendmodule-14-沈阳航空航天大学课程设计报告课程设计总结: 通过这次设计,使我对Verilog数字系统设计这门课程有了更深入的理解。Verilog数字系统是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强实践。要想把设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。程序的编写需要有耐心,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。 通过这次的设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!我在更加牢固、灵活地掌握了所学的专业知识的同时,大量学习了VHDL编程的相关知识,为日后深入研究数字系统设计技术打下了基础。指导教师评语:指导教师(签字): 年 月 日课程设计成绩

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!