《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现

《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现

ID:8316269

大小:7.85 MB

页数:25页

时间:2018-03-18

上传者:U-5649
《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现_第1页
《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现_第2页
《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现_第3页
《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现_第4页
《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现_第5页
资源描述:

《《数字电子技术》课程设计-基于fpga的数字电子时钟设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

02012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计《数字电子技术》课程设计设计题目:基于FPGA的数字电子时钟设计与实现系部:电子与信息工程系专业班级:电子信息工程08秋(1)班小组成员:学号:指导教师:完成日期:2012年1月2202012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计目录一、所用设备与器材21.1仪器设备2二.系统方案22.1设计思想22.1.1课题背景22.1.2QuartusII软件42.2工作原理及系统框图9三.软件方案103.1程序流程图103.1.124进制103.1.210进制流程图113.1.36进制123.1.460进制123.1.5from0to9133.1.6分频模块133.1.7总流程图143.2程序清单153.2.1头文件complete_clock程序153.2.2counter24程序163.2.3counter60程序163.2.4from0to9程序173.2.5counter6程序183.2.6counter10程序183.2.7分频程序183.2.8校时模块程序19四.调试及结果1922 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计4.1模块仿真194.1.1counter10模块仿真194.1.2counter24模块仿真204.1.3counter60模块仿真204.1.4分频模块仿真214.1.5top_clock计时模块仿真214.2程序下载214.3分析运行结果224.3.1设计总结224.3.2心得体会234.3.3致谢2422 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计一、所用设备与器材1.1仪器设备使用仪器设备有FPGADE2-70开发板、PC机、信号发生器。图1FPGADE2-70开发板图二.系统方案2.1设计思想利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。扩展功能设计为倒计时功能,从59分55秒至59分59秒,每秒亮一盏灯报时。2.1.1课题背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。20世纪80年代末,出现了FPGA(FieldProgrommableGate22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计Array),CAE和CAD技术的应用更为广泛,它们在PCB设计的原理图输入,自动布局布线及PCB分析,以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。本论文就是应用VHDL语言来实现秒表的电路设计。VHDL语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。    利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。    现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA设计可分为系统级、电路级和物理实现级。用VHDL语言开发的流程:(1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件。(2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计(4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。(5)编程下载:确认仿真无误后,将文件下载到芯片中。本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时的循环计数:具有校对功能。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在Quartus工具软件下,采用自顶向下的设计方式,由各个基本模块共同构建了一个基本FPGA的数字钟。系统主芯片采用EP2C70F896C6,有时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的方向发展。人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生活带来了极大的方便。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。本次设计以数字电子为主,实现对时、分、秒数字显示的计时装置,周期为24小时,显示满刻度为23时59分59秒,并具有校时功能和报时功能的数字电子钟。课程设计所采用的开发平台:QuartusII是可编程片上系统的综合性设计环境,它支持CPLD和FPGA器件的开发。FPGA(FieldProgrammableGateArray)现场可编程门阵列,内部主要由许多可编程逻辑模块组成,靠纵横交错的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。本次课程设计所采用的FPGA芯片CycloneII系列的EP2C70F896C6。2.1.2QuartusII软件QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计程。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。QuartusII使用基本流程如下:1.打开QuartusII软件,创建工程a.点击工具栏File,利用创建工程向导(NewProjectWizard)创建新工程。图2新建工程图b.工程目录为c:altera71sp1quartus(路径中不能包含中文,不能建立在桌面上),工程名称以及顶层设计实体为counter10(以英文字母开头)。图3创建路径图c.选择与开发板上芯片型号对应的器件。硬件选cycloneⅡEP2C70F896C6。图4芯片选择图22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计d.进入第三方EDA工具选择窗口,在此可以选择使用第三方的EDA工具,如一些布局布线、综合、仿真软件。e.确认无误后,单击Finsh完成工程创建。f.工程创建成功后,在【ProjectNavigator】(资源管理窗口)显示当前工程的层次、文件和设计单元。g.执行File—New—DesignFiles—verilogHDLFile,建立原理图文件。图5原理图文件建立图h.完成后点击File----saveas,保存到c:altera71sp1quartus目录下。i.使用文本编辑器输入源码,完成原理图编译。j.编译工程,执行Processing—start—startAnalysis&Elaboration进行编译,分析检查输入文件是否有错误。2.创建仿真波形文件a.点击New—VectorWaveformFile—saveas图6新建仿真波形文件图b.在Name框图中右击鼠标,Insert—InsertNodeorBus—NodeFinder—在Filter中选择Pinns:all,点击list,点击“》”将左侧列表中的内容移动到右侧列表中。22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计图7插入管脚图c.在CP上右击选择value,选择时钟脉冲信号clock(周期可自行设置)。EN和nCR都选择高电平(ForcingHigh)。图8输入信号赋值d.选择Assignments—Settings设置—simulatersettings—模式mode选择功能型Functionale.选择Processing—generatefunctionalsimulationnetlist生成功能网表图9生成功能网表图f.点击波形仿真的快捷键,进行波形的仿真。g.分别给EN和nCR不同的电平信号,观察分析波形的变化。22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计图10EN=1nCR=1图11EN=0nCR=1图12EN=1nCR=022 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计图13EN=0nCR=0图14EN脉冲nCR=12.2工作原理及系统框图利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。电子时钟扩展功能为倒计时流水灯。数字电子钟的电路组成框图片如下图:22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计图15系统框图1.数字钟电路系统由主体电路和扩展电路两大部分所组成。主体电路主体电路2.数字电子时钟电路具有时、分、秒计时,秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。3.准确计时,以数字形式显示时、分、秒的时间,计数器的输出经译码器送显示器。4.具有分、时校正功能,校正输入脉冲频率为1Hz5.复位功能,时、分、秒计时清零。6.扩展功能为:具有仿广播电台整点报时的功能,即每逢59分51秒、52秒、53秒、54秒、55秒及57秒,LED绿灯依此点亮,59分59秒时,LED红灯亮,形成倒计时流水灯报时。三.软件方案3.1程序流程图3.1.124进制小时采用24进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,23],使能信号EN等于0时,计时器保持。当高位大于2或高位等于2且低位大于3时,计时器清零,否则继续计时。流程图见下图。22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计图1624进制程序流程图3.1.210进制流程图当CP↑,EN和nCR为高电平时计数,计数范围为[0,9],使能信号EN等于0时,计时器保持。当计时到9的时候,计时器清零,否则继续计时。流程图见下图。图1710进制流程图22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计3.1.36进制当CP↑,EN和nCR为高电平时计数,计数范围为[0,5],使能信号EN等于0时,计时器保持。当计时到5的时候,计时器清零,否则继续计时。流程图见下图。图186进制流程图3.1.460进制分、秒采用60进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,59],使能信号EN等于0时,计时器保持。当个位等于9时向十位进位;当个位等于9十位等于5,计时器清零,否则继续计时。流程图见下图。图1960进制流程图22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计3.1.5from0to9数码管有7段组成,分共阳极和共阴极,本次设计采用共阳极数码管。当输入为低电平时,数码管显示;当输入为高电平时,数码管不显示。用这样的方法输入不同的高低信号控制数码管的显示。图20from0to9流程图3.1.6分频模块图21分频模块流程图22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计3.1.7总流程图图22总流程图22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计3.2程序清单3.2.1头文件complete_clock程序modulecomplete_clock(HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,_50MHzIn,_1Hz,_50Hz,_5KHz,_500KHz,AdjMinkey,AdjHrkey,nCR,Alarm,LED0,LED10,LED3,LED4,LED5,LED6,LED7,LED8,LED9);output[7:0]HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;outputAlarm,_1Hz,_50Hz,_5KHz,_500KHz;outputLED0;outputLED10;outputLED3;outputLED4;outputLED5;outputLED6;outputLED7;outputLED8;outputLED9;wire[7:0]HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;inputnCR,_50MHzIn;wire_1Hz,_50Hz,_5KHz,_500KHz;wireLED0;wireLED10;wireLED3;wireLED4;wireLED5;wireLED6;wireLED7;wireLED8;wireLED9;inputAdjMinkey,AdjHrkey;wire[7:0]Second,Minute,Hour;Divided_FrequencyC1(_5KHz,_500KHz,nCR,_50MHzIn);//调用分频模块,输入50MHz的频率,经两次分频后变为5KHzDivided_FrequencyU0(_1Hz,_50Hz,nCR,_5KHz);//调用分频模块,输入5KHz的频率,经两次分频后变为1Hztop_clockU1(Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey);//调用校时模块,对时、分模块进行校时baoshiU2(Alarm_Ring,Minute,Second,_50Hz,_5KHz);assignAlarm=Alarm_Ring;assignLED0=({Minute,Second}==16'h5951);//定义LED0为59分51秒时灯亮assignLED10=({Minute,Second}==16'h5952);//定义LED10为59分52秒时灯亮assignLED3=({Minute,Second}==16'h5953);//定义LED3为59分53秒时灯亮assignLED4=({Minute,Second}==16'h5954);//定义LED4为59分54秒时灯亮assignLED5=({Minute,Second}==16'h5955);//定义LED5为59分55秒时灯亮assignLED6=({Minute,Second}==16'h5956);//定义LED6为59分56秒时灯亮22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计assignLED7=({Minute,Second}==16'h5957);//定义LED7为59分57秒时灯亮assignLED8=({Minute,Second}==16'h5958);//定义LED8为59分58秒时灯亮assignLED9=({Minute,Second}==16'h5959);//定义LED9为59分59秒时灯亮from0to9U10(HEX0,Second[3:0]);//个位秒调用译码from0to9U9(HEX1,Second[7:4]);//十位秒调用译码from0to9U3(HEX2,Minute[3:0]);//个位分调用译码from0to9U4(HEX3,Minute[7:4]);//个位分调用译码from0to9U5(HEX4,Hour[3:0]);//个位时调用译码from0to9U6(HEX5,Hour[7:4]);//十位时调用译码endmodule3.2.2counter24程序modulecounter24(CntH,CntL,nCR,EN,CP);inputCP,nCR,EN;output[3:0]CntH,CntL;reg[3:0]CntH,CntL;always@(posedgeCPornegedgenCR)beginif(~nCR){CntH,CntL}<=8'h00;//当nCR=0时,计时器清零elseif(~EN){CntH,CntL}<={CntH,CntL};//当EN=0时,停止计时,保持elseif((CntH>2)||(CntH>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;elseif((CntH==2)&&(CntL<3))beginCntH<=CntH;CntL<=CntL+1'b1;endelseif(CntL==9)beginCntH<=CntH+1'b1;CntL<=4'b0000;endelsebeginCntH<=CntH;CntL<=CntL+1'b1;endendEndmodule3.2.3counter60程序modulecounter60(Q1,Q2,Q3,Q4,Q5,Q6,Cnt,Cnt1,Cnt24,nCR,EN,CP,LED,LED1,LED2);inputCP,nCR,EN;output[7:0]Cnt;output[7:0]Cnt1;output[7:0]Cnt24;output[6:0]Q1;output[6:0]Q2;output[6:0]Q3;output[6:0]Q4;output[6:0]Q5;output[6:0]Q6;outputLED;outputLED1;outputLED2;wire[7:0]Cnt;22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计wire[7:0]Cnt1;wire[7:0]Cnt24;wire[6:0]Q1;wire[6:0]Q2;wire[6:0]Q3;wire[6:0]Q4;wire[6:0]Q5;wire[6:0]Q6;wireLED;wireLED1;wireLED2;wireENP;wireENP1;wireENP2;wireENP3;counter10UC0(Cnt[3:0],nCR,EN,CP);counter6UC1(Cnt[7:4],nCR,ENP,CP);counter10UC2(Cnt1[3:0],nCR,ENP1,CP);counter6UC3(Cnt1[7:4],nCR,ENP2,CP);counter24UC4(Cnt24[7:4],Cnt24[3:0],nCR,ENP3,CP);assignENP=(Cnt[3:0]==4'h9);assignENP1=(Cnt==8'h59);assignENP2=((Cnt1[3:0]==4'h9)&&(Cnt==8'h59));assignENP3=((Cnt1==8'h59)&&(Cnt==8'h59));assignLED=~CP;assignLED1=~CP;assignLED2=~CP;from0to9UC5(Q1,Cnt[3:0]);from0to9UC6(Q2,Cnt[7:4]);from0to9UC7(Q3,Cnt1[3:0]);from0to9UC8(Q4,Cnt1[7:4]);from0to9UC9(Q5,Cnt24[3:0]);from0to9UC10(Q6,Cnt24[7:4]);Endmodule3.2.4from0to9程序modulefrom0to9(HEX,D);output[6:0]HEX;input[3:0]D;reg[6:0]HEX;always@(D)begincase(D)4'd0:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd1:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd2:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计4'd3:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd4:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd5:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd6:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd7:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd8:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;4'd9:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;default:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b;endcaseendendmodule3.2.5counter6程序modulecounter6(Q,nCR,EN,CP);inputCP,nCR,EN;output[3:0]Q;reg[3:0]Q;always@(posedgeCPornegedgenCR)beginif(~nCR)Q<=4'b0000;//当nCR=0时,计时器清零elseif(~EN)Q<=Q;//当EN=0时,停止计时,保持elseif(Q==4'b0101)Q<=4'b0000;elseQ<=Q+1'b1;//计时器正常计时endEndmodule3.2.6counter10程序modulecounter10(Q,nCR,EN,CP);inputCP,nCR,EN;output[3:0]Q;reg[3:0]Q;always@(posedgeCPornegedgenCR)beginif(~nCR)Q<=4'b0000;//当nCR=0时,计时器清零elseif(~EN)Q<=Q;//当EN=0时,停止计时,保持elseif(Q==4'b1001)Q<=4'b0000;elseQ<=Q+1'b1;//计时器正常计时endEndmodule3.2.7分频程序moduleDivided_Frequency(_1HzOut,nCR,_5kHzIN);input_5kHzIN,nCR;output_1HzOut;supply1Vdd;//定义Vdd是高电平wire[15:0]Q;//计时器的输出信号(中间变量)wireEN1,EN2,EN3;//计时器的使能信号(中间变量)counter10DU0(Q[3:0],nCR,Vdd,_5kHzIN);//调用十进制22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计counter10DU1(Q[7:4],nCR,EN1,_5kHzIN);counter10DU2(Q[11:8],nCR,EN2,_5kHzIN);counter10DU3(Q[15:12],nCR,EN3,_5kHzIN);assignEN1=(Q[3:0]==4'h9);assignEN2=(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assignEN3=(Q[11:8]==4'h9)&(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign_1HzOut=Q[15];//assign_500HzOut=Q[0];endmodule3.2.8校时模块程序moduletop_clock(Second,Minute,Hour,_1Hz,nCR,AdjMinKey,AdjHrkey);input_1Hz,nCR,AdjMinKey,AdjHrkey;output[7:0]Second,Minute,Hour;wire[7:0]Hour,Minute,Second;supply1Vdd;wireMinCP,HrCP;counter60UT1(Second,nCR,Vdd,_1Hz);//调用counter60,对秒计时counter60UT2(Minute,nCR,Vdd,~MinCP);//调用counter60,对分校时counter24UT3(Hour[7:4],Hour[3:0],nCR,Vdd,~HrCP);//调用counter24,对时校时assignMinCP=AdjMinKey?_1Hz:(Second==8'h59);//当MinCP=AdjMinKey时,执行校时,当MinCP≠AdjMinKey时,秒计时至59时向分进位assignHrCP=AdjHrkey?_1Hz:({Minute,Second}==16'h5959);//当HrCP=AdjHrkey时,执行校时,当HrCP≠AdjHrkey时,分秒计时至59分59秒时向时进位Endmodule四.调试及结果4.1模块仿真4.1.1counter10模块仿真CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,9]图23counter10仿真波形图22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计4.1.2counter24模块仿真CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,23]图24counter24仿真波形图4.1.3counter60模块仿真CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,59]图25counter60仿真波形图4.1.4分频模块仿真分频器是将输入的基本时钟信号分频为其他模块需要的5kHZ和1HZ的信号.其中CLK输入为5kHZ,CLK2输出1HZ信号,分频实际也是用了计数器的原理。图26分频模块仿真波形图4.1.5top_clock计时模块仿真22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计当秒计时到59时,向分进一位,当秒计时到59且分计时到59时向时进一位。当时分秒计时到23’59’59时,计时器清零。图27top_clock计时模块仿真波形图4.2程序下载图28时测试校时,时至23图29时测试校时,时进位至00图30分测试校时分至59图31分测试校时,分进位至00图3259分52秒,LEDG1亮图3359分55秒,LEDG4亮22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计图3459分57秒,LEDG6亮图3559分59秒,LEDR0亮4.3分析运行结果4.3.1设计总结本次大型作业我们所研究的课题是基于FPGA的数字电子时钟的设计与实现。时钟设计的方法是通过计时模块、分频模块、校时模块、译码显示模块和倒计时报时模块来构成该电子时钟。计时模块为时分秒计时,采用24进制计时。因此该模块中调用了24进制和60进制两个程序,其中60进制采用的是调用6进制和10进制的方法来实现。分频模块输入一频率为50MHz的信号,经过四次10^2分频,将信号逐次分为500KHz、5KHz、50Hz直至0.5Hz。计时模块就由分频器分频出来的标准秒脉冲进行计时,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。我们还进行了扩展功能设计——倒计时流水灯功能,从59分55秒至59分59秒,每秒亮一盏灯报时,55秒至58秒,依此亮绿灯,59秒亮红灯。通过这两周的课程设计,我们熟悉了基于FPGA的数字电子时钟的设计与实现的整个流程,文本编辑,功能仿真,逻辑综合,布局布线,编程下载,每一步刚开始或多或少有些问题,但在我们不断努力学习补充修改后,最终圆满完成数字电子时钟的时、分、秒的计时和校时功能,复位功能,还设计实现了倒计时流水灯扩展功能。4.3.2心得体会为期两周的大型作业,我们组顺利完成了基于22 222012.1上海师范大学天华学院电信系数字集成器件与应用专业课程设计FPGA的数字电子时钟设计与实现的课程设计。从刚开始对Verilog语言非常陌生,到最后接近熟练地掌握Verilog语言的程度,期间花费不少时间和精力,同时也收获了很多,学会了使用Verilog语言编程仿真电路实验,掌握了可编程逻辑器件的应用开发技术,熟悉了一种EDA软件使用,掌握了Verilog设计方法,即分模块分层次的设计方法。在设计的过程中,因为刚刚接触这种编程语言,我们也遇到了很多问题。但是我们没有放弃过,不断检查纠正错误。Verilog源程序的编写很容易出现错误,这就需要耐心的调试。因为很多情况下,一长串的错误往往是由一个不经意的小错误引起的。有时程序一直出错找不到原因的时候,我们也会去虚心向别的组的同学请教,或者和他们一起讨论问题,从中得到一些启发。由于设备和时间的限制,我们还有一部分扩展内容没能够完成,即数字钟的整点蜂鸣报时功能。但本次设计实验已使我们对Verilog语言产生了浓厚的兴趣,在以后的学习生活中会主动去了解更多有关这方面的知识及其在实践中的应用。这次大型作业,不仅让我们又掌握了一些新的知识,也提高了我们的动手能力和科学严谨的精神。其次也培养了我们自学的能力,遇到不明白的地方可以通过思考、查资料、与同学交流多种方式解决问题。这些对于我们以后的学习和工作都有极大的帮助。4.3.3致谢最后,我们要感谢系里提供这一次的机会让我们学到更多知识,并且提供了这么好的学习条件,设备、学习环境、师资等方面都非常好。同时也要感谢周丽婕老师和陶亚雄老师两周以来耐心的指导,在我们遇到问题的时候,是她们悉心的指导帮助和不厌其烦的讲解下我们才得以顺利的完成这次的设计,我们再次表示由衷的感谢!22

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