您的位置 首页 电路

运用FPGA完成高效并行实时上采样

采样就是采集模拟信号的样本。通常采样指的是下采样,也就是对信号的抽取。其实,上采样和下采样都是对数字信号进行重采,重采的采样率与原来获得该数字信号的采样率比较,大于原信号的称为上采样,小于的则称为下采

采样便是收集模仿信号的样本。一般采样指的是下采样,也便是对信号的抽取。其实,上采样和下采样都是对数字信号进行重采,重采的采样率与本来获得该数字信号的采样率比较,大于原信号的称为上采样,小于的则称为下采样。上采样是下采样的逆进程,也称增取样或内插。

本文介绍一种运用Virtex-6器材和免费WebPACK东西完结实时四倍上采样的办法。

许多信号处理运用都需求进行上采样。从概念上讲,对数据向量进行M倍上采样的最简略办法是用实践频率重量数的(M-1)倍个零填充数据向量的离散傅里叶变换(DFT)[1],然后将零填充向量转换回时域[1,2]。但这种办法核算量很大,因而不能在FPGA内部高效完结。在本文介绍的高效并行实时上采样电路中,每个ADC时钟可发生M个上采样值,其间M是所需的上采样倍数。在咱们的Virtex-6 XC6VLX75T FPGA完结计划中,上采样倍数M为4,可以作为较遍及办法的一个实例。

咱们并行上采样办法的整体概念源于某些作者所称的“窗口SINC插值”,这种办法在文献资料[3,4]中有一些十分精彩的专文介绍。

为了更好的阐明,现以图1中所示的16MHz模仿信号为例。该信号的表达式为:

等式 1

图1 – 展现上采样进程的16MHz信号实例

假如用12位ADC以80MHz的频率对图1所示的信号进行采样或量化,输入规模为ADC完好输入规模的97.7%,则每个信号周期只能采样五次,发生的样本数据序列如图2所示。假如对该示例数据序列进行四倍上采样,则有用采样率为320MHz,每个信号周期可以供给20个样本。尽管您可以运用本文介绍的办法进行更高倍数的上采样,但为了阐明起见咱们仍是运用M=4的上采样。

图2 – 本图是12位ADC,输入规模为ADC完好输入规模的97.7%,用80MHz或每周期五次频率对图1的模仿信号采样得到的样本数据序列实例。

当然,还可以经过直接在ADC生成的数据序列的每个实践样本值之间刺进(M-1)个零来获得上采样数据向量及所需的样本数(公认作用较差)。该“零刺进过程”对应于仿制频域中的原始信号频谱。经过对得到的“零填充”时域信号进行低通滤波,就能去除频域中所需频谱的“复本”,然后获得上采样数据向量。

FIR滤波器规划

频域中的抱负(砖墙式)低通滤波器相当于在时域顶用无限域Sinc函数作卷积。因而为近似化所需的卷积运算,可让前述的零填充时域信号经过速率为ADC时钟频率M倍的对称低通FIR滤波器,该滤波器拓扑结构与图3所示的示例31抽头FIR滤波器相同。用这种办法,咱们可以实时生成上采样数据向量。图3中的R1、R2、…、R31代表速率为ADC时钟频率M倍的寄存器,C0、C1、…、C15代表FIR滤波器的系数。

图3 – 当滤波器作业在根本ADC时钟频率的M倍频率时,零刺进过程中运用31抽头FIR滤波器每时钟周期可生成一个上采样数据值

需求阐明的是,图3所示的FIR滤波器中的大部分寄存器在任何特定时钟距离内都会包括0,而非实践的样本数据。以M=4为例,当R1包括实践样本数据时,R2、R3和R4将包括0。当R1包括实践样本数据时,R5、R9、R13、R17、R21、R25和R29也将包括实践样本数据,其他的寄存器将包括0。鄙人一时钟距离中,R2、R6、R10、R14、R18、R22、R26和R30将包括实践样本数据。

如图3所示,因为在经过FIR滤波器的每M个样本中有M-1个样本为0,就M=4、运用31抽头FIR滤波器的状况而言(如图4所示),您可以将滤波器分解开,并行发生M个输出。选用这种完结计划,并行FIR滤波器的作业频率为ADC的根本时钟频率,而非ADC时钟频率的M倍。

图4 – 经过在任何给定时钟周期内对图3中每四个寄存器中仅有一个包括非零数据的寄存器进行调查,可以拆解该滤波器,再让滤波器在以根底ADC时钟频率运转的状况下并行

