八位十进制数字频率计基于eda课程设计_第1页
八位十进制数字频率计基于eda课程设计_第2页
八位十进制数字频率计基于eda课程设计_第3页
八位十进制数字频率计基于eda课程设计_第4页
八位十进制数字频率计基于eda课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目 录目 录01、EDA技术发展及介绍21.1 EDA技术的介绍21.2 EDA技术的发展21.3 EDA技术的发展趋势32、总体方案设计42.1设计内容42.2设计方案比较42.3方案论证52.4方案选择53、单元模块设计63.1分频模块6分频模块波形仿真图6分频模逻辑综合图6分频模块verilog源代码73.2计数模块8计数模块功能仿真波形8计数模块逻辑综合图9计数模块verilog源代码93.3锁存模块10锁存模块功能仿真波形10锁存模块逻辑综合图11锁存模块verilog源代码113.4七段译码模块12七段一码模块功能仿真波形12七段译码模块逻辑综合图13七段一码模块代码源程序133

2、.5数码管显示模块14数码管显示模块功能仿真波形图15数码管显示模块综合图15数码管显示模块源代码164、软件实现174.1软件实现方法17软件实现步骤框图174.2软件设计18顶层模块程序如下:18顶层模块结构图195、系统仿真及调205.1顶层模块仿真及调试206、总结216.1设计小结216.2设计收获216.3设计改进226.4 致谢227 、参考文献221、EDA技术发展及介绍1.1 EDA技术的介绍EDA是Electronic Design Automation的缩写,中文译为电子设计自动化,是现代电子设计技术的有力工具。迄今为止,EDA技术没有精确的定义,我们可以这样来认识,ED

3、A技术就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。而EDA技术的发展又以计算机科学、微电子技术的发展为基础,并且融合了应用电子技术、智能技术以及计算机图形学、拓扑学、计算数学等众多最新成果发展而来的。1.2 EDA技术的发展从20世纪70年代,人们就已经开始基于计算机开发出一些软件工具帮助设计者完成电路系统的设计任务,以替代传统的手工设计的方法,随着计算机软件和硬件技术水平的提高,EDA技术也不断进步,大致经历了下面三个发展阶段:(1)CAD阶段:20世纪70年代至80年代初,由于电子技术软件的功能较弱和个人计算

4、机的普及度不高,人们主要借助于计算机对所设计的电路的性能进行模拟和预测;完成简单的版图绘制和PCB布局。这是EDA技术发展的早起阶段。(2)CAE阶段:20世纪80年代至90年代初,由于人们在设计方法学、设计工具集成优化方面取得了长足的进步,使得集成电路规模逐渐扩大,电子系统设计也逐步复杂,与CAD相比,又增加了电路功能设计和结构设计、工程设计、原理图输入、逻辑仿真、电路分析、自动布局布线、PCB后分析等功能。由此EDA进入CAE阶段。(3)EDA阶段:20世纪90年代以来,由于微电子工艺的显著发展,促进了电子设计工具的不断改善。尤其是进入21世纪以后,EDA技术得到了更快的发展。使得EDA技

5、术广泛应用于各个领域,IP核的SoC设计技术日趋成熟、SoPC技术步入实用化阶段、高速DSP实现成为了可能、复杂电子系统的设计和验证更加高效。 1.3 EDA技术的发展趋势随着人们对设备功能和成本要求的越来越苛刻,EDA技术也在不断改进,就目前而言,EDA技术有以下三个大的发展趋势。(1) 高性能的EDA工具将得到进一步发展随着市场的需求增长,超大规模集成技术不断提高,超深亚微米(VDSM)工艺已经走向成熟;IC生产线的投资更为巨大,可编程逻辑器件开始进入传统的ASIC市场;电子系统成本降低,系统体积减小,设计效率提高,EDA工具盒IP核广泛应用;自动化和智能化程度不断提高,计算机硬件平台性能

6、的不断提高为SoC设计提供了物质基础。(2) EDA技术将促使ASIC和FPGA逐步走向融合随着系统开发对EDA技术的目标器件各种性能指标要求的提高,ASIC和FPGA将更大程度地相互融合。这是因为虽然标准逻辑ASIC芯片尺寸小、功能强、耗电省,胆设计复杂,并且有批量生产要求;可编程逻辑器件的开发费用低廉,能现场编程,胆体积大、功耗大。因此,FPGA和ASIC正在走到一起,两者之间正在诞生一种“杂交”产品,互相融合,取长补短,以满足成本和上市速度的要求。例如,将可编程逻辑器件嵌入到标准单元。(3)EDA技术的应用领域将越来越广泛从目前的EDA技术来看,其特点就是使用普及、应用广泛、工具多样、软

