基于AT89S52单片机和CPLD高精度频率计设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于AT89S52单片机和CPLD的高精度频率计的设计

[摘要] 本文介绍了利用at89s52和cpld相配合实现高精度频率测量电路的设计。由于传统的周期测量方法和频率测量方法都有固有的误差,即不能消除标频信号随被测信号频率下降而精度降低的缺点。本文利用cpld来实现频率、周期、脉宽和占空比的测量计数,利用单片机完成整个测量电路的测试控制、数据处理;显示输出部分也由cpld来完成,从而克服了固有的缺点,实现了高精度测量。

[关键词] at89s52单片机 cpld 频率计

频率测量是电子测量领域里的一项重要内容,而高精度频率计的应用尤为广泛。目前,宽范围、高精度数字式频率计的设计方法,大都采用单片机加高速、专用计数器芯片来实现。但这种方法硬件连线复杂、可靠性差,且在实际应用中往往需要外加扩展芯片,这无疑会增大控制系统的体积,还会增加引入干扰的可能性。对一些体积小的控制系统,要求以尽可能小的器件体积,实现尽可能复杂的控制功能,直接应用单片机及其扩展芯片就难以达到所期望的效果。

本文设计的高精度频率计,除了对被测信号的整形部分、键输入部分必须用单片机实现以外,测频核心电路以及数码显示部分都交由cpld来完成。该数字频率计电路简洁,软件潜力得到充分挖掘,低频段测量精度高,有效防止了干扰的侵入。

1测频原理及误差分析

1.1传统测频方案

频率测量法和周期测量法的基本工作原理见图1、图2。

图1频率测量法原理图

图2 周期测量法原理框图

在频率测量法中,参考晶振提供了测量的时间基准,分频后通过控制电路去开启与关闭时间闸门。闸门开启时,计数器开始计数,闸门关闭停止计数。若闸门开放时间为t,计数值为n,则被测频率f=n/t0用这种频率测量原理,对于频率较低的被测信号来说,存在着测量实时性和测量精度之间的矛盾,不适用于低频信号的测量。

周期测量法和频率测量基本结构是一样的,只是把晶振和被测信号位置互换了一下。t=ntr/m计数值n和被测信号的周期成正比,n 反映了m个信号周期的平均值。利用周期测量法在一定信号频率范围内,通过调节分频系数m,可以较好的解决测量精度与实时性的矛盾。但是对于高频信号,周期法就需要很大的分频系数m,增加了硬件及软件的复杂性,不宜采用。

1.2等精度测频方案

采用高精度恒误差测频法。此种方法的测量精度与被测频率无关,其工作原理如下:

图3 等精度测量原理

如图3,预置门控信号是一个宽度为tpr的脉冲,cntl,cnt2是两个可控计数器,标准频率信号从cntl的时钟输入端clk输入,

其频率为fs,经整形后的信号的上升沿通过d触发器q端同时启动计数器cntl,cnt2。cntl,cnt2分别对整形后的被测信号和标准信号同时计数;预置门信号为低电平时,经整形后的被测信号的—个上升沿将使这两个计数器同时关闭。

设在一次预置门时间tpr中对被测信号计数值为nx,对标准信号的计数值为ns则下式成立:

fx/nx=fs/ns(1)

推得: fx=( fs/ns)·ns (2)

相对误差公式为δ=±(2/ ns+△fs/ fs) (3)

从误差公式中可以看出,其测量频率精度和ns和标准频率精确度有关,而与被测频率无关。显然,ns决定于预置闸门时间和标准频率信号得频率,其关系式如下:

ns=tpr×fs(4)

如果采用频率为60mhz的晶体振荡器则有:

|δ|=1/ ns (5)

若预置门时间为tpr=0.1s,则:

ns=0.1×60000000=6000000, δ≤1.6×10-6

可见,在整个测量范围内,要达到题目所要求的精度是完全可行的。如果标准频率较低,则只要提高预置门时间,同样可以达到很高的精度。

2系统总体设计

由于高精度恒误差测频法不用分段考虑被测频率信号,在整个测

量范围内,其测量精度是不变的,所以我们采用等精度测频方案对电路展开设计。

2.1电路硬件总体结构

图4电路硬件电路框图

电路硬件总体结构如图4,频率量的测量由cpld完成,同时考虑到cpld资源足够,将译码显示扫描电路也放在cpld中,它与测频电路为互相独立的两部分。整个频率测量中的数据运算及控制处理两大功能由单片机完成。

2.2测频基本电路

测频基本电路在cpld中完成,这是等精度频率测量的核心。使能信号为高时表示测频结束,可以输出数据,此时测频模块停止工作,等待cpu读取数据。cpu采用脉冲计数方式轮流读完多个字节数据后,送出读数结束信号,数据输出模块将输出使能信号放低,同时将两计数器清零,测频模块重新开始工作。测频模块频率测试完毕,产生一个数据锁存信号,将数据存人数据缓存器中,同时将输出使能信号置高,告诉cpu数据可读。

2.3cpld与mcu的通讯

为满足一定的测量精度以及测频范围的要求,我们将每个计数器设为32位,加上一个控制字节位,这样cpld每次要将9个字节的数据传给mcu。当输出使能为高时,mcu发clk信号给cpld,cpld 对clk进行计数,第一个clk时输出第一位字节数据,第二个clk 时输出第二个字节数据,这样依次将9为数据都传输给mcu。

2.4mcu对数据的处理

单片机接收到数据后,根据式(2) fx=( fs/ns)·ns算出被测频率值,再根据t=1/f算出其周期值,再根据控制键要显示周期还是频率,然后计算小数点位置,并将相应数据传输给cpld,由cpld 完成led的动态显示。

2.5mcu和cpld的通讯

若要求用led显示,则mcu必须将计算所得数据传输给cpld。由于led为8位,则需传输8+1=9位bcd码(其中一个表示小数点位置)。每次数据传输时,cpld根据数据选择向量(四位)的值,将数据传送到相应的led数据寄存器中。如数据选择向量为0000时,表示现在的数据是第一位led的bcd码,cpld就将此数据存人第一位led的数据寄存器中,0001时则将数据存人第二位led的数据寄存器中等等。

值得注意的是,cpld的速度要比单片机快得多,而单片机在改变数据选择向量时,不可能保证四位数据选择向量位同时改变,导致cpld的“误读”,从而引起数据读取错误。解决方案是采用格雷码技术,即每次数据选择向量改变时只改变其中的—位,且保证在数据选择向量改变时数据位保持不变。

3结束语

以上电路主要芯片中,cpld采用altera的epm3064atc44芯片,内部电路用vhdl设计,单片机采用at89s52芯片,进行编程。在基准频率设为100mhz的情况下,经实际测试检验,性能稳定可靠,

相关文档
最新文档