ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:267.66KB ,
资源ID:29934567      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29934567.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(频率计参考论文.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

频率计参考论文.docx

1、频率计参考论文1.2 电子测量仪器现状1.2.1 频率计的发展现状在电子测量领域中,频率测量的精确度是最高的,可达1010E-13数量级。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。目前最主要的方法是基于单片机和FPGA或CPLD利用EDA技术设计实现等精度频率测量,这使设计过程大大简化,缩短了开发周期,减小了电路系统的体积,同时也有利于保证频率计较高的精度和较好的可靠性。而实现等精度的算法主要是,在计数法和测周期法基础上发展起来的新型等精度频率测量算法,主

2、要原理是预置闸门信号频率时随着被测信号频率的改变而改变,从而实现了等进度的测量。1.4 FPGA简介1.4.1 FPGA概述FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件

3、描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步6。1.4.2 FPGA的发展现状先进的ASIC生产工艺已经被用于FPGA的生产,越来越丰富的处理器内核被嵌入到高端的FPGA芯片中,基于FPGA的开发成为一项系统级设计工程。随着半导体制造工艺的不断提高,FPGA 的集成度将

4、不断提高,制造成本将不断降低,其作为替代ASIC 来实现电子系统的前景将日趋光明。随着EDA 技术在全球范围内的飞速发展,业界都在翘首以待基于Linux 环境的EDA 技术成为电路设计领域的主流。首先,由于Linux 费用很低,源代码开放,这使得EDA 软件的前期开发费用很低,而且运行维护的成本也很低,同时大大方便了工程师的设计工作。而Linux 工作站的费用也要比Unix 工作站便宜很多。此外,Linux的成本大约是Unix以及Windows 的1/151/10,但是效能并不比后者差,甚至运行速度要更快一些。现在业界普遍的看法就是预计在未来的5年内,Linux 将成为EDA 的主角。可以预见

5、,Linux 的普及只是时间问题11。另一方面,随着现场可编程逻辑器件越来越高的集成度,加上对不断出现的I/O标准、嵌入功能、高级时钟管理的支持,使得设计人员开始利用现场可编程逻辑器件来进行系统级的片上设计。Altera公司目前正积极倡导SOPC(System On a Progrmmable Chip,系统可编程芯片)。“片上可编程系统”(SOPC)得到迅速发展,主要有以下几个原因:1)密度在100万门以上的现场可编程逻辑芯片已经面市;2)第4代现场可编程逻辑器件的开发工具已经成形,可对数量更多的门电路进行更快速的分析和编译,并可使多名设计人员以项目组的方式同步工作; 3)知识产权(IP)得

6、到重视,越来越多的设计人员以“设计重用”的方式对现有软件代码加以充分利用,从而提高他们的设计效率并缩短上市时间。Altera公司为了实现SOPC的设计,不仅研制开发出新器件,而且还研制出新的开发工具对这些新器件提供支持,并且与新芯片及软件相配合的是带知识产权的系统级设计模块解决方案,它们的参数可由用户自己定义。芯片、软件及知识产权功能集构成了Altera完整的可编程解决SOPC方案Excalibur解决方案,如图1-1给出了利用这一方案实现SOPC的流程图12。2 频率计的原理和设计2.1 频率计的测频原理2.1.1 等精度测频法传统的测频方法有直接测频法和测周法,在一定的闸门时间内计数,门控

7、信号和被测信号不同步,计数值会产生一个脉冲的误差。等精度测频法采用门控信号和被测信号同步,消除对被测信号计数产生的一个脉冲的误差。等精度频率测量方法消除了量化误差,可以在整个测试频段内保持高精度不变,其精度不会因被测信号频率的高低而发生变化。利用FPGA强大的逻辑处理功能使被测信号和标准信号在闸门时间内同步测量,为了提高精度,将电子计数功能转为测周期,采用多周期同步测量技术,实现等精度测量。在测量过程中分别对被测信号和标准信号同时计数。测量的具体方法是:首先给出闸门开启信号(预置闸门信号),此时计数器并不开始计数,而是等被测信号的上升沿到来时计数器才开始计数,然后预置闸门信号关闭信号(下降沿)