7、件功能强大。在ASIC和PLD器件方面,向高速度、高密度、低功耗、低电压方向发展。EDA技术发展迅速,可以用日新月异来描述。EDA技术的广泛应用,现已涉及各行各业。EDA水平不断提高,设计工具不断趋于完善。然而,目前人们对更低成本、更低功耗的无止境追求和越来越短的产品上市压力为当代EDA工具和设计方法带来了不少新的挑战与机会。例如,如何在工艺上防止模拟电路与数字电路之间的干扰;现有的大部份EDA工具最多只能处理百万门级设计规模,随着IC设计向千万门级以上规模发展,现有EDA工具和方法必须进行升级。 2、总体方案设计2.1设计内容要求设计一个八位十进制频率计,该频率计的测频范围为0到999999

8、99HZ,测频的原理采用直接测频法,利用计数器在单位时间(通常是1s)内对被测得脉冲进行计数,计数的结果就是被测脉冲的频率,直接测频法的好处是可以通过改变门控信号的周期,从而提高测量的精度和频率的测量范围。计数的结果通过锁存器来锁存并通过译码电路译码,然后用七段数码管对被测频率值进行动态显示。2.2设计方案比较方案一:基于单片机实现八位十进制频率计字功能利用AT89C51的内部定时计数器来对外部输入信号进行计数,从而达到测频的目的,这种方案,结构简单容易掌握,各部分电路实现起来都非常容易。其原理框图如图2-1所示:AT89C51 锁存器译码显示电源供电电路时钟电路被测信号 图2-1单片原理实现

9、框图方案二:基于CPLD技术实现八位十进制频率计通过Verilog HDL硬件描述语言编写代码的方式来实现八位十进制频率计数器功能。其框图如图2-2:CPLD芯片分频器八位十进制计数器锁存器 译码器动态显示电路系统时钟电源电路下载电路七段数码管图2-2基于CPLD实现频率测量的框图2.3方案论证(1)方案一:使用单片机设计成的系统外围电路相对较少,硬件搭建相对容易。51单片机的价格低廉,性能可靠。但是,单片机的管脚十分有限,计算速度相对CPLD慢,内部数据存储器为字节存储,难以满足八位十进制计数器的存储需要。(2)方案二:采用CPLD来设计八位十进制计数器,测量精度高,运行速度快,采用veri

10、log语言模块化编程,大大缩减了外围的硬件电路,节约了硬件资源,而且方便进行软件调试。2.4方案选择由于本次课程设计题目为八位十进制频率计,要求可测的频率范围为0到100MHZ,所以运算速度快、精度高、性能可靠、可将外围器件通过编程来代替的CPLD芯片更符合要求。综合比较结合各方面的优劣势,并参考本次课程设计要求,我选择了基于CPLD器件来实现八位十进制频率计的设计方案。3、单元模块设计本设计由复杂可编程逻辑器件(CPLD)作为控制芯片,通过Vreilog HDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。总体设计方案为由晶振电路提供时钟信号。然后对系统时钟分频产

11、生控制信号如秒脉冲tgate,锁存信号ale,译码控制信号的dclk和显示使能信号d_en,位选信号lclk。在控制信号作用下,被测脉冲mclk通过八位十进制bcd加法计数器计数,计数值通过锁存器锁存,然后经过七段显示译码器译码后用数码管实现动态显示。下面介绍主要模块的功能及作用。3.1分频模块在分频模块中,系统时钟s_clk设定为2ms,经过1000分频后便可以产生周期为2s的闸门信号tgate,锁存信号ale,译码信号dclk,显示使能信号d_en,同时对系统时钟经过60分频便可以得到周期为125ms的位选切换信号。分频模块波形仿真图 图3-1-1分频模块功能仿真图分频模逻辑综合图 图3-

12、1-2分频模块逻辑综合图分频模块verilog源代码module div(tgate,s_clk,ale,dclk,d_en,lclk,);input s_clk;output tgate,ale,dclk,d_en,lclk;reg tgate,ale,dclk,lclk,d_en;integer i,j;always (posedge s_clk)beginif(i=499)begin tgate=tgate;ale=ale;dclk=dclk;d_en=d_en;i=0;endelse i=i+1;endalways (posedge s_clk)if(j=30)begin lclk=l

13、clk;j=0;endelse j=j+1;endendmodule3.2计数模块该计数模块为十位八进制bcd加法计数器,clrn为清零信号,高电平有效,q为计数值,tgate为高电平为1s的门控信号,仿真中设定被测脉冲周期为40ms,对其在1s钟内进行计数,计数结果q值显示为25。符合理论计算结果。计数模块功能仿真波形图3-2-1计数模块功能仿真图3.2.2计数模块逻辑综合图图3-2-2分频模块逻辑综合图计数模块verilog源代码module counter(clrn,mclk,q,tgate,cunt);input clrn,mclk,tgate;output 15:0q,cunt;re

