- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
便携式功率分析仪设计----功率分析仪软件设计( 一)
第四章功率分析仪软件设计
4.1软件设计框架
如下图4-1所示,其中SED1335是图形液晶显示控制器,它集成在液晶显示屏幕电路中,提供独立的显示控制字,可用单片机对其进行控制,单片机通过SED1335将数据送到LCD显示。通道进来的模拟信号经由A/D转换成数字量,将这些数字量存入缓存器FIFO后,再由ARM读入进行计算处理,我们所选用的ARM LPC2138拥有强大的数据处理能力能完成数据的采集、处理、显示以及键盘操作功能。经过ARM处理的数据,系统参数等信息都将保存在FLASH中,便于调用。FLASH是非易失性存储器,可以重复进行读/写,读写时应按其时序进行。它用于存储字库和程序,本设计中使用的FLASH是ARM单片机LPC2138内部FLASH.在这里键盘按键操作和控制是直接由ARM来完成的,利用键盘扫描方式,通过定时器不断对键盘动作进行扫描,从而达到键盘控制操作的功能。本系统在调试过程中还提供了串口对外通讯,利用68013将串口转换为适合与上位机通讯的USB接口,实现与上位机通讯,达到利用电脑辅助系统调试的目的。
4.1.1软件功能设计
如上图4-2所示,功率分析仪的软件部分主要分作数据处理和测量(包含对采样数据处理、整合、计算以及对信号常用属性的测量)、液晶屏控制、键盘控制以及校准这几大部分,联机调试部分仅在本设计的试验、调试阶段使用。其中液晶屏控制和键盘控制是软件部分程序循环的重要组成部分。
4.1.2开发平台
本课题设计中采用的是32位ARM7TDMI-S CPU——LPC2138微控制器,程序开发平台选用了对该系列单片机支持较好的ADS1.2.
ADS1.2是一个使用方便的集成开发环境,全称是ARM Developer Suite v1.2。它是由ARM公司提供的专门用于ARM相关应用开发和调试的综合性软件。在功能和易用性上比较SDT都有提高,是一款功能强大又易于使用的开发工具。ADS囊括了一系列的应用,并有相关的文档和实例的支持。使用者可以用它来编写和调试各种基于ARM家族RISC处理器的应用。可以用ADS来开发、编译、调试采用包括C、C++和ARM汇编语言编写的程序。AXD提供给基于Windows和UNIX使用的ARM调试器。它提供了一个完全的Windows和UNIX环境来调试C,C++,和汇编语言级的代码。CodeWarriorIDE提供基于Windows使用的工程管理工具。它的使用使源码文件的管理和编译工程变得非常方便。但CodeWarriorIDE在UNIX下不能使用。
采用C语言编程具有以下一些特点:、
语言简洁,使用方便灵活。C语言的关键字很少,ANSI C标准一共只有32的关键字,9种控制语句,压缩一切不必要的成分。C语言的书写形式比较自由,表示方法简洁。
可移植性好。C语言是通过编译来得到可执行代码,便于移植。
表达能力强。C语言具有丰富的数据结构类型和多种运算符,可以根据需要采用整型、浮点型、字符型、数组类型、指针类型、结构类型、联合类型等各种数据类型来实现各种其它高级语言难以实现的复杂数据的结构运算。
表达方式灵活。利用C语言提供的多种运算符,可以组成各种表达式,还可以采用各种方法来获得表达式的值,从而使用户在程序设计中具有更大的灵活性。C语言的语法规则不太严格,程序设计的自由度比较大,程序的书写格式自由灵活。
本设计软件方案包括两个部分:本机程序和联机调试程序。本机程序是基于ARM Developer Suite v1.2软件编写的,联机调试程序是基于C++ Builder 6.0编写的。ARM主程序运行流程如下图4-3:
ARM主程序主要分为以下几个模块:
a)数据采集、处理:通道每个采样循环采集1K数据,ARM读取通道数据,在显示数据之前对采集数据进行相应处理、计算。
一个正常采样处理循环的主要流程如下图4-4所示:
b)数据显示:将数据处理后的数据和采集到温度值显示在液晶显示屏中(如果为调试方式,应同时将显示的数据传送给上位机)。
c)键盘扫描处理:采用阵列扫描。定时扫描方式,有按键输入则进行相应处理。
d)校准处理:主要包括通道校准、功率测量校准、频率测量校准、功率频响校准。
e)通讯模块:与上位机调试程序的接口。上层发送的校准表数据、参数等都是通过这个模块进行相应处理。该模块主要在调试阶段使用。[p]
4.2软件算法
4.2.1功率测量算法
根据AD8318器件的原理,其采用了对数放大器电路技术,经过平方单元输出的电压值和输入信号的功率实现一一对应,从而实现峰值测量,使测量结果基本上与波形无关。在功率计算中,关键部分是测量脉冲调制信号的峰值功率值。为了得到准确的峰值,脉冲信号的触发电平的选择直接影响的峰值测量的精度。在该设计中,触发电平的选择采用了预采样的原理。其思想为,在固定的小触发电平环境下获得粗略的峰值500个。对粗采到的峰值功率进行排序,选择其中的最大的前20个值进行平均。以平均值的1/2作为实际采样的触发电平的大小。在粗采样获得触发电平后,进行接下来的精采样。精采样以粗样采得到的触发电平作为触发值,同样采到500个功率值,并以粗采得到的功率值的4/5作为门限值,去掉低的上升沿和下降沿中的信号。将得到的信号再选取其中的3/5作为最后的峰值,进行平均为最终获得的功率值。
此时捕捉到的峰值仅仅是A/D采样得到的十六进制表示的电压值。通过此时电压和功率的对应关系拟合出电压值和功率值的曲线。拟合曲线根据不同衰减挡位进行拟合。同时为了方便用户能够自主调整示波显示,如前文所述,我们在通道中利用TLC5620向通道送入直流偏置调节,使用户可以通过键盘调整显示波形在显示屏的位置。所以为了不影响我们对AD8318输出电压的测量,所以根据TLC5620电压输出:
其中VREF是参考电平,按前文图解所示,VREF =2.5V;RNG为D/A输出范围选择,恒为0.按照以上公式在计算功率之前先将A/D采样得到的电压值减掉其中直流偏置调节部分,才得到真实的信号输入电压值并进入功率计算部分。
在功率测量中,我们经常用dBm来表示功率,由于我们使用的是50欧姆的匹配网络,所以,由峰值检波出来的电压值和dBm的转换关系满足下面的等式:
所以,通过等式可以以dBm的形式表示信号的功率值。
4.2.2频率测量算法
频率计数器程序包括两部分,一部分是频率计算。从计数器得到的频率为二进制表示的25位数。由于计数的门长是一秒。频率记数模块提供一个计数结束标志信号,ARM程序不断取检查该标志信号,当标志信号有效(为高)证明记数完成,再进行实际频率值的计算,避免出现记数过程与频率计算过程时序错误,造成测量值错误的情况。但由于计数门长(1s)相对于FPGA其他部分动作速度,显得过长,为使系统工作效率提高,故在软件设计中加入一个1s定时器,在测频开始后启动定时器,当定时结束时再搜索计数结束标志信号。如果使用直接搜索标志方式,所造成的整个系统暂停1s,等待标志信号出现。这势必造成功率分析仪对信号响应缓慢,不能满足即时响应的要求。通过频率计数器得到的数据通过四次读操作将频率值读入存储器中,通过公式
得到计数值。其中,fdata_1是计数器中的低8位字节,fdata_2是计数器中的中间8位字节,fdata_3为计数器的高8位字节,fdata_4为计数器的最高1位字节。计算得到的freq仅仅是计数器计数的结果值。由于信号在计数前经过了预分频,故,需要将freq乘以分频比N得到的是最终的频率值。
4.2.3参数测量
本系统中设计在精确测量计算射频脉冲峰值功率的同时,要将经检波输出的电压变化曲线想示波器一样,显示在液晶显示屏幕上供用户观测和分析。所以在参数测量部分我们很大程度上借鉴了示波器设计原理。将波形特征参数计算并且按需要把参数的值显示于屏幕菜单显示区,这些参数有峰峰值、平均值、有效值、周期,载波频率以及温度等。计算幅度类参数的基本依据是通道量程,计算时间类参数的基本依据是时基。每一个时基对应一个控制字,例如:100ns=4,250ns=5,500ns=6就是说100ns的时基对应的控制字是4,250ns的时基对应的控制字是5,500ns的时基对应的控制字是6.利用控制字的大小不同,来对端口进行操作。
参数测量都是通过对采集的数据进行分析来进行的,所以,参数测量的结果都源于在FIFO中存贮的采集到的波形数据,这就意味着,功率分析仪的设置情况对参数测量和结果会有影响,例如,如果时基速度设置得比较慢,比如说设置为1ms/格,而要对一个估计为50ns至100ns的上升沿进行上升时间测量,那么由于采集过程中时间分辨率的限制,我们就无法测出正确的结果,为了进行这项参数测量,我们应当把时基设置得足够快,例如设置为50ns/格以便以足够细的时间分辨率显示出被测波形的上升沿。菜单参数是在250个点的波形数据中计算的。
峰峰值计算方法:由于检波器是将射频信号功率值转换为电压幅值,所以我们对显示在液晶屏幕上的波形峰峰值的计算,实际是在计算输入信号在一定时间内的功率波动范围。Vtop(幅度顶值)和Vbase(幅度底值)就是脉冲波形的100%和0%电平值,是脉冲参数自动测量的核心。确定了Vtop和Vbase值,才能计算脉冲其它参数值。当脉冲顶部和底部有严重失真时,顶值和底值往往很难确定。有关脉冲参数标准文件推荐可用频数密度分布统计平均法或密度分布众数法确定Vtop和Vbase值。
Vtop和Vbase的频数直方图众数算法。算法的基本出发点是做波形样点幅度频数直方图。如图4-5所示,直方图纵坐标是数字化电平,横坐标是数字化电平出现的样点次数。在波形中间电平上方和下方,样点出现次数最多的量化电平值就分别是Vtop和Vbase。
在记录样点数据里搜索图3-2表示的Vmax,Vmin,等参量值。在此基础上计算脉冲幅度Vpp参数,算法是套用脉冲标准参数定义。但对于正弦波,波形的Vtop =Vmax,Vbase =Vmin,在实际测量过程中,不能发现密度分布众数点,自然取Vtop =Vmax,Vbase =Vmin。这样有,Vpp = Vmax -Vmin。
我们具体做法就是以点为单位计算,先比较求出点中的最大值和最小值,最大值和最小值之差为采样点的峰峰值,这个峰峰值的数值范围为0-255,没有单位,这种峰峰值体现不出量程的信息,只有把这个有采样点得到的峰峰值与当前的量程档位结合起来才可以表达出准确的波形信息。先初始化最大值为imax=0,最小值为imin=255.然后将数据依次读入,若读入的数据小于初始化的最小值255,则将读入的数据赋给最小值imin,依次用imin和读入的新数据比较,找出最小值。最大值的寻找方法是初始化最大值为0,然后将读入的数据赋给最大值imax,依次拿imax和读入的新数据比较,找出最大值。最大最小值之差即为所要的峰峰值最后将V pp×幅度÷25即为所要求的峰峰值。
平均值的计算方法:在这里,我们采取误差相对较小的计算方法即:平均值的计算是在判断波形数据中有没有半个以上的周期,若有,则用在半周期整数倍内的波形数据来计算参数,否则,就用屏幕显示的所有点的数据来计算。平均值的计算公式:
然后与采样值作为零点的零电平进行比较,若大于零电平认为平均值为正,若小于零电平认为平均值为负,最后与当前的量程结合起来得到波形的平均值信息。即将平均值×幅度÷25即为所要求的平均值。平均值对于我们功率测量的意义是代表在显示时间范围内功率变化的平均量。
有效值测量:在这里,我们有效值按下面的公式计算
x1直到xn为n个采样点与零电平之间的差值,当然也需要在判断奇异点并剔除奇异点后,再判断波形数据中有没有半个以上的周期,若有,则用在半周期整数倍内的波形数据来计算参数,否则,就用屏幕显示的所有点的数据来计算。有这个公式得到的RMS与量程结合起来可以得到波形的有效值信息。最后将rms×幅度÷25即为所要求的有效值。
4.2.4超差现象及原因
一般来说,被测信号的峰峰值在屏幕上的偏转格数应大于5div、小于8div.当信号偏转高度小于1格时,测量结果数据变化大,出现严重超差现象。当被测信号相对于功率分析仪测量范围很小时,在屏幕上的偏转高度就很小,极大的损失了仪器测量的动态范围,当然也损失了测量准确定。8位数的A/D转换器,在进行A/D转换时共执行8次比较,使用基准电压一次一次的逼近被测电压,最后给出测量结果。在第一次比较时,判断被测量处于哪一个1/2区间;第二次比较时,判断被测量处于哪一个1/4区间……,最后一次比较时,判断被测量处于哪一个1/256区间。因此,假设满量程为10.24div,那么基准电压的最小可分辨电压为40mV,满量程的1/256.以偏转1div为例,取样点为1div的信号,进行数字化,要逐次逼近8次。在第一次比较时,5.12div与1div比较,相差太大,减码,第二次比较时,2.56div与1div比较,仍相差太大,减码,第三次比较时,1.28div与1div比较,还是减码,只有第四次比较时才出现加码,相当于仪器的分辨力只有5bit.幅度域测量结果的相对误差的经验公式,折算成相对误差,大于3%,保证不了测试准确度要求。因此,不允许被测信号的峰峰值在屏偏转格数小于1.28div,这是为了保证测量结果的相对误差不大于 3.2%而提出的。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...