由幅值细分法可知,软件细分算法设计的关键问题是根据两路信号的比值对该点的相位角的正确定位。该点的位置有两种情况,一种是落在各象限的边界上,另一种是落在各象限之中。根据细分边界条件判断该点的采样数据是否发生在四个象限的分界线上,如果判断此次换向发生在象限的分界线上,则细分数为固定值,并且通过象限的正负关系就可以确定具体细分数值,不需要进行复杂的计算。如果该点不是发生在象限分界线上,则需根据象限正负关系判断换向发生的具体象限,不同象限对应不同计算公式。细分算法程序如下:
static int subdiv(int*input,int*input1)一设置指针形参用来读取两路波形采样值
{
程序初始化,定义各种变量标志字。
float ADSIN_X,ADCOS_X,ABSIN_X,ABCOS_X;一定义存储变量存放采样值与绝对值
int m=0,n=0,k=0,d=0,i=0;一设置标志字判断采样值正负
ADSIN_X=*input;-从缓存区读取sin采样值
ADCOS_X=*input1;-从缓存区读取cos采样值
ABSIN_X=fabs(ADSIN_X);-求取sin绝对值
ABCOS_X=fabs(ADCOS_X);-求取COS绝对值
根据采样值,写标志字
if(ADSIN_X>0) m=1; else m=0;
if(ADCOS_X>0) n=1; else n=0;
if((ABSIN_X-ABCOS_X)>0)k=1;else if((AB-SIN_X-ABCOS_X)<O) k=0;elsek=2;
根据标志字判断相位点的位置,根据相应位置不同公式求取细分值
然后利用公式R=N×ω+d×L求出任意一点谐振子的幅值并输出。式中N为整周期的累加计数值,W为光栅栅距,d为细分计数,L=ω/m,m为细分倍数。
4 结束语
设计的光栅地震检波器充分结合了FPGA的强大控制功能和DSP高速运算处理功能,实现了信号的同步采集、高倍细分和实时复现。减少了单一处理器的负荷,提高了系统的速度和稳定性,为光栅震动信号处理提出了一个新思路。由于硬件双口RAM接口时序复杂,成本高也会给系统带来不稳定性,因此本文在FPGA中设计了一软RAM。对于振动信号幅值的计算则是在对整周期的莫尔条纹进行计数的同时,利用软件细分法实时地计算出非整周期的莫尔条纹信号所代表的小数值,并实时将二者相加后乘以莫尔条纹当量(每个莫尔条纹所代表的位移量),即可得到信号的实时振动幅值。