搜档网
当前位置:搜档网 › 基于-verilog的数字时钟设计

基于-verilog的数字时钟设计

基于-verilog的数字时钟设计
基于-verilog的数字时钟设计

课程设计

基于Verilog HDL的数字秒表设计

系别:物理与电气工程学院

专业:微电子学

班级:<2>班

成员:

目录

一、前言 (3)

二、实验目的 (3)

三、功能设计 (3)

四、用Verilog描述电路 (4)

4.1时钟调校及计时模块 (4)

4.2整数分频模块 (8)

4.3时钟信号选择模块 (8)

4.4七段显示设置 (11)

4.4.1 BCD码显示模块 (11)

4.4.2二位七段显示模块 (12)

4.4.3一位七段显示模块 (12)

4.5顶层模块实现 (14)

五、模拟与仿真 (15)

六、逻辑综合 (16)

七、下载到硬件电路 (16)

八、总结 (18)

九、心得体会 (18)

十、参考文献 (19)

一、前言

随着微电子技术的的飞速发展,大规模可编程器件的密度和性能不断提高,

数字系统的设计方法、设计过程也发生了重大改变,传统的设计方法已经逐渐被电子设计自动化EDA(Electronic Design Automation)工具所取代。可编程器件可以通过硬件描述语言(如Verilog HDL)的形式根据实际设计的需要灵活地嵌入规模化的数字单元,大缩短了产品的设计周期。以可编程逻辑器件为核心的设计在数字系统设计领域将占据越来越重要的作用,因此,作为硬件设计者掌握EDA 设计方法和工具是必须的。

二、实验目的

(1)通过本次课程设计加深对Verilog语言课程的全面认识、复习和掌握。

(2) 掌握定时器、外部中断的设置和编程原理。

(3) 通过此次课程设计能够将软硬件结合起来,对程序进行编辑、调试。使其能够通过电脑下载到芯片,正常工作。

(4)实际操作Quartus II软件,复习巩固以前所学知识。

三、功能设计

数字钟是一个常用的数字系统,其主要功能是计时和显示时间。这里通过一个数字钟表的模块化设计方法,说明自顶向下的模块化设计方法和实现一个项目的设计步骤。这里实现的电子表具有显示和调时的基本功能,可以显示时、分秒和毫秒,并通过按键进行工作模式选择,工作模式有4种,分别是正常计时模式、调时模式、调分模式、调秒模式。

构成电子表的基本基本模块有四个,分别是时钟调校及计时模块myclock、整数分频模块int_div、时钟信号选择模块clkgen和七段显示模块disp_dec。

四、用Verilog实现电路

4.1时钟调校及计时模块

时钟调校及计时模块myclock实现的功能是根据当前的工作状态进行时、分、秒的调整或正常的计时。代码端口说明如下:

输入信号:

RSTn——复位信号

CLK——100Hz时钟信号

FLAG[1:0]——工作模式控制信号,模式定义为:00表示正常显示,01表示调时,10表示调分,11表示调秒;

UP——调校模式时以加1方式调节信号;

DN——调校模式时以减1方式调节信号。

输出信号:

H[7:0]——“时”数据(十六进制);

M[7:0]——“分”数据(十六进制);

S[7:0]——“秒”数据(十六进制);

MS[7:0]———“百分秒”数据(十六进制)。

该模块的设计思路是,当复位信号RSTn有效时,时、分、秒信号清零,否则工作模式控制信号FLAG的值决定当前的工作状态。当FLAG=2’b00时,电子表工作在正常计时状态,对输入的100Hz的时钟信号clk进行计数,修改当前的百分秒(MS)、秒(S)、分(M)和时(H)的计数值;当FLAG信号=2’b01时,电子表工作在“时”校正状态,若此时UP信号有效则H加1,若此时DN信号有效则H 减1,;当FLAG信号=1’b10时,电子表工作在“分”校正状态,若此时UP信号有效则M加1,若此时DN信号有效则M减1;当FLAG=2’b11时,电子表工作在“秒”校正状态,其UP和DN的控制过程与“时”、“分”类似

代码:

module myclock(RSTn,CLK,FLAG,UP,DN,H,M,S,MS);

inputRSTn,CLK,UP,DN;

output [7:0] H,M,S;

output [7:0] MS;

input[1:0] FLAG;

reg [5:0] m_H,m_M,m_S;

reg [6:0] m_MS;

assign H=m_H;

assign M=m_M;

assign S=m_S;

assign MS=m_MS;

always (posedge CLK)

if(~RSTn) //复位状态begin

m_H<=8'd23;

m_M<=8'd52;

m_S<=8'b0;

m_MS<=8'b0;

end

