数字钟verilog

发布时间 : 星期日 文章数字钟verilog更新完毕开始阅读

多功能数字钟verilog HDL设计

second0经过位拼接之后的分和秒的当前显示时间。F1khz为到达整点之后的高音频率,f500hz为59分50秒、52秒、54秒、56秒和58秒时的低音频率,radio则为到达时间时的报时输出。仿真图如下图11所示。

图11 整点报时模块仿真效果图

从图中可以看出,从59分50秒开始,输出的radio开始以f500hz的频

率报时,当到达00分00秒时,输出信号频率为f1khz,到达00分01秒的时候之后便变为0,符合设计要求。 3.7 控制显示模块

控制显示模块在整个数字钟的设计中起着非常重要的作用。它的作用是将时间等数据用数码管显示的控制和数据传输模块,包括数据的传输以及BCD码译码等。通过几个控制使能端将其不同功能时的时间在数码管上显示出来。本模块中端口定义比较多,下面是其所对应的功能。

Time_EN:时间自动模式工作使能信号; Timeset_EN:时间设置使能信号; Stopwatch_EN:秒表使能信号; Alarmclock_EN:闹钟设置使能信号; Radio_EN:整点报时使能信号; Time_disp_select:时间显示位选信号;

Alarmclock_disp_select:闹钟设置的显示位选信号; Disp_select:显示位选信号输出; Disp_data:经过译码之后显示的数据。

程序设计中,各使能端信号为1表示执行该功能,以时间自动工作模式使能信号有效为例说明,当Time_EN为1时,首先将时间显示位选信号isp_select的值赋给显示位选信号disp_select输出,定义time_disp_select的状态一共有6个,分别为100000、010000、001000、000100、000010和

8

多功能数字钟verilog HDL设计

000001,其在各状态下分别依次表示将hour0、hour1、minute0、minute1、second0和second1的值赋给data,用case语句来实现,其实现语句如下:

if((Time_EN == 1'b1) begin

disp_select <= time_disp_select; case(time_disp_select) 6'b100000: Data <= hour1; 6'b010000: Data <= hour0; 6'b001000: Data <= minute1; 6'b000100: Data <= minute0; 6'b000010: Data <= second1; 6'b000001: Data <= second0; default: Data <= 4'b0; endcase

在quartusⅡ下仿真图12如下:

图12 控制显示模块当前时间使能端有效时译码的显示

从图中可以看出,在第一个时钟周期内,时间显示位选信号time_disp_select的值为000000,此时应执行case语句的default,Data的值为0;在第二个时钟周期内,time_disp_select的值为000001,此时对应其最后一种状态,将second0的值赋给Data,即Data的值为0110,从图中看,仿真结果正确,disp_data表示的是将当前数据译码显示之后七段数码管的显示,

9

多功能数字钟verilog HDL设计

所以在第一个周期内值为1111110,表示值为0,与Data所表示的数对应。依次类推,可将Data的值全部表示出来。显示译码数据段主要程序如下:

case(Data)

4'b0000: disp_data<=7'b1111110; 4'b0001: disp_data<=7'b0110000; 4'b0010: disp_data<=7'b1101101; 4'b0011: disp_data<=7'b1111001; 4'b0100: disp_data<=7'b0110011; 4'b0101: disp_data<=7'b1011011; 4'b0110: disp_data<=7'b1011111; 4'b0111: disp_data<=7'b1110000; 4'b1000: disp_data<=7'b1111111; 4'b1001: disp_data<=7'b1111011; default: disp_data<=7'b0; endcase

显示译码程序说明了0到9十个数在7段数码管中所对应的值,在case语句里面最重要的是一定不能忘了default,否则仿真会发生所不希望看到的 结果。下图13为闹钟设置使能有效时仿真结果。

图13 控制显示模块当闹钟设置使能信号有效时译码显示

从图中可以看出,当只有闹钟使能信号alarmclock_EN有效时,其七段数码管显示结果,与数字钟自动工作使能端的区别为闹钟设置使能端有效时只需

10

多功能数字钟verilog HDL设计

对hour0、hour1、minute0和minute1进行设置,所以闹钟设置显示位选信号alarmclock_disp_select的状态只有4个,由于其同样需要将值赋给disp_select,为了统一期间,其值也设为6位,其4个状态分别为100000、010000、001000和000100。其他与自动工作模式相同。 3.8 顶层模块

将以上设计的各个模块组合起来,就可以得到多功能数字钟的整体仿真结果。其主要作用是将各个模块衔接起来,图14为时钟正常工作模式下Quartus仿真结果。

图14 整体仿真结果 4 总结

4.1 本次作业遇到的问题

在做本次作业中,遇到的问题主要有以下几个方面:

(1)软件的安装与学习。在软件的安装过程中,首先通过自己从网上下载软件安装,第一次安装的时候未经破解,导致安装的软件虽然装上了,但是打不开,无法使用。软件的学习过程中,首先经过上课讲解,自己从网上下视频的学习,运行了几个书上的小程序,对软件进行了熟悉。

(2)由于Verilog HDL这门语言对自己来说属于一个从未接触过的东西,所以学习起来比较困难。本次作业选择的题目为多功能数字钟,前面是资料的搜集与设计思路的理清,再有了一定的基础之后,开始对整个大的模块进行分模块分析设计。

(3)在作业的过程中,遇到了许多的问题,首先发现自己对软件的运用上存

11

联系合同范文客服:xxxxx#qq.com(#替换为@)