引言
在电工技术领域内,频率是一个最基本的参数,频率与其他许多电参量的测量方案、测量结果都有十分密切的关系。随着航天军事科学技术的发展,对时间及频率的测量精度有了更高的要求。但是在现有基于单片机、CPLD等的测频设备中,在高频率的工作条件下工作不够稳定,电路板的设计比较困难,测量精度达不到系统要求的数量级[1]。因此,研究测量精度更高的测量设备具有重大意义。
PSoC(Programmable System on Chip)是Cypress公司推出的一款基于通用IP模块,并且具有真正混合信号处理能力的可编程片上系统芯片。在PSoC芯片的设计中,设计者可以根据不同设计要求调用不同的数字和模拟模块,完成芯片内部的功能设计。使用一块芯片就可以配置成具有多种不同外围元器件的微控制器,以实现从确定系统功能开始,到软硬件划分,并完成设计的整个过程 [2]。因此,PSoC能够满足非常复杂的实时控制需求,使用它进行产品开发可以大大提高开发效率,降低系统开发的复杂性和费用,同时增强系统的可靠性和抗干扰能力。因此,PSoC特别适用于各种控制和自动化领域。
1 测量原理
频率测量主要有测频法和测周法两种[3]。测频法就是在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为fx=Nx/Tw。测周法需要有标准频率的信号fs,在待测信号的一个周期Tx内,记录标准频率信号的周期数Ns,则被测信号的频率为fx=fs/Ns;在多个周期内,记录被测频率的变化周期数(或脉冲个数)Nx,则被测频率为fx=fs×Nx/Ns。这两种方法的计数值会产生±1个脉冲误差,并且测试精度与计数器中记录的数值Nx或Ns有关。
本设计采用多周期同步测频法:首先通过对定时器的设定来预置闸门时间。将标准频率信号和被测频率信号分别输入两个计数器进行多个周期的同步计数。预置闸门时间结束时,两个计数器并不停止计数,而是等到被测频率信号下一个同相位触发沿到来之后才关闭同步门并停止计数。因此,测量结果的精度仅与闸门时间和标准频率有关,误差由被测频率的±1个脉冲减少到标准频率信号的±1个脉冲,测量精度有显著提高。多周期同步测频法原理图如图1所示。
图1 多周期同步测频法原理图
2 系统设计
2.1 硬件设计
由原理分析可知,采用多周期同步测频法测量单路信号频率时,至少需要一个能提供闸门信号的定时器,一个控制实际闸门信号在被测信号上升沿处启停的同步控制模块,以及两个分别对实际闸门内的被测频率信号和标准频率信号进行计数的计数器。由运算器对计数器的结果进行运算,求出被测频率值,最后通过显示模块显示测量结果。
在两路信号频率测量中,不同信号的闸门信号产生电路和计数器都是彼此独立的,但其控制运算部分都由CPU来完成。基于对PSoC内部资源上的考虑,本设计采用1片PSoC芯片CY8C29666[4]作为频率测量系统的主体部分,每个PSoC芯片内部至少需要配置2个定时器功能模块和4个计数器功能模块。各计数器的计数结果输入到CPU中进行计算,得到的被测信号频率值并输出到显示部分。
PSoC芯片是整个频率测量系统的核心,其配置方式的可行性和合理性直接关系到系统功能能否顺利实现[56]。本设计中使用PSoC Designer软件中的器件编辑器对CY8C29666内部的全局资源、用户模块、连接关系以及芯片引脚进行配置,在此基础上添加外部器件,即可完成系统的硬件平台的搭建。本设计中,两路信号对应的处理部分将系统资源一分为二,即定时器模块均为8位,两个被测频率计数器均为16位,两个标准频率计数器均为32位。
定时器的配置方式是关键的环节。定时器模块是由1个周期寄存器、1个同步递减计数器和1个捕获比较寄存器组成。周期寄存器和捕获比较寄存器中要分别存放两个值,即Period和CompareValue,这两项值决定着闸门时间的长短。定时器模块共有两项输出:比较输出和最终计数输出。其中比较输出连到同步控制模块,用于产生同步使能信号;最终计数输出端接到指定的GPIO引脚,用来判断何时读取计数器的计数值及重写计数器的初值。
开启定时器后,递减计数器由Period值开始递减,同时两个输出端均输出低电平。当计数值等于CompareValue时,在下一个系统时钟上升沿,比较输出端输出高电平,直至计数值递减到零时,比较输出跳低——这样就产生了定闸门信号。定闸门信号进入同步控制模块,产生与被测信号上升沿同步的使能信号。两个计数器在使能信号为高时开始递减计数。当使能信号跳低后,计数器暂停计数。读取当前计数值,即可计算出测量结果。
系统结构框图如图2所示。
图2 采用多周期同步测量法测量两路数字信号的结构框图
2.2 软件设计
该系统的程序设计主要由主程序、中断服务子程序和显示子程序构成。为了使设计出来的软件功能明确,便于调试、扩展和移植,采用结构化的程序设计方法[7]。主程序如图3所示。
图3 主程序流程图
需要注意的是,定时器最终计数结束后的下一个系统时钟周期,定时器会自动重新加载计数初值,所以要在此之前读取两计数器的计数值。故使用定时器的最终计数输出功能,在此时输出一个脉冲触发中断,即可通过编写中断处理程序实现读取计数值,并重置计数器初值的功能。
3 实验结果及误差分析
设标准信号的频率为fs,通过配置定时器模块得到的闸门时间为T,被测信号频率的理论值为fxe,T时间内计数器对被测频率信号和基准频率信号的计数值分别为Nx和Ns,则被测信号的频率为fx = fs × Nx / Ns。在忽略基准频率fs误差的情况下,测频可能产生的误差为:
由于测量中两计数器的计数启停都由fx的上升沿触发,即实际闸门时间为被测频率信号的整数倍,故对fx计数不存在误差;对fs的计数Ns最多相差一个脉冲的误差,即|ΔNs|≤1,此时测量频率为:
将此式和频率计算公式代入误差计算公式可以得出:
由式(3)可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和基准信号频率有关。闸门时间越长,标准频率越高,测频的相对误差就越小。这里选定标准信号频率为48 MHz,闸门时间分别为10 s和10 ms的情况。通过计算可知:闸门时间为10 s时,理论误差为2.083×10-9 ;闸门时间为10 ms时,理论误差为2.083×10-6 。 系统电路安装调试成功后,对上述结果进行验证。两路输入信号分别取自绿杨牌YB1631信号发生器以及信达牌XD11BH多用信号发生器。被测信号参考频率由Keithley 2000数字万用表测得。测量结果如表1所列。
由表1可知,本设计测量结果的相对精度在10-6以上,基本达到设计精度要求,但是与理论误差相比还有一定差距。原因有两方面:一方面在现有的实验室条件下,没有频率精度更高的频率计,故以其为标准计算得到的误差只能作为参考,更高的测量精度无法验证;另一方面是系统本身存在误差。
结语
本系统以PSoC芯片CY8C29666为核心,以多周期同步测频法为基础,充分利用了PSoC芯片内部集成的功能模块资源,完成了两路信号频率测量系统的设计。其硬件电路简单,提高了频率测量的精度,实现了高集成度、高速和高可靠性。同时,由于PSoC器件的体积和功能优势,简化了系统的设计,进一步降低了成本。
表1 测试数据