当前位置:文档之家› 多功能时钟设计verilog

多功能时钟设计verilog

多功能时钟设计verilog
多功能时钟设计verilog

可编程逻辑器件及其应用

设计报告

姓名:wangkeqin

院系:电信学部

学号:**********

日期:2012-04-09

多功能数字钟设计

一、设计内容及要求

?用Verilog HDL设计一个多功能数字钟

?基本功能描述:

1.时钟功能:包括时、分、秒的显示;

2.定时与闹钟功能:能在设定的时间发出闹铃音;

3.校时功能:能非常方便地对小时、分钟和秒进行手动调整以校准时间;

4.整点报时功能:每逢整点,产生“嘀嘀嘀嘀--嘟”,四短一长的报时音。

二、仿真环境说明

用Verilog在Altera公司的Quartus2软件环境下编写RTL代码,并进行综合,行为仿真。时序仿真采用Mentor公司旗下的ModelsimSE-6.1f软件。Modelsim 软件是业界最著名的波形仿真软件,仿真效果比Quartus2下编写波形文件仿真效果要好很多,而且仿真相当简单,只不过要编写测试向量(testbench),有点麻烦。

三、系统框图与说明

Figure1系统框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。

2. 秒计数器计到59后,下一秒到来时,秒计时器满60,接着清零后向分计数器进位;同样分计数器计满60后向小时计数器进位;小时计数器按照“24进制”

规律计数,每当小时计到23小时时,当分计数和秒计数分别59,59时,即到23小时59分,59秒时候,时分秒全部清零,从新开始计数。

3. 计数器的输出经译码器送显示器,显示器用6个数码管表示,每两个数码管分别表示小时,分钟,秒钟。每个数码管用BCD码表示。

四、设计步骤

(一)列写多功能数字钟设计结构图

(二)在QuartusП软件下编写Verilog代码

(三)在QuartusП环境下进行综合

Figure2综合结果

从Fig.2可以看出,该设计采用Altera公司CycloneП系列下的EP2C35F672C8芯片。从图中可以看出,采用了162个逻辑单元,其中组合逻辑147个,总共的寄存器数为102个。

Figure3RTL门级电路1

Figure4RTL门级电路2

Figure5RTL门级电路3

Figure6RTL门级电路4

如图Fig.3、Fig.4、Fig.5、Fig.6所示为综合生成的RTL门级电路,由与设计比较复杂,模块比较多,生成的RTL电路也比较复杂。不好分析RTL电路是否正确,可以通过时序仿真来分析设计的正确性。

(四)用Modelsim软件进行时序仿真

1.建立工程文件,编写multiclock代码

2.编写testbench测试向量

3.进行波形仿真

五、仿真波形及其结果分析

(一)整点报时

Figure7整点报时仿真波形

如图Fig.7所示,时钟能正常工作,9点59分55秒开始,将要到十点时候,产生四短一长的“滴,滴,滴,滴,嘟”报时音。该功能仿真正确。

(二)设置闹钟

Figure8设置闹钟时间为10点28分

如图Fig.8所示,设计闹钟时间为10点28分整。从图中可以看出,闹钟时间到达时候,alert闹钟信号报警,产生20秒的报警音。当按住change 信号时,即change信号为高电平时,屏蔽闹钟音。当28分08秒时,change 信号为高电平,则屏蔽掉20秒的闹钟音。

(三)校准时间

1.调整到固定时刻

Figure9调整到9点32分仿真波形

如图Fig.9所示,校准到9点32分,校准时、分刻度时,秒刻度屏蔽,之后继续走。从图中可以看出,校准分刻度时,LD_min高电平有效,LD_alert高电平有效,时针刻度从10变为9,分针刻度变为32,能正确满足校时功能。

2.调整分钟刻度

Figure10调整分钟仿真波形

如图Fig.10所示,调整分钟刻度,LD_min为高电平时,每按一次change 键,分钟刻度加 1。

3.调整时针刻度

Figure11逐次调整时针仿真波形

如图Fig.11所示,LD_hour为高电平,LD_min为低电平时,每按一次change 键,时针刻度加1。从图中可以看出,时针刻度随着change信号的变化,逐次从00变为09。

Figure12连续调整时针仿真波形

如图Fig.12所示,LD_hour为高电平,LD_min为低电平时,连续按change 键,即change一直为高电平时,时针信号hour连续加一。从图中可以看出,hour 信号从01一直加到09.

六、实验总结

1.通过本次课程设计的学习,能够熟练地掌握了verilog编程的方法技巧,并能够运用到实际。设计出多功能时钟电路。对设计的多功能时钟电路能满足设计要求,基本满意。

