8位十六进制频率计的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验二利用VHDL实现8位十六进制频率计一、实验目的1)掌握更复杂的原理层次化设计和数字系统设计方法;2)完成8位16进制频率计的设计。二、实验内容在QuartusII上利用VHDL设计出一个8位的十六进制的频率计,分别设计出频率计的各个模块。三、实验仪器1)计算机及操作系统;2)QuartusII软件。四、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉冲宽度为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号并为下一测频计数周期做准备的计数器清0信号。这3个信号可以由一个测频控制信号发生器产生,即TESTCTL。TESTCTL的计数是能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA是能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进个锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。数字频率计的关键组成部分包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包含外电路的信号整形电路、脉冲发生器、译码驱动电路和显示电路。工作原理:系统正常工作时,脉冲信号发生器输入1Hz的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。测量信号时,将被测信号通过信号整形电路,产生同频率的矩形波,输入计数器作为时钟。当计数闸门信号高电平有效时,计数器开始计数,并将计数结果送入锁存器中。设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。最后将锁存的数值由外部的七段译码器译码并在数码管上显示。五、实验步骤1、完成频率计控制电路的设计1)频率计控制电路程序编译;2)频率计控制电路程序允许生成模块;3)频率计控制电路。2、完成32位计数器的设计1)32位计数器程序编译;2)32位计数器程序允许生成模块;3)32位计数器。3、完成32位寄存器的设计1)32位锁存器程序编译;2)32位锁存器程序允许生成模块;3)32位锁存器模块。4、完成一个8位16进制频率计电路的设计1)8位16进制频率计电路程序编译;2)8位16进制频率计电路程序允许生成模块;3)8位16进制频率计电路。六、实验结果及分析1、频率计控制电路仿真波形如图1所示由仿真图形可知,当CLKK作为1Hz时钟输入时,CNT_EN信号是其2分频信号即脉宽为1s,也就可以作为计数器的使能信号。当CNT_EN信号由高电平跳变为低电平即计数器计数结束时,Load信号出现一个上升沿作为锁存器锁存数据的使能信号。在下一个CNT_EN信号由低电平变为高电平即开始计数之前,RST_EN出现一段时间的高电平,即作为对计数器的异步清零信号,为计数器计数做准备。故测频电路部分设计成功。2、32位计数器的仿真波形以下的图为DOUT的低四位波形由仿真波形可知当CLR信号为高电平时,DOUT被清零。当CLR为低电平而ENABL信号为低电平时,此时DOUT也被清零。只有当CLR为低电平且ENABL为高电平时,计数器才会正常计数,且FIN出现上升沿的时候计数一次。故可知计数器的设计正确。3、32位寄存器的仿真波形下图为输入DIN的低6位的波形下图为输出DOUT的低6位的波形由仿真电路可知,当LK没有出现上升沿的时候,DIN的数值不能赋值给到DOUT。而当LK出现上升沿的时候,DIN的值将会赋值给DOUT被锁存起来。故32位寄存器设计成功。4、8位十六进制频率计的仿真波形以下图为DOUT的低四位由仿真图形知每CLK1HZ的一个周期里面,对输入的PSIN脉冲的上升沿进行计数,且在计数过程中DOUT始终保持着上一次计数的结果用以显示。故8位十六进制频率计设计成功。七、思考题1、简述QuartusII设计的流程⑴编辑和输入设计文件。⑵创建工程。⑶全程综合和编译。⑷仿真测试⑸引脚锁定与硬件测试。2、功能仿真与时序仿真有什么不同功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。布局布线以前的仿真都称作功能仿真,它包括综合前仿真和综合后仿真。综合前仿真主要针对基于原理框图的设计;综合后仿真既适合原理图设计,也适合基于HDL语言的设计。时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。3、还有什么其他的方法实现频率计还可以使用单片机(如STC89C52RC)实现频率计的功能八、附录1、源程序:32位计数器描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOUNTER32BISPORT(FIN,CLR,ENABL:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDCOUNTER32B;ARCHITECTUREbehavOFCOUNTER32BISSIGNALCQI:STD_LOGIC_VECTOR(31DOWNTO0);BEGINPROCESS(FIN,CLR,ENABL)BEGINIFCLR='1'THENCQI=(OTHERS='0');ELSIFFIN'EVENTANDFIN='1'THENIFENABL='1'THENCQI=CQI+1;ENDIF;ENDIF;ENDPROCESS;DOUT=CQI;ENDbehav;测频控制电路:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFTCTRLISPORT(CLKK:INSTD_LOGIC;CNT_EN,RST_CNT,Load:OUTSTD_LOGIC);ENDFTCTRL;ARCHITECTUREbehavOFFTCTRLISSIGNALDiv2CLK:STD_LOGIC;BEGINPROCESS(CLKK)BEGINIFCLKK'EVENTANDCLKK='1'THENDiv2CLK=NOTDiv2CLK;ENDIF;ENDPROCESS;PROCESS(CLKK,Div2CLK)BEGINIFCLKK='0'ANDDiv2CLK='0'THENRST_CNT='1';ELSERST_CNT='0';ENDIF;ENDPROCESS;Load=NOTDiv2CLK;CNT_EN=Div2CLK;ENDbehav;32位锁存器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG32BISPORT(LK:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDREG32B;ARCHITECTUREbehavOFREG32BISBEGINPROCESS(LK,DIN)BEGINIFLK'EVENTANDLK='1'THENDOUT=DIN;ENDIF;ENDPROCESS;ENDbehav;频率计顶层文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFREQTESTISPORT(CLK1HZ,FSIN:INSTD_LOGIC;--输入引脚及待测频率信号DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数结果输出ENDFREQTEST;ARCHITECTUREstrucOFFREQTESTISCOMPONENTFTCTRL--测频控制电路,PORT(CLKK:INSTD_LOGIC;--1HZ输入信号CNT_EN:OUTSTD_LOGIC;--0.5HZ信号,产生1s的计数时间RST_CNT:OUTSTD_LOGIC;--计数器清零信号,1HZ与使能信号同为低时清零Load:OUTSTD_LOGIC);--0.5HZ锁存信号ENDCOMPONENT;COMPONENTCOUNTER32B--32位计数器PORT(FIN:INSTD_LOGIC;--计数信号,与FSIN相连,输入待测信号CLR:INSTD_LOGIC;--清零信号,与RST_CNT相连ENABL:INSTD_LOGIC;--计数使能信号,与CNT_EN相连DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDCOMPONENT;COMPONENTREG32B--32位锁存器PORT(LK:INSTD_LOGIC;--使能输入0.5HZ信号,与Load相连DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);--计数结果输入DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数结果输出ENDCOMPONENT;SIGNALTSTEN1:STD_LOGIC;SIGNALCLR_CNT1:STD_LOGIC;SIGNALLoad1:STD_LOGIC;SIGNALDTO1:STD_LOGIC_VECTOR(31DOWNTO0);SIGNALCARRY_OUT1:STD_LOGIC_VECTOR(6DOWNTO0);BEGINU1: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;2、8位十六进制频率计的逻辑示意图

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功