数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置Word格式文档下载.docx
《数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
一般取1s作为闸门时间。
在“自顶向下”的设计中,首先需要进行行为设计,确定该电子系统或VLSI芯片的功能、性能及允许的芯片面积和成本等。
接着进行结构设计,根据该电子系统或芯片的特点,将其分解为接口清晰、相互关系明确、尽可能简单的子系统,得到一个总体结构。
这个结构可能包括算术运算单元、控制单元、数据通道、各种算法状态机等。
下一步是把结构转换成逻辑图,即进行逻辑设计。
接着进行电路设计,逻辑图将进一步转化成电路图。
在很多情况下,这时需进行硬件仿真,以最终确定逻辑设计的正确性。
最后是进行版图设计,即将电路图转化成版图。
传统的硬件设计采用自底向上(bottom_up)的设计方法。
这种设计方法在系统的设计后期进行仿真和调试,一旦考虑不周,系统设计存在较大缺陷,就有可能重新设计系统,使设计周期大大增加。
“自底向上”的设计,一般是在系统划分和分解的基础上先进行单元设计,在单元的精心设计后逐步向上进行功能块没计,然后再进行子系统的设计,最后完成系统的总体设计。
数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图1所示。
数字频率计实际上是一个脉冲计数器,即在单位时间内计脉冲个数就可以得到信号频率,频率是计核心由计数器和脉冲信号发生器闸门电路、锁存器、显示器等组成。
工作过程为。
单位时间内脉冲控制闸门电路被测信号在1s内通过闸门,经计数器在单位时间内脉冲结束,同时关闭闸门电路完成计数值锁存,之后将计数器清零为下一次锁存做准备锁存数据直接送到译码显示。
可控制计数锁存,译码显示系统使计数按照一定工作程序有条理地工作。
(如计数→显示→清零→准备→下次测量)如果在系统中不接锁存器,显示器上的数字就会随计数器状态不停地变化,只有在计数器停止时数字才会稳定所以在计数后必须接锁存器
设计一个四位十进制的数字频率计,要求具有以下功能:
(1)测量范围:
1Hz~10kHz。
(2)测量误差
1%。
(3)响应时间
15s。
(4)显示时间不少于1s。
(5)具有记忆显示的功能,即在测量的过程中不刷新数据,等数据过程结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束。
3.2模块的划分
根据系统设计要求,系统设计采用自顶向下的设计方法,系统的组成框图如图3.1所示,包括时基产生与测频时序控制电路模块,以及待测信号脉冲计数电路模块和锁存与译码显示控制电路模块。
(1)时基产生与测频时序控制电路模块
时基产生与测频时序控制电路的主要产生计数允许信号EN、清零信号CLR和锁存信号LOCK。
(2)待测信号脉冲计数电路模块
待测信号脉冲计数电路是对待测脉冲信号的频率进行测量,它可由4个十进制加法计数器组成,其中EN为计数选通控制信号,CLR为计数器清零信号。
在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开始对待测信号进行计数。
如果计数选通控制信号EN的宽度为1s,那么计数结果就为待测信号的频率;
如果计数选通信号EN的宽度为100ms,那么待测信号的频率等于计数结果
10。
(3)锁存与译码显示控制电路模块
锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。
锁存与译码显示电路的功能是对四位BCD码进行锁存,并转换为对应的4组七段码,用于驱动数码管。
3.3设计分析
采用VHDL语言设计一个复杂的电路系统,运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法进行设计。
在顶层对内部各功能块的连接关系和对外的接口关系进行了描述,而功能块的逻辑功能和具体实现形式则由下一层模块来描述。
各功能模块采用VHDL语言来描述。
时基产生与测频时序控制电路模块的VHDL源程序
程序ctrl.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCTRLIS
PORT(CLK:
INSTD_LOGIC;
-系统时钟
LOCK:
OUTSTD_LOGIC;
-锁存信号
EN:
-计数允许信号
CLR:
OUTSTD_LOGIC);
-清零信号
END;
ARCHITECTUREARTOFCTRLIS
SIGNALQ:
STD_LOGIC_VECTOR(3DOWNTO0);
-定义变量
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'
EVENTANDCLK='
1'
)THEN-检测时钟上升沿
IFQ="
1111"
THEN
Q<
="
0000"
;
-计数大于15,清零
ELSE
=Q+'
-允许计数
ENDIF;
EN<
=NOTQ(3);
LOCK<
=Q(3)ANDNOT(Q
(2))ANDQ
(1);
CLR<
=Q(3)ANDQ
(2)ANDNOT(Q
(1));
ENDPROCESS;
ENDART;
程序主要讲述了由时钟信号产生计数允许信号、清零信号和锁存信号,而且限定了响应时间为不超过15s。
4.2待测信号脉冲计数电路模块的VHDL源程序
4.2.1十进制加法计数器的VHDL源程序
程序cb10.vhd
ENTITYCB10IS
PORT(CLK,EN,CLR:
COUNT10:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));
-计数输
信号
ENDCB10;
ARCHITECTUREARTOFCB10IS-结构体
PROCESS(CLK,CLR,EN)
IFCLR='
THEN
COUNT10<
-计数器清零
ELSIFRISING_EDGE(CLK)THEN-检测时钟上升沿
IF(EN='
)THEN-检测是否允许计数
IFCOUNT10="
1001"
-计数值满9清零
=COUNT10+'
程序主要讲述了十进制加法计数器的使用,在符合了一定的标准以后十进制的使用,在计数器满9后清零。
4.2.2待测信号脉冲计数器的VHDL源程序
程序count.vhd
ENTITYCOUNTIS
-待测时钟信号
-计数选通控制信号
-计数器清零信号
QA,QB,QC,QD:
-结果输出信号
ARCHITECTUREARTOFCOUNTIS
COMPONENTCB10-元件CB10引用说明语句
-计数输出信号
ENDCOMPONENT;
SIGNALCLK2:
STD_LOGIC;
SIGNALCLK3:
SIGNALCLK4:
CLK2<
=NOTQA(3);
CLK3<
=NOTQB(3);
CLK4<
=NOTQC(3);
U1:
CB10PORTMAP(CLK,EN,CLR,QA);
-元件引用例示
U2:
CB10PORTMAP(CLK2,EN,CLR,QB);
-元件引用例示
U3:
CB10PORTMAP(CLK3,EN,CLR,QC);
U4:
CB10PORTMAP(CLK4,EN,CLR,QD);
4.3锁存与译码显示控制电路模块的VHDL源程序
4.3.1译码显示电路的VHDL源程序
程序bcd7.vhd
ENTITYBCD7IS
PORT(BCD:
INSTD_LOGIC_VECTOR(3DOWNTO0);
-BCD输入信号
LED:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
-七段译码输出信号
ARCHITECTUREARTOFBCD7IS
LED<
0111111"
WHENBCD="
ELSE-对照七段字形显示译码器真值表
"
0000110"
0001"
1011011"
0010"
1001111"
0011"
1100110"
0100"
1101101"
0101"
1111101"
0110"
0000111"
0111"
1111111"
1000"
1101111"
0000000"
程序主要讲述了七段译码器的显示问题,对应的给出了信号输入过程中七段译码器的各种显示。
4.3.2锁存与译码显示控制模块的VHDL源程序
程序lock.vhd
ENTITYLOCKIS
PORT(LOCK:
LEDA,LEDB,LEDC,LEDD:
-频率
计数输出
ARCHITECTUREARTOFLOCKIS
SIGNALQAL,QBL,QCL,QDL:
COMPONENTBCD7-元件BCD7引用说明语句
PROCESS(LOCK)
IF(LOCK'
EVENTANDLOCK='
QAL<
=QA;
QBL<
=QB;
QCL<
=QC;
QDL<
=QD;
U0:
BCD7PORTMAP(QAL,LEDA);
BCD7PORTMAP(QBL,LEDB);
BCD7PORTMAP(QCL,LEDC);
BCD7PORTMAP(QDL,LEDD);
程序主要讲述了调用七段译码器的显示,将输入的信号经过译码之后在七段译码器上进行显示。
4.4顶层电路的VHDL源程序
程序pinlvji.vhd
ENTITYPINLVJIIS
PORT(F_IN,CLK:
ENT,LOCKT,CLRT:
BUFFERSTD_LOGIC;
Z1,Z2,Z3,Z4:
ENDPINLVJI;
ARCHITECTUREARTOFPINLVJIIS
SIGNALENS,LOCKS,CLRS:
SIGNALQAS,QBS,QCS,QDS:
COMPONENTCTRL-元件CTRL引用说明语句
EN,LOCK,CLR:
ENDCOMPONENT;
COMPONENTCOUNT-元件COUNT引用说明语句
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
COMPONENTLOCK-元件LOCK引用说明语句
ENT<
=ENS;
LOCKT<
=LOCKS;
CLRT<
=CLRS;
CTRLPORTMAP(CLK,ENS,LOCKS,CLRS);
COUNTPORTMAP(F_IN,ENS,CLRS,QAS,QBS,QCS,QDS);
LOCKPORTMAP(LOCKS,QAS,QBS,QCS,QDS,Z1,Z2,Z3,Z4);
ENDART;
数字频率计波形仿真
5.1时基产生与测频时序控制电路模块的仿真
图5.1时基产生与测频时序控制模块的仿真图
图5.2时基产生与测频时序控制电路模块的仿真图的详细
图5.1显示的是时基产生与测频时序控制电路模块的仿真图,很鲜明的给出了时钟信号与计数允许信号、清零信号和锁存信号的关系,而图5.2更加详细的给出了计数允许信号、清零信号和锁存信号与变量Q之间所存在的相对应的关系。
5.2待测信号脉冲计数电路模块的仿真
5.2.1十进制加法计数器的仿真
图5.3十进制加法计数器的仿真图
图5.3显示的是十进制加法计数器的仿真图,它详细的给出了计数输出信号与计数允许信号和清零信号之间的关系,能清楚的理解当CLR为0时,输出为0;
在EN为1选通有效后,则开始计数。
5.2.2待测信号脉冲计数器的仿真
图5.4测信号脉冲计数器的仿真
图5.4显示的是测信号脉冲计数器的仿真图,以图文的形式更直接的表现了信号脉冲的计数值,简介明了。
5.3锁存与译码显示控制电路模块的仿真
5.3.1译码显示电路的仿真
图5.5译码显示电路的仿真图
图5.5显示的是译码显示电路的仿真图,它直接用图形诠释了程序中语句的意思,让人一目了然,更简单的了解了模块的作用。
5.3.2锁存与译码显示控制模块的仿真
图5.6锁存与译码显示控制电路的仿真图
图5.6显示的是锁存与译码显示控制电路的仿真图,给人第一感觉很繁琐,但是联系程序再看图就可以很轻松的清楚程序中之前还存在的疑惑也将图从而理解透彻。
5.4数字频率计系统的仿真
图5.7数字频率计系统的仿真
图5.7显示的是数字频率计系统的仿真图,它系统的体现了所设计的频率计的作用。