2.本次多功能数字钟设计,花费不少时间和精力,同时也收获了很多,学会了使用Verilog语言编程仿真电路实验,掌握了可编程逻辑器件的应用开发技术,熟悉了Quartus2软件的使用,并能够运用Modelsim软件对电路进行时序仿真,会编写测试向量,仿真得到自己预期的结果。

3.本次多功能数字钟设计实验,对于Verilog语言的学习与应用,是一次很好的锻炼机会。以前自己也学过,但是不是很系统,只是了解个大概,这次设计基本上能够熟练运用。在设计过程中,汲取了诸多经验教训,深刻体会到一个小小的错误可能会给整个程序所带来的严重后果。所以,在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。

4.由于个人能力有限,本次设计还有很多地方需要改善,以后会更加努力的学习。但本次设计实验已使我对Verilog语言产生了浓厚的兴趣,在以后的学习生活中会主动去了解更多有关这方面的知识及其在实践中的应用。

5. 本次设计中遇到了很多问题,得到了很多同学的帮助,在此特别感谢我们教研室的刘洋同学、唐伟同学和殷存禄同学,没有他们的帮助,我不可能把设计做的这样好。在此再次表示感谢!

附录

(一)多功能时钟RTL代码:

多功能时钟整体模块代码:

module multiclock (clk,,clk_1k,mode,change,turn,

rst,alert,hour,min,sec,LD_alert,LD_hour,LD_min);

input clk; //标准时钟信号,本例中频率为4Hz

input clk_1k; //产生闹铃音、报时音的时钟信号,本例中其频率为1024Hz

input mode; //功能控制信号:0表示计时功能,1表示闹钟功能,2表示手动校时功能。input change; //按接键,手动调整时,每按一次,计数器加1,如果长按,则连续快速加1,

//用于快速调试和定时。

input turn; //按接键,在手动校时功能时候,选择是调整小时还是分钟,

//如果长按住键,还可以是秒信号清零,用于精确调时间。

input rst; //使能信号,高电平有效

output alert; // 输出到扬声器的信号,用于产生闹铃音和报时音;

//闹铃音为持续20 秒的急促的“嘀嘀嘀”音,若按住“change”键,

//则可屏蔽该音;整点报时音为“嘀嘀嘀嘀—嘟”四短一长音;

output LD_alert; //接发光二极管,指示是否设置了闹钟功能;

output LD_hour; //接发光二极管,指示当前调整的是小时信号;

output LD_min; //接发光二极管,指示当前调整的是分钟信号

output[7:0] hour,min,sec; //分别输出并显示时、分、秒信号,

//皆采用BCD 码计数,分别驱动6 个数码管显示时间;

reg[7:0] hour,min,sec,hour1,min1,sec1,ahour,amin;

reg[1:0] m,num1,num2,num3,num4;

reg fm;

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,posedge rst)

begin

if(rst)

begin

clk_2Hz <= 0;

sound <= 2'b00;

ear <= 0;

end

else

begin

clk_2Hz<=~clk_2Hz;

if(sound==3)

begin

sound<=0;

ear<=1; //ear 信号用于产生或屏蔽声音

end

else

begin

sound<=sound+1;

ear<=0;

end

end

end

always @(posedge clk_2Hz,posedge rst)

begin

if(rst)

clk_1Hz <= 0;

else

clk_1Hz<=~clk_1Hz; //由4Hz 的输入时钟产生1Hz 的时基信号

end

always @(posedge mode,posedge rst)//mode 信号控制系统在三种功能间转换begin

if(rst)

m <= 2'b00;

else

begin

if(m==2) m<=0;

else m<=m+1;

end

end

always @(posedge turn,posedge rst) //turn的上升沿有效

begin

if(rst)

fm <= 1'b0;

else

fm<=~fm; //fm取反

end

always @(posedge clk,posedge rst)//该进程产生count1,count2,counta,countb 四个信号begin

if(rst)

begin

count1 <= 0;

count2 <= 0;

counta <= 0;

countb <= 0;

LD_hour <= 0;

LD_min <= 0;

end

else

begin

case(m) //mode产生的三个控制信号

2: begin //手动校时

if(fm)

begin

count1<=change;

{LD_min,LD_hour}<=2; //校准分钟

end

else

begin

counta<=change;

{LD_min,LD_hour}<=1; //校准小时

end

{count2,countb}<=0; //将调整闹钟的控制信号置零

end

1: begin //设置闹钟

if(fm)

begin

count2<=change;

{LD_min,LD_hour}<=2; //显示设置分钟

end

else

begin

countb<=change;

{LD_min,LD_hour}<=1; //显示设置小时

end

{count1,counta}<=2'b00; //将手动校时的控制信号置零

end

default: {count1,count2,counta,countb,LD_min,LD_hour}<=0;

