基于Verilog HDL设计的数字时钟

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

深圳大学考试答题纸

(以论文、报告等形式考核专用)

二○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.顶层模块:

顶层模块调用三个字模块,并且定义输入输出口,代码输入所示:

module

myclock2(daojishi,stop,clk,reset,shi,fen,miao,miaoout1,miaoout2,fenout1,fenout2,shiout1,shiout2) ;

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)分频模块:

分频模块的作用主要就是要获得各种频率的时钟信号。输入信号27MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对27MHZ信号分频。通过计数

的方式,当计数从0开始到时,1HZ信号取反一次,计数又从0开始,如此循环,就可以得到1HZ脉冲信号。对于其她信号也就是如此,只就是计数值不一样,得到的分频信号不同。

模块代码如下:

module divider_1HZ(clk_1hz,reset,clk);

output clk_1hz;

input reset,clk;

reg clk_1hz;

reg[23:0] count;

always @(posedge clk)

begin

if(reset)

begin

count<=0;

clk_1hz<=0;

end

else

begin

if(count==)

begin

count<=0;

clk_1hz<=~clk_1hz;

end

else

count<=count+1;//计数

end

end

endmodule

(2)译码显示模块:

一、数码管显示:通过传入响应的十进制数,运用case语句转换输出相应的7位二进制显示码,送入数码管显示。

代码如下:

module decode4_7(temp,indec);

output[6:0] temp;

input[3:0] indec;

reg[6:0] temp;

always @(indec)

begin

case(indec) //用case 语句进行译码

4'd0:temp[6:0]=7'b1000000;

4'd1:temp[6:0]=7'b1111001;

4'd2:temp[6:0]=7'b0100100;

4'd3:temp[6:0]=7'b0110000;

相关文档
最新文档