汪浩,管国云,陈学英
(电子科技大学,四川成都610054)
摘要:针对当前测井仪器接收电路多通道、小体积、低功耗、高效率的设计要求,提出了一种基于FPGA的DPSD算法实现新方法。该方法采用一种简化的正交DPSD处理方法,方便电路和算法的实现;串行ADC采样数据直接进入运算,无需串并转换,在节省FPGA引脚的同时保证了算法效率;用移位累加操作代替乘法操作,极大地降低了算法对FPGA逻辑资源的消耗。在具体FPGA器件上的实现结果表明,该方法能够在不影响算法效率的情况下减少对FPGA引脚占用和近一半的逻辑资源消耗,满足预先的设计要求。
教育期刊网 http://www.jyqkw.com
关键词 :测井仪器;DPSD;FPGA资源消耗;串行ADC;移位累加
中图分类号:TN402?34 文献标识码:A 文章编号:1004?373X(2015)16?0129?04
收稿日期:2015?03?04
基金项目:国家自然科学基金项目(60931004)
0 引言
在医疗、军事、测井等诸多领域都需要对微弱信号进行测量[1?3]。对微弱信号测量的核心问题是在高噪声背景下,当待测信号有可能已被淹没在噪声中时,提取待测信号的幅度、相位等信息。以电法测井应用为例,测井仪器通常需要通过信号的激励发射、信号在地层中的响应、响应信号的检波接收等3个过程,完成对地层信息的初步采集。受限于地层响应的固有特性和仪器的发射功率,仪器接收到的响应信号往往十分微弱,有时甚至会低至几nV。此时,一般的检波方式难以精确提取接收信号中的幅度、相位等信息。
相敏检波利用互相关原理,能够十分有效地从噪声中提取出与参考信号具有相关性的待测信号的幅度和相位信息,同时忽略不相关的背景噪声的干扰[4]。数字相敏检波(DPSD)通过数字方式实现相敏检波,避免了由乘法器和积分器组成的模拟相敏检波器件的非线性和过载现象[5]。DPSD 算法利用FPGA,DSP 等数字器件实现互相关算法,因而具有无误差、正交性好、谐波抑制能力强等优点;且电法测井仪器中发射端的激励信号一般为几个固定频点[6],非常适合通过互相关算法对接收信号进行检波。鉴于上述诸多优点,DPSD算法目前在国内外诸多测井仪器中都得到了广泛的应用[7]。
FPGA具有并行性、速度快、稳定性高等优点,是实现DPSD算法的优选平台。DSP具有强大的浮点运算能力和系统控制能力,与FPGA结合往往能够最大限度地发挥两者的优势,实现高效、高精度的DPSD 算法。目前普遍的设计方式是采用并行或串行模/数转换器(ADC)完成信号采样,在FPGA中利用通用乘法器和累加器完成乘法和累加(乘累加)运算,再在DSP中完成浮点数运算和系统控制等操作。陈洋等提出了2种基于FPGA的DPSD算法架构[8],能够大大降低对DSP运算能力的要求,具有较高的灵活性。然而随着电法测井技术的不断发展,测井仪器往往会面临更高的测量速度和精度,更多的测量信号通道,以及更加严格的功耗控制等问题。以三分量感应测井仪为例,由于线圈系结构复杂,仪器往往需要同时对多路线圈信号进行测量。当面临多路信号的运算时,并行ADC势必会带来FPGA引脚资源的极大消耗,而更高引脚数的FPGA芯片封装往往又意味着更大的功耗;串行ADC需要在FPGA内部完成串/并转换操作,这会占用FPGA 时钟资源,降低数据吞吐速率;并且FPGA实现多路通用乘法器会造成较大的逻辑资源消耗,分时复用同样会对数据吞吐速率造成不良影响。为此,本文提出了一种基于FPGA 的DPSD 算法实现新方法。该算法采用移位累加器取代乘法器,无需对AD数据进行串/并转换,因而可以在获得较高的数据吞吐率的同时大大减少对FPGA 引脚和内部逻辑等资源的消耗。
1 DPSD 算法原理
1.1 相敏检波原理
传统的模拟相敏检波利用模拟乘法器和积分器实现待测信号和参考信号的互相关算法,如图1所示。
图1中,x(t) 为待测信号s(t) 与系统噪声n(t) 的叠加,表达式为:
x(t) = s(t) + n(t) = As cos(ωt + θ) + n(t);
r(t)为与待测信号s(t)同频率的参考信号,在r(t)与s(t)的相位关系不明确的情况下,欲测得s(t) 的幅度As 和相位差θ ,需要采用两组正交的参考信号r1(t) 和r2 (t)同时完成图1中相敏检波流程。这里假设参考信号幅度为1,相位为0,即:
r1(t) = cos(ωt), r2 (t) = sin(ωt)
x(t)与r1(t)进行互相关运算,即:
若认为噪声为随机噪声,与参考信号无相关性,则只要积分时间T足够长,上式中系统噪声n(t)的影响可以被消除,得:
同理,得:
显然,结合R1 和R2 即可求得待测信号的幅度As 与相位θ 。
1.2 DPSD算法实现
DPSD是上述模拟相敏检波的数字实现方式。用数字方式描述互相关算法的表达式为:
从式中可以看出,DPSD 算法需要对待测信号进行模/数(A/D)转换后再完成两者的乘法和累加操作。在这个过程中,诸多因素都可能对DPSD算法的精度造成影响。张新发等分析了测量时间对DPSD 算法精度的影响[5],得出的结论为算法输出信噪比与测量时间成正比,且在满足乃奎斯特采样率的前提下,采样频率对信噪比无直接影响。但若考虑到电路中带通滤波器性能和采样率不足可能带来频谱混叠,和高采样率对抑制ADC 量化误差的积极作用[9],适当提高采样率对DPSD算法精度不无裨益;同样地,更大的A/D 转换位宽也能降低量化噪声,有助于提高算法精度。
综合上述因素,本设计采用16 倍待测信号频率的采样率实现算法设计,待测信号频率为20 kHz,ADC有效量化位宽为14 b。
2 基于FPGA 的DPSD 新算法实现
和模拟相敏检波一样,DPSD 算法通常也需要采用正交化的实现方式来测得待测信号的幅度值和相位差。基于FPGA的正交DPSD算法的实现方式虽然有多种[2,10?11],但其无一例外地均需要在FPGA内部采用乘法器和累加器来实现DPSD 算法的乘累加操作。本节着重分析了一般DPSD 算法中乘累加操作实现方式的不足,并提出了一种改进的实现方式。
2.1 基于通用乘法器、累加器的DPSD算法实现
如前所述,一般基于FPGA 的DPSD 算法都是采用在FPGA 内部实现通用乘法器和累加器的方式来进行乘累加操作。
图2分别给出了在使用并行和串行ADC 时,FPGA内部实现乘累加算法的原理框图。不难看出采用并行ADC 时,算法的效率更高,但会占用更多的FPGA 引脚资源。尤其是当需要实现多路信号的测量时;并行ADC 接口对FPGA 引脚的占用量往往是电路难以承受的。若采用更多引脚的FPGA 芯片又可能会导致电路体积、功耗的增加等问题。串行ADC 能够大大减少对FPGA引脚资源的消耗,但FPGA内部的串/并转换过程会占用系统时钟周期,影响算法效率。最主要的是,上述两种实现方式都需要在FPGA 内部采用通用乘法器实现采样数据的乘法操作,而在FPGA中综合通用乘法器会消耗较多的逻辑资源。如何兼顾并行A/D 算法效率高和串行A/D 引脚占用少的优点,同时减少对FPGA逻辑资源的消耗,正是接下来要解决的问题。
2.2 改进的串行乘累加算法
本文提出了一种新的串行正交DPSD算法,并着重对采用串行ADC 接口是FPGA 内部的乘累加算法进行了改进。具体地:
(1)待测信号和参考信号直接与FPGA 内部正、余弦函数表完成正交的DPSD算法,计算结果再通过DSP等浮点运算设备完成信号幅度值和相位差的计算;
(2)在上一点的基础上,采用查找表结合移位累加算法替代通用乘法器完成乘法运算,减少了FPGA逻辑资源的消耗;
(3)每一位A/D串行数据都可以独立参与运算,无需对串行A/D数据进行串/并转换,在节省FPGA引脚占用的同时提高了算法效率。
如图3所示,A/D采样数据x[n]高位在前,串行输入FPGA 内部移位累加器模块,完成与内部sin(正弦)和cos(余弦)函数表的乘法运算。具体实现方式为:x[n]当前某一位数据对sin和cos系数进行选择,x[n]当前位为0则忽略,为1则按当前位数对sin和cos系数进行加权处理(移位);不同位数权值不同,加权处理后的sin 和cos系数相加,当最后一位x[n]的串行数据输入完成后即得到完整结果(累加)。上述过程可表示为:
本设计采用ACTEL公司型号为A3P250的FPGA作为算法实现平台。该FPGA芯片基于FLASH架构,具有掉电不易失、功耗低、上电启动速度快等优点。并且FLASH 架构较SRAM 架构而言在高温和复杂电磁环境下具有更高的可靠性,因而被广泛地应用于军工、航天、测井等领域。
A3P250 内部具有大小为1 Kb 的FLASHROM 可供用户自行配置。本设计将sin和cos函数表存储在内部FLASHROM 中,有利于充分利用FPGA 硬件资源,进一步减少对可编程逻辑资源的消耗。具体实现时,AD转换时钟CNVST在FPGA内部经过计数后,其计数结果对FLASHROM 进行寻址;FLASHROM 输出对应的sin 和cos系数到移位累加模块,进而完成与A/D 串行数据的乘法运算。SCLK为ADC转换数据的串行输出时钟,可以通过系统时钟分频得到。图4描述了更加具体的移位累加模块内部流程图。
图4中,移位累加模块同时完成x[n]与sin,cos系数的移位乘法,SCLK同时作为时钟信号输入到移位累加模块。data_sec 模块为同步数据选择模块,当x[n]当前位为1时,模块将对应的sin和cos系数锁存到模块输出端;反之,输出为零。数据选择模块结果输入到同步加法模块,加法模块与一位左移模块完成图中所示的迭代结构。SCLK 同时输入SCLK_CNT 模块进行计数,当计数值达到ADC串行数据位数时,模块输出“移位累加完成”信号shift_done,此时加法器的相加结构即为多次移位累计运算的完整结果。图4中,x[n]分别与sin,cos系数完成上述移位乘法,得到两组正交的运算结果I 和Q。在图3中可以看到,I 和Q 分别送入累加器,最终完成正交DPSD算法中的乘累加操作。如前所述,DSP具有强大的浮点运算能力,与FPGA结合可以同时发挥两者的优势,提高算法效率。本设计中的I 和Q 数据送入DSP 中完成浮点运算,最终计算出待测信号的幅值和相位。
3 实验结果
本算法结构最大的优势在于大大减少DPSD 算法了对FPGA 逻辑资源的消耗;并且由于不需要先完成ADC 数据的串并转换再进行乘累加运算,理论上算法的吞吐率可以达到ADC 串行时钟速率和FPGA 系统时钟速率两者之间的较大值。本设计在A3P250上分别用第2.1节“通用乘法器+累加器”的实现方式和第2.2节中改进的串行移位累加法实现了一路正交的DPSD运算,软件设计平台为Libero IDE v9.1,并着重对比了两者对FPGA逻辑资源的消耗情况,如表1所示。
从表1中可以看出,同样实现一路正交的DPSD 运算,本文提出的实现方法较传统在FPGA逻辑资源消耗方面具有很大优势,节省了近一半的逻辑资源。在某三分量感应测井仪的实际应用中,测控电路中FPGA芯片为上述A3P250,改仪器需要同时完成5 路ADC 数据的DPSD 算法。此时,采用传统方式实现方式的FPGA 逻辑资源已经无法满足设计需求,而采用本文提出的实现方式则可很好地应对这种情况。
4 结语
本文结合当前电法测井仪器的发展现状,有针对性地提出了一种基于FPGA的DPSD算法实现新方法。该方法可以对串行ADC 的输出数据直接进行运算,无需在FPGA 内部完成串/并转换,提高了算法效率;采用移位累加的处理方式实现乘法操作,省去了通用乘法器,使得FPGA 逻辑资源消耗节省了近一半;使用内部FLASHROM存储sin和cos函数表,充分利用FPGA芯片硬件资源的同时进一步减少了逻辑资源的消耗。
需要指出的是,本设计采用的sin和cos系数为数值范围从-1~+1的有符号数,这使得移位累加的过程实际上较图4 所示更为复杂。如对sin 和cos函数表添加直流偏置,使得系数为全正的无符号数,运算过程可得到简化。由DPSD算法原理可知,这样并不会影响运算结果,并且算法的资源消耗应该会较表1有进一步减少。
综上所述,本文提出新方法能够在提高测井仪器接收电路DPSD算法效率的同时节省FPGA引脚和内部逻辑等资源,对其他涉及基于FPGA 的DPSD 算法实现的领域同样具有借鉴意义。
教育期刊网 http://www.jyqkw.com
参考文献
[1] 王晓俊,周杏鹏,王毅.精密阻抗分析仪中数字相敏检波技术研究与实现[J].仪器仪表学报,2006,27(6):592?595.
[2] 何为,何传红,刘斌.电阻抗成像中高速高精度数字相敏检波器设计[J].重庆大学学报:自然科学版,2009,32(11):1274?1290.
[3] 刘升虎,邢亚敏.DPSD技术再随钻电阻率测井中的应用[J].测井技术,2008,32(1):69?71.
[4] 孙志斌,陈佳佳.锁相放大器的新进展[J].实验技术,2006,35(10):879?884.
[5] 张新发.DPSD 算法性能研究及参数选择[J].吉林工业大学学报,1998,28(3):40?45.
[6] 卢涛,朱柯斌,孙向阳.随钻电磁波测井宽带信号设计和测井响应分析[J].测井技术,2014,38(1):80?85.
[7] 管国云,汪浩,聂在平,等.一种消除感应测井直耦信号的自动调节装置:中国,103885090[P].2014?06?25.
[8] 陈阳,聂在平.DPSD 算法的FPGA 高效实现[J].测井技术,2013,37(4):421?425.
[9] AZIZ P M,SORENSEN H V,VN DER SPIEGEL J. An over?view of sigma ? delta converters [J]. IEEE Journals & Maga?zines,1996,13(1):61?84.
[10] 杨平.一种新的数字式正交相位检波器[J].上海航天,1994(3):14?17.
[11] 梁世盛,乔凤斌,张燕.基于FPGA的数字相敏检波算法实现[J].自动化仪表,2013,34(11):13?16.