首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA在高速数字信号处理系统中的应用(2)

FPGA在高速数字信号处理系统中的应用(2)

b) 采用DA算法的FIR滤波器
有很多方法可计算内积,其中一种方法称为分布式算法(DA)。DA滤波器的通用模型如图1所示。基于分布式算法的计算需要一系列的查表、加法和减法运算。所有这些功能都可用FPGA实现。DA滤波器的一个有趣特性是滤波器吞吐能力不再与滤波器长度有关,而是取决于输入采样精度。图2中的线性曲线可说明这一点。如图所示,在DA FIR滤波器结构中,对于给定的输入采样精度B,采样速率保持恒定,与滤波器抽头数无关。例如,若B=12且系统时钟为100MHz,滤波器的采样速率在滤波器长度为10、20、100、200、...时均为8.333MHz。若N=200,这一有效计算速率为每0.6us完成1个MAC或每秒1.7GMAC。
对于24位输入采样,采样速率为4.1666MHz。在许多系统中,滤波器的系数集是对称的,对称性可用来减少滤波器设计对逻辑片的需求。此时,滤波器速率略微有些减小。对24位输入采样和100MHz时钟,采样速率将为4MHz。对于一个200抽头的滤波器,仍然会获得每秒800MMAC的计算速率。
c) 用并行分布式算法提高乘法速度
基于DA的计算最显然而直接的形式是位串行(bit-serial),对基本算法的扩展可消除这一潜在的吞吐能力限制。串行处理数据(即一次1位)可得到适中的计算速率。若输入变量长度为B位,则需要B个时钟周期来完成一次内积计算。提高速度可用其他几种方法获得。一种方法是将输入字段分割成L个子字段,然后并行处理这些子字段。这一方法需要L倍的存储查找表,从而导致存储需求和成本的直线上升。通过将输入变量分解为一位子字段可获得最大速度。通过这种分解,每一时钟周期就可计算出一个新的输出采样。
d) 为什么用FPGA实现DA滤波?
DA滤波器的一些结构特性使它非常适合采用Virtex FPGA技术实现。这些FPGA中的功能发生器(FG)可用做移位寄存器,这一功能正是实现保存滤波器输入采样记录的位串延迟线或TSB所需要的。TSB的抽头点可作为DA查找表(LUT)的地址输入。功能发生器还可配置为RAM和ROM,这一能力可用来有效创建甚高速DA查找表。
在分布式存储器内实现DA LUT的另一个方法是利用新一代FPGA中的存储模块。以构建一个70抽头的线性相位FIR滤波器为例,只有35个专用的滤波器参数,一个简单的LUT方法就需要存储大量的部分乘积项。如果将35个地址线划分为4组8个地址和1组3个地址,就比较容易管理。这时只需要4个256输入和1个8输入的LUT。这5个表可存储在片上存储模块中,再利用1个简单的加法器树将它们的输出连接起来。
e) FPGA多速率滤波器
高效的单速率FPGA FIR滤波器有助于构造大量的多速率滤波器。图3和图4所示的多相插值器和多相十进制编码器就可采用上述FPGA滤波器的构建模块实现。
实现多相十进制编码器的一种方法是采用分布式算法。每一个多相分段都可作为一个独立的DA过程来实现。所有的分段并行运行,以产生一个可支持特高输入采样率的下采样滤波器。例如,考虑一个8至1的复数十进制滤波器(实数输入采样,复数系数),其输入采样率为80MHz,输出速率为10MHz。滤波器的每一分段均具有32抽头,并支持10位输入采样和12位系数。每个多相子滤波器都有320MMAC的计算速率,复数滤波器的净计算性能为5.12GMAC。
除了这一结构提供的性能外,另一个需要考虑的重要问题是逻辑片要求。32抽头滤波器中的任意一个都需要126个Virtex逻辑片,整个滤波器将占用2,200个Virtex逻辑片。一个XCV400 FPGA具有4,800个逻辑片,因此可容纳2个这样的十进制编码结构,并可提供每秒100亿个MAC的性能。该例中假定系统时钟速率为100MHz,当前的FPGA技术很容易支持这一速率,实际上还可为某些算法功能提供200MHz时钟频率的支持。最后需要注意的一点是滤波器系数的对称性尚未利用。如果可能,将可得到更为紧凑的设计。
多相插值器可采用分布式算法或并行MAC方法在FPGA中实现。不同的方法适合处理不同的问题。例如,在数字接收机中,载波和信号的同步,以及自动增益控制都需要许多控制回路。在时序恢复回路中,需要插值器来调整信号采样的相位,并驱动其自身的跟踪回路。尽管插值器需要支持许多相位,而在任一时刻通常只有很少的分段部分在运行。这时,传统的预置MAC方法就比较适用。所有滤波器的完整系数集都存储在模块化或分布式存储器内,而所需的系数集(对应于一个多相分支)则被导入1个或几个MAC中,以便进行内积计算。
除了上述结构外,实现多速率滤波器的方法还有很多。例如,由Hogenauer首先提出的级连积分梳状滤波法(CIC, cascaded-integrator-comb)就特别适合用FPGA实现,因为它依赖于加法器、寄存器和减法器来实现算法,而FPGA在实现这些功能方面极为高效。
傅立叶变换
与FIR滤波器一样,离散傅立叶变换(DFT)也是许多信号处理系统中常用的方法之一。DFT通常采用快速傅立叶变换(FFT)算法来实现。在数字通讯系统中,基于FFT的算法可用来提取传输信道的特征,以便最有效地利用可用带宽资源。在正交频分多址(OFDM)调制解调器中,FFT既可用作发送部分的调制器,又可用作接收部分的解调器。
在大约66us的时间内,一个先进的软件DSP可对16位精度复数采样执行一次1024点的复数FFT。如果有必要,通常还需要增加时间(约9us)来完成位反向置换(bit-reversal permutation)。采用基数为4的标准Cooley-Tukey算法,并且仅使用适度的并行处理能力,同样的FFT就可在41us内由Virtex FPGA实现,包括位反向置换在内。
在比较FPGA DSP和其它DSP时,一个极为重要的系统参数是输入/输出(I/O)带宽。比较不同DSP硬件方案的原始算法性能很重要,但I/O子系统也同样重要。除了一些专用引脚外,FPGA上几乎所有的引脚均可供用户使用,这使得FPGA信号处理方案具有非常高性能的I/O带宽。图5所示为上述 FPGA FFT方案。大量的I/O引脚和多块存储器可让信号处理工程师在设计中获得优越的并行处理性能。在上述FFT范例中,独立的存储块可作为输入/工作存储区和结果缓存区,这使得I/O可与FFT计算同时进行。因此,41us的执行时间包括了所有的输入、输出和计算操作。
上述1024点FFT占用大约1,900个逻辑片,这相当于XCV300等中等密度器件资源的66%。FFT算法可充分利用并行处理能力,而且目前的FPGA提供了I/O带宽、片上存储器和逻辑等多种资源,从而使得单片FFT引擎的高度并行处理成为现实。例如,利用标准的基数为4的Cooley-Tukey FFT算法的直接划分,一个计算单元可分配到每个蝶形列(column of butterfly)中。除了相邻蝶形列间的存储器缓存外,这一方法共需5个蝶形引擎(butterfly engine)。一个1024点FFT可在1024个时钟周期内完成。若采用100MHz的时钟,变换时间为10us。如果需要,还可进一步提高并行处理能力,以获得小于10us执行时间的单片FFT方案。
结论
尽管FPGA DSP系统代表了信号处理领域的一个重要分支,将FPGA引入DSP硬件的设计却在呈指数增长。这一爆炸性增长的原因是,所有主要的FPGA供应商和第三方IP设计商都在提供越来越多的FPGA IP内核。利用这些资源,系统设计者就能将精力集中在设计上,而无需关心滤波器和转换等底层模块的细节。
继承事业,薪火相传
返回列表