综合性实
验报告
姓 名:
学 号
班 级:
实验项目名称: 8位16进制频率计设计
实验项目性质: 验证性和设计性实验
实验所属课程: EDA数字设计基础
实验室(中心): 现代电子实验中心
指 导 教 师 :
实验完成时间: 2012 年 6 月 20 日
教师评阅意见:
签名: 年 月 日 实验成绩: 一、课题任务与要求
1、用EDA技术设计并实现8位十六进制频率计,及设计一个基于VHDL的八位十六进制频率计,学习较复杂的数字系统设计方法。书面报告包括工作原理,工作模块图,仿真
波形图和问题分析。
2、分别仿真测试模块1,、2和3,在结合模块4完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。
3、将频率计改为8位10进制频率计,注意此设计电路的计数器必须是8个4位的10进制计数器。此外注意在测频速度上给予优化。
二、设计系统的概述
原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期做好准备。测频控制信号可以由一个独立的发生器来产生。在一个标准信号的周期中计数出待测信号的周期,从而得出待测信号的周期,进而得到待测信号的频率。通过待测信号与标准信号比较,而输出的8位16进制数或8位10进制数就是待测信号的频率值。
(1)FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的ENABL使能进行同步控制。
(2)当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进各锁存器REG32B中,并由外部的十六进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。
(3)锁存信号后,必须有清零信号RST_CNT对计数器进行清零,为下一秒的计数操作作准备。
(4)、8位16进制频率计
由一个测频控制电路、一个32位锁存器和一个32位计数器组成。 (5)、8位10进制频率计
由一个测频控制电路、一个32位锁存器和8个4位计数器组成。
三、单元电路的设计与分析:
<一>单元电路的设计: 1、测频控制电路
LIBRARY IEEE; --测频控制电路 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FTCTRL IS
PORT (CLKK : IN STD_LOGIC; -- 1Hz
CNT_EN : OUT STD_LOGIC; -- 计数器时钟使能 RST_CNT : OUT STD_LOGIC; -- 计数器清零 Load : OUT STD_LOGIC ); -- 输出锁存信号 END FTCTRL;
ARCHITECTURE behav OF FTCTRL IS SIGNAL Div2CLK : STD_LOGIC; BEGIN
PROCESS( CLKK ) BEGIN
IF CLKK'EVENT AND CLKK = '1' THEN -- 1Hz时钟2分频 Div2CLK <= NOT Div2CLK; END IF; END PROCESS;
PROCESS (CLKK, Div2CLK) BEGIN
IF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1';-- 产生计数器清零信号 ELSE RST_CNT <= '0'; END IF; END PROCESS;
Load <= NOT Div2CLK; CNT_EN <= Div2CLK; END behav;
2、32位锁存器REG32B
LIBRARY IEEE; --32位锁存器 USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG32B IS
PORT ( LK : IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END REG32B;
ARCHITECTURE behav OF REG32B IS
BEGIN
PROCESS(LK, DIN) BEGIN
IF LK'EVENT AND LK = '1' THEN DOUT <= DIN; END IF; END PROCESS; END behav;
3、32位计数器COUNTER32B
LIBRARY IEEE; --32位计数器 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER32B IS
PORT (FIN : IN STD_LOGIC; -- 时钟信号 CLR : IN STD_LOGIC; -- 清零信号 ENABL : IN STD_LOGIC; -- 计数使能信号 DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); -- 计数结果 END COUNTER32B;
ARCHITECTURE behav OF COUNTER32B IS
SIGNAL CQI : STD_LOGIC_VECTOR(31 DOWNTO 0); BEGIN
PROCESS(FIN, CLR, ENABL) BEGIN
IF CLR = '1' THEN CQI <= (OTHERS=>'0'); -- 清零 ELSIF FIN'EVENT AND FIN = '1' THEN
IF ENABL = '1' THEN CQI <= CQI + 1; END IF; END IF; END PROCESS; DOUT <= CQI; END behav;
4、8位16进制的频率计顶层文件
LIBRARY IEEE; --频率计顶层文件 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY FREQTEST IS
PORT ( CLK1HZ : IN STD_LOGIC; FSIN : IN STD_LOGIC;
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );
相关推荐: