运用FPGA进行控制平面/数据平面视频处理
采用C-to-FPGA工具实现软硬件协同设计
C-to-FPGA编译器可以让开发人员使用新的开发工具集和新技术解决软件/硬件开发问题。开发人员可以先在软件中进行算法编码。经验告诉我们,在软件中开发算法较在硬件中开发算法的效率更高。具体原因如下:首先,诸如C语言能够让编程人员在高级软件语言的层面上开发算法,而这是使用Verilog或者VHDL硬件描述语言所不能达到的;其次,与同类的硬件开发工具相比,针对C语言的调试和测试工具运行速度更快、效率更高,通常也更易于使用。相当于硬件算法,C语言算法可以在目标处理器上全速运行,而硬件算法需要先在仿真程序上完成测试和调拭;最后,C语言开发工具较同类硬件开发工具的成本要低得多。因此,工程人员一般倾向于在C语言或者类似的高级语言中开发算法。
一旦使用C语言这样的软件语言完成对某个算法的验证,设计人员必须测量其性能,并确定该算法是否能够完全在嵌入式处理器或是完全在硬件上运行、或者硬软件混合协处理实施方案是否为最佳选择。在这种判断过程中可以采用性能分析工具。如果代码必须被转到硬件上,则设计人员必须手工转换算法,或者使用C-to-FPGA工具。
C-to-FPGA工具可以让开发人员迅速把算法转换成HDL代码,优化生成的硬件处理器,并执行假设场景平衡性能和FPGA资源。该工具还能够让软件工程师使用FPGA内部的高性能数据处理逻辑,从而变身为硬件工程师。
使用Linux把处理器连接到FPGA
与FPGA制造商合作的Linux供应商已经开发完成了可让处理器与FPGA通信并对其进行控制的驱动程序。首先,您必须针对该I/O器件配置Linux。配置步骤由两个步骤组成。首先,把定制的驱动程序加载到Linux内核中:
随后,将驱动程序注册到特定的器件号码(比如253):
通信是通过开启该I/O器件、然后对该器件进行读写而完成的,示例代码段如下所示:
FPGA的优势
信号处理器系统的数据带宽要求往往会超过通用处理器能经济地获得的水平。在这种情况下,设计人员一般会把他们的数据处理系统划分为两个处理功能:使用通用处理器进行控制处理,另外使用诸如FPGA等硬件加速器进行数据处理。这样就构成了一个控制平面/数据平面处理系统。
FPGA非常适用于同时实施控制平面和数据平面功能。一个FPGA可以包含一个或者多个像MicroBlaze这样软处理器,和/或像PowerPC这样的硬处理器。将它们集成到FPGA中可以实现控制平面处理器和数据平面处理系统之间的低时延、高带宽通信。
借助向导和预先构建的参考设计,针对嵌入式和数据处理功能的系统编译简单明了。通过把在C语言中构建的算法原型转换到高性能硬件处理单元,C-to-FPGA工具有助于优化这一进程。最后,可以利用现在可用的Linux驱动程序方便地完成处理器和FPGA信号处理流水线之间的通信及控制编码。
我们的案例研究是一个典型的应用示例。在这个例子中,通过低成本通用处理器处理HD视频流是不合实际的,但是可以通过FPGA内部的信号处理流水线轻松加以解决。处理器随即被释放出来用于提供用户界面、网络和系统管理功能,并同时监测和控制信号处理流水线。
评论