//所有信号控制校时和设置闹钟的信号都清零,指示灯置0,计时开始。

endcase

end

end

always @(negedge clk,posedge rst) //下降沿有效

//如果长时间按下“change”键,则生成“num1”信号用于连续快速加1 begin

if(rst)

begin

num1 <= 2'b00;

loop1 <= 2'b00;

end

else

begin

if(count2) //调整闹钟的控制信号-调整分钟

begin

if(loop1==3)

num1<=1; //num1=1时候,快速加1

else

begin

loop1<=loop1+1;

num1<=0; //num1=0时,逐个加1

end

end

else

begin

loop1<=0;

num1<=0;

end

end

end

always @(negedge clk,posedge rst) //产生num2 信号

begin

if(rst)

begin

num2 <= 2'b00;

loop2 <= 2'b00;

end

else

if(countb) //调整闹钟的控制信号-调整小时

begin

if(loop2==3)

num2<=1; //num2=1时,快速加1

else

begin

loop2<=loop2+1;

num2<=0; //逐个加1

end

end

else

begin

loop2<=0;

num2<=0;

end

end

always @(negedge clk,posedge rst) //产生num3信号begin

if(rst)

begin

num3 <= 2'b00;

loop3 <= 2'b00;

end

else

if(count1) //手动校时控制信号-校准分钟

begin

if(loop3==3)

num3<=1; //num3=1快速加1

else

begin

loop3<=loop3+1;

num3<=0;//逐个加1

end

end

else

begin

loop3<=0;

num3<=0;

end

end

always @(negedge clk,posedge rst) //产生num4信号begin

if(rst)

begin

num4 <= 2'b00;

loop4 <= 2'b00;

end

else

if(counta) //手动校时控制信号-校准小时

begin

if(loop4==3)

num4<=1;//num4=1时,快速加1

else

begin

loop4<=loop4+1;

num4<=0; //逐个加1

end

end

else

begin

loop4<=0;

num4<=0;

end

end

assign 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,posedge rst) //秒计时和秒调整进程

begin

if(rst)

begin

sec1 <= 8'h00;

minclk<=0;

end

else