8、,计数器并不立即停止计数,而是等到被测信号上升沿来到时才停止计数,完成一次测量过程,过程如图2-1所示。图2-1 等精度测频原理Fig.2-1 Principle of equal precision frequency measuring预置闸门信号和实际闸门信号不相等,但两者差值不会相差被测信号的一个周期。但从图2-1中可得实际闸门控制信号与被测信号同步,因此消除了的脉冲误差,并且此测频方法不仅对被测信号进行计数,而且去标准信号也计数,所以称为多周期同步测频法。2.1.2 等精度测频误差分析计数器对标准信号的计数是,被测信号的计数是,标准信号的频率为,被测信号的频率: (2-1)由式(2-

9、1)可知,若忽略标频的误差,则等精度测频可能产生的相对误差为: (2-2)其中为被测信号频率的准确值。在测量中,由于计数的起停时间都是由该信号的上升测触发的,无字误差。而对的计数最多相差一个数的误差,即,其测量频率为: (2-3)将式(2-1)和(2-2)代入式(2-3),并整理得: (2-4)从公式(2-4)可以看出等精度算法产生的误差和被测信号的频率无关,仅与闸门时间和标准信号频率有关,从而实现整个频率段的等精度测量。2.2 等精度频率计的Verilog实现等精度频率计的结构图如图2-2所示。等精度频率计总共分为4个部分:32位的乘法器、32位的除法器、根据输入信号产生预置闸门信号模块和计

10、算频率值模块。首先是根据输入信号产生预置闸门信号,再根据预置闸门信号产生实际闸门信号;在实际闸门信号的控制下分别对基准100MHz方波信号和输入信号计数,在实际闸门信号的结束时停止计数并将计数值锁存到寄存器,根据式(2-1)调用32位的乘法器和32位的除法器计算频率值。图2-2 等精度频率计结构图Fig.2-2 Equal precision frequency meter structure2.2.1预置闸门信号产生模块根据输入信号产生预置闸门信号模块的实现方法是:首先对输入信号计数,当计数值在3到9之间时产生预置闸门信号。目的是舍去前3个输入信号再产生预置闸门信号,防止输入信号刚接入系统时

11、不稳定对测量结果产生影响。预置闸门信号的周期是输入信号周期的5倍。下面给出产生预置闸门信号模块的Verilog代码。/* 根据输入信号产生门信号*/module Suit_Freq( input rst_n, /复位信号 input in_signal, /输入信号 output reg pre_gate /预置闸门信号 );/*对输入信号计数*/reg7:0 cnt_in_signal; /计数器always(posedge in_signal or negedge rst_n)begin if(!rst_n) cnt_in_signal9) cnt_in_signal=8d0; else

12、cnt_in_signal=cnt_in_signal+1b1;end/*根据输入信号产生预置闸门信号丢掉输入信号前4个脉冲*/always(posedge in_signal or negedge rst_n)begin if(!rst_n) pre_gate3)&(cnt_in_signal9) pre_gate=1b1; else pre_gate=1b0;endendmodule产生预置闸门信号模块的功能仿真波形如图2-3所示,rst_n是复位信号,in_signal是输入信号,pre_gate是根据in_signal产生的预置闸门信号。由仿真波形可见pre_gate的周期是in_si

13、gnal的5倍。图2-3 预置闸门信号模块仿真波形Fig.2-3 Preset gate signal module simulation waveform2.2.2 32位乘法器模块32位乘法器模块的实现方法是:根据二进制乘法的原理,从乘数的最低位开始判断,如果乘数位为0则输出32位寄存器左移一位;如果乘数位为1则暂存64位寄存器的高32位加上被乘数再左移一位,直到计算完毕最后将暂存64位寄存器的低32位输出7。例如十进制数3乘以5结果为十进制的15,其相应的二进制数乘法为0011乘以0101,二进制乘法过程为:从乘数0101的最低位开始判断,0101的最低位为1,则输出寄存器加上被乘数00

