4位十进制频率计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA技术课程大作业

设计题目:4位十进制频率计的设计

院系:电子信息与电气工程学院

学生姓名:

学号:200902070040

专业班级:09电子信息专升本

2010年12 月9 日

4位十进制频率计的设计

1. 设计背景和设计方案

1.1设计原理

4位十进制频率计的原理图如图1所示。它由4片十进制加法器CNT10、4片锁存器REG4B和1片测频控制信号发生器TESTCTL组成。

根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这3个信号可以由一个测频控制信号发生器产生,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。

1.2设计内容

(1)编写各个VHDL源程序。三段程序分别是十进制加法器CNT10、测控器TESTETL 和锁存器REG4B的程序。

(2)用QuartusII的图形编译方法实现频率计的顶层设计如图1所示。

图1 4位十进制频率计顶层文件原理图

2. 方案实施

2.1测频控制信号发生器

TESTCTL为测频控制信号发生器。TESTCTL的计数使能信号CNT_EN能产生一个1 s 宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制:当CNT_EN 高电平时允许计数、低电平时停止计数。

程序如下

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TESTCTL IS

PORT(CLK: IN STD_LOGIC;

CNT_EN,RST_CNT,LOAD:OUT STD_LOGIC);

END TESTCTL;

ARCHITECTURE behav OF TESTCTL IS

SIGNAL DIV2CLK : STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1' THEN DIV2CLK<= NOT DIV2CLK;

END IF;

END PROCESS;

PROCESS (CLK, DIV2CLK)

BEGIN

IF CLK='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 测频控制信号发生器TESTCTL测控时序波形图

输入脉冲CLK周期为1秒,使得信号CNT_EN产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。计数结束LOAD上升沿锁存,RES_CNT 高电平时为下一次清0.

2.2 4位REG4B位锁存器

当load的上升沿时,立即对模块的输入口的数据锁存到REG4B的内部,并由REG4的输出端输出,在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清

零信号而不断闪烁。

程序如下

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REG4B IS

PORT(LOAD:IN STD_LOGIC;

DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END REG4B;

ARCHITECTURE behav OF REG4B IS

BEGIN

PROCESS(LOAD, DIN)

BEGIN

IF LOAD'EVENT AND LOAD='1' THEN DOUT<=DIN;

END IF;

END PROCESS;

END behav;

仿真波形

图3 4位REG4B位锁存器

给定输入DIN,当load的上升沿时,立即对模块的输入口的数据锁存到REG4B的内部。由图可得出输入输出一一致,仿真正确。

2.3 十进制加法器CNT10

有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。

程序如下

十进制加法计数器CNT10

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT10 IS

PORT(CLK :IN STD_LOGIC;

RST :IN STD_LOGIC;

ENA :IN STD_LOGIC;

OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT:OUT STD_LOGIC);

END CNT10;

ARCHITECTURE behav OF CNT10 IS

SIGNAL CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

P_REG: PROCESS(CLK, RST, ENA)

BEGIN

IF RST='1' THEN CQI<="0000";

ELSIF CLK'EVENT AND CLK='1' THEN

IF ENA ='1' AND CQI<="1001" THEN CQI<=CQI+1;

ELSE CQI<= "0000";

END IF;

END IF;

OUTY <= CQI;

END PROCESS P_REG;

COUT <=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); END behav;

仿真波形

相关文档
最新文档