基于Verilog HDL设计的数字时钟_第1页
基于Verilog HDL设计的数字时钟_第2页
基于Verilog HDL设计的数字时钟_第3页
基于Verilog HDL设计的数字时钟_第4页
基于Verilog HDL设计的数字时钟_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、精选文档深圳大学考试答题纸(以论文、报告等形式考核专用)二 18 二 19 学年度第 一 学期课程编号1602080001课程名称硬件描述语言与逻辑综合主讲教师刘春平评分学 号 姓名李思豪 专业年级电子科学与技术16级1班 教师评语:题目:基于Verilog HDL设计的数字时钟摘 要:本文利用Verilog HDL语言自顶向下的设计方法设计多功能数字钟,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Altera Quartus 6.0和cyclnoe II EP2C35F672C6完成综合、仿真。此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中关键词:Ver

2、ilog HDL;硬件描述语言;FPGA目录一、实验任务3实验目的3实验要求3二、设计思路3三、实验结果10四、总结与收获141、 实验任务实验目的1. 深入了解基于quartus ii工具的复杂时序逻辑电路的设计。2. 理解并熟练利用EDA工具进行综合设计。3. 熟练掌握芯片烧录的流程及步骤。4. 掌握Verilog HDL 语言的语法规范及时序电路描述方法。实验要求设计一个带秒表功能的24 小时数字钟,它包括以下几个组成部分: 显示屏,由6 个七段数码管组成,用于显示当前时间(时:分,秒)或设置的秒表时间; 复位键 复位所有显示和计数 设置键,用于确定新的时间设置,三个消抖按键分别用于时分

3、秒的设置 秒表键,用于切换成秒表功能基本要求(1) 计时功能:这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示当前时间。(2) 秒表功能:设置时间,进行倒计时功能(3) 设置新的计时器时间:按下设置键后,用户能通过时分秒三个消抖按键对时间进行设置。二、设计思路1、总原理框图:原理如上图所示,时钟由分频器模块,数码管显示模块,计时器模块三个模块构成,每个模块实现如下的不同功能,最后通过在顶层模块的调用,来实现时钟功能。2. 顶层模块:顶层模块调用三个字模块,并且定义输入输出口,代码输入所示:module myclock2(daojishi,stop,clk,reset,shi,fe

4、n,miao,miaoout1,miaoout2,fenout1,fenout2,shiout1,shiout2);input clk,reset,stop,shi,fen,miao,daojishi; output6:0 miaoout1,miaoout2,fenout1,fenout2,shiout1,shiout2;wire3:0 miao1,miao2,fen1,fen2,shi1,shi2;wire clk_1hz;divider_1HZ divider1hz(clk_1hz,reset,clk);count count1(daojishi,shi,fen,miao,stop,mia

5、o1,miao2,fen1,fen2,shi1,shi2,reset,clk_1hz);decode4_7 d0(miaoout1,miao1);decode4_7 d1(miaoout2,miao2);decode4_7 d2(fenout1,fen1);decode4_7 d3(fenout2,fen2);decode4_7 d4(shiout1,shi1);decode4_7 d5(shiout2,shi2);endmodule 输入输出端口类型功能表:引脚名类型 功能daojishiinput秒表倒计时模式stopinput暂停按键clkinput晶振脉冲resetinput复位按键s

6、hiinput小时调节按键feninput分钟调节按键miaoinput秒调节按键miaoout1output秒个位数码管输出miaoout2output秒十位数码管输出fenout1output分个位数码管输出fenout2output分十位数码管输出shiout1output时个位数码管输出shiout2output时十位数码管输出三个子模块的原理和代码:(1)分频模块 :分频模块的作用主要是要获得各种频率的时钟信号。输入信号27MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对27MHZ信号分频。通过计数的方式,当计数从0开始到13999999时,1HZ信号取反一次,计数又从0开始

