您好,欢迎访问三七文档
11.2电子测量仪器现状1.2.1频率计的发展现状在电子测量领域中,频率测量的精确度是最高的,可达10—10E-13数量级。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。目前最主要的方法是基于单片机和FPGA或CPLD利用EDA技术设计实现等精度频率测量,这使设计过程大大简化,缩短了开发周期,减小了电路系统的体积,同时也有利于保证频率计较高的精度和较好的可靠性。而实现等精度的算法主要是,在计数法和测周期法基础上发展起来的新型等精度频率测量算法,主要原理是预置闸门信号频率时随着被测信号频率的改变而改变,从而实现了等进度的测量。1.4FPGA简介1.4.1FPGA概述FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammableLogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步[6]。1.4.2FPGA的发展现状先进的ASIC生产工艺已经被用于FPGA的生产,越来越丰富的处理器内核被嵌入到高端的FPGA芯片中,基于FPGA的开发成为一项系统级设计工程。随着半导体制造工艺的不断提高,FPGA的集成度将不断提高,制造成本将不断降低,其作为替代ASIC来实现电子系统的前景将日趋光明。2随着EDA技术在全球范围内的飞速发展,业界都在翘首以待基于Linux环境的EDA技术成为电路设计领域的主流。首先,由于Linux费用很低,源代码开放,这使得EDA软件的前期开发费用很低,而且运行维护的成本也很低,同时大大方便了工程师的设计工作。而Linux工作站的费用也要比Unix工作站便宜很多。此外,Linux的成本大约是Unix以及Windows的1/15~1/10,但是效能并不比后者差,甚至运行速度要更快一些。现在业界普遍的看法就是预计在未来的5年内,Linux将成为EDA的主角。可以预见,Linux的普及只是时间问题[11]。另一方面,随着现场可编程逻辑器件越来越高的集成度,加上对不断出现的I/O标准、嵌入功能、高级时钟管理的支持,使得设计人员开始利用现场可编程逻辑器件来进行系统级的片上设计。Altera公司目前正积极倡导SOPC(SystemOnaProgrmmableChip,系统可编程芯片)。“片上可编程系统”(SOPC)得到迅速发展,主要有以下几个原因:1)密度在100万门以上的现场可编程逻辑芯片已经面市;2)第4代现场可编程逻辑器件的开发工具已经成形,可对数量更多的门电路进行更快速的分析和编译,并可使多名设计人员以项目组的方式同步工作;3)知识产权(IP)得到重视,越来越多的设计人员以“设计重用”的方式对现有软件代码加以充分利用,从而提高他们的设计效率并缩短上市时间。Altera公司为了实现SOPC的设计,不仅研制开发出新器件,而且还研制出新的开发工具对这些新器件提供支持,并且与新芯片及软件相配合的是带知识产权的系统级设计模块解决方案,它们的参数可由用户自己定义。芯片、软件及知识产权功能集构成了Altera完整的可编程解决SOPC方案——Excalibur解决方案,如图1-1给出了利用这一方案实现SOPC的流程图[12]。2频率计的原理和设计2.1频率计的测频原理2.1.1等精度测频法传统的测频方法有直接测频法和测周法,在一定的闸门时间内计数,门控信号和被测信号不同步,计数值会产生一个脉冲的误差。等精度测频法采用门控信号和被测信号同步,消除对被测信号计数产生的一个脉冲的误差。等精度频率测量方法消除了量化误差,可以在整个测试频段内保持高精度不变,其精度不会因被测信号频率的高低而发生变化。利用FPGA强大的逻辑处理功能使被测信号和标准信号在闸门时间内同步测量,3为了提高精度,将电子计数功能转为测周期,采用多周期同步测量技术,实现等精度测量。在测量过程中分别对被测信号和标准信号同时计数。测量的具体方法是:首先给出闸门开启信号(预置闸门信号),此时计数器并不开始计数,而是等被测信号的上升沿到来时计数器才开始计数,然后预置闸门信号关闭信号(下降沿),计数器并不立即停止计数,而是等到被测信号上升沿来到时才停止计数,完成一次测量过程,过程如图2-1所示。t1NxNst预置闸门被测信号标准信号实际闸门图2-1等精度测频原理Fig.2-1Principleofequalprecisionfrequencymeasuring预置闸门信号1t和实际闸门信号t不相等,但两者差值不会相差被测信号的一个周期。但从图2-1中可得实际闸门控制信号与被测信号xN同步,因此消除了1的脉冲误差,并且此测频方法不仅对被测信号进行计数,而且去标准信号sN也计数,所以称为多周期同步测频法。2.1.2等精度测频误差分析计数器对标准信号的计数是sN,被测信号的计数是xN,标准信号的频率为sf,被测信号的频率:ssxxfNNf(2-1)由式(2-1)可知,若忽略标频的sf误差,则等精度测频可能产生的相对误差为:100)(00fffx(2-2)4其中0f为被测信号频率的准确值。在测量中,由于xf计数的起停时间都是由该信号的上升测触发的,无字误差。而对sf的计数sN最多相差一个数的误差,即1sN,其测量频率为:sssxfNNNfx(2-3)将式(2-1)和(2-2)代入式(2-3),并整理得:sssftNN1(2-4)从公式(2-4)可以看出等精度算法产生的误差和被测信号的频率无关,仅与闸门时间和标准信号频率有关,从而实现整个频率段的等精度测量。2.2等精度频率计的Verilog实现等精度频率计的结构图如图2-2所示。等精度频率计总共分为4个部分:32位的乘法器、32位的除法器、根据输入信号产生预置闸门信号模块和计算频率值模块。首先是根据输入信号产生预置闸门信号,再根据预置闸门信号产生实际闸门信号;在实际闸门信号的控制下分别对基准100MHz方波信号和输入信号计数,在实际闸门信号的结束时停止计数并将计数值锁存到寄存器,根据式(2-1)调用32位的乘法器和32位的除法器计算频率值。根据输入信号产生预置闸门信号模块32位乘法器模块32位除法器模块计算频率值模块图2-2等精度频率计结构图Fig.2-2Equalprecisionfrequencymeterstructure52.2.1预置闸门信号产生模块根据输入信号产生预置闸门信号模块的实现方法是:首先对输入信号计数,当计数值在3到9之间时产生预置闸门信号。目的是舍去前3个输入信号再产生预置闸门信号,防止输入信号刚接入系统时不稳定对测量结果产生影响。预置闸门信号的周期是输入信号周期的5倍。下面给出产生预置闸门信号模块的Verilog代码。/*************************************根据输入信号产生门信号*************************************/moduleSuit_Freq(inputrst_n,//复位信号inputin_signal,//输入信号outputregpre_gate//预置闸门信号);/***************************************对输入信号计数*/reg[7:0]cnt_in_signal;//计数器always@(posedgein_signalornegedgerst_n)beginif(!rst_n)cnt_in_signal=8'd0;elseif(cnt_in_signal9)cnt_in_signal=8'd0;elsecnt_in_signal=cnt_in_signal+1'b1;end/***************************************根据输入信号产生预置闸门信号丢掉输入信号前4个脉冲6*/always@(posedgein_signalornegedgerst_n)beginif(!rst_n)pre_gate=1'b0;elseif((cnt_in_signal3)&&(cnt_in_signal9))pre_gate=1'b1;elsepre_gate=1'b0;endendmodule产生预置闸门信号模块的功能仿真波形如图2-3所示,rst_n是复位信号,in_signal是输入信号,pre_gate是根据in_signal产生的预置闸门信号。由仿真波形可见pre_gate的周期是in_signal的5倍。图2-3预置闸门信号模块仿真波形Fig.2-3Presetgatesignalmodulesimulationwaveform2.2.232位乘法器模块32位乘法器模块的实现方法是:根据二进制乘法的原理,从乘数的最低位开始判断,如果乘数位为0则输出32位寄存器左移一位;如果乘数位为1则暂存64位寄存器的高32位加上被乘数再左移一位,直到计算完毕最后将暂存64位寄存器的低32位输出[7]。例如十进制数3乘以5结果为十进制的15,其相应的二进制数乘法为0011乘以0101,二进制乘法过程为:从乘数0101的最低位开始判断,0101的最低位为1,则输出寄存器加上被乘数0011再左移一位为00011000;接着判断乘数的第二位为0则输出寄存器左移一位为00001100;然后判断乘数的第三位为1,则输出寄存器加上0011再左移一位为00011110;最后判断乘数的最高位为0,则输出寄存器左移一位为00011111结果为十进7制的15和十进制的乘法得到的结果一致。32位乘法器的程序流图如图2-4所示。开始输入被乘数b和乘数a判断a的相应位输出寄存器加上b再左移一位输出寄存器再左移一位=1=0输出结果结束是否判断了32次否是图2-4乘法器程序流图Fig.2-4Multiplierprogramflowdiagram下面给出32位乘法器的Verilog代码。/****************************************乘法器32*32****************************************/modulemultiplication(inputclk,inputrst_n,inputstart,//起始信号8input[31:0]ain,//乘数input[31:0]bin,//被乘数outputreg[31:0]yout,//结果输出outputregdone//计算完成标志);parameterBW=32;parameter_2BW=64;/*******************************************产生计算完成信号*/always@(posedgeclkornegedgerst_n)if(!rst_n)done=1'b0;elseif(i==BW)done=1'b1;elseif(i[5])done=1'b0;/*******************************************计算*/reg[5:0]i;reg[BW-1:0]areg;//reg[BW-1:0]breg
本文标题:频率计参考论文
链接地址:https://www.777doc.com/doc-1963743 .html