基于FPGA的数字频率计设计

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

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

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

资源描述

EDA课程设计题目基于FPGA的数字频率计设计系别计电系专业应用电子技术班级:06应电组员一:刘俊组员二:杨利鲜组员三:董明超指导老师8位十进制显示数字频率计(带周期测量)功能要求:1、能测量1—99999999Hz的方波信号频率,(能测量10uS—1000mS的周期)[1MHZ/1us--1HZ/1000ms],并以十进制的方式显示。2、具有工作方式转换控制键、开始键、停止键等控制键。3、数值显示用LED数码管动态显示。1、频率计的工作原理本文要设计一个8位十进制数字频率计,需要由四种器件来组成,即:测频控制信号发生器(FTCTRL)、有时钟使能的十进制计数器(CNT10)、32位锁存器(REG32B)、除法器模块(division).因为是8位十进制数字频率计,所以计数器CNT10需用8个,7段显示LED7也需用8个.频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。为此,测频控制信号发生器FTCTRL应设置一个控制信号时钟CLKK,一个计数使能信号输出端CNT_EN、一个与CNT_EN输出信号反向的锁存输出信号Load、和清零输出信号RST_CNT。如CLKK的输入频率为1HZ,则输出信号端CNT_EN输出一个脉宽恰好为1秒的周期信号,可以作为闸门信号用。由它对频率计的每一个计数器的使能端进行同步控制。当CNT_EN高电平时允许计数,低电平时停止计数,并保持所计的数。在停止计数期间,锁存信号Load的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B,由7段数码管稳定显示。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,清零信号RST_CNT对计数器进行清零。为下1秒钟的计数操作作准备。测频控制信号发生器的工作时序如图1示。图1测频控制信号发生器的工作时序图图2电路设计原理框图2、用VHDL语言设计频率计频率计所需四种器件的VHDL文件(频率计的底层文件)及波形仿真结果2.1测频控制信号发生器FTCTRLLIBRARYIEEE;--测频控制电路USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFTCTRLISPORT(CLKK:INSTD_LOGIC;--1HzCNT_EN:OUTSTD_LOGIC;--计数器时钟使能RST_CNT:OUTSTD_LOGIC;--计数器清零Load:OUTSTD_LOGIC);--输出锁存信号ENDFTCTRL;ARCHITECTUREbehavOFFTCTRLISSIGNALDiv2CLK:STD_LOGIC;BEGINPROCESS(CLKK)BEGINIFCLKK'EVENTANDCLKK='1'THEN--1Hz时钟2分频Div2CLK=NOTDiv2CLK;ENDIF;ENDPROCESS;PROCESS(CLKK,Div2CLK)BEGINIFCLKK='0'ANDDiv2CLK='0'THENRST_CNT='1';--产生计数器清零信号ELSERST_CNT='0';ENDIF;ENDPROCESS;Load=NOTDiv2CLK;CNT_EN=Div2CLK;ENDbehav;图3测频控制信号发生器的波形仿真图2.2带时钟使能十进制计数器CNT10LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS='0');--计数器复位ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFEN='1'THEN--检测是否允许计数IFCQI1001THENCQI:=CQI+1;--允许计数ELSECQI:=(OTHERS='0');--大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=1001THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;CQ=CQI;--将计数值向端口输出ENDPROCESS;ENDbehav;图4带时钟使能十进制计数器的波形仿真图2.3.除法器模块(division)libraryIEEE;useIEEE.STD_LOGIC_1164.all;useIEEE.STD_LOGIC_UNSIGNED.all;useIEEE.STD_LOGIC_ARITH.all;entitydivisionisport(en:inSTD_LOGIC;fx:inSTD_LOGIC_VECTOR(31downto0);shang:outSTD_LOGIC_VECTOR(31downto0));enddivision;architecturebehavofdivisionisbeginprocess(en,fx)beginifen='1'thenshang=CONV_STD_LOGIC_VECTOR(1000000/((conv_integer(fx(31downto28)))*10000000+(conv_integer(fx(27downto24)))*1000000+(conv_integer(fx(23downto20)))*100000+(conv_integer(fx(19downto16)))*10000+(conv_integer(fx(15downto12)))*1000+(conv_integer(fx(11downto8)))*100+(conv_integer(fx(7downto4)))*10+(conv_integer(fx(3downto0)))),32);elseshang=fx;endif;endprocess;endbehav;图5除法器的波形仿真图2.432位锁存器REG32BLIBRARYIEEE;--32位锁存器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;图6锁存器REG32B的波形仿真图3.顶层原理图的设计输入在以上四个器件正确设计的基础上,再按设计原理图的要求将这四种器件连接起来,形成顶层文件,件编成电路图的形式,并在此基础上建立为一个新的工程,进行综合仿真.模块连接图如图2电路设计原理框图所示。图78位十进制显示数字频率计的完整仿真波形图4总结与体会从图7可以看出来,在允许计数(START=1)的情况下,时基时钟CLK为1HZ的频率,被测频率FIN输入为256HZ,在测频率时间内RESULT=257Z和256HZ,可知道这种测量频率的方法精度很高,只有±1的误差;而在测周期的时间段内,RESULT=0XF42(us)=3906(us)=0.003906(s),则有Fx×Tx=256×0.003906=0.999936(s)和Fx×Tx=257×0.003906=1.003842(s)两次的测量误差分别为:η1=0.0064%η2=0.3842%由此可见,测量频率的方法精度很高,其相对误差非常小,完全符合高要求的测量场合。VCCCLKINPUTVCCSTARTINPUTVCCFSININPUTDOUT[31..0]OUTPUTCLKRSTENCQ[3..0]COUTCNT10instLKDIN[31..0]DOUT[31..0]REG32Binst1CLKKCNT_ENRST_CNTLoadFTCTRLinst2CLKRSTENCQ[3..0]COUTCNT10inst3CLKRSTENCQ[3..0]COUTCNT10inst4CLKRSTENCQ[3..0]COUTCNT10inst5CLKRSTENCQ[3..0]COUTCNT10inst6CLKRSTENCQ[3..0]COUTCNT10inst7CLKRSTENCQ[3..0]COUTCNT10inst8CLKRSTENCQ[3..0]COUTCNT10inst9AND2inst10DIN[3..0]DIN[7..4]DIN[11..8]DIN[15..12]DIN[19..16]DIN[23..20]DIN[27..24]DIN[31..28]DIN[31..0]

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

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

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

×
保存成功