if(!(sec1^8'h59)|turn&(!m))//如果秒表的位为59或是trun为1,m为0

begin

sec1<=0;

if(!(turn&(!m))) //如果turn信号为0,m(mode)信号为1

minclk<=1;

end

else //按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时begin

if(sec1[3:0]==4'b1001) //秒位的底4位为9

begin

sec1[3:0]<=4'b0000;//低四位清零,高四位加1

sec1[7:4]<=sec1[7:4]+1;

end

else

sec1[3:0]<=sec1[3:0]+1; //低四位加1

minclk<=0; //分钟信号为零

end

end

assign m_clk=minclk||count1; //产生m_clk时钟信号

always @(posedge ct1,posedge rst)//分计时和分调整进程

begin

if(rst)

begin

min1[7:0]<=8'h00;

hclk<=0;

end

else

begin

if(min1==8'h59) //分钟信号为59时候,分清零,时信号加1

begin

min1<=0;

hclk<=1;

end

else

begin

if(min1[3:0]==9) //分钟的底四位为9

begin

min1[3:0]<=0; //分钟的底四位清零,高四位加1

min1[7:4]<=min1[7:4]+1;

end

else //低四位加1

min1[3:0]<=min1[3:0]+1;

hclk<=0; //时钟信号清零

end

end

end

assign h_clk=hclk||counta;//产生h_clk时钟信号

always @(posedge cta,posedge rst)//小时计时和小时调整进程

begin

if(rst)

begin

hour1[7:0]<=8'h00;

end

else

begin

if(hour1==8'h23) //小时位为23时,清零

hour1<=0;

else if(hour1[3:0]==9) //底四位为9,高四位加1,底四位清零

begin

hour1[7:4]<=hour1[7:4]+1;

hour1[3:0]<=0;

end

else

hour1[3:0]<=hour1[3:0]+1; //底四位加1

end

end

always @(posedge ct2,posedge rst) //闹钟定时功能中的分钟调节进程begin

if(rst)

begin

amin[7:0] <= 0;

end

else

begin

if(amin==8'h59)//分钟位为59时,清零,从开始计数

amin<=0;

else if(amin[3:0]==9)//分钟底四位为9,第四位清零,高四位加1 begin

amin[3:0]<=0;

amin[7:4]<=amin[7:4]+1;

end

else

amin[3:0]<=amin[3:0]+1; //底四位加1

end

end

always @(posedge ctb,posedge rst) //闹钟定时功能中的小时调节进程begin

if(rst)

begin

ahour[7:0] <= 7'b00;

end

else

begin

if(ahour==8'h23) //小时位为23,清零重新计数

ahour<=0;

else if(ahour[3:0]==9)//小时底四位为9,底四位清零,高四位加1 begin

ahour[3:0]<=0;

ahour[7:4]<=ahour[7:4]+1;

end

else

ahour[3:0]<=ahour[3:0]+1;//底四位加1

end

end

always @ (posedge clk_1k,posedge rst)//闹铃功能

begin

if(rst)

begin

alert1 <= 0;

end

else

begin

if((min1==amin)&&(hour1==ahour)&&(amin|ahour)&&(!change))

//若按住“change”键不放,可屏蔽闹铃音

begin

if(sec1<8'h20) alert1<=1; //控制闹铃的时间长短,20秒

else alert1 <= 0;

end

else alert1 <= 0;

end

end

always @ (posedge clk,posedge rst)//时、分、秒的显示控制

begin

if(rst)

begin

hour <= 8'h00;

min <= 8'h00;

sec <= 8'h00;

end

else

case(m)

2'b00: begin//计时状态下的时、分、秒显示

hour<=hour1; min<=min1; sec<=sec1;

end

2'b01: begin//定时状态下的时、分、秒显示

hour<=ahour; min<=amin; sec<=8'hzz;

end

2'b10: begin //校时状态下的时、分、秒显示

hour<=hour1; min<=min1; sec<=8'hzz;

end

endcase

end

assign LD_alert=(ahour|amin)?1:0;//指示是否进行了闹铃定时

assign alert=((alert1)?clk_1k&clk:0)|alert2; //产生闹铃音或整点报时音

always @ (posedge clk_1k,posedge rst)//产生整点报时信号alert2

begin

if(rst)

begin

alert2 <= 0;

end

else

begin

if((min1==8'h59)&&(sec1>8'h54)||(!(min1|sec1)))

if(sec1>8'h54)

alert2<=ear&clk_1k; //产生短音

else

alert2<=!ear&clk_1k;//产生长音

else alert2<=0;

end

end

endmodule

(二)测试向量代码:

//测试向量

`include "multiclock.v"

`timescale 1ns/100ps

`define half_clock_time 1250

`define clock_time 2500

// the macro of set time ( hour: min)

`define set_hour 9

`define set_min 32

// the macro of alarm time (hour :min)

`define alarm_hour 10

`define alarm_min 28

//define the finish time

`define finish_time 200000000

module clock_tb;

reg clk;

reg clk_1k;

reg mode;

reg change;

reg turn;

reg rst;

wire alert;

wire LD_alert;

wire LD_hour;

wire LD_min;

wire [7:0] hour,min,sec;

reg[7:0] count;//define loop variable only used in this file

initial

begin

#0 clk <= 1'b0;

end

initial

begin

#0 clk_1k <= 1'b0;

end

always

begin

# `half_clock_time clk =~ clk ;

end

always

begin

#5 clk_1k =~ clk_1k;

end

initial

begin

# 0 rst <= 0;

# `clock_time rst <= 1;

# `clock_time rst <= 0;

end

initial

begin

#10 mode <= 0;

#10 change <= 0;

#10 turn <= 0;

end

initial

begin

/*set the current time is "`set_hour : `set_min : 00 "*/

//two posedge of mode to change the state to adjust mode(m == 2) #(`clock_time -10) mode<=0;

#(2*`clock_time) mode<=1;

#(`clock_time ) mode<=0;

#(`clock_time ) mode<=1;

#(`clock_time ) mode<=0;

//adjust the hour,default state ,the adjust works on hour

for(count=0;count<`set_hour;count=count+1)

begin

#(`clock_time ) change<=1;

#(`clock_time ) change<=0;

end

//change the adjust mode to min

#(`clock_time ) turn <= 1;

#(`clock_time ) turn <= 0;

for(count=0;count<`set_min;count=count+1)

begin

#(`clock_time ) change<=1;

#(`clock_time ) change<=0;

end

//change the mode to normal clock mode and then reset the second bit

#(`clock_time ) mode<=1;

#(`clock_time ) mode<=0;

//long push to make the second zero ,must remain four `clock time ,because its sensitive list is clk_1Hz,

// but the clk's frequency is 4hz

#(`clock_time ) turn <= 1;

#(4*`clock_time ) turn <= 0;

#(9*`clock_time ) turn <= 0;//nop remain here and don't do anything

/*set the alarm time to */

//change the mode to set alarm time

#(`clock_time ) mode<=1;

#(`clock_time ) mode<=0;

//set the alarm hour,longe push change to make it fast increase,more than 3 clock_time is considered as long push ,but the firs

#(`clock_time ) change<=1;

#((2+`alarm_hour)*`clock_time ) change<=0;

//change the state to set the alarm min

#(`clock_time ) turn <= 1;

#(4*`clock_time ) turn <= 0;

#(2*`clock_time ) turn <= 0;//nop ,remain here to delay the time

for(count=0;count<`alarm_min;count=count+1)

begin

#(`clock_time ) change<=1;

#(`clock_time ) change<=0;

end

#(`clock_time *3) change<=0;//nop remain here and don't do anything

//change the mode to normal clock

#(`clock_time ) mode<=1;

#(`clock_time ) mode<=0;

多功能数字时钟的功能和特点

多功能数字时钟的功能和特点: 1. 上电1s复位功能,手动复位功能,复位会给出1s振铃信号; 2. 基本时钟计时功能; 3. 闹钟功能; 4. 计数器倒计时功能; 5. 整点报时功能; 6. 闹钟具有懒人模式功能,如果启动懒人模式,闹钟振铃每隔一分钟就响一次,如果不启动懒人模式,闹钟振铃响一分钟就停止; 7. 任意键关闭闹钟振铃功能(与懒人模式有关); 8. 计数器自动装载功能,可实现00h:00m:15s---99h:59m:59s的循环定时振铃; 9. 计数器手动启动功能; 10. 一键启动或关闭闹钟或者计数器功能; 11. 自动检验时钟、闹钟、和计数器设置数字的正确性,不正确的数字不能被输入系统; 12. 液晶LCD1602显示,可同时查看时间和闹钟设置时间或者计数器时间; 13. 菜单设置功能,人机界面友好; 14. 30秒不操作,自动退出菜单功能; 15. 8个基本按键:“↑”、“↓”、“←”、“→”、“确定”、“取消”、“闹钟开关alarm_sw”和“计数器开关cntalm_sw”完成全部操作; 16. 可以插上4×4小键盘进行快速操作; 17. 键盘自动消抖; 18. 4×4小键盘快捷键; 19. 用4×4小键盘设置时间或闹钟或计数器数字时,正确设置一位数字后,自动移到下一位数字进行设置; 20. “↑”、“↓”键连击功能实现快速数字设定; 21. 时钟后台计时功能,查看菜单不会影响时钟计时。 22. 各种振铃声音不同,容易分辨,声音洪亮(要换成脉冲型的蜂鸣器)。 ************************************************************************ 多功能数字时钟的使用方法: 一、时钟的设定和显示: 1. 正常显示时间的界面下,液晶上第一行显示当前时钟的时间,格式为:“Time : h1h0:m1m0:s1s0”,其中“:”会0.5s亮0.5s灭。 第二行可以显示设定的闹钟时间、或当前的计数器计数值、或计数器的设定时间,可以通过接口板或者4×4小键盘上的“↑”、“↓”、“←”、“→”键来选择某一个来显示。 例如:选择显示设定的闹钟时间,格式为:“Alarm : h1h0:m1m0:s1s0”,其中“:”一直亮。例如:选择显示当前的计数器计数值,格式为:“CntTim: h1h0:m1m0:s1s0”,其中“:”一直亮。 例如:选择显示计数器的设定时间,格式为:“CntBuf: h1h0:m1m0:s1s0”,其中“:”一直亮。 2. 首先,在正常显示时间的界面下按“确定”键(接口板s6键或者4×4小键盘上的“确定”

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

多功能数字时钟设计

课程设计报告 学生姓名:刘佳 学 号:2017307010102 学院:电气工程学院 班级:通信171 题目:多功能数字时钟设计 指导教师:刘晓峰职称: 高级实验师指导教师:杨修宇职称: 实验师 2018 年 12 月 28 日

目录 1. 设计要求 (3) 2. 设计原理及框图 (3) 2.1 模块组成 (3) 3. 器件说明 (4) 4. 设计过程 (8) 4.1显示电路模块设计 (8) 4.2时钟脉冲电路模块设计 (9) 4.3计时模块电路设计 (10) 4.4计时校时控制模块电路设计 (11) 4.5整点报时与定点报时模块电路设计 (12) 5. 仿真调试过程 (13) 6. 收音机原理及焊接调试 (14) 6.1收音机原理 (14) 6.2收音机焊接工艺要求 (16) 6.3收音机调试过程 (16) 7. 设计体会及收获 (17)

1. 设计要求 (1)以24小时为一个计时周期,稳定的显示时、分、秒。 (2)当电路发生走时误差时,可以对所设计的时钟进行校时。 (3)电路有整点报时功能。报时声响为四低一高,最后一响高音正好为整点。 (4)电路具有闹钟功能,当闹钟所设定时间与时钟计时相同时,发出提示音, 时长为一分钟。 2. 设计原理及框图 2.1 模块组成 多功能数字时钟由时钟脉冲电路模块、秒计时模块、分计时模块、时计时模块、显示模块、计时校时控制模块、定点报时模块与整点报时模块组。如图1所示。 图1 多功能数字时钟原理框图 多功能数字时钟由时钟脉冲电路模块、秒计时模块、分计时模块、时计时模块、显示模块、计时校时控制模块、定点报时模块与整点报时模块组成。时钟脉冲电路模块由振荡电路与分频电路组成,为数字时钟提供秒脉冲信号、定点整点报时信号以及调试信号。计时电路包括“秒”计时、“分”计时与“时”计时电

单片机电子时钟的设计

单片机电子时钟的设计 ----------- 基于单片机的电子时钟 专业:运算机科学与技术 班级:专升本1班 小组成员:张琴张娜赵慧佩 学号:23 24 25

基于单片机的电子时钟设计 摘要 20世纪末,电子技术获得了飞速的进展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的进展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时刻观念,能够说是时刻和金钱划上了等号。关于那些对时刻把握专门严格和准确的人或事来说,时刻的不准确会带来专门大的苦恼,因此以数码管为显示器的时钟比指针式的时钟表现出了专门大的优势。数码管显示的时刻简单明了而且读 数快、时刻准确显示到秒。而机械式的依靠于晶体震荡器,可能会导致误差。 数字钟是采纳数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳固度远远超过老式机械钟。在这次设计中,我们采纳LED数码管显示时、分、秒,以24 小时计时方式,依照数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时刻的其本功能,还能够实现对时刻的调整。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受宽敞消费的喜爱,因此得到了广泛的使用。 .

目录 第一章绪论 1.1 数字电子钟的背景 (4) 1.2 数字电子钟的意义 (4) 1.3 数字电子钟的应用 (4) 第二章整体设计方案 2.1 单片机的选择 (5) 2.2 单片机的差不多结构 (7) 第三章数字钟的硬件设计 3.1 最小系统设计 (11) 3.2 LED显示电路 (14) 第四章数字钟的软件设计 4.1 系统软件设计流程图 (16) 4.2 数字电子钟的原理图 (19) 第五章系统仿真 5.1 PROTUES软件介绍 (20) 5.2 电子钟系统PROTUES仿真 (21) 第六章调试与功能说明 6.1 硬盘调试 (22) 6.2 系统性能测试与功能说明 (22) 6.3 系统时钟误差分析 (22) 6.4 软件调试问题及解决 (22) 附件:主程序 (23)

多功能时钟(万年历)设计

多功能时钟(万年历) 设 计 报 告 专业电子信息科学与技术 班级13级电子专升本 姓名韩科峰 学号130522012 考勤成绩设计成绩 调试成绩报告成绩 总成绩

一、课题名称 多功能时钟(万年历)设计 二、内容摘要 美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 本设计是基于单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。 关键词: 三、设计指标(要求); 1、显示时间、日期由按键选择显示(日期时间可调整)。 2、可设置闹钟功能; 3、制作PC机设置界面软件,由PC机可完成对时钟的各项设置 四、系统框图;

STC12C5A08S2 单片机 DS1302时钟模块 五、各单元电路设计、参数计算和元器件选择 4位共阴极数码管 按键

六、工作原理 DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;DS1302的控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0,位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。 “CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”

#用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)

多功能数字时钟的设计

多功能数字钟设计与制作 一、引言 中国是世界上最早发明计时仪器的国家。有史料记载,汉武帝太初年间(纪元前104-101年)由落下闳创造了我国最早的表示天体运行的仪器——浑天仪。东汉时期(公元130年)张衡创造了水运浑天仪,为世界上最早的以水为动力的观测天象的机械计时器,是世界机械天文钟的先驱。盛唐时代,公元725年张遂(又称一行)和梁令瓒等人创制了水运浑天铜仪,它不但能演示天球和日、月的运动,而且立了两个木人,按时击鼓,按时打钟。第一个机械钟的灵魂——擒纵器用于计时器,这是中国科学家对人类计时科学的伟大贡献。它比十四世纪欧洲出现的机械钟先行了六个世纪。 第一只石英钟出现在二十世纪二十年代,从三十年代开始得到了推广,从六十年代开始,由于应用半导体技术,成功地解决了制造日用石英钟问题,石英电子技术在计时领域得到了广泛的应用。并取代机械钟做了更精确的时间标准。早在1880年,法国人皮埃尔·居里和保罗·雅克·居里就发现了石英晶体有压电的特性,这是制造钟表“心脏”的良好材料。科学家以石英晶体制成的振荡计时器和电子钟组合制成了石英钟。经过测试,一只高精度的石英钟表,每年的误差仅为 3~5秒。1942年,著名的英国格林尼治天文台也开始采用了石英钟作为计时工具。在许多场合,它还经常被列为频率的基本标准,用于日常测量与检测。大约在 1970 年前后,石英钟表开始进入市场,风靡全球。随着科学的进步,精密的电子元件不断涌现,石英钟表也开始变得小巧精致,它既是实用品,也是装饰品。它为人们的生活提供方便,更为人们的生活增添了新的色彩。在现行情况下根据简单实用强的、走时准确进行设计。而实验证明,钟表的振荡部分采用石英晶体作为时基信号源时,走时更精确、调整更方便。钟是一种计时的器具,它的出现开拓了时间计量的新里程。提起时钟大家都很熟悉,它是给我们指明时间的一种计时器,并且我们每天都要用到它。二十世纪八十年代中国的钟表业经历了一场翻天覆地的大转折。其表现在三个方面: 1)从生产机械表转为石英电子表; 2)曾占据中国消费市场四十多年的大型国有企业突然被刚刚冒起的“组业”

AT89C51单片机电子时钟设计资料

AT89C51单片机电子时钟设计 学院: 专业: 学号: 学生:

目录 1 电子时钟 (4) 1.1 电子时钟简介 (4) 1.2 电子时钟的基本特点 (4) 1.3 电子时钟的原理 (4) 2 单片机识的相关知识 (4) 2.1单片机简介 (4) 2.2 单片机的特点 (5) 2.3 AT89C51单片机介绍 (5) 3 设计方案的选择 (7) 3.1计时方案 (7) 3.2 显示方案 (7) 3.3 数码管显示工作原理 (8) 3.4 键盘电路设计 (9) 3.5 主控模块AT89C51 (9) 4 系统软件设计 (9) 附录 (12)

摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机;电子时钟;AT89C51

1 电子时钟 1.1 电子时钟简介 本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 1.3 电子时钟的原理 该电子时钟由AT89C51,键盘,八段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。 2 单片机识的相关知识 2.1单片机简介 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

多功能时钟方案报告(免费)

多 功 能 数 字 钟 设 计 报 告 中国计量学院 2018年5月3日 目录 摘要

1.设计任务 1)基本要求 2)发挥部分 2.方案论证与比较 1)显示部分 2)数字时钟 3)温度采集 4)闹铃部分 5)电源模块 3.总体方案 1)工作原理 2)总体设计 4.系统硬件设计 1)STC89C52RC单片机最小系统 2)测温模块 3)时钟模块 4)存储器模块 5) LCD显示模块 6)电源模块 5.单片机程序部分 1)程序编写 6.测试与结果分析 1)基本部分测试与分析 2)发挥部分测试与分析 3)创新部分测试与分析 7.设计总结 摘要本设计采用LCD液晶屏幕显示系统,以STC89C52RC单片机为核心,由键盘、温度采集、定时闹铃、日期提醒等功能模块组成。基于题目基本要求,本系统对时间显示、闹铃方式进和温度采集系统行了重点设计。此外,扩展了整点报时、非易失闹铃信息存储、国内外重要节日提醒等功能。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,多数发挥部分也得到了实现,而且还具有一定的创新功能。

