8位十六进制频率计设计Word文件下载.docx
《8位十六进制频率计设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《8位十六进制频率计设计Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
这3个信号可以由一个测频控制信号发生器产生,即TESTCTL。
TESTCTL的计数是能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA是能端进行同步控制。
当CNT_EN高电平时允许计数;
低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进个锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。
锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。
数字频率计的关键组成部分包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包含外电路的信号整形电路、脉冲发生器、译码驱动电路和显示电路,其原理框图如图1所示。
图1数字频率计原理框图
工作原理:
系统正常工作时,脉冲信号发生器输入1Hz的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。
测量信号时,将被测信号通过信号整形电路,产生同频率的矩形波,输入计数器作为时钟。
当计数闸门信号高电平有效时,计数器开始计数,并将计数结果送入锁存器中。
设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
最后将锁存的数值由外部的七段译码器译码并在数码管上显示。
五、实验步骤
1、完成32位寄存器的设计
1)32位锁存器程序编译;
2)32位锁存器程序允许生成模块;
3)32位锁存器模块。
2、完成32位计数器的设计
1)32位计数器程序编译;
2)32位计数器程序允许生成模块;
3)32位计数器。
3、完成频率计控制电路的设计
1)频率计控制电路程序编译;
2)频率计控制电路程序允许生成模块;
3)频率计控制电路。
4、完成一个8位16进制频率计电路的设计
1)8位16进制频率计电路程序编译;
2)8位16进制频率计电路程序允许生成模块;
3)8位16进制频率计电路。
六、实验结果及分析
1、32位寄存器仿真波形如图1所示:
图132位寄存器
仿真波形
32位寄存器原理图如图2所示:
图232位寄存器原理图
2、32位计数器仿真波形如图3所示:
图332位计数器
32位计数器原理图如图4所示:
图432位计数器原理图
3、频率计控制电路仿真波形如图5所示:
图5频率计控制电路
频率计控制电路原理图如图6所示:
图6频率计控制电路原理图
4、8位16进制频率计仿真波形如图7所示:
图78位十六进制频率计
8位十六进制频率计原理图如图8所示:
图88位十六进制频率计原理图
七、思考题
1、功能仿真与时序仿真有什么不同?
答:
功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。
布局布线以前的仿真都称作功能仿真,它包括综合前仿真和综合后仿真。
综合前仿真主要针对基于原理框图的设计;
综合后仿真既适合原理图设计,也适合基于HDL语言的设计。
时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;
惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
2、还有什么其他方法实现频率计功能?
用STC89C52RC单片机可以实现频率计的功能。
附录:
试验程序
LIBRARYIEEE;
--32位计数器描述
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNTER32BIS
PORT(FIN,CLR,ENABL:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOUNTER32B;
ARCHITECTUREbehavOFCOUNTER32BIS
SIGNALCQI:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
PROCESS(FIN,CLR,ENABL)
BEGIN
IFCLR='
1'
THENCQI<
=(OTHERS=>
'
0'
);
ELSIFFIN'
EVENTANDFIN='
THEN
IFENABL='
=CQI+1;
ENDIF;
ENDIF;
ENDPROCESS;
DOUT<
=CQI;
ENDbehav;
LIBRARYIEEE;
--测频控制电路:
ENTITYFTCTRLIS
PORT(CLKK:
CNT_EN,RST_CNT,Load:
OUTSTD_LOGIC);
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
PROCESS(CLKK)
IFCLKK'
EVENTANDCLKK='
Div2CLK<
=NOTDiv2CLK;
PROCESS(CLKK,Div2CLK)
IFCLKK='
ANDDiv2CLK='
THENRST_CNT<
='
;
ELSERST_CNT<
Load<
CNT_EN<
=Div2CLK;
--32位锁存器:
ENTITYREG32BIS
PORT(LK:
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
ENDREG32B;
ARCHITECTUREbehavOFREG32BIS
PROCESS(LK,DIN)
IFLK'
EVENTANDLK='
THENDOUT<
=DIN;
--频率计顶层文件
ENTITYFREQTESTIS
PORT(CLK1HZ,FSIN:
--输入引脚及待测频率信号DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
--计数结果输出
ENDFREQTEST;
ARCHITECTUREstrucOFFREQTESTIS
COMPONENTFTCTRL--测频控制电路,
PORT(CLKK:
INSTD_LOGIC;
--1HZ输入信号
CNT_EN:
OUTSTD_LOGIC;
--0.5HZ信号,产生1s的计数时间
RST_CNT:
--计数器清零信号,1HZ与使能信号同为低时清零
Load:
OUTSTD_LOGIC);
--0.5HZ锁存信号
ENDCOMPONENT;
COMPONENTCOUNTER32B--32位计数器
PORT(FIN:
--计数信号,与FSIN相连,输入待测信号
CLR:
--清零信号,与RST_CNT相连
ENABL:
--计数使能信号,与CNT_EN相连
--计数结果输出,输入到锁存器中
COMPONENTREG32B--32位锁存器
--使能输入0.5HZ信号,与Load相连
--计数结果输入
--计数结果输出
SIGNALTSTEN1:
STD_LOGIC;
SIGNALCLR_CNT1:
SIGNALLoad1:
SIGNALDTO1:
SIGNALCARRY_OUT1:
STD_LOGIC_VECTOR(6DOWNTO0);
U1:
FTCTRLPORTMAP(CLKK=>
CLK1HZ,CNT_EN=>
TSTEN1,
RST_CNT=>
CLR_CNT1,Load=>
Load1);
U2:
REG32BPORTMAP(LK=>
Load1,DIN=>
DTO1,DOUT=>
DOUT);
U3:
COUNTER32BPORTMAP(FIN=>
FSIN,CLR=>
CLR_CNT1,
ENABL=>
TSTEN1,DOUT=>
DTO1);
ENDstruc;