关键字:FPGA 上采样 FIR滤波器
采样就是采集模拟信号的样本。通常采样指的是下采样,也就是对信号的抽取。其实,上采样和下采样都是对数字信号进行重采,重采的采样率与原来获得该数字信号的采样率比较,大于原信号的称为上采样,小于的则称为下采样。上采样是下采样的逆过程,也称增取样或内插。
本文介绍一种使用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)个零来获得上采样数据向量及所需的样本数(公认效果较差)。该“零插入步骤”对应于复制频域中的原始信号频谱。通过对得到的“零填充”时域信号进行低通滤波,就能去除频域中所需频谱的“复本”,从而获得上采样数据向量。无需流水线化
图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个带有25x18位乘法器的DSP48E1模块。换言之,在理论上足以实现15个图4所示的并行上采样FIR滤波器。我们制作的原型环形阵列超声系统使用了八套以80MHz的频率运行在XC6VLX75T FPGA上的上采样器,在波束成形之前对来自八通道Analog Devices AD9670超声前端芯片的数据进行上采样处理。在该系统中,上采样器按仿真预测的方式运行,在以AD9670 ADC的基本时钟频率80MHz运行的情况下,能使用上采样到320MHz的数据实时完成波束成形。
最大型Virtex-6 FPGA器件XC6VSX475T包含有2,016个25x18位乘法器,在理论上一个芯片就可以实现106个图4所示类型的上采样滤波器。
只要滤波器使用本文介绍的高效并行拓扑结构进行设计,就能够使用实现在工作频率为107MHz的XC6VLX75T-3FF484 FPGA上的FIR滤波器完成M=4倍的实时上采样。原始数据样本将原封不动通过滤波器,并行产生(M-1)=3个上采样值。这种简明的FIR滤波器设计方法无需借助复杂精密的滤波器设计工具就能提供优异的结果。本文介绍的思路稍加拓展,就可以使用更大的因数进行上采样,或者是使用抽头数更多的FIR滤波器降低计算出的上采样值的误差。
这种简明的FIR滤波器设计方法无需借助复杂精密的滤波器设计工具就能提供优异的结果。
参考资料:
1.A.V. Oppenheim、R.W. Schafer,《离散时间信号处理》,Prentice Hall,新泽西州恩格尔伍德克利夫斯,1989年。
2.H. Stark、J.W. Woods、I. Paul,《使用直接傅里叶逆转换和最优插值法对计算机体层摄影术进行探讨》,IEEE生物医学工程通讯第28期,496到505页(1981年)。
3.R.W. Schafer、L.R. Rabiner,《插值的数字信号处理方法》,IEEE第61期会刊,692到702页(1973年)
4.R. Crochiere、L.R. Rabiner,《多速率数字信号处理》,Prentice Hall,新泽西州恩格尔伍德克利夫斯,1983年。
5.D. Pellerin、D. Taylor,《轻松VHDL设计》,Prentice Hall,新泽西州恩格尔伍德克利夫斯,1997年。
|