您的当前位置:首页正文

VHDL语言完成4位十进制计数器4位锁存器测频控制器的设计

来源:一二三四网


电 子 设 计 自 动 化 实 验

实验名称 综合性实验二、硬件描述语言的层次化设计

实验设备

(1)EDA实验箱(型号 ),(2)计算机,(3)EDA软件(QuartusII)

实验目的

1、 熟悉EDA软件(QuartusII)的硬件描述语言输入设计方法;

2、 掌握VHDL语言的层次化设计方法与仿真分析方法;

3、 了解功能仿真、时序仿真与时序参数分析的意义。

实验内容

1、 用VHDL语言完成4位十进制计数器、4位锁存器、测频控制器的设计,包括

编译、综合、仿真;**

2、 采用层次化设计的方法,用VHDL语言的元件例化语句写出4位十进制频率计的

顶层文件,并分别给出其测频功能与时序仿真分析波形图,并加以分析;**

3、 用EDA实验箱进行硬件验证,并分析测量结果;建议硬件测试实验电路采用NO、0

电路结构,待测信号F_IN接clock0;测频控制时钟CLK接clock2;**

4、 在2基础上将其扩展为8位十进制频率计,或带译码输出的4位十进制频率计。

实 验 报 告 要 求

根据以上实验内容写出实验报告:

1、 简述4位频率计模块的工作原理及其设计、编译、仿真分析过程;

2、 给出模块设计文件、仿真测试文件、仿真结果波形图及其分析报告;

3、 简述硬件验证过程与验证结果。

1、 简述4位频率计模块的工作原理

根据频率的定义与频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号与为下一测频计数周期作准备的计数器清0信号。

这3个信号可以由一个测频控制信号发生器产生,即TESTCTL,它的设计要求就是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停

止计数,并保持其所计的脉冲数。

在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。

设置锁存器的好处就是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。

每一个计数器CNT10有4位输出(0000~1001分别表示十进制中的0~9),因此需要用四片CNT10。四片CNT10应串接起来,当前一片CNT10产生进位信号后,由CARRY_OUT输出跳变高电平,引入下一片CNT10(也即输入时钟信号CLK)。

四位十进制计数器

LIBRARY IEEE;

USE IEEE、STD_LOGIC_1164、ALL;

USE IEEE、STD_LOGIC_UNSIGNED、ALL;

ENTITY CNT10 IS

PORT (CLK,RST,EN : IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC );

END CNT10;

ARCHITECTURE behav OF CNT10 IS

BEGIN

PROCESS(CLK, RST, EN)

VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位

ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿

IF EN = '1' THEN --检测就是否允许计数(同步使能)

IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 检测就是否小于9

ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零

END IF;

END IF;

END IF;

IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号

ELSE COUT <= '0';

END IF;

CQ <= CQI; --将计数值向端口输出

END PROCESS;

END behav;

四位寄存器

LIBRARY IEEE; --4位锁存器

USE IEEE、STD_LOGIC_1164、ALL;

ENTITY REG4B IS

PORT ( LK : 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(LK, DIN)

BEGIN

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

END IF;

END PROCESS;

END behav;

测频器

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;

实验记录:

1、 仿真分析(目标芯片型号 ,待测信号频率FIN=132*CLK,XX为末两位学号)

测频控制器工作时序波

形:

4位频率计工作时序波形:(功能仿真分析)

4位频率计工作时序波形:(时序仿真分析)

编译结果

8位频率计

8位频率计工作时序波形:(功能仿真分析)

8位频率计工作时序波形:(时序仿真分析)

编译、综合与适配频率计顶层设计文件,完全通过,设计到目前为止正确无误。

小结:通过实验完成设计4位十进制频率计,学习较复杂的数字系统设计方法;深入学习数字系统设计的方法与步骤;用VHDL硬件描述语言进行模块电路的设计。熟悉4位十进制频率计的工作原理以及各个模块的功能。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top