当前位置:文档之家› 基于verilog数字钟设计报告

基于verilog数字钟设计报告

基于verilog数字钟设计报告
基于verilog数字钟设计报告

一、课程设计目标

1. 熟悉并掌握verilog 硬件描述语言

2. 熟悉quartus 软件开发环境

3. 学会设计大中规模的数字电路,并领会其中的设计思想 二、课程设计实现的功能

(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式); (2)可以调节小时,分钟。

(3)能够进行24小时和12小时的显示切换。 (4)可以设置任意时刻闹钟,并且有开关闹钟功能。 (5)有整点报时功能,几点钟LED 灯闪亮几下。

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

三、设计原理:

1、总原理框图:

2、各个子模块设计:

计数模块

译码显示模块

分频模块 设置闹钟小时

分钟校正 小时校正 模式选择模块

设置闹钟分钟 复位 是否到闹钟时间

切换12进制显示

输出闹钟信号

到达整点

输出整点报时信号

(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 //有复位,清零

cnt<=8'd0;

SH<=4'd0;

SL<=4'd0;end

else if((mode_flag==4'b0010)&&(!BT2)) begin// 如果分钟调节,秒清零

cnt<=8'd0;

SH<=4'd0;

SL<=4'd0;end

if(cnt==8'd59) //计时达到59,下一个脉冲下从新计时

begin

cnt<=8'd0;

SH<=4'd0;

SL<=4'd0;

co<=1'b1;

end

else

begin

co=1'b0;

cnt=cnt+8'd1;

SL<=cnt%10; //秒十位

SH<=cnt/10; //秒各位

end

end

end

endmodule

分计时和小时计时代码和上述类似,不再举出。

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; //模式值加1

if(mode_flag == 4'b0101) //到最后一个模式后返回第一的模式

mode_flag = 2'b0; nd

Endmodule

模式选择:

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)begin

case (mode_flag)

4'b0001: begin

if(~BT2) co22<=_250ms; //小时调钟模式,有按键,则脉冲为250ms

else begin co22<=co2; //没有按键,正常计时

co11<=co1; end

end

4'b0010: begin

if(~BT2) begin co11<=_250ms; //小时调钟模式,有按键,则脉冲为250ms

co22<=co2;end

else begin co11<=co1; //没有按键,正常计时

co22<=co2; end

end

4'b0011: begin co22<=co2;

co11<=co1;

if(~BT2) co222<=_250ms; // 闹钟小时设置信号

else co222<=set_co2;end

4'b0100: begin co22<=co2;

co11<=co1;

if(~BT2) co111<=_250ms; //闹钟分钟设置信号

else co111<=Vdd; end

default :begin

co11<=co1;

co22<=co2; end

endcase

end

endmodule

(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)begin

if((~signal)&&(Alarm_ctr))begin

if((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;end

end

else begin

signal<=1'b0;

nao_signal<=1'b0;end

end

endmodule

(5)、整点报时模块:检测分钟和秒钟计数是否都达到了59,然后再下一个秒脉冲的作用下发出整点报时信号,送到LED。并开始计数,计数达到报时信号响应次数后,终止报时信号。

部分代码如下:

always@(posedge _500ms)begin

if(((SH*10+SL)==8'd59)&&((MH*10+ML)==8'd59))begin

Q1<=7'b0;

bao<=1'b1;end //允许报时

else if((Q1<10*HH+HL)&&(bao)) begin

bao_signal<=~bao_signal; // 产生报时信号

Q1<=Q1+bao_signal; //响一次计数加一

end

else if(Q1==(10*HH+HL)) //报时次数达到整点时数,终止信号

bao<=1'b0;

else

begin

bao_signal<=1'b0;

end

End

(6)、12—24小时切换模块:将24小时切换成12小时,并存入相应的寄存器。如果拨上切换显示档,则切换显示。

相应代码如下:

module hour12_24(HH24,HL24,HH12,HL12);

input [3:0] HH24,HL24;

output [3:0] HH12,HL12;

reg [3:0] HH12,HL12;

always@(HH24 or HL24)begin

if((HH24*10+HL24)<=12)

begin

HH12<=HH24;

HL12<=HL24;

end

else if(((HH24*10+HL24)>=13)&&((HH24*10+HL24)<=19))

begin

HH12<=4'd0;

HL12<=HL24-4'd2;

end

else if(((HH24*10+HL24)>=19)&&((HH24*10+HL24)<=21))

begin

HH12<=4'd0;

HL12<=HL24+4'd8;

end

else

begin

HH12<=HH24-4'd1;

HL12<=HL24-4'd2;

end

end

endmodule

(7)、译码显示模块:

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

代码如下:

module SEG7_LUT(oSEG1,iDIG);

input[3:0]iDIG; //输入要显示的数

output[7:0]oSEG1;

reg[7:0]oSEG;

wire [7:0]oSEG1;

always @(iDIG)

begin

case(iDIG)

4'h0: oSEG = 8'b00111111;

4'h1: oSEG = 8'b00000110;

4'h2: oSEG = 8'b01011011;

4'h3: oSEG = 8'b01001111;

4'h4: oSEG = 8'b01100110;

4'h5: oSEG = 8'b01101101;

4'h6: oSEG = 8'b01111101;

4'h7: oSEG = 8'b00000111;

4'h8: oSEG = 8'b01111111;

4'h9: oSEG = 8'b01101111;

endcase

end

assign oSEG1=~oSEG; //由于是共阴极数码管,低电平显示,所以取反Endmodule

二、LED显示:

module display_LED(s_out,s_int);

input[3:0]s_int;

output[3:0]s_out;

reg[3:0]s_out;

wire [3:0]s_out1;

always @(s_int)

begin

case(s_int)

4'h0:s_out=4'b0000;

4'h1:s_out=4'b0001;

4'h2:s_out=4'b0010;

4'h3:s_out=4'b0011;

4'h4:s_out=4'b0100;

4'h5:s_out=4'b0101;

4'h6:s_out=4'b0110;

4'h7:s_out=4'b0111;

4'h8:s_out=4'b1000;

4'h9:s_out=4'b1001;

endcase

end

assign s_out1=~s_out;

Endmodule

设计过程常见问题:

(1)要注意编写程序的过程中begin和end配对问题,类似于C语言中的括号匹配问题,在编写计数模块时编译不通过,最后检查出是缺少一个end结束符号,经修改后编译通过。(2)Verilog HDL语言编写时的语法问题。在最初的计时模块的程序设计中,将小时、分钟的调节信号放在了另外的一个always语句块中,编译无法通过,经查阅资料,在Verilog HDL 语言的编写中应该注意不同的always语句块不可以对同一个变量进行操作,即一个变量不可以经过两个always语句块操作。将对小时和分钟调节信号的操作与计时放在同一个语句块中,编译通过。

(3)数码管刚开始时显示于实际计数不一样,主要是由译码错误造成的原因。数码管一开始不变化,说明计数没有进行,是由于分钟的输入脉冲信号错误引起。

心得体会

这次的课程设计结束了,在这次的设计中我学会了很多东西。首先是对Verilog HDL语言的设计思想有了深入理解,将这种自顶向下的设计理念运用于实践中,设计多功能数字钟,突出了Verilog HDL作为硬件描述语言的良好可读性和可移植性,对上学期所学的而理论知识有了深刻的理解。

其次是对Verilog HDL语言的语法熟悉,在这次的课程设计中,我学习到很多Verilog HDL语言的语法知识,比如在两个不同的语句块中不能对同一个变量进行操作,比如在用Verilog HDL语言中编写程序时要注意begin和end语句的匹配问题,在使用Verilog HDL语

言时不可以使用中文注释等等。对于这种语言的学习也有了很大的帮助。

最后是设计作品时的设计逻辑和设计思想,在选择不同的系统方案时要综合考虑,选择最优方案。各个模块的实现也要考虑综合情况而制定出最符合实际情况的实现方案,方案间要进行对比、实践,最终确定。

在这次的课程设计中我不仅学习到有关程序编写以及设计方面的逻辑思维,对系统功能的实现也有了较为深入的了解,对各模块的调试等也学习到不少东西,总之,从这次设计中学到很多东西,也巩固了我的理论学习。

附代码:

总模块:

module

clock(clk,reset,MODE,Alarm_ctr,BT2,H12_24,DSH,DSL,DMH,DML,DHH,DHL,dian,bao_signa l,nao_signal);

input clk;//50MHz

input reset,MODE,Alarm_ctr,BT2,H12_24;//复位键,模式选择按钮,闹钟开关档,调节按

钮,12—24小时切换档output [7:0]DMH,DML,DHH,DHL; //4个数码管显示输入信号

output dian,bao_signal,nao_signal; //时分间隔点,报时信号,闹钟信号

output [3:0]DSH,DSL; //秒钟输出信号

wire [3:0] SH,SL,MH,ML,HH,HL;

wire [3:0] LED_mode;

wire [3:0] HH12,HL12,HH24,HL24,MH24,ML24,SH24,SL24;

wire [3:0] set_HH,set_HL,set_MH,set_ML;

wire _1HZ,_10ms,_250ms,_500ms;

wire Keydone1;

wire Keydone2;

wire co1,co11,co111,co2,co22,co222,set_co2;

wire [3:0]mode_flag;

assign dian=1'b0;

devide_f u1(_1HZ,_10ms,_250ms,_500ms,reset,clk); //分频,得到4种不同频率的时钟信号key_press u2(_10ms,MODE,Keydone1); //模式档按钮去抖动

key_press u20(_10ms,BT2,Keydone2); //调节按钮去除抖动

mode u3(Keydone1,mode_flag); //通过模式按钮产生不同模式

second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1); //秒计时

minute u5(co11,reset,MH24,ML24,co2); //分计时

hour u6(co22,reset,HH24,HL24); //小时计时

SEG7_LUT u7(DML,ML); //4个数码管显示

SEG7_LUT u8(DMH,MH);

SEG7_LUT u9(DHL,HL);

SEG7_LUT u10(DHH,HH);

display_LED u11(DSL,SL); //LED灯显示秒或模式灯

display_LED u12(DSH,SH);

mode_choose u13(mode_flag,Keydone2,_250ms,co1,co2,set_co2,co11,co22,co111,co222); //选择模式进行不同操作

hour12_24 u14(HH24,HL24,HH12,HL12); //12--24小时切换

boshi u15(HH,HL,MH,ML,SH,SL,_1HZ,bao_signal); //整点报时

set_naozhong u16(co111,co222,set_HH,set_HL,set_MH,set_ML,set_co2); //设置闹钟时间Naozhong

u17(Alarm_ctr,_500ms,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal); //任意闹钟响应

LUT_mode

u18(mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML, MH,ML,HH,HL);//通过模式选择数码管显示

LED_mode u19(mode_flag,SH24,SL24,SH,SL); 模式选择LED灯显示

Endmodule

分频模块:

module devide_f(_1HZ,_10ms,_250ms,_500ms,nCR,_50MHZ);

input _50MHZ,nCR;

output _1HZ,_10ms,_250ms,_500ms;

reg _1HZ,_10ms,_250ms,_500ms;

reg[31:0]Q1,Q2,Q3,Q4;

always@(posedge _50MHZ or negedge nCR)begin

if(~nCR)

begin

Q1<=32'd0;

Q2<=32'd0;

Q3<=32'd0;

Q4<=32'd0;

end

else if(Q1>=32'd2*******)

begin

Q1<=32'd0;

_1HZ=~_1HZ;

end

else if(Q2>=32'd249999)

begin

Q2<=32'd0;

_10ms=~_10ms;

end

else if(Q4>=32'd6299999)

Q4<=32'd0;

_250ms=~_250ms;

end

else if(Q3>=32'd1*******)

begin

Q3<=32'd0;

_500ms=~_500ms;

end

else begin

Q1<=Q1+1'd1;

Q2<=Q2+1'd1;

Q3<=Q3+1'd1;

Q4<=Q4+1'd1;

end

end

endmodule

计时模块:

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

SL=4'b0;

SH=4'b0;

cnt<=8'b0;

end

else if((mode_flag==4'b0010)&&(!BT2))

begin

SL=4'b0;

SH=4'b0;

cnt<=8'b0;

end

else

begin

if(cnt==8'd59)

cnt<=8'd0;

SH<=4'd0;

SL<=4'd0;

co<=1'b1;

end

else

begin

co=1'b0;

cnt=cnt+8'd1;

SL<=cnt%10;

SH<=cnt/10;

end

end

end

endmodule

module minute (cp,reset,MH,ML,co); input cp ,reset;

output co=1'b0;

output [3:0]ML,MH;

reg[3:0]MH,ML;

reg[7:0]cnt;

reg co;

always@(posedge cp or negedge reset) begin

if(!reset)

begin

ML=4'b0;

MH=4'b0;

cnt<=8'b0;

end

else

begin

if(cnt==8'd59)

begin

cnt<=8'd0;

MH<=4'd0;

ML<=4'd0;

co<=1'b1;

end

else

begin

co=1'b0;

cnt=cnt+8'd1;

ML<=cnt%10;

MH<=cnt/10;

end

end

end

endmodule

module hour (cp,reset,HH,HL);

input cp,reset;

output [3:0]HL,HH;

reg[3:0]HH,HL;

reg[7:0]cnt;

always@(posedge cp or negedge reset) begin

if(!reset)

begin

HL=4'b0;

HH=4'b0;

cnt<=8'b0;

end

else

begin

if(cnt==8'd23)

begin

cnt<=8'd0;

HH<=4'd0;

HL<=4'd0;

end

else

begin

cnt=cnt+8'd1;

HL<=cnt%10;

HH<=cnt/10;

end

end

end

Endmodule

模式选择模块:

module key_press(_10ms,KEY,Keydone); input KEY,_10ms;

output Keydone;

reg dout1,dout2,dout3;

always @(posedge _10ms)

begin

dout1 <= KEY;

dout2 <= dout1;

dout3 <= dout2;

end

assign Keydone = (dout1 | dout2 | dout3); endmodule

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;

if(mode_flag == 4'b0101)

mode_flag = 2'b0;

end

endmodule

module LED_mode (mode_flag,SH24,SL24,SH,SL);

input [3:0] mode_flag;

input [3:0] SH24,SL24;

output [3:0]SH,SL;

reg [3:0]SH,SL;

always@(mode_flag )begin

case (mode_flag)

4'b0000:begin

SH<=SH24;

SL<=SL24;end

4'b0001: begin

SH<=4'b0000;

SL<=4'b0001;end

4'b0010: begin

SH<=4'b0000;

SL<=4'b0010;end

4'b0011: begin

SH<=4'b0000;

SL<=4'b0100;end

4'b0100: begin

SH<=4'b0000;

SL<=4'b1000;end

default : begin

SH<=SH24;

SL<=SL24;end

endcase

end

endmodule

Module LUT_mode

(mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML,MH,ML, HH,HL);

input [3:0] HH12,HL12,HH24,HL24,MH24,ML24;

input [3:0] set_HH,set_HL,set_MH,set_ML;

input [3:0] mode_flag;

input H12_24;

output [3:0] MH,ML,HH,HL;

reg [3:0] MH,ML,HH,HL;

always@(mode_flag or H12_24) begin

case (mode_flag)

4'b0011,

4'b0100: begin

HH<=set_HH;

HL<=set_HL;

MH<=set_MH;

ML<=set_ML; end

default:begin

if(H12_24)begin

HH<=HH12;

HL<=HL12;

MH<=MH24;

ML<=ML24;end

else begin

HH<=HH24;

HL<=HL24;

MH<=MH24;

ML<=ML24;end

end

endcase

end

endmodule

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)begin

case (mode_flag)

4'b0001: begin

if(~BT2) co22<=_250ms;

else begin co22<=co2;

co11<=co1; end

end

4'b0010: begin

if(~BT2) begin co11<=_250ms;

co22<=co2;end

else begin co11<=co1;

co22<=co2; end

end

4'b0011: begin co22<=co2;

co11<=co1;

if(~BT2) co222<=_250ms;

else co222<=set_co2;end

4'b0100: begin co22<=co2;

co11<=co1;

if(~BT2) co111<=_250ms;

else co111<=Vdd; end

default :begin

co11<=co1;

co22<=co2; end

endcase

end

endmodule

闹钟模块:

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

modulenaozhong

(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)begin

if((~signal)&&(Alarm_ctr))begin

if((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;end

end

else begin

signal<=1'b0;

nao_signal<=1'b0;end

end

endmodule

12——24小时切换模块:

module hour12_24(HH24,HL24,HH12,HL12);

input [3:0] HH24,HL24;

output [3:0] HH12,HL12;

reg [3:0] HH12,HL12;

reg flag;

always@(HH24 or HL24)begin

if((HH24*10+HL24)<=12)

begin

HH12<=HH24;

HL12<=HL24;

end

else if(((HH24*10+HL24)>=13)&&((HH24*10+HL24)<=19))

begin

HH12<=4'd0;

HL12<=HL24-4'd2;

end

else if(((HH24*10+HL24)>=19)&&((HH24*10+HL24)<=21))

begin

HH12<=4'd0;

HL12<=HL24+4'd8;

end

else

begin

HH12<=HH24-4'd1;

HL12<=HL24-4'd2;

end

end

endmodule

整点报时模块:

module boshi(HH,HL,MH,ML,SH,SL,_500ms,bao_signal);

input[3:0] HH,HL,MH,ML,SH,SL;

input _500ms;

output bao_signal;

reg bao_signal;

reg [7:0]Q1,Q2;

reg bao;

always@(posedge _500ms)begin

if(((SH*10+SL)==8'd59)&&((MH*10+ML)==8'd59))begin

Q1<=7'b0;

bao<=1'b1;end

else if((Q1<10*HH+HL)&&(bao))

begin

bao_signal<=~bao_signal;

Q1<=Q1+bao_signal;

end

else if(Q1==(10*HH+HL))

bao<=1'b0;

else

begin

bao_signal<=1'b0;

end

end

endmodule

显示模块:

module SEG7_LUT(oSEG1,iDIG);

input[3:0]iDIG;

output[7:0]oSEG1;

reg[7:0]oSEG;

wire [7:0]oSEG1;

always @(iDIG)

begin

case(iDIG)

4'h0: oSEG = 8'b00111111;

4'h1: oSEG = 8'b00000110;

4'h2: oSEG = 8'b01011011;

4'h3: oSEG = 8'b01001111;

4'h4: oSEG = 8'b01100110;

4'h5: oSEG = 8'b01101101;

4'h6: oSEG = 8'b01111101;

4'h7: oSEG = 8'b00000111;

4'h8: oSEG = 8'b01111111;

4'h9: oSEG = 8'b01101111;

4'ha: oSEG = 8'b01110111;

4'hb: oSEG = 8'b01111100;

4'hc: oSEG = 8'b00111001;

4'hd: oSEG = 8'b01011110;

4'he: oSEG = 8'b01111001;

4'hf: oSEG = 8'b01110001; endcase

end

assign oSEG1=~oSEG; endmodule

module display_LED(s_out,s_int); input[3:0]s_int;

output[3:0]s_out;

reg[3:0]s_out;

wire [3:0]s_out1;

always @(s_int)

begin

case(s_int)

4'h0:s_out=4'b0000;

4'h1:s_out=4'b0001;

4'h2:s_out=4'b0010;

4'h3:s_out=4'b0011;

4'h4:s_out=4'b0100;

4'h5:s_out=4'b0101;

4'h6:s_out=4'b0110;

4'h7:s_out=4'b0111;

4'h8:s_out=4'b1000;

4'h9:s_out=4'b1001;

endcase

end

assign s_out1=~s_out; endmodule

数字系统设计与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语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

使用Quartus进行多功能数字钟设计

EDA设计 使用Quartus II进行多功能数字钟设计 院系:机械工程 专业:车辆工程 姓名:张小辉 学号: 指导老师:蒋立平、花汉兵 时间: 2016年5月25日

摘要 本实验是电类综合实验课程作业,需要使用到QuartusⅡ软件,(Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程)。本实验需要完成一个数字钟的设计,进行试验设计和仿真调试,实验目标是实现计时、校时、校分、清零、保持和整点报时等多种基本功能,并下载到SmartSOPC实验系统中进行调试和验证。 关键字:电类综合实验 QuartusⅡ数字钟设计仿真

Abstract This experiment is electric comprehensive experimental course work and need to use the Quartus II software, Quartus II is Altera integrated PLD / FPGA development software, schematic and VHDL, Verilog HDL and AHDL (Altera hardware description language support) etc. a variety of design input form, embedded in its own synthesizer and simulator can complete hardware configuration complete PLD design process from design entry to). The need to complete the design of a digital clock, and debug the design of experiment and simulation, the experimental goal is to achieve timing, school, reset, keep and the whole point timekeeping and other basic functions, and then download to the smartsopc experimental system debugging and validation. Key words: Electric power integrated experiment Quartus II Digital clock design Simulation

数字钟设计报告——数字电路实验报告

. 数字钟设计实验报告 专业:通信工程 :王婧 班级:111041B 学号:111041226 .

数字钟的设计 目录 一、前言 (3) 二、设计目的 (3) 三、设计任务 (3) 四、设计方案 (3) 五、数字钟电路设计原理 (4) (一)设计步骤 (4) (二)数字钟的构成 (4) (三)数字钟的工作原理 (5) 六、总结 (9) 1

一、前言 此次实验是第一次做EDA实验,在学习使用软硬件的过程中,自然遇到很多不懂的问题,在老师的指导和同学们的相互帮助下,我终于解决了实验过程遇到的很多难题,成功的完成了实验,实验结果和预期的结果也是一致的,在这次实验中,我学会了如何使用Quartus II软件,如何分层设计点路,如何对实验程序进行编译和仿真和对程序进行硬件测试。明白了一定要学会看开发板资料以清楚如何给程序的输入输出信号配置管脚。这次实验为我今后对 EDA的进一步学习奠定了更好的理论基础和应用基础。 通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习电子技术基础的意义,也达到了其培养的目的。也明白了一个道理:成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。 2

二、设计目的 1.掌握数字钟的设计方法。 2熟悉集成电路的使用方法。 3通过实训学会数字系统的设计方法; 4通过实训学习元器件的选择及集成电路手册查询方法; 5通过实训掌握电子电路调试及故障排除方法; 6熟悉数字实验箱的使用方法。 三、设计任务 设计一个可以显示星期、时、分、秒的数字钟。 要求: 1、24小时为一个计数周期; 2、具有整点报时功能; 3、定时闹铃(未完成) 四、设计方案 一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生器、“时、 3

verilog数字系统设计教程习题答案

verilog 数字系统设计教程习题答案第二章 HDL 既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互联的结构模块。这意味着利用Verilog 语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计。 2.模块的基本结构由关键词module和endmodule构成。 3.一个复杂电路系统的完整Verilog HDL 模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。 HDL和VHDL乍为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。 5.不是

6.将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。 7.综合工具可以把HDL变成门级网表。这方面Synopsys工具占有较大的优势,它的Design Compile 是作为一个综合的工业标准,它还有另外一个产品叫Behavior Compiler ,可以提供更高级的综合。 另外最近美国又出了一个软件叫Ambit ,据说比Synopsys 的软件更有效,可以综合50万门的电路,速度更快。今年初Ambit 被Cadence 公司收购,为此Cade nee放弃了它原来的综合软件Syn ergy。随着FPGA 设计的规模越来越大,各EDA公司又开发了用于FPGA设计的综合软件,比较有名的有:Sy nopsys 的FPGAExpress,Cade nee 的Syn plity ,Mentor的Leonardo,这三家的FPGA综合软件占了市场的绝大部分。 8.整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件 进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。用于适配,适配将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC Jam格式的 文件 9.在FPGA设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与

数字钟电路pcb设计

¥ 摘要 本设计针对数字钟PCB板设计较为复杂的问题,利用国内知名度较高、应用最广泛的电路辅助设计软件protel99se进行了电路板的设计。本设计介绍了各部分电路的构成及准确完成了数字钟PCB电路板的设计。本设计数字钟原理图分析入手,说明了在平台中完成原理图设计,电气检测,网络表生成,PCB设计的基本操作程序。数字钟的主要电路是由电源电路、显示电路、校时电路、晶体振荡电路组成。PCB是电子元器件的支撑体,是电子元器件电气连接的提供者。PCB的设计是以电路原理图为根据,实现电路设计者所需要的功能。优秀的版图设计可以节约生产成本,达到良好的电路性能和散热性能。 关键词:数字钟;PCB;原理图;芯片 — 【

目录 前言 (1) 第一章@ 第二章绪论 (2) 数字钟的研究背景和意义 (2) 数字钟的发展和趋势 (2) 第二章系统电路的绘制 (3) 电路组成方框图 (3) 电路原理图制作 (3) 原理图环境设置 (4) 绘制原理图 (5) $ 电气规则检查及网络表输出 (7) 原理图分析 (10) 晶体振荡器 (10) 分频器 (11) 计数器电路 (12) 显示和译码电路 (12) 电源电路 (13) 第三章电路板PCB设计 (14) , PCB设计规范 (14) PCB设计流程 (17) 输出光绘文件 (21) PCB制件作 (23)

心得体会 (25) 参考文献 (26) 附图 (27) 附表 (28) "

前言 PCB(Printed Circuit Board),中文名称为印制线路板,简称印制板,是电子工业的重要部件之一。几乎每种电子设备,小到电子手表、计算器,大到计算机,通讯电子设备,军用武器系统,只要有集成电路等电子元器件,为了它们之间的电气互连,都要使用印制板。在较大型的电子产品研究过程中,最基本的成功因素是该产品的印制板的设计、文件编制和制造。印制板的设计和制造质量直接影响到整个产品的质量和成本,甚至导致商业竞争的成败。 Protel系列电子设计软件是在EDA行业中,特别是在PCB设计领域具有多年发展历史的设计界软件,由于其功能强大,操作简单实用,近年来成为国内发展最快。 Protel 99已不是单纯的PCB(印制电路板)设计工具,而是由多个模块组成的系统工具,分别是SCH(原理图)设计、SCH(原理图)仿真、PCB(印制电路板)设计、Auto Router(自动布线器)和FPGA设计等,覆盖了以PCB为核心的整个物理设计。该软件将项目管理方式、原理图和PCB图的双向同步技术、多通道设计、拓朴自动布线以及电路仿真等技术结合在一起,为电路设计提供了强大的支持。 随着计算机事业的发展,在信息化时代,电路设计中的很多工作都可以用计算机来完成。这样就大大减轻了设计人员的体力劳动强度,并且保证了设计的规范性准确性。而Protel99SE技术已越来越为人们所关注,人们利用protel99SE绘制各种原理图,进而制作出各种各样的科技产品已经成为当今世界的一个不可或缺的组成部分,所以说Protel99SE技术已越来越显得重要。

#用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个数码管

多功能数字钟电路设计

多功能数字钟电路设计 一、数字电子钟设计摘要 (2) 二、数字电子钟方案框图 (2) 三、单元电路设计及相关元器件的选择 (3) 1.6进制计数器电路的设计 (3) 2.10进制计数器电路的设计 (4) 3.60进制计数器电路的设计 (4) 4.时间计数器电路的设计 (5) 5.校正电路的设计 (6) 6.时钟电路的设计 (7) 7.整点报时电路设计 (8) 8. 译码驱动及单元显示电路 (9) 四、系统电路总图及原理 (9) 五、经验体会 (10) 六、参考文献 (10) 附录A:系统电路原理图 附录B:元器件清单

一、数字电子钟设计摘要 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。且由于数字钟包括组合逻辑电路和时叙电路。通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。 二、数字电子钟方案框图 图1 数字电子钟方案框图

三、单元电路设计和元器件的选择 1. 6进制计数器电路的设计 现要设计一个6进制的计数器,采用一片中规模集成电路74LS90N芯片,先接成十进制,再转换成6进制,利用“反馈清零”的方法即可实现6进制计数,如图2所示。 图2

2. 10进制电路设计 图3 3. 60 进数器电路的设计 “秒”计数器与“分”计数器都是六十进制,它由一级十进制计数器和一级六进制计数器连接而成,如图4所示,采用两片中规模集成电路74LS90N串接起来构成“秒”“分”计数器。

《verilog_数字系统设计课程》(第二版)思考题答案

Verilog数字系统设计教程思考题答案 绪论 1.什么是信号处理电路?它通常由哪两大部分组成? 信号处理电路是进行一些复杂的数字运算和数据处理,并且又有实时响应要求的电路。它通常有高速数据通道接口和高速算法电路两大部分组成。 2.为什么要设计专用的信号处理电路? 因为有的数字信号处理对时间的要求非常苛刻,以至于用高速的通用处理器也无法在规定的时间内完成必要的运算。通用微处理器芯片是为一般目的而设计的,运算的步骤必须通过程序编译后生成的机器码指令加载到存储器中,然后在微处理器芯片控制下,按时钟的节拍,逐条取出指令分析指令和执行指令,直到程序的结束。微处理器芯片中的内部总线和运算部件也是为通用目的而设计,即使是专为信号处理而设计的通用微处理器,因为它的通用性也不可能为某一特殊的算法来设计一系列的专用的运算电路而且其内部总线的宽度也不能随便的改变,只有通过改变程序,才能实现这个特殊的算法,因而其算法速度也受到限制所以要设计专用的信号处理电路。 3.什么是实时处理系统? 实时处理系统是具有实时响应的处理系统。 4.为什么要用硬件描述语言来设计复杂的算法逻辑电路? 因为现代复杂数字逻辑系统的设计都是借助于EDA工具完成的,无论电路系统的仿真和综合都需要掌握硬件描述语言。 5.能不能完全用C语言来代替硬件描述语言进行算法逻辑电路的设计? 不能,因为基础算法的描述和验证通常用C语言来做。如果要设计一个专用的电路来进行这种对速度有要求的实时数据处理,除了以上C语言外,还须编写硬件描述语言程序进行仿真以便从电路结构上保证算法能在规定的时间内完成,并能通过与前端和后端的设备接口正确无误地交换数据。 6.为什么在算法逻辑电路的设计中需要用C语言和硬件描述语言配合使用来提 高设计效率? 首先C语言很灵活,查错功能强,还可以通过PLI编写自己的系统任务,并直接与硬件仿真器结合使用。C语言是目前世界上应用最为广泛的一种编程语言,因而C程序的设计环境比Verilog HDL更完整,此外,C语言有可靠地编译环境,语法完备,缺陷缺少,应用于许多的领域。比较起来,Verilog语言只是针对硬件描述的,在别处使用并不方便。而用Verilog的仿真,综合,查错等大部分软件都是商业软件,与C语言相比缺乏长期大量的使用,可靠性较差,亦有很多缺陷。所以只有在C语言的配合使用下,Verilog才能更好地发挥作用。C 语言与Verilog HDL语言相辅相成,互相配合使用。这就是即利用C语言的完整性又要结合Verilog对硬件描述的精确性,来更快更好地设计出符合性能要求的

数字电路时钟设计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音响结束时刻为整点 //固定时刻定时

多功能数字钟电路设计

课程设计任务书 学生姓名: XXX 专业班级: 指导教师:工作单位: 题目: 多功能数字钟电路设计 初始条件:74LS390,74LS48,数码显示器BS202各6片,74LS00 3片,74LS04,74LS08各 1片,电阻若干,电容,开关各2个,蜂鸣器1个,导线若干。 要求完成的主要任务: 用中、小规模集成电路设计一台能显示日、时、分秒的数字电子钟,要求如下: 1.由晶振电路产生1HZ标准秒信号。 2.秒、分为00-59六十进制计数器。 3.时为00-23二十四进制计数器。 4.可手动校正:能分别进行秒、分、时的校正。只要将开关置于手动位置。可分别对秒、分、时进行连续脉冲输入调整。 5.整点报时。整点报时电路要求在每个整点前鸣叫五次低音(500HZ),整点时再鸣叫一次高音(1000HZ)。 时间安排: 第20周理论设计、实验室安装调试,地点:鉴主15楼通信实验室一 指导教师签名:年月日 系主任(或责任教师)签名:年月日

多功能数字钟电路设计 摘要 (1) Abstract (2) 1系统原理框图 (3) 2方案设计与论证 (4) 2.1时间脉冲产生电路 (4) 2.2分频器电路 (6) 2.3时间计数器电路 (7) 2.4译码驱动及显示单元电路 (8) 2.5校时电路 (8) 2.6报时电路 (10) 3单元电路的设计 (12) 3.1时间脉冲产生电路的设计 (12) 3.2计数电路的设计 (12) 3.2.1 60进制计数器的设计 (12) 3.2.2 24进制计数器的设计 (13) 3.3译码及驱动显示电路 (14) 3.4 校时电路的设计 (14) 3.5 报时电路 (16) 3.6电路总图 (17) 4仿真结果及分析 (18) 4.1时钟结果仿真 (18) 4.2 秒钟个位时序图 (18) 4.3报时电路时序图 (19) 4.4测试结果分析 (19) 5心得与体会 (20) 6参考文献 (21) 附录1原件清单 (22) 附录2部分芯片引脚图与功能表 (23) 74HC390引脚图与功能表 (23)

数字钟课程设计实验报告

《电子技术课程设计报告》 教学院:电气与电子信息工程学院 专业班级: xx级电子信息工程(x)班 学号: xxxxxxxxxxxx 学生:坏水 指导教师: xxxxxxxxxxxx 时间: 2011.10.10~10.23 地点:电子技术实验室

课程设计成绩评定表

电子技术课程设计任务书 2011~2012学年第一学期 学生:坏水专业班级: xx电信本x班 指导教师: xxxxxxxxx 工作部门:电气与电子信息工程学院 一、课程设计题目:多功能数字钟电路的设计/直流稳压电源的设计 二、课程设计容(含技术指标): ①拟定多功能数字钟和直流稳压电源的组成框图,要求实现电路的基本功能, 使用的器件少,成本低; ②画出数字钟和直流稳压电源的主体电路逻辑图; ③测试多功能数字钟的逻辑功能,同时满足基本功能与扩展功能的要求; ④设计并安装各单元电路,要求布线整齐、美观,便于级联与调试; 三、进度安排 四、基本要求 1.基本功能:要求设计出+5V的直流稳压电源。数字钟要求以数字形式显示时、分、秒的时间。小时计数器的计时要求为“12翻1”,要求具有手动校时功能。

2.扩展功能:定时控制,其时间自定;仿广播电台正点报时,自动报整点时数或触摸报整点时数(主要体现在理论知识上进行电路设计)。 (一)实训题目:直流稳压电源和多功能数字钟。 (二)实训目的: 1、巩固和加深学生对模拟电子技术,数字逻辑电路等课程基本知识的理解,综 合运用课程中所学到的理论知识去独立完成一个实际课题。 2、根据课程需要,通过查阅手册和文献资料,培养学生独立分析和解决实际问 题的能力。 3、通过电路方案的分析、论证和比较,设计计算和选用元气件,通过电路组装, 调试和检测环节,掌握电路的分析方法和设计方法。 4、熟用常用电子元气件的类型和特性,并掌握合理选用原则。 5、掌握电路图、PCB图的设计方法,学会电路的安装与调试。 6、掌握常用仪器、仪表的正确使用方法,学会电路整机指标的测试方法。(三)实训要求 1、数字钟的功能要求:准确计时,以数字形式显示时、分、秒的时间,小时时 要求为“12翻1”,分和秒的计时要求为60进位,要有校正时间电路。 2、直流稳压电源的功能要求:输入220V交流电压,输出+5V直流电压。 一、整体方案原理框图 1、直流稳压电源 直流稳压电源主要包括4个部分,电源变压器,整流电路,滤波器,稳压电路。 2、数字钟 设计框图

数字钟的电路设计

题目_________数字钟的设计___________ 班级_______机设12(4)班____________ 学号___________201210310422_________ 姓名___________卞旺武_______________ 指导____________鲁老师______________ 时间__________2014.6.16--2014.6.19____ 景德镇陶瓷学院

电工电子技术课程设计任务书

目录 1、数字钟的总体方案与原理说明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 2、555定时器构成的多谐振荡器电路图. . . . . . . . . . . . . . . . . . .a 3、秒、时计数器电路图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .b 4、译码器芯片与逻辑符号图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c 5、秒、分、时校时电路原理图. . . . . . . . . . . . . . . . . . . . . . . . . . .d 6、总体电路原理相关说明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .e 7、总体电路原理图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f 8、元件清单;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .g 9、参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .h 10、设计心得体会. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i

基于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)按键输入缓存,键盘消抖设计;

推荐-基于多功能数字钟的课程设计报告 精品

EDA技术课程设计 多功能数字钟 学院:城市学院 专业、班级: 姓名: 指导老师: 20XX年12月

目录 1、设计任务与要求 (2) 2、总体框图 (2) 3、选择器件 (2) 4、功能模块 (3) (1)时钟记数模块 (3) (2)整点报时驱动信号产生模块 (6) (3)八段共阴扫描数码管的片选驱动信号输出模块 (7) (4)驱动八段字形译码输出模块 (8) (5)高3位数和低4位数并置输出模块 (9) 5、总体设计电路图 (10) (1)仿真图 (10) (2)电路图 (10) 6、设计心得体会 (11)

一、设计任务与要求 1、具有时、分、秒记数显示功能,以24小时循环计时。 2、要求数字钟具有清零、调节小时、分钟功能。 3、具有整点报时,整点报时的同时输出喇叭有音乐响起。 二、总体框图 多功能数字钟总体框图如下图所示。它由时钟记数模块(包括hour、minute、second 三个小模块)、驱动8位八段共阴扫描数码管的片选驱动信号输出模块(seltime)、驱动八段字形译码输出模块(deled)、整点报时驱动信号产生模块(alart)。 系统总体框图 三、选择器件 网络线若干、共阴八段数码管4个、蜂鸣器、hour(24进制记数器)、minute(60进制记数器)、second(60进制记数器)、alert(整点报时驱动信号产生模块)、 seltime(驱动4位八段共阴扫描数码管的片选 驱动信号输出模块)、deled(驱动八段字形译 码输出模块)。

四、功能模块 多功能数字钟中的时钟记数模块、驱动8位八段共阴扫描数码管的片选驱动信号输出模块、驱动八段字形译码输出模块、整点报时驱动信号产生模块。 (1) 时钟记数模块: <1.1>该模块的功能是:在时钟信号(CLK)的作用下可以生成波形;在清零信号(RESET)作用下,即可清零。 VHDL程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour24 is port( clk: in std_logic; reset:instd_logic; qh:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0); ql:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); end hour24; architecture behav of hour24 is begin process(reset,clk) begin if reset='1' then qh<="000"; ql<="0000"; elsif(clk'event and clk='1') then if (qh<2) then if (ql=9) then ql<="0000"; qh<=qh + 1; else ql<=ql+1; end if; else if (ql=3) then ql<="0000"; qh<="000"; else ql<=ql+1; end if; end if; end if; end process; end behav; 仿真波形如下:

fpga数字钟课程设计报告

课程设计报告 设计题目:基于FPGA的数字钟设计 班级:电子信息工程1301 学号:20133638 姓名:王一丁 指导教师:李世平 设计时间:2016年1月

摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟

目录 摘要 1 课程设计目的 2 课程设计内容及要求 2.1 设计任务 2.2 设计要求 3 VHDL程序设计 3.1方案论证 3.2 系统结构框图 3.3设计思路与方法 3.3.1 状态控制模块 3.3.2 时分秒模块 3.3.3 年月日模块 3.3.4 显示模块 3.3.5脉冲产生模块 3.3.6 扬声器与闹钟模块 3.4 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献

1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。 2 课程设计内容及要求 2.1 设计任务 (1)6个数字显示器显示时分秒,setpin按键产生一个脉冲,显示切换为年月日。 (2)第二个脉冲可预置年份,第三个脉冲可以预置月份,依次第四、 五、六、七个脉冲到来时分别可以预置时期、时、分、秒,第八个脉冲到来后预置结束正常从左显示时分秒。 (3)up为高时,upclk有脉冲到达时,预置位加一,否则减一。 2.2 设计要求 (1)在基本功能的基础上,闹钟在整点进行报时,产生一定时长的高电平。 (2)实现闹钟功能,可对闹钟时间进行预置,当达到预置时间时进行报时。

多功能数字钟电路的设计与制作

多功能数字钟电路的设计与制作 一、设计任务与要求 设计和制作一个多功能数字钟,要求能准确计时并以数字形式显示时、分、秒的时间,能校正时间,准点报时。 二、方案设计与论证 1.数字钟设计原理 数字电子钟一般由振荡器、译码器、显示器等几部分电路组成,这些电路都是数字电路中应用最广的基本电路。振荡器产生的1Hz的方波,作为秒信号。秒信号送入计数器进行计数,并把累计的结果以“时”、“分”、“秒”的数字显示出来。“秒”的计数、显示由两级计数器和译码器组成的六十进制计数电路实现;“分”的计数、显示电路与“秒”的相同;“时”的计数、显示由两级计数器和译码器组成的二十四进制计数电路实现。所有计时结果由七段数码管显示器显示。用4个与非门构成调时电路,通过改变方波的频率,进行调时。最后用与非门和发光二极管构成整点显示部分。

2.总体结构框图如下: 图14 总体框图 三、单元电路设计与参数计算 1.脉冲产生电路 图15 晶振振荡器原理图 图16 555定时器脉冲产生电路原理图 振荡器可由晶振组成(如图15),也可以由555定时器组成。图16是由555定时器构成的1HZ 的自激振荡器,其原理是: 第一暂态2、6端电位为Vcc 3 1 ,则输出为高电平,三极管不导通,电容C 充电,此 时2、6端电位上升。当上升至大于Vcc 3 2 时,输出为低电平,三极管导通,电容C 放电, 11 21 C 1 R C 2 R O

此时2、6端电位下降,下降至Vcc 3 1 时,输出高电平,以此循环。根据公式C R R f )2(43.121+≈ 得,此时频率为0.991。 图17 555定时器波形关系 图18 555定时器产生1Hz 方波原理图 2.时间计数电路 图19 74LS161引脚图 74LS161功能表 v V 2 3 V 1 3 v U 1 74L S 161D Q A 14Q B 13Q C 12Q D 11R C O 15A 3B 4C 5D 6 E N P 7E N T 10 ~L O A D 9~C L R 1 C L K 2

相关主题
文本预览
相关文档 最新文档