14、11再左移一位为00011000;接着判断乘数的第二位为0则输出寄存器左移一位为00001100;然后判断乘数的第三位为1,则输出寄存器加上0011再左移一位为00011110;最后判断乘数的最高位为0,则输出寄存器左移一位为00011111结果为十进制的15和十进制的乘法得到的结果一致。32位乘法器的程序流图如图2-4所示。图2-4 乘法器程序流图Fig.2-4 Multiplier program flow diagram下面给出32位乘法器的Verilog代码。/* 乘法器 32*32*/module multiplication( input clk, input rst_n, inp

15、ut start, /起始信号 input31:0 ain, /乘数 input31:0 bin, /被乘数 output reg31:0 yout, /结果输出 output reg done /计算完成标志 );parameter BW=32;parameter _2BW=64;/* 产生计算完成信号*/ always (posedge clk or negedge rst_n) if(!rst_n) done=1b0; else if(i=BW) done=1b1; else if(i5) done=1b0;/* 计算*/reg5:0 i;regBW-1:0 areg;/regBW-1:

16、0 breg;/reg_2BW-1:0 yout_r;always (posedge clk or negedge rst_n)begin if(!rst_n) begin areg =0; breg =0; yout_r =64d0; i6d0 & i=BW)/修改此处的位宽 begin if(aregi-1) yout_r = 1b0,yout_r_2BW-1:BW+breg,yout_rBW-1:1; else begin yout_r 1; end end else if(i=BW+1) begin yout=yout_rBW-1:0; areg=ain; breg=bin; yout

17、_r=64d0; i=0; end i=i+1b1; endendendmodule32位乘法器的时序仿真波形如图2-5所示,第一个信号是100MHz的系统时钟clk。第二个信号是复位信号rst_n。第三个信号是乘数ain。第四个信号是被乘数bin。第五个信号是开启计算信号start,高电平有效。第六个信号是计算完成标志信号done,done的上升沿标志着计算完毕。第七个信号是计算结果yout,每个计算过程需要32个时钟周期。由图2-5可见当ain=100000000,bin=5时计算结果yout=500000000,当ain=6,bin=7时计算结果yout=42。图2-5 乘法器仿真波形F

18、ig.2-5 Multiplier simulation waveform2.2.3 32位除法器模块32位除法器模块的实现方法是:将32位的被除数和除数分别放在两个64位的暂存寄存器temp_a的低32位和temp_b的高32位。然后对temp_a每左移1位就将其高32位和temp_b的高32位比较,如果前者大于或等于后者则temp_a=temp_a-tempb+1;如果前者小于后者则temp_a不变。直到temp_a向左移完32位,取出temp_a的低32位即为商,temp_a的高32位即为余数。例如两个4位的十进制数7除以3,结果为商2余1。其相应的二进制除法过程为:0111和0011分

19、别放在两个8位的暂存寄存器temp_a的低4位和temp_b的高4位,即temp_a=00000111和temp_b=00110000。然后temp_a左移一位为00001110,将其高4位0000与temp_b的高4位0011进行比较,因为前者小于后者,所以temp_a不变;继续将temp_a左移一位为00011100,因为0001小于0011,所以temp_a=00011100;继续将temp_a左移一位为001110,因为0011等于0011,所以temp_a=temp_a-temp_b+1=00111000-00110000+1=00001001;再将temp_a左移一位为000100