7、,如此循环,就可以得到1HZ脉冲信号。对于其他信号也是如此,只是计数值不一样,得到的分频信号不同。模块代码如下:module divider_1HZ(clk_1hz,reset,clk);output clk_1hz;input reset,clk;reg clk_1hz;reg23:0 count;always (posedge clk)begin if(reset)begin count=0; clk_1hz=0; end else begin if(count=13499999)begincount=0;clk_1hz=clk_1hz;endelsecount=count+1;/计数en

8、dendendmodule(2) 译码显示模块:一、数码管显示:通过传入响应的十进制数,运用case语句转换输出相应的7位二进制显示码,送入数码管显示。 代码如下:module decode4_7(temp,indec);output6:0 temp;input3:0 indec;reg6:0 temp;always (indec)begincase(indec) /用case 语句进行译码4d0:temp6:0=7b1000000; 4d1:temp6:0=7b1111001; 4d2:temp6:0=7b0100100; 4d3:temp6:0=7b0110000; 4d4:temp6:0

9、=7b0011001; 4d5:temp6:0=7b0010010; 4d6:temp6:0=7b0000010; 4d7:temp6:0=7b1111000; 4d8:temp6:0=7b0000000; 4d9:temp6:0=7b0010000; default: temp=7bz;endcaseendendmodule(3) 、计时器模块 :秒计数:在1HZ脉冲下进行秒计时,当计时达到59秒后,在下一个脉冲来临变0,并发出一个脉冲信号,可供下面分钟计数作为输入脉冲信号计时。分钟计数:在输入脉冲下,分钟开始计时,当计时达到59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲

10、新号。小时计数:脉冲信号来临时,计数加1,达到23后在下一个脉冲的作用下清零,从新计时。如果有复位信号,则时分秒全部清零。计时器模块还包含了设置时间 和秒表切换的功能部分代码如下:module count(daojishi,shi,fen,miao,stop,miao1,miao2,fen1,fen2,shi1,shi2,reset,clk_1hz);input reset,clk_1hz,stop,daojishi;input shi,fen,miao;output miao1,miao2,fen1,fen2,shi1,shi2;reg3:0 miao1,miao2,fen1,fen2,sh

11、i1,shi2; always (posedge clk_1hz) begin if(reset) begin miao1=0;miao2=0;fen1=0;fen2=0;shi1=0;shi2=0; end if(stop=1)begin /秒调节 if(miao=0) begin miao1=miao1+1; if(miao1=9) begin miao1=0; miao2=miao2+1; if(miao2=5) begin miao2=0; end end end if(fen=0) /分调节 begin fen1=fen1+1; if(fen1=9) begin fen1=0; fe

12、n2=fen2+1; if(fen2=5) begin fen2=0; end end end if(shi=0) /时调节 begin shi1=shi1+1; if(shi1=9|(shi1=3)&(shi2=2) begin shi1=0; shi2=2) begin shi2=0; end end end end if(!reset)&(stop=0) begin if(daojishi=0) /时钟程序 begin miao1=miao1+1; if(miao1=9) begin miao1=0; miao2=miao2+1; if(miao2=5) begin miao2=0; f

