基于某verilog数字钟设计资料报告材料

合集下载

用Verilog语言编写的多功能数字钟

用Verilog语言编写的多功能数字钟

《数字电子技术课程设计》报告专业班级:姓名:学号:设计日期:一.设计题目多功能数字钟电路设计二.设计任务及要求多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:三.基于Verilog HDL语言的电路设计、仿真与综合(一)顶层模块本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:LocationPIN_R16Option Value VCC S1INPUT Location PIN_P14Option Value VCC S2INPUT Location PIN_J3Option Value VCCCPINPUT Location PIN_M4Location PIN_F3Location PIN_F4Option Value SEL[2..0]OUTPUT Location PIN_L14Option Value LEDOUTPUTLocation PIN_N4Location PIN_G4Location PIN_H4Location PIN_L5Location PIN_L4Location PIN_K4Location PIN_K5Option Value LEDAG[6..0]OUTPUTCP CPoutf enpininst1CPoutS1S2RETHour[5..0]Minute[5..0]Second[5..0]LEDkongzhiqi inst2VCCRETINPUT CPout Hour[5..0]Minute[5..0]Second[5..0]SEL[2..0]LEDAG[6..0]xianshi inst图1:顶层结构框图(二)子模块 1.分频器分频器的作用是对50Mhz 的系统时钟信号进行分频,得到频率为1000hz 的信号,作为显示器的输入信号。

(Verilog HDL)数字时钟设计

(Verilog HDL)数字时钟设计

实验报告课程名称:可编程逻辑器件与数字系统设计实验项目:数字时钟设计专业班级:姓名:学号:实验室号:实验组号:实验时间:批阅时间:指导教师:*绩:沈阳工业大学实验报告专业班级:学号:姓名:实验名称:数字时钟设计1.实验目的:熟悉Quartus II 6.0运行环境,掌握基本使用方法;学会使用Quartus II编写程序,进行下载验证。

2.实验内容:(1)60进制计数器;(2)24进制计数器;(3)调用24进制和60进制计数器制作数字时钟。

3. 实验方案(1)编写题目要求的程序;(2)按照要求将相关程序进行检测和调试,运行正确的程序;(3)程序完成后,将其与实验箱连接,并打开电源;(4)下载程序到芯片内;(5)观察程序功能是否成功实现。

4. 实验步骤或程序详细过程见附录。

5.程序运行结果运行结果如下图所示:24进制计数器60进制计数器6.出现的问题及解决方法首次运行程序时,没有任何出错状况;而在下载后,发现24进制计数器中的频率有些快,只要把频率的短路针调到1Hz即可,没有其他问题。

附录A(24进制计数器)1、功能实现与程序选择24进制计数器是实现从0到23的计数。

由此可以运用Verilog HDL 语言将此功能实现。

2、程序运行与调试module count24(Rd,EN,CLK,Qh,Ql,C);input Rd,EN,CLK;output [3:0]Qh,Ql;output C;reg [3:0]Qh,Ql;reg C;initialbeginQh=4'd0;Ql=4'd0;C=0;endalways @ (posedge CLK)beginif(EN==1)beginif(Rd==0)beginQh=4'd0;Ql=4'd0;C=0;endelse if(Qh<4'd2&&Ql<4'd9)Ql=Ql+1;else if(Qh<4'd2&&Ql==4'd9)beginQh=Qh+1;Ql=4'd0;endelse if(Qh==4'd2&&Ql<4'd3)Ql=Ql+1;else beginQh=4'd0;Ql=4'd0;C=0;endif(Qh==4'd2&&Ql==4'd3)C=1;endendendmodule3、保存一个名称,建立一个和module模块的名称一致的工程并进行调试。

基于FPGA的多功能数字钟设计报告

基于FPGA的多功能数字钟设计报告

***大学电工电子实验报告EDA技术基础设计报告多功能数字钟设计电子信息科学与技术年 月 日多功能数字钟设计一.任务解析用Verilog硬件描述语言设计数字钟,实现:1、具有时、分、秒计数显示功能,以二十四小时循环计时。

2、具有调节小时,分钟的功能。

3、具有整点报时同时LED灯花样显示的功能。

4、【发挥】三键(模式选择,加,减)调整,数码管闪烁指示功能。

5、【发挥】增加闹钟任意设定功能,时间精确到分。

二.方案论证第2页,共19页三.重难点解析1、模式选择键的设计//模式选择键。

有5个模式,m0为正常走钟;m1为调分;m2为调时;m3为闹钟调分;m4为闹钟调时。

module mode_key(key,clr,m);input key,clr;output [2:0]m;reg [2:0]m;always @(posedge key or negedge clr) beginif(!clr) m=0;else if(m==4) m=0;else m=m+1;endendmodule2、数字钟秒钟计数设计module cnt60_sec(clk,clr,q,c);input clk,clr;output [6:0]q;output c;reg [6:0]q;reg c;always @(posedge clk or negedge clr) beginif(!clr) begin q=0;c=0;endelse if(q[3:0]==9) begin q[3:0]=0;if(q[6:4]==5) begin q[6:4]=0; c=1;endelse q[6:4]=q[6:4]+1;end第3页,共19页else begin q[3:0]=q[3:0]+1;q[6:4]=q[6:4];c=0;endendendmodule、秒钟计数模块就是一个60的计数器,计数到59的时候清零,进位加1。

调时不需要控制秒钟,所以没有加模式选择按键。

verilog实验报告时钟设计

verilog实验报告时钟设计

课程名称:Verilog数字系统设计实验实验项目:时钟姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院201年月日哈尔滨理工大学计算机科学与技术学院实验报告实验项目名称:时钟设计一、实验目的1. 掌握 Verilog HDL 语言的基本运用;2. 熟悉 QuartusⅡ的简单操作;3. 掌握一个基本 EDA 工程设计流程;4. 掌握时钟的设计基本原理。

二、实验内容计数器部分中包含有三个主要计数部分,分别是十进制、六进制以及二十四进制,其中六进制和十进制共同组成六十进制,即实现分和秒的计数,之所以将其分开是便于分别显示个位和十位,通过编写计数器,来计数信号的数量,从而实现时分秒按各自的进制正常计数,同时,将前一时钟单位的进位信号作为下一时钟单位的clk,即从后向前驱动,这样便实现了时钟的正常运转。

三、实验要点及说明1.编写各个模块的 VHDL 代码并进行编译与波形仿真, 仿真无误后生成元件符号。

2.设计数字钟电路的顶层文件,在顶层文件中调入第一步中生成的元件符号,并根据连接关系将它们连接在一起。

3.引脚分配,为顶层设计文件中的各个输入输出端口分配芯片相应的引脚。

4.下载程序到芯片,观看实验现象是否为预想的那样。

同时使用清零按键看能否实现清零,时间正常走动情况下通过按键能否实现校时。

