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

FPGA实现全带宽FFT并行运算(通过串行FFT核恢复出原始的并行FFT运算结果) 雷达数字信号处理实际工程中,随着AD采样率越来越高,FPGA不能实时的处理全带宽的数据,一般在FPGA内部采取分相(也就是串并转换)的方式降低处理速度,在雷达信号处理过程中,对信号进行检测常用的方式有多相滤波架构和直接进行FFT进行频域分析,这里不进行展开,本博客主要是通过频域分析介绍一种通过串行FFT核恢复出最原始的N点的FFT结果,比如我们需要进行4096点FFT运算时,我们可以通过8个512点的串行FFT运算恢复出最终的4096点FFT结果,当然也可以通过将数据缓存下来然后分别进行4096点FFT运算 阅读详情

3113e4b66af7d6b5ce42b2838e7191fc.png

aee5d97a3657e041bc1285efbecaacc4.png

点击上方蓝字关注我们

关注、星标公众号,精彩内容每日送达
来源:网络素材

aea2e60192d7655df2ed2de4c9ea7d49.png

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

    本文介绍一种使用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模拟信号为例。该信号的表达式为:

498781c2d0012947c43e76f02fa30017.jpeg

    图1 - 展示上采样过程的16MHz信号实例

    如果用12位ADC以80MHz的频率对图1所示的信号进行采样或量化,输入范围为ADC完整输入范围的97.7%,则每个信号周期只能采样五次,产生的样本数据序列如图2所示。如果对该示例数据序列进行四倍上采样,则有效采样率为320MHz,每个信号周期能够提供20个样本。虽然您可以使用本文介绍的方法进行更高倍数的上采样,但为了说明起见我们还是使用M=4的上采样。

e998bd2baa196cd928562222dcd3a021.jpeg

    图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滤波器的系数。

6e36ad9e4cb319ebd1f7abd0614d6c5e.jpeg

    图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倍。

e2e51e1c73df711bfd5e73de76fd7ff7.jpeg

    图4 - 通过在任何给定时钟周期内对图3中每四个寄存器中一个包含非零数据的寄存器进行观察,可以拆解该滤波器,再让滤波器在以基础ADC时钟频率运行的情况下并行

    如图4所示,您可以设定窗口SINC函数的系数Cw(n)来限度地减少实现该FIR滤波器所需的乘法器数量。对于T个抽头的低通FIR滤波器而言,可通过下式得出系数:

64edf29557fce1cecdf90327e127e8f3.jpeg

    等式2

    这里的汉宁窗系数的计算方法为:

aa35dbb053500d76cef54a2305f7f8ff.jpeg

    等式3

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

910e030130b55a5ae574678b2f633a2d.jpeg

    等式 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位宽度,以便为综合后逻辑提供执行计算所需的动态余量。该设计能检查溢出或下溢,还能将结果钳制在有效范围以内。

8fe4ce3ea3a817c1294a6a458f2c2b33.jpeg

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

    无需流水线化

    图6显示的是使用的WebPACK工具中提供的14.7版ISim仿真器对该VHDL模型进行仿真并将馈送图2中的采样/量化12位数据序列后得到的上采样数据序列。每个原始的12位样本均保持不变,原因上文已述。原始波形中每个实际样本之间插入了三个新样本。

7390fe74ad23d3786667da57fcebd905.jpeg

    图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滤波器设计方法无需借助复杂精密的滤波器设计工具就能提供优异的结果。

43daaf29e3864150f53bac3460c9981b.png

FPGA高速ADC接口实战——250MSPS采样率ADC9481 一、前言   最近忙于硕士毕业设计和论文,没有太多时间编写博客,现总结下之前在某个项目中用到的一个高速ADC接口设计部分。ADC这一器件经常用于无线通信、传感、测试测量等领域。目前数字系统对高速数据采集的需求与日俱增,本文使用了米联客的一款速率较高的AD/DA模块ADQ9481来阐述利用FPGA设计高速ADC接口的技术要点。 二、ADC硬件特性分析   首先必须通过datasheet分析其核... 阅读详情

相关推荐

fpga 之cnn高效实现方式

fpga实现cnn中最重要的模块部分-conv计算部分,可以称为是用fpga加速的根本。而计算最重要的关键则是如何充分利用fpga内的DSP,目前本人用的主要是ultrascale+,对应的dsp为DSP48e2。 实现conv的两种方式: (1)并行方式,目前大多数fpga的conv计算都不是采用的此种方式,简单的说,如果要计算一个3*3的conv,则需要9个dsp,可以在一个时钟内...

a52228254的博客 9968

正弦插值算法的FPGA实现