14、g 15:0q;always (posedge mclk ) beginif(!clrn) q15:0=0;else if(tgate)beginif(q15:0=16'H9999) q15:0=0;else if(q11:0=12'H999) q15:0=q15:0+12'H667;else if(q 7:0= 8'H99) q15:0=q15:0+8'H67;else if(q 3:0= 4'H9) q15:0=q15:0+4'H7; /十六进制转换为十进制。else q15:0=q15:0+1; endelseq=0;endassi

15、gn cunt=q;endmodule3.3锁存模块在锁存模块locker中,采用ale信号的下降沿对计数模块的计数结果进行锁存,锁存时间由ale的周期确定,在仿真中将输入值din设定为随机值,ale设定为周期为2s的方波,qout为锁存结果输出端,输出端结果在ale下降沿到来时刻改变,其余时刻保持为锁存状态。锁存模块功能仿真波形图3-3-1计数模块功能仿真图锁存模块逻辑综合图图3-3-2计数模块功能仿真图锁存模块verilog源代码module locker(ale,din,qout,qou);input ale;/锁存脉冲,下降沿有效。input31:0 din; /锁存值输入。outpu

16、t31:0 qout;/锁存值。output31:0 qou;reg31:0 qout;reg31:0 qou;always (negedge ale)beginif(!ale)beginqout=din;qou=qout;endelse qout=qout;qou=qout;endendmodule3.4七段译码模块 七段译码模块,译码脉冲来自dclk,上升沿由效,上升沿到来时,便根据输入的4位bcd码,输出相应的七段显示码,比如输入的为0001(十进制数1),在dclk下降沿到来时dout输出七段码11111001(即数码管显示1)。3.4.1七段一码模块功能仿真波形图3-4-4计数模块功

17、能仿真图七段译码模块逻辑综合图图3-4-2计数模块功能仿真图3.4.3七段一码模块代码源程序module decord(din,dout,dclk); input3:0 din; input dclk;output7:0 dout;reg7:0 dout;always (posedge dclk)case(din) 4'b0000:begin dout=8'b1100_0000;end4'b0001:begin dout=8'b1111_1001;end4'b0010:begin dout=8'b1010_0100;end4'b0011:

18、begin dout=8'b1011_0000;end4'b0100:begin dout=8'b1001_1001;end4'b0101:begin dout=8'b1001_0010;end4'b0110:begin dout=8'b1000_0010;end4'b0111:begin dout=8'b1111_1000;end4'b1000:begin dout=8'b1000_0000;end4'b1001:begin dout=8'b1001_1000;end4'b1010

19、:begin dout=8'b1000_1000;end4'b1011:begin dout=8'b1000_0011;end4'b1100:begin dout=8'b1100_0110;end4'b1101:begin dout=8'b1010_0001;end4'b1110:begin dout=8'b1000_0110;end4'b1111:begin dout=8'b1000_1110;end endcaseendmodule3.5数码管显示模块该模块将译码模块译码结果作为输入送到输入端ledin

20、,然后再使能信号d_en(周期为2s)高电平有效,在d_en有效的情况下依次将输入值送到输出端口ledout,并改变位选输出值switch,从而实现数码管的动态显示,比如ledin输入值设定为随机值8h904FDEF528BC8898,在d_en有效,并且lclk的第一个上升沿到来时,把98h送到ledout,并将switch赋值为FE,从而使第一个数码管显示98h 所代表的段码值,第二个上升沿到来时把88h送到ledout,switch赋值为FD,从而使第二个数码管显示88h所代表的段码值,依次类推,便可以对八个数码管进行动态显示了。数码管显示模块功能仿真波形图图3-5-1显示模块功能仿真图

21、数码管显示模块综合图图3-5-2显示模块逻辑综合图数码管显示模块源代码module display(ledin,ledout,lclk,switch,d_en);input lclk,d_en;input63:0 ledin;output7:0 ledout,switch;reg7:0 ledout,switch;integer num1,num2;always (posedge lclk)if(d_en)case (num1)0:begin num1<=1;switch=8'hfe;end1:begin num1<=2;switch=8'hfd;end2:begi

22、n num1<=3;switch=8'hfb;end3:begin num1<=4;switch=8'hf7;end4:begin num1<=5;switch=8'hef;end5:begin num1<=6;switch=8'hdf;end6:begin num1<=7;switch=8'hbf;end 7:begin num1<=0;switch=8'h7f;endendcaseelse begin switch=0;endalways (switch)case(switch)8'h00:ledo

