EDA模电子时钟设计_第1页
EDA模电子时钟设计_第2页
EDA模电子时钟设计_第3页
EDA模电子时钟设计_第4页
EDA模电子时钟设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

苏州科技学院天平学院

EDA电子综合设计

院系:___________________

专业:___________________

班级:___________________

学号:___________________

姓名:___________________

第一部分:设计说明

1.1设计任务

设计一款数字电子时钟,具体要求如下:

1:输入条件:50MHz时钟,2个输入按键;

2:功能实现:具有显示时、分、秒功能;采用LED数码管显示;具有同钟

与对时功能,对时精确到分,闹钟设置与对时采用按键作为输入信号。

3:采用altera公司的quartusH软件进行编程与仿真,设计语言可以选择

VerilogHDL或VHDL。

L2目的与意义

训练综合运用学过的数字电子技术、数字系统设计技术(HDL硬件设计)和计

算机编程及电路相关基本知识,培养独立设计比较复杂数字系统设计能力。

通过综合设计,力争掌握使用EDA工具设计数字系统电路的基本方法,包

括原理方案的确定、详细设计中的编程与仿真等一系列过程,为以后进行工程实

践问题的研究打下设计基础。

时钟,自从它发明的那天起,就成为人类的朋友,但随着社会的进步,科技

的的发展,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,

怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。

现代社会,守时已不仅关系到一个人的职业生涯,还成了衡量一个人道德的

标准。时钟为人们提供了科学利用时间规律的依据,然而,普通的机械钟表与半

机械钟表对于忙碌的生活显然早已不太适应,设计一款高精度数字时钟势在必

行。本课题将通过对目前市场上的数字电子钟的研究,利用EDA技术设计一款高

精度数字式电子钟,使人们可以得到精确时间显示,帮助人们合理安排时间,方

便人们的生活。

第二部分原理方案设计

设计一个多功能数字时钟,具有时分、秒计数显示、闹钟功能。能够利用按

键实现对闹钟时间的设定并在当前显示时间到时后能够进行闹钟提示。能够利用

按键实现“较时”、“较分”功能,随时对数码管的显示进行校正和校对。数字中

系统主要由系统时钟,三个功能按键(mode,turn,change),FPGA,数码管和

蜂鸣器部分组成。

数码管

显示模块

(=>

二>计时模块仁>闹钟模块鸣

A~~TT

控制模块

图1多功能数字时钟整体模块图

2.1分频模块方案设计

分频模块用于为系统的实现提供稳定的工作频率和计时信号源,产生分频为

1HZ频率的信号作为计时模块的信号源。

分频算法设计:定义变量并根据需要得到的分频信号设定计数值,对该变量

进行加或减计数,每到达一次计数值点,将该变量清零或重置,并且对输出信号

取一次反,即可以得到所需的分频信号。

在这里使用任意分频计数器。定义变量并且设定一个上限值,每次加计数到

该上限值时,输出该计数值的最高位。

第三部分详细设计过程

图2顶层模块

3.1分频模块

该模块为任意分频计数涔,在这里使用了两个分频模块,分别输出4Hz和

IKhz的时钟信号。

功能:对输入时钟clock进行F_DIV倍分频后输出clk_out。其中F_DIV为

分频系数,分频系数范围为广2,(n二F_DIV』IDTH)若要改变分频系数,改变参

数匕DTV或F_DTV_WTDTH到相应范围即可。若分频系数为偶数,则输出时钟占空

比为50%;若分频系数为奇数,则输出时钟占空比取决于输入时钟占空比和分频

系数(当输入为50%时,输出也是50%)。

图3分频模块div_4hz

图4分频模块div_lk

定义变量为分频系数,若位偶数,则产生分频系数的一半个时钟周期为高电

平,分频系数的一半个时钟周期为低电平;若为奇数,则相应地偏移一个。

若分频系数为偶数,则输出时钟占空比为50机若分频系数为奇数,则输出

时钟占空比取决于输入时钟占空比和分频系数(当输入为50%时,输出也是50%)o

modulodivdhztclock,clkout);//I/O口声明

inputclock;〃输入时钟

outputclk_out;〃输出时钟

〃内部寄存器

regclk_p_r;〃上升沿输出时钟

regclknr;〃下降沿输H时钟

reg[F_DIV_WIDTH-1:0]counl-p;〃上升沿脉冲计数器

reg[F_DIV_WIDTH-1:0]count_n;〃下降沿脉冲计数器

〃参数一分频系数

〃分频系数<«<——修改这里

parameterF_DTVJrTDTH=32;〃分频计数器宽度

wirefull_div_p;〃上升沿计数满标志

wirehalfdivp;〃上升沿计数半满标志

wirefulldivn;〃下降沿计数满标志

wirehalf_div_n;〃下降沿计数半满标志

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

assignfull_div_p=(count_p<F_D1V-1);

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

