等精度频率的测量设计报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
等精度频率的测量设计报告

等精度频率的测量设计报告 报告人:朱伯程(074100138) 周哲远(074100137) 报告摘要:本文介绍了一种同步测周期计数器的设计,并基于该计数器设计了一个高精度的数字频率计。文中给出了计数器的VHDL编码,并对频率计的FPGA实现进行了仿真验证,给出了测试结果。同时在分析了等精度测频在实现时存在的问题的基础上,介绍了一种基于自适应分频法的频率测量技术,可达到简化测量电路、提高系统可靠性、实现高精度和宽范围测量的目的 关键词:频率计 VHDL FPGA 周期测量 等精度 自适应 分频 实验原理 1.频率测量的几种方法: 工程上测量频率和周期的方法一般可以分为无源测频法、有源比较法、电子计数器3种。 无源测频法又可分为谐振法和电桥法,常用于频率粗测,精度在1%左右。有源比较法可分为拍频法和差频法,前者是利用信号线性叠加,产生拍频现象,通过检测零差后现象测频,常用于低频测量,误差在零点几赫;后者是利用两个信号非线性叠加,产生差频现象,通过检测零差现象测频,常用于高频测量,误差为士20Hz左右。可见,以上在测量范围和精度上都难以达到要求。 电子计数器的测频原理实质上以比较法为基础,它将被测信号频率人与时基信号频率相比,两个频率相比得到的结果以数字的形式显示出来。同时,它在测量范围和精度上都能达到要求。 2.等精度测频基本原理 等精度频率测量技术又叫做多周期同步测量技术,它主要由被测信号计数器、参考信号计数器、同步闸门控制器、采样时间控制器以及运算单元等组成,工作原理下图所示。 波形图解: 根据设计任务的要求,因此我们选择用等精度测量法进行系统设计。 实验任务与要求 (一)任务设计一个简易等精度频率计。 (二)要求 a.测量范围 信号:方波幅度:TTL电平; 频率:1Hz~1MHzb.测试误差≤0.1%(全量程) * 闸门时间:~1s,响应时间:~2s乘除运算: 单片机、FPGA、计算器计算 系统总体方案设计 根据测频过程的思路,可编写相应的软件。测频程序流程图下图所示: 根据流程图与要求,本实验的需要注意的地方: 计数器的位数。由于要测量的频率范围为1Hz~1MHz。所以可以设置计数器位数为20位。对于基准信号的频率,选用1MHz的标准脉冲信号。 分频器。首先要进行2分频。(供粗测使用)。再进行任意分频,供精测使用。 锁码器。为的是稳定计数器的最后数据。 在第一次计数完成之后,要能自动对计数器进行清零。 系统子模块实现及仿真结果LIBRARY ieee; USE ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY fsd IS PORT (clock: IN STD_LOGIC; fsd_num:in std_logic_vector(19 downto 0);--输入要分频的数字,比如要8分频,只要输入相应的二进制就可以了。 div_out:out std_logic); END fsd; ARCHITECTURE bhv OF fsd IS BEGIN PROCESS(clock) VARIABLE cout:INTEGER:=0; variable fsd_num_dec,half_fsd_num_dec:integer; BEGIN fsd_num_dec:=conv_integer(fsd_num); half_fsd_num_dec:=fsd_num_dec/2; IF clockEVENT AND clock=1 THEN cout:=cout+1; IF couthalf_fsd_num_dec or cout=half_fsd_num_dec THEN div_out=1; ELSIF coutfsd_num_dec THEN div_out=0; ELSE cout:=0; END IF; END IF; END PROCESS; end bhv; 接着进入同步计数阶段.包括使计数器在一个周期计完后的清零。(计数器用的是异步清零端。下图中的下方的与门非门等组成的逻辑电路部分是清零控制部分) 3.锁码部分. 这里的my_latch模块是起锁码作用,这样就能使输出的数据能够稳定。最后的exch22to20模块是把输出的23位数据转换为20位数据输出。(由于宏模块的关系,输出的23的数据中只有20位是有用的) 4 计算部分,这部分的功能要把结果显示成十进制,并能进行分段表示

文档评论(0)

gangshou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档