简易数字频率计
一、任务
设计并制作一台数字显示的简易频率计。
二 、要求
1.基本要求
(1)频率测量
a.测量范围信号:方波 、正弦波;幅度:0.5V~5V;频率:1Hz~1MHz
b.测量误差≤0.1%
(2)周期测量
a.测量范围信号:方波 、正弦波;幅度:0.5V~5V;频率:1Hz~1MHz
b.测量误差≤0.1%
(3)脉冲宽度测量
a.测量范围信号:脉冲波;幅度:0.5V~5V;脉冲宽度≥100μs
b.测量误差≤1%
2.发挥部分
(1)扩展频率测量范围为0.1Hz~10MHz(信号幅度0.5V~5V),测量误差降低为0.01%(最大闸门时间≤10s)。
(2)测量并显示周期脉冲信号(幅度0.5V~5V 、频率1Hz~1kHz)的占空比,占空比变化范围为10%~90%,测量误差≤1%。
(3)在1Hz~1MHz范围内及测量误差≤1%的条件下,进行小信号的频率测量,提出并实现抗干扰的措施 。
摘要
本系统以FPGA为核心,采用等精度测量的方法测量待测信号的频率 。其频率测量范围可从0.1Hz到10MHz变化,波形为方波或者正弦波 。对脉宽的测量,与频率的测量类似,以脉冲波高电平作为FPGA计数器的使能信号,记录期间标准信号的个数,就可得出信号的脉宽 。整个系统主要由前级的信号整形,FPGA等精度测量和单片机的控制显示模块组成 。前级信号经OPA820饱和放大后送TL3016比较整形为方波 。采用FPGA的计数功能,测量出门控信号时间内待测信号的周期数和标准信号的周期数,得出待测信号的频率。通过单片机来计算并显示出待测信号的频率以 、周期及脉宽。经测试,本系统很好的实现了在0.1Hz 到16MHz内频率的测量,以及脉宽的测量 。且信号频率测量的精度不会随着待测信号的变化而变化,只与系统的标准信号及门控时间相关,实现了整个频带内等精度测量。
关键词:频率测量,FPGA,信号放大整形
一 、系统方案论证
本系统主要由信号前端处理模块,FPGA等精度测量模块,单片机控制处理模块组成,下面分别论证这几个模块的选择 。
1.测量方案的论证
方案一:利用测周期法
在待测信号的一个周期T x内,记录标准(频率为f s)信号的周期数N s,被测信号的频率为:f x=f s/Ns.该方法会产生±1个脉冲误差,并且测试精度与计数
值NS有关,为保证测试精度,该方法仅对低频信号的测量有效 。
方案二:利用测频率法
在确定的闸门时间T w内,记录被测信号的变化周期数N x,被测信号的频率为:f X=N x/T w.该方法也会产生±1个脉冲误差,并且测试精度与计数值N x 有关,为保证测试精度,该方法仅对高频信号的测量有效 。
方案三:采用MCU和FPGA实现等精度测量
FPGA可实现高速数字计数功能,能测量较高的信号频率,可弥补单片机计数功能的不足。利用FPGA编程灵活特点实现等精度频率测量,可获得较高的测量精度 。等精度测量方法可以简单表述为:在设定闸门时间内分别对待测信号和标准频率信号进行计数,保证标准信号频率高并稳定,即可实现高精度和等精度测量 。
方案一与方案二缺点都较为明显,应用中可以综合上述方案,设定一个中界频率,利用单片机的定时器和计数器通过测频和测周相结合的方法实现频率测量。当被测信号频率大于中界频率,采用测频法;小于中界频率,采用测周法。该方法外围电路简单,但测量精度有限,因此综合考虑起来,我们选择了方案三 。
2.信号前端处理模块方案论证
信号的前端处理包括信号的饱和放大与整形 。
方案一:分频带处理
由于信号的频率变化范围较大,可以将整个频带分为几个频带来处理 。具体实现为:让信号通过低通滤波器,让后结合单片机测出其前后端的峰值,来检测出信号频率的大致范围 。然后对低频信号做好去噪等的处理,用低频特性好的比较器来整形 。对中高频信号用高频特性好的比较器整形 。此方案需要的模块包括:低通滤波器 、峰值检波、通道选择和单片机的测量处理 。
方案二:整个频带内相同处理
信号前端处理模块的主要功能是将输入的信号整形为方波信号,用于后面的处理器计数及其他的测量 。我们可以利用高低频特性优良的比较器芯片来对信号进行整形,这样可以大大的简化前端处理模块的工作量。例如采用宽带的放大器
对信号饱和放大,然后再对信号比较整形 。此方案相比较于方案一来说,不仅仅是电路简单的问题 。更重要的一点是方案一中在对信号通道的选择上,若采用模拟开关,模拟开关有一定的内阻会对信号造成一点的影响,而且信号的处理模块越多,要求电路的去噪抗干扰能力也就要求越高 。若采用拨码开关,则整个系统的自动化显得有些欠缺 。
综合考虑,我们选择方案二 。为了保证对小信号进行处理,前级的饱和放大采用3级OPA820级联 。
3.控制系统的与论证
方案一:利用TI的十六位单片机直接测量,在预置的门控时间内,使用单片机内部自带的十六位计数器计数待测信号,然后再与标准信号比较,可以得出待测信号的频率 。使用单片机驱动液晶显示器,显示待测信号的周期以及频率。对于脉宽的测量,可以用单片机的捕获功能来实现 。
方案二:FPGA与单片机相结合 。使用FPGA的高速数字计数功能,对待测信号计数,将数据送给单片机,运算处理后,得出待测信号的频率,周期及脉宽等。此方案弥补了单片机计数不足的,而又利用到单片机的高速运算功能,很好的实现了整个系统的控制处理功能。
综合考虑,我们选择FPGA与单片机结合的方式 。对于单片机,选择TI的十六位单片机msp430f169,该控制器具有丰富的片上外设和较强的运算能力,可在线编程,不用外部编程电压,使用十分方便,性价比高 。对FPGA,使用DE2的开发板,其使用灵活,系统性能强大 。
二、理论分析与计算
1.待测信号频率及周期的计算
等精度测量的原理波形图如下,其闸门时间不是固定值,而是被测信号的整数倍,即与被测信号同步,因此,消除了对被测信号的计数所长生的±1个字误差,达到了等精度测量的。
图1等精度测频原理波形图
在测量过程中,FPGA 分别对标准信号和待测信号计数 。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不计数,而是等到待测信号的上升沿到来时,计数器才开始计数 。然后预置闸门关闭信号(下降沿)到时,计数器不立即停止计数,而是等到待测信号的上升沿打来是才结束计数,完成一次计数 。可以看出,实际闸门时间t1是被测信号的整数倍,与预置闸门时间t 并不严格相等,但差值不超过被测信号的一个周期。
在上图中,设被测信号的频率为fx ,标准信号的频率为fs ,在一次实际闸门时间t1中计数器对被测信号的计数为Nx ,对标准信号的计数为Ns 。则
x
x s S
N f f N =
(1)
1
X x T f =
,则
S X X s
N T N f =
(2)
2.待测信号频率及周期误差的计算在测量中,由于fx 计数的起停时间都是由该信号的上升沿触发的,在闸门时间t1内对fx 的计数Nx 无误差(t1=NxTx );对fs 的计数Ns 最多相差一个数的误差,即|△Ns|≤1,根据式(1),由误差传递公式,可得
x N S x x s
x s S s S
s N S s S
f f N N f f f N f N f f N N ∂∂∆=∆+∆=∆−∆∂∂i (3)
则等精度测频产生的相对误差为
100%x s s
x s s
f f N f f N δ∆∆∆==−
(4)
由式(4)的第一项为标准频率误差,标准频率可由稳定性好、精度高的高频晶振器产生,而本系统中采用FPGA 给出稳定的标准频率,因而引起对测量精度的影响极小,可忽略。这样,相对误差为
1s s s
N N N δ∆=−≤±
(5)
由(5)可以看出,测量频率的相对误差与被测信号的频率大小无关,仅与闸门时间和标准信号频率有关,即实现了整个频带内的等精度测量 。闸门时间越长,标准频率越高,测频的相对误差就越小。本系统要求测量的误差小于0.01%,最大
闸门时间为10s,则可计算出标准信号的频率应该取1kHz,为了保证其在比较小的闸门时间内也能进行准确的测量,我们取标准信号的频率为50MHz,并由FPGA直接给出 。
3.脉宽的测量及误差的计算
对于脉宽的测量,原理与频率的测量一样 。只是现在将待测脉冲波的高电平作为FPGA计数器的使能触发信号,在此期间记录标准信号的个数,可以得出脉冲宽度 。而周期已经测出,则可以将数据传给单片机,让其算出信号的占空比。由于原理与前面的周期测量一样,故在此不再详述 。
三 、电路与程序设计
1.系统总体框图
本系统硬件处理电路主要由信号的饱和放大与比较整形电路组成,其中饱和放大采用宽带的放大器设计,而整形电路采用高速的比较器TL3016,设计一个滞回比较器 。
图2系统总体框图
2.主要硬件电路
由于要对0.1Hz到10MHz的信号采用一个通道处理,故要求前级的放大器的增益带宽积较大,我们选用TI的低噪声、高增益带宽积的芯片OPA820,其理论带宽为240MHz(G=2),放大倍数我们设置在0~10被之间,方便输入不同幅度信号时可以做适当的调节。为了对小信号能尽可能的处理,采用三级OPA820级联的形式饱和放大,在中间一级的输入端,做信号的调零处理 。
对于比较器,要能适合高频,可选择TI超高速运算电压比较器TL3016,其理论比较时间仅7,.6ns,而且没有最小转换速率的要求,最大限度的保证了对小信号的处理能力。
主要电路见图3及图4:
图3前两级OPA820放大电路
图4后级放大及整形电路
四 、程序设计
软件部分采用模块化程序设计的方法,分FPGA部分和msp430f169单片机部分 。下面就这两个部分分别描述 。
1.FPGA程序设计部分
FPGA主要由50MHz的标准信号模块,计算器模块,除法器模块和一个D
触发器构成 。在D触发器给定的门控时间内,对标准信号和待测信号,
用32位的计数器分别计数,然后用除法器进行运算,最后将二进制的
数据传输到msp430f169单片机,其主要功能如图5 。
图5FPGA部分功能
2.单片机程序设计部分
单片机接受FPGA传输来的二进制数后,将其转化为十进制,并用12864
液晶显示,其流程图如图6.
图6单片机的流程图
五 、系统测试及结果分析
1.测试使用的仪器设备
测试使用的仪器设备如表1所示。
表1测试使用的仪器设备
序号名称、型号 、规格数量备注
1函数发生器ROGOL DG10221无
2直流电源ATTEN APS3003S-3D1无
2.测试方法
用实验室提供的直流电源为整个系统供电。本系统开机上电后,初始化所有软 、硬件。然后从信号源接入输入信号,按照题目的要求测试,相应的改变信号的幅度以及频率,测量显示出待测信号的周期及频率,然后变化波形测试 。对于脉宽的测量,采用脉冲波,相应的改变其幅度和脉宽,测量显示出脉宽 。记录相应的数据并进行数据的分析 。
3.测试数据
输入正弦波,频率及周期的测试结果见表2
表2正弦波的测试结果
输入信号测试结果
信号峰峰值/V 信号频率
/Hz
频率/Hz测量误差周期测量误差
1
0.10.099990.01%10000ms0
1 1.000000 1.00000s0 1010.000000.10000s0 100100.00000.01000s0
1k 1.00000k0 1.00000ms0 10k10.0000k00.10000ms0 100k100.000k00.01000ms0
1M 1.00000M0 1.00000us0 10M10.0000M00.10000us0 16M16.0001M0.0006%62.499ns0.001%
4
0.10.099990.01%10000ms0 100100.00000.01000s0
1M 1.00000M0 1.00000us0 16M16.0001M0.0006%62.499ns0.001%
8
0.10.099901%10000ms0 1010.000000.10000s0 10k10.0000k00.10000ms0 16M16.00010.0006%62.499ns0.001%
100.10.099990.01%10000ms0
1 1.000000 1.00000s0 1010.000000.10000s0
100100.00000.01000s0
1k 1.00000k0 1.00000ms0
10k10.0000k00.10000ms0
100k100.000k00.01000ms0
1M1,00000M0 1.00000us0
10M10.0000M00.10000us0
16M16.0001M0.0006%62.499ns0.001%输入方波,频率及周期的测试结果见表3
表3方波的测试结果
输入信号测试结果
信号峰峰值/V 信号频率
/Hz
频率/Hz测量误差周期测量误差
1
0.10.099990.01%10000ms0
1 1.000000 1.00000s0 1010.000000.10000s0 100100.00000.01000s0
1k 1.00000k0 1.00000ms0 10k10.0000k00.10000ms0 100k100.000k00.01000ms0
1M 1.00000M0 1.00000us0
5M 5.00003M0.0006%199.99ns0.005%
3
0.10.099990.01%10000ms0
100100.00000.01000s0
1M 1.00000M0 1.00000us0
5M 5.00003M0.0006%199.99ns0.005% 6
0.10.099901%10000ms0
1010.000000.10000s0
10k10.0000k00.10000ms0
5M 5.000030.0006%199.99ns0.005% 10
0.10.099990.01%10000ms0
1 1.000000 1.00000s0
1010.000000.10000s0
100100.00000.01000s0
1k 1.00000k0 1.00000ms0
10k10.0000k00.10000ms0
100k100.000k00.01000ms0
1M1,00000M0 1.00000us0
5M 5.00003M0.0006%199.99ns0.005%输入脉冲波,脉宽及占空比的测量结果见表4
表4脉宽的测试结果
输入信号测试结果
峰峰值/V频率Hz占空比占空比测量误差脉宽测量误差
11
10%10.0%0100.11ms0.11%
50%49.9%.0.2%499.99ms0.0002%
90%90.0%0900.00ms0
1k
10%10.0%099.87us0.13%
50%50.1%0.2%500.01us0.002%
90%90.0%0899.91us0.001%
10
110%10.0%0100.12ms0.12% 90%89.9%0.001%899.99ms0.001% 1020%19.9%0.5%19995us0.025% 40%39.9%0.25%39999us0.0025% 10030%29.9%0.33%2998.0us0.067% 50%50.0%04999.9us0.002% 1k60%59.9%0.17%599.84us0.027% 80%79.9%0.125%799.80us0.025%
小信号的测频,对于小信号的测量,最低可以达到4mV的峰峰值,故在此只对4mV的做简要记录,结果见表5
表54mV小信号的测频结果
输入信号频率
测试结果
频率误差
1Hz 1.00041Hz0.041%
10Hz9.99983Hz0.0017%
10kHz10.0119kHz0.119%
100kHz100.061kHz0.061%
1MHz 1.00001MHz0.001%
4.测试结果分析
对于周期和频率的测量,本系统的误差在前面已经分析过,其主要来源是标准信号的稳定性,以及闸门时间的长短。当标准信号的频率一定时(如本系统给定的50MHz),闸门时间越长,测量的误差越小 。本系统采用的闸门时间可控来实现,在整个频带内的误差都较小。由于脉宽测量叶是由FPGA计数来实现的,其原理与频率及周期的测量类似,故其误差叶较小 。
六 、小结
本系统硬件电路简单,且很好的实现了在0.1Hz到16MHz的频率及周期的测量,误差也在题目要求的范围内 。对于1Hz到1kHz的脉宽及占空比的测量,也
很好的实现了 。最后是对小信号频率测量,通过前级的多级放大,实现了在峰峰值为4mV能准确测量出信号在1Hz到1MHz的频率。总体来说,作品完成了题目所有基本部分和发挥部分的功能 。而且该系统的应用性较强,可以移植到其他需要测频率的测量电路中 。
参考文献
[1]童诗白《模拟电子技术基础》高等教育出版社2006年
[2]沈建华《MSP430系列16位超低功耗单片机原理与应用》清华大学出版社2004年
[3]叶金华《FPGA嵌入式应用系统开发典型实例》中国电力出版社2005年
[4]俞一鸣《Altera可编程逻辑器件的应用与设计》机械工业出版社2007年
。