如图4所示,您可以设定窗口SINC函数的系数Cw(n)来最大极限地削减完结该FIR滤波器所需的乘法器数量。关于T个抽头的低通FIR滤波器而言,可经过下式得出最佳系数:

等式2

这儿的汉宁窗系数的核算办法为:

等式3

窗口SINC函数系数Cw(n)随即经过对应的C(n)和H(n)值相乘即可得到,如:

等式 4

在M=4时,假如按上面介绍的办法核算31抽头FIR滤波器的系数,令C0=1.0,C4=C8=C12=C15=0,则无需运用与图4中这些系数有关的9个乘法器。此外,因为生成UPSAMPLED VALUE(1)每个系数会运用两次,用户可以“折叠”该完结计划,比如在相乘之前让R1和R8相加,这样就可以去掉四个乘法器。终究得到的规划仅运用18个乘法器每时钟周期就可发生四个上采样值。需求留意的是按上文介绍的规划办法,每个原始样本值会原样从并联滤波器输出。

咱们运用图5所示的可归纳VHDL[5]模型评价图4所示电路的功能。该VHDL完结计划假定样本数据为12位,即可能来自美国模仿器材公司的AD9670八通道超声前端%&&&&&%的数据。滤波器系数表达为25位定点常数,以与集成到FPGA芯片上的乘法器输入位数相匹配。来自ADC的输入样本先馈入与输入引脚相连的寄存器(图4中的R1),上采样输出值则运用与输出引脚相连的寄存器。寄存器R2到R8属芯片内部寄存器。寄存器R1到R8成心设定为15位宽度,以便为归纳后逻辑供给履行核算所需的动态余量。该规划能查看溢出或下溢,还能将成果胁迫在有用规模以内。

图5 – 该VHDL源代码运用单进程和25位定点系数完结图4的滤波器拓扑结构。

无需流水线化

图6显现的是运用免费的WebPACK东西中供给的14.7版ISim仿真器对该VHDL模型进行仿真并将馈送图2中的采样/量化12位数据序列后得到的上采样数据序列。每个原始的12位样本均坚持不变,原因上文已述。原始波形中每个实践样本之间刺进了三个新样本。

图6 – 该图表显现的是VHDL模型生成的上采样数据序列

核算所得(上采样所得)值与原始模仿信号中抱负值之间最大的差错为整个规模的0.464%,平均差错为整个规模的0.070%。当然因初始量化过程原因,在采样/量化12位源矢量数据值中存在1/2 LSB的差错(合整个规模的0.012%)。

布局布线规划运用19个DSP48E1模块,但占用的Virtex-6 Slice资源缺乏1%,无需流水线化即可运转在107MHz下。

咱们运用WebPACK东西14.7版在XC6VLX75T-3FF484 Virtex-6 FPGA上完结这一上采样器。布局布线规划占用该器材中288个DSP48E1模块中的19个,但运用的Slice资源缺乏1%。终究得到的上采样电路可以运转在107MHz下。无需让滤波器流水线化即可完结这一功能。此外,咱们还开发出了用流水线完结的版别,可以作业在217MHz以上。

尽管XC6VLX75T-3FF484是Virtex-6系列中的最低端成员,但芯片上仍集成有288个带有25×18位乘法器的DSP48E1模块。换言之,有理论上足以完结15个图4所示的并行上采样FIR滤波器。咱们制造的原型环形阵列超声体系运用了八套以80MHz的频率运转在XC6VLX75T FPGA上的上采样器,在波束成形之前对来自八通道Analog Devices AD9670超声前端芯片的数据进行上采样处理。在该体系中,上采样器按仿真猜测的办法运转,在以AD9670 ADC的根本时钟频率80MHz运转的状况下,能运用上采样到320MHz的数据实时完结波束成形。

最大型Virtex-6 FPGA器材XC6VSX475T包括有2,016个25×18位乘法器,有理论上一个芯片就可以完结106个图4所示类型的上采样滤波器。

只需滤波器运用本文介绍的高效并行拓扑结构进行规划,就可以运用完结在作业频率为107MHz的XC6VLX75T-3FF484 FPGA上的FIR滤波器完结M=4倍的实时上采样。原始数据样本将原封不动经过滤波器,并行发生(M-1)=3个上采样值。这种简明的FIR滤波器规划办法无需凭借杂乱精细的滤波器规划东西就能供给优异的成果。本文介绍的思路稍加拓宽,就可以运用更大的因数进行上采样,或者是运用抽头数更多的FIR滤波器下降核算出的上采样值的差错。

这种简明的FIR滤波器规划办法无需凭借杂乱精细的滤波器规划东西就能供给优异的成果。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/280590.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部