文档详情

EDA-8位16进制频率计设计.doc

发布:2025-04-25约5.6千字共14页下载文档
文本预览下载声明

一、设计方案介绍

用VHDL语言,完成8位16进制频率计的设计。

根据频率的定义和频率测量的根本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。测频控制信号可以由一个独立的发生器来产生。

数字频率计的关键组成局部包括一个测频控制信号发生器FTCTRL、计数器COUNTER32B和一个锁存器REG32B,另外包含外电路的信号整形电路、脉冲发生器、译码驱动电路和显示电路。其工作原理如下:FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。

该实验组要有四个模块组成:测频信号发生器、32位锁存器

、32位计数器以及顶层文件。

VHDL设计局部

测频控制电路FTCTRL

设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号clk取为1Hz,2分频后即可产生一个脉冲宽为1秒的时钟cnt-en,以此作为计数闸门信号。当cnt-en为高电平时,允许计数;当cnt-en由高电平变为低电平〔下降沿到来〕时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次cnt-en上升沿到来之前产生零信号ret-en,将计数器清零,为下次计数做准备。

程序代码如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYTESTCTLIS

PORT(CLK:INSTD_LOGIC;

TSTEN:OUTSTD_LOGIC;

CLR_CNT:OUTSTD_LOGIC;

Load:OUTSTD_LOGIC);

ENDTESTCTL;

ARCHITECTUREbehavOFTESTCTLIS

SIGNALDiv2CLK:STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IFCLKEVENTANDCLK=1THEN

Div2CLK=NOTDiv2CLK;

ENDIF;

ENDPROCESS;

PROCESS(CLK,Div2CLK)

BEGIN

IFCLK=0ANDDiv2CLK=0THEN

CLR_CNT=1;

ELSE

CLR_CNT=0;

ENDIF;

ENDPROCESS;

Load=NOTDiv2CLK;TSTEN=Div2CLK;

ENDbehav;

生成LPM模块的流程:选择File→Creat/_Update→Creatsymbolfilesforcurrentfile,再选择Tools→Netlistviewers→RETviewer那么可以看到生成的元件模块图。

2〕锁存器REG32B

当cnt-en下降沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器译码并在数码管显示。设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数应跟计数器完全一样。

程序代码如下:

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYREGIS

PORT

(

clock :INSTD_LOGIC;

data :INSTD_LOGIC_VECTOR(31DOWNTO0);

q :OUTSTD_LOGIC_VECTOR(31DOWNTO0)

);

ENDREG;

ARCHITECTURESYNOFREGIS

SIGNALsub_wir

显示全部
相似文档