好文档 - 专业文书写作范文服务资料分享网站

基于VHDL的数字频率计的设计

天下 分享 时间: 加入收藏 我要投稿 点赞

子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。闸门时间可以根据需要取值,大于或小于1S都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1s作为闸门时间。

数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图1. 1所示。

待测信号 计数器 锁存器 译码驱动电路 数码管显示 测频控制信号发生器 图1.1 原理框图

1.5 设计功能

四位十进制数字频率计用四组七段译码显示的数字频率计,其频率测量范围为1Hz~10kHz。采用记忆显示的方法,即在测量过程中不刷新数据,等数据过程结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束,显示时间不少于1秒。

第二章 数字频率计系统分析

2.1数字频率计的设计任务及要求

设计一个四位十进制的数字频率计,要求具有以下功能: (1) 测量范围:1Hz~10kHz。 (2) 测量误差?1%。 (3) 响应时间?15s。 (4) 显示时间不少于1s。

(5) 具有记忆显示的功能,即在测量的过程中不刷新数据,等数据过程结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束。

2.2 模块的划分

根据系统设计要求,系统设计采用自顶向下的设计方法,系统的组成框图如图3. 1所示,包括时基产生与测频时序控制电路模块,以及待测信号脉冲计数电路模块和锁存与译码显示控制电路模块。

3

待测信号F_IN z1[0:6] EN 标准时钟 q[0:15] 时基产生与测频时序控制电路 待测信号 脉冲计 数电路 锁存与译码显示电路 z2[0:6] z3[0:6] z4[0:6] LOCK CLR CLK 图3.1 数字频率计的组成框图

(1) 时基产生与测频时序控制电路模块

时基产生与测频时序控制电路的主要产生计数允许信号EN、清零信号CCLR和锁存信号LOCK。 (2) 待测信号脉冲计数电路模块

待测信号脉冲计数电路是对待测脉冲信号的频率进行测量,它可由4个十进制加法计数器组成,其中EN为计数选通控制信号,CLR为计数器清零信号。在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开始对待测信号进行计数。如果计数选通控制信号EN的宽度为1s,那么计数结果就为待测信号的频率;如果计数选通信号EN的宽度为100ms,那么待测信号的频率等于计数结果

?10。

(3) 锁存与译码显示控制电路模块

锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。

锁存与译码显示电路的功能是对四位BCD码进行锁存,并转换为对应的4组七段码,用于驱动数码管。

2.3设计分析

采用VHDL语言设计一个复杂的电路系统,运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法进行设计。在顶层对内部各功能块的连接关系和对外的接口关系进行了描述,而功能块的逻辑功能和具体实现形式则由下一层模块来描述。各功能模块采用VHDL语言来描述。

第三章 各功能模块基于VHDL的设计

3.1 时基产生与测频时序控制电路模块的VHDL源程序

程序ctrl.vhd

4

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS

PORT(CLK: IN STD_LOGIC; -系统时钟 LOCK: OUT STD_LOGIC; -锁存信号 EN: OUT STD_LOGIC; -计数允许信号 CLR: OUT STD_LOGIC); -清零信号 END;

ARCHITECTURE ART OF CTRL IS

SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); -定义变量 BEGIN

PROCESS(CLK) BEGIN

IF(CLK'EVENT AND CLK='1')THEN -检测时钟上升沿 IF Q=\

Q<=\ -计数大于15,清零 ELSE

Q<=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;

程序主要讲述了由时钟信号产生计数允许信号、清零信号和锁存信号,而且限定了响应时间为不超过15s。

3.2 待测信号脉冲计数电路模块的VHDL源程序

3.2.1 十进制加法计数器的VHDL源程序

程序cb10.vhd LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CB10 IS

PORT(CLK,EN,CLR: IN STD_LOGIC;

COUNT10: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); -计数输 信号

END CB10;

ARCHITECTURE ART OF CB10 IS -结构体 BEGIN

5

PROCESS(CLK,CLR,EN) BEGIN

IF CLR='1' THEN

COUNT10<=\ -计数器清零

ELSIF RISING_EDGE(CLK) THEN -检测时钟上升沿 IF(EN='1') THEN -检测是否允许计数 IF COUNT10=\

COUNT10<=\ -计数值满9清零 ELSE

COUNT10<=COUNT10+'1'; -允许计数 END IF; END IF; END IF; END PROCESS; END ART;

程序主要讲述了十进制加法计数器的使用,在符合了一定的标准以后十进制的使用,在计数器满9后清零。

3.2.2待测信号脉冲计数器的VHDL源程序

程序count.vhd LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT IS

PORT(CLK: IN STD_LOGIC; -待测时钟信号 EN: IN STD_LOGIC; -计数选通控制信号 CLR: IN STD_LOGIC; -计数器清零信号

QA,QB,QC,QD: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); -结果输出信号 END;

ARCHITECTURE ART OF COUNT IS

COMPONENT CB10 -元件CB10引用说明语句 PORT(CLK,EN,CLR: IN STD_LOGIC;

COUNT10: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); -计数输出信号 END COMPONENT;

SIGNAL CLK2: STD_LOGIC; SIGNAL CLK3: STD_LOGIC; SIGNAL CLK4: STD_LOGIC; BEGIN

CLK2<=NOT QA(3); CLK3<=NOT QB(3); CLK4<=NOT QC(3);

U1:CB10 PORT MAP(CLK,EN,CLR,QA); -元件引用例示 U2:CB10 PORT MAP(CLK2,EN,CLR,QB); -元件引用例示

6

U3:CB10 PORT MAP(CLK3,EN,CLR,QC); -元件引用例示 U4:CB10 PORT MAP(CLK4,EN,CLR,QD); -元件引用例示 END ART;

3.3 锁存与译码显示控制电路模块的VHDL源程序

3.3.1 译码显示电路的VHDL源程序

程序bcd7.vhd LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY BCD7 IS

PORT(BCD: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -BCD输入信号 LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); -七段译码输出信号 END;

ARCHITECTURE ART OF BCD7 IS BEGIN

LED<=\ -对照七段字形显示译码器真值表 \ \ \ \ \ \ \ \ \ \END ART;

程序主要讲述了七段译码器的显示问题,对应的给出了信号输入过程中七段译码器的各种显示。

3.3.2 锁存与译码显示控制模块的VHDL源程序

程序lock.vhd LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY LOCK IS

PORT(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;

ARCHITECTURE ART OF LOCK IS

SIGNAL QAL,QBL,QCL,QDL: STD_LOGIC_VECTOR(3 DOWNTO 0);

7

基于VHDL的数字频率计的设计

子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。闸门时间可以根据需要取值,大于或小于1S都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1s作为闸门时间。
推荐度:
点击下载文档文档为doc格式
4y08l3nmje6gjoh0oaa0
领取福利

微信扫码领取福利

微信扫码分享