APP下载

基于CPLD和单片机的等精度数字频率计设计

2015-05-29李莉熊晶

现代电子技术 2015年10期

李莉+熊晶

摘 要: 根据相位重合点理论对等精度数字频率计进行改进,采用该理论可使对标准频率信号和待测频率的计数同时开始,消除了对标准频率信号计数时±1个周期的误差。系统设计主要包括三部分:待测频率的整形放大部分;计数部分,采用CPLD,相位重合点的检测也在CPLD中完成;频率的计算和显示部分由单片机AT89C51完成。CPLD部分的仿真使用Max+Plus Ⅱ,单片机部分的仿真使用Protues软件。测试结果表明,待测频率在1 Hz~10 MHz范围内,频率计测量精度高,稳定性好。

关键词: 相位重合点理论; CPLD; 等精度数字频率计; Max+Plus Ⅱ

中图分类号: TN710?34; TM935.13 文献标识码: A 文章编号: 1004?373X(2015)10?0118?03

频率计是一种应用在电子、通信、工业生产领域的常用的电子测量仪器。常用的对频率计的设计方法有直接测量法,模拟内插法,多周期同步法,等精度测量法[1?2]等。在这些测量方法中等精度测量法的精度最高,但是该方法对标准频率信号的计数部分存在±1个周期的误差,本文采用相位重合点理论,可消除±1个周期的误差。

1 系统整体设计方案

由于待测频率fx往往是小信号,并且不是方波,所以要先放大和整形,经过处理后的信号和标准频率信号f0送到CPLD,单片机对CPLD发控制命令,CPLD进行相位检测和计数,计得的两组数值(在实际闸门时间内对fx的计数值nx和对f0的计数值n0)送往8051,单片机根据公式[fxnx=f0n0]计算出fx,最后通过液晶显示器LM0 16L 显示出当前频率值。整体设计方案如图1所示。

图1 系统框图

2 系统设计

2.1 放大整形电路的设计

放大部分采用共射极放大电路,整形部分采用施密特触发器74LS14。由于共射极放大电路是反向放大,而施密特触发器内部就带有反向器,所以最终可实现放大整形后不会反向。

2.2 相位重合检测部分

2.2.1 传统等精度频率计测频原理

传统的等精度频率[3?4]计测量原理[5]如图2所示。标准频率信号f0送入计数器counter0的时钟端CLK,待测频率fx连D触发器的时钟端和counterx的时钟端CLK,D触发器的输入端接闸门信号,输出端接两个计数器的使能端。当闸门信号在高电平器期间,并且fx是上升沿时,两个计数器同时计数,停止计数时刻是在闸门信号变为低电平后并且是fx的下一个时钟信号上升沿到来时结束计数。这种方法可以保证对fx的计数不存在任何误差,但是对f0的计数则有±1个误差,并且对于f0的给定,必定是个高频信号,比如100 MHz,而采用本文的方法对f0则无要求。

图2 传统等精度频率计结构图

2.2.2 相位重合理论

设[f1=A×f],[f2=B×f],A,B是相互没有公约数的两个正整数,则f就是f1和f2的最大公因子频率fmaxc。设[tminc=1fmaxc],tminc叫作最小公倍数周期。在一个tminc周期中f1和f2中的相位差中有一些值分别等于初始相位差加0,ΔT,2ΔT,3ΔT,…,ΔT=[fmaxcf1f2],这些值远小于f1和f2的周期值,这样的一些点叫做两信号的“相位重合点”。所谓相位重合并非绝对重合,而是一个相对的概念。在一个tminc周期中包含A个频率值是f1的周期和B个频率值是f2的周期。

利用上述理论,可得到相位重合点检测电路[6?9],如图3所示。

图3 相位重合检测电路

2.2.3 修正后的相位重合检测电路

该电路理论可以找到相位重合点,是利用信号经过非门之后有延时,但是仿真不通过,这是由于仿真软件把原信号和取反后再相与逻辑综合掉了,所以经过非门之后的信号必须要有个延时才可以,同理加入逻辑门的方法进行延时也行不通,比如再增加2个非门的方法。在Max+Plus Ⅱ软件中有延时单元LCELL可以用,但是延时不精确,甚至可能造成系统不稳定。由于Max+Plus Ⅱ中没有电容电阻这些元件,所以也不能用RC电路进行延时。本文采用延时的方法是通过加入D触发器来延时,信号经过D触发器的延时时间为1个CP脉冲的时间,电路图如图4所示。

图4 修正后的相位重合点检测电路

从波形图图5可以看出,a信号与b信号的初始相位差为0,b信号的周期是a信号的3倍,根据相位重合点理论,可以得到在每一个300 ns后必然有相位重合点。当chonghe端是一个窄脉冲的上升沿时说明b信号和a信号相位重合。由于信号经过非门有几个ns的延时,并且经过D触发器后还有1个CP脉冲的延时,所以观测到的相位重合点有几个ns的滞后。

图5 修正后的相位检测电路波形图

2.3 计数电路

