首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

运用FPGA进行控制平面/数据平面视频处理(2)

运用FPGA进行控制平面/数据平面视频处理(2)

HD视频识别系统案例研究

目标检测和识别广泛应用于监控、医学成像和工厂自动化等行业。图像的分辨率越高,目标识别的准确度越高。因此,对HD摄影机和相关的HD视频流处理功能的需求较为强劲。我们的案例研究从这个问题(受一部著名的动画电影启发)出发:我们能否检测并高亮显示720pHD视频流中的小丑鱼?

该设计需要16位色谱,以便识别小丑鱼的条纹图案。一旦识别,小丑鱼在屏幕上将被移动的聚光灯并高亮显示。此外,聚光灯的大小经设计后可以随匹配的似然性而调整(实际上,系统降低了聚光灯外的其他区域的图像亮度)。聚光灯的尺寸变化和形状计算以及为在每个像素位置搜索克隆鱼所进行的比较,将需要大量的计算以使其工作于74.25MHz的时钟周期。显然,这样的处理要求大大超出了一般嵌入式处理器的能力。

在这种情况下,最好的解决办法是把流数据处理转移到协处理器上。在FPGA内部实施协处理器能够以最低成本灵活构建能够满足性能要求的解决方案。因此,基于FPGA的控制平面/数据平面架构就是最佳的选择。FPGA嵌入式处理可以通过总线接口控制负责接收视频数据、探测小丑鱼、高亮显示小丑鱼并输出供显示之用的视频数据的数字信号处理流水线。

因此,在本目标检测和高亮显示案例中,我们选择50MHz的MicroBlaze嵌入式处理器来管理和控制74.25MHz的数据处理流水线,同时管理用户界面。在免除了实际执行视频处理的责任后,处理器可以处理许多其他的功能,比如托管以太网数据通信、管理图形用户界面、对数据处理流水线进行精细控制(例如,逐帧增益控制)等。

诸如Linux这样的操作系统是提供多任务功能、网络协议栈和用户界面语言支持的理想选择。图3显示了所实施系统的方框图。该解决方案可以在高数据处理带宽需求和用软件控制数据处理方式之间实现理想的平衡。

图3:小丑鱼探测器控制平面/数据平面系统。

采用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内部的信号处理流水线轻松加以解决。处理器随即被释放出来用于提供用户界面、网络和系统管理功能,并同时监测和控制信号处理流水线。
继承事业,薪火相传
返回列表