else if(FLAG==2'b01)//调时状态

begin

if(UP)

begin

if(m_H==8'd23)

m_H<=8'd0;

else

m_H=m_H+1'b1;

end

else if(DN)

begin

if(m_H==8'h00)

m_H<=8'd23;

else

m_H<=m_H-1'b1;

end

end

else if(FLAG==2'b10) //调分状态begin

if(UP)

if(m_M==8'd59)

m_M<=8'd0;

else

m_M<=m_M+1'b1;

else if(DN)

if(m_M==8'h00)

m_M<=8'd59;

else

m_M<=m_M-1'b1;

end

else if(FLAG==2'b11) //调秒状态begin

if(UP)

if(m_S==8'd59)

m_S<=8'b0;

else

m_S<=m_S+1'b1;

else if(DN)

if(m_S==8'h00)

m_S<=8'd59;

else

m_S<=m_S<=m_S-1'b1;

end

else

begin //正常计时状态

if(m_MS==8'd99)

begin

m_MS<=8'd0;

if(m_S==8'd59)

begin

m_S<=8'd0;

if(m_M==8'd59)

begin

m_M<=8'd0;

if(m_H==8'd23)

m_H<=0;

else

m_H<=m_H+1'b1;

end

else

m_M<=m_M+8'd1;

end

else

m_S<=m_S+1'b1;

end

else

m_MS<=m_MS+1'b1;

end

endmodule

4.2整数分频模块

由于数字系统提供的基准时钟信号频率往往较高,因此需要分频模块产生所需频

率的失踪信号,例如上面时钟校正及计时模块所需的100Hz的时钟信号。整数分频模块int_div可以实现对输入时钟clock进行F_DIV分频后输出clk_out。F_DIV 分频系数围为1~2^n(n=F_DIV_WIDTH),若要改变分频系数,改变参数F_DIV或F_DIV_WIDTH到相应围即可。若分频系数为偶数,则输出时钟占空比为50%;若分频系数为奇数,则输出的时钟占空比取决于输入的时钟占空比和分频系数(当输入为50%时,输出也是50%)。

代码:

moduleint_div(clock,clk_out);

parameter F_DIV=48000000; //分频系数

parameter F_DIV_WIDTH=32; //分频计数器宽度

input clock; //输入时钟

output clk_out; //输出时钟

regclk_p_r;

regclk_n_r;

reg[F_DIV_WIDTH-1:0] count_p;

reg[F_DIV_WIDTH-1:0] count_n;

wire full_div_p; //上升沿计数满标志

wire half_div_p; //上升沿计数半满标志

wire full_div_n; //下降沿计数满标志

wire half_div_n; //下降沿计数半满标志

//判断计数标志位置位与否

assignfull_div_p=(count_p

assignhalf_div_p=(count_p<(F_DIV>>1)-1);

assignfull_div_n=(count_n

assignhalf_div_n=(count_n<(F_DIV>>1)-1);

//时钟输出

assignclk_out=(F_DIV==1)?clock:(F_DIV[0]?(clk_p_r&clk_n_r):clk_p_r);

always (posedge clock) //上升沿脉冲计数

begin

if(full_div_p)

begin

count_p<=count_p+1'b1;

if(half_div_p)

clk_p_r<=1'b0;

else

clk_p_r<=1'b1;

end

else

begin

count_p<=0;

clk_p_r<=1'b0;

end

end

always (negedge clock) //下降沿脉冲计数

begin

if(full_div_n)

begin

count_n<=count_n+1'b1;

if(half_div_n)

clk_n_r<=1'b0;

else

clk_n_r=1'b1;

end

else

begin

count_n<=0;

clk_n_r<=1'b0;

end

end

endmodule

4.3时钟信号选择模块

时钟信号选择模块clkgen实际上时一个二选一电路,用于提供时钟调校及计时时模块所需的时钟脉冲。当电子表工作在正常计时状态时选择100Hz时钟信号;当电子表工作在调时、调分、调秒是那种设置模式时,如果采用100Hz时钟信号,那么手动一次按键可能引起设置数据的一串跳变,因此为了方便按键时动作对时间的设置,这里采用2Hz的时钟信号。其端口说明如下:

flag——时钟选择输入信号;

clk_100Hz———输入100Hz的时钟信号;

clk_2Hz——输入2Hz的时钟信号;

Clkout——输出时钟信号。

代码:

moduleclkgen(flag,clk_100hz,clk_2hz,clkout);

input[1:0] flag; //若flag=0则clkout=100Hz,否则clkout=2Hz input clk_100hz,clk_2hz;

outputclkout;

assignclkout=(flag==2'b00)?clk_100hz:clk_2hz;

endmodule

4.4七段显示设置

为了对时钟时、分、秒和毫秒数据输出显示,需要将时、分、秒和毫秒的二进制转换为十进制数。由于时、分、秒最大到60,毫秒最大到99,所以十进制数选择2位就能满足要求。为了在七段数码管输出时间数据,还需要将显示的十进制数转化为七段段码。以上功能分别由BCD码显示模块和七段译码管模块来实现。

4.4.1 BCD码显示模块

BCD码显示模块的功能是将8位二进制数转化为2位十进制数后,进行七段段译码显示。为了实现显示功能,在其部调用了dual_hex2位七段显示模块。其端口说明如下:

输入信号:

hex——2位8421BCD码输入。

输出信号:

dispout——2位8421码对应的七段数码管段码。

代码:

moduledisp_dec(hex,dispout);

input[7:0] hex;//八位二进制输入数据

output[15:0] dispout; //2位十进制的七段段码显示数据

reg[7:0] dec;

always (hex)

begin //8位二进制数转化为2位BCD码

dec[7:4]=hex/4'd10;

dec[3:0]=hex%4'd10;

end

dual_hex u1(1'b0,dec,dispout); //调用2位共阳极七段显示模块endmodule

4.4.2二位七段显示模块

二位七段显示模块的功能是将2进制或十六进制数转化为对应的七段段码,部调

用了一位七段译码模块seg_decoder。

代码:

moduledual_hex(iflag,datain,dispout);

input iflag; //共阴或共阳输出选择

input[7:0] datain; //2位的十进制或十六进制数据output[15:0] dispout;//2个七段段码数据

seg_decoderu1(iflag,datain[7:4],dispout[15:8]);

seg_decoderu2(iflag,datain[3:0],dispout[7:0]);

endmodule

4.4.3 一位七段译码模块

一位七段译码模块的功能是将4位二进制数转化为对应的共阴或共阳七段段码。

代码:

moduleseg_decoder(iflag,iA,oY);

input iflag; //共阴或共阳输出选择

input[3:0] iA; //4位二进制数据

output reg[7:0] oY; //七段段码显示数据

always (iflag,iA)

begin

case(iA)//共阴级七段输出

4'b0000:oY=8'h3f;

4'b0001:oY=8'h06;

4'b0010:oY=8'h5b;

4'b0011:oY=8'h4f;

4'b0100:oY=8'h66;

4'b0101:oY=8'h6d;

4'b0110:oY=8'h7d;

4'b0111:oY=8'h27;

4'b1000:oY=8'h7f;

4'b1001:oY=8'h6f;

4'b1010:oY=8'h77;

4'b1011:oY=8'h7c;

4'b1100:oY=8'h58;

4'b1101:oY=8'h5e;

4'b1110:oY=8'h79;

4'b1111:oY=8'h71;

endcase

if(!iflag)

oY=~oY; //共阳极七段输出

end

endmodule

4.5、顶层模块的实现

顶层模块是将各功能模块连接起来,实现电子表的完整功能。其端口信号说明如下:

输入信号:

iCLK——50——50MHz时钟信号;

RSTn——复位信号;

FLAG——工作模式控制信号,模式定义为:00表示正常显示,01表示调时,10表示调分,11表示调秒;

UP——调校模式时以加1方式调节信号;

DN——调校模式时以减1方式调节信号。

输出信号:

H_dis——“小时”数据的七段数码管数据;

M_dis——“分钟”数据的七段数码管数据;

S_dis——“秒”数据的七段译码管数据;

MS_dis——“百分秒”数据的七段译码管数据;

Mode——工作模式输出;

H——“时”数据(十六进制);

M——“分”数据(十六进制);

S——“秒”数据(十六进制);

MS———“百分秒”数据(十六进制)。

代码:

module clock(iCLK_50,RSTn,FLAG,UP,DN,H_dis,M_dis,S_dis,MS_dis,Mode,H,M,S); input iCLK_50;

inputRSTn,UP,DN;

input [1:0] FLAG;

output [1:0] Mode;

output [15:0] H_dis,M_dis,S_dis,MS_dis;

output [7:0] H,M,S;

wire [7:0] MS;

wire clk_100hz,clk_2hz;

wireclk;

assign Mode=FLAG;

int_div#(500000,32) nclk100(iCLK_50,clk_100hz);

int_div#(50000000,32) nclk2(iCLK_50,clk_2hz);

clkgen u0(FLAG,clk_100ha,clk_2hz,clk);

myclock u1(RSTn,clk,FLAG,UP,DN,H,M,S,MS);

disp_dec Hour(H,H_dis);

disp_dec Minute(M,M_dis);

disp_dec Second(S,S_dis);

disp_dec hour(MS,MS_dis);

endmodule

五、模拟与仿真

在Quartus II中利用仿真波形进行功能或时序仿真的基本步骤如下:

(1)创建新的矢量波形文件(*.vwf).

(2)添加输入、输出节点。

(3)编译输入节点的波形。

(4)完成矢量波形文件的创建之后,用户即可以对设计进行功能或时序仿真。

(5)仿真启动后,状态窗口会同时自动打开,在状态窗口中显示仿真进度及所用时间。

(6)默认情况下,仿真器报告窗口在仿真过程中会显示仿真波形部分,其中还包括当前仿真器的设置信息和仿真信息等。

计时状态仿真波形

六、逻辑综合

完成项目创建和设计输入后,用Quartus II的编译器(compiler)对设计进行检查和逻辑综合,并生成用于配置可编程逻辑器件的下载文件。Quartus II编译器中

的Analysis & Synthesis模块将分析设计文件并建立工程数据库。该模块使用Quartus II置综合器,综合Verilog HDL设计文件(.v)。

(1)编译器件选项设置。

(2)引脚分配。

(3)编译设计。

(4)查看适配结果。

七、下载到硬件电路

在设计(工程)编译成功后,便可以对所选的(Altera)目标器件进行编程和配置。Quartus II编译器的Assembler 模块将会对工程的各个组件转换成编程文件,包括编译器对象文件(*.pof)和SRAM对象文件(.sof)。Quartus II编译器(Progrsmmer)可以使用这些编程文件与Altera编程硬件配合,对Quartus II 软件所支持的Altera器件进行编程和配置。

秒显示

分显示

八、总结

在QuartusII开发环境下,采用自顶向下的设计方法有利于在早期发现结构设计中的错误,避免不必要的重复设计。再结合基于FPGA 的“在系统”可编程实验板,轻轻松松就能实现各种电子产品的设计,现场观察实验测试结果。大大缩短了产品的设计周期和调试周期,提高了设计的可靠性和成功率,充分体现了可编程逻辑器件在数字电路设计中的优越性。

九、心得体会

两周时间的课程设计,终于达到了数字秒表系统的要求,尽管还不是十分完美,但从心底里说,还是很高兴的。

通过以上步骤就可以完成对数字秒表的过程设计。这次设计,我克服了很多关于设计问题方面的困难,使我对Quartus II软件的使用有了更进一步的了解,同时也积累了一些经验。在这次的课程设计中,我体会最深的就是,理论与实际

的差别,往往理论上十分成熟的技术,在真正实现的过程中还是会出现很多问题,要考虑到诸多因素。通过此次设计,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,只有通过实践,才能不断提高,不断进步。

参考文献

[1]王金明. Verilog HDL程序实际教程. :人民邮电,2004.

[2]杜建国. Verilog HDL硬件描述语言.:国防工业,2004.

[3]王诚,吴继华,等. Altera FPGA/CPLD设计(基础篇). :人民邮电,2005.

[4]夏宇闻. Verilog数字系统设计教程. :航空航天大学,2003.

[5]Stephen Brown,ZvonkoVranesic. 数字逻辑基础与Verilog设计. :机械工业,2008.

[6]杜慧敏,等. 基于Verilog的FPGA设计基础. :电子科技大学,2006.

[7]杜勇. FPGA/VHDL设计入门与进阶. :机械工业,2011.

[8]晓惠,等. FPGA系统设计与实例. :人民邮电.

[9]周瑞景,等. 基于Quartus II的数字系统Verilog HDL设计实例讲解. :电子工业,2010.

[10]王金明. 数字系统设计与Verilog HDL设计实例. :电子工业,2009.

数字系统设计与verilog HDL课程设计

数字系统设计与verilog HDL课程设计 设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号:031341025 姓名:杨存智 指导老师:黄双林

摘要 本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录 1.课程设计的目的及任务............................................................. 错误!未定义书签。 1.1 课程设计的目的 (3) 1.2 课程设计的任务与要求 (4) 2.课程设计思路及其原理 (4) 3.QuartusII软件的应用 (5) 3.1工程建立及存盘 (5) 3.2工程项目的编译 (5) 3.3时序仿真 (6) 4.分模块设计、调试、仿真与结果分析 (7) 4.1 clk50mto1时钟分频模块 (7) 4.2 adder加法器模块 (7) 4.3 hexcounter16 进制计数器模块 (7) 4.4 counter_time 计时模块 (8) 4.5 alarm闹铃模块 (8) 4.6 sound_ddd嘀嘀嘀闹铃声模块 (9) 4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (9) 4.8 alarm_time闹钟时间设定模块 (10) 4.9 bitsel将输出解码成时分秒选择模块 (10) 4.10 switch去抖模块 (11) 4.11 led译码显示模块 (11) 4.12 clock顶层模块 (12) 5.实验总结 (13) 5.1调试中遇到的问题及解决的方法 (13) 5.2实验中积累的经验 (14) 5.3心得体会 (14) 6.参考文献 (14) 1.1 课程设计的目的 通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

数字电路时钟设计verilog语言编写--

电子线路设计与测试 实验报告 一、实验名称 多功能数字钟设计 二、实验目的 1.掌握可编程逻辑器件的应用开发技术 ——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法;

4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计。 三、设计内容及要求 1.基本功能 具有“秒”、“分”、“时”计时功能,小时按24小时制计时。 具有校时功能,能对“分”和“小时”进行调整。 2.扩展功能 仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz 信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。 定时控制,其时间为23时58分。 3.选做内容 任意时刻闹钟(闹钟时间可设置)。 自动报整点时数。 四.系统框图与说明 数字钟框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。 2.秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。 3.计数器的输出经译码器送显示器。 五.设计步骤 1.列写多功能数字钟设计--层次结构图 2.拟定数字钟的组成框图,在Max+Plus II软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路; 3.设计各单元电路并进行仿真; 4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合; 5.下载到Cyclone II FPGA实验平台上,实际测试数字钟的逻辑功能。

六.Verilog代码 //24进制时钟, 具有计时、校时、仿广播电台正点报时、固定时刻定时,任意时刻闹钟等功能 module clock_main(LED_Hour,LED_Minute,LED_Second,Alarm,CP_1KHz,Jsh_Min_key,Jsh_Hour_ke y,Set_Hour_key,Set_Min_key,Show,Ctrl_Bell); input CP_1KHz;//定义输入时钟 input Jsh_Min_key,Jsh_Hour_key;//定义校时按键 input Set_Hour_key,Set_Min_key;//定义闹钟定时按键 input Show; //定义显示模式按键 input Ctrl_Bell;//定义闹钟铃声控制 output [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量 wire [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量类型 wire [7:0]Hour,Minute,Second; wire [7:0]Set_Hour_Out,Set_Min_Out; wire Out_1Hz,Out_500Hz;//定义分频模块输出变量类型 reg Alarm_Ring,Alarm_Clock_1KHz;//定义仿广播电台报时和固定时刻定时铃声 output Alarm;//蜂鸣器输入 supply1Vdd; wire Alarm_Clock;//任意时刻闹钟闹铃 wire MinL_EN,MinH_EN,Hour_EN;//定义中间变量类型 //分频 fre_dividerFD0(Out_1Hz,Out_500Hz,Vdd,Vdd,CP_1KHz); //正常计时 counter10 U1(.Q(Second[3:0]),.nCR(Vdd),.EN(Vdd),.CP(Out_1Hz)); counter6 U2(.Q(Second[7:4]),.nCR(Vdd),.EN(Second[3:0]==4'h9),.CP(Out_1Hz)); assignMinL_EN=Jsh_Min_key?Vdd:(Second==8'h59); assign MinH_EN=(Jsh_Min_key&&(Minute[3:0]==4'h9))||(Minute[3:0]==4'h9)&&(Second==8'h59 ); counter10 U3(.Q(Minute[3:0]),.nCR(Vdd),.EN(MinL_EN),.CP(Out_1Hz)); counter6 U4(.Q(Minute[7:4]),.nCR(Vdd),.EN(MinH_EN),.CP(Out_1Hz)); assign Hour_EN=Jsh_Hour_key?Vdd:((Minute==8'h59)&&(Second==8'h59)); counter24 U5(Hour[7:4],Hour[3:0],Vdd,Hour_EN,Out_1Hz); //仿广播电台正点报时 baoshi BS1(Alarm_Ring,Minute,Second,Out_500Hz,CP_1KHz);//在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点 //固定时刻定时

verilog数字钟代码

module digclk(clk,en,rst,dula,wela,s1,s2,s3,led,flag1,start1,flag2,start2,aled,s6,s4,s5); //s1调时s2调分s3调秒wela位码dula段码en使能clk时钟,flag1是跑表标志(拨上去就是显示跑表),置一为跑表功能,start1为跑表开始停止 //flag2为闹钟标志(拨上去就是设置闹钟时间)start2为闹钟开关aled闹钟提示灯input clk,rst,en,s1,s2,s3,flag1,start1,flag2,start2,s6,s4,s5; output [2:0] wela; output [7:0] dula; output led; output aled; reg led; reg aled; reg [7:0] cnt,dula; reg [2:0] wela; reg[7:0] hourh,hourl,minh,minl,sech,secl; reg[7:0] phourh,phourl,pminh,pminl,psech,psecl; reg[7:0] ahourh,ahourl,aminh,aminl,asech,asecl; reg[3:0] a; //a用于数码管显示的临时变量 (* synthesis, keep *) reg clk1; always @(posedge clk1) begin if(start2) begin if(hourh==ahourh&&hourl==ahourl&&minh==aminh&&minl==aminl&&sech==asech&&secl ==asecl) aled=1'b1; else aled=1'b0; end end always @(posedge clk1) //闹钟功能 begin if(flag2) begin if(!s4) //调节小时 begin /*if(ahourl==9)begin ahourl<=0;ahourh<=ahourh+1;end if(ahourh==2&&ahourl==3)begin ahourh<=0;ahourl<=0; end else ahourl<=ahourl+1;*/ ahourl<=ahourl+1; if(ahourl==3&&ahourh==2)begin ahourl<=0;ahourh<=0;end if(ahourl==9) begin ahourl<=0;ahourh<=ahourh+1;end;

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

2009—2010学年第二学期 《数字电子技术课程设计》报告 专业班级:电气-08-1 姓名:曹操 学号:08051127 设计日期:2010年8月23日~27日 一.设计题目 多功能数字钟电路设计 二.设计任务及要求 多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在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。 管脚分配如下表: 端口名使用模块信号对应FPGA管脚说明 S1 按键开关S1 R16 调整小时 S2 按键开关S2 P14 调整分钟 RST 按键开关S8 M15 复位 LED LED模块D1 L14 整点倒计时 LEDAG0 数码管模块A段N4 时间显示 LEDAG1 数码管模块B段G4 LEDAG2 数码管模块C段H4 LEDAG3 数码管模块D段L5 LEDAG4 数码管模块E段L4 LEDAG5 数码管模块F段K4 LEDAG6 数码管模块G段K5 SEL0 数码管选择位1 M4 8个数码管

Verilog HDL数字时钟课程设计

课程设计报告 课程设计名称:EDA课程设计课程名称:数字时钟 二级学院:信息工程学院 专业:通信工程 班级:12通信1班 学号:1200304126 姓名:@#$% 成绩: 指导老师:方振汉 年月日

目录 第一部分 EDA技术的仿真 (3) 1奇偶校验器 (3) 1.1奇偶校验器的基本要求 (3) 1.2奇偶校验器的原理 (3) 1.3奇偶校验器的源代码及其仿真波形 (3) 28选1数据选择器 (4) 2.18选1数据选择器的基本要求 (4) 2.28选1数据选择器的原理 (4) 2.38选1数据选择器的源代码及其仿真波形 (5) 34位数值比较器 (6) 3.14位数值比较器的基本要求 (6) 3.24位数值比较器的原理 (6) 3.34位数值比较器的源代码及其仿真波形 (7) 第二部分 EDA技术的综合设计与仿真(数字时钟) (8) 1概述 (8) 2数字时钟的基本要求 (9) 3数字时钟的设计思路 (9) 3.1数字时钟的理论原理 (9) 3.2数字时钟的原理框图 (10) 4模块各功能的设计 (10) 4.1分频模块 (10) 4.2计数模块(分秒/小时) (11) 4.3数码管及显示模块 (13) 5系统仿真设计及波形图........................... 错误!未定义书签。5 5.1芯片引脚图.................................... 错误!未定义书签。5 5.2数字时钟仿真及验证结果 (16) 5.3数字时钟完整主程序 (17) 6课程设计小结 (23) 7心得与体会 (23) 参考文献 (24)

基于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、总原理框图:

基于verilog数字秒表的设计实现--生产实习报告

生产实习报告 班级:通信13-2班 姓名:闫振宇 学号:1306030222 成绩: 电子与信息工程学院 信息与通信工程系

基于verilog 数字秒表的设计实现 1. 概述 硬件描述语言HDL ( HardwareDescription Langyage) 是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计这里用这种语言可以从上层倒下层逐层描述自设计思想用一系列分层的模块来表示极其复杂的数字系统,然后用EDA 工具逐层验证,把其中需要为具体物理电路的模块组合由自动综合工具转换到门级电路网表。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。使用VERILOG 进行系统设计时采用的是从顶至下的设计,自顶向下的设计是从系统机开始巴西同划分为若干个基本单元,然后再把每个单元划分为下一层的基本单元,这样下去直到可以直接用EDA 元件库中的基本元件来实现为止。 2. 设计目的及要求 a. 有源晶振频率:50MHZ ; b. 测试计时范围:00' 00” 00 ~ 59 ',59显”示9的9 最长时间为59 分59 秒; c. 数字秒表的计时精度是10ms; d. 显示工作方式:六位BCD 七段数码管显示读数,两个按钮开关(一个按钮使秒表复位,另一个按钮控制秒表的启动/暂停)。 3. 设计原理秒表的逻辑结构较简单,它主要由四进制计数器、十六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止、启动以及清零复位。 秒表有共有6个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有 6 个计数器与之相对应; 6 个计数器的输出全都为BCD 码输出,这样便与同显示译码器连接。 利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在CPLD 器件上用Verilog 语言实现。这样设计具有体积小,设计周期短,调试方 便,故障率地和修改升级容易等特点。 本设计采用依次采用以下设计方法: 1)按键输入缓存,键盘消抖设计;

多功能数字钟设计Verilog语言编写

多功能数字钟设计 院系:电光学院 班级:*** 学号: *** 姓名: *** 指导老师:*** 时间:2010.4.20.

摘要:利用QuartusII软件设计一个数字钟,利用模块化的程序设计思想,核心 模块均采用Verilog语言编写(译码显示模块采用原理图设计),软件仿真调试编译成功后,再下载到SmartSOPC实验系统中。经过硬件测试,查找软件设计缺陷,并进一步完善软件,最终设计得到较为满意的多功能数字钟。 关键词:QuartusII; 多功能数字钟; 模块化; Verilog; 可编程; Abstract:Using the QuartusII software design a digital bell with the blocking method.The design takes theory drawing instead of Verilog language.After emluating and debuging successfully,translate and edit the code.Then,download the result to the programmable SmartSOPC system and test it in hardware.Realizing the soul of designing hardware by software. Keywords:QuartusII; digital bell; blocking method; VHDL; programmable; hardware 目录 设计内容简介 (3) 设计要求说明 (3) 方案论证(整体电路设计原理) (3) 各子模块设计理 (5) 分频模块: (5) 计数模块: (7) --校准模块程序实现: (8) --秒计数模块程序实现: (9) --分计数模块程序实现: (10) --时计数模块程序实现: (10) 整点报时模块: (12) 闹钟设定模块: (13) --闹钟调节模块程序实现: (14) --输出信号选择模块程序实现: (14) 彩铃模块: (15) 译码显示模块: (18) 万年历模块: (19) --日计数模块程序设计: (20) --月计数模块程序设计: (23) --年计数模块程序设计: (23) --万年历波形仿真结果: (25) 结论: (26) 实验感想: (26) 附图: (27)

FPGA--数字时钟(verilog)

因为本人也是刚学习fpga的菜鸟,所以这个程序漏洞很多,仅供参考。。。。。。。。。 //分频子模块 module fenpin (clk,rst_n,en_1s,en_1ms); //产生1s,1ms的分频 input clk; input rst_n; output en_1s; output en_1ms; reg[31:0] jishu_1s; reg[15:0] jishu_1ms; parameter cnt_1s =49999999; parameter cnt_1ms =49999; always@(posedge clk or negedge rst_n) begin if(!rst_n) jishu_1s<=32'b0; else if(jishu_1s

//按键控制部分 module anjian(clk,rst_n,key1,key2,key1_low,key2_low); input clk; input rst_n; input key1; // 分加 input key2; // 分减 output key1_low; //按键按下消抖后的标志位 output key2_low; reg reg0_key; //key1消抖 reg reg1_key; reg reg2_key; //key2消抖 reg reg3_key; always @(posedge clk or negedge rst_n) begin if(!rst_n) begin reg0_key <= 1'b1; reg1_key <= 1'b1; end else begin reg0_key <= key1; reg1_key <= reg0_key; //根据非阻塞赋值的原理,reg1_key 存储的值是reg0_key 上一个时钟的值 end end //脉冲边沿检测法,当寄存器key1 由1 变为0 时,key1_an 的值变为高,维持一个时钟周期 wire key1_an; assign key1_an = reg1_key & ( ~reg0_key); always @(posedge clk or negedge rst_n) begin if(!rst_n) begin reg2_key <= 1'b1; reg3_key <= 1'b1; end else begin reg2_key <= key2;

verilog数字钟课程设计

课程设计报告课程设计题目:数字钟系统 学号:201420130228 学生姓名: 刘进辉 专业:通信工程 班级:1421301 指导教师:钟凯老师 2017年1 月1 日

目录 一.摘要 (3) 二.概念及原理 (4) 三.实验过程及分析 (5) 四.实验心得 (7) 五.参考文献 (7) 六.实验代码 (8) 七.评分表 (14)

摘要 在社会快速发展的今天,时钟在人们的生活中显得越发重要,因此设计数字钟就变得尤为重要。本文介绍一种利用verilog语言产生多功能数字钟的设计方案,不仅让大家对数字钟更为了解,而且可以为人们的生活带来便利。数字钟它具有时、分、秒的正常显示功能及调节时和分的特殊功能,此外,以24小时循环计数,具有整点报时功能,并且由按键输入进行对数字钟的校时、清零功能。本文设计的数字钟方案由控制模块、计时模块、以及报时模块三大模块组成,满足所有的功能要求,并且代码是经modelsim软件编译和仿真所设计。

二.概念及原理 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路。如图所示为数字钟的一般构成框图。主要包括时间基准电路、计数器电路、控制电路。其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。 数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23。 在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,小时他的范围是从0~23,所以可以均用一个4位的二进制码显示十位和个位。 对于整点报时功能,本实验设计的是当进行正点发出一个高音信号和59分50、5254、56、58秒发出一个高音信号。 调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另用外reset按键作为系统时钟复位,复位后全部显示00—00—00。

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) begin if(!clr) selout_key=0; else begin if(selout_key==2) selout_key=0; else selout_key=selout_key+1;end end assign 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 )begin if(!clr) q=8'h00; else begin if(selout==2) begin if(upkey)begin if(q==8'h59) q=8'h00; else if(q==8'h?9) q=q+4'h7; else q=q+1; end else if(downkey)begin if(q==8'h00) q=8'h59; else if(q==8'h?0) q=q-4'h7; else q=q-1; end

基于FPGA的VerilogHDL数字钟设计

基于FPGA的Verilog-HDL数字钟设计--

————————————————————————————————作者:————————————————————————————————日期:

基于FPGA的Verilog HDL数字钟设计 专业班级姓名学号 一、实验目的 1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法; 4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计; 6.学会FPGA的仿真。 二、实验要求 功能要求: 利用实验板设计实现一个能显示时分秒的多功能电子钟,基本功能: 1)准确计时,以数字形式显示时、分、秒,可通过按键选择当前显示时间范围模式; 2)计时时间范围00:00:00-23:59:59 3)可实现校正时间功能; 4)可通过实现时钟复位功能:00:00:00 扩展功能: 5)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用板上LED或外接电路实现。 6)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---用板上LED或外接 7)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---用板上LED或外接

8)手动输入校时; 9)手动输入定时闹钟; 10)万年历; 11)其他扩展功能; 设计步骤与要求: 1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。 2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电路系 统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。 3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快 得出仿真结果)。 4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit文件。 5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。 三、实验设计 功能说明:实现时钟,时间校时,闹铃定时,秒表计时等功能 1.时钟功能:完成分钟/小时的正确计数并显示;秒的显示用LED灯的闪烁做指示; 时钟利用4位数码管显示时分; 2.闹钟定时:实现定时提醒及定时报时,利用LED灯代替扬声器发出报时声音; 3.时钟校时:当认为时钟不准确时,可以分别对分钟和小时位的值进行调整; 4.秒表功能:利用4个数码管完成秒表显示:可以实现清零、暂停并记录时间等功能。 秒表利用4位数码管计数; 方案说明:本次设计由时钟模块和译码模块组成。时钟模块中50MHz的系统时钟clk分频产