正弦插值算法的FPGA实现,内含vivado工程、学习sinc插值的网上下载资料以及编写CSDN文章时的过程文件。 基本用于作者后续追忆学习使用,有兴趣的同学可以参考。

基于FPGA的数据采集系统:高效、稳定、可靠!

FPGA(Field Programmable Gate Array)芯片作为一种灵活性、可编程性强、功耗低等优点突出的芯片,在数据采集领域得到了广泛应用。3)FPGA芯片:采用Xilinx Virtex UltraScale+ VU9P,该芯片拥有超高的逻辑资源和DSP资源,并且支持最新的PCIe 4.0接口,能够实现更高速的数据传输。具体实现包括数据采集、存储、预处理和传输等功能,实现高效、稳定的数据传输。该系统具有高效、稳定、可靠的特点,可以满足各种数据采集和处理的需求。

uote_e的博客 2236

基于FPGA并行计算技术

1  微处理器与FPGA微处理器普遍采用冯·诺依曼结构,即存储程序型计算机结构,主要包括存储器和运算器2个子系统。其从存储器读取数据和指令到运算器,运算结果储存到存储器,然后进行下一次读取-运算-储存的操作过程。通过开发专门的数据和指令组合,即控制程序,微处理器就可以完成各种计算任务。冯·诺依曼型计算机成功地把信息处理系统分成了硬件设备和软件程序两部分,使得众多信息处理问题都可以在通用的硬件平台...

weixin_34123613的博客 1732

基于FPGA的高速数据采集系统实现

高速数据采集在军用民用领域都有着广泛的应用。高速数据采集系统在自动控制、电气测量、地质物探、航空航天等工程实践中有着极为广泛的应用。如何对高速的信号进行实时采集实时存储,保证信号不丢失,以满足工业现场的需要,一直是高速数据采集系统研究的一个重要方向。数据采集系统是信号与信息处理系统中不可缺少的重要组成部分,同时也是软件无线电系统中的核心模块。

FPGA/MATLAB学习教程/源码/项目合作开发 1万+

如何使用FPGA实现高效并行计算加速

作者:禅与计算机程序设计艺术 如何使用FPGA实现高效并行计算加速 在现代计算机系统中,高效并行计算加速已经成为了人们生活和工作中不可或缺的一部分。而FPGA(现场可编程门阵列)作为一种高度灵活、可重构的硬件平台,成为实现高性能计算的重要选择之一。本文旨在探讨如何使用

AI天才研究院 1385

FPGA并行加法树设计

之前在设计中遇到过1个问题,如何在verilog中并行实现大量数据(几十、几百个甚至更多)的加法操作。 最直接想到的方法一般会类似: reg [7:0] data [N - 1 : 0]; wire[M:0] sum; assign sum = data[0] + data[1] + ... + data[N-1]; 这种方法本身没有问题,但是随着N不断增大,代码量也会随之不断增加,而且很容易写错。另外,加法是组合逻辑,为了提高时序性能,需要...

MmikerR的专栏 9697

FPGA设计:使用改进的并行积分算法实现低通滤波器

本文还有配套的精品资源,点击获取 简介:电子工程中,单片机和FPGA实现数字信号处理的关键硬件平台,尤其在设计低通滤波器时,FPGA并行计算能力尤为突出。本项目采用改进的并行积分算法,在FPGA实现高效实时的低通滤波器,通过硬件描述语言(VHDL/Verilog)编写代码,定义滤波器的结构和算法,并使用仿真结果与测试数据进行验证。 1. 单片机和FPGA在数...

weixin_35916518的博客 3598

【亲测免费】 探索高效排序:FPGA并行快速排序算法-位宽可设

探索高效排序:FPGA并行快速排序算法-位宽可设 【下载地址】FPGA并行快速排序算法-位宽可设 本资源文件提供了一个基于FPGA并行快速排序算法实现,支持位宽可设。该算法能够在两个时钟周期内输出12个数据的排序结果,实现高效且快速的排序操作。代码内容简单易懂,适合FPGA初学者学习和参考 ...

gitblog_09773的博客 1125

并行FIR滤波器的FPGA实现细节与案例

并行FIR滤波器结构是最直接的实现方式,每个输入样本都会与所有的系数进行乘法运算,然后将结果进行累加。这种结构非常适用于高速应用,例如无线通信系统,它能够提供足够快的数据处理速率以满足高采样率的要求。

weixin_28235889的博客 858

论文笔记:DSP与FPGA并行通信——XINTF方案

