在FPGA上用VHDL实现数字频率计 实验报告 .pdfVIP

在FPGA上用VHDL实现数字频率计 实验报告 .pdf

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

数字系统设计实验报告

一、设计要求:

1、(1)频率测量范围10Hz~1MHz

(2)量程自动转换,量程分为10KHz(1s)、100KHz(0.1s)、1MHz(10ms)三档。转换

规则如下:

当读数大于9999时,频率计处于超量程状态,下一次测量时,量程自动增大一档;当读

数小于0999时,频率计处于欠量程状态,下一次测量时,量程自动减小一档

(3)数据采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数

结果,并将此显示结果保持到下一次计数结束。

(4)用发光二极管显示量程

二、方案选则

1测量原理:当预置门控信号为高电平时,启动计数器,被测信号(频率为fx)计数

当预置门控信号为低电平时,关闭计数器

设在一次预置门控时间Tg内对被测信号计数值为Nx,则

fx=Nx/Tg

2具体方案:本设计中将2MHz的时钟分三次频,分别作为防抖电路的周期信号、显示模

块片选信号、计数及锁存模块闸门信号。防抖电路滤去窄波,显示模块用模4计数器来分别

输出四位测量结果。计数器通过在0.1s内对输入信号的高电平(发生期)进行计数来得出结

果,并且为了达到换挡目的,测量时计六位数,通过结果选择档位进行输出。

二、原理图

三、总体电路图

四、流程图

五、设计清单

1、防抖电路

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYdebounceIS

PORT(key,cp:INSTD_LOGIC;--复位键

imp:OUTSTD_LOGIC);--去掉窄波后输出

ENDdebounce;

ARCHITECTUREbaseOFdebounceIS

SIGNALql,q2:STD_LOGIC;

BEGIN

PROCESS(cp)

BEGIN

IFcpeventANDcp=1THEN

q2=ql;ql=key;

ENDIF;

ENDPROCESS;

imp=qlANDNOTq2;

ENDbase;

时序仿真波形:

2、分频电路

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_SIGNED.ALL;

ENTITYdividefre4IS

PORT(cp_2m:INSTD_LOGIC;--2MHz

cpl:OUTSTD_LOGIC;--200Hz

cp2:OUTSTD_LOGIC;--25Hz

cp3:OUTSTD_LOGIC);--5Hz

ENDdividefre4;

ARCHITECTUREbehaviorOFdividefre4IS

SIGNALtout:INTEGERRANGE0TO4999;--5000分频

SIGNALtoutl:INTEGERRANGE0TO7;--8分频

SIGNALtout2:INTEGERRANGE0TO39;--40分频

SIGNALcp_1:STD_LOGIC;

SIGNALcp_2:STD_LOGIC;

SIGNALcp_3:STD_LOGIC;

SIGNALcp:STD_LOGIC;

BEGIN

PROCESS(cp_2m)–分出400Hz时钟

BEGIN

IF(cp_2meventANDcp_2m=1)THEN

IFtout=4999THEN

tout=0;

ELSEtout=tout+1;

ENDIF;

IFtout=2499THEN

cp=0;

ELSEcp=1;

文档评论(0)

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

1亿VIP精品文档

相关文档