简易数字频率计设计报告

上传人:pu****.1 文档编号:416062672 上传时间:2022-09-03 格式:DOC 页数:19 大小:176KB
返回 下载 相关 举报
简易数字频率计设计报告_第1页
第1页 / 共19页
简易数字频率计设计报告_第2页
第2页 / 共19页
简易数字频率计设计报告_第3页
第3页 / 共19页
简易数字频率计设计报告_第4页
第4页 / 共19页
简易数字频率计设计报告_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《简易数字频率计设计报告》由会员分享,可在线阅读,更多相关《简易数字频率计设计报告(19页珍藏版)》请在金锄头文库上搜索。

1、一系统设计方案根据系统设计要求,需要实现一个4位十进制数字频率计,其原理框图如图1所示。主要由脉冲发生器电路、测频控制信号发生器电路、待测信号计数模块电路、锁存器、七段译码驱动电路及扫描显示电路等模块组成。测频控制信号发生电路标准时钟CLK脉冲发生器扫描控制LOCKENCLR待测信号F_IN锁存与译码显示驱动电路数码显示待测信号计数电路图1 数字频率计组成原理框图由于是4位十进制数字频率计,所以计数器CNT10需用4个,7段显示译码器也需用4个。频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。为此,测频控制信号发生器 F_IN_CNT应设置一个控制信号时钟CLK,一个计数使能信号输出端EN

2、、一个与EN输出信号反 向的锁存输出信号LOCK和清零输出信号CLR。若CLK的输入频率为1HZ,则输出信号端EN输出一个脉宽恰好为1秒的周期信号,可以 作为闸门信号用。由它对频率计的每一个计数器的使能端进行同步控制。当EN高电平时允许计数,低电平时停止计数,并保持所计的数。在停止计数期间,锁存信号LOCK的上跳沿将计数器在前1秒钟的计数值锁存进4位锁存器LOCK,由7段译码器译出并稳定显示。设置锁存器的好处是:显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,清零信号CLR对计数器进行清零,为下1秒钟的计数操作作准备。二. 单元电路设计:1时基产生与测频时序控制电路模块时基产

3、生与测频时序控制电路主要产生计数允许信号EN、清零信号CLR和锁存信号LOCK。时基产生电路: 图2 时基产生模块顶层图其VHDL程序清单如下:-CLK_SX_CTRLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLK_SX_CTRL ISPORT(CLK: IN STD_LOGIC; LOCK: OUT STD_LOGIC; EN: OUT STD_LOGIC; CLR: OUT STD_LOGIC);END;ARCHITECTURE ART OF CLK_SX_CTRL IS