四、实验结果下载成功后,拨动开关 DP4至髙电平,使六个数码管复位淸零;拨动开关 DP4 至低电平,数字钟开始自动计,此过程中可以通过 1键设置小时数,2 键设置分钟数。

当秒数满 60 则进一位, 分钟数满60 进一位,当显示为 23:59:59 时,秒数在加一则显示 00:00:00,同时指示一天结束的 LED 灯亮 10 秒,之后从新计时。

五、程序代码module clock(clk,rst,load,data,lamp,de, led_g,st_stop,ledcom);// clk-时钟10M,rst-复位,load-初始值设置,st_stop-启动暂停input clk,rst,load,st_stop;input [7:0] data; //初始值output lamp; //倒计时结束指示灯output [2:0]de; //数码管位选output [7:0]led_g; //数码管段码output ledcom; //指示灯公共端reg clk_g; // ..... LED扫描时钟信号......reg clk_s;// 秒时钟reg[15:0] cnt1; // 10ms 分频计数器reg[23:0] cnt2; // 1s 分频器计数器reg[3:0] bcd1; // 个位bcd码reg[3:0] bcd2; // 十位bcd码reg lamp; // 指示灯reg[1:0]state1; // 2位数码管扫描位置寄存器reg[3:0]led_g_bcd; // bcd转段码寄存器parameterLED1=3'b000,//数码管1LED2=3'b001;//数码管2assign ledcom=1;//// 10Mhz 晶振用2个分频器分别产生数码管扫描时钟和秒时钟// 10ms方波时钟clk_galways @(posedge clk)beginif (cnt1 >=50000)begincnt1 <= 0;clk_g <= ~clk_g;endelsecnt1 <= cnt1 +1'b1;end// 1s方波时钟clk_salways @(posedge clk)beginif (cnt2 >=5000000)begincnt2 <= 0;clk_s <= ~clk_s;endelsecnt2 <= cnt2 +1'b1;endalways@(posedge clk_s or negedge rst or posedge load ) beginif(!rst) //复位初始状态beginlamp<=0; //灭灯bcd1<=0; //数码管输出0bcd2<=0; //endelseif (load)beginbcd1<=data[3:0];//设置初值bcd2<=data[7:4];//endelseif (st_stop) // 启动暂停切换//BCD倒计时计算,到0时亮灯beginif(bcd1==9) //个位/*******/beginif(bcd2==5) lamp<=1;elsebeginbcd1<=0;bcd2<=bcd2+1;endend/******/elsebeginbcd1<=bcd1+1;lamp<=0;endendend//数码管对应位置扫描输出always @(posedge clk_g or negedge rst)beginif(!rst)beginstate1<=LED1;led_g_bcd<= 0;endelsecase(state1)LED1:beginled_g_bcd<=bcd1;state1<=LED2;endLED2:beginled_g_bcd<=bcd2;state1<=LED1;endendcaseendassign de=state1; //位置//数码管段码表译码assign led_g=(led_g_bcd==0)? 8'h3F:(led_g_bcd==1)? 8'h06:(led_g_bcd==2)? 8'h5b:(led_g_bcd==3)? 8'h4f:(led_g_bcd==4)? 8'h66:(led_g_bcd==5)? 8'h6d:(led_g_bcd==6)? 8'h7d:(led_g_bcd==7)? 8'h07:(led_g_bcd==8)? 8'h7f:(led_g_bcd==9)? 8'h6f:8'h00; endmodule。

基于Verilog HDL语言的数字钟(DE2)设计

基于Verilog HDL语言的数字钟(DE2)设计

《EDA技术与Verilog HDL》课程实验报告实验项目名称:基于Verilog HDL语言的数字钟(DE2)设计一、实验项目名称基于Verilog HDL语言的数字钟(DE2)开发板设计。

二、实验目的和要求(1)实验目的1.掌握Verilog HDL语言的基本运用;2.熟悉QuartusⅡ的简单操作;3.掌握一个基本EDA工程设计流程;4.掌握数字钟(DE2开发板)的设计基本原理。

(2)实验要求1.具有普通时钟的计时、调时功能。

2.能够下载到DE2开发板进行运行三、实验内容和原理数字钟共使用一类主要模块来实现其功能。

其总体结构如下图所示。

(1)时分秒计数器。

时计时器是一个24进制计数器,分秒则均为60进制计数器。

当秒计时器接受一个计时脉冲时,秒计数器从一计到六十,秒显像管依次显示00、01、02、03……,每当秒计时到00,就会有一个输出脉冲至分计时器,分计时器在原有基础上加一,显示器同样依次显示,每当分计时器计到00,相应的有一个脉冲使得时计数器在原有基础上加一,显示器一次显示00、01、……当计时器计数到23时59分59秒时,时分秒计数器自动归零。

(2)数码显像管译码模块。

该模块的功能就是将四位的8421码翻译成8位输出,用于显示各个数字,分为两组,高电平点亮,不同的数字对应不同的8位码。

因此程序设计需要考虑时分秒的每个数所对应的8位码。

