查看完整版本: 基于FPGA过采样技术及实现

admin 发表于 2015-4-27 17:36:36

基于FPGA过采样技术及实现

 过采样技术是数字信号处理者用来提高模数转换器(ADC)性能经常使用的方法之一,它通过减小量化噪声,提高ADC的信噪比,从而提高ADC的有效分辨率。过采样技术不但没有增加额外的模拟电路,而且由于提高了有效分辨率还能简化模拟电路,并且简单易行,因而被数字信号处理实践者广泛应用于测控领域。
  过采样技术的一个关键环节是采样后的低通滤波器(LPF, Low Pass Filter),没有这个滤波器,过采样产生不了任何效果。然而,许多应用中,需要测量多种信号,数据采集部分必须具有自适应特性,即根据输入信号的频带能自主选择下抽取率,过采样后低通滤波器的特性也应随之变化。因而,有必要设计一款参数可变的低通滤波器来满足这种需求。
  过采样技术中的低通滤波器
  过采样技术的低通滤波器要同时完成量化噪声的滤除和减采样时抗混叠滤波的功能。过采样技术能较完美实现其目标的滤波器参数满足:通带截止频率,通带衰减Rc=-3dB,阻带截止频率,滤除量化噪声需要的阻带衰减为


  其中,M为过采样率,N为下抽取率,B为ADC原有的分辨率,B0为提高的分辨率,N=4B0,并且通常有 。而滤波器的类型为FIR滤波器,其阶次与下抽取率成正比。
  可变参数低通滤波器的设计
  由2节可知,过采样中的滤波器特性由ADC本身的分辨率和下抽取率决定。下抽取率变化,滤波器参数会发生改变,滤波器则必须重新设计。从FIR滤波器的设计流程来看,截止频率变化后,滤波器系数会随之变化。如果获得截止频率后再计算滤波器系数,会带来大量运算量,因为每计算一组滤波器系数都要进行一次IFFT(Inverse Fourier Transform)。通常的做法是在PC机上计算出系数后,做成查找表。由于下抽取率变化,这样的表会有很多张,会消耗大量存储空间。而本小节采用的方法,避免了这种情况,选取一组合适的滤波器系数,便可完成多种下抽取率的滤波。
  滤波器系数决定滤波器特性,理论上讲,只用一组滤波器系数是不能实现可变参数滤波器的。由2节可知,下抽取率N与滤波器截止频率成反比,与阻带衰减成正比,与滤波器长度成正比。假设下抽取率为N0时滤波器系数h(n),n=0,1,2…L-1,我们怎样通过h(n)这组基准系数来获得N不等于N0时的滤波器系数呢?
  当N<N0时,只要按N0与N的比例,跳点取滤波器系数即可。例如:当N0=KN时,下抽取率为N时的滤波器系数, n=0,1,2…L/K-1。为叙述方便,称N0 对应的滤波器为原型滤波器,N对应的为抽取滤波器。图1为滤波器系数抽取前后的幅度特性。图1中的实线为原型滤波器幅度特性,L=4N=4&bull;46,虚线为在原型滤波器系数基础上进行4倍下抽取后的幅度特性,点划线为原型滤波器系数进行16倍下抽取后的幅度特性。可以看出,抽取滤波器的阻带衰减和阻带截止频率均发生了变化,并且变化趋势与设计要求一致,因此,适当调整参数便能满足设计要求。


