基于dsp的简易数字频率计的软件设计内容摘要:

一个脉冲,即 1et fx Nx fs Ny ( 31) 而 0 ( )fx e Nx f Ny et   ( 32) 由式( 31)和式( 32)可得 ( 0 )fx f Ny Nx (33) [ ( ) ]fx e fs N y et N x    (34) 根据相对误差公式有 fx e fx e fx e fx fx e     (35) 将式( 33)、( 34)代入式( 35)经整理得 fxe fxe et Ny   (36) ∵ 1et ∴ 1et Ny Ny (37) 12 即 1fx e fx e Ny    显然,测量精度仅仅与 Ny 有关,只要保证 Ny的值,就能保证精度。 为了达到更高的精度,在进行软件设计时,采用了以下处理: (1)采用分段处理方法 本设计在进行频率、周期测量时,首先采用了分段处理的方法。 为了使系统快速响应,在程序开始时,先把定时器 T1的周期值设为 4, T2CLK 设定为 150/64MHz。 这样通过很短的时间就可以计算出被测频率的值。 如果周期值设为很大的话,若输入信号频率很低,就会等待很长的时间才得出结果,不利于实时测量。 对于固定个数的被测信号周期时间内,频率越低标准高频脉冲个数越多,故把被测信号分为高频段,中频段以及低频段。 分段依据如下:设变量 Ny 为该固定时间内测得的标准脉冲数,若 Ny 小于 13 个,则定义为高 频段,需重新配置定时器 T1的定时周期为 65530个被测信号周期长度,并且修改定时器 2 的时钟频率为 150/2MHz;若 202000Ny ,定义为低频段;若 Ny 小于 202000 个而大于 13 个,定义为中频段。 具体算法如下: (a)若 202000Ny ,则说明被测信号频率 150 64 500 00 75fx M Hz Hz,为了增加响应快速性,可以直接计算频率。 (b)对于中频段,本设计采用等精 度测量。 选择定时器 T1 的周期长度为 4 个被测信号周期长度的 整数倍,设变量 N 为一次测量中被测信号周期个数,即为 202000N Ny ,若 1a N a   ( a 为整数) , 则取1Na,然后设置定时器 T1 的周期寄存器的值 T1PR 为 4* 3N (实际上为4* 4N 个被测信号周期长度的定时周期),由于周期值最大不能超过 65535,所以由 4 * 3 65 53 5N  ,可以得到 N 的最大值不能超过 16383。 若 12Ny ,则200 000 12 166 163 83N   ,此时 N 不 可 取 ; 若 13Ny ,200 000 13 153 85 163 83N   ,此时 N 可取。 由于一个被测信号周期中标准脉冲个数为 4Ny 个,所以此时对应的被测信号频率 150000000 64 * 4fx N y ,当200 000 163 83Ny  时,  Hz。 对于被测信号频率小于等于 767953 Hz时,采用等精度测量,即周期匹配值设为 4* 3N ,同时为了提高精度,把定时器T2 的内部时钟分频数设为 8 分频,即以 15016 MHz 的频率作为内部时钟频率。 (c)当被测信号频率大于 767953Hz时,重新设定时器 T1 的 T1PR为 65529(实际为 65530个被测信号周期长度),设置内部时钟频率为 75MHz,但此时已经不再是等精度测量了,频率越高精度会越低。 但由于高频选择的标准脉冲频率非常高,故高频部分精度基本保持在百万级别不变。 13 (2)频率突变时的实时性处理 (a)测频率、周期时,当频率突然由高频变低频时,定时器要响应好长时间才能得出结果,不利于实时测量。 要进行以下处理:把定时器 T1,定时器 T2 的寄存器配置重新设置为系统初始化时的状态,即把定时器 T1的周期寄存器的值 T1PR 设为3,定时器 T2 的内部时钟分频系数设为 64 分频,重新 计算频率。 (b)当被测信号突然从中频段变为高频段时,由于中频段采用等精度测量,定时器 T1 的周期长度小于60003 个被测信号的周期长度,对于高频段的频率而言,精度肯定不够,所以对于此种情况,采取的对策也是把定时器 T1,定时器 T2 的寄存器配置复位为系统初始化时的状态。 如何判断信号频率发生变化了呢。 本设计中,根据定时器 T2 溢出次数是否超出了本频率段最低频率时应该对应的溢出次数来判断。 比如频率从高频段变为低频段时,由于高频均采用 65530 个被测信号周期长度为定时器 T1 的定时周期,定时器T2 内部标准时钟采用 75MHz,所以一个周期中定时器 T2 的最大溢出次数发生在 Hz 处,此时溢出次数为 75 * 655 30 655 36 767 953 .12 5 97. 6M ,为了确保信号频率的确是由高变低,现取 T2 在该点溢出次数为 98 次。 因此如果开始在高频段,现在溢出次数大于 98 次,表示被测信号频率的确是由高变低了,但并不能区分信号频率到底变为中频段,还是低频段,所以重新初始化,重新测信号频率。 这样处理对信号由高频变低频效果很好,节省了大量时间。 其他频率变化情况也是如此判断处理,这里不再赘述。 另外,在重新复位计算时,为了加快系统响 应,本设计采取以下处理: (a)当信号从高频变低频时,可以把定时器 T2 的计数器值改为 65525,这样只要经过 4 个内部时钟周期就可以重载周期匹配值了,大大加快了系统响应时间。 (b)把控制寄存器的位改为“立即重载”,这样只要重载初始化时的值,就可以立即装载,然后再把控制寄存器的位改回原来的值。 在本设计中,当频率变化需重新初始化以及频率、周期计算结束时,都要把定时器 T2 的溢出次数清零,避免出错。 (3)取算术平均值进行滤波 为了进一步提高测量计算精度,本设计采用平均值的方法进一步提高精度。 本设计中测频率、脉宽分别 用一个数组存放 7 次测得的频率值、脉宽值。 当数组存满后,对这 7 个数进行从小到大的冒泡排序,然后去掉数组中排序前两个和排序最后两个值,把剩下的三个值进行平均,这样不仅去除了系统偶尔受外界干扰得到的不 14 稳定值,而且可以提高测量精度。 本设计中由于硬件上的干扰以及现场干扰,在高频时会出现测出的数据偏差比较大的值,因此采用“滤波”方法:也即把测得的高频数值存放在一个长度为 9 的数组中,然后进行冒泡排序,取排序在中间的那个值作为最终的值。 经调试发现这样能够很好的去除干扰数值,而且由于高频本身测试速度就很快,所以不会影响实时性 测量。 (4)系统校正 在调试过程中,发现仿真调试结果与数字信号发生器产生的信号频率相比,均有一个比较固定的系统误差。 经若干次(大于 30 次)测量发现,在信号频率大于200Hz 时,测量误差基本恒定,为百万分之十八,为了进一步提高精度,在测得的结果中统一乘以一个系数 a, 1 18 100 000 0a  ,即  ,去除该误差,得到了更高的精度。 理论误差分析 本设计结果评测过程中采用 Tektronix AFG3101 标准信号发生器的发出的信号作为被测信号。 它在环境温度为 0℃ 50℃时,精度为177。 1ppm。 ( 1)在低频段(被测信号频率小于 ),采用一个被测信号周期里至少50000 个标准填充脉冲,每次测量共 4个被测信号周期长度,所以理论上被测信号频率的测量误差应小于 61 200 000 5e  。 ( 2)在中频段采用等精度测量,被测信号周期长度为 4*( 1)N 个周期,每 ( 1)N个被测信 号周期长度中就对应着 50000 个以上内部定时器脉冲数, 因此理论上被测信号的频率测量误差应小于 61 [ 4 * ( 1 ) ] ( 1 ) * 500 00 ( 1 200 000 ) 5N N e       。 ( 3)在高频段,被测信号周期长度为 65530 个周期,在频率为 3MHz 时精度最低,理论上为 7( 1 ( 7 5 0 0 0 0 0 0 3 0 0 0 0 0 0 * 6 5 5 3 0 ) ) 6 .1 e   ,由于信号发生器的精度限制,理论上测量误差应小于 61e。 本设计测脉宽采用的内部时钟频率为 150/2MHz,周期为 1/75μs ,在要求的脉宽范围( 100μs 至 10ms)内,精度在 100μs 时最低,此时为 4(1 1 0 0 * 7 5 ) 1 .3 3e   。 测占空比的精度取决于测周期和脉宽的精度。 15 4 系统硬件设计 系统硬件部分由以下四部分组成:整形电路、 DSP 选择与最小系统、通讯模块和电源管理模块,下面分别介绍。 整形电路 +T L 3 0 1 6I D 5 V1 3 K5 1 0+ 5 V1 0 KI N P U T1 0 03 . 3 VS N 7 4 L V C 1 G 1 40 . 1 181。 F1 M235 图 整形电路原理图 如图 所示,选择 TI 公司推出的高性能比较器 TL3016ID 作为整形电路的主要器件,该比较器为一款支持 +5V和 5V双电源供电的高速比较器,当输入端 + 的输入电压高于参考端 – 的电压时,其输出为 ,当输入端电压低于参考电压时,其输出为 500600mV电平。 为了使电路不仅能够测量双极性信号,还能够测量单极性的信号,将参考端电压适当的抬高,参考电压 V_取 ,由阻值为 13K、 510Ώ 的电阻分压得到。 选用高速施密特触发器 SN74LVC1G14 对信号幅值进行限幅和 进一步整形,对该触发器电源接数字 ,其正向门槛电压 VT+为 ,反向门槛电压为 1V左右,在信号正向变化时,当信号大于 触发器输出 ,当信号反向变化时触发器输出 0V低电平。 经过该触发器整形后的信号可直接送入 DSP 的 GPIOA12/TCLKINA 引脚在比较器和施密特触发器之间接入阻值为 100Ώ 的电阻进行阻抗匹配。 该比较器具有输出锁存功能,在此设 16 计中不使用该功能,将其 LATCH ENABLE 引脚 5 接为低电平。 实际调试过程中发现对于频率小于 1KHZ 的正弦波信号,经比较器整形后的输 出波形的边沿有比较严重的抖动,故对比较器加入正反馈,使用阻值 1MΏ 的电阻和 10KΏ 的电阻组成正反馈,可消除抖动。 图中参考端电容的作用是对电源电压的滤波,抵抗来自电源的噪声干扰。 另外在每个有源器件的电源引脚旁均要并联一个 的去耦电容,起到 滤纹波 和 旁路掉该器件的高频噪声 的作用。 (图中均未标出) DSP 选择与最小系统 最小系统主要包括 TMS320F281时钟电路、复位电路、 JTAG 口等。 信号处理模块以 DSP 芯片 TMS320F2812 为核心。 TMS320F2812 含有丰富的片上外设资源 ,如 ADC、事件管理器、 PIE、看门狗、 SCI、 SPI 等 [7]。 该系统中没有使用F2812 片上看门狗和 SPI 模块,而只使用了其片上 EV、 PIE、 GPIO 及 SCI等模块,无需外扩 ROM。 其中系统中, EV 模块是本设计的核心模块,测周期、频率、脉宽、占空比都是依据它的功能来得到的。 F2812 协调着整个系统各模块的有序工作及承担着信号处理的任务。 复位电路采用阻容式电路,以方便进行手动复位。 JTAG 口方便程序的调试和烧写。 F2812 的另一个特点就是其 CPU 时钟频率已经可以达到 150MHz,即单周期指令执行时间为。 这从而为高速采集和处理信号提供了保障。 因而,系统中 F2812由外部 30MHZ 的有源晶振提供时钟信号,并在其内部倍频至 150MHZ。 时钟电路图如图 所示。 17 图 标准时钟发生电路 通用定时器的计数方向引脚 TDIRA、 TDIRB 通过上拉电阻确定为单增计数,插针为以后更改方向起预留作用。 通讯模块 通讯模块接至 F2812 的 SCI 模块,通过 9芯标准 RS232 口与其它系统进行串行通讯。 选用 F2812 片上 SCIA 作为串行通讯口,选用 MAX3221 作为串口通讯信号电平转换模块的主要器件,其波特率最高可达 250Kbit/s。 串行通讯部分硬件连接图如图 所示。 图 通讯部分硬件连接图 电源管理模块 系统供电电路总体框图如图 所示。 18 模 拟 地数 字 地+ 5 V 5 V模 拟 部 分数 字 部 分3 .3 V1 .8 VD C /D C 变 换 器C S 5 1 4 1 4L 7 9 0 5L。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。