基于FPGA数字频率计 (可测占空比) .pdfVIP

基于FPGA数字频率计 (可测占空比) .pdf

  1. 1、本文档共16页,可阅读全部内容。
  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文档。上传文档
查看更多

VHDL课程设计报告

——基于FPGA的数字频率计

姓名:

学号:

班级:

目录

1设计原理………………….1

2功能设计…………………..1

3系统总体框图……………1

4各功能块设计说明…….2

5实验结果……………………14

6结论分析…………………….15

一、设计原理

频计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其

他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。

闸门时间可以根据需要取值,大于或小于1s都可以。闸门时间越长,得到的频

率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,

测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1s作为闸门时

间,此测量方法称为直接测频法。由于闸门时间通常不是待测信号的整数倍,这

种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度:设待

测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为

Tx/T=Tx=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信

号频率较高时,测量准确度也较高,反之测量准确度也较低。

二、功能设计

1、测量范围:1HZ99MHZ,测量精度±1HZ。

2、测量结果高4位与低4位进行分页显示。

当超过9999HZ时,系统亮灯提示超出低4位显示范围,可通过按键进行

高低4位结果的显示切换。高4位显示时,伴有小数点位的点亮,提示已成功切

换到高4位。

3、测量所测信号的占空比。

能够快速测出输入待测信号的占空比,并且通过按键,切换到占空比显示

状态。

4、内置自测信号

由内部时钟产生三个特定时钟,以供自身测试功能是否正常。

三、系统总体框图

系统总框图

四、各功能块设计说明

1、时钟发生器

通过对50MHZ的晶振时钟进行50M的分频,等到一个1HZ信号。再通过此信号,通过

2分频,得到一个0.5HZ的信号,从而得到高电平为1秒的闸门控制信号en来控制计数器的

计数时间.再通过对en求反,等到锁存信号load.而清零信号clr则通过en与1HZ信号共同产

生.

同时对50MHZ信号进行500分频,一个两位的std_logic_vector(1downto0)信号在分

频信号的驱动下不断加‘1’,等到“00”、“01”、“10”、“11”四种片选信号,对应4个数

码管,从而驱动数码管的动态扫描显示。

时钟发生器的代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityclockis

port(clk0:instd_logic;

load,en,clr:outstd_logic;

pian:bufferstd_logic_vector(1downto0)

);

endentityclock;

architecturerunofclockis

signalen1,en2,en3:std_logic;

begin

onehz:process(clk0)--产生1HZ信号

variablecnt:integerrange0to

variablex:std_logic;

begin

if(clk0eventandclk0=1)then

if(cnthen

文档评论(0)

176****0816 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档