基于FPGA的VerilogHDL数字钟设计-

基于FPGA的Verilog HDL数字钟设计 专业班级姓名学号 一、实验目的 1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法; 4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计; 6.学会FPGA的仿真。 二、实验要求 ?功能要求: 利用实验板设计实现一个能显示时分秒的多功能电子钟,基本功能: 1)准确计时,以数字形式显示时、分、秒,可通过按键选择当前显示时间围模式; 2)计时时间围 00:00:00-23:59:59 3)可实现校正时间功能; 4)可通过实现时钟复位功能:00:00:00 扩展功能: 5)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用板上LED或外接电路实 现。 6)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---用板上LED或 外接 7)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---用板上LED或外接 8)手动输入校时; 9)手动输入定时闹钟; 10)万年历; 11)其他扩展功能; ?设计步骤与要求: 1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。 2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电 路系统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。 3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快 得出仿真结果)。 4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit文件。 5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。

实现数字时钟设计的Verilog代码

下面给出实现数字时钟设计的Verilog代码 module top(inc_hour,sub_hour,inc_min,sub_min,rst,clk,sel,q); input inc_hour,sub_hour,inc_min,sub_min; input rst,clk; output reg [2:0] sel; output reg [6:0] q; reg [9:0] scan; reg [2:0] scan_clk; reg div_clk; reg [19:0] counter_clk; reg [3:0] sec_counter1,sec_counter2; reg [3:0] min_counter1,min_counter2; reg [3:0] hour_counter1,hour_counter2; always @ (negedge rst or posedge clk) begin if(~rst) begin counter_clk<=20'h00000; div_clk<=1'b0; end else begin if(counter_clk==20'h7a11f) begin counter_clk<=20'h00000; div_clk<=~div_clk; end else counter_clk<=counter_clk+1; end end always @(negedge rst or posedge div_clk) begin if(~rst) begin sec_counter1<=4'h0; sec_counter2<=4'h0; min_counter1<=4'h0; min_counter2<=4'h0; hour_counter1<=4'h0; hour_counter2<=4'h0; end

基于某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)begin if(~nCR) begin Q1<=32'd0; end else if(Q1>=32'd2*******) begin Q1<=32'd0; _1HZ=~_1HZ; end else begin Q1<=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 ) begin if(!reset) begin //有复位,清零 t<=8'd0;