assignful1div_n二(count_n<F_DTV-1);

assignhalfdivn=(countyn<(FDIV»1)-1);

〃时钟输出

assignclk_out=(F_DIV==1)?

clock:(F_DIV[O]?(clk_p_r&clk_n_r):clk_p_r);

〃上升沿脉冲计数

always@(posedgeclock)

begin

if(full_div_p)

begin

count_p<=count_p+Vbl;

if(half_div_p)

clk_p_r<=1'bO;

else

clk_p_r<=1'bl;

end

else

begin

count_p<=0;

clk_p_r<=VbO;

end

end

〃下降沿脉冲计数

always©(negedgeclock)

begin

if(full_div_n)

begin

count_n<=count_n+1'bl;

if(half_div_n)

clk_n_r<=1'bO;

else

clk_n_r<=rbl;

end

else

bpgin

count_n<=0;

clk_n_r<=rbO;

end

end

endmodule

3.2显示模块

该模块设计为时钟显示模块,一共8个共阳吸数码管,显示格式为。

整个时钟的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,

秒增加1秒,当秒从59秒跳转到0()秒时,分钟增加I分,同时当分钟从59分

跳转到()0分时,小时增加1小时,小时的范围为0~23时。

由于分钟和秒钟显示的范围都是从0~59,可以用一个4位的二进制码显示

十位,用一个四位的二进制码(BCD码)显示个位;对于小时因为他的范围是

从0〜23同样可以用一个4位的二进制码显示十位用一个4位的二进制码(BCD

码)显示个位。

由于动态扫描,需要一个频率较高的时钟信号用于刷新显示。送入显示的数高低

4位分离开来,分别用于显示十位和个位。

图5显示模块scan_led

modulescan_led(clk_lk,dig,seg,hourh,hourl1,minh,minlI,sech,secll);

inputclk_lk;

input[3:O]hourh,hourll,minh,minl1,sech,secl1;