20、10,因为0001小于0011,所以temp_a=00010010,temp_a已经向左移完4位,所以取出temp_a的低4位0010即为商2,temp_a的高4位0001即为余数1。与十进制除法的结果一致。32位除法器的程序流图如图2-6。下面给出32位除法器的Verilog代码。/* 32/32除法器 */module Diviser ( input clk, input rst_n, input31:0 a, /被除数 input31:0 b, /除数 output reg 31:0 result, /商 output reg 31:0 remainder, /余数 output reg

21、 calc_done /计算完成标志,高脉冲);parameter BW=32;parameter _2BW=64;regBW-1:0 tempa; regBW-1:0 tempb; reg_2BW-1:0 temp_a; reg_2BW-1:0 temp_b; reg 5:0 counter; /* 锁存输入值 */always (a or b) begin tempa = a; tempb = b; end 图2-6 除法器的程序流图Fig.2-6 Program flow diagram of the divider/* 锁存输入值*/always (posedge clk or neg

22、edge rst_n) if(!rst_n) begin temp_a = 32d0; /修改此处的位宽 temp_b = 32d0; /修改此处的位宽 calc_done BW-1) begin counter =6d0; calc_done = 1b1; result = temp_b_2BW-1:BW) temp_a = temp_a - temp_b + 1b1; else temp_a = temp_a; counter = counter + 1b1; calc_done = 1b0; end endmodule32位除法器的时序仿真波形如图2-7所示。第一个信号是100MHz的系

23、统时钟clk。第二个信号是复位信号rst_n。第三个信号是被除数a。第四个信号是除数b。第五个信号是计算完成标志信号calc_done,calc_done的上升沿标志着计算完毕。第六个信号是商result,第七个信号是余数remainder,每个计算过程需要32个时钟周期。由图2-6可见,当a=56765,b=23443时,商result=2,余数remainder =9879;当a=10000,b=500时,商result=20,余数remainder=0;当a=12000,b=3890时,商result=3,余数remainder=330。图2-7 除法器仿真波形Fig.2-7 Divid

24、er simulation waveform2.2.4 计算频率值模块计算频率值模块首先根据预置闸门信号产生实际闸门信号,然后在实际闸门信号的控制下分别对标准的100MHz的基准信号和输入信号计数,得到的计数值分别为count_standard和count_insignal。计算频率模块的程序流图如图2-8所示,相应的Verilog代码详见附录E。频率计的时序仿真如图2-9所示,第一个信号是100MHz的系统时钟clk。第二个信号是复位信号rst_n。第三个信号是预置门信号pre_gate。第四个信号是输入的10000KHz的被测信号。第五个信号是实际闸门信号real_gate。第七个信号是锁

25、存信号latch_falg。第八个信号是对输入信号的计数器count_insignal。第九个信号是对标准信号的计数器count_standard。第十个信号是锁存输入信号计数器的锁存器Nx。第十一个信号是锁存标准信号计数器值得锁存器Ns,第十二个信号是输出频率值frequency。由图2-8可见,预置闸门信号pre_gate控制产生实际闸门信号real_gate,在实际闸门信号real_gate的上升沿到来时,开启对输入信号和对标准信号的计数,当实际闸门信号的下降沿到来时产生一个高脉冲的锁存信号latch_falg,在latch_falg的控制下将count_insignal和count_s

26、tandard的计数值分别所存在Nx和Ns里用于频率计算,锁存完值后,并将count_insignal和count_standard清零。图2-8 计算频率值代码流图Fig.2-8 Frequency calculation flow diagram图2-9 频率计时序仿真Fig.2-9 The timing sequence simulation frequency为了能够在SOPC Builder里面将频率计集成到可编程系统上,必须还要利用Avalon总线协议对其进行封装。下面给出其封装的代码。/* 毕业设计 频率计 Avalon封装*/module Freq_Count_Avalon( input clk, input rst_n, input in_signal, /被测输入信号 /Avalon信号- input chipselect, /片选信号 input address, /地址信号 input read, /读使能信号 output reg31:0 readdata /读数据);wire31:0 frequency;/-Freq_count Freq_count_m( .clk(clk), .rst_n(rst_n), .in_signal(in_signal),/被测输入信号 .frequency(frequency) );/-/*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1