VHDL语言完成4位十进制计数器4位锁存器测频控制器的设计.docx
电子设计自动化实验
实验名称 综合性实验二、硬件描述语言的层次化设计实验设备
(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)。
四位十进制计数器
LIBRARYIEEE;
USEIEEE、STD_LOGIC_1164、ALL;
USEIEEE、STD_LOGIC_UNSIGNED、ALL;ENTITYCNT10IS
PORT(CLK,RST,EN:INSTD_LOGIC;
CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC );
ENDCNT10;
ARCHITECTUREbehavOFCNT10ISBEGIN
PROCESS(CLK,RST,EN)
VARIABLE CQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGIN
IFRST=1THEN CQI:=(OTHERS=0); --计数器异步复位
ELSIFCLKEVENTANDCLK=1THEN --检测时钟上升沿
IFEN=1THEN --检测就是否允许计数(同步使能)
IFCQI9THEN CQI:=CQI+1; --允许计数,检测就是否小于9ELSE CQI:=(OTHERS=0); --大于9,计数值清零
ENDIF;
ENDIF;
ENDIF;
IFCQI=9THENCOUT=1; --计数大于9,输出进位信号ELSE COUT=0;
ENDIF;
CQ=CQI; --将计数值向端口输出ENDPROCESS;
ENDbehav;
四位寄存器
LIBRARYIEEE; --4位锁存器
USEIEEE、STD_LOGIC_1164、ALL;ENTITYREG4BIS
PORT( LK:INSTD_LOGIC;
DIN:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(3D