关键字:STC89C52RC单片机、LCD液晶显示、双电源供电、温度采集、非易失定时闹铃、生日提醒、重要节日提醒、整点报时 1、任务设计 1)基本要求 <1)具有时间设置<小时和分钟)、闹钟时间设置、闹钟开、闹钟关功能。 <2)数字显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器。 <3)利用键盘或其它方式切换,数字显示年、月、日、周次。 <4)利用键盘或其它方式切换,数字显示当前环境温度<0~60℃0.2℃)。 <5)利用手势或其它任意方式非接触停止闹钟。 2)发挥部分 <1)220VAC供电,具有测量、显示电网频率、电压有效值功能。 <2)产生0-100k方波,频率10Hz步进可调,峰峰值〉20V<100欧姆负载),频率可以键盘控制。 <3)断电后,可保存电压、频率测量值,断电时间,闹钟设置值等参数,可自动保存20次,系统来电后,无需手动设置,即可恢复正常工作。 <4)遥控设置闹钟、时间等参数。 2、方案论证 1)显示部分: 显示部分是本次设计的重要部分,一般有以下两种方案: 方案一:采用LED显示,分静态显示和动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。而对于动态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。 方案二:采用LCD显示。LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。 鉴于上述原因,我们采用方案二。 2)数字时钟 数字时钟是本设计的核心的部分。根据需要可采用以下两种方案实现: 方案一:方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。而且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。 方案二:方案采用Dallas公司的专用时钟芯片DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,可使系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。 基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。 3)温度采集 由于现在用品追求多样化,多功能化,给系统加上温度测量显示模块,能够方便人们的生活,使该设计具有人性化。 方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复

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

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计 一、概述、设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。 二、系统组成与工作原理 1、工作原理: 本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 2、总是设计框架图:

