利用Spartan-3 FPGA实现高性能DSP功能
Spartan-3 FPGA能以突破性的价位点实现嵌入式DSP功能。本文阐述了Spartan-3 FPGA针对DSP而优化的特性,并通过实现示例分析了它们在性能和成本上的优势。
所有低成本的FPGA都以颇具吸引力的价格提供基本的逻辑性能,并能满足广泛的多用途设计需求。然而,当考虑在FPGA构造中嵌入DSP功能时,必须选择高端FPGA以获得诸如嵌入式乘法器和分布式存储器等平台特性。
Spartan-3 FPGA的面世改变了嵌入式DSP的应用前景。虽然Spartan-3系列器件的价位可能较低,但它们同样具有DSP设计所需的平台特性。这些平台特性能够以较高的面积利用率实现信号处理功能,使设计达到更低价位点。
Spartan-3器件用作协处理器或预/后处理器是非常理想的,它们将运算密集型功能从可编程DSP上卸载下来以增强系统性能。
针对DSP而优化
赛灵思公司的Spartan-3器件采用90nm工艺技术以及300mm晶圆,大大降低了FPGA的成本。与此同时,这些器件还包括诸如嵌入式18×18位乘法器、大块存储器(18kb)、分布式RAM以及移位寄存器等关键DSP资源。这些高级特性意味着采用Spartan-3 FPGA,能以比其它竞争FPGA低得多的价位实现DSP算法。
除增加系统的基本性能之外,这些嵌入式特性还能提高器件的利用率。例如,如果在逻辑结构中实现Spartan-3嵌入式乘法器,需要占用300~400个逻辑单元(LE)。此外,因为嵌入式乘法器紧邻逻辑结构,所以拓展其功能(比如创建加法器或者级联多个乘法器来支持复杂的算**能)是非常简单的。
为提高效率,许多DSP功能以时分复用的形式在管道中得以很好实现。这样做虽然能创建带宽更高、速度更快的系统,但同时也将面临更多临时存储单元需求而带来的成本增加。譬如,时分复用滤波器需要将各个乘法-累加单元的结果存储在移位寄存器里。这种设计将在用完FPGA的逻辑资源之前就可能耗尽寄存器或存储器资源。Spartan-3 FPGA系列的独特之处在于它们可提供这样一种模式:一个查找表(LUT)能够执行逻辑功能或配置成一个16位移位寄存器。
如图1所示,这种增强型的架构允许用单个LUT来代替16个寄存器,在实现时分复用DSP功能时能使面积利用率最大化。
许多DSP功能也需占用大量的存储器资源,它们需要便笺存储器来保存系数、执行FIFO以及获得较大的缓冲区。与目前使用的其它低成本FPGA相比,Spartan-3器件可提供更多的存储位数。对于许多DSP设计而言,最重要的资源是FPGA内的嵌入式存储器,而不是逻辑电路或者乘法器。因为存储资源不足,采用竞争的低成本器件的设计工程师不得不选用更大规模的器件或采用外部存储器来构建系统,而这些系统只需一片体积很小的Spartan-3 FPGA就可以得到实现。
常见的DSP功能实现
下面通过分析有限冲击响应(FIR)滤波器的两个实现示例来说明这些特性是如何影响器件的利用率。一个是基于乘法累加器(MAC)的实现,另一个是基于多通道分布式算法(DA)的实现。
FIR滤波器通常应用于基站、数字视频、无线局域网、xDSL以及有线调制解调器。测试基准是在Spartan-3 XC3S400 FPGA中实现频率为130MHz、数据和系数均为16位的64抽头MAC FIR滤波器。第一个实现仅用了一个MAC,第二个实现则用了四个MAC。
从采用单个MAC的实现到采用四个MAC的实现可显著增加FIR滤波器的性能,而LUT数量只增加一倍并仍仅占总可用逻辑资源的4%。四个MAC的实现使用了四块RAM和四个MAC,以最少的器件逻辑资源高效地实现了FIR滤波器。
另一个有趣的实现是多通道FIR功能的实现,在这里可以看到从单通道FIR滤波器到8通道FIR滤波器,器件利用率是如何变化的。
实现单通道分布式算法FIR滤波器使用了XC3S1000 Spartan-3器件29%的逻辑资源和39%的寄存器资源。当实现同样的8通道滤波器时,通常将不同通道进行时分复用来保存逻辑,但这将占用很多寄存器或者大量的片内存储器来存放中间结果。
如果使用Spartan-3 FPGA,中间结果将被存放在由LUT配置成的16位移位寄存器(SRL-16)中。这样,实现同样的8通道滤波器只多使用10%的可用逻辑资源和7%的可用寄存器资源,也就是说,构建8个通道仅多占用25%的器件资源。
这种显著的资源节约与Spartan-3器件中SRL-16的使用有直接关系,在8通道实现中还有另外1,343个LUT被用作SRL-16模式。
如果在不支持SRL-16性能的FPGA中实现这种设计,将需要额外的10,744(1343×8)个触发器用作存储单元,这就必须选用大规模器件以提供数量庞大的寄存器,同时将也会消耗相关的组合逻辑资源。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个接口的速度太慢了吧,rapidIO
一周热门 更多>