XINTF是TI DSP的一个外部接口,设计用于与FPGA、外部存储器或其他外部设备进行高速数据交换。它通过并行总线实现数据的传输,相比于串行通信方式(如SPI、UART等),XINTF能够提供更高的带宽和更低的延迟,因此非常适合用于高性能的实时系统。XINTF方案为DSP与FPGA并行通信提供了高效的解决方案。通过并行总线传输数据,XINTF能够实现高速、低延迟的通信,非常适合实时系统中的数据交换。在嵌入式系统中,结合DSP的信号处理能力和FPGA并行计算能力,可以有效提升系统的性能。

小蜗牛的珍贵百宝箱 3763

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

今天给大侠带来基于FPGA实时图像边缘检测系统设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,话不多说,上货。 导读 随着科学技术的高速发展,FPGA在系统结构上为数字图像处理带来了新的契机。图像中的信息并行存在,因此可以并行对其施以相同的操作,使得图像处理的速度大大提高,这正好适合映射到FPGA架构中用硬件算法得以实现。 本篇阐述了基于FPGA设计一个能够实时采集实时处理并实时显示的数字图像处理系统的设计思想和流程,分析了摄像头接口的时序;阐述了图像...

5888

论述:FPGA并行计算的常规方法

论述:FPGA并行计算的常规方法 用过FPGA的人应该都知道,在FPGA中,逻辑是并行地运行的,各个状态机同时都在工作,状态机之间可能会有信号交互,也可能毫无关系、各管各的工作。 这就给了我们一个灵感:如果我们有一个复杂的计算要做,那么,我们是否可以将计算过程拆成几个子计算过程,并利用FPGA并行特性,让各个子计算过程同时进行以提高计算速度呢? 基于这个灵感,就让我们看看,FPGA并行计算的...

永恒的止水的博客 1万+

关于FPGA并行方式

FPGA结构 1. FPGA与GPU 并行方式的不同点 FPGA相比GPU的核心优势在于延迟 FPGA并行有两种:数据并行(GPU 也有)和流水线并行 因为FPGA 在烧录的时候,假设每个数据包有10个步骤,FPGA可以直接搭建一个10级的流水线。每个处理完的数据包可以直接输出。 联系CPU 和GPU的执行特点,都是取指,译指,执行。 数据并行的方式是做10个计算单元。每个计算单元在处理不同的...

Scarecrow_zzf的博客 7674

基于FPGA实现正弦插值算法

在进行正弦算法分析之前,我们回顾一下《数字信号处理》课程中,对于信号在时域与频域之间的映射关系,如下图。对于上图中的原始信号x(t),使用ADC对信号进行采样,即实现了时域信号的离散化,得到x[k]。根据时域与频域之间的映射关系:时域的离散化对应着频域的周期化,即x[k]的频域响应为。那么离散化的x[k]如何还原为原来的x(t)呢?时域上分析较为复杂,我们可以从频域上进行分析,即如何将频域响应还原成X(jw)。这样就比较直观了,只需要截取一个周期的信号,就可以还原成X(jw),示例如下图。

yindq1220的博客 7430

FPGA亚稳态

1.对于1bit信号 一般用两级寄存器打两拍即可,因为一级寄存器取进来有可能clk上升沿刚好数据变化时,不满足取样的建立时间及保持时间,所以为非零非一的不确定状态,其后稳定为0或者1不能确定,影响后级。所以打两拍延时,避开这里,当然如果时钟频率特别高,可以打三拍,一般打两拍即可。 图1 亚稳态 图2 打两拍 2.对于多比特信号 对于多比特总线数据的跨时钟域处理,能否也使用“打两拍”的方法呢? 答案见下图,虽然REG B2的输出是稳定的,稳定在哪一个电平是不确定的,不 过会在当前时钟或者下一个时钟输出正确

xianglong7273的博客 1580

FPGA数字信号处理(十五)多速率FIR滤波器

该篇是FPGA数字信号处理的第15篇,选题为多速率信号处理系统中用到的多速率FIR滤波器。本文将简单介绍多速率信号处理系统的基本概念,以及使用Quartus和Vivado的IP核设计多速率FIR滤波器的方法。 多速率信号处理 这个概念是相对于单速率(Single Rate)信号处理而言的。单速率是指整个信号处理流程中只有一种数据速率;多速率是指系统中存在多个数据速率。使用多速率信号处理...

FPGADesigner的博客 1万+

FPGA】:ad采样问题

参考资料: 【1】低频能不能采到高频?采样定理指导硬件设计

weixin_43778388的博客 979
上一篇: AMD MicroBlaze中通过AXI Timer获取时间戳
下一篇: 汇总一下各手机品牌自研芯片
Hack电子
博客等级 码龄5年 879粉丝 29原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值