图二:系统总体电路图 三、单元电路的设计与分析 整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。 1、MCS-51单片机 VCC: 89S51 电源正端输入,接+5V。 VSS: 电源地端。

XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: 89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。 EA/Vpp: "EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG: 端口3的管脚设置: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。

多功能时钟设计

可编程逻辑器件及其应用 设计报告 姓名:王克勤 院系:******* 学号:******* 日期:2012-04-09

多功能数字钟设计 一、设计内容及要求 用Verilog HDL设计一个多功能数字钟 基本功能描述: 1.时钟功能:包括时、分、秒的显示; 2.定时与闹钟功能:能在设定的时间发出闹铃音; 3.校时功能:能非常方便地对小时、分钟和秒进行手动调整以校准时间; 4.整点报时功能:每逢整点,产生“嘀嘀嘀嘀--嘟”,四短一长的报时音。 二、仿真环境说明 用Verilog在Altera公司的Quartus2软件环境下编写RTL代码,并进行综合,行为仿真。时序仿真采用Mentor公司旗下的ModelsimSE-6.1f软件。Modelsim 软件是业界最著名的波形仿真软件,仿真效果比Quartus2下编写波形文件仿真效果要好很多,而且仿真相当简单,只不过要编写测试向量(testbench),有点麻烦。 三、系统框图与说明 Figure1系统框图 1.数字钟电路系统由主体电路和扩展电路两大部分所组成。 2. 秒计数器计到59后,下一秒到来时,秒计时器满60,接着清零后向分计数器进位;同样分计数器计满60后向小时计数器进位;小时计数器按照“24进制”