13、en1=fen1+1; if(fen1=9) begin fen1=0; fen2=fen2+1; if(fen2=5) begin fen2=0; shi1=shi1+1; if(shi1=9)|(shi1=3)&(shi2=2) begin shi1=0; shi2=shi2+1; if(shi2=2) begin shi2=0; end end end end end end end else /倒计时程序 begin if(!(shi1=0)&(shi2=0)&(fen1=0)&(fen2=0)&(miao2=0)&(miao1=0) begin miao1=miao1-1; if(m

14、iao1=0) begin miao1=9; miao2=miao2-1; if(miao2=0) begin miao2=5; fen1=fen1-1; if(fen1=0) begin fen1=9; fen2=fen2-1; if(fen2=0) begin fen2=5; shi1=shi1-1; if(shi1=0) begin shi1=9; shi2=shi2-1; if(shi2=0) begin shi2=0; end end end end end end end end end endendmodule3. 引脚排布:如下所示: 引脚分布图二、实验结果(1) 波形仿真在Q

15、uartus II中利用仿真波形进行功能或时序仿真的基本步骤如下:(1)创建新的矢量波形文件(*.vwf).(2)添加输入、输出节点。(3)编译输入节点的波形。(4)完成矢量波形文件的创建之后,用户即可以对设计进行功能或时序仿真。(5)仿真启动后,状态窗口会同时自动打开,在状态窗口中显示仿真进度及所用时间。(6)默认情况下,仿真器报告窗口内在仿真过程中会显示仿真波形部分,其中还包括当前仿真器的设置信息和仿真信息等。 下面我们单独对三个子模块分别进行仿真并分析仿真结果:(1) 分频器模块仿真结果: 分频器仿真图仿真分析:我们取时钟信号的周期是20ns,为了让仿真结果更明显,取每三个时钟周期让秒脉

16、冲clk_1hz翻转一次,而不是1349999翻转一次。并且让reset复位信号在仿真的160ns-300ns有效。结果如图所示,在每三个时钟信号出现时,秒脉冲都会翻转一次,在reset信号有效时,秒脉冲无输出,仿真结果符合预计要求。(2) 显示译码模块仿真结果: 数码管输出数字8仿真图 数码管输出数字8仿真图仿真结果分析: indec是我们要输出的十进制数,temp是连接7段数码的7位二进制数,已知数码管为共阴极数码管。我们设定indec为8,从图中可以看见temp7:0都是0;所以7个数码管都会被点亮,就是显示8。我们再设定indec为1,可以预见1在数码管中应该是亮两个,如第二图所示只有

17、temp1和temp2是0,所以就是亮两个灯,显示1。仿真结果符合设计要求。(3) 计时器模块仿真结果: 计数器计数仿真图 计数器复位测试仿真图 仿真结果:miao1,miao2,fen1,fen2,shi1,shi2分别是秒分时的个位和十位,时钟脉冲clk_1hz每一个上升沿,miao1就加1,miao1再依次进位给更高的为。如图所示,当miao1计数到9的时候,miao2加1,当miao2计数到5的时候,fen1加1,时钟计数功能实现,仿真符合设计要求。图二是复位信号reset的测试,当reset为1有效时,累计的时间清零。如图所以,当reset=1时,miao1,miao2,fen1,f

18、en2,shi1,shi2全部变0,仿真符合技术要求。此模块还有设置时间和倒计时的功能,但是在波形仿真中不够直观,所以不做波形仿真。(2) DE2开发板实现将开发板插入电脑中,烧录进程序,进行各项功能测试,包括计时功能,时间调节功能,秒表功能,复位功能,暂停功能。实验过程记录:(1) 烧录程序完成,DE2立刻开始从0秒计数,依次向分钟,小时进位,当时间为23:59:59时,下一秒全部跳0;时钟功能实现。(2) 复位功能测试:switch0为复位信号按键,拨下该按键,时间清零,复位功能实现。(3) 暂停功能测试:switch1为暂停信号按键,拨下该按键,时间暂停,暂停功能实现。(4) 时间设置测试:消抖按钮key0,key1,key2,分别是秒分时设置键。按下暂停键,计数停止,每按一下key0,秒加一;每按一下key1,分加一;每按一下key2,小时加一。时间设置完成,回拨暂停键,时钟从设置的时间开始计时。时间设置功能实现。(5) 秒表倒计时功能测试:switch2为倒计时信号按键,拨下该键后,时钟开始倒计时,倒计时功能实现。测试完成,所有测试结果符合设计要求,完成verilong时钟设计。四、总结与心得体会 在QuartusII开发环境下,采用自顶向下的设计方法有利于在早期发现

温馨提示

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

评论

0/150

提交评论