文档介绍:Forpersonaluseonlyinstudyandresearch;,需要实现一个4位十进制数字频率计,其原理框图如图1所示。主要由脉冲发生器电路、测频控制信号发生器电路、待测信号计数模块电路、锁存器、七段译码驱动电路及扫描显示电路等模块组成。肄莈***测频控制信号发生电路莆标准时钟CLK薂脉冲发生器蒁芇薃芄扫描控制膀LOCK莇羄蚂EN罿莇CLR莅蒄待测信号F_IN肂锁存与译码显示驱动电路蒇螆数码显示袁待测信号计数电路螁薇膆薃蕿图1数字频率计组成原理框图蚇芃由于是4位十进制数字频率计,T10需用4个,7段显示译码器也需用4个。频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。为此,T应设置一个控制信号时钟CLK,一个计数使能信号输出端EN、一个与EN输出信号反向的锁存输出信号LOCK和清零输出信号CLR。若CLK的输入频率为1HZ,则输出信号端EN输出一个脉宽恰好为1秒的周期信号,可以作为闸门信号用。由它对频率计的每一个计数器的使能端进行同步控制。当EN高电平时允许计数,低电平时停止计数,并保持所计的数。在停止计数期间,锁存信号LOCK的上跳沿将计数器在前1秒钟的计数值锁存进4位锁存器LOCK,由7段译码器译出并稳定显示。设置锁存器的好处是:显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,清零信号CLR对计数器进行清零,为下1秒钟的计数操作作准备。:、清零信号CLR和锁存信号LOCK。蚄时基产生电路:螃莁图2时基产生模块顶层图袆其VHDL程序清单如下:肅--CLK_SX_CTRL芁LIBRARYIEEE;;;蒆ENTITYCLK_SX_CTRLIS羃PORT(CLK:INSTD_LOGIC;衿LOCK:OUTSTD_LOGIC;羆EN:OUTSTD_LOGIC;袇CLR:OUTSTD_LOGIC);莁END;羂ARCHITECTUREARTOFCLK_SX_CTRLIS肆SIGNALQ:STD_LOGIC_VECTOR(3DOWNTO0);肄BEGIN肃PROCESS(CLK)蚁BEGIN膆IF(CLK'EVENTANDCLK='1')THEN蒅IFQ="1111"THEN袄Q<="0000";葿ELSE芆Q<=Q+'1';袅ENDIF;节ENDIF;芈EN<=NOTQ(3);莆LOCK<=Q(3)ANDNOT(Q(2))ANDQ(1);芆CLR<=Q(3)ANDQ(2)ANDNOT(Q(1));羄ENDPROCESS;芁ENDART;蒆测频时序控制电路:莃为实现系统功能,控制电路模块需输出三个信号:一是控制计数器允许对被测信号计数的信号EN;二是将前一秒计数器的计数值存入锁存的锁存信号LOCK;三是为下一个周期计数做准备的计数器清零信号CLR。上述三个信号产生的顺序是:先提供计数信号,这种信号使计数器在1s提供锁存信号,这种信号对计数值进行锁存;最后是发出清零信号,这种信号可对计数器清零。计数器清零结束后又可重新计数,计数进入第二个周期。不难看出,控制电路模块实际上就是一个控制器,它需要一个周期为1s的信号作为产生并控制控制器输出的时基信号CLK0。控制电路模块中控制器及端口如图3所示:蒂肀图3测频时序控制模块顶层图薅其VHDL程序清单如下:螄--;;;TIS蚂PORT(CLK:INSTD_LOGIC;袂EN:INSTD_LOGIC;罿CLR:INSTD_LOGIC;薆QA,QB,QC,QD:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));T;T10羇PORT(CLK,EN,CLR:INSTD_LOGIC;螂COUNT10:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));PONENT;腿SIGNALS2:STD_LOGIC;肄SIGNALS3:STD_LOGIC;蒃SIGNALS4:STD_LOGIC;膈BEGIN腿S2<=NOTQA(3);蒄S3<=NOTQB(3);羁S4<=NOTQC(3);T10PORTMAP(CLK,EN,CLR,QA);T10PORTMAP(S2,EN,CLR,QB);T10PORTMAP(S3,EN,CLR,QC);T10PORTMAP(S4,EN,CLR,QD);羀ENDART;