EDA8位16进制频率计.doc
教师评阅意见:
教师评阅意见:
签名:年月日
实验成绩:
一、课题任务与要求
实验目的:设计8位16进制频率计,学习较复杂的数字系统设计方法。
实验内容:
根据测频控制电路、32位锁存器、32位计数器所给出的VHDL程序,分析程序完成的功能。并利用QuartusII软件分别对其进行编译和仿真,在结合频率计顶层文件的程序完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。选用电路模式5;8个数码管以十六进制显示测频输出;待测频输入FIN有clock0输入,频率可选4Hz、256Hz、3Hz….50MHz等;1Hz测频控制信号CLK1Hz可由clock2输入〔用跳线选1Hz〕。注意,这时8个数码管的测频显示值是16进制的。
将频率计改为8位10进制频率计,注意此时设计的计数器必须是8个4位的10进制计数器,而不是一个。此外注意在测频速度上给予优化。
二、设计系统的概述
根据频率的定义和频率测量的根本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期做好准备。测频控制信号可以由一个独立的发生器来产生。设计要求是:FTCTRL的计数使能信号CNT_EN能产生一个一秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存器信号LOAD的上跳沿将计数器在 前一秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断的闪烁。锁存信号后,必须有一清零信号RST_CNT对计数器进行清零,为下一秒的计数操作准备。
8位16进制频率计设计
根据实验指导书上所给定的测频控制电路、32位锁存器、32位计数器以及频率计的顶层文件的实验程序,分别完成每个模块的编译和仿真,并最终完成频率计的完整设计。
8位10进制频率计设计
将频率计改为8为10进制频率计,需将32位计数器改成4位的十进制计数器,并且需要8个这样的计数器。
三、单元电路的设计与分析〔重点描述自己设计局部〕
1.8位十六进制频率计设计
测频控制电路程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(CLKK:INSTD_LOGIC;--1Hz
CNT_EN:OUTSTD_LOGIC;--计数器时钟使能
RST_CNT:OUTSTD_LOGIC;--计数器清零
Load:OUTSTD_LOGIC);--输出锁存信号
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IFCLKKEVENTANDCLKK=1THEN--1Hz时钟2分频
Div2CLK=NOTDiv2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLKK,Div2CLK)
BEGIN
IFCLKK=0ANDDiv2CLK=0THENRST_CNT=1;--产生计数器清零信号
ELSERST_CNT=0;
ENDIF;
ENDPROCESS;
Load=NOTDiv2CLK;
CNT_EN=Div2CLK;
ENDbehav;
32位锁存器:
LIBRARYIEEE;--32位锁存器
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG32BIS
PORT(LK:INSTD_LOGIC;
DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDREG32B;
ARCHITECTUREbehavOFREG32BIS
BEG