DSP对电子体系规划来说十分重要,因为它可以迅速地丈量、过滤或紧缩即时的模仿信号。这样有助于完结数字国际和实在(模仿)国际的通讯。但跟着电子体系进一步精密化,需求处理多种模仿信号源,迫使工程师不得不做出困难的决议计划。是运用多个DSP并将其功用与体系的其余部分同步更具优势?仍是选用一个可以处理多功用的具有精密软件的高功用DSP更具优势?
因为当今的体系十分复杂,在许多情况下,单DSP的完结计划底子没有满意的处理才能。一起,体系架构也不能满意多芯片体系带来的本钱、复杂性和功耗要求。
FPGA已成为需求高功用DSP功用的体系的抱负挑选。现实上,与独自的数字信号处理器比较,FPGA技能常常可以为高难度的DSP应战供给大为简化的处理计划。要了解其间的缘由,需求回忆一下DSP的来源以及开展。
图1:传统的DSP架构。
专用微处理器
在曩昔二十年里,传统的DSP架构一直在尽心竭力地跟上不断进步的功用需求的脚步。但跟着视频体系大踏步地跨进高清和3D年代,而且通讯体系为完结更高带宽已将现有技能发挥到极致,规划人员需求代替性的完结战略。常用于完结数字信号处理算法的硬件不外乎如下三种根本器材之一:微处理器、逻辑电路和存储器。部分规划还需求额定的硬件来完结模数(A/D)和数模(D/A)转化以及高速数字接口。
传统的数字信号处理器是规划用于完结专门意图的微处理器。这类处理器十分合适算法密布的使命,可是功用却受时钟速率和其内部规划次序性的约束。这约束了它们对输入数据采样每秒最多履行的运算次数。一般来说,每履行一次算术逻辑单元(ALU)运算需求三或四个时钟周期。多核架构可以进步功用,可是进步起伏依然有限。因而,选用传统的信号处理器规划有必要将架构单元重复用于算法完结。对每次履行的加、减、乘或其它任何根本运算,不论是内部仍是外部反应,每次履行都有必要循环经过ALU.
不幸的是,在处理当今很多的高功用运用时,这种传统的DSP难以满意体系的要求。在曩昔为此提出过多种处理计划,包括在一个器材中运用多个ALU,或在一块板上安置多个DSP器材。可是,这些计划往往会形本钱钱的大幅上升,而且仅仅把问题面向另一个范畴。例如:用多个器材进步功用遵从指数曲线。要让功用进步一倍,需求两个器材。再进步一倍,则需求四个器材,依此类推。别的,编程人员往往从重视信号处理功用转为重视多个处理器与内核之间的使命调度。这样会发生很多的附加代码,而且这些代码会成为体系开支,而不是用于处理眼前的数字信号处理问题。
FPGA技能的引进为处理DSP完结计划日益增长的复杂性带来了福音。FPGA开始开发用于整合和会集分立的存储器和逻辑电路,以完结更高的集成度、更超卓的功用以及更高的灵活性。FPGA技能已成为当今运用的简直每一款高功用体系的重要组成部分。与传统的DSP比较,FPGA是由可装备逻辑块(CLB)、存储器、DSP逻辑片(Slice)及一些其它元件组成的一致阵列构成的巨大并行结构。它们既可以运用VHDL和Verilog等高档描绘言语进行编程,也可以在方框图顶用体系生成器(System Generator)编程。FPGA还供给很多的专用功用和IP核,用于以高度优化的办法直接完结完结计划。
在FPGA中完结数字信号处理的首要优势在于可以依据体系要求定制完结计划。这意味着关于多通道或高速体系,用户可以充沛运用FPGA器材的并行性来完结功用的最佳化,而对低速体系,则可以更多地选用串行办法完结规划。这样,规划人员就可以依据算法和体系的要求来定制完结计划,而不用折衷希望的抱负规划来投合纯次序器材的许多限制。别的,超高速I/O经过最大极限地进步从捕捉经处理链再到终究输出的数据流,可进一步下降本钱并削减瓶颈问题。
下面以一个一起运用传统DSP架构和FPGA架构的FIR滤波器完结计划为例,来阐明每种处理计划的好坏。
数字FIR滤波器实例
有限脉冲响应(FIR)滤波器是一种运用最广的数字信号处理元件。规划人员运用滤波器来改动数字信号的起伏或频谱,一般用于阻隔或杰出样本数据频谱中的特定区域。从这个视点说,可以把滤波器视为信号的预处理办法。在典型的滤波器运用中,输入数据样本经过当心同步的数学运算与滤波器系数相结合(这取决于滤波器的类型和完结战略),随后数据样本进入下一个处理阶段。假如数据源和意图地都是模仿信号,则数据样本有必要首要经过A/D转化器,而成果则有必要馈送给D/A转化器。
最简略的FIR滤波器类型选用一系列的推迟元件、乘法器和加法器树或加法器链来完结。
下面的等式是单通道FIR滤波器的数学表达式:
该等式中的各项别离代表输入样本、输出样本和系数。假定S为接连的输入样本流,Y为经滤波后发生的输出样本流,那么n和k则对应特定的瞬时时刻。这样,若要核算时刻n时的输出样本Y(n),则需求一组在N个不一起间点的样本,即:S(n)、S(n-1)、s(n-2)、…s(n-N+1)。将这组N个输入样本乘以N个系数并求和,便可得出终究成果Y.
图2是一个简略的31抽头FIR滤波器(长度N=31)的方框图。
图2:长度为31抽头的FIR滤波器。
在挑选滤波器的抱负长度和系数值时,有多种规划东西可供运用。其意图是经过挑选恰当的参数来完结所需的滤波器功用。参数挑选最常用的规划东西是MATLAB.一旦选定了滤波器参数,就可以用数学等式完结。
完结FIR滤波器的根本进程包括:对输入数据流采样;在缓冲区安排输入样本,以便让每个捕捉到的样本与每项滤波器系数相乘;让每个数据样本与每项系数相乘,并累加成果;输出滤波成果。
运用“相乘累加法”在处理器上完结FIR滤波器的典型C言语程序,如下列代码所示:
/*
*捕捉输入数据样本
*/
datasample=input();
/*
*将新数据样本装入缓冲器
*/
S[n]=datasample;
/*
*将每个数据样本与每项系数相乘并累加成果
*/
y=0;
for(i=0;i{
y+=k[i]*S[(n+i)%N];
}
n=(n+1)%N;
/*
*输出滤波成果
*/
output(y);
图3所示的完结计划被称为相乘累加或MAC型完结计划。这根本上便是用传统的DSP处理器完结滤波器的办法。选用内核时钟速率为1.2GHz的典型DSP处理器并以这种办法完结的31抽头FIR滤波器的最高功用约为9.68MHz,或最大的输入数据率为968MS/s.
图3:用传统DSP完结的MAC.
而FPGA供给了许多不同的完结和优化挑选。假如需求高资源功率的完结,MAC引擎规律适当抱负。仍是以31抽头滤波器为例来阐明滤波器规范对所需逻辑资源的影响,这种完结计划的方框图如图4所示。
图4:选用FPGA完结的MAC引擎FIR滤波器。
这种规划需求存储器存储数据和系数,可以混合选用FPGA内部的RAM和ROM.RAM用于存储数据样本,故而选用循环的RAM缓冲器完结。字的数量与滤波器抽头数持平,位宽按样本巨细设置。ROM用于存储系数。在最糟糕的情况下,字的数量与滤波器抽头的数量持平,但假如存在对称,则可以削减字的数量。位宽有必要足以支撑最大的系数。因为数据样本和系数数据都随每个周期改动,所以需求全乘法器。累加器担任将发生的成果累加起来。因为跟着滤波器收集数据,累加器的输出会随每个时钟周期改动,所以需求捕捉寄存器。当全套N个样本完结累加后,输出寄存器担任捕捉终究成果。
假如选用MAC形式,DSP48则十分适用,因为DSP48 Slice内含输入寄存器、输出寄存器和加法器单元。完结31抽头MAC引擎需求的资源包括一个DSP48、一个18kb块RAM(block RAM)和9个逻辑片。别的,还需求一些逻辑片用于采样、系数地址生成和操控。假如FPGA内置有600MHz的时钟,则在一个-3速度等级的Xilinx 7系列器材中,该滤波器可以以19.35MHz或1,935MS/s的输入采样速率运转。
假如体系规范需求更高功用的FIR滤波器,则可选用并行结构来完结。图5显现了直接I型完结计划的方框图。
图5:选用FPGA完结的直接I型FIR滤波器。
直接I型滤波器结构可以在FPGA中完结最高功用。这种结构(一般也被称作脉动FIR滤波器)选用流水线和加法器链,使DSP48 Slice发挥出最高功用。输入馈送到用作数据样本缓冲器的级联寄存器;每个寄存器向DSP48供给一个样本,然后乘以对应的系数;加法器链存储部分乘积,然后顺次相加,然后得到终究成果。
这种规划无需外部逻辑电路支撑滤波器,而且该结构可扩展用于支撑恣意数量的系数。因为没有高扇出的输入信号,所以这种结构可以完结最高功用。完结31抽头FIR滤波器仅需求31个DSP48逻辑片。假如FPGA内置有600MHz的时钟,则在一个-3速度等级的Xilinx 7系列器材中,该滤波器可以以600MHz或600MS/s的输入采样速率运转。
从这个实例可以明晰地看出,FPGA不仅在功用上明显逾越了传统的数字信号处理器,而且要求的时钟速率也明显下降(因而,功耗也明显下降)。
这个实例只反映了选用PFGA完结FIR滤波器的两种技能。为了充沛运用数据采样率规范,可对该器材进行进一步定制,此刻,数据采样率可在接连MAC运算极值和全并行运算极值之间任取。用户还可考虑在包括对称系数、插值、抽选、多通道或多速率的资源运用和功用方面进行更多的权衡取舍。Xilinx CORE Generator或System Generator实用东西可以协助用户充沛开掘这些规划变量和技能。
在传统DSP和FPGA之间挑选
传统的数字处理器现已有多年的运用前史,当然具有为特定问题供给最佳处理计划的实例。假如体系采样率低于数kHz且为单通道完结,DSP或许是不贰之选。可是,当采样率增加到数MHz以上,或许假如体系要求多通道,FPGA就越来越具优势。在高数据率条件下,DSP或许只能勉为其难地在不形成任何损耗的情况下收集、处理和输出数据。这是因为在处理器中存在很多的共享资源、总线甚至内核。可是,FPGA却可以为每项功用供给专门的资源。
DSP是根据指令而非根据时钟的器材。一般来说,对单个样本上的任何数学运算需求三到四条指令。数据有必要首要经输入端收集,再发送到处理内核,每完结一次运算后再循环经过内核,然后发送到输出端。比较之下,FPGA根据时钟,故每个时钟周期都有或许在输入数据流上进行一次数学运算。
因为DSP的运算以指令或代码为根底,编程机制为规范C言语,或许在需求更高功用的情况下,选用初级汇编言语。这种代码或许包括高档的决议计划树或许搬运操作,而难以在FPGA中完结。例如:存在很多的用于履行如音频和电话编解码器之类的预界说功用或规范的留传代码。
FPGA厂商和第三方合作伙伴现已意识到将FPGA用于高功用DSP体系的优势,而且现在已有许多IP核广泛运用于视频、图画处理、通讯、轿车、医疗和军用等大部分笔直运用商场。与将高档体系方框图映射成为C言语代码的DSP规划比较,将高档体系方框图分解为FPGA模块和IP核会愈加简便易行。
从DSP转向FPGA
考察一些首要规范将有利于在传统DSP和FPGA之间做出决议计划(表1)。
软件编程人员的数量远远超越硬件规划人员的数量,这已是不争的现实。DSP编程人员的数量与FPGA规划人员的数量之间的联系也是如此。不过,让体系架构师或许DSP规划人员转为运用FPGA的难度,并不像让软件编程人员转为从事硬件规划那么大。有很多的资源可以明显减轻对DSP算法开发和FPGA规划作业的学习进程。
首要的妨碍是从根据样本和工作的办法转向根据时钟的问题描绘和处理计划。假如可以在规划流程的体系架构和界说阶段就可以完结,对这种转化的了解和运用就会简略得多。由不同的工程师和数学专家来界说体系架构(DSP算法和FPGA规划在某种程度上彼此孤立)是很寻常的工作。当然,假如每个成员对其他小组成员面对的难题有必定程度知道的话,这个进程会顺畅得多。