版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计说明书1 绪论eda技术是以大规模可编程逻辑器件为设计载体,以硬件语言为系统逻辑描述的主要方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件设计的电子系统到硬件系统的设计,最终形成集成电子系统或专用集成芯片的一门新技术。其设计的灵活性使得eda技术得以快速发展和广泛应用。本文以quartus软件为设计平台,采用vhdl语言实现数字频率计的整体设计。1.1 eda简介eda是电子设计自动化(electronic design automation)缩写,是90年代初从cad(计算机辅助设计)、cam(计算机辅助制造)、cat(计算机
2、辅助测试)和cae(计算机辅助工程)的概念发展而来的。eda技术是以计算机为工具,根据硬件描述语言hdl(hardware description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的eda工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在eda平台上完成的针对某个系统项目的vhdl、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述
3、与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件fpga/cpld相映射的网表文件。 适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如jed文件。适配所选定的目标器件(fpga/cpld芯片)必须属于在综合器中已指定的目标器件系列。 硬件描述语言hdl是相对于一般的计算机软件语言,如:c、pascal而言的。hdl语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用hdl程序来描述所希望的电路系统,规定器件结构特征和电
4、路的行为方式;然后利用综合器和适配器将此程序编程能控制fpga和cpld内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就fpga/cpld开发来说,比较常用和流行的hdl主要有abel-hdl、ahdl和vhdl。1.2 基于eda工具的fpga/cpld开发流程 1.文本/原理图编辑与修改。首先利用eda工具的文本或图形编辑器将设计者的设计意图用文本(abel-hdl程序)或图形方式(原理图或状态图)表达出来2.编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。 3.综合。这是将软件设计与硬件的可实现性挂钩,是将软件转化为
5、硬件电路的关键步骤。综合后hdl综合器可生成enif、xnf或vhdl等格式的网表文件,他们从门级开始描述了最基本的门电路结构。 4.行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。(该步骤可以略去) 5.适配。利用fpga/cpld布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。该操作完成后,eda软件将产生针对此项设计的适配报告和jed下载文件等多项结果。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。 6.功能仿真和时序仿真。该不妨真实接近真实器件运
6、行的方针,仿真过程已将器件的硬件特性考虑进去了,因此仿真精度要高的多。(该步骤也可略去) 7.下载。如果以上的所有过程都没有发现问题,就可以将适配器产生的下载文件通过fpga/cpld下载电缆载入目标芯片fpga或cpld中。 8.硬件仿真与测试。2 数字频率计的设计分析2.1 数字频率计的工作原理数码管显示 计数器锁存器译码驱动电路预测信号测频控制信号发生器图2-1 数字频率计原理框图众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒
7、内待测信号的脉冲个数,即闸门时间为1s。闸门时间可以根据需要取值,大于或小于1s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1s作为闸门时间。数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图2-1所示。2.2 设计分析2.2.1 测频控制信号发生器测频控制信号发生器产生测量频率的控制时序,是设计频率计的关键。这里控制信号clk取为1hz,2分频后就是一个脉宽为1s的使能信号en,用来作为计数闸门信号。测频控制信号发生器封装图如图
8、2-2所示。图2-2 测频控制信号发生器封装图测频控制信号发生器程序源代码如下:library ieee;use ieee.std_logic_1164.all;entity shineng isport(clk,rst:in std_logic;en:buffer std_logic);end shineng;architecture bhv of shineng isbeginprocess(clk,rst)beginif rst=1 thenen=0;elsif clkevent and clk=1 thenen=not en;end if;end process;end bhv;图2-
9、3 测频控制信号发生器测频控制信号发生器仿真图如图2-3所示。以上为测频控制信号发生器仿真图,仿真图中clk为基准信号,rst为复位端。复位端有效时,en输出为零。en为使能端,当clk为1hz输入信号时,输出en为0.5hz的信号即1s高电平信号。2.2.2 计数器计数器以使能信号en作为时钟,当en为高电平时开始计数;在en的下降沿,产生一个锁存信号,用来锁存数据,锁存数据后,还要在下次en上升沿到来之前产生清零信号,为下次计数做准备,清零信号是en为低电平时有效。在清零信号到来时,异步清零;en为高电平时再次开始计数。本文设计的计数器计数最大值是9999999。由于计数器和锁存器共同由测
10、频器控制模块控制因此可以将计数器和锁存器看成一个环节,因此计数器和锁存器的仿真图如图2-5所示。2.2.3 锁存器当锁存信号即en下降沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器译码并在数码管上显示。设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数应跟计数器完全一样,均是28位。计数器模块和锁存器模块封装图如图2-4所示。图2-4 计数器模块和锁存器模块封装图计数器模块和锁存器模块程序源代码如下所示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;e
11、ntity count isport(rst,en,input:in std_logic;number1,number2,number3,number4,number5,number6,number7:out std_logic_vector(3 downto 0);ov:buffer std_logic);end count;architecture bhv of count isbeginprocess(input,rst,en)variable temp1,temp2,temp3,temp4,temp5,temp6,temp7:std_logic_vector(3 downto 0);b
12、eginif rst=1 then temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000;temp5:=0000;temp6:=0000;temp7:=0000;ov=0;elsif en=1 thenif inputevent and input=1 thentemp1:=temp1+1;if temp1=1010 thentemp1:=0000;temp2:=temp2+1;if temp2=1010 thentemp2:=0000;temp3:=temp3+1;if temp3=1010 thentemp3:=0000;temp4:=temp4+
13、1;if temp4=1010 thentemp4:=0000;temp5:=temp5+1;if temp5=1010 thentemp5:=0000;temp6:=temp6+1;if temp6=1010 thentemp6:=0000;temp7:=temp7+1;if temp7=1010 thentemp7:=0000;ov=1;end if;end if;end if;end if;end if;end if;end if;end if;else temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000;temp5:=0000;temp6:=
14、0000;temp7:=0000;ov=0;end if;number1=temp1;number2=temp2;number3=temp3;number4=temp4;number5=temp5;number6=temp6;number7=temp7;end process;end bhv;图2-5 计数器模块和锁存器模块仿真图以上为计数器模块和锁存器模块仿真图。仿真图中rst为复位端,当复位端有效时,计数值清零。input为输入待测信号,en为使能端,当en=1且input上升沿时开始计数,en=0时清零计数值,进程结束前锁存数据。2.2.4 译码驱动和数码管显示电路本次课程设计采用实验箱
15、模式5,模式5自带译码驱动电路,译码输出接数码管显示,即每一个数码管的输入分别接到译码驱动电路的输出。本次课程设计采用4个共阴极数码管来显示待测频率的数值,其显示范围从09999999。数码管显示电路封装图如图2-6所示。图2-6 数码管显示电路封装图以下是数码管显示的程序源代码: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity show isport(en,rst:in std_logic;number1,number2,number3,number4,number5,number
16、6,number7:std_logic_vector(3 downto 0);show1,show2,show3,show4,flag:out std_logic_vector(3 downto 0);ov:buffer std_logic);end show;architecture bhv of show isbeginprocess(rst,en)beginif rst=1 thenshow1=0000;show2=0000;show3=0000;show4=0000;flag=0000;elsif enevent and en=0 thenif ov=1 thenshow1=1110;
17、show2=1010;show3=1010;show4=0000;flag0000thenshow1=number7;show2=number6;show3=number5;show4=number4;flag0000 thenshow1=number6;show2=number5;show3=number4;show4=number3;flag0000 thenshow1=number5;show2=number4;show3=number3;show4=number2;flag=0001;else show1=number4;show2=number3;show3=number2;show
18、4=number1;flag=0000;end if;end if;end process;end bhv;数码管显示模块仿真图如图2-7所示。以下便是数码管显示模块仿真图,在仿真图中number7number1为计数和锁存环节的输出。ov即作为输入又作为输出,当输入待测信号的频率足够大,以至于超过测频器的最大量程时,ov作为输出且为1。当ov=1时,show4show1以及flag标志位共同显示error。rst为复位端,当rst为1时,show输出均为零。en为使能端,在前面几个模块中,en=1时开始计数,en=0时清零记录数值,而在en下降沿时将记录的数值,送到输出show。以此做到不断
19、记录数据,保存数据,刷新数据等,反复循环测量待测信号频率的目的。图2-7 数码管显示模块仿真图鉴于篇幅问题,总体设计仿真图分析将在本章分析,望读者谅解。总体设计仿真图中,clk是基准信号,其二分频得到en使能信号,input为输入待测信号,rst为复位端,当rst=1时,en=0,输出show均为零。en=1时,当待测输入信号为上升沿开始计数,倘若超过9999999,则ov=1,如果ov=1则show4show1以及flag标志位共同显示error。计数进程结束前锁存数据。将记录数据锁存到总体设计进程中的定义number1number7中,在en下降沿再将number1number7按照程序中
20、的要求,送到show4show1以及flag标志位。flag显示自动调档的档次。综上所述,本次eda设计利用vhdl语言详尽准确的做到了测量待测信号频率。本次设计可谓做到了,言简意赅,程序流程简明扼要,易于读者分析,各个模块化设计正是遵循了eda设计的自上而下,逐步细化的设计原理。并且本次设计的一大原理就是可以实时的根据现况,任意测量待测输入信号的频率,量程可以任意调整,鉴于本次要求,制作了最大量程为10mbhz的测频器,稍加修改便可做到任意量程的测频器。当然本次设计还有很多不足之处,望批评指正。3 总体设计以上模块分别为测频控制模块,计数模块,锁存模块,显示模块综合以上模块分析,予以分析综合
21、如下,可得整体设计封装图如图3-1所示。图3-1 整体设计封装图总体设计程序源代码如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq isport(clk,rst,input:in std_logic;show1,show2,show3,show4,flag:out std_logic_vector(3 downto 0);ov:buffer std_logic);end freq;architecture bhv of freq issignal en:std_lo
22、gic;signal number1,number2,number3,number4,number5,number6,number7:std_logic_vector(3 downto 0);beginshineng:process(clk,rst)beginif rst=1 thenen=0;elsif clkevent and clk=1 thenen=not en;end if;end process shineng;count:process(input,rst,en)variable temp1,temp2,temp3,temp4,temp5,temp6,temp7:std_logi
23、c_vector(3 downto 0);beginif rst=1 then temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000;temp5:=0000;temp6:=0000;temp7:=0000;ov=0;elsif en=1 thenif inputevent and input=1 thentemp1:=temp1+1;if temp1=1010 thentemp1:=0000;temp2:=temp2+1;if temp2=1010 thentemp2:=0000;temp3:=temp3+1;if temp3=1010 thentem
24、p3:=0000;temp4:=temp4+1;if temp4=1010 thentemp4:=0000;temp5:=temp5+1;if temp5=1010 thentemp5:=0000;temp6:=temp6+1;if temp6=1010 thentemp6:=0000;temp7:=temp7+1;if temp7=1010 thentemp7:=0000;ov=1;end if;end if;end if;end if;end if;end if;end if;end if;else temp1:=0000;temp2:=0000;temp3:=0000;temp4:=00
25、00;temp5:=0000;temp6:=0000;temp7:=0000;ov=0;end if;number1=temp1;number2=temp2;number3=temp3;number4=temp4;number5=temp5;number6=temp6;number7=temp7;end process count;show:process(rst,en)beginif rst=1 thenshow1=0000;show2=0000;show3=0000;show4=0000;flag=0000;elsif enevent and en=0 thenif ov=1 thensh
26、ow1=1110;show2=1010;show3=1010;show4=0000;flag0000thenshow1=number7;show2=number6;show3=number5;show4=number4;flag0000 thenshow1=number6;show2=number5;show3=number4;show4=number3;flag0000 thenshow1=number5;show2=number4;show3=number3;show4=number2;flag=0001;else show1=number4;show2=number3;show3=num
27、ber2;show4=number1;flag=0000;end if;end if;end process show;end bhv;图3-2总体设计仿真图总体设计仿真图如图3-2所示。经过了分析软件,查询相关资料,编写程序,编译,综合,适配,仿真,下一步便是下载的关键步骤即引脚锁定。引脚锁定的好坏直接影响下载的成功与否,更应符合读者的观看习惯。已达到一目了然,清晰理解的目的。鉴于此,先将总体设计的引脚设计安排如下:本次课程设计的引脚图如图3-3所示。图3-3 总体设计的引脚锁定clk信号利用clock2产生1hz基准信号,同理输入待测信号input接clock0即可产生实验箱上的部分信号,
28、也可直外接信号发生器。以便达到测量任意输入信号的目的。溢出信号ov接二极管,由二极管的亮灭,来判断是否溢出。此外由show4show1以及flag标志位共同显示error。以致告诉使用者应减少输入信号频率,或者修改程序以便更大的增大待测信号的量程。使得适应性更加的广泛。4 设计总结本次课程设计采用eda设计方法,把数字频率计系统组建分解成若干个功能模块进行设计描述,选用altera公司生产的fpga产品acex1k系列ep1k30tc144-3芯片,下载适配后,便可以在数码管上显示出待测频率的数值。经编译,综合,适配,下载到实验箱,其软件设计思想清晰,硬件电路简单,具有一定的实用性。通过这次课程设计,我感受到了vhdl功能的强大,享受到了其中的乐趣。通过这次课程设计,使我感受到了什么是“纸上得来终觉浅,觉知此事要躬行”,平时不下一番苦功夫是学不好的。我们必须要养成严谨求学的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宾馆承包合同协议书写法
- 临时工聘用合同样本
- 2024广告服务合同模板
- 无担保眼镜购买分期付款合同范本
- 2024公寓租赁合同模板【公寓租赁合同】
- 城市粮食采购合同模板
- 服装行业销售管理系统经销合同
- 环保工程维保合同模板
- 高校毕业就业协议书样本
- 商标许可协议书
- 高中语文人教版高中必修文言文定语后置
- 传统孝道人物虞舜
- 确定积极分子会议记录范文七篇
- 长江三峡水利枢纽可行性报告
- 江苏省某高速公路结构物台背回填监理细则
- 电大护理本科临床实习手册内容(原表)
- 当代德国学校劳动教育课程构建的经验与启示共3篇
- “小金库”治理与防范 习题及答案
- 王伟核桃经济价值及加工利用
- 新生儿胎粪吸入综合征临床路径标准住院流程及路径表单
- 氯化钠特性表
评论
0/150
提交评论