EDA技术与Verilog HDL课程论文

上传人:lis****210 文档编号:174118099 上传时间:2022-12-14 格式:DOCX 页数:11 大小:296.71KB
返回 下载 相关 举报
EDA技术与Verilog HDL课程论文_第1页
第1页 / 共11页
EDA技术与Verilog HDL课程论文_第2页
第2页 / 共11页
EDA技术与Verilog HDL课程论文_第3页
第3页 / 共11页
点击查看更多>>
资源描述
EDA 技术与 Verilog HDL 课程论文简单的时钟设计学院:信息科学与工程学院班级:XX班姓名: xxx学号: XX教师: XX一设计要求概述1设计要求1)具有时、分、秒计数显示功能,以 24 小时循环计时。2)具有清零,调节小时、分钟功能(加入了整点报时,闪光 灯的特效)。2设计目的1)数字钟学习的目的是掌握多位计数器相连的设计方法;2)掌握十进制、六进制、二十四进制计数器的设计方法;3)巩固多位共阴极扫描显示数码管的驱动及编码;4)掌握 CPLD、FPGA 技术的层次化设计方法二基于Verilog HDL语言的电路设计、仿真与综合本程序采用结构化设计方法,将其分为彼此独立又有一定联系 的三个模块一)顶层模块,如图 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 = 32d50000) ? 32d0 : (Cout + 32d1);CP_En = (Cout = 32d50000) ? 1d1 : 1d0;CPout = CP_En;endendmodule功能仿真波形如图2 所示控制器的作用是,调整小时和分钟的值,并能实现清零功能。 计数器的作用是实现分钟和秒钟满60进 1,小时则由23 跳到 00。当 到达59分55秒的时候,LED灯会闪烁来进行报时。因为控制器和计 数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。源程序如下:module kongzhiqi( CPout,S1,S2,RET,Hour,Minute,Second,LED );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; end if(S2=0) beginR2=1;end if(RET=0) beginR8=1;endCout=(Cout=32d1000)?32d0:(Cout + 32d1);Clk_En=(Cout=32d1000)?1d1:1d0;if(Clk_En)beginif(R1=1)beginif(Hour24)Hour=Hour+1;if(Hour=24)beginHour=0;endR1=0;endif(R2=1)beginif(Minute60)Minute=Minute+1;if(Minute=60)beginMinute=0;if(Hour24)Hour=Hour+1;if(Hour=24)beginHour=0;endendR2=0;endif(Second60)Second=Second+1;if(Second=60)beginSecond=0;if(Minute60)Minute=Minute+1;if(Minute=60)beginMinute=0;if(Hour55) 整点倒计时 begin if(LED=1)LED=0;elseLED=1;endelseLED=0;if(R8=1) 清零beginHour=0;Minute=0;Second=0;R8=0;endendendendmodule功能仿真波形如图3 所示:CFout田 HourHour 0Hour 1 Hour2Hour 3Hour4Hour 5LED田 MinuteMmu.曰二聰显示器显示器的作用是将时分秒的值在数码管上依次显示出来。从 分频器输出的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,ge1,shi2,ge2,shi3,ge3;always (posedge CPout )beginshiwei1=Hour/10;gewei1=Hour%10;shiwei2=Minute/10;gewei2=Minute%10;shiwei3=Second/10;/判断位选 SEL 的值,并将此位上的值输出到gewei3=Second%10;if(SEL=3b110)数码管case(shiwei1)4b0000:4b0001:4b0010:4b0011:4b0100:4b0101:4b0110:4b0111:4b1000:4b1001:default:endcase if(SEL=3b101)case(gewei1)4b0000:4b0001:4b0010:4b0011:4b0100:4b0101:4b0110:4b0111:4b1000:4b1001:default:endcase if(SEL=3b100)Led=7b1000_000; if(SEL=3b011)case(shiwei2)4b0000:4b0001:4b0010:4b0011:4b0100:4b0101:4b0110:4b0111:4b1000:4b1001:default:endcaseif(SEL=3b010)Led = 7b0111_111;Led = 7b0000_110;Led = 7b1011_011;Led = 7b1001_111;Led = 7b1100_110;Led = 7b1101_101;Led = 7b1111_101;Led = 7b0000_111;Led = 7b1111_111;Led = 7b1101_111;Led = 7b0000_000;Led = 7b0111_111;Led = 7b0000_110;Led = 7b1011_011;Led = 7b1001_111;Led = 7b1100_110;Led = 7b1101_101;Led = 7b1111_101;Led = 7b0000_111;Led = 7b1111_111;Led = 7b1101_111;Led = 7b0000_000;Led = 7b0111_111;Led = 7b0000_110;Led = 7b1011_011;Led = 7b1001_111;Led = 7b1100_110;Led = 7b1101_101;Led = 7b1111_101;Led = 7b0000_111;Led = 7b1111_111;Led = 7b1101_111;Led = 7b0000_000;case(gewei2)4b0000:4b0001:4b0010:4b0011:4b0100:4b0101:4b0110:4b0111:4b1000:4b1001:default:endcaseif(SEL=3b001)Led=7b1000_000; if(SEL=3b000)case(shiwei3)4b0000:4b0001:4b0010:4b0011:4b0100:4b0101:4b0110:4b0111:4b1000:4b1001:default:endcaseif(SEL=3b111) case(gewei3)4b0000:4b0001:4b0010:4b0011:4b0100:4b0101:4b0110:4b0111:4b1000:4b1001:default:endcaseLed = 7b0111_111;Led = 7b0000_110;Led = 7b1011_011;Led = 7b1001_111;Led = 7b1100_110;Led = 7b1101_101;Led = 7b1111_101;Led = 7b0000_111;Led = 7b1111_111;Led = 7b1101_111;Led = 7b0000_000;Led = 7b0111_111;Led = 7b0000_110;Led = 7b1011_011;Led = 7b1001_111;Led = 7b1100_110;Led = 7b1101_101;Led = 7b1111_101;Led = 7b0000_111;Led = 7b1111_111;Led = 7b1101_111;Led = 7b0000_000;Led = 7b0111_111;Led = 7b0000_110;Led = 7b1011_011;Led = 7b1001_111;Led = 7b1100_110;Led = 7b1101_101;Led = 7b1111_101;Led = 7b0000_111;Led = 7b1111_111;Led = 7b1101_111;Led = 7b0000_000;SEL = SEL + 3d1; endassignLEDAG=Led;endmodule三实验结果描述实验显示的数字钟具有时、分、秒小时功能,以24小时循环计时; 具有清零,调小时、分钟功能。具有整点报时功能,且在整点报时的 同时 LED 灯花样显示。满足了实验设计的各个要求。四.心得体会刚才开始接触逻辑设计会觉得很简单:因为 verilog 的语法不多, 半天就可以把书看完了。但是很快就发现这个想法是错误的,因为会 发现综合器怎么和自己的想法差别这么大:竟然连用for循环写的一 个计数器都不认识!原因是做逻辑设计的思维和做软件的很不相同, 我们需要从电路的角度去考虑问题。我们设计的是数字电路,它是由 很多很多的与非门及 D 触发器构成的,上电之后所有与非门和 D 触 发器都同时工作,不会因为 A 触发器的代码描述在 B 触发器之前 A 触发器就是先工作,事实上,RTL级代码的代码先后顺序在综合成网 表文件后这种顺序就消失了,取代的是基本逻辑电路之间的互联关系 描述;因此逻辑设计需要的是一种并发的思维,我们也需要用并发的 思维去考虑电路的设计。承载体就是时序逻辑,也就是那些触发器。其次就是要熟悉基本电路的设计。基本的电路不是很多,也就是D 触发器、计数器、移位寄存器、状态机、多路选择器、译码器等几种, 所有复杂的电路都可由这些基本的电路构成。最后是代码的规范化。 代码规范主要是代码书写、命名等规范。比如不能用TAB键空格、低 电平有效信号命名时加_n(如rst_n等)、每行只能写一行代码等。虽然我们学习了 EDA技术与Verilog HDL这门课程,可是总觉得我 们只达到了入门级的水平,通过这次时钟是设计,稍微提高了一点我 们的相应能力。要想在这条道上一直走下去,我们还得下更过的功夫。 五参考文献1. EDA技术与Verilog HDL潘松黄继业陈龙编著2. 百度文库3.电子系统设计网站
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!