output[7:OJdig;

output[7:()]seg;

reg[7:0]dig;

reg[7:O]seg;

reg[3:0]dataout_buf;

reg[2:0Jcount;

always@(posedgeclk_lk)

begin

coiint<=count+1'bl;

end

always@(posedgeclk_lk)

begin

case(count)

3'dO:

dataout_buf=secll;

3'dl:

dataout_buf=sech;

3'd2:

dataout_buf=4'ha;

3'd3:

dalaoul_buf=miiill;

3'd4:

dataout_buf=minh;

3,d5:

dataout_buf=4,ha;

3'd6:

dataout_buf=hourlI;

3'd7:

dataout_buf二hourh;

endcase

casc(count)

3,d():

dig=8'bl111.1110;

3'dl:

dig=8'bllll_1101;

3'd2:

dig=8'bllll_1011;

3,d3:

3'd4:

dig=8'bl110_1111;

3'd5:

dig=8'bll01_llll;

3'd6:

3*d7:

dig=8'b0111_llll;

endcase

end

always@(dataout_buf)

begin

case(dataout_buf)

4'hO:

seg=8'b0000_0011;

4'hl:

seg=8'b1001_l111;

4,h2:

seg=8'b0010_0101;

4'h3:

seg=8'b0000_1101;

4,h4:

seg=8,bl()()l_l()()l;

4'h5:

seg=8'bO100.1001;

4'h6:

seg=8'b0100_0001;

4,h7:

seg=8,bOO()l_llll;

4'hX:

seg=8'b0000_0001;

4'h9:

seg=8'b0000_1001;

4'ha:

seg=8'bllll_1101;

endcase

end

endmodule

3.3时钟控制模块

该模块设计为多功能数字钟的控制模块。

各信号引脚功能定义为:

mode:功能控制信号;为0:计时功能;为1:闹铃功能;为2:手动校对

功能;

turn:在手动校对时,选择是调整时间,还是分钟,若长时间按住该键,可

使秒信号清零,用于精确调时;

change:手动调整时,每按一次,计数器加1,如果长按,则连续快速加1;

用于快速调时和定时:

hour,min,sec:时,分,秒显示信号;

alert:扬声器驱动信号;用于产生闹铃音和报时音;闹铃音为持续20秒的

急促的“嘀嘀嘀”音,若按住“change”键,可屏蔽该闹铃音;整点报时音为

“嘀嘀嘀嘀嘟"四短一长音;

LD.alert:接发光二极管,指示是否设置了闹钟功能;

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

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

mode按键每触发一次,定义一个变量m自加,从。加到2;加满2,重新置为0。

用case语句产生3种模式。

图6时钟模块clockl

module

clack(clk,clk_1k,mode,change,tnrn,alert,hourh,hourlI,minh,minl1,sech,seclI,

LD_alert,LD_hour,LD_min);

inputclk,clk_lk,mode,change,turn;

outputalert,LD_alerl,LD_hour,LD_min;

output[3:0]hourh,hourl1,minh,minlI,sech,secl1;

rcg[7:0]hour,min,sec,hourl,minl,secl,ahour,amin;

reg[1:()]m,fm,numl,num2,num3,num4;

reg[1:()]loop1,loop2,loop3,loop4,sound;

regLD_hour,LD_min;

regclk_lHz,clk_2Hz,minclk,hclk;

regalert1,alert2,ear;

regcount1,count2,counta,counlb;

wirecl1,cl2,cla,clb.in_clk,h_clk;

always@(posedgeelk)

begin

clk_2Hz<=-clk_2Hz;

if(sound==3)beginsound<=0;ear<=l;end

elsebeginsound<=sound+1;ear<=0;end

end//ear信号用于产生或屏蔽声音

always@(posedgeclk_2Hz)//由4HZ的输入时钟产生1HZ的时基信号

clk_lHz<=~clk_IHz;

always@(negedgemode)//mode信号控制系统在三种功能间的转换

begin

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

elsem<=m+l;

end

always@(ncgcdgeturn)//产生count1,countI,counta,countb四个信号

always

begin

case(m)

2:beginif(!fm)

begincountl<=!change;{LD_rr)in,LD_hour}<=2;end

else

begincounta<=!change;{LD_min,LD_hour}<=1;end

{count2,countb)<-0;

end

1:beginif(!fm)

begincount2<=!change;{LD_min,LD_hour}<=2;end

else

begincountb<=!change;{LD_min,LD_hour)<=l;end

{cuunll,counla}<-2*b00;

end

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

endcase

end

always@(negedgeelk)

if(count2)begin

if(loopl=3)numl<=l;

else

beginloopl<=loopl+l;numl<=0;end

end

elsebeginloopl<=0;numl<=0;end

always@(negedgeclk)

if(countb)begin

if(loop2=3)num2<=l;

else

beginIoop2<=loop2+1;num2<=0;end

end

elsebeginloop2<=0;num2<=0;end

always@(negedgeelk)

if(countl)begin

if(loop3==3)num3<=l;

else

beginIoop3<=loop3+1;num3<=0;end

end

elsebeginloop3<=0;num3<=0;end

always@(negedgeelk)

if(counta)begin

if(loop4=3)num4<=l;

else

beginluop4<—loup4+1;iiuin4<-0;end

end

elsebeginloop4<=0;num4<=0;end

assignct1=(num3&clk)|(!num3&m_clk);

assignct2=(num1&clk)|(!num1&count2);

assigncta=(num4&cik)|(!num4&h_clk);

assignctb=(num2&clk)|(!num2&countb);

always@(posedgeclk_lHz)

if(!(sec1A8'h59)|(!turn)&(!m))

begin

sec1<=();if(!((!turn)&(!m)))minclk<=1;

end

elsebegin

if(secl[3:0]==4(bl001)

beginsecl[3:0]<=4,b0000;sec1[7:4]<=sec1[7:4]+1;end

elsesec1[3:0]<=sec1[3:0]+1;minclk<=0;

end

assignm_clk=minclk||countl;

always@(posedgectl)

begin

if(minl==8'h59)beginminl<=0;hclk<=l;end

elsebegin

if(minl[3:0]==9)

beginminl[3:0]<=0;min1[7:4]<=min1[7:4]+1;end

elsemin1[3:()]<~min1[3:0]+1;hclk<=0;

end

end

assignh_clk=hclk||counta;

always@(posedgeeta)

if(hourl==8'h23)hourl<=0;

elseif(liuurl[3;0J~9)

beginhourl[7:4]<=hourl[7:4]+1;hourl[3:()]<=0;end

elsehourl[3:0]<=hourl[3:0]+l;

always@(posedgect2)

if(amin==8'h59)amin<=0;

elseif(amin[3:0J=9)

beginamin[3:0J<=0;aminl7:4J<=amin[7:4J+1;end

elseamin[3:0]<=amin[3:0]+1;

always@(posedgectb)

if(ahour==8'h23)ahour<=0;

elseif(ahour[3:0]==9)

beginahour[3:0]<=0;ahour[7:41<=ahour[7:4]+1;end

elseahour[3:01<=ahour[3:01+1;

always

if((minl=amin)&&(hourl=ahour)&&(amin|ahour)&&(change))

if(secl<8'h20)alert1<=I;

elsealertl<=0;

elsealert1<=0;

always

case(m)

3'b00:beginhour<=hourl;min<=minl;sec<=sec1;end

3'b01:beginhour<=ahour;min<=amin;sec<=8'hzz;end

3'blO:beginhour<=hourl;min<=minl;sec<=8'hzz;end

cndcasc

assignLD_alert-(ahour|amin)?1:();

assignalert=((alert1)?clk_1k&clk:0)|alert2;

always

begin

if((minl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论