EDA技术与Verilog-HDL课程论文_第1页
EDA技术与Verilog-HDL课程论文_第2页
EDA技术与Verilog-HDL课程论文_第3页
EDA技术与Verilog-HDL课程论文_第4页
EDA技术与Verilog-HDL课程论文_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术与Verilog HDL课程论文 简单的时钟设计 学院:信息科学与工程学院 班级:xx班 姓名:xxx学号:xx教师:xx 一设计要求概述1设计要求1)具有时、分、秒计数显示功能,以24小时循环计时。 2)具有清零,调节小时、分钟功能(加入了整点报时,闪光灯的特效)。2设计目的1)数字钟学习的目的是掌握多位计数器相连的设计方法;2)掌握十进制、六进制、二十四进制计数器的设计方法;3)巩固多位共阴极扫描显示数码管的驱动及编码;4)掌握CPLD、FPGA技术的层次化设计方法二基于Verilog HDL语言的电路设计、仿真与综合本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模

2、块(一) 顶层模块,如图1所示:(二)子模块 1.分频器脉冲发生电路将实验箱48MHz的频率分频成1Hz(供系统时钟),2Hz(快速校分、校时)以及1KHz和500KHz(供闹钟电路)。例如1000分频源程序如下:module fenpin(input CP, output CPout);reg CPout;reg 31:0 Cout;reg CP_En;always (posedge CP ) /将50MHz分频为1kHzbeginCout <= (Cout = 32'd50000) ? 32'd0 : (Cout + 32'd1);CP_En <= (C

3、out = 32'd50000) ? 1'd1 : 1'd0;CPout <= CP_En; endendmodule功能仿真波形如图2所示2.控制器和计数器 控制器的作用是,调整小时和分钟的值,并能实现清零功能。计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。当到达59分55秒的时候,LED灯会闪烁来进行报时。因为控制器和计数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。源程序如下:module kongzhiqi( CPout,S1,S2,RET,Hour,Minute,Second,LED

4、);input CPout,S1,S2,RET;output 5:0 Hour;output 5:0 Minute;output 5:0 Second;output LED;reg 5:0 Hour;reg 5:0 Minute;reg 5:0 Second;reg R1;reg R2,R8,LED;reg 10:0 Cout;reg Clk_En;always(posedge CPout)beginif(S1=0)beginR1=1;endif(S2=0)beginR2=1;endif(RET=0)beginR8=1;endCout=(Cout=32'd1000)?32'd0

5、:(Cout + 32'd1);Clk_En=(Cout=32'd1000)?1'd1:1'd0;if(Clk_En)beginif(R1=1)beginif(Hour<24)Hour=Hour+1;if(Hour=24)beginHour=0;endR1=0;endif(R2=1)beginif(Minute<60)Minute=Minute+1;if(Minute=60)beginMinute=0;if(Hour<24)Hour=Hour+1;if(Hour=24)beginHour=0;endendR2=0;endif(Second<

6、;60)Second=Second+1;if(Second=60)beginSecond=0;if(Minute<60)Minute=Minute+1;if(Minute=60)beginMinute=0;if(Hour<24)Hour=Hour+1;if(Hour=24)beginHour=0;endendendif(Minute=59)&&(Second>55)/整点倒计时beginif(LED=1)LED=0;elseLED=1;endelseLED=0;if(R8=1)/清零beginHour=0;Minute=0;Second=0;R8=0;ende

7、ndendendmodule功能仿真波形如图3所示:3显示器显示器的作用是将时分秒的值在数码管上依次显示出来。从分频器输出的1Khz的信号作为数码管的扫描信号。SEL 表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111000。LEDGA表示七段数码管,它的取值决定特定位数上显示的数字。源程序如下:module xianshi( CPout,Hour,Minute,Second,SEL,LEDAG);input CPout;input Hour,Minute, Second;output SEL,LEDAG;reg 2:0 SEL;reg 6:0 Led;reg 3:0 shi1

8、,ge1,shi2,ge2,shi3,ge3;always (posedge CPout )beginshiwei1=Hour/10;gewei1=Hour%10;shiwei2=Minute/10;gewei2=Minute%10;shiwei3=Second/10;gewei3=Second%10;if(SEL=3'b110) /判断位选SEL的值,并将此位上的值输出到数码管case(shiwei1) 4'b0000: Led = 7'b0111_111;4'b0001: Led = 7'b0000_110;4'b0010: Led = 7&

9、#39;b1011_011;4'b0011: Led = 7'b1001_111;4'b0100: Led = 7'b1100_110;4'b0101: Led = 7'b1101_101;4'b0110: Led = 7'b1111_101;4'b0111: Led = 7'b0000_111;4'b1000: Led = 7'b1111_111;4'b1001: Led = 7'b1101_111; default: Led = 7'b0000_000;endcaseif

10、(SEL=3'b101)case(gewei1) 4'b0000: Led = 7'b0111_111;4'b0001: Led = 7'b0000_110;4'b0010: Led = 7'b1011_011;4'b0011: Led = 7'b1001_111;4'b0100: Led = 7'b1100_110;4'b0101: Led = 7'b1101_101;4'b0110: Led = 7'b1111_101;4'b0111: Led = 7'b

11、0000_111;4'b1000: Led = 7'b1111_111;4'b1001: Led = 7'b1101_111; default: Led = 7'b0000_000;endcaseif(SEL=3'b100)Led=7'b1000_000;if(SEL=3'b011)case(shiwei2) 4'b0000: Led = 7'b0111_111;4'b0001: Led = 7'b0000_110;4'b0010: Led = 7'b1011_011;4'b

12、0011: Led = 7'b1001_111;4'b0100: Led = 7'b1100_110;4'b0101: Led = 7'b1101_101;4'b0110: Led = 7'b1111_101;4'b0111: Led = 7'b0000_111;4'b1000: Led = 7'b1111_111;4'b1001: Led = 7'b1101_111; default: Led = 7'b0000_000;endcaseif(SEL=3'b010)case(

13、gewei2) 4'b0000: Led = 7'b0111_111;4'b0001: Led = 7'b0000_110;4'b0010: Led = 7'b1011_011;4'b0011: Led = 7'b1001_111;4'b0100: Led = 7'b1100_110;4'b0101: Led = 7'b1101_101;4'b0110: Led = 7'b1111_101;4'b0111: Led = 7'b0000_111;4'b1000:

14、 Led = 7'b1111_111;4'b1001: Led = 7'b1101_111; default: Led = 7'b0000_000;endcaseif(SEL=3'b001)Led=7'b1000_000;if(SEL=3'b000)case(shiwei3) 4'b0000: Led = 7'b0111_111;4'b0001: Led = 7'b0000_110;4'b0010: Led = 7'b1011_011;4'b0011: Led = 7'b10

15、01_111;4'b0100: Led = 7'b1100_110;4'b0101: Led = 7'b1101_101;4'b0110: Led = 7'b1111_101;4'b0111: Led = 7'b0000_111;4'b1000: Led = 7'b1111_111;4'b1001: Led = 7'b1101_111; default: Led = 7'b0000_000;endcase if(SEL=3'b111)case(gewei3) 4'b0000:

16、 Led = 7'b0111_111;4'b0001: Led = 7'b0000_110;4'b0010: Led = 7'b1011_011;4'b0011: Led = 7'b1001_111;4'b0100: Led = 7'b1100_110;4'b0101: Led = 7'b1101_101;4'b0110: Led = 7'b1111_101;4'b0111: Led = 7'b0000_111;4'b1000: Led = 7'b1111_1

17、11;4'b1001: Led = 7'b1101_111; default: Led = 7'b0000_000;endcase SEL = SEL + 3'd1; endassign LEDAG=Led;endmodule三实验结果描述实验显示的数字钟具有时、分、秒小时功能,以24小时循环计时;具有清零,调小时、分钟功能。具有整点报时功能,且在整点报时的同时LED灯花样显示。满足了实验设计的各个要求。四.心得体会 刚才开始接触逻辑设计会觉得很简单:因为verilog的语法不多,半天就可以把书看完了。但是很快就发现这个想法是错误的,因为会发现综合器怎么和自己的想法差别这么大:竟然连用for循环写的一个计数器都不认识!原因是做逻辑设计的思维和做软件的很不相同,我们需要从电路的角度去考虑问题。我们设计的是数字电路,它是由很多很多的与非门及D触发器构成的,上电之后所有与非门和D触发器都同时工作,不会因为A触发器的代码描述在B触发器之前A触发器就是先工作,事实上,RTL级代码的代码先后顺序在综合成网表文件后这种顺序就消失了,取代的是基本逻辑电路之间的互联关系描述;因此逻辑设计需要的是一种并发的思维,我们也需要用并发的思维去考虑电路的设计。承载体就是时序逻辑,也就是那些触发器。 其次就是要熟悉基本电路的设计。基本的电路不是很多

温馨提示

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

评论

0/150

提交评论