您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术FPGA分担DSP功能降低建构成本 正文
FPGA分担DSP功能降低建构成本

FPGA分担DSP功能降低建构成本

点击数:7466 次   录入时间:03-04 11:33:32   整理:http://www.55dianzi.com   DSP/FPGA技术

像CoDeveloper™(来自Impulse Accelerated Technologies)这样的工具允许C语言的应用编译来设计硬体,以FPGA网表形式,也包括使用高度平行和多处理应用所需的C语言扩展。对于包括嵌入式处理器(如Altera的Nios软式核心处理器)的目标平臺,CoDeveloper可以用来产生必要的硬体/软体介面,及产生特定过程的低阶硬体描述。

这些工具和硬体/软体方法成功的关键一般是软体和硬体处理资源的合理划分。好的划分策略不仅要考虑给定演算法零件的计算量需求,而且要考虑资料频宽需求。这是因为硬体/软体介面可能是主要的性能瓶颈。

利用适合于高度平行应用的编程模型也是很重要的。虽然用传统的编程方法如远端程序唿叫(RPC)把专门的功能交由FPGA处理是很好的,但是研究表明交替的资料流程导向的通讯方式是更有效率的,更不会给应用引入阻塞或造成锁死。在一些情况下,这意味着要重新从整体考虑应用,寻找新的方式加快资料的搬移和处理。然而这么做的结果是很有成效的,例如,通过增加应用层级的平行度,利用可编程应用资源的优势,使得普通演算法比纯软体实现提高几个数量级是可能的。

在这类应用的开发过程中(或重新设计),设计工具可以用来视觉化和除错多个平行过程的互连性。例如,应用监视能够提供应用和过程的整体情况,好像在标准C除错器控制下。这种工具能够确定代表应用瓶颈的高资料传输量的区域,帮助量化给定划分方案的结果。当这些工具和类似的软体性能分析方法相结合,允许特定区域的程式码进行确定,获得详细的分析或进行性能调整。在开发后期週期精度或指令集模拟器的使用能够帮助进一步最佳化应用。


 

screen.width-500)this.style.width=screen.width-500;"> 范例:边缘检测图像滤波器
为了演示如何使用这类工具把演算法过程移到FPGA中,可以考虑图像滤波的问题,在这个图像滤波中输入图像资料流必须非常快地进行处理(一般是对一个「视窗」的相临图元进行一些定义的计算),产生转换的图像流。这种问题可能涉及大量的运算,但是也需要大量的频宽。另外,最终的实现不必为了增加整体性能而牺牲资料传输量。

本范例中选用的特定的图像处理演算法是图像捲积演算法,它在一些图像处理演算法中是关键的一个步骤,是这类其他图像处理滤波器的代表。

我们使用CoDeveloper把原有的C程式码转换为适合于所选FPGA硬体编译的版本,并对所需的C语言进行硬体编译。我们利用Be Here的FPGA开发板(如上述)及Altera的标准Nios开发套件(使用Stratix和Cyclone FPGA)来完成这个试验。

在这个测试中进行的指定的捲积是边界检测功能,它对3×3的视窗进行组合,处理来源图像中的每个图元。C语言描述的两个流水线硬体过程来说明这个过程。一个过程从来源图像(按图元流读出)产生一列匹配图元,同时另一个过程接收第一个过程的结果,对每个图元视窗进行捲积,产生输出图像,由第二过程输出显示的捲积图元流来表示。过程和串流採用Impulse C函式库中符合C语言的流式I/O副程式来声明和读写。

因为演算法是用标准C语言(加上Impulse™函式库),我们可以从软体测试应用开始,它在桌面模拟环境上运行图像演算法。这种测试应用把两个和图像捲积功能相关的过程和软体测试平臺过程相结合(它能够编译和作为PC应用或Nios处理器上的嵌入式应用运行),从TIFF格式档中读取资料进行处理。这种测试被建立和用标准桌面除错工具和CoDeveloper应用监视器(见下图)来运行。在进入下一步和对目标FPGA平臺进行编译之前,要验证结果。

 



图二:应用监视有助于除错和分析多种平行过程。
 




 


screen.width-500)this.style.width=screen.width-500;"> 对硬体进行编译
用标准桌面工具模拟完功能之后,我们准备用Altera Stratix原型板在混合FPGA/处理目标上实现该应用。Altera Nios开发套件包括编译、合成硬体和软体(包括自动产生表示硬体过程的HDL原始码和表示软体测试过程的C原始码)至FPGA目标所需的所有硬体和软体。当和Impulse Codeveloper相结合时,Altera提供的软体包括从我们的C原始档案中编译和执行测试应用所需的一切。

我们第一步是为图像处理器本身的硬体。因此,我们在CoDeveloper工具中选择Altera Nios平臺支援套件,处理相关的Impulse C原始档。这会得到大约1200行的产生RTL和相关硬体/软体介面原始档。

接下来,用Altera QUARTus统计创建一个新的专案,产生一个包括必要週边的Nios处理器核心(使用Altera的SOPC Builder)。CoDeveloper的导出软体和导出硬体特性把从CoDeveloper产生的硬体和软体档输出到新创建的Quartus专案中。使用Altera模块方框图工具,我们通过Avalon晶片内匯流排把产生的硬体处理和Nios处理器相连接。

包括Nios处理器和产生硬体的完整的系统用Altera的Quartus工具进行合成。应用的软体部分(标准C语言版的图像滤波器和包括主函数的测试功能)也导入到Quartus项目中,使用包括在内的Nios编译器进行编译。

最后,用Altera工具产生bit档,通过提供的平行埠缆线下载到平臺上,然后供电运行。联合使用CoDeveloper和Altera提供工具的设计流程如下所示:


 



图三:CoDeveloper从C原始码产生可合成的硬体描述和硬体/软体介面。


 



在本例中,两个图像滤波过程显示了管线,结合由CoDeveloper C至硬体的编译器自动产生的(过程级)管线可获得每两个FPGA时钟週期的最佳的单图元图像处理速率,转换为全512×512图像大约需10ms的处理速度。

当然,任何在FPGA上实现的任何演算法的绝对性能要取决于I/O及演算法本身。我们的图像滤波器测试例子中图像资料从在Nios上运行的测试产生器,通过Avalon晶片内互连传送到产生的FPGA硬体,它的有效传输量比上述的最大图元率低很多。另一种演算法,图元资料直接从FPGA硬体介面进行转换,可以获得和最佳结果最接近的结果。因此,考虑硬化划分的频宽限制是很重要的,可能的话在硬体进行测试。如CoDeveloper的工具能够进行这样的评估,试验又快又容易。




 

screen.width-500)this.style.width=screen.width-500;"> 结论
现代的大规模FPGA已经验证能够胜任先进的大计算量的演算法和应用。因这些元件可以作为现有微处理器和DSP的补充(或替代)。最佳的软体导向设计工具的发展使得FPGA作为软体/硬体应用更受关注,大大地缩短了创建混合硬体/软体原型的时间和减小其所需的专业性。

上一页  [1] [2] 


本文关键字:成本  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术