计数电路部分加入相位重合检测电路构成实际的计数电路,PINLVJIXIN2模块是普通的等精度计数器模块,采用VHDL语言编写,各引脚含义如下:bclk,标准时钟信号输入端;tclk1,待测信号输入端;clr,清零端;cl,预置门控信号;tclk,计数控制端(tclk引脚是上升沿,并且cl是高电平,开始计数,当cl是低电平,并且下一个tclk上升沿到来时,停止计数);start,开始计数的输出信号,此信号为‘1表明真正开始计数,为‘0表明停止计数; sel[2..0],多路通道数据选择端;当sel 分别取值0,1,2,3时,由低8位到高8位分4次读出标准频率计数值, 当sel 分别取值4,5,6,7时,由低8位到高8位分4次读出待测频率计数值。data[7..0],8位数据端口。实体及部分结构体程序如下:

entity pinlvjixin2 is

port(bclk, tclk, tclk1, clr, cl:in std_logic;

start:out std_logic;

sel:in std_logic_vector(2 downto 0);

data:out std_logic_vector(7 downto 0));

end entity pinlvjixin2;

architecture one of pinlvjixin2 is

signal bzqxin:std_logic_vector(31 downto 0);

signal tsqxin:std_logic_vector(31 downto 0);

signal ena:std_logic;

signal bena:std_logic;

begin

start<=ena;

bena<=ena;

data<=bzqxin(7 downto 0) when sel="000" else

bzqxin(15 downto 8) when sel="001" else

bzqxin(23 downto 16) when sel="010" else

bzqxin(31 downto 24) when sel="011" else

tsqxin(7 downto 0) when sel="100" else

tsqxin(15 downto 8) when sel="101" else

tsqxin(23 downto 16) when sel="110" else

tsqxin(31 downto 24) when sel="111" else

tsqxin(31 downto 24);

bzh :process(clr, bclk,bena)

begin

if clr=′1′ then bzqxin<=(others=>′0′);

elsif bclk′event and bclk=′1′ then

if bena=′1′ then bzqxin<=bzqxin+1;

end if;

end if;

end process;

……

PINLVJIXIN2计数模块编译通过后可生成原理图,PINLVJIXIN2的原理图和相位重合检测电路共同构成相位检测及计数模块图, 如图 6所示,相位重合检测电路的输出端chonghe引脚连PINLVJIXIN2的tclk端。当chonghe端输出一个窄脉冲时,并且cl是高电平期间,在这个窄脉冲的上升沿,PINLVJIXIN2模块中的两个计数器(计标准时钟信号的计数器和计待测频率的计数器)开始计数,停止计数时刻是在cl信号变为低电平以后,当chonghe端又来一个窄脉冲的上升沿时停止计数。这样可以保证两个计数器是同时开始计数,并且同时停止计数,可消除传统等精度频率计对标准频率信号计数时+1个脉冲的误差。

从图7 CPLD计数输出波形图可以看出,当sel[2..0]为4,5,6,7时fx计了1个脉冲,即公式[fxnx=f0n0]中的nx=1,当sel[2..0]为0,1,2,3时f0计了3个脉冲,即n0=3,计数结果正确。

图6 相位检测及计数模块顶层文件原理图

图7 CPLD计数输出波形图

2.4 单片机模块

在该模块中,单片机完成3个功能[10],一个是对CPLD发命令并接收CPLD传送回的数据,P0.7(接clr端)先发低电平,使两个32位计数器清零,当清零之后,单片机给CPLD先发高电平信号再发低电平信号, 通过P3.7(接cl),单片机不断检测P3.6引脚(接start端),当P3.6由高电平变为低电平时, P3.6,P3.5,P3.4(接sel[2..0])分别取值0,1,2,3时,由低8位到高8位分4次读出标准频率计数值,当sel 分别取值4,5,6,7时,由低8位到高8位分4次读出待测频率计数值,这时数据按这个对应关系送到P1口;另一个功能是根据[fxnx=f0n0]计算出fx,采用汇编语言,编译软件选用WAVE仿真软件,最后一个功能则是进行显示,显示器采用LM0 16L。液晶显示部分较为简单就不在详述。

3 结 语

本设计利用相位重合点理论提高了等精度频率计的精度,重点设计了相位检测电路,并和计数电路相结合, 采用改进电路后的计数器件是大规模可编程逻辑器件CPLD,利用其高速、灵活的特点,计算及显示部分采用AT89C51单片机和LM0 16L。经Max+Plus Ⅱ及WAVE和Protues进行分块仿真,在理论上论证了系统的稳定性和可靠性。

参考文献

[1] 潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2006.

[2] 黄俊,余水宝.基于STC12C5A60S2的高频高精度频率计的设计[J].微型机与应用,2012,31(17):22?24.

[3] 郝统关,程明.基于FPGA Nios Ⅱ的等精度频率计设计[J].电测与仪表,2009,46(2):56?58.

[4] 李云红.相位检测频率系统的设计[J].舰船检电子工程,2009(4):171?173.

[5] 李国利,刘旭明,翟力欣.基于FPGA与单片机的等精度频率计的设计[J].电子设计工程,2013,21(22):171?172.

[6] 黄冠中,李志强.基于PXI总线的宽带频率计设计[J].现代电子技术,2010,33(11):18?19.

[7] 薛伟,王梅.基于相位重合点检测技术的测频方法的改进[J].电子科技,2005(7):17?20.

[8] 康钦马,姜海宁,周渭.基于相位重合检测技术的虚拟频率计设计[J].电子测量与仪器学报,2005,19(2):45?48.

[9] 郭豫荣.一种新型频率计的设计[J].赤峰学院学报:自然科学版,2012,28(16):73?75.

[10] 孟召议.基于单片机AT89C52的频率计的设计[J].长沙通信职业技术学院学报,2012,11(3):51?54.