例如:if(sec1[3:0]==4'b0000)//sec1 0-9beginHEX0[6:0]<=7'b1000000;endif(sec1[3:0]==4'b0001)beginHEX0[6:0]<=7'b1111001;endif(sec1[3:0]==4'b0010)beginHEX0[6:0]<=7'b0100100;(3)分频器模块开发板可用时钟为50MHZ,不可以用来做时钟输入,用作时钟信号前必须分频,该分频是用计数取反来分该总体模块实现功能:key2表示状态,key1表示转换改变分或时,key0表示在相应的状态下调整分或时。

基于Verilog的数字钟设计

基于Verilog的数字钟设计

EDA设计基础实验课程论文摘要数字时钟广泛用于各种场合,比如各种比赛的定时计数等,等都需要用到数字时钟。

但是大多数的这些场合都需要很精确的定时计数,而不是一般的定时计数器,因此本设计就是为了这个原因而设计的设计的高精度的数字时钟。

本设计中利用50MHz的晶振为FPGA提供时钟。

对其再设计时进行了分频得到。

在本设计是在Quartus II环境下完成的,目标板是cycloneII EP2C8Q208的FPGA核心板,显示部分采用七段数码管现实,所用到的是Verilog HDL 语言进行行为级的描述。

关键词:数字跑表Quartus II ,Verilog HDL,cyclongIIEP2C8Q208IEDA设计基础实验课程论文AbstractThe design for a multi-functional digital clock, with a year, month, day, hours, minutes and seconds count display to a 24-hour cycle count; have proof functions and the whole point timekeeping function.The use of EDA design technology, hardware-description language VHDL description logic means for the system design documents, in MaxplusII tools environment, a top-down design, by the various modules together build a FPGA-based digital clock. The main system chips used EP2C8Q8208, make up of the clock module, control module, time module, data decoding module, display and broadcast module. After compiling the design and simulation procedures, the programmable logic device to download verification, the system can complete the year, month, day and the hours, minutes and seconds respectively, using keys to modify, cleared , start and stop the digital clock.Keywords: digital clock; hardware description language; Verilog HDLIIEDA设计基础实验课程论文目录摘要 (I)Abstract (II)第一章绪论 (1)1.1 概述 (1)1.2 FPGA发展现状 (1)1.3 本文研究的意义 (2)1.4 课题研究的内容 (2)第二章字时钟的基本理论 (3)2.1 主程序结构和流程 (3)2.2 设计原理 (4)2.2.1 原理图介绍 (4)2.2.2 Atium Designer6.9介绍 (4)2.2.3 Verilog HDL介绍 (5)2.2.4 分析计算 (6)第三章数字时钟的软件设计 (6)3.1 开发软件介绍 (6)3.2代码生成BDF图 (6)第四章单元电路设计 (8)4.1 分频代码设计 (8)4.2 毫秒代码设计 (8)4.3 秒代码设计 (9)4.4 分代码设计 (9)4.5 复位代码设计 (10)4.6键盘代码设计 (10)4.7 数码管显示代码设计 (10)4.7.1 数码管位码设计 (10)4.7.2数码管段码设计 (11)结论 (12)参考文献 (13)附录1 (14)附录2 (19)IIIEDA设计基础实验课程论文致谢 (21)IVEDA设计基础实验课程论文第一章绪论1.1 概述FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

基于VerilogHDL语言多功能数字钟设计毕业设计论文

基于VerilogHDL语言多功能数字钟设计毕业设计论文

多功能数字钟NJUST多功能数字钟设计基于VerilogHDL语言学院:电子工程与光电技术学院学号:************姓名:指导教师:2014年11月21日星期五摘要:基于FPGA平台,运用Verilog语言编写设计一多功能数字钟,包括基本的时钟,校时校分,整点报时功能。

扩展闹钟,秒表,万年历,键盘输入功能。

Abstract:FPGA-based platform, using Verilog language to design amulti-functional digital clock, including basic function of clock, school hours, school minutes,the whole point timekeeping. And extended function of alarm clock, stopwatch, calendar, keyboard input.关键词:多功能数字钟,可编程逻辑器件,EDA设计,VerilogKeywords:multi-functional digital clock, FPGA, EDA disign, Verilog目录1 设计要求 (2)2 设计方案选择及思路分析 (2)3 各子模块设计原理和分析 (3)3.1 分频模块 (3)3.2 时分秒模块 (5)3.3 时分调整模块 (6)3.4 报时模块 (7)3.5 扫描显示模块 (8)3.6 秒表模块 (9)3.7 闹钟模块 (10)3.8 万年历模块 (12)3.9 键盘扫描模块 (13)4 调试仿真 (15)5 编程下载 (16)6 结论 (17)7 参考文献 (17)8 实验感想 (17)9 源代码 (18)11 设计要求基于FPGA可编程逻辑器件,用quatusII软件设计一个多功能数字钟,其基本要求如下:1.有基础的计时显示功能,即时、分、秒显示在6个七段管上2.K0,K1,K2,K3分别为系统使能(暂停),时钟清零,校时,校分开关。

eda,verilog数字钟设计报告

eda,verilog数字钟设计报告

数字钟一、任务解析用Verilog硬件描述语言设计数字钟,实现:1、具有时、分、秒计数显示功能,以二十四小时循环计时。

2、具有调节小时,分钟的功能,调整时对应的数字闪烁。

3、具有整点报时及闹铃时间可调的功能。

4、数字钟具有四种模式:正常显示、时间调整、闹铃时间调整、秒表。

二、方案论证没有闹铃功能三、重难点解析选择模式:module beii(clr,selin_key,beii_out);input clr,selin_key;output [1:0]beii_out;wire [1:0]beii_out;reg [1:0]selout_key;always@(negedge clr or posedge selin_key) beginif(!clr) selout_key=0;else begin if(selout_key==2) selout_key=0;else selout_key=selout_key+1;endendassign beii_out=selout_key;endmodule头文件中:module clk_top(clr,clk,upkey,downkey,sel,a,b,c,d,e,f,g,p,clr_key,selin_key);clr:清零clk:50M时钟upkey:向上调downkey:向下调clr_key:恢复初始状态selin_key:模式选择四、硬件资源分配60进制module mycnt60(clr,clk,upkey,downkey,selout,q,c);input clk,clr,upkey,downkey;//upkey为加按键input [1:0] selout;output[7:0] q;//60进制输出output c;//进位溢出位reg c;reg[7:0] q;wire new_clk1,ckb,ckc,ckd,cko;assign new_clk1=clk|((!selout[0]&selout[1])&(upkey|downkey));LCELL AA(new_clk1,ckb);//信号延迟LCELL BB(ckb,ckc);LCELL CC(ckc,ckd);LCELL DD(ckd,cko);initial c=0;always @(posedge cko or negedge clr )beginif(!clr) q=8'h00;else begin if(selout==2) begin if(upkey)beginif(q==8'h59) q=8'h00;else if(q==8'h?9) q=q+4'h7;else q=q+1;endelse if(downkey)beginif(q==8'h00) q=8'h59;else if(q==8'h?0) q=q-4'h7;else q=q-1;endendelse beginif(q==8'h59) begin q=8'h00;c=1;endelse if(q==8'h?9) begin q=q+4'h7;c=0;endelse begin q=q+1;c=0;endendendendendmodule五、实验总结通过对数字钟的设计到成功是耗时最长的,但也是学到知识点最多,收获最多的。

用Verilog语言编写的多功能数字钟

用Verilog语言编写的多功能数字钟

《数字电子技术课程设计》报告专业班级:姓名:学号:设计日期:一.设计题目多功能数字钟电路设计二.设计任务及要求多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:三.基于Verilog HDL语言的电路设计、仿真与综合(一)顶层模块本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:LocationPIN_R16Option Value VCC S1INPUT Location PIN_P14Option Value VCC S2INPUT Location PIN_J3Option Value VCCCPINPUT Location PIN_M4Location PIN_F3Location PIN_F4Option Value SEL[2..0]OUTPUT Location PIN_L14Option Value LEDOUTPUTLocation PIN_N4Location PIN_G4Location PIN_H4Location PIN_L5Location PIN_L4Location PIN_K4Location PIN_K5Option Value LEDAG[6..0]OUTPUTCP CPoutf enpininst1CPoutS1S2RETHour[5..0]Minute[5..0]Second[5..0]LEDkongzhiqi inst2VCCRETINPUT CPout Hour[5..0]Minute[5..0]Second[5..0]SEL[2..0]LEDAG[6..0]xianshi inst图1:顶层结构框图(二)子模块 1.分频器分频器的作用是对50Mhz 的系统时钟信号进行分频,得到频率为1000hz 的信号,作为显示器的输入信号。

EDA Verilog HDL简易数字钟设计报告

EDA Verilog HDL简易数字钟设计报告

4'd1;
+ 1'b1;
if(hour[7:4] == 4'h6) begin
hour[7:4] = 4'h0; hour[11:8] = hour[11:8]
if(hour[11:8] == 4'ha) begin
hour[11:8] = 4'h0; hour[15:12] = hour[15:12] + 1'b1; if(hour[15:12] == 4'h6) begin
开始
时钟/校准


是否校时?
位选
时钟信号
秒+1
秒计数+1
秒>59?

分计数+1 秒置零
分+1
分>59?

时计数+1 分置零
时+1
时>23?

时置零
图4-2-3 校时模块
4
(3)动态显示模块:由于实验箱的 8 个数码管共用七段输入线,位选也是由 4 位二进制接 线控制,所以动态显示在代码部分会稍有难度。图 4-2-4 是动态显示模块的接线实物图
4 位位选控制
4-2-4 动态显示模块
3、总体设计流程
简易数字钟电路的核心部分就是 EPF10K10LC84-4 芯片,外围接入了分频部分电路、按 键电路和七段动态显示短路。程序部分,先通过模式控制变量判断是正常模式还是校时模式, 如果是校时模式,则手动对时间数据进行置数,同时显示到数码管;如果是正常模式则直将 分频模块的时钟信号接入计数器开始计时,校时与正常时间运行的时间数据都遵循时、分、 秒的进制原则。实验箱的按键模块公共端每 1 秒发出一个低电平信号,其他时候都是高电平, 也就是说按下按键后,只有扫描到了低电平信号,按键才会起作用,否则按键动作将因为无 法扫描到低电平而失灵。所以按键每次按下大约 1 秒的时间才会生效。任何情况下,时间数 据都通过动态显示模块同步显示到数码管。动态显示模块的 8 位(实际上只用了 6 位)数码 管以每 10ms 切换点亮一位数码管,依次循环,达到动态显示的效果。图 4-3-1 是总设计流 程图。

基于verilog的电子时钟报告

基于verilog的电子时钟报告

一 总体设计方案1.设计原理及思路1.1原理分析图1-1数字钟程序总体框图数字钟实际上就是对1Hz的频率进行计数的计数电路。

振荡器产生32768Hz的时钟信号,经过分频器后产生512Hz、64Hz、2Hz的脉冲信号,秒计数器计满60后,触发分计数器,分计数器计满60后,触发计时电路,当计满24小时后开始下一轮计数。

如果计数的起始时间与设想的有误差,可以通过调时、调分按键或复位键进行手动调时。

计数器的输出经过6选1多路选择器后以动态扫描方式送到LED数码管输出。

由框图可知程序模块可分为消抖模块、2分频、或门、6进制计数器、10进制计数器、24进制计数器6选1多路选择器、七段译码器、位选端控制器组成。

实现思路及具体实现过程将在第二部分详细介绍。

1.2数字钟的电路结构数字钟由电源电路、CPLD电路、JATG下载接口、振荡器、分频器、显示器等部分组成。

1.2.1电源电路图1-2电源电路电源电路通过USB接口输入5V电压,经三端稳压器输出3.3V工作电压用于电路中各元件的用电需求。

1.2.2 JATG下载接口图1-3JATG下载接口通过USB-blaster将JATG接口与电脑相连,即可将编写好程序代码下载到开发板上进行功能验证。

1.2.3 CPLD电路该CPLD电路通过MAX3000A EPM3064ALC44-10N实现各模块的功能验证和综合。

在该芯片中有64个宏单元,44个可用引脚,载入程序后断电不消失,再次通电后仍执行上次载入的程序。

编写的VerilogHDL模块利用其中提供的触发器,逻辑门电路实现所编写程序的逻辑功能。

从原理图可看出芯片通过制定接口与电源电路、振荡电路、JATG下载接口及译码管相连综合实现其功能。

三个按键电路图分别表示RESET(复位键)、AD_Hour(调时按键)、AD_Min(调分按键)。

三个按键通过指定接口接入芯片通过程序中的消抖模块为计数器提供调时、调分、复位脉冲。

图1-4 CPLD电路1.2.4振荡和分频电路图1-5 振荡和分频电路振荡和分频电路由晶振产生32768Hz的脉冲通过MC74WC4060芯片分频,产生F512Hz、F64Hz、F2Hz的脉冲信号,用于电路的计时脉冲和位选信号的产生。

用verilog-HDL多功能数字钟

用verilog-HDL多功能数字钟

用verilog-HDL多功能数字钟Verilog HDL实验报告基于Verilog HDL语言的多功能数字钟设计一、试验目的设计一个有如下功能的数字钟:(1)计时功能:包括时、分、秒。

(2)定时与闹钟功能:能在所设定的时间发出铃音。

(3)校时功能:对小时、分钟和秒钟进行手动校时。

(4)整点报时功能:每到整点能够发出“嘀嘀嘀嘀嘟”四短一长的报时。

二、试验原理ALERT HOUR[7..0]MIN[7..0]SEC[7..0]LD_ALERT LD_HOUR LD_MINCLK CLK_1K MODE TURN CHANGEclockCLK CLK_1K MODE TURN CHANGEALERTHOUR[7..0]MIN[7..0]SEC[7..0]LD_ALERT LD_HOUR LD_MIN多功能数字钟端口示意图数字钟设有五个输入端,分别为时钟输入(CLK )、模式(MODE )、产生声音的时钟信号(CLK_1K )、切换(TURN )和调时(CHANGE )键。

输出共七个,其中HOUR[7..0]、MIN[7..0]和SEC[7..0]采用BCD 计数方式,分别驱动2个数码管。

硬件电路原理图如下:三、试验内容1. 代码/*信号定义:clk: 标准时钟信号,其频率为4Hz;clk_1k:产生闹铃声、报时音的时钟信号,其频率为1024Hz;mode:功能控制信号;为0:计时功能;为1:闹钟功能;为2:手动校时功能;turn:接按键,在手动校时功能时,选择是调整小时还是分钟;若长时间按住改建,还可使秒信号清零,用于精确调时;change: 接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快速加1,用于快速调时和定时;hour,min,sec:此三信号分别输出并显示时、分、秒信号,皆采用BCD码计数,分别驱动6个数码管显示时间;alert:输出到扬声器的信号,用于产生闹铃音和报时音;闹铃音为持续20秒的急促的“嘀嘀嘀”音,若按住“change”键,则可屏蔽该音;整点报时音为“嘀嘀嘀嘀嘟”四短一长音;LD_alert:接发光二极管,指示是否设置了闹钟功能;LD_hour:接发光二极管,指示当前调整的是小时信号;LD_min:接发光二极管,指示当前调整的是分钟信号*/moduleclock(clk,clk_1k,mode,change,turn,alert,hour,min,sec,LD_alert,LD_hour,LD_mi n);input clk,clk_1k,mode,change,turn;output alert,LD_alert,LD_hour,LD_min;output[7:0] hour,min,sec;reg[7:0] hour,min,sec,hour1,min1,sec1,ahour,amin;reg[1:0] m,fm,num1,num2,num3,num4;reg[1:0] loop1,loop2,loop3,loop4,sound;reg LD_hour,LD_min;reg clk_1Hz,clk_2Hz,minclk,hclk;reg alert1,alert2,ear;reg count1,count2,counta,countb;wire ct1,ct2,cta,ctb,m_clk,h_clk;always @(posedge clk)beginclk_2Hz<=~clk_2Hz;if(sound==3) begin sound<=0; ear<=1; end //ear信号用于产生或屏蔽声音else begin sound<=sound+1; ear<=0; endendalways @(posedge clk_2Hz) //由4Hz的输入时钟产生1Hz的时基信号clk_1Hz<=~clk_1Hz;always @(posedge mode) //mode信号控制系统在三种功能间转换begin if(m==2) m<=0; else m<=m+1; endalways @(posedge turn)fm<=~fm;always //产生count1,count2,counta,countb四个信号begincase(m)2:begin if(fm)begin count1<=change; {LD_min,LD_hour}<=2; endelsebegin counta<=change; {LD_min,LD_hour}<=1; end{count2,countb}<=0;end1:begin if(fm)begin count2<=change; {LD_min,LD_hour}<=2; endelsebegin countb<=change; {LD_min,LD_hour}<=1; end{count1,counta}<=2'b00;enddefault:{count1,count2,counta,countb,LD_min,LD_hour}<=0;endcaseendalways @(negedge clk) //如果长时间按下“change”键,则生成“num1”信号用于连续快速加1if(count2) beginif(loop2==3) num2<=1;elsebegin loop2<=loop2+1; num2<=0;endendelse begin loop2<=0; num2<=0; endalways @(negedge clk) //产生num2信号if(count1) beginif(loop3==3) num3<=1;elsebegin loop3<=loop3+1; num3<=0; endendelse begin loop3<=0; num3<=0; endalways @(negedge clk)if(counta) beginif(loop4==3) num4<=1;elsebegin loop4<=loop4+1; num4<=0; endendelse begin loop4<=0; num4<=0; endassign ct1=(num3&clk)|(!num3&m_clk); //ct1用于计时、校时中的分钟计数assign ct2=(num1&clk)|(!num1&count2); //ct2用于在定时状态下调整分钟信号assign cta=(num4&clk)|(!num4&h_clk); //cta用于计时、校时中的小时计数assign ctb=(num2&clk)|(!num2&countb); //ctb用于在定时状态下调整小时信号always @(posedge clk_1Hz) //秒计时和秒调整进程if(!(sec1^8'h59)|turn&(!m))beginsec1<=0;if(!(turn&(!m))) minclk<=1;end//按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时else beginif(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000; sec1[7:4]<=sec1[7:4]+1; endelse sec1[3:0]<=sec1[3:0]+1; minclk<=0;endassign m_clk=minclk||count1;always @(posedge ct1) //分计时和分调整进程beginif(min1==8'h59) begin min1<=0; hclk<=1; endelse beginif(min1[3:0]==9)begin min1[3:0]<=0; min1[7:4]<=min1[7:4]+1; endelse min1[3:0]<=min1[3:0]+1; hclk<=0;endendassign h_clk=hclk||counta;always @(posedge cta) //小时计时和小时调整进程if(hour1==8'h23) hour1<=0;else if(hour1[3:0]==9)begin hour1[7:0]<=hour1[7:4]+1; hour1[3:0]<=0; endelse hour1[3:0]<=hour1[3:0]+1;always @(posedge ct2) //闹钟定时功能中的分钟调节进程if(amin==8'h59) amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0; amin[7:4]<=amin[7:4]+1; endelse amin[3:0]<=amin[3:0]+1;always @(posedge ctb) //闹钟定时功能中的小时调节进程if(ahour==8'h23) ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0; ahour[7:4]<=ahour[7:4]+1; endelse ahour[3:0]<=ahour[3:0]+1;always //闹铃功能if((min1==amin)&&(hour1==ahour)&&(amin|ahour)&&(!change))//若按住“change”键不放,可屏蔽闹铃音if(sec1<8'h20) alert1<=1; //控制闹铃的时间长短else alert1<=0;else alert1<=0;always //时、分、秒的现实控制case(m)3'b00: begin hour<=hour1; min<=min1; sec<=sec1; end//计时状态下的时、分、秒显示3'b01: begin hour<=ahour; min<=amin; sec<=8'hzz; end//定时状态下的时、分、秒显示3'b10: begin hour<=hour1; min<=min1; sec<=8'hzz; end//校时状态下的时、分、秒显示endcaseassign LD_alert=(ahour|amin)?1:0; //指示是否进行了闹铃定时assign alert=((alert1)?clk_1k&clk:0)|alert2; //产生闹铃音或整点报时音always //产生整点报时信号alert2beginif((min1==8'h59)&&(sec1>8'h54)||(!(min1|sec1)))if(sec1>8'h54) alert2<=ear&clk_1k; //产生短音else alert2<=!ear&clk_1k; //产生长音else alert2<=0;endendmodule2. 仿真图四、小结及体会为了做多功能数字钟,我借了多本关于Verilog HDL的程序设计书。

数字钟设计报告 verilog EDA

数字钟设计报告 verilog EDA

电子与电气工程系实习报告书实习名称:数字钟设计年纪专业及班级: 08通信工程1班姓名:学号:指导老师:评定成绩:教师评语:指导老师签名:20 年月日基于FPGA 的数字时钟设计一、课程设计目的1、进一步熟悉Quartus Ⅱ的软件使用方法;2、 熟悉可编程逻辑器件的开发流程及硬件测试方法;3、熟悉基于FPGA 的综合数字系统设计方法;二、课程设计任务设计一台可以显示时、分、秒的数字钟。

如图1所示为基于FPGA 的数字钟设计的系统框图。

FPGA数码管控制数码管控制数码管控制重启校时图1 数字钟系统三、设计要求1、能直接显示小时、分、秒,其中小时为以二十四为计数周期;2、当电路发生走时错误时,要求电路有校时功能,可以对时、分单独校正;3、具有闹钟功能,即输入想要定时的时间,当时钟到达该时间时报警,系统可由灯亮代表报警信号。

四、实验设备1、EDA6000实验箱一台2、PC 机一台五、整体系统设计方案1、总体思路和结构方框图由上面的方框图可以知道整个数字钟的设计分为6个功能模块,分别是时钟计时模块、闹钟设置模块、日期计数模块、校时模块(分别能对时钟时间、闹钟时间和日期进行校对)、闹钟报时模块以及数码管显示模块。

各个模块各自完成各自的功能互不干扰却相互合作,共同晚上数字钟的时间显示、日期显示、闹铃设置报时和时间、日期的校正功能。

数字钟的使用图如下:时钟部分闹钟部分 日期部分 校时部分 报时部分 显示切换部分 FPGAK2 K1CLK JF/D JH/M NF NH SOUND数码管显示如上图所示各个管脚的功能CLK:为数字钟整个系统的时钟信号,频率为1HZ;K1\K2:为时钟系统的使能端,用来切换显示功能和校时功能;JF/D:时间校时用来校正分的部分以及校正日期的天数;JH/M:时间校时用来校正时的部分以及校正日期的月数;NF:设置闹钟分的部分;NH:设置闹钟时的部分;SOUND:报时声音输出信号。

2、各模块设计思路(1)时钟模块由于数字钟设计要求用24进制,所以整个时钟用两个60进制计数器和一个24进制计数器分别级联在一起共同完成数字钟时间跳动功能。

基于veriloghdl设计的数字时钟

基于veriloghdl设计的数字时钟

大学考试答题纸(以论文、报告等形式考核专用)二○ 18 ~二○ 19 学年度第 一 学期 课程编号 1602080001课程名称 学 号姓名 思豪 专业年级 电子科学与技术16级1班题目:基于Verilog HDL 设计的数字时钟摘 要:本文利用Verilog HDL 语言自顶向下的设计法设计多功能数字钟,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Altera Quartus Ⅱ 6.0和cyclnoe II EP2C35F672C6完成综合、仿真。

此程序通过下载到FPGA 芯片后,可应用于实际的数字钟显示中关键词:Verilog HDL ;硬件描述语言;FPGA目录一、实验任务 (3)实验目的 (3)实验要求 (3)二、设计思路 (3)三、实验结果 (10)四、总结与收获 (14)一、实验任务实验目的1.深入了解基于quartus ii工具的复杂时序逻辑电路的设计。

2.理解并熟练利用EDA工具进行综合设计。

3.熟练掌握芯片烧录的流程及步骤。

4.掌握Verilog HDL 语言的语法规及时序电路描述法。

实验要求设计一个带秒表功能的24 小时数字钟,它包括以下几个组成部分:①显示屏,由6 个七段数码管组成,用于显示当前时间(时:分,秒)或设置的秒表时间;②复位键复位所有显示和计数③设置键,用于确定新的时间设置,三个消抖按键分别用于时分秒的设置④秒表键,用于切换成秒表功能基本要求(1) 计时功能:这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示当前时间。

(2) 秒表功能:设置时间,进行倒计时功能(3) 设置新的计时器时间:按下设置键后,用户能通过时分秒三个消抖按键对时间进行设置。

二、设计思路1、总原理框图:原理如上图所示,时钟由分频器模块,数码管显示模块,计时器模块三个模块构成,每个模块实现如下的不同功能,最后通过在顶层模块的调用,来实现时钟功能。

2.顶层模块:顶层模块调用三个字模块,并且定义输入输出口,代码输入所示:modulemyclock2(daojishi,stop,clk,reset,shi,fen,miao,miaoout1,miaoout2,fenout1,fenout2,shiout1,s hiout2);input clk,reset,stop,shi,fen,miao,daojishi;output[6:0] miaoout1,miaoout2,fenout1,fenout2,shiout1,shiout2;wire[3:0] miao1,miao2,fen1,fen2,shi1,shi2;wire clk_1hz;divider_1HZ divider1hz(clk_1hz,reset,clk);count count1(daojishi,shi,fen,miao,stop,miao1,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输入输出端口类型功能表:三个子模块的原理和代码:(1)分频模块:分频模块的作用主要是要获得各种频率的时钟信号。

基于verilog数字钟设计报告

基于verilog数字钟设计报告

一、课程设计目标1. 熟悉并掌握verilog 硬件描述语言2. 熟悉quartus 软件开发环境3.学会设计大中规模的数字电路,并领会其中的设计思想二、课程设计实现的功能(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);(2)可以调节小时,分钟。

(3)能够进行24小时和12小时的显示切换。

(4)可以设置任意时刻闹钟,并且有开关闹钟功能。

(5)有整点报时功能,几点钟LED灯闪亮几下。

(6)有复位按键,复位后时间从零开始计时,但闹钟设置时间不变。

三、设计原理:1、总原理框图:2、各个子模块设计:(1)、分频模块:分频模块的作用主要是要获得各种频率的时钟信号。

输入信号为50MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对50MHZ信号分频。

通过计数的方式,当计数从0开始到24 999999时,1HZ信号取反一次,计数又从0开始,如此循环,就可以得到1HZ脉冲信号。

对于其他信号也是如此,只是计数值不一样,得到的分频信号不同。

部分代码如下:always@(posedge _50MHZ or negedge nCR)beginif(~nCR)beginQ1<=32'd0;endelse if(Q1>=32'd2*******)beginQ1<=32'd0;_1HZ=~_1HZ;endelse beginQ1<=Q1+1'd1;end(2)、计数模块:秒计数:在1HZ脉冲下进行秒计时,当计时达到59秒后,在下一个脉冲来临变0,并发出一个脉冲信号,可供下面分钟计数作为输入脉冲信号计时。

分钟计数:在输入脉冲下,分钟开始计时,当计时达到59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲新号。

小时计数:脉冲信号来临时,计数加1,达到23后在下一个脉冲的作用下清零,从新计时。

如果有复位信号,则时分秒全部清零。

部分代码如下:module second(cp,reset,mode_flag,BT2,SH,SL,co);input cp,reset,BT2;input[3:0]mode_flag;output co=1'b0; //输出脉冲信号reg co;output [3:0]SL,SH; //输出秒计时的十位、各位reg[3:0]SH,SL;reg[7:0]cnt;always@(posedge cp or negedge reset )beginif(!reset) begin //有复位,清零cnt<=8'd0;SH<=4'd0;SL<=4'd0;endelse if((mode_flag==4'b0010)&&(!BT2)) begin// 如果分钟调节,秒清零cnt<=8'd0;SH<=4'd0;SL<=4'd0;endif(cnt==8'd59) //计时达到59,下一个脉冲下从新计时begincnt<=8'd0;SH<=4'd0;SL<=4'd0;co<=1'b1;endelsebeginco=1'b0;cnt=cnt+8'd1;SL<=cnt%10; //秒十位SH<=cnt/10; //秒各位endendendendmodule分计时和小时计时代码和上述类似,不再举出。

基于Verilog HDL设计的数字时钟

基于Verilog HDL设计的数字时钟

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

此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中关键词:Verilog HDL;硬件描述语言;FPGA1目录一、实验任务 (3)实验目的 (3)实验要求 (3)二、设计思路 (3)三、实验结果 (10)四、总结与收获 (14)2一、实验任务实验目的1.深入了解基于quartus ii工具的复杂时序逻辑电路的设计。

理解并熟练利用EDA工具进行综合设计。

2.熟练掌握芯片烧录的流程及步骤。

3.掌握Verilog HDL 语言的语法规范及时序电路描述方法。

4.实验要求设计一个带秒表功能的24 小时数字钟,它包括以下几个组成部分:①显示屏,由6 个七段数码管组成,用于显示当前时间(时:分,秒)或设置的秒表时间;②复位键复位所有显示和计数③设置键,用于确定新的时间设置,三个消抖按键分别用于时分秒的设置④秒表键,用于切换成秒表功能基本要求(1) 计时功能:这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示当前时间。

(2) 秒表功能:设置时间,进行倒计时功能(3) 设置新的计时器时间:按下设置键后,用户能通过时分秒三个消抖按键对时间进行设置。

二、设计思路、总原理框图:13原理如上图所示,时钟由分频器模块,数码管显示模块,计时器模块三个模块构成,每个模块实现如下的不同功能,最后通过在顶层模块的调用,来实现时钟功能。

verilog HDL课设(数字钟).pdf

verilog HDL课设(数字钟).pdf
The design of the logic structure consists mainly of prescaler, counter and decoding display three modules. 50Mhz system frequency module will produce benchmark clock clock signal, two 1HZ way is the digital clock frequency, dynamic display of digital tube is scanning. Timer modules for 1HZ clock signal timing, when into three parts, minutes and seconds, Decode display module USES dynamic scanning of the digital display. Through the main module calling three modules function complete the whole design.
心得体会......................................................................................................................................... 25 参考文献......................................................................................................................................... 26 附 录 ............................................................................................................................................27

基于verilog的数码时钟设计

基于verilog的数码时钟设计

M odUIe tim e r(clk5,Clk3,rst,seg—seI,seg—da):inPut
使 用 方便 ,功耗 低 ,走 时准 确 的 特点 ,所 以应 用 的范 围 及其 广 clk5;input clk3;input rst;output【2:0】seg—sel;output【7:01
工 艺 实现 的 具体 细 节 ,只 要根 据 系统 需求 加 以 各种 约 束 条件 , 和 1O进 制计 数 器 组成 ;24进 制 的小 时计 数 可 用6进制 计 数 器和 就 可设 计 出满 足 需要 的 电路 …。Verilog语 言是 为 了制 作 各层 级 10进制 计 数器 合成 ,方 法是 当计 数 到24时 ,将 “2”和 “4”进
(1)基 本 时钟信 号 的产 生 电路 ,首 先 由晶体 振 荡器 产 生 的
开发 板右 下 方频率 源 CLK1接任 意频 率作 为扫 描频 率。
控 制 逻 辑 电
(3)将 开发 板左 端 的JP1 03全 部用短 路 帽接 上(共八个 )。
图 1—2 数 字钟框 图
2.2部 分核 心代 码
数 码 电子钟 在 现 实 生活.1开 发板 硬件 电路 连接 (1)将 EP1C3适 配 板 左下 角 的JTAG用 十 芯排 线 和 万用 下载 区 左 下 角 的S0PC JTAG口连 接 起 来 ,下 载 区 的 电源 开 关 拨 到
调 时 、调 分 控 制 电 路 位 选 信 号 发 生 电
SOPC下载 的一 边。 (2)请 将JPLED1短 路帽 右插 ,JPLED的短 路帽 全 部上 插 ,
言为软件的EDA技术应用越来越广泛 ,本文旨在 以一个具体 的 计 数 的时 候 ,每 当秒计 到 59时 ,接 着 一个 脉 冲 ,将秒 计 数 器 归

(完整word版)Verilog数字钟设计实验报告

(完整word版)Verilog数字钟设计实验报告

基于FPGA实现多功能数字钟——电子系071180094王丛屹摘要本文利用Verilog HDL语言自顶向下的设计方法设计多功能数字钟,并通过ISE完成综合、仿真.此程序通过下载到FPGA 芯片后,可应用于实际的数字钟显示中,实现了基本的计时显示和设置,调整时间,闹钟设置的功能.[关键词]FPGA;Verilog HDL;数字钟一、多功能数字钟的设计设计一个多功能数字时钟,具有时分、秒计数显示、闹钟功能。

能够利用按键实现对闹钟时间的设定并在当前显示时间到时后能够进行闹钟提示.能够利用按键实现“较时”、“较分"功能,随时对数码管的显示进行校正和校对.数字中系统主要由系统时钟,三个功能按键(mode,turn ,change ),FPGA ,数码管和蜂鸣器部分组成。

图: 多功能数字钟总体设计模块 以下就各个模块说明其功能1. 分频模块由于FPGA内部提供的时钟信号频率大约为50MHz,在这需要将它转化成1Hz的标准时钟信号供数字钟的计时显示;在此我采用了级联分频法.RTL图如下:代码如下:always @(posedge clk_1)if ( cnt2 〈156/2—1)/////////////////////////////////////100分频,生成10000Hz信号begincnt2 〈= cnt2 + 1;endelsebegincnt2 〈= 0;clk_2 <= ~clk_2;endalways @(posedge clk_2)if ( cnt5 〈10/2-1) /////////////////////////////////////////10分频,生成1kHz标准信号begincnt5〈= cnt5 + 1;endelsebegincnt5〈= 0;clk_1k〈= ~clk_1k;endalways @(posedge clk_2)if ( cnt3 < 100/2—1)//////////////////////////////////////////100分频,生成100Hz信号begin最终输出的是1Hz,100Hz,1kHz的标准时钟信号clk_1Hz ,clk_100Hz,clk_1k。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课程设计目标1. 熟悉并掌握verilog 硬件描述语言2. 熟悉quartus 软件开发环境3.学会设计大中规模的数字电路,并领会其中的设计思想二、课程设计实现的功能(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);(2)可以调节小时,分钟。

(3)能够进行24小时和12小时的显示切换。

(4)可以设置任意时刻闹钟,并且有开关闹钟功能。

(5)有整点报时功能,几点钟LED灯闪亮几下。

(6)有复位按键,复位后时间从零开始计时,但闹钟设置时间不变。

三、设计原理:1、总原理框图:2、各个子模块设计:(1)、分频模块:分频模块的作用主要是要获得各种频率的时钟信号。

输入信号为50MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对50MHZ信号分频。

通过计数的方式,当计数从0开始到24 999999时,1HZ信号取反一次,计数又从0开始,如此循环,就可以得到1HZ脉冲信号。

对于其他信号也是如此,只是计数值不一样,得到的分频信号不同。

部分代码如下:always(posedge _50MHZ or negedge nCR)beginif(~nCR)beginQ1<=32'd0;endelse if(Q1>=32'd2*******)beginQ1<=32'd0;_1HZ=~_1HZ;endelse beginQ1<=Q1+1'd1;end(2)、计数模块:秒计数:在1HZ脉冲下进行秒计时,当计时达到59秒后,在下一个脉冲来临变0,并发出一个脉冲信号,可供下面分钟计数作为输入脉冲信号计时。

分钟计数:在输入脉冲下,分钟开始计时,当计时达到59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲新号。

小时计数:脉冲信号来临时,计数加1,达到23后在下一个脉冲的作用下清零,从新计时。

如果有复位信号,则时分秒全部清零。

部分代码如下:module second(cp,reset,mode_flag,BT2,SH,SL,co);input cp,reset,BT2;input[3:0]mode_flag;output co=1'b0; //输出脉冲信号reg co;output [3:0]SL,SH; //输出秒计时的十位、各位reg[3:0]SH,SL;reg[7:0]cnt;always(posedge cp or negedge reset )beginif(!reset) begin //有复位,清零t<=8'd0;SH<=4'd0;SL<=4'd0;endelse if((mode_flag==4'b0010)&&(!BT2)) begin// 如果分钟调节,秒清零t<=8'd0;SH<=4'd0;SL<=4'd0;endif(cnt==8'd59) //计时达到59,下一个脉冲下从新计时begint<=8'd0;SH<=4'd0;SL<=4'd0;co<=1'b1;endelsebeginco=1'b0;t=cnt+8'd1;SL<=cnt%10; //秒十位SH<=cnt/10; //秒各位endendendendmodule分计时和小时计时代码和上述类似,不再举出。

second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1);minute u5(co11,reset,MH24,ML24,co2);hour u6(co22,reset,HH24,HL24);(3)、模式选择模块:同过一个模式档按键MODE,按一下产生对应一种模式mode_flag,并且可以循环。

在不同的模式下可以进行不同的操作。

其中mode_flag=4'0000为正常显示计时,mode_flag=4'0001为小时调钟模式,mode_flag=4'00010为分钟调钟模,mode_flag=4'0011为闹钟小时设置模式,mode_flag=4'0100为闹钟分钟设置模式。

模式产生:module mode (MODE,mode_flag);input MODE ;output [3:0]mode_flag;reg [3:0]mode_flag;always (negedge MODE )begin //如果检测到有按键按下mode_flag = mode_flag+ 4'b1; //模式值加1if(mode_flag == 4'b0101) //到最后一个模式后返回第一的模式mode_flag = 2'b0; ndEndmodule模式选择:module mode_choose(mode_flag,BT2,_250ms,co1,co2,set_co2,co11,co22,co111,co222);input [3:0]mode_flag; //输入模式方式,响应对应操作input BT2,_250ms,co1,co2,set_co2; //调节按钮,时钟信号,正常计时分钟脉冲信号,正常计时小时脉冲信号,闹钟设置分钟进位信号。

output co11,co22,co111,co222; // 分钟脉冲信号,小时脉冲信号,闹钟设置分钟脉冲信号,闹钟设置小时脉冲信号;supply1 Vdd;reg co11,co22,co111,co222;always(mode_flag)begincase (mode_flag)4'b0001: beginif(~BT2) co22<=_250ms; //小时调钟模式,有按键,则脉冲为250mselse begin co22<=co2; //没有按键,正常计时co11<=co1; endend4'b0010: beginif(~BT2) begin co11<=_250ms; //小时调钟模式,有按键,则脉冲为250msco22<=co2;endelse begin co11<=co1; //没有按键,正常计时co22<=co2; endend4'b0011: begin co22<=co2;co11<=co1;if(~BT2) co222<=_250ms; // 闹钟小时设置信号else co222<=set_co2;end4'b0100: begin co22<=co2;co11<=co1;if(~BT2) co111<=_250ms; //闹钟分钟设置信号else co111<=Vdd; enddefault :beginco11<=co1;co22<=co2; endendcaseendendmodule(4)、任意闹钟模块:一、设置闹钟:当对应于闹钟设置模式mode_flag=4'0011和4'b0100时,有设置信号输入时,则开始设置。

对应代码:module set_naozhong(co111,co222,set_HH,set_HL,set_MH,set_ML,co2);input co111,co222; // 闹钟分钟,小时设置信号output [3:0]set_HH,set_HL,set_MH,set_ML; //输出相应的闹钟设置时间supply1 Vdd;output co2;minute (co111,Vdd,set_MH,set_ML,co2);hour (co222,Vdd,set_HH,set_HL);endmodule二、闹钟响应:当正常计时达到闹钟设置得时间后,通过比较二者之间的时间,相等,则产生一个闹钟允许响应信号,在闹钟开关打开和闹钟允许响应信号同时满足的情况下,则产生闹钟响应信号,并送到相应的闹钟设备LED灯。

如果闹钟档处于关闭状态,则不会产生闹钟响应信号。

响应代码如下:module naozhong(Alarm_ctr,_1HZ,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal);input Alarm_ctr,_1HZ;input [3:0] set_HH,set_HL,set_MH,set_ML;input [3:0] HH24,HL24,MH24,ML24;output nao_signal;reg signal;reg nao_signal;reg [16:0] Q; //计数,调节闹钟响应时间长度always(posedge _1HZ)beginif((~signal)&&(Alarm_ctr))beginif((set_HH==HH24)&&(set_HL==HL24)&&(set_MH==MH24)&&(set_ML==ML24))signal <=1'b1 //达到闹钟设置时间,产生闹钟允许响应信号else signal<=1'b0;end //未达到,不产生else if((signal)&&(Alarm_ctr))begin //闹钟开关打开和闹钟允许响应信号同时满足nao_signal<=~nao_signal; //产生闹钟响应信号Q=Q+nao_signal;if(Q>=8'd720)begin //响应时间完毕,关闭闹钟允许响应信号Q<=16'b0;signal<=1'b0;endendelse beginsignal<=1'b0;nao_signal<=1'b0;endendendmodule(5)、整点报时模块:检测分钟和秒钟计数是否都达到了59,然后再下一个秒脉冲的作用下发出整点报时信号,送到LED。

并开始计数,计数达到报时信号响应次数后,终止报时信号。

部分代码如下:always(posedge _500ms)beginif(((SH*10+SL)==8'd59)&&((MH*10+ML)==8'd59))beginQ1<=7'b0;bao<=1'b1;end //允许报时else if((Q1<10*HH+HL)&&(bao)) beginbao_signal<=~bao_signal; // 产生报时信号Q1<=Q1+bao_signal; //响一次计数加一endelse if(Q1==(10*HH+HL)) //报时次数达到整点时数,终止信号bao<=1'b0;elsebeginbao_signal<=1'b0;endEnd(6)、12—24小时切换模块:将24小时切换成12小时,并存入相应的寄存器。

相关文档
最新文档