基于Verilog HDL的闹钟设计

封面删除~你懂的

摘要 随着微电子技术、计算机技术、半导体技术的发展,很多传统的数字门电路的设计已经被可编程逻辑器件替代。而对于传统的模拟控制技术,也被数字控制系统所取代。数字系统在各个领域显示出了无穷的魅力与优势,如今已经被广泛应用于实际工程中。本文利用Verilog HDL 语言自顶向下的设计方法设计多功能数字钟, 实现时、分、秒的计时和校时,以及整点报时和闹钟的功能。突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点, 并通过ModelSim SE 6.5 完成综合、仿真。通过Verilog HDL语言完成数字钟的层次化设计。 关键词:数字电子时钟,有限状态机,功能仿真 Abstract As the microelectronics, computer technology, semiconductor technology, many traditional design of digital gate programmable logic device has been replaced. As for the traditional analog control, digital control systems have also been replaced. Digital systems in various fields has shown infinite charm and advantages, and now has been widely used in practical projects. In this paper, Verilog HDL, the design of top-down multi-functional digital clock designed to achieve the hours, minutes, seconds, time and school, as well as the whole point timekeeping and alarm functions. Highlighted as a hardware description language, good readability, portability and ease of understanding, etc., and through the ModelSim SE 6.5 complete the comprehensive, simulation. Completed by Verilog HDL, the level of the digital clock design. Key words: Digital electronic clock, finite state machine, functional simulation .

