0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用FPGA实现高效并行实时上采样

FPGA设计论坛 来源:未知 2023-06-08 17:15 次阅读


点击上方蓝字关注我们


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

本文介绍一种使用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 - 展示上采样过程的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个带有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滤波器设计方法无需借助复杂精密的滤波器设计工具就能提供优异的结果。






有你想看的精彩




至芯科技-FPGA就业培训来袭!你的选择开启你的高薪之路!5月30号西安中心开课、欢迎咨询!
FPGA_电机控制Verilog
VGA、HDMI、DP…不同视频接口有什么区别?






扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个在看你最好看






原文标题:使用FPGA实现高效并行实时上采样

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593233

原文标题:使用FPGA实现高效并行实时上采样

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何用cubemx配置并实现STM32F373的三个SDADC并行采样

    求大神指点如何实现STM32F373的三个SDADC并行采样,用cubemx配置?
    发表于 03-11 07:14

    如何使用FPGA驱动并行ADC和并行DAC芯片?

    ADC和DAC是FPGA与外部信号的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。
    的头像 发表于 02-22 16:15 2174次阅读
    如何使用<b class='flag-5'>FPGA</b>驱动<b class='flag-5'>并行</b>ADC和<b class='flag-5'>并行</b>DAC芯片?

    等效时间采样示波器与实时示波器的对比,有什么不同?

    等效时间采样示波器与实时示波器的对比,有什么不同? 等效时间采样示波器和实时示波器是电子测试设备中常用的两种示波器。它们在运行原理、应用场景、优点和缺点等方面存在一些显著差异。 一、等
    的头像 发表于 01-19 11:29 409次阅读

    采样示波器和实时示波器的区别

    采样示波器和实时示波器的区别  采样示波器和实时示波器是电子测量领域常用的两种示波器类型,它们在原理、特点、应用和优缺点等方面存在差异。下面我将从这些方面逐一详细介绍,以帮助你更好地理
    的头像 发表于 01-03 17:13 600次阅读

    示波器实时采样与等效采样有何区别

    示波器实时采样与等效采样有何区别  示波器实时采样和等效采样是示波器在测量电信号时使用的两种不同
    的头像 发表于 12-21 14:02 426次阅读

    基于FPGA与PCI总线的实时控制计算机的设计与实现

    电子发烧友网站提供《基于FPGA与PCI总线的实时控制计算机的设计与实现.pdf》资料免费下载
    发表于 10-25 11:04 0次下载
    基于<b class='flag-5'>FPGA</b>与PCI总线的<b class='flag-5'>实时</b>控制计算机的设计与<b class='flag-5'>实现</b>

    基于凌阳单片机实现语音信号的实时采样与压缩

    电子发烧友网站提供《基于凌阳单片机实现语音信号的实时采样与压缩.pdf》资料免费下载
    发表于 10-18 11:13 0次下载
    基于凌阳单片机<b class='flag-5'>实现</b>语音信号的<b class='flag-5'>实时</b><b class='flag-5'>采样</b>与压缩

    什么是示波器的实时采样率?什么是示波器的等效时间采样

    什么是示波器的实时采样率? 什么是示波器的等效时间采样? 示波器是一种测试仪器,用于显示波形和信号的性质。实时采样率是指示波器在一个时间单位
    的头像 发表于 10-17 16:16 1092次阅读

    基于FPGA的ARM并行总线设计原理

    电子发烧友网站提供《基于FPGA的ARM并行总线设计原理.pdf》资料免费下载
    发表于 10-10 09:31 0次下载
    基于<b class='flag-5'>FPGA</b>的ARM<b class='flag-5'>并行</b>总线设计原理

    等效时间采样原理及基于FPGA实现

    经常涉及对宽带模拟信号进行数据采集和存储,以便计算机进一步进行数据处理。为了对高速模拟信号进行不失真采集,根据奈奎斯特定理, 采样频率必须为信号频率的2 倍以上,但在电阻抗多频及参数成像技术中正
    的头像 发表于 09-15 09:45 1176次阅读
    等效时间<b class='flag-5'>采样</b>原理及基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>实现</b>

    Easygo实时仿真:FPGA实时仿真器、硬件在环((HIL)测试设备及快速控制原型(RCP)系统开发

    3.2GHz ,搭载多块Xilinx Kintex 7系列 FPGA芯片,采用高性能CPU和多FPGA进行运算,适用于大多数高性能的实时并行运算。■ IO接口丰富灵活 可配置IO接口
    发表于 08-16 17:29

    基于FPGA的等效时间采样原理的实现

    ,就需要提高采样时钟的频率,但是由于系统的ADC 器件时钟速率并不能达到要求的高频速率或者存储处理速度等不能满足要求因此我们可以采用低速ADC 器件通过等效时间采样来对宽带模拟信号进行数据采集从而使系统易于实现。 1 等效时间采
    的头像 发表于 07-29 09:00 561次阅读
    基于<b class='flag-5'>FPGA</b>的等效时间<b class='flag-5'>采样</b>原理的<b class='flag-5'>实现</b>

    基于FPGA实时图像边缘检测系统设计(附代码)

    设计(中)基于FPGA实时图像边缘检测系统设计(下) 导读 随着科学技术的高速发展,FPGA在系统结构为数字图像处理带来了新的契机。图像中的信息
    发表于 06-21 18:47

    求一种FPGA实现图像去雾的实现设计方案

    本文详细描述了FPGA实现图像去雾的实现设计方案,采用暗通道先验算法实现,并利用verilog并行执行的特点对算法进行了加速;
    发表于 06-05 17:01 902次阅读
    求一种<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>图像去雾的<b class='flag-5'>实现</b>设计方案

    并行FIR滤波器MATLAB与FPGA实现

    本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的并行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了复现以及解读,并进行了仿真验证。
    的头像 发表于 05-24 10:57 713次阅读
    <b class='flag-5'>并行</b>FIR滤波器MATLAB与<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>