Verilog数字钟课程设计.docx
《Verilog数字钟课程设计.docx》由会员分享,可在线阅读,更多相关《Verilog数字钟课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
Verilog数字钟课程设计
Verilog数字钟课程设计
课程设计报告
课程设计题目:
数字钟系统设计
学号:
0327
学生姓名:
刘新强
专业:
通信工程
班级:
1421302
指导教师:
钟凯
1月4日
摘要
FPGA(FieldProgrammableGateArray,现场可编程门阵列),一种可编程逻辑器件,是当前数字系统设计的主要硬件基础。
可编程逻辑器件的设计过程是利用EDA开发软件和编程和编程工具对器件进行开发的过程。
经过modelsim软件下采用verilog语言实现数字钟系统设计,实现了以下几个方面的功能:
1.数字钟基本计时功能
2.数字钟校时功能
3.数字钟系统报时功能
关键词:
FPGA;VHDL;数字钟
一、FPGA与VHDL简介1
1、FPGA与简介
2、VHDL简介
二、课程设计的目的与要求2
1、教学目的
2、教学要求
3、数字钟系统设计要求
三、设计方案2
1、系统框图
2、模块说明
四、仿真与实现3
1、数字钟基本计时功能实现
2、数字钟校时功能实现
3、数字钟系统报时功能实现
五、实验心得4
六、参考文献4
七、代码5
一、FPGA与VHDL简介
1、FPGA简介
以硬件描述语言(Verilog或VHDL)所完成的电路设计,能够经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件能够被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其它更加完整的记忆块。
系统设计师能够根据需要经过可编辑的连接把FPGA内部的逻辑块连接起来,就仿佛一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接能够按照设计者而改变,因此FPGA能够完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成电路)的速度要慢,无法完成复杂的设计,可是功耗较低。
可是她们也有很多的优点比如能够快速成品,能够被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的可是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,因此这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(ComplexProgrammableLogicDevice,复杂可编程逻辑器件)。
2、VHDL简介
硬件描述语言已经有几十年的发展历史,而且在系统的仿真、验证和设计、综合等方面得到成功的应用。
当前常见的硬件描述语言有VHDL、VerilogHDL、ABEL等[2][3][4]。
VHDL则起源于20世纪70年代末和80年代初,美国国防部提出的VHSIC计划,目标是为下一代集成电路的生产、实践阶段性的工艺极限和完成10万门级以上的电路设计而建立一种新的描述方法[5]。
VHDL的英文全称为Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,是IEEE标准化的硬件描述语言,而且已经成为系统描述的国际公认标准,得到众多EDA公司的支持。
VHDL具有很多的优点使它能够被大多数人认可,被广泛应用在逻辑电路的设计方面,而且成为了标准化的硬件描述语言,其优点如下:
(1)功能强大和设计灵活。
一个简洁的使用VHDL语言编写的程序就能够描述一个复杂的逻辑电路,因为VHDL拥有强大的语言结构[6]。
VHDL多层次的设计描述功能能够有效地控制设计的实现,支持设计库和可重复使用的元件生成,还支持多种设计方式,如层次化设计、模块化设计和同步、异步和随机电路设计。
(2)与具体器件无关。
用VHDL设计硬件电路时不用先确定设计要用到哪种器件,也不用特别熟悉器件的内部结构,这样能够使设计人员专注于进行系统设计。
设计完成后,能够根据消耗的资源选择合适的器件,而不造成资源的浪费。
(3)很强的移植能力。
VHDL由很多不同的工具支持,同一个设计的程序能够在包括综合工具、仿真工具、系统平台等工具中使用。
(4)强大的硬件描述能力。
VHDL能够描述系统级电路和门级电路,而且描述方式多样,能够采用行为描述、寄存器传输描述或者结构描述,也能够用其混合描述方式。
同时,VHDL能够准确地建立硬件电路模型,因为它支持惯性延迟和传输延迟。
VHDL的数据类型很丰富,支持标准定义的数据类型,当标准定义的数据类型不能满足用户的需求时,用户能够自己定义的所需要的数据类型,增加了设计的自由度。
(5)语法规范,易于共享。
当把用VHDL编写的代码文件看作是程序时,它能够作为设计人员之间的交流内容;当把它看作是文档时,能够作为签约双方的合同文本。
VHDL易于共享的特点,使得大规模的协作开发容易实现。
同时,这些特点也促进了VHDL的发展和完善。
综上所述,VHDL有很多其它的硬件描述语言所不具备的优点。
可是,VHDL依然存在一些缺点,主要是3个方面。
(1)要求设计者对硬件电路知识甚至是芯片结构方面的知识了解较多。
应该摆脱一般的高级语言程序设计思路,因为在电路世界里的事件很多是并行发生的,而且硬件电路系统内部的模块能够是互相独立的,也能够是互为因果的,因此,在用VHDL设计硬件电路时应摆脱一般的高级语言程序设计思路。
在设计电路时,应先构思电路,然后才能描述。
(2)不能进行太抽象的系统描述。
因为EDA工具无法综合抽象性太强的系统,故用VHDL描述系统电路时不能太抽象。
当前的VHDL很难综合实际的硬件电路,只能适用于系统建模。
(3)不能描述模拟电路。
对于模拟电路而言,VHDL并不是一种理想的硬件描述语言。
但能够预见,未来硬件描述语言的发展方向是模拟电路和数模混合电路的描述方式。
二、课程设计的目的与要求
1、教学目的
《通信系统FPGA开发》是通信工程专业教学计划中的一门重要专业实践课程,经过进行《通信系统FPGA开发》课程设计的训练,使学生全面掌握FPGA开发的基本操作,巩固verilog硬件描述语言的编写,培养学生正确的设计思想,严肃认真、实事求是的科学态度和勇于探索的创新精神。
注意与生产劳动相结合,重视工艺规程,促进理论联系实际,为毕业设计打下良好的基础。
2、教学要求
从课程设计的目的出发,经过设计工作的各个环节,达到以下教学要求:
(1)了解EDA软件设计的一般操作流程。
(2)掌握FPGA设计系统的一般方法。
(3)熟练掌握使用modelsim和QuartusII软件设计较复杂的数字逻辑电路。
(4)经过查阅手册和文献资料,培养学生独立分析问题和解决实际问题的能力。
3、数字钟系统设计要求
(1)有基础的实时数字钟功能,即时,分,秒的正常显示模式。
(24小时制)
(2)可对系统用手动方式校准,设计两个按键,按动校时键,时计数器加一,按动校分键,则电
路处于校分状态。
(3)整点报时,要求在59分50秒,52秒,54秒,56秒和58秒发出一个低音信号,00分00秒发出一个高音信号。
三、设计方案
1、系统框图:
时计时
秒计时
分计时
进位
进位
Button_min
Button_hour
校分
校时
报时
高音或低音
2、模块说明
秒计时:
60进制计数器,在59秒产生进位信号,并在下一个上升沿清零
分计时:
60进制计数器,在59分产生进位信号,并在下一个上升沿清零
时计时:
24进制计数器,在23H59Min59S产生进位信号,并在下一个上升沿清零
报时模块:
在59分50秒,52秒,54秒,56秒和58秒发出一个低音信号,00分00秒发出一个高音信号。
校时模块
四、仿真与实现
1、数字钟基本计时功能实现:
2、数字钟校时功能实现:
3、数字钟系统报时功能实现:
五、实验心得
经过两周的课程设计,在老师的指导下和同学的帮助下,经过查阅图书馆资料和互联网资源,完成了本次课程设计,期间收获了很多。
做课程设计前,应该先画流程图,做个整体框架结构设计,然后去分别完成各个子模块,由繁入简,简化难度。
及时查阅资料是必要的,有时苦于某一问题时,就应该去看书。
经过本次课程设计,更加熟悉了modelsim软件、verilog硬件描述语言以及EDA设计一般流程,
增强了我的动手查阅手册和文献资料的能力,以及培养独立分析问题和解决实际问题的能力。
六、参考文献
[1]刘福奇.VerilogHDL设计与实践.北京:
北京航天航空大学出版社,.9
[2]王金明.数字系统设计与VerilogHDL(第5版).北京:
电子工业出版社,
七、代码:
1、digital_clock:
moduledigital_clock(clk,reset,button_hour,button_minute,second,minute,hour,alarm_1,alarm_2);
inputclk,reset,button_hour,button_minute;
outputreg[5:
0]second,minute;
outputreg[4:
0]hour;
outputregalarm_1=1,alarm_2=0;
always@(posedgeclk,negedgereset)
begin
if(~reset)//复位
beginsecond<=6'b0;minute<=6'b0;hour<=5'b0;alarm_1<=1;alarm_2<=0;end
else
begin
if(minute==6'd59)
begin
if(second==49||second==51||second==53||second==55||second==57)//报时
alarm_1<=0;
elsealarm_1<=1;
end
if(minute==6'd59&&second==6'd59)alarm_2<=1;elsealarm_2<=0;//报时
if(button_minute==1)beginminute<=minute+1;if(minute==6'd59)minute<=0;end
if(button_hour==1)beginhour<=hour+1;if(hour==5'd23)hour<=0;end//校时
if(second!
=6'd59)second<=second+1;//秒计时
elseif(second==6'd59)
begin
second<=0;minute<=minute+1;//分计时
if(minute==6'd59)
begin
minute<=0;hour<=hour+1;//时计时
if(hour==5'd23)hour<=0;
end
end
end
end
endmodule
2、测试平台文件:
`timescale1ps/1ps
moduledigital_clock_test();
regclk,reset,button_hour,button_minute;
wire[5:
0]second,minute;
wire[4:
0]hour;
wirealarm_1,alarm_2;
digital