数字系统设计与verilogHDL课程设计

数字系统设计与v e r i l o g H D L课程设计设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号: 姓名:杨存智 指导老师:黄双林 摘要 本课程设计利用QuartusII软件VerilogVHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能 目录

课程设计的目的 通过课程设计的锻炼,要求学生掌握Verilog HDL语言的一般设计方法,掌握Verilog HDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的创新精神。 掌握现代数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。 课程设计的任务与要求 用Verilog HDL语言设计一个多功能的数字钟,具有下述功能: (1)计时功能。包括时、分、秒的计时; (2)定时与闹钟功能:能在设定的时间发出闹铃音; (3)校时功能。对时、分和秒能手动调整以校准时间; (4)整点报时功能;每逢整点,产生“嘀嘀嘀嘀一嘟”四短一长的报时音。 2.课程设计思路及其原理 数字计时器要实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能,所有功能都基于计时功能。因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为50MHZ,通过分频获得所需脉冲频率1Hz。得到1hz脉冲后,要产生计时模块,必须需要加法器来进行加法,因此需要一个全加器,此实验中设计一个八位全加器来满足要求。 数字电路设计中,皆采用二进制加法,为实现实验中时分秒的最大功能,本实验中采用十六进制加法器,再进行BCD码进行转换来实现正常时钟显示。为产生秒位,设计一个模60计数器,利用加法器对1HZ 的脉冲进行秒计数,产生秒位;为产生分位,通过秒位的进位产生分计数脉冲,分位也由模60计数器构成;为产生时位,用一个模24计数器对分位的进位脉冲进行计数。整个数字计时器的计数部分共包括六位:时十位、时个位、分十位、分个位、秒十位和秒个位。基本的计时模块完成之后,整点报时、清零、校时、LED显示、闹铃模块可以相互实现,其中,闹铃模块与计时模块的显示相互并行。 清零功能是通过控制计数器清零端的电平高低来实现的。只需使清零开关按下时各计数器的清零端均可靠接入有效电平(本实验中是低电平),而清零开关断开时各清零端均接入无效电平即可。 保持功能是通过逻辑门控制秒计数器输入端的1Hz脉冲实现的。正常情况下,开关不影响脉冲输入即秒正常计数,当按下开关后,使脉冲无法进入计数端,从而实现计时保持功能。

相关主题