EDA综合设计性实验数字钟.docx
- 文档编号:3479525
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:411.31KB
EDA综合设计性实验数字钟.docx
《EDA综合设计性实验数字钟.docx》由会员分享,可在线阅读,更多相关《EDA综合设计性实验数字钟.docx(16页珍藏版)》请在冰豆网上搜索。
EDA综合设计性实验数字钟
广州大学
综合设计性实验
报告册
实验项目数字钟
学院物理与电子工程学院年级专业班
姓名Jason.P学号成绩
实验地点电子楼317室指导教师宋沛
《综合设计性实验》预习报告
实验项目:
数字钟
一引言:
数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,数字时钟可植入自动控制、测试等系统内部,作为系统的时钟源,可为系统提供定时信号或中断控制的时间基准,具有广泛的用途。
由于数字集成电路的发展使得数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的单一报时功能。
加入了一些诸如自动报时、定时闹钟等功能。
这些都是以钟表数字化为基础的。
因此,研究数字时钟及扩大其应用,有着非常现实的意义。
二实验目的:
进一步掌握用VerilogHDL语言编写任意进制计数器的方法,通过本次实验要充分认识到,顶层结构的设计和优化在综合设计中的重要性。
三实验原理:
基本原理:
数字钟秒到分、分到时均为60进制,利用VerilogHDL编写模60的计数器,秒模块的CLK可从实验板上取得,秒模块的本身输出用来驱动显示秒的数码管,进位输出恰好是分模块的CLK。
分模块的进位作为时模块的CLK。
时模块为24进制。
需要调整时间时,可以用数据选择器将正常的各个模块时钟切断取而代之的是由实验箱上的按键产生的单脉冲,从而实现调整时间的功能。
闹铃时间与当前时间要共用数码管的方式显示,同样我们可以采用多位数据选择器来实现。
闹铃实现可采用比较计时模块输出与闹钟设定输出完全相等时,输出控制信号使扬声器发声。
四实验内容:
利用前面实验所学知识,设计一数字钟并在GW48实验箱上实现。
具体要求如下:
1.计时可选十二进制计时和二十四进制计时;
2.可手动校时,能分别进行时、分的校正;
3.带闹钟功能,当计时计到闹铃时间时,发光二极管点亮,闹铃时间为1分,可用按键提前终止闹铃;
4.带秒表功能;(选做)
5.带日历显示,可显示月、日等。
(选做)
五重点问题:
如何设计并实现下列技术指标的数字钟:
1、能够用数码管显示当前时间的时、分、秒(时采用24小时制);
2、能够通过按键调整时钟的时、分;
3、能够设定闹铃时间。
闹铃时间到,有声音提示;
4、闹铃时间与当前时间要共用数码管的方式显示,并能用按键来切换。
六参考文献:
[1]潘松,黄继业,潘明.EDA技术实用教程——VerilogHDL版(第五版).北京:
科学出版社,2013.11
广州大学
实验原始数据记录表
实验项目数字钟指导教师
姓名Jason.P班别学号
学院物理与电子工程学院专业电子信息科学与技术
实验进行时间2016年6月6日第十五周一,15:
20时至17:
20时;
实验地点电子楼317室室温26度湿度65%天气晴
原始数据记录(自行设计记录表格):
小时计数模块:
源代码:
modulecnt_24(CLK,RST,EN,COUT,DOUT);
inputCLK,EN,RST;
output[7:
0]DOUT;
outputCOUT;
reg[7:
0]A;
regCOUT;
assignDOUT[3:
0]=A%10;
assignDOUT[7:
4]=A/10;
always@(posedgeCLKornegedgeRST)begin
if(!
RST)A=0;
elseif(EN)begin
COUT=0;
if(A<23)A=A+1;
elsebeginA=0;COUT=1;end
end
end
endmodule
波形分析:
当EN和RST信号均为高电平时,计数器正常工作。
当计满24次时,COUT输出一个进位高电平信号。
分、秒计数模块:
源代码:
modulecnt_60(CLK,RST,EN,COUT,DOUT);
inputCLK,EN,RST;
output[7:
0]DOUT;
outputCOUT;
reg[7:
0]A;
regCOUT;
assignDOUT[3:
0]=A%10;
assignDOUT[7:
4]=A/10;
always@(posedgeCLKornegedgeRST)begin
if(!
RST)A=0;
elseif(EN)begin
COUT=0;
if(A<59)A=A+1;
elsebeginA=0;COUT=1;end
end
end
endmodule
仿真波形分析:
当EN和RST信号均为高电平时,计数器正常工作。
当计满60次时,COUT输出一个进位高电平信号。
比较器模块:
源代码:
modulecheck(a,b,cout);
input[7:
0]a,b;
outputcout;
regcout;
always@(a,b)
begin
if(a==b)
cout=1;
else
cout=0;
end
endmodule
波形分析:
当输入a和b相等时,cout输出高电平。
2选1选择器模块:
源代码:
modulemux21(a,b,s,y);
inputa,b,s;
outputy;
assigny={s?
b:
a};
endmodule
波形分析:
输入a置为高电平,b为低电平;当s为高电平时,输出y为b的值;反之则为a的值。
9选3选择器模块:
modulemux168(a,b,c,d,e,f,g,h,i,k,l,m,display);
input[7:
0]a,b,c,d,e,f,g,h,i;
input[1:
0]display;
output[7:
0]k,l,m;
reg[7:
0]k,l,m;
always@(*)
begin
if(display==2'b00)
begink=a;l=b;m=c;end
elseif(display==2'b01)
begink=d;l=e;m=c;end
elseif(display==2'b11)
begink=a;l=g;m=f;end
elseif(display==2'b10)
begink=h;l=i;m=c;end
end
endmodule
波形分析:
display共四种状态:
00,01,11,10;输入a->i分别赋值1-9,在不同的display状态下,输出k,l,m将对应不同的值。
状态机模块:
源代码:
modulestatus(clk_key,led,hc,mc,ah,am,sm,ss,dy,dr,display);
inputclk_key;
output[3:
0]led;
outputhc,mc,ah,am,sm,ss,dy,dr;
output[1:
0]display;
reg[3:
0]led;
parameter[3:
0]s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8;
reg[3:
0]next_state;
reghc,mc,ah,am,sm,ss,dy,dr;reg[3:
0]cs;reg[1:
0]display;
always@(cs)begin
case(cs)
s0:
beginnext_state=s1;hc=0;mc=0;ah=0;am=0;sm=0;ss=0;dy=0;dr=0;display=2'b00;end
s1:
beginnext_state=s2;hc=1;mc=0;ah=0;am=0;sm=0;ss=0;dy=0;dr=0;display=2'b00;end
s2:
beginnext_state=s3;hc=0;mc=1;ah=0;am=0;sm=0;ss=0;dy=0;dr=0;display=2'b00;end
s3:
beginnext_state=s4;hc=0;mc=0;ah=1;am=0;sm=0;ss=0;dy=0;dr=0;display=2'b01;end
s4:
beginnext_state=s5;hc=0;mc=0;ah=0;am=1;sm=0;ss=0;dy=0;dr=0;display=2'b01;end
s5:
beginnext_state=s6;hc=0;mc=0;ah=0;am=0;sm=1;ss=0;dy=0;dr=0;display=2'b11;end
s6:
beginnext_state=s7;hc=0;mc=0;ah=0;am=0;sm=0;ss=1;dy=0;dr=0;display=2'b11;end
s7:
beginnext_state=s8;hc=0;mc=0;ah=0;am=0;sm=0;ss=0;dy=1;dr=0;display=2'b10;end
s8:
beginnext_state=s0;hc=0;mc=0;ah=0;am=0;sm=0;ss=0;dy=0;dr=1;display=2'b10;end
endcase;
end
always@(posedgeclk_key)begin
cs<=next_state;
led[3:
0]=cs;
end
endmodule
波形分析:
led输出到数码管8显示,显示所处的状态s;在4种不同的display状态下,hc(时钟),mc(分钟),ah(闹钟时钟),am(闹钟分钟),sm(定时器分钟),ss(定时器秒钟),dy(日历月份),dr(日)有不同的对应值。
月计数模块:
moduledata12(CLK,RST,EN,DOUT,hsend);
inputCLK,EN,RST;
output[7:
0]DOUT;
output[3:
0]hsend;
reg[3:
0]A;
assignhsend[3:
0]=A;
reg[7:
0]DOUT;
always@(*)
begin
if(A<=9)
beginDOUT[3:
0]=A;
DOUT[7:
4]=0;
end
elseif(A==10)
beginDOUT[3:
0]=0;
DOUT[7:
4]=1;
end
elseif(A==11)
beginDOUT[3:
0]=1;
DOUT[7:
4]=1;
end
elseif(A==12)
beginDOUT[3:
0]=2;
DOUT[7:
4]=1;
end
end
always@(posedgeCLKornegedgeRST)begin
if(!
RST)A=1;
elseif(EN)begin
if(A<=11)A=A+1;
elseA=1;
end
end
endmodule
波形分析:
当EN和RST信号均为高电平时,月计数器正常工作,从1计数到12(每一个CLK上升沿到来时计数加一),并以此方式不断循环。
电路设计草图
顶层电路原理图设计
波形分析:
key1选择模式,key2产生计数脉冲,CLK为运行时钟,CLK2为蜂鸣器时钟。
如上图所示:
先系统复位一次使其工作在状态s0(时钟正常计数模式),此时按下key2将不产生任何影响,并且在Press(按键8控制)为高电平情况下,speaker工作,只要置Press为低电平,speaker立即停止蜂鸣。
按下key1,在CLK上升沿到来时,系统进入s1状态(设置时钟hc)在仿真中,我设置产生两次key2计数脉冲,即设置时钟为2点钟;再按下key1,在CLK上升沿到来时,系统进入s2状态(设置分钟mc),我设置产生两次计数脉冲(key2),此时完成了时间的手动设置(2:
02)。
波形分析:
第三次按下
key1,在CLK上升沿到来时,系统进入s3状态(设置闹钟时钟ah),原理同上,设为2点钟,同理将闹钟分钟am设为3,即闹钟时间为2:
03。
完成上述设置后,连续按下5次key1使系统进入s0状态(由于一开始预留了定时器及日历功能,故状态s5和s6是设置定时器,s7和s8是设置日历,但上述两个附加功能最后一直没能测试成功,所以进行数字钟波形仿真时跳过了这几个状态)。
波形分析:
系统进入
s0状态后,数字钟正常工作(在每个CLK时钟上升沿到来时计数加一)。
波形分析:
我们设置闹钟时间为
2:
03,当数字钟到了这一时刻,speaker开始工作,置Press为低电平即可关掉蜂鸣器。
闹钟将持续一分钟。
注:
此表格必须附在《实验报告》内一并交给任课老师。
指导教师对学生情况记录:
《综合设计性实验》实验报告
实验名称:
数字钟
摘要:
数字时钟是一种用数字电路技术实现时、分、秒计时的装置。
本设计采用VHDL语言及原理图方式设计出的数字时钟具有手动校时,闹钟等功能。
通过把整个设计分为多个模块依次来实现,减少了众多重复性步骤,合理化了设计过程,使得设计更加省时、快捷,提高了设计效率。
一引言:
数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,数字时钟可植入自动控制、测试等系统内部,作为系统的时钟源,可为系统提供定时信号或中断控制的时间基准,具有广泛的用途。
由于数字集成电路的发展使得数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的单一报时功能。
加入了一些诸如自动报时、定时闹钟等功能。
这些都是以钟表数字化为基础的。
因此,研究数字时钟及扩大其应用,有着非常现实的意义。
二实验要求:
利用前面实验所学知识,设计一数字钟并在GW48实验箱上实现。
具体要求如下:
1.计时可选十二进制计时和二十四进制计时;
2.可手动校时,能分别进行时、分的校正;
3.带闹钟功能,当计时计到闹铃时间时,发光二极管点亮,闹铃时间为1分,可用按键提前终止闹铃;
4.带秒表功能;(选做)
5.带日历显示,可显示月、日等。
(选做)
三实验仪器:
1、安装了QuartusII软件的计算机一台;
2、GW48实验箱一套。
四实验步骤:
1、根据题目要求,参考GW48使用说明书,选取适当的模式来实现。
2、依据题目要求功能,设计顶层总体结构图。
3、使用VerilogHDL语言来实现顶层结构中各个模块的功能,并创建顶层文件可调用的图形元件,如:
24、60进制计数器,数据选择器等模块。
4、创建顶层GDF文档,并将各模块连接。
5、根据题目要求,以及第一步所选模式,并查表,定义引脚。
6、编译并下载到目标芯片中。
7、利用实验箱验证所设计的数字钟功能。
五数据处理及实验结果表示:
1、引脚锁定:
2、时钟源的选择:
CLK:
1.00Hz,CLK2:
1024Hz
3、下载程序到目标机上进行硬件测试的结果:
系统复位
注:
选择模式5;数码管6和5显示时钟,数码管4和3显示分钟,数码管2和1显示秒钟;数码管8显示此时工作的状态;键1(key1)控制状态;键2(key2)产生计数脉冲;键3:
RST(复位);键4:
EN(工作使能)。
六实验结果分析:
通过各模块以及整体电路的波形仿真测试(详见实验原始数据记录表)和最后的实物检验均符合设计要求。
在CLK(秒)时钟的作用下,电路正常走时,而且闹钟也能正常工作。
七实验心得:
经过两次的数字钟实验,不仅巩固了以前所学的知识,而且还学到了很多书本上不曾介绍过的内容,锻炼了自己的动手能力,为今后的实践打下坚实的基础!
通过本次课程设计,使我进一步加深对EDA以及QuartusII软件的基本操作的了解,使我对以应用软件的方法来设计硬件系统有了更加浓厚的兴趣。
此外,我还懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中得出结论,才能真正提高自己的动手实践和独立思考的能力。
在设计过程中,我发现许多EDA的知识还没有充分的掌握,遇到困难也是在所难免的,同时也发现了自己的不足之处:
学习知识表面化,没有深入了解它们的原理,还不能脱离书本独立设计出各功能模块。
总的来说,这次设计的数字钟电路还是比较成功的。
尽管在设计中遇到了各种问题,但在老师的指导、同学的帮助和自己不断的思考,修改,测试下,将拦路石一一攻破,觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。
最后,对给予我帮助的所有同学和指导老师再次表示忠心的感谢!
八参考文献:
[1]潘松,黄继业,潘明.EDA技术实用教程——VerilogHDL版(第五版).北京:
科学出版社,2013.11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 综合 设计 实验 数字