




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1 设计任务及要求12 总体设计分析13 各模块设计23.1 数字钟主体部分23.1.1小时计数器23.1.2 分、秒计数器33.2 分频部分43.3 秒表模块53.4 闹钟模块53.5 时间设置模块73.6 报时模块73.7 控制显示模块83.8 顶层模块114 总结114.1 本次作业遇到的问题114.2 建议和总结12附件13多功能数字钟verilog HDL设计1 设计任务及要求本次大作业的要求为设计一个多功能数字钟,其具体要求如下: 1.有基础的实时数字钟显示功能,即时、分、秒的正常显示模式,并且在此基础上增加上,下午显示。 2.手动校准。按动方式键,将电路置于校时状态,则计时
2、电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。 3.整点报时,仿中央人民广播电台整点报时信号,从59分50秒起每隔秒发出一次低音“嘟”信号(信号鸣叫持续时间,间隙时间)连续次,到达整点(00分00秒时),发一次高音“哒”信号(信号持续时间S)。 4.闹时功能,按动方式键,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器相连,利用前面手动校时,校分方式进行预置,预置后回到正常模式。当计时计至预置的时间时,扬声器发出闹铃信号,时间为半分钟,闹铃信号可以用开关“止闹”,按下此开关后,闹铃声立刻中止,正常情况下应将此开关释放,否则无闹
3、时作用。5.秒表功能。按start键开始计秒,按stop键停止计秒并保持显示数不变,直到复位信号加入。2 总体设计分析 设计的总体部分按照要求可以分为基本的数字时钟显示、手动校准、整点报时、闹钟功能和秒表功能5大部分。其总体设计框图如下:秒 表闹 钟手 动 校 准整 点 报 时 数字钟 图1 总体设计框图 其中整点报时跟闹钟部分要求不同频率的声响,所以需要加入分频器模块将输入的1kHZ的分频产生500HZ及1HZ的方波信号,其中1HZ的信号对应1S的周期,可以用作时钟秒的显示及秒表部分。3 各模块设计 根据总体设计以及各分模块的需要,将分立模块分为7个部分运用verilog HDL编程来实现。
4、其分别为数字钟主体部分、手动设置、分频、整点报时、闹钟功能、秒表、控制显示和顶层8个模块。下面将对各个模块的设计思想做一详细的介绍。3.1 数字钟主体部分数字钟主体小时计数器分计数器秒计数器24进制计数器60进制计数器6进制计数器10进制计数器<12(早上)>12(下午) 数字钟主体部分主要由三个计数器组成,包括1个24进制计数器,作为小时计数器,2个60进制计数器分别作为分计数器和秒计数器。一个60进制计数器由一个6进制计数器和一个10进制计数器组成,由于都是比较简单的计数器,所以在用verilog设计时作为一个整体部分进行编程实现。同理小时计数器也作为整体部分来编程实现。设计的
5、流程框图如下图2所示。 图2 数字钟整体部分设计框图3.1.1小时计数器 在verilog程序设计中,小时计数器为hour_counter模块,其中hour_data0为24进制计数器的低位,即4进制计数器,hour_data1则为高位,2进制计数器。编程用always语句实现,并且用clk上升沿触发实现计数。EN为使能端,高电平有效。zox为显示早上、下午的标志位,其中小于12点之前为早上,zox为0,否则zox输出为1表示下午。其Quartus仿真波形如下图3所示,由于verilog HDL程序显示不便,均附在附件上,下面各模块相同。 图3 小时计数器仿真 从仿真图中可以看出,当使能信号信
6、号为高电平且始终上升沿到来时计数器开始计时,hour_data0计数为01230···的计数规律,即4进制计数器,同理hour_data1为2进制计数器,zox信号由图中看出当小于12小时的时候输出为0,大于12小时时输出为1,与预计效果相同。3.1.2 分、秒计数器由于分、秒计数器均为60进制计数器,所以以分计数器作为示例说明其编程思想。其中分计数器模块在程序中为minute_counter程序段,由上面分析得分计数器由一个十进制计数器与一个六进制计数器组成,程序中有minute_data0表示分计数器低位即10进制计数器,minute_data1表示分计数器的
7、高位为一个六进制计数器(秒计数器的低位、高位分别由second_data0、second_data1表示,其余均与分计数器相同)。其它信号定义与小时计数器相同,clk为时钟信号,时钟周期为1HZ,即1s,与小时计数器不同的是,EO为进位信号,即到60s后自动进位。Minute_data0、 minute_data1、second_data0、second_data1位宽均为4位reg型变量。仿真示意图如下图4所示。 图4 分计数器仿真结果 由图中可以看出,当使能端信号端EN变为1的时候,计数器开始计时,minute_data0计数规律为012345678901···
8、;当计数到9的时候,minute_data1加1,minute_data1计数规则为01234501···当高位minute_data1计数到5的时候,进位信号EO变为1。秒计数器second_counter模块与分计数器完全一样,这里不再赘述。3.2 分频部分分频器的功能主要有三个:一是产生计时用的标准秒脉冲1HZ信号;二是提供仿电台用的1kHZ高音频信号和500HZ低音频信号;三是闹钟设置时用的200HZ闪烁信号和闹钟响铃用的500HZ音频信号。所用输入信号为1kHZ的高频信号。根据分析可知,1kHZ方波信号经过2分频可以得到500HZ方波,经过5分频得到20
9、0HZ信号,最后将分频得到的200HZ信号作为分频1HZ的时钟,经过200分频得到1HZ的信号。设计框图如下图5所示。2分频5分频1kHZ信号(clk)500HZ(f500hz)200HZ(f200hz)1HZ(f1hz)200分频 图5 分频信号框图 在程序设计的过程中,在复位信号rst为高电平时分频器工作,输入信号为1kHZ的高频信号,分别经过2分频、5分频、200分频得到f500HZ的500HZ信号、f200HZ的200HZ信号和f1HZ的1HZ信号。仿真结果如下图6所示。 图6 分频信号结果仿真图从仿真图中可以看到,在rst为高电平时分频过程开始,f500HZ、f200HZ和f1HZ也
10、与预期的输出结果一样。3.3 秒表模块秒表模块实现秒表功能,在实现的过程中,通过改变自动工作模式下的时钟频率来实现秒表的功能。即按动start键闹钟开始工作,再次按动start键,闹钟便停止工作。由于秒表模块比较简单,流程图在此省略。根据分析,在verilog HDL实现过程中,clk作为时钟正常工作时候的频率,f500hz为秒表工作时候的频率,仿真结果如下图7所示。 图7 秒表仿真模块 由图中可以看出,根据start高低电平的变化,时钟在正常工作与秒表之间相互转换。3.4 闹钟模块闹钟模块实现的是闹钟的设置及闹钟所设定的时间到之后的响铃提示。闹钟模块的设置主要思想是由控制键来设置数字钟的闹钟
11、响的时间,经过与当前数字钟实时时间的比较,来决定闹钟提醒的时间。设计框图如下图8所示。hour0hour1minute0minute1hour_set0hour_set1minute_set0minute_set1设置时间与当前时间的比较不相等相等con_alarm01闹钟不响alarm=0闹钟响alarm=1 图8 闹钟模块设计框图在verilog HDL实现的过程中,由SW1、SW2两个调整键来实现,其中SW1为移位控制键,即按SW1一次,将移位一次,闪烁显示当前设置为数字,SW2为当前位的闹钟数字设置,每按SW2一次,当前数字设置位数字增加1,每一位上数字变化范围由当前位循环上限决定,不
12、会超出范围。EN为设置使能端,为1有效。Hour1、hour0、minute1和minute0分别为当前时间每个位上显示的数字,hour_set1、hour_set0、minute_set1和minute_set0为与当前时间所对应的每一位上设置的时间显示,f200hz为闹钟设置过程中显示闪烁的频率。Con_alarm为闹钟响铃的控制键,其值为1时,表示闹钟已设置,并且在闹钟响的时候,如果设置其值为0,则闹钟关闭。Alarm为闹钟响铃提示输出,即设定时间到时alarm值为1,否则为0。Alarmclock_disp_select为闹钟设置中位选信号,为4位reg型变量,其值采用独热编码,为10
13、00、0100、0010和0001分别表示设置过程中hour1、hour0、minute1和minute0四个位。其仿真结果如下图9所示。 图9 闹钟模块仿真示意图 由于设置波形输入的时候如果调整过多,将不容易看出仿真结果的正确与否,所以图中输入比较简单,以便可以更好地分析仿真结果。由图中可以看出,经过SW1的两次调整,位选信号alarmclock_disp_select的值为0010,表示此时的设置位为hour_set0位,SW2键将其值设置为0001,其他位均为0000,然后在与当前时钟时间相等的情况下,并且在con_alarm值为1的时候闹钟响,即alarm值输出为1,在当前时间与闹钟时
14、间仍然相等的情况下,将闹钟控制键con_alarm值设置为0,闹钟停止,即alarm值为0。很好的完成了闹钟的功能。3.5 时间设置模块 时间设置模块实现的功能为通过按键调节可以对当前时间进行手动控制。其主要是在时间设置使能端有效地情况下通过SW1和SW2两个按键对数字钟的小时和分钟数进行调节。Disp_drive为设置中的显示控制,即通过SW1对位的调整,Disp_drive随之变化。SW2为对每一位上的数字在其范围内进行加1调节,其调节过程与闹钟模块相同。Disp_drive取值000、001、010和011分别对应hour1、hour0、minute1和minute0的设置。Quartu
15、s下仿真结果如图10所示。 图10 时间设置模块仿真效果 图中,hour_set0、hour_set1、minute_set0和minute_set1为设置后的时间。可以看到,当前给的hour0为0010,hour1的值0001,在SW1经过一次高电平之后,disp_drive的值变为001,对hour0进行设置,加1之后hour_set0变为0001,SW1再按一下,变为0010,在SW2两次高电平之后,SW1的值变为1,此时对分的高位进行加1设置,依此类推。3.6 报时模块 整点报时模块的主要功能为仿中央人民广播电台整点报时信号,即从59分50秒起每隔秒发出一次低音“嘟”信号,将其定义为5
16、00HZ的低频信号,到达整点(00分00秒时),发一次高音“哒”信号,其响声为高频1kHZ信号。 由于整点报时程序比较简单,所以框图省略。为了程序简化又与其他模块有较好的兼容性,用minute、second分别表示minute1、minute0和second1,second0经过位拼接之后的分和秒的当前显示时间。F1khz为到达整点之后的高音频率,f500hz为59分50秒、52秒、54秒、56秒和58秒时的低音频率,radio则为到达时间时的报时输出。仿真图如下图11所示。 图11 整点报时模块仿真效果图 从图中可以看出,从59分50秒开始,输出的radio开始以f500hz的频率报时,当到
17、达00分00秒时,输出信号频率为f1khz,到达00分01秒的时候之后便变为0,符合设计要求。3.7 控制显示模块控制显示模块在整个数字钟的设计中起着非常重要的作用。它的作用是将时间等数据用数码管显示的控制和数据传输模块,包括数据的传输以及BCD码译码等。通过几个控制使能端将其不同功能时的时间在数码管上显示出来。本模块中端口定义比较多,下面是其所对应的功能。Time_EN:时间自动模式工作使能信号;Timeset_EN:时间设置使能信号;Stopwatch_EN:秒表使能信号;Alarmclock_EN:闹钟设置使能信号;Radio_EN:整点报时使能信号;Time_disp_select:时
18、间显示位选信号;Alarmclock_disp_select:闹钟设置的显示位选信号;Disp_select:显示位选信号输出;Disp_data:经过译码之后显示的数据。程序设计中,各使能端信号为1表示执行该功能,以时间自动工作模式使能信号有效为例说明,当Time_EN为1时,首先将时间显示位选信号isp_select的值赋给显示位选信号disp_select输出,定义time_disp_select的状态一共有6个,分别为100000、010000、001000、000100、000010和000001,其在各状态下分别依次表示将hour0、hour1、minute0、minute1、se
19、cond0和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;
20、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表示的是将当
21、前数据译码显示之后七段数码管的显示,所以在第一个周期内值为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<
22、=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段数码管中所对应的值
23、,在case语句里面最重要的是一定不能忘了default,否则仿真会发生所不希望看到的结果。下图13为闹钟设置使能有效时仿真结果。 图13 控制显示模块当闹钟设置使能信号有效时译码显示从图中可以看出,当只有闹钟使能信号alarmclock_EN有效时,其七段数码管显示结果,与数字钟自动工作使能端的区别为闹钟设置使能端有效时只需对hour0、hour1、minute0和minute1进行设置,所以闹钟设置显示位选信号alarmclock_disp_select的状态只有4个,由于其同样需要将值赋给disp_select,为了统一期间,其值也设为6位,其4个状态分别为100000、010000、0
24、01000和000100。其他与自动工作模式相同。3.8 顶层模块 将以上设计的各个模块组合起来,就可以得到多功能数字钟的整体仿真结果。其主要作用是将各个模块衔接起来,图14为时钟正常工作模式下Quartus仿真结果。 图14 整体仿真结果4 总结 4.1 本次作业遇到的问题在做本次作业中,遇到的问题主要有以下几个方面:(1)软件的安装与学习。在软件的安装过程中,首先通过自己从网上下载软件安装,第一次安装的时候未经破解,导致安装的软件虽然装上了,但是打不开,无法使用。软件的学习过程中,首先经过上课讲解,自己从网上下视频的学习,运行了几个书上的小程序,对软件进行了熟悉。(2)由于Verilog
25、HDL这门语言对自己来说属于一个从未接触过的东西,所以学习起来比较困难。本次作业选择的题目为多功能数字钟,前面是资料的搜集与设计思路的理清,再有了一定的基础之后,开始对整个大的模块进行分模块分析设计。(3)在作业的过程中,遇到了许多的问题,首先发现自己对软件的运用上存在的一些问题,如刚开始的时候没有生成功能网表,导致最后运行出错;还有没有选功能仿真的时候,波形出现了一些毛刺和延时。(4)以为自己上课听懂了阻塞与非阻塞赋值的区别,结果的程序的书写上还是出现的问题,比如在秒表模块中,用的电平触发,刚开始的时候时候用的阻塞赋值,发现仿真波形有延时,以为是阻塞赋值的问题,将阻塞赋值改为了非阻塞赋值,延
26、时问题还是没有解决,才发现进行的是时序仿真。这是由于自己当时还是没有深刻的理解两者之间的区别,才造成的误解,给解决问题带来了一定的困扰。(5)仿真过程中不够细心,比如在整点报时模块,波形输入的时候,将minute与second的值设置反了,造成找了一下午的问题,radio就是不报时,后来发现问题的时候,觉着特别不可思议,还把程序改了半天。(6)在控制显示模块,波形文件仿真的过程中,由于其输入输出接口比较多,为了看得更清楚期间,在数字钟正常工作模式下显示的过程中,将闹钟设置使能端去掉了,结果在仿真的过程中data跟disp_data就是没有值,后来发现原因是在将闹钟使能端去掉之后,不确定闹钟使能
27、端是否有效。造成没有显示结果,后来把闹钟使能段加上之后并将其置为0,仿真结果正确。 作业过程中,遇到的小问题不计其数,在多方努力之下,问题基本解决,这里就不一一列举。总结出的宝贵经验就是要多看书,学会自己解决问题,一般的问题在看书找资料之后基本都能解决;还有就是一定要细心,这样可以避免很多不必要的麻烦。4.2 建议和总结首先非常感谢老师在每周末还那么辛苦的给我们上课,真的使我学到了很多的东西,在此对老师致以深深的谢意!对老师的建议就是可以在刚开始上课的时候就可以给同学布置一些小的作业,然后可以让同学慢慢接触一下软件,学一点浅显的编程,这样在最后写大作业的时候就不会感觉无从下手,以便起到一个循序
28、渐进的作用。附件 1.小时计数器模块 module hour_counter(EN,clk,hour_data1,hour_data0,zox);input clk,EN; /时钟与使能端output 3:0 hour_data1,hour_data0;/小时的高位和低位output zox; /上下午指示模块reg 3:0 hour_data1,hour_data0;reg zox;always (posedge clk)begin if(EN = 1'b1) begin if(hour_data0 < 4'b0011) hour_data0 <= hour_da
29、ta0 + 4'b1; else begin zox <= 1'b0; hour_data0 <= 4'b0; if(hour_data1 < 4'b0001) hour_data1 <= hour_data1 + 4'b1; else begin hour_data1 <= 4'b0; zox <= 1'b1; end end endendendmodule2.分秒计数器模块module minute_counter(EN,clk,minute_data1,minute_data0,EO);input
30、 clk,EN;output 3:0 minute_data1,minute_data0; 分高位、低位output EO; /进位输出端reg 3:0 minute_data1,minute_data0;reg EO;always (posedge clk) /上升沿触发begin if(EN = 1'b1) /使能端为1有效 begin if(minute_data0 < 4'b1001) minute_data0 <= minute_data0 + 4'b1; else begin EO <= 1'b0; minute_data0 <
31、;= 4'b0; if(minute_data1 < 4'b0101) minute_data1 <= minute_data1 + 4'b1; else begin minute_data1 <= 4'b0; EO <= 1'b1; end end endendendmodule3. 分频模块module fdiv(clk,rst,f500hz,f200hz,f1hz);input clk,rst; /1KHz 输入output f500hz,f200hz,f1hz; /分频出500HZ、200HZ、1HZ输出reg f500h
32、z,f200hz,f1hz;integer CNT1=0,CNT2=0; /两个常数变量,分频技术用always (posedge clk) /2分频begin if(!rst) f500hz=0; else f500hz=f500hz;endalways (posedge clk) /5分频 if (!rst) begin f200hz<=0; CNT2<=0; end else begin if(CNT2=4) begin CNT2 <= 0; f200hz <=f200hz; end else CNT2 <= CNT2+1; end always (pose
33、dge f200hz) /将200HZ信号200分频为1HZ if (!rst) begin f1hz<=0; CNT1<=0; end else begin if(CNT1=199) begin CNT1 <= 0; f1hz <=f1hz; end else CNT1 <= CNT1+1; end endmodule4.秒表模块module stopwatch(clk,f500hz,start,F_out);input clk,f500hz,start; /start为控制秒表信号output F_out; /输出,秒表工作方式reg F_out; alway
34、s (start or clk or f500hz)begin case(start) 1'b0:F_out=clk; 1'b1:F_out=f500hz; default:F_out=1'b0; endcaseendendmodule5闹钟模块module alarmclock(clk_200hz,EN, SW1,SW2, hour1,hour0,hour_set1,hour_set0, minute1,minute0, minute_set1,minute_set0, alarm,control_alarm, alarmclock_disp_select);inpu
35、t EN,SW1,SW2,clk_200hz; /SW1、SW2为闹钟设置键input 3:0 hour1,hour0,minute1,minute0;/显示当前时间input control_alarm; /闹钟控制键output alarm; /闹钟响铃输出output 3:0 alarmclock_disp_select; /闹钟设置位选信号output 3:0 hour_set1,hour_set0,minute_set1,minute_set0; reg 3:0 alarmclock_disp_select;reg alarm;reg 3:0 hour_set1,hour_set0;
36、 /存放设置的小时reg 3:0 minute_set1,minute_set0; /存放设置的分reg 2:0 disp_drive; /设置闹钟时间时,数码管显示的动态位选择/闹钟一直工作(设置的闹钟时间与当前时间比较)alwaysbegin if(hour_set1 = hour1)&&(hour_set0 = hour0) &&(minute_set1=minute1)&&(minute_set0=minute0)&&(control_alarm=1)alarm <= 1'b1; /相等,闹钟响 else i
37、f(control_alarm=0)alarm <= 1'b0; /不相等,输出1 end/闹钟设置中,按SW1一次,将移位一次,显示当前设置位always (posedge SW1)begin if(EN = 1'b1)begin if(disp_drive != 3'b101) disp_drive <= disp_drive + 3'b1; else disp_drive <= 3'b000;endend/当前位的闹钟数字设置,按SW2一次,数字增加1always (posedge SW2)begin case(disp_driv
38、e)3'b000: begin /000时,设置小时的高位 if(hour_set1 < 4'b0010) hour_set1 <= hour_set1 + 4'b1; else hour_set1 <= 4'b0; end3'b001: begin /001时,小时低位 if(hour_set1 < 4'b0010)&&(hour_set0 < 4'b1001) hour_set0 <= hour_set0 + 4'b1; else if(hour_set1=4'b00
39、10)&&(hour_set0 < 4'b0100) hour_set0 <= hour_set0 + 4'b1; else hour_set0 <= 4'b0; end3'b010: begin /010时,分钟高位 if(minute_set1 < 4'b0101) minute_set1 <= minute_set1 + 4'b1; else minute_set1 <= 4'b0; end3'b011: begin /011时,分钟低位 if(minute_set0 &l
40、t; 4'b1001) minute_set0 <= minute_set0 + 4'b1; else minute_set0 <= 4'b0; endendcaseend/闪烁显示always (posedge clk_200hz) /设置时闪烁频率begin case(disp_drive) 3'b000: alarmclock_disp_select <= 6'b1000;3'b001: alarmclock_disp_select <= 6'b0100;3'b010: alarmclock_disp
41、_select <= 6'b0010;3'b011: alarmclock_disp_select <= 6'b0001;default: alarmclock_disp_select <= 6'b0000; endcase endendmodule6.时间设置模块module timeset( TimeSet_EN, SW1,SW2,disp_drive, hour1,hour0, minute1,minute0, hour_set1,hour_set0,minute_set1,minute_set0 );input TimeSet_EN;i
42、nput SW1,SW2;input 3:0 hour1,hour0;input 3:0 minute1,minute0; output 3:0 hour_set1,hour_set0;output 3:0 minute_set1,minute_set0;output 2:0 disp_drive;reg 3:0 hour_set1,hour_set0;reg 3:0 minute_set1,minute_set0;reg 2:0 disp_drive;/初始化initialbegin hour_set1 <= hour1; hour_set0 <= hour0; minute_s
43、et1 <= minute1; minute_set0 <= minute0;endalways (posedge SW1) /手动设置使能begin if(TimeSet_EN = 1'b1) begin if(disp_drive < 3'b101) disp_drive <= disp_drive + 3'b1; else disp_drive <= 3'b0;endendalways (posedge SW2)begin case(disp_drive) 3'b000: begin /小时的高位 if(hour_se
44、t1 < 4'b0010) hour_set1 <= hour_set1 + 4'b1; else hour_set1 <= 4'b0; end 3'b001: begin /小时的低位 if(hour_set0 < 4'b1001) hour_set0 <= hour_set0 + 4'b1; else hour_set0 <= 4'b0; end 3'b010: begin /分的高位 if(minute_set1 < 4'b0101) minute_set1 <= mi
45、nute_set1 + 4'b1; else minute_set1 <= 4'b0; end 3'b011: begin /分的低位 if(minute_set0 < 4'b1001) minute_set0 <= minute_set0 + 4'b1; else minute_set0 <= 4'b0; end default:begin end endcaseendendmodule7.报时模块Module Radio(alarm_radio,minute1,minute0,second1,second0,minut
46、e,second, f1khz,f500hz); input f1khz,f500hz; input3:0minute1,minute0,second1,second0; input7:0minute,second; output alarm_radio; /拼接之后时间 reg alarm_radio; /报时输出信号 always(minute1 or minute0 or second1 or second0) begin reg 7:0 minute,second; minute7:0=minute13:0,minute03:0; /分拼接 second7:0=second13:0,s
47、econd03:0; /秒拼接 end always(minute or second) if(minute=8'h59) /59分钟时 case(second) /秒为50、52、54、56、58低音报时 8'h50, 8'h52, 8'h54, 8'h56, 8'h58:alarm_radio<=f500hz; default:alarm_radio<=1'b0; endcase else if(minute=8'h00&&second=8'h00) /00分00秒高音报时 alarm_radio<=f1khz; else alarm_radio<=1'b0;endmodule8.控制显示模块module disp_data_mux(Time_EN,TimeSet_EN,Stopwatch_EN, time_disp_select,Alarmclock_EN, alarmclock_disp_select, hour1,hour0,minute1,minute0,second1,second0, disp_select,disp_data,Data);input Time_EN,TimeSet_EN,Stopwatch_EN;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遂宁遂宁市住房和城乡建设局公开招聘编外人员笔试历年参考题库附带答案详解
- 江西科技师范大学《创业管理》2023-2024学年第二学期期末试卷
- 贵州工贸职业学院《数字孪生与智能设计》2023-2024学年第二学期期末试卷
- 辽宁职业学院《地下水污染与防治》2023-2024学年第二学期期末试卷
- 冀中职业学院《疲劳与断裂基础》2023-2024学年第二学期期末试卷
- 衡水学院《功能合成材料与创新创业》2023-2024学年第二学期期末试卷
- 浙江财经大学东方学院《法语语法》2023-2024学年第二学期期末试卷
- 正德职业技术学院《深度学习应用》2023-2024学年第二学期期末试卷
- 扬州中瑞酒店职业学院《商业展示设计》2023-2024学年第二学期期末试卷
- 湖北科技学院《水景设计》2023-2024学年第二学期期末试卷
- GB/T 10125-2012人造气氛腐蚀试验盐雾试验
- 化工环境保护与及安全技术概论考试题及答案
- 浙大中控DCS系统AdvanTrol-Pro软件培训-编程综合编程案例课件
- 大学生手机市场的调查报告
- 商务标评审表
- 2021版《安全生产法》培训课件
- 大学语文说课课件
- 古建筑施工合同
- 大连理工大学画法几何自学片段课件
- 慢性心功能不全护理查房
- 双新转常规申请表
评论
0/150
提交评论