|
对硬体进行编译 用标准桌面工具模拟完功能之后,我们准备用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的工具能够进行这样的评估,试验又快又容易。
|