下抽取率的情况实现较为容易,然而当时,滤波器系数大于基准系数,此时怎样设计滤波器来满足要求呢?我们采用原本用来实现高计算效率的窄带低通滤波器的插值FIR滤波器,来实现低通滤波器参数的变化。
  插值FIR滤波器是在L抽头、非递归线性FIR滤波器的性能基础上,将L抽头的FIR滤波器各个抽头之间的一个单延迟,用K个单位延迟代替而设计形成的,K为扩展因子,是一个整数,如图2所示。原来的FIR滤波器称为原型滤波器,具有扩展延迟的滤波器称为整形子滤波器。


  原型FIR滤波器在z域的传递函数为:


  式(3)中,Lp为hp的长度。则整形子滤波器传递函数为:


  其扩展冲激响应长度为,反映到时域上,整形子滤波器系数为:


  图3给出了K=3个单位延迟在频域的影响。时域滤波器冲激响应扩展K倍,导致频域幅度响应压缩K倍,如图3(b)。图中那些以1/K整数倍为中心、重复出现的的通带称为虚像。只要将这些虚像滤除,就能获得衰减特性不变,截止频率为原滤波器截止频率1/K的滤波器,恰好符合过采样后低通滤波器截止频率与下抽取率成反比的特性,因而可用于过采样中可变参数滤波器的设计。此处,滤除虚像的滤波器称为压制虚像滤波器。


  插值滤波器其实是整形子滤波器和压制虚像滤波器的级联。整形子滤波器很好实现,只要在原型滤波器系数的基础上按要求插入零值即可,下面主要看压制虚像滤波器的设计。当下抽取率大于一定值时,低通滤波器为窄带滤波器,则整形滤波器的虚像也为一窄带。平均滤波器的幅度响应在1/L的整倍数处为一窄带陷波器,可以滤除整形滤波器产生的虚像。虚像出现在1/K的整倍数处,因此,只要使得作为压制虚像滤波器的平均滤波器的长度满足,,便可以滤除虚像。
图4为时,原型滤波器、整形滤波器、压制虚像滤波器和最后获得的插值滤波器的幅度响应,原型滤波器为FIR切比雪夫滤波器。从图4(a)可以看出,虚像出现的位置与平均滤波器的零点位置对齐,从而抑制了虚像。由于太小,平均滤波器的旁瓣宽度较大,陷波带大于虚像带宽,导致虚像的抑制没有达到滤波器要求的阻带衰减。但是,虚像所处频率与过采样频率相当,此处出现的噪声仅为量化噪声,此处衰减特性只要将其抑制到ADC分辨率提高后的量化噪声水平,即满足过采样的要求。例如:ADC分辨率经过采样后提高6位,其要求的衰减特性为-36.1dB,而图4(a)插值滤波器虚像处的衰减为52dB,足以满足大部分设计的要求。


  插值滤波器在过采样中的实现的流程为:在原型滤波器进行K倍内插后,再做K点的平均滤波即可。看上去需要两步才能实现低通滤波,实际上,由于整形和平均滤波的特性,我们可以一步完成滤波。由式(3)可知,整形子滤波器的输出为:

为下抽取及计算方便,将整形滤波器的长度从,改为KLp 。由于FIR滤波器系数的不敏感性,这样做并不会影响滤波器特性。则插值滤波器的输出为:

