基于EDA-VHDL语言的等精度测频.doc_第1页
基于EDA-VHDL语言的等精度测频.doc_第2页
基于EDA-VHDL语言的等精度测频.doc_第3页
基于EDA-VHDL语言的等精度测频.doc_第4页
基于EDA-VHDL语言的等精度测频.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

基于EDA-VHDL语言的等精度测频摘要: EDA是一门应用技术,频率是电子技术领域内的一个基本参数,同时也是一个非常重要的参数。电子技术领域离不开频率,一旦离开频率电子技术的发展是不可想象的,就像现在的人离不开电一样。为了得到性能更好的电子系统,科研人员在不断地研究着频率,CPU就是用频率的高低来评价其性能好坏,速度的高低,可见频率在电子系统中是多么重要.稳定的时钟在高性能电子系统中有着举足轻重的作用,直接决定系统性能的优劣。随着电子技术的发展,测频系统使用时钟的提高,测频技术有了相当大的发展,但不管是何种测频方法,士1个计数误差始终是限制测频精度进一步提高的一个重要因素。本 设计采用等精度频率设计原理和8051软核做微处理器。通过分析士1个计数误差的来源得出了一种新的测频方法:检测被测信号,时基信号的相位,当相位同步时开始计数,相位再次同步时停止计数,通过相位同步来消除计数误差,然后再通过运算得到实际频率的大小。充分利用FPGA 和8051软核简化外围电路及降低系统设计的复杂度。采用VHDL语言,成功的编写出了设计程序,并在Qutus II软件环境中,对编写的VHDL程序进行了仿真,得到了很好的效果。最,给出了较详细的设计方法和完整的程序设计以及调试结果。关键词:EDA、FPGA、全同步、数字频率计、VHDL语言、8051 随着数字电路应用越来越广泛,传统的通用数字集成电路芯片已经很难满足系统功能的要求,而且随着系统复杂程度的不断增加,所需通用集成电路的数量呈爆炸性增长,使得电路板的体积迅速膨胀,系统可靠性难以保证。此外,现代电子产品的生命周期都很短,一个电路可能要在很短的时间内作改进以满足新的功能要求,对于通用集成电路来说则意味着重新设计和重新布线。而可编程逻辑器件克服了上述缺点,它把通用集成电路通过编程集成到一块尺寸很小的硅片上,成倍缩小了电路的体积,同时由于走线短,减少了干扰,提高了系统的可靠性,又由于VHDL语言和verilog语言易于掌握与使用,设计相当灵活,极大地缩短了产品的开发周期。本设计在FPCA技术越来越成熟,应用越来越广泛的情况下,使用成熟的FPGA技术来实现目前还不是很成熟的全同步数字频率计。此设计具有重要的研究价值。由于社会发展和科技发展的需要,信息传输和处理的要求的提高,对频率的测量精度也提出了更高的要求,需要更高准确度的时频基准和更精密的测量技术。而频率测量所能达到的精度,主要取决于作为标准频率源的精度以及所使用的测量设备和测量方法。目前,国内外使用的测频的方法有很多,有直接测频法、内插法、游标法、时间一电压变化法、事周期同步法、颇率倍增法、颇筹倍增注以及相桥比较法等等。直接测频的方法较简单,但精度不高。内插法和游标法都是采用模拟的方法,虽然精度提高了,但是电路设计却很复杂时间一电压变化法是利用电容的充放电时间进行测量,由于经过A/D转换,速度较慢,且抗干扰能力较弱。多周期同步法精度较高的一种。为了进一步的提高精度,通常采用模拟内插法或游标法与多周期同步法结合使用,虽然精度有了进一步的提高,但始终未解决士1个字的计数误差,而且这些方法设备复杂,不利于推广。频率误差倍增法可以减小计数器的士1个字的误差,提高测量精度。但用这种方法来提高测量精度是有限的,因为如要得到2x10-13一招的测量精度,就要把被测频率 倍频到 =1/2 Hz=5000MHz,这无论是对倍频技术,还是对目前的计数器都是很难实现的。频差倍增一多周期法是一种频差倍增法和差拍法相结合的测量方法。这种方法是将被测信号和参考信号经经频差倍增使被测信号的相位起伏扩大,在通过混频器获得差拍信号,用电子计数器在低频下进行多周期测量,能在较少的倍增次数和同样的取样时间情况下,得到比测频法更高的系统分辨率和测量精度。但是仍然存在着时标不稳而引入的误差和一定的触发误差。以上只是对现存的几种主要的测频方法的概述,很显然从以上的分析中知道: 不同的测频方法在不同的应用条件下是具有一定的优势的,而在本论文中,我主要在多周期同步法的基础上,采用了全同步的测频方法。主要是消除了士1个字的对时标信号的计数误差,而且在FPGA/CPLD芯片上实现,具有很大的优势.总之,频 率(时间)测量技术发展非常快.在频标方面,一方面是追求新的更高稳定度和准确度的新型频标,据报道,实验室中做出频率准确度优于1丁3的频标。一方面是提供便于工业、科研应用的商品化频标,如小艳钟、铆频标、新型高稳定度晶体振荡器等这些工作多在计量研究与工业部门进行。大量的工作在改进、创造新的测频原理、方法和仪器,以便以更高的精度、速度,自动进行测量和数据处理,并向多功能、小型化、高性价比方向发展。在提高测频精度方面,值得特别提出的有全同步取样技术和可校准通用电子计数器技术,它们使测频精度提高到一个新的水平。本文正是介绍了基于FPGA和8051软核单片机,利用EDA技术开发的等精度频率计。 一 、FPGA简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。 CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。二、 FPGA的工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。 例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。 幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度帮助地系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。最近FPGA的配置方式已经多元化!本系统选用EP2C5TP144C8芯片。三、等精度测频电路及原理说明1. 多周期同步测频的原理方框图图2-1 多周期同步测频的原理方框图2. 多周期同步测频的工作波形图图2-2 多周期同步测频的工作波形图3.等精度测频的基本工作原理 1、工作原理图2-1给出了多周期同步测频率的原理方框图,图2-2是对应的工作波形图。其工作过程是:单片机预置一定宽度(如1s)的闸门脉冲信号,加至D触发器以形成同步闸门信号T;被测信号频率分两路加入,一路加至D触发器作为CP时钟,和预置闸门一起作用,在Q端形成同步闸门见图2-2中T的波形,并分别加到主门1和主门2上,将主门1、2同时打开;这时,被测频率通过主门1进入计数器1,对进入的周期数进行计数,得计数值;同时,晶振标准频率通过主门2进入计数器,得计数值,其波形如图2-2所示,由图可得:因此: 2、误差分析 由以上工作过程和波形图可以看出,对被测信号的计数是与闸门同步的,故不存在量化()误差。这样,用该计数器测频,不管频率高低,其精度是相同的。这时,误差仅发生在计数器2对的计数值上,因为主门2与之间并无同步关系,故仍存在量化误差。不过,通常,故误差相对小得多。多周期同步计数器测频的误差为:,N为T时间内晶振震荡的次数。 3、系统整体框图图2-3 等精度测频的系统总体框图 4、框图解释:1、波形变换器用来将待测正弦波变换成同频率的方波,以便于后面的数字电路的处理,通常使用比较器或是施密特触发器来完成。2、等精度测频器即是我们设计的核心单元,主要用来数出待测信号以及CLK_50M在一秒的定时内震荡的次数;里面包括两个32位的寄存器,这两个寄存器共用一组地址、读写、片选、数据总线,CPU可以通过这组总线来访问两个寄存器,从而便于CPU读取并计算出待测信号的频率。3、CPU用来读取“等精度测频”模块中的两个计数值,再利用这两个计数值推算出待测信号的频率,并获取按键指令以及控制显示设备用来显示结果。4、按键用来接收用户的输入,每按一个键就会产生一个中断,使CPU转而执行相应的中断服务程序,从而完成相应的工作。5、显示设备可由led或是12864等简单、便宜的显示设备组成,通过CPU的控制把测得的数据(两个计数其中的值或是被测信号的频率)显示出来。5、采用Verilog或者VHDL实现等精度测频的模块等精度测频模块是本实验的核心模块,也是我们实验的主要内容,要求同学们用VHDL或是Verilog语言中的至少一种写出其功能,并用仿真工具进行时序仿真,验证模块的正确性。有条件的可以采用任一款式的单片机访问该等精度的测频模块,直接使用函数发生器产生的方波作为待测信号,从而验证该模块的正确性。等精度测频模块是由三个更小的子模块组成的,分别是:异步秒脉冲模块、同步秒脉冲模块、计数器模块。 等精度测频的整体模块的符号图如下所示:图2-4 等精度测频模块三个模块作用简介: 1、异步秒脉冲模块:用来产生接近一秒的正电平,系统正是通过计算这一秒内待测信号的振动次数以及CLK_50M的振动次数,再通过这两个次数算出待测信号的频率的。之所以说是“异步秒脉冲”,这里的“异步”是相对于待测信号的步调的,也就是说,不与待测信号的上升沿或是下降沿同步,那么就是“异步的”。2、同步秒脉冲模块:根据异步秒脉冲模块产生的与待测信号同步的接近一秒的正电平,这里说的“同步”是相对于待测信号的,也就是说新生成的同步秒脉冲的起始时刻为待测信号的某一个上升沿(或下降沿),结束时刻也是待测信号的某一个上升沿(或下降沿)。3、计数器模块:用来数出同步秒脉冲的时间内CLK_50M震动的次数,比如说N1,同时也可以数出同步秒脉冲时间内待测信号的振动次数,比如说N2,那么待测信号的频率将会是:N2/N150000000。该模块的内部有两个计数器,分别是CNTR1_CLK50M和CNTR2_SigX,其中前者对50M的CLK进行计数,后者对待测信号X进行计数,具体程序见后面附录Counters.V中的内容。一秒结束后计数的最终结果存放在reg_CLK50M_N和reg_SigX_N中。该模块有4个以CPU打头的信号线:CPU_CS,CPU_RD,CPU_Addr和CPU_RD_Data,它们正好和任何一款CPU的片选、读、地址和读数据总线连接起来,用来读取reg_CLK50M_N和reg_SigX_N这两个寄存器中的数据。当CPU读出这两个寄存器中的数据之后就可以统计简单的计算得到待测信号的频率,并显示之。具体程序见后面附录Counters.V中的内容。四、等精度测频实验过程 1、在电脑上安装Quartus II或Maxplus II,最好是安装Quartus II。 2、读懂本文所附的参考程序,在Quartus II中为每一个模块建立仿真激励文件,分别给三个子模块仿真,再对顶层模块进行仿真。 3*、将Verilog代码改写为VHDL的代码。4*、有条件的同学可以使用开发板做成模块,再用单片机访问。五、 实验程序:module frequency(CLK_50M,Sig_X_In,CPU_CS,CPU_RD,CPU_Addr,CPU_RD_Data);input CLK_50M,Sig_X_In;input CPU_CS,CPU_RD,CPU_Addr;output31:0 CPU_RD_Data;reg Asyn_Sec_Pulse,Syn_Sec_Pulse;reg 31:0 cnt,reg_CPU_RD_Data,reg_CLK50M_N,reg_SigX_N,CNTR1_CLK50M, CNTR2_SigX;initial begin CNTR1_CLK50M=0; CNTR2_SigX=0; reg_CLK50M_N=0; reg_SigX_N=0; reg_CPU_RD_Data=0; endalways(posedge CLK_50M)/ always中赋值。 if(cnt20)/这里的160是为了仿真的方便,表示CLK_50M每经历160个上升 cnt=cnt+1;/沿就会使reg_Asyn_Sec_Pulse改变电平,如要真正产生1秒的延时, else /必须将160改为50

温馨提示

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

评论

0/150

提交评论