规律计数,每当小时计到23小时时,当分计数和秒计数分别59,59时,即到23小时59分,59秒时候,时分秒全部清零,从新开始计数。 3. 计数器的输出经译码器送显示器,显示器用6个数码管表示,每两个数码管分别表示小时,分钟,秒钟。每个数码管用BCD码表示。 四、设计步骤 (一)列写多功能数字钟设计结构图 (二)在QuartusП软件下编写Verilog代码 (三)在QuartusП环境下进行综合 Figure2综合结果 从Fig.2可以看出,该设计采用Altera公司CycloneП系列下的EP2C35F672C8芯片。从图中可以看出,采用了162个逻辑单元,其中组合逻辑147个,总共的寄存器数为102个。

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

基于C51单片机的多功能电子时钟设计完美实现版

单片机课程设计报告——电子时钟作业名: 指导老师: 戴胜华 学生姓名: lycaner 班级: 北京交通大学电子信息工程学院自动化 学号: XXXXXXXX 电子时钟实验报告

一,实验目的 1. 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。 2. 设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟 二,实验要求 A.基本要求: 1. 在4位数码管上显示当前时间。显示格式“时时分分” 2. 由LED闪动做秒显示。 3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。 4.实现秒表功能(百分之一秒显示) B.扩展部分: 1.日历功能(能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整) 2.音乐闹铃(铃音可选择,闹铃被停止后,闪烁显示当前时刻8秒后,或按键跳入正常时间显示状态) 3.定时功能(设定一段时间长度,定时到后,闪烁提示) 4.倒计时功能(设定一段时间长度,能实现倒计时显示,时间长减到0时,闪烁提示) 5.闹铃重响功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调) 三,实验基本原理 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s 到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。 为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。 四,实验设计分析 针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。. 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各

单片机C51时钟的设计报告

单片机课程设计报告 设计名称:单片机电子时钟的设计 班级:电信08级1班 学号: 姓名: 指导教师:

一课程设计的目的 单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 二、课程设计的具体要求: 该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H 单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理 三.MCS-51单片机系统简介 40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。 ⒈电源: ⑴VCC - 芯片电源,接+5V; ⑵VSS - 接地端; 注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。 ⒉时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊控制线:控制线共有4根, ⑴ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ①ALE功能:用来锁存P0口送出的低8位地址 ②PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 ⑵PSEN:外ROM读选通信号。 ⑶RST/VPD:复位/备用电源。 ①RST(Reset)功能:复位信号输入端。 ②VPD功能:在Vcc掉电情况下,接备用电源。 ⑷EA/Vpp:内外ROM选择/片内EPROM编程电源。 ①EA功能:内外ROM选择端。 ②Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 ⒋I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线) 四、MCS-51单片机内部定时器/计数器、中断系统简介 定时/计数器是单片机中重要的功能模块之一,在检测,控制和智能仪器等设备中经常用它来定时。MCS-51系列中51子系列有2个16位的可编程定时/计数器:T0和T1;每个定时计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。T0有4种工作方式,T1有3种工作方

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