数字频率计测频系统的设计Word文件下载.docx
- 文档编号:19925259
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:22
- 大小:167.86KB
数字频率计测频系统的设计Word文件下载.docx
《数字频率计测频系统的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字频率计测频系统的设计Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
componentinstantiation,ifsuchstatementcasewhenstatement.Andprograminputandoutputportsoftheinterpretationgiventoachievethecodeandsimulationwaveforms.
keywords:
100Hzfrequencycounter;
MAX+PULSLLII;
VHDL;
simulation;
componentcases
目录
引言5
1数字频率计测频系统设计概述5
1.1设计要求5
1.2设计意义5
2电路数字频率计测频系统设计方案6
2.1产生子模块7
2.1.1分频模块7
2.1.2分频程序及仿真图8
2.2计数模块9
2.2.1计数模块分析9
2.2.2计数模块程序及仿真图10
2.3显示模块11
2.3.1七段数码管的描述12
2.3.2八进制计数器14
2.3.3计数位选择电路15
2.4总体功能描述16
3电路数字频率计测频系统顶层文件17
4.结论19
4.1系统缺点19
4.2改进方法19
致谢19
参考文献19
附表元件清单20
引言
VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(TheInstituteofElectricalandElectronicsEngineers)的一种工业标准硬件描述语言。
相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(ToptoDown)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。
从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。
将使整个系统大大简化。
提高整体的性能和可靠性。
本文用VHDL在CPLD器件上实现一种2b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。
具有体积小、可靠性高、功耗低的特点。
1数字频率计测频系统设计概述
1.1设计要求
Ø
获得稳定100Hz频率
用数码管的显示
用VHDL写出设计整个程序
1.2设计意义
进一步学习VHDL硬件描述语言的编程方法和步骤。
运用VHDL硬件描述语言实现对电子元器件的功能控制。
熟悉并掌握元件例化语句的使用方法。
熟悉数字式频率的基本工作原理。
熟悉数字频率计中计数显示设计。
熟悉掌握MAX+PLUSⅡ软件的基本使用方法。
2电路数字频率计测频系统设计方案
众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。
因此,频率检测是电子测量领域最基本的测量之一。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。
闸门时间可以根据需要取值,大于或小于1s都可以。
闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。
闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。
一般取1s作为闸门时间。
数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图2-1所示。
图2-1数字频率计原理框图
在这个100赫兹频率计的设计中一共分为3大模块:
产生子模块、计数模块、显示模块。
当系统正常工作时,脉冲发生器提供的1Hz的输入信号,进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。
在数码显示管上可以看到计数结果
产生子模块是为此100赫兹频率计提供1Hz的时钟脉冲信号,为了实现严格的同步,在这个模块中采用了同步计数电路。
计数模块是实现从0到99的计数。
显示模块是将计数模块程序中产生的数值通过2个七段数码管表达出来,使大家对此频率计有一个更直观的认识。
此100赫兹频率计的设计中,这3个大的模块是核心部分,这个3个大的模块会在后面的分析设计中给出详细的介绍。
频率计的工作原理是通过在一定时间内对外部信号进行计数,计算计数值对时间的比值,从而得到输入信号的频率,通过二个数码管作为频率值的输出。
对系统进行分析后,确定采用模块设计,基本框架图如图2-2所示。
图2-2频率计设计基本框架图
2.1产生子模块
2.1.1分频模块
分频模块的功能是将输入的外部信号clk进行分频,分频成计数器所需要的计数信号,使计数器在计数信号有效的时间对外部信号进行计数。
根据频率计测量的范围,确定了分频至1Hz,从而得到频率值。
555定时器(如图2-3)是一种模拟电路与数字电路相结合的中规模集成电路,它在信号产生、整形、延时(定时)、控制等方面获得了广泛的应用。
虽说555定时器应用领域十分广泛,但其电路结构归纳起来有三种基本形式,即多谐振荡器、单稳态触发器、施密特触发器。
图2-3555定时器电路
由于双极型555和CMOS型555的制作工艺和流程不同,生产出的555集成电路的性能指标是有差异的。
CMOS型555的功耗仅为双极型的几十分之一,静态电流仅为300uA左右,为微功耗电路。
CMOS型555的输出脉冲的上升沿和下降沿比双极型的要陡,转换时间短。
CMOS型555的在传输过度时间里产生的尖峰电流小,仅为2~3mA,而双极型555的尖峰电流高达300~400mA。
2.1.2分频程序及仿真图
分频程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYclk_div1000IS
PORT(clk:
INSTD_LOGIC;
clk_div:
outSTD_LOGIC);
ENDclk_div1000;
ARCHITECTURErt1OFclk_div1000IS
SIGNALq_tmp:
integerrange0to999;
BEGIN
process(clk)
begin
IF(clk'
eventandclk='
1'
)then
if(q_tmp=999)then
q_tmp<
=0;
else
=q_tmp+1;
endif;
endif;
endprocess;
clk_div<
='
;
0'
endrt1;
在以上程序中我们将外部信号clk进行10次分频输入信号为clk,输出信号为clk_div。
编译通过后,产生的符号如图2-4所示,仿真波形图如图2-5所示。
图2-4分频模块图
图2-5分频仿真图
2.2计数模块
2.2.1计数模块分析
经分析可知,此频率计计数模块分为2个子模块,即个位显示模块、十位显示模块。
详细分析如下:
①计数模块的个位可以用1个十进制计数器表示。
②计数模块的十位可以用1个十进制计数器表示。
频率计的计数模块主要来实现频率计数器内部的计数功能,计数器的内部计数信号clk和频率计数器的使能信号enable。
频率计数器的计数模块的输出信号就是个位sec、十位sec10。
电路图如图2-6所示。
图2-6计数模块电路图
十进制计数器,它的输入端口主要包括使能端口enable计数输入端口clk,输出端口主要包括计数输出端口q和进位输出端口cout。
2.2.2计数模块程序及仿真图
计数模块的程序如下:
ENTITYcount10IS
PORT(
enable:
clk:
cout:
outSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDcount10;
ARCHITECTURErt1OFcount10IS
STD_LOGIC_VECTOR(3DOWNTO0);
if(enable='
if(q_tmp="
1001"
="
0000"
q<
=q_tmp;
cout<
whenq_tmp="
andenable='
else'
描述了上述的十进制计数器后,我们就可以根据图三所示的结构框图来进行频率计数器计数模块的VHDL描述了。
在频率计数器计数模块的VHDL描述中,我们引用元件的形式调用上面描述的十进制计数器。
从而得到频率计数器的计数功能,程序如下:
ENTITYtime_counterIS
clk0:
sec10:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
sec:
ENDtime_counter;
ARCHITECTURErt1OFtime_counterIS
COMPONENTcount10
endCOMPONENT;
SIGNALco1,co2:
STD_LOGIC;
U1:
count10PORTMAP(enable,clk0,co1,sec);
U2:
count10PORTMAP(co1,clk0,co2,sec10);
编译通过后,产生的符号如图2-7所示,仿真波形图如图2-8所示。
图2-7计数模块图
图2-8计数模块的仿真波形图
2.3显示模块
有了计数模块还不能满足设计的要求,任何一个设计都是需要一定的硬件设备来表达。
否则,只有一个理论的程序是不足以来证明一个设计的完整性。
在参考一些资料和根据实验提供的条件,我在这个设计中采用2个七段数码管来对这个频率计进行实际的表达。
频率计数器要将计数的结果显示出来,就必需设计一个计数显示模块来完成该显示功能。
频频计数器的显示模块的输入信号主要来自于频频计数器计数模块的计数信息,它的输出信号是choose和segment,以用来驱动计数显示的8个LED七段显示数码管,在输出信号中,为了节省资源,我们采用循环点亮LED七段显示数码管的方法来显示频率计数器的计数输出.我们通过信号choose(7downto0)来进行8个LED七段显示数码管的选择,从而将输出信号segment(6downto0)送到相应的LED七段显示数码管上以完成频率计数的显示。
计数显示模块的结构框图如图2-9所示:
图2-9显示模块电路图
从图2-9以看出,计数显示模块可由三个部分组成:
八进制计数器、计数位选择电路、七段显示译码电路。
下面描述一下计数显示模块的工作过程:
在外部计数信号clk的作用下,八进制计数器的输出从000到111按顺序循环变化,输出信号为sel。
信号sel作为计数位选择电路的选择信号,用来选择对应位的数据并将其转换为四位位矢量。
最后将计数位选择电路的输出信号q送到七段显示译码电路的输入端口,将其转化成用来点燃LED七段显示数码管的segment信。
2.3.1七段数码管的描述
我们所使用实验箱中的8个七段数码管有这样一个特点,8个数码管中每一个数码管中相同的段都是连在一根线上的。
如图2-10所示:
图2-10七段数码管
故只要有一个数码管的一段亮,8个数码管中相同的段都会亮。
在选用数码管后我们需要考虑一个问题,就是如何在每个数码管上正确的显示程序中每一位要显示的数据,也就是如何将前面的计数模块中要显示的数字准确的表达在数码管上。
在这里就运用了人体生理学的一个结论,人的眼睛能分辨的时间是1/16秒,即频率为25Hz左右。
有了这个结论后,我们就可以解决正确显示的问题了,应用动态扫描的方法,只要我们在显示模块中所使用的频率大于25Hz就可以让每个数码管正确的显示程序中所要求的数字了。
因此,在显示模块中首先要设计一个分频器,实验提供的脉冲是1KHz,我们只要设计的分频器所分出来的频率大于25Hz即可,在此我选择一个8分频器。
8分频器的输入信号为clk,输出信号为sel(2DOWNTO0)。
显示模块中数字位选的问题解决后就需要解决另外一个问题了,那就是如何将程序中的数字在数码管上有效显示出来,即如何让我们能一眼就看出来显示的数字是0、1、2、3、4、5、6、7、8、9这十个数字。
根据数码的结构特点,我们采用高低电平的方法点亮数码管对应的段即可。
七段数码管的显示结构如图2-11所示:
图2-11数码管管脚图
表2-1详细的列出了0、1、2、3、4、5、6、7、8、9这十个数与七段数码管的对应关系。
表2-17段数码管的显示关系
段数字
a
b
c
d
e
f
g
1
2
3
4
5
6
7
8
9
有了这样的分析后,数字显示的问题就解决了。
另外,为了使程序能和硬件(七段数码管)能有效的结合起来,还需要一个3-8译码器在中间架起一个“桥梁”。
七段数码管的选择模块程序如下:
ENTITYseg7IS
PORT(q:
INSTD_LOGIC_VECTOR(3DOWNTO0);
segment:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDseg7;
ARCHITECTURErt1OFseg7IS
PROCESS(q)
CASEqIS
WHEN"
=>
segment<
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
0101"
1101101"
0110"
1111101"
0111"
0100111"
1000"
1111111"
1101111"
WHENOTHERS=>
XXXXXXX"
ENDCASE;
ENDPROCESS;
ENDrt1;
2.3.2八进制计数器
我们来描述下三个子电路,然后再描述显示模块的总体功能。
先来讨论下八进制计数器count8,这个八进制计数器除了没有使能端enable和进位输出端口cout之外,它的描述结构与前面描述的计数器的结构完全相同,用VHDL描述如下:
八进制计数器模块设计程序如下:
ENTITYcount8IS
sel:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDcount8;
ARCHITECTURErt1OFcount8IS
SIGNALsel_tmp:
STD_LOGIC_VECTOR(2DOWNTO0);
if(sel_tmp="
111"
sel_tmp<
=(others=>
'
);
=sel_tmp+1;
sel<
=sel_tmp;
2.3.3计数位选择电路
计数位选择电路的功能示根据八进制计数器count8输出的选择信号sel来选择对应显示位的计数数据,作为送到七段显示译码电路的输入数据。
由于计数选择电路的输出端口的计数数据的位数不等,而七段显示译码电路的输入端口接收四位宽度的数据。
ENTITYtime_chooseIS
PORT(sel:
INSTD_LOGIC_VECTOR(2DOWNTO0);
ENDtime_choose;
ARCHITECTURErt1OFtime_chooseIS
PROCESS(sel,sec10,sec)
CASEselIS
000"
=sec;
001"
=sec10;
XXXX"
2.4总体功能描述
对计数器的显示模块的四个子电路描述以后,我们就可以进行计数器的总体功能描述了。
在计数器显示模块的VHDL描述中,我们引用元件的形式来调用上面描述过的四个子电路,秒表显示模块的VHDL描述如下:
ENTITYdisplayIS
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
ENDdisplay;
ARCHITECTURErt1OFdisplayIS
COMPONENTcount8
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字频率计 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)