4、 SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF(CLKEVENT AND CLK=1)THEN IF Q=1111THEN Q=0000;ELSEQ=Q+1;END IF; END IF;EN=NOT Q(3);LOCK=Q(3)AND NOT(Q(2)AND Q(1);CLR=Q(3)AND Q(2)AND NOT(Q(1);END PROCESS;END ART;测频时序控制电路:为实现系统功能,控制电路模块需输出三个信号:一是控制计数器允许对被测信号计数的信号EN;二是将前一秒计数器的计数值存入锁存的锁存信

5、号LOCK;三是为下一个周期计数做准备的计数器清零信号CLR。上述三个信号产生的顺序是:先提供计数信号,这种信号使计数器在1s提供锁存信号,这种信号对计数值进行锁存;最后是发出清零信号,这种信号可对计数器清零。计数器清零结束后又可重新计数,计数进入第二个周期。不难看出,控制电路模块实际上就是一个控制器,它需要一个周期为1s 的信号作为产生并控制控制器输出的时基信号CLK0。控制电路模块中控制器及端口如图3 所示:图3 测频时序控制模块顶层图其VHDL程序清单如下:-F_IN_CNT.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD

6、_LOGIC_UNSIGNED.ALL;ENTITY F_IN_CNT ISPORT(CLK:IN STD_LOGIC; EN:IN STD_LOGIC; CLR:IN STD_LOGIC;QA,QB,QC,QD:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0 );END F_IN_CNT;ARCHITECTURE ART OF F_IN_CNT ISCOMPONENT CNT10PORT(CLK,EN,CLR:IN STD_LOGIC; COUNT10:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;SIGNAL S2

7、:STD_LOGIC;SIGNAL S3:STD_LOGIC;SIGNAL S4:STD_LOGIC;BEGINS2=NOT QA(3);S3=NOT QB(3);S4=NOT QC(3);U1:CNT10 PORT MAP(CLK,EN,CLR,QA);U2:CNT10 PORT MAP(S2,EN,CLR,QB);U3:CNT10 PORT MAP(S3,EN,CLR,QC);U4:CNT10 PORT MAP(S4,EN,CLR,QD);END ART;2. 待测信号脉冲计数电路模块待测信号脉冲信号脉冲计数电路是对待测脉冲信号的频率进行测量,它可由4个十进制加法计数器组成,其中EN为计数

8、选通控制信号,CLR为计数器清零信号。在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开始对待测信号进行计数。如果计数选通控制信号EN的宽度为1s,那么计数结果就为待测信号的频率;如果计数选通控制信号EN的宽度为100ms,那么待测信号的频率等于计数结果的10倍。该模块将对输入信号进行十进制计数。它虽然由多个十进制计数器组成,但采用CPLD 后,设计时只要先制作一个单个的十进制计数器,然后再将多个结构相同的单个十进制计数器在CPLD 内部进行连接就可组合成为一个完整的计数电路模块。为实现系统功能,十进制计数器需要设置三个输入端:即被测信号输入端CLK、计数器状态清零端CLR 和计数

9、器工作使能端EN。需要设置四个输出端,即COUNT0、COUNT1、COUNT2 和COUNT3 ,并由这四个输出端输出四位BCD码来表示十进制数。需要说明,上述十进制计数器都是满10进1 ,且进位时计数器清零并重新计数。计数电路模块中的单个计数器符号及端口功能如图4 所示:图4 待测信号脉冲计数模块顶层图其VHDL程序清单如下:-CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK,EN,CLR: IN STD_LOGIC; COUNT

10、10 :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT10;ARCHITECTURE ONE OF CNT10 ISBEGINPROCESS(CLK,CLR,EN)BEGINIF CLR=1 THEN COUNT10=0000;ELSIF(CLKEVENT AND CLK=1)THEN IF(EN=1)THENIF COUNT10=1001THEN COUNT10=0000;ELSE COUNT10=COUNT10+1;END IF;END IF; END IF;END PROCESS;END ONE;3. 锁存与译码显示控制电路模块锁存与译码显示控制电

11、路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。其功能是对四位BCD码进行锁存并且转换成为对应的4组七段码,用于驱动数码管。锁存电路模块该模块可使系统显示电路的工作稳定而可靠,避免计数电路模块清零时引起显示闪烁的现象。锁存电路模块是由多个锁存器组成。每个锁存器都是用来锁存与其单独相连的计数器的输出数据。由于每个锁存器锁存的都是4 位2 进代码表示的十进制数,其功能完全相同,因此只需要设计制作一个锁存器就可连接组合成一个锁存电路模块。为实现系统功能,锁存器需设置四个数据输入端:即QA、QB、QC 和QD ,并由它们输入计数器的计数值

12、。需设置一个使锁存器工作的使能端L0CK。还需设置四个锁存数据的输出端:即LEDA 、LEDB 、LEDC和LEDD 。锁存电路模块中单个锁存器的符号及端口功能如图5 所示。图5 4位锁存模块顶层图其VHDL程序清单如下:-LOCK.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LOCK ISPORT(LOCK:IN STD_LOGIC; QA,QB,QC,QD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LEDA,LEDB,LEDC,LEDD:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END;

13、ARCHITECTURE ART OF LOCK ISSIGNAL L0,L1,L2,L3:STD_LOGIC_VECTOR(3 DOWNTO 0);COMPONENT SEG7PORT(BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;BEGINPROCESS(LOCK) BEGIN IF(LOCKEVENT AND LOCK=1)THEN L0=QA; L1=QB; L2=QC; L3=QD;END IF;END PROCESS;U0:SEG7 PORT MAP(

14、L0,LEDA);U1:SEG7 PORT MAP(L1,LEDB);U2:SEG7 PORT MAP(L2,LEDC);U3:SEG7 PORT MAP(L3,LEDD);END ART;译码电路模块:该模块可对表示转换后的十进制数的4 位2 进制代码进行编码,此模块可直接连接数码管驱动器, 从而驱动数码管显示出相应阿拉伯数字等字符。与上述电路模块设计一样,它也只需要先设计一个单个的译码器,然后通过连接组合就可构成系统的译码电路模块,从而实现系统的译码功能。为实现系统的功能,单个译码器需要设置4个数据输入端:即BCD0、BCD1、BCD2 和BCD3 ,并由这些端口输入锁存电路模块输出的4 位2 进制数据。需要设置7个输出端:即DOUT、DOUT1、DOUT2、DOUT3、DOUT4、DOUT5 和DOUT6 ,它们分别连接7段数码管的7个显示输入端。译码电路模块中单个译码器符号及端口功能如图6所示:图6 7段译码显示模块顶层图其VHDL程序清单如下:-SEG7LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SEG7 ISPORT(bcd:IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号