由式(4-9)可知,插值滤波器输出是将K点值平均后,再与原型滤波器系数加权平均的结果。可以看出,实现方式很简单。
  过采样技术在FGPA的实现
  一些通用的数据采集模块需要实现多种信号的测量,注重模块的通用性,因此,放大、滤波等信号预处理电路这样的个性事物是不被允许存在的。将过采样技术应用于通用模块,省略信号预处理电路,根据信号特点,选取合适的过采样率和下抽取率,平衡最终采样率和分辨率,来获取要求的测量精度。根据通用模块的要求,设计了图5所示结构来实现通用模块的过采样技术。


       由图5可知,FPGA实现了以下功能:产生ADC时序,控制ADC的采样频率;以ADC转换结束标志位为触发信号,读取ADC的转换数据;为滤除ADC输出信号的量化噪声和减小数据量,实现低通滤波和减采样模块;配置一块ROM区,用于存储滤波器系数,用于滤波器的实现;为与外部处理引擎进行通讯,实现UART接口协议;为使个模块协调工作,采用锁相环产生不同频率的时钟。
  而模块的工作流程为:处理引擎将待测信号的频率通过UART传给低通滤波和减采样模块,该模块根据该频率设置滤波器参数和减采样的下抽取率;ADC时序模块产生CNVST,启动ADC进行采样,BUSY信号触发数据读取模块将数据读入;低通滤波器和减采样模块根据设置好的参数和下抽取率对读入的数据进行处理,处理完毕后,再将数据通过UART传到处理引擎做后续处理。
  模块中的ADC选用的是ADI公司的AD7674,18位、800KSPS逐次逼近型模数转换器,具有较高的数据通过率。支持差分输入模式,其内部采样保持电路的负载可调,5V单电源供电。器件内部还集成了转换时钟、基准缓冲器及错误校准电路,并具有功能强大的串口和并口,与3V和5V电平兼容。而FPGA则选用的是Altera CycloneⅡ-EP2C8Q208C8,包括5个部分:可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源和底层嵌入功能单元。
  基于AD7674和EP2C8,该模块设计获得的相关参数为:
  (1) 下抽取率,过采样率,由于ADC的最高采样频率为800KSPS,则该模块可用于0Hz -32kHz信号的测量;
  (2) ADC的本身分辨率为18位,过采样后达到的最大分辨率为25位;
  (3) ADC基准电压为4.096V,最高分辨率时可分辨的信号大小为:


  (4) 为使ADC达到25位分辨率,除满足下抽取率N=47外,还必须保证低通滤波器的阻带衰减符合过采样的要求。由式(1)和(2)可知, 阻带衰减R0=64.3dB。使用切比雪夫最佳逼近法获得滤波器系数,通过计算及考虑到设计余量,得到滤波器长度L=4N,N=47时,实际阻带衰减为R0=75dB;利用MATLAB软件中的函数CHEBWIN(L,R0)获得滤波器系数;将滤波器系数量化成8位,并进行16倍下抽取,抽取后的值对应为N=45 时的滤波器系数。将其存入FPGA的ROM区,以此为基准得到其他下抽取率的滤波器系数。

      (5) 实现该模块消耗的FPGA资源为:7275个LE(88%),65544个memory bits(40%),24个9位乘法器(67%),27个I/O口(20%)1个PLL(50%)。
  实验结果和分析
  为考察模块设计的正确性,对其进行了测试。主要分为两个部分。第一部分为低通滤波器的测试。首先以N=1024 为例,验证实际滤波器的幅度特性是否与设计的一致,然后验证可变参数低通滤波器设计的正确性。第二部分则以心电信号为例,验证模块分辨率与过采样率的关系。
  图6为N=1024时,MATLAB设计的滤波器幅度特性和实测的滤波器幅度特性的比对。测试方法为:ADC的采样率为800kHz,下抽取率为1024,最终采样率为 ;给系统加入3V不同频率的正弦波,频率范围为5Hz-360Hz;获得的数据传到PC上,用MATLAB计算各组数据的FFT获得幅度值;假设5Hz的正弦波经过系统后幅度不发生衰减,以此为基准计算各频率点的衰减情况。由图6可知,实测的幅度特性与设计的基本一致。不足之处是,受采样率的限制,被测信号频率不能大于采样率的一半,我们只能得到部分采样点的衰减情况。


  图7是可变参数滤波器在不同下抽取率时的幅度特性。为验证改变参数时滤波器是否正常工作,给系统输入信号为2V、20Hz正弦波和0.95V、90Hz正弦波的加性信号,ADC分别以采样率12.5kHz、50kHz、200kHz、800kHz对加性信号采样,下抽取率依次为64、256、1024、4096,则四组数据的最终采样率均为195Hz。以20Hz正弦波为基准,验证90Hz正弦波的衰减情况。图7中每条曲线上的黑点对应的是90Hz的衰减特性,分别为:15.345dB、15.504 dB、15.54 dB、14.958 dB。图8是信号经过系统后的频谱分析。由图8可知,90Hz的正弦波明显得到了抑制,其衰减分别为:16.896 dB、14.408 dB、17.345 dB、14.804 dB,实测的数据与设计的基本一致,说明各参数下的滤波器能正常工作。另外,图8中三个小的尖峰,分别为50Hz干扰和20Hz的谐波。

http://www.eefocus.com/include/picture/500/400/data/11-03/20755210020302/1299769624_2037b47d.jpg

  图9是系统测得的实验室某同学的心电波形。由图9可知,随着下抽取率的增大,心电信号的细节越来越清楚,即分辨率越来越高。因此,随者下抽取率的增大,系统的分辨率是增加的。


   综上所述,基于过采样技术的通用数据采集模块可以根据被测信号的不同,改变自身的参数,达到测量要求,同时,也完成了可变参数低通滤波器的硬件实现。

  结语
  为减小通用数据采集模块的体积和成本,将过采样技术应用于模块的ADC中。由于通用模块测量多种信号,为达到过采样对低通滤波器的要求,设计了可变参数低通滤波器。该滤波器简单易行,并且计算效率高,在本文设计的通用模块中,每获得一个采样点,最多只需进行4次18bits×8bits的乘法运算。
  此外,本文从硬件上实现了该模块的设计,并对模块进行了测试,最后以心电为例,验证了参数的可变性。
页: [1]
查看完整版本: 基于FPGA过采样技术及实现