23、ut=0;8'hfe:ledout=ledin7:0;8'hfd:ledout=ledin15:8;8'hfb:ledout=ledin23:16;8'hf7:ledout=ledin31:24;8'hef:ledout=ledin39:32;8'hdf:ledout=ledin47:40;8'hbf:ledout=ledin55:48;8'h7f:ledout=ledin63:56;endcaseendmodule4、软件实现4.1软件实现方法采用quartus 2软件进行设计,使用verilog语言进行模块化编程,自上而下按功

24、能模块分层实现各个模块的功能,在顶层模块中调用子模块,从而实现系统的整体功能。 软件实现步骤框图设计输入编译,链接仿真与定时分析编程在线调试修改设计图4-1-1软件实现步骤框图4.2软件设计 顶层模块程序如下:module mainton(mclk,ledout,switch,qou,s_clk,clrn,tgate0);input mclk,s_clk,clrn;output7:0 ledout,switch;output tgate0;wire7:0 p0,p1,p2,p3,p4,p5,p6,p7;output31:0 qou;wire31:0 q;wire31:0 qout;wire a

25、le,dclk,tgate,d_en,lclk;div d(.tgate(tgate),.s_clk(s_clk),.ale(ale),.dclk(dclk),.d_en(d_en),.lclk(lclk),.tgate0(tgate0);counter c(.clrn(clrn),.mclk(mclk),.tgate(tgate),.q(q),.cunt(cunt);locker lck(.ale(ale),.din(q),.qout(qout),.qou(qou);decord d0(.din(qout3:0),.dout(p0),.dclk(dclk);decord d1(.din(qo

26、ut7:0),.dout(p1),.dclk(dclk);decord d2(.din(qout11:8),.dout(p2),.dclk(dclk);decord d3(.din(qout15:12),.dout(p3),.dclk(dclk);decord d4(.din(qout19:16),.dout(p4),.dclk(dclk);decord d5(.din(qout23:20),.dout(p5),.dclk(dclk);decord d6(.din(qout27:24),.dout(p6),.dclk(dclk);decord d7(.din(qout31:28),.dout(

27、p7),.dclk(dclk);display t(.ledin(p0,p1,p2,p3,p4,p5,p6,p7),.ledout(ledout),.lclk(lclk),.switch(switch),.d_en(d_en);endmodule 顶层模块结构图图4-2-2顶层显示模块逻辑综合图5、系统仿真及调5.1顶层模块仿真及调试通过QuartusII软件,我们对顶层模块进行了仿真,其仿真波形如图5-1-1所示。图5-1-1顶层模块波形仿真图由设计要求可知,由通过数码管进行动态显示。波形仿真图中的switch代表位选信号,即选中哪一个数码管亮,ledout代表显示的七段码,即数码管显示的什

28、么内容,比如在switch为0xfe时选中第一个数码管,并将显示码11000000(代表显示0)通过ledout送给第一个数码管显示。由波形图分析可知,数码管最终显示的内容为00001000,与理论频率值一致。在程序的调试过程中,我发现了自己存在很多问题,也收获了不少的知识,主要有以下几点:(1)由于先前对硬件描述语言代码的编写不够熟悉,所以在使用过程中经常编译报错;经查找资料、和同学讨论、询问老师后了解到了错误的原因。(2)在设置顶层文件和建立工程时,必须要设置好相关的配置。并且选择合适的芯片,还要设置好END TIME和GRID SIZE参数,更要注意仿真的文件设置成顶层文件和时钟设置等等

29、。(3在程序调试过程中,由于不规范的编写,总是编译失败。经逐条语句分析调试后发现往往只是其中一个数据的类型设置错误,修改以后解决了该错误,并对程序编写有了更深刻的认识和理解。(4在波形文件仿真中,时钟和输入设置等信号一般不要设置成特殊的情况,有可能造成看不到正确的仿真波形和时序图。在仿真状态寄存器的波形图时就出现了看不到正确时序图的情况,经分析查找后发现是由于时钟和输入设置成了特殊情况,并没有仿真出所有可能发生的情况。 (5)用硬件描述语言的方法和画原理图的方法都可实现同样逻辑功能的电路出来,但是二者各有优缺点。原理图直观明了,但画复杂的电路不易实现。用硬件语言描述复杂的逻辑功能电路则比较易于实现,但是不如原理图直观,编写时容易出现逻辑混乱的情况。6、总结6.1设计小结本次设计中,我们成功完成本系统设计所要求的八位十进制频率计的测频功能。在设计开始前我们就系统整体框架和各个模块功能进行了详细的分析和设计准备工作,设计过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论