四位10进制VHDL频率计设计说明1.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四位10进制VHDL频率计设计 一 用VHDL语言设计一个频率计 一、频率计数器的功能说明 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器 。 二、频率计实现 四位频率计的结构包括一个测频率控制信号发生器、四个十进制计数器和一个十六位锁存器(本例中所测频率超过测频范围时有警示灯)。 (1)测频时序控制器TESTCTL 设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号CLK取为1Hz,2分频后即可产生一个脉宽为1秒的时钟信号TSTEN,以此作为计数闸门信号。当TSTEN为高电平时,允许计数;当TSTEN由高电平变为低电平(下降沿到来)时,输出计数锁存信号LOAD,将计数值保存起来;锁存数据后,还要在下次TSTEN上升沿到来之前产生用于控制计数器清零的信号CLR_CNT,将计数器清零,为下次计数作准备。设计生成电路如下 (2)十进制计数器 计数器以待测信号作为时钟,清零信号CLR_CNT到来时清零端ACLR异步清零; CLK_ENA为高电平时开始计数。如果需要测试较高的频率信号则可将输出位数增加,当然锁存器的位数也要增加。设计中生成的电路如下 (3)锁存器 当LOAD上升沿到来时,将计数器的计数值锁存,然后可由外部的七段译码器将其译码并在数码管显示。设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数应跟计数器完全一样。设计中生成电路如下 三、测频时序控制器的设计思路 如下图所示,CLK是由脉冲发生器产生的频率为1Hz的标准时钟信号,当测频计接收到CLK上升沿脉冲时,首先有一个D触发器构成二分频器,在每次时钟CLK的上升沿到来使其值翻转,分为DIV2CLK 与 NOTDIV2CLKA,当接收到首个CLK上升沿时,将产生DIV2CLK=1与NOTDIV2CLK=0,分别将他们送入TSTEN与LOAD,则计数器使能端有效,开始计数。由于二分频为上升沿翻转,而且只有CLK与DIV2CLK均为0时清零端方才有效,所以第一个CLK下降沿来临时其输出不变,维持计数一秒。当第二个CLK上升沿来临时,DIVCLK翻转,则使LOAD有效,计数器停止计数,数据锁存半周期。当第二个CLK下降沿到来时,有CLK与DIV2CLK均为0故,此时计数清零,等待下一次计数。 频率计原理图 四、设计程序及注解 1. 十进制计数器设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK : IN STD_LOGIC; CLR : IN STD_LOGIC; ENA : IN STD_LOGIC; CQ : OUT CARRY_OUT : OUT STD_LOGIC ); END CNT10 ; ARCHITECTURE behav OF CNT10 IS SIGNAL CQ1 :INTEGER BEGIN PROCESS(CLK, CLR, ENA) BEGIN IF CLR=1 THEN CQ1=0; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQ1 9 THEN CQ1= CQ1+1; ELSE CQ1= 0; END IF; END IF; END IF; END PROCESS; PROCESS (CQ1) BEGIN IF CQ1 = 9 THEN CARRY_OUT=1; ELSE CARRY_OUT=0; END IF; END PROCESS; CQ= CQ1; END behav ; 2. 测频时序控制器设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TES

文档评论(0)

177****7891 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档