

免费预览已结束,剩余24页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
02012.1 上海师范大学天华学院电信系数字集成器件与应用专业课程设计 数字电子技术课程设计设计题目:基于fpga的数字电子时钟设计与实现系 部: 电子与信息工程系 专业班级: 电子信息工程08秋(1)班 小组成员: 学 号: 指导教师 : 完成日期: 2012年 1 月23232012.1 上海师范大学天华学院电信系数字集成器件与应用专业课程设计 目录一、所用设备与器材21.1仪器设备2二系统方案22.1 设计思想22.1.1课题背景22.1.2 quartus ii软件42.2工作原理及系统框图9三软件方案103.1 程序流程图103.1.1 24进制103.1.2 10进制流程图113.1.3 6进制123.1.4 60进制123.1.5 from0to9133.1.6 分频模块133.1.7 总流程图143.2 程序清单153.2.1头文件complete_clock程序153.2.2 counter24程序163.2.3 counter60程序163.2.4 from0to9程序173.2.5 counter6程序183.2.6 counter10程序183.2.7 分频程序183.2.8 校时模块程序19四调试及结果194.1 模块仿真194.1.1 counter10模块仿真194.1.2 counter24模块仿真204.1.3 counter60模块仿真204.1.4 分频模块仿真214.1.5 top_clock计时模块仿真214.2 程序下载214.3分析运行结果224.3.1 设计总结224.3.2 心得体会234.3.3 致谢24一、所用设备与器材 1.1仪器设备使用仪器设备有fpga de2-70开发板、pc机、信号发生器。图1 fpga de2-70开发板图二系统方案2.1 设计思想利用数字电子技术、eda设计方法、fpga等技术,设计、仿真并实现一个基于fpga的数字电子时钟基本功能, 其基本组成框图如图1所示,振荡器采用altera的de2-70实验板的50mhz输出,分频器将50mhz的方波进行分频进而得到1hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。扩展功能设计为倒计时功能,从59分55秒至59分59秒,每秒亮一盏灯报时。2.1.1课题背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。20世纪80年代末,出现了fpga(field progrommable gate 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工业标准文件。(4)布局布线:将.edf文件调入pld厂家提供的软件中进行布线,即把设计好的逻辑安放到pld/fpga内。(5)编程下载:确认仿真无误后,将文件下载到芯片中。本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时的循环计数:具有校对功能。本设计采用eda技术,以硬件描述语言vhdl为系统逻辑描述手段设计文件,在quartus 工具软件下,采用自顶向下的设计方式,由各个基本模块共同构建了一个基本fpga的数字钟。系统主芯片采用ep2c70f896c6,有时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的方向发展。人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生活带来了极大的方便。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。本次设计以数字电子为主,实现对时、分、秒数字显示的计时装置,周期为24小时,显示满刻度为23时59分59秒,并具有校时功能和报时功能的数字电子钟。课程设计所采用的开发平台:quartus ii是可编程片上系统的综合性设计环境,它支持cpld和fpga器件的开发。fpga (field programmable gate array)现场可编程门阵列,内部主要由许多可编程逻辑模块组成,靠纵横交错的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。本次课程设计所采用的fpga芯片 cyclone ii系列的ep2c70f896c6。2.1.2 quartus ii软件 quartus ii 是altera公司的综合性pld开发软件,支持原理图、vhdl、veriloghdl以及ahdl(altera hardware description language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整pld设计程。quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 quartus ii支持altera的ip核,包含了lpm/megafunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方eda工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方eda工具。quartus ii使用基本流程如下:1.打开quartus ii软件,创建工程a.点击工具栏file,利用创建工程向导(new project wizard)创建新工程。 图2 新建工程图b.工程目录为c:altera71sp1quartus(路径中不能包含中文,不能建立在桌面上),工程名称以及顶层设计实体为counter10(以英文字母开头)。 图3 创建路径图 c.选择与开发板上芯片型号对应的器件。硬件选cyclone ep2c70f896c6。 图4 芯片选择图d.进入第三方eda工具选择窗口,在此可以选择使用第三方的eda工具,如一些布局布线、综合、仿真软件。 e.确认无误后,单击finsh完成工程创建。f.工程创建成功后,在【project navigator】(资源管理窗口)显示当前工程的层次、文件和设计单元。 g.执行filenewdesign filesverilog hdl file,建立原理图文件。图5 原理图文件建立图h.完成后点击file -save as,保存到c:altera71sp1quartus目录下。i.使用文本编辑器输入源码,完成原理图编译。j.编译工程,执行processingstartstart analysis&elaboration进行编译,分析检查输入文件是否有错误。2创建仿真波形文件a.点击newvector waveform filesave as 图6 新建仿真波形文件图b.在name框图中右击鼠标,insertinsert node or busnode finder在filter中选择pinns:all,点击list,点击“”将左侧列表中的内容移动到右侧列表中。 图7 插入管脚图c.在cp上右击选择value,选择时钟脉冲信号clock(周期可自行设置)。en和ncr都选择高电平(forcing high)。图8 输入信号赋值d.选择assignmentssettings设置simulater settings模式mode选择功能型functionale.选择processinggenerate functional simulation netlist生成功能网表图9 生成功能网表图f.点击波形仿真的快捷键,进行波形的仿真。g.分别给en和ncr不同的电平信号,观察分析波形的变化。图10 en=1 ncr=1 图11 en=0 ncr=1图12 en=1 ncr=0图13 en=0 ncr=0图14 en脉冲 ncr=12.2工作原理及系统框图利用数字电子技术、eda设计方法、fpga等技术,设计、仿真并实现一个基于fpga的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用altera的de2-70实验板的50mhz输出,分频器将50mhz的方波进行分频进而得到1hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。电子时钟扩展功能为倒计时流水灯。数字电子钟的电路组成框图片如下图:图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.1 24进制小时采用24进制计时,当cp,en和ncr为高电平时计数,计数范围为0,23,使能信号en等于0时,计时器保持。当高位大于2或高位等于2且低位大于3时,计时器清零,否则继续计时。流程图见下图。图16 24进制程序流程图3.1.2 10进制流程图当cp,en和ncr为高电平时计数,计数范围为0,9,使能信号en等于0时,计时器保持。当计时到9的时候,计时器清零,否则继续计时。流程图见下图。图17 10进制流程图3.1.3 6进制当cp,en和ncr为高电平时计数,计数范围为0,5,使能信号en等于0时,计时器保持。当计时到5的时候,计时器清零,否则继续计时。流程图见下图。图18 6进制流程图3.1.4 60进制分、秒采用60进制计时,当cp,en和ncr为高电平时计数,计数范围为0,59,使能信号en等于0时,计时器保持。当个位等于9时向十位进位;当个位等于9十位等于5,计时器清零,否则继续计时。流程图见下图。图19 60进制流程图3.1.5 from0to9数码管有7段组成,分共阳极和共阴极,本次设计采用共阳极数码管。当输入为低电平时,数码管显示;当输入为高电平时,数码管不显示。用这样的方法输入不同的高低信号控制数码管的显示。图20 from0to9流程图3.1.6 分频模块图21 分频模块流程图3.1.7 总流程图图22 总流程图3.2 程序清单3.2.1头文件complete_clock程序 module complete_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;output alarm,_1hz,_50hz,_5khz,_500khz;output led0;output led10;output led3;output led4;output led5;output led6;output led7;output led8;output led9;wire 7:0 hex0,hex1,hex2,hex3,hex4,hex5;input ncr,_50mhzin;wire _1hz,_50hz,_5khz,_500khz;wire led0;wire led10;wire led3;wire led4;wire led5;wire led6;wire led7; wire led8;wire led9;input adjminkey,adjhrkey;wire 7:0 second,minute,hour;divided_frequency c1(_5khz,_500khz,ncr,_50mhzin);/调用分频模块,输入50mhz的频率,经两次分频后变为5khzdivided_frequency u0(_1hz,_50hz,ncr,_5khz);/调用分频模块,输入5khz的频率,经 两次分频后变为1hz top_clock u1(hour,minute,second,_1hz,ncr,adjminkey,adjhrkey);/调用校时模块, 对时、分模块进行校时 baoshi u2(alarm_ring,minute,second,_50hz,_5khz);assign alarm=alarm_ring;assign led0=(minute,second=16h5951);/定义led0为59分51秒时灯亮assign led10=(minute,second=16h5952);/定义led10为59分52秒时灯亮assign led3=(minute,second=16h5953);/定义led3为59分53秒时灯亮assign led4=(minute,second=16h5954);/定义led4为59分54秒时灯亮assign led5=(minute,second=16h5955);/定义led5为59分55秒时灯亮assign led6=(minute,second=16h5956);/定义led6为59分56秒时灯亮assign led7=(minute,second=16h5957);/定义led7为59分57秒时灯亮assign led8=(minute,second=16h5958);/定义led8为59分58秒时灯亮assign led9=(minute,second=16h5959);/定义led9为59分59秒时灯亮from0to9 u10(hex0,second3:0); /个位秒调用译码from0to9 u9(hex1,second7:4); /十位秒调用译码from0to9 u3(hex2,minute3:0); /个位分调用译码from0to9 u4(hex3,minute7:4); /个位分调用译码from0to9 u5(hex4,hour3:0); /个位时调用译码from0to9 u6(hex5,hour7:4); /十位时调用译码endmodule3.2.2 counter24程序 module counter24(cnth,cntl,ncr,en,cp);input cp,ncr,en;output 3:0 cnth,cntl;reg 3:0 cnth,cntl;always (posedge cp or negedge ncr)begin if(ncr) cnth,cntl=8h00;/当ncr=0时,计时器清零 else if(en) cnth,cntl2)|(cnth9)|(cnth=2)&(cntl=3) cnth,cntl=8h00; else if(cnth=2)&(cntl3) begin cnth=cnth;cntl=cntl+1b1;end else if(cntl=9) begin cnth=cnth+1b1;cntl=4b0000;end else begin cnth=cnth;cntl=cntl+1b1;endendendmodule3.2.3 counter60程序 module counter60(q1,q2,q3,q4,q5,q6,cnt,cnt1,cnt24,ncr,en,cp,led,led1,led2);input cp,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;output led;output led1;output led2;wire 7:0 cnt;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;wire led;wire led1;wire led2;wire enp;wire enp1;wire enp2;wire enp3;counter10 uc0(cnt3:0,ncr,en,cp);counter6 uc1(cnt7:4,ncr,enp,cp);counter10 uc2(cnt13:0,ncr,enp1,cp);counter6 uc3(cnt17:4,ncr,enp2,cp);counter24 uc4(cnt247:4,cnt243:0,ncr,enp3,cp);assign enp=(cnt3:0=4h9);assign enp1=(cnt=8h59);assign enp2=(cnt13:0=4h9)&(cnt=8h59);assign enp3=(cnt1=8h59)&(cnt=8h59);assign led=cp;assign led1=cp;assign led2=cp;from0to9 uc5(q1,cnt3:0);from0to9 uc6(q2,cnt7:4);from0to9 uc7(q3,cnt13:0);from0to9 uc8(q4,cnt17:4);from0to9 uc9(q5,cnt243:0);from0to9 uc10(q6,cnt247:4);endmodule3.2.4 from0to9程序 module from0to9(hex,d);output 6:0 hex;input 3:0 d;reg 6:0 hex;always (d) begincase(d)4d0:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0000001;4d1:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b1001111;4d2:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0010010;4d3:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0000110;4d4:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b1001100;4d5:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0100100;4d6:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0100000;4d7:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0001111;4d8:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0000000;4d9:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b0000100;default:hex0,hex1,hex2,hex3,hex4,hex5,hex6=7b1111111;endcaseendendmodule3.2.5 counter6程序 module counter6(q,ncr,en,cp);input cp,ncr,en;output 3:0 q;reg 3:0 q;always (posedge cp or negedge ncr)beginif(ncr) q=4b0000;/当ncr=0时,计时器清零 else if(en) q=q;/当en=0时,停止计时,保持 else if(q=4b0101) q=4b0000;else q=q+1b1;/计时器正常计时endendmodule3.2.6 counter10程序 module counter10(q,ncr,en,cp);input cp,ncr,en;output 3:0 q;reg 3:0 q;always (posedge cp or negedge ncr)beginif(ncr) q=4b0000;/当ncr=0时,计时器清零 else if(en) q=q;/当en=0时,停止计时,保持else if(q=4b1001) q=4b0000;else q=q+1b1;/计时器正常计时endendmodule3.2.7 分频程序 module divided_frequency(_1hzout,ncr,_5khzin);input _5khzin,ncr;output _1hzout;supply1 vdd;/定义 vdd 是高电平wire 15:0 q;/计时器的输出信号(中间变量 )wire en1,en2,en3;/ 计时器的使能信号(中间变量 )counter10 du0(q3:0,ncr,vdd,_5khzin);/调用十进制counter10 du1(q7:4,ncr,en1,_5khzin);counter10 du2(q11:8,ncr,en2,_5khzin);counter10 du3(q15:12,ncr,en3,_5khzin);assign en1=(q3:0=4h9);assign en2=(q7:4=4h9)&(q3:0=4h9);assign en3=(q11:8=4h9)&(q7:4=4h9)&(q3:0=4h9);assign _1hzout=q15;/assign _500hzout=q0;endmodule3.2.8 校时模块程序 module top_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;supply1 vdd;wire mincp,hrcp;counter60 ut1(second,ncr,vdd,_1hz);/调用counter60,对秒计时counter60 ut2(minute,ncr,vdd,mincp);/ 调用counter60,对分校时counter24 ut3(hour7:4,hour3:0,ncr,vdd,hrcp);/调用counter24,对时校时assign mincp=adjminkey ? _1hz:(second=8h59);/当mincp=adjminkey时,执行校时, 当mincpadjminkey时,秒计时至59 时向分进位assign hrcp=adjhrkey?_1hz:(minute,second=16h5959);/当hrcp=adjhrkey时,执 行校时,当hrcpadjhrkey时,分 秒计时至59分59秒时向时进位 endmodule四调试及结果4.1 模块仿真 4.1.1 counter10模块仿真 cp为时钟脉冲;当cp,en和ncr为高电平时q计数;q的计数范围为0,9 图23 counter10仿真波形图4.1.2 counter24模块仿真 cp为时钟脉冲;当cp,en和ncr为高电平时q计数;q的计数范围为0,23图24 counter24仿真波形图4.1.3 counter60模块仿真 cp为时钟脉冲;当cp,en和ncr为高电平时q计数;q的计数范围为0,59图25 counter60仿真波形图4.1.4 分频模块仿真分频器是将输入的基本时钟信号分频为其他模块需要的5khz 和1hz 的信号. 其中clk 输入为5khz , clk2 输出1hz 信号,分频实际也是用了计数器的原理。图26 分频模块仿真波形图4.1.5 top_clock计时模块仿真当秒计时到59时,向分进一位,当秒计时到59且分计时到59时向时进一位。当时分秒计时到235959时,计时器清零。图27 top_clock计时模块仿真波形图4.2 程序下载 图28 时测试校时,时至23 图29 时测试校时,时进位至00 图30 分测试校时分至59 图31 分测试校时,分进位至00图32 59分52秒,ledg1亮 图33 59分55秒,ledg4亮 图34 59分57秒,ledg6亮 图35 59分59秒,ledr0亮4.3分析运行结果 4.3.1 设计总结 本次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 消防安全管理员中级考试练习试题附答案
- 2025年中国暖手鼠标垫行业发展运行现状及投资潜力预测报告
- 2025年 河南全科医生特设岗位计划招聘考试笔试试题附答案
- 2025年 赤峰巴林左旗招聘社区工作者考试试题附答案
- 2021-2026年中国多用途车市场供需现状及投资战略研究报告
- 请求批准的请示报告
- 中国挖机行业市场深度分析及投资规划建议报告
- 2025年河北省石家庄市中考历史试卷(含答案)
- 电动车喷漆培训课件
- 醋酸邻氨基对行业深度研究分析报告(2024-2030版)
- 2024-2030年中国金刚石锯片行业市场分析报告
- 利用新媒体技术加强农村科普教育的传播力度
- 办公耗材售后服务承诺书
- 电商新秀CEO聘用合同
- 《舌癌病例讨论》课件
- 建设工程施工劳务分包合同 GF-2003-0214
- 【MOOC】博弈论基础-浙江大学 中国大学慕课MOOC答案
- 2024年六西格玛绿带认证考试练习题库(含答案)
- 医学装备科管理人员岗位职责工作职责和任务
- 技术规范书【模板】
- 实验室改造施工合同
评论
0/150
提交评论