计算机视觉系统通常需要进行大量的信息处理才能够得到所需要的信息。目前主要有CPU、GPU、ASIC、DSP、FPGA等计算平台。
常用的计算机视觉系统通过通用计算机进行视觉信息处理,但是,由于CPU的计算能力有限,对于一些计算复杂度很高的视觉算法,其处理速度常常难以满足系统的实时性需要。
GPU具有高度的并行计算能力,可以较好地解决计算速度的问题,然而,基于GPU的计算机视觉系统存在着功耗较高、体积较大的缺点,难以满足依靠自身所带电池供电并长时间工作的服务机器人等应用系统的需要。
利用专用集成电路ASIC实现视觉处理算法,可以解决视觉系统性能和体积、功耗之间的矛盾,是高性能嵌入式视觉系统的一种有效的解决方案。然而,ASIC开发周期长、修改不方便,通用性较差。
FPGA可以通过编程方便地修改其内部的逻辑功能,从而实现高速的硬件计算和并行运算,是高性能嵌入式视觉系统的一种更加方便的解决方案。基于FPGA的嵌入式视觉系统的功耗远远低于基于CPU和GPU的视觉系统,FPGA的功耗通常不到1W,而高性能CPU和GPU的功耗通常都在100W以上。随着技术的不断进步,FPGA的集成度越来越高,可以实现的设计规模越来越大,而功耗则越来越低。因此,基于FPGA的嵌入式视觉系统将是计算机视觉系统的重要发展方向。
使用FPGA进行图像处理时,既要对赢家有很深的了解,同时又需要对图像处理的算法很熟悉。即使如此,如果打算使用HDL语言去实现图像处理的算法,依然有很大的难度。而MathWorks公司和Xilinx公司联合推出的System Generator则刚好可以解决这个问题。在System Generator和Matlab安装之后,会在Simulink中添加一些Xilinx公司提供的模块,使用类似Simulinlk的方式搭建图像处理算法,可以进行仿真、硬件协仿真、直接生成HDL代码、生成TestBench,极大的提高开发的效率。
一、 System Generator简介
目前的FPGA芯片不再扮演胶合逻辑的角 {MOD},而成为数字信号处理系统的核心器件。在芯片内,不仅包含了逻辑资源,还有多路复用器、存储器、硬核乘加单元以及内嵌的处理器等设备,并且还具备高度并行计算的能力,使得FPGA已成为高性能数字信号处理的理想器件,特别适合于完成数字滤波、快速傅立叶变换等。但遗憾的是,FPGA并未在数字信号处理领域获得广泛应用,主要原因就是:首先,大部分DSP设计者通常对C语言或MATBLAB工具很熟悉,却不了解硬件描述语言VHDL和Verilog HDL;其次,部分DSP工程师认为对HDL语言在语句可综合方面的要求限制了其编写算法的思路。基于此,Xilinx公司推出了简化FPGA数字处理系统的集成开发工具System Generator for DSP,快速、简易地将DSP系统的抽象算法转化成可综合的、可靠的硬件系统,为DSP设计者扫清了编程的障碍。
System Generator for DSP 是业内领先的高级系统级FPGA开发工具,借助 FPGA 来设计高性能 DSP 系统,其强大的提取功能可利用最先进的FPGA芯片来开发高度并行的系统,并和Simulink(MathWorks公司产品)实现无缝链接,快速建模并自动生成代码。此外,System Generator是Xilinx公司XtremeDSP解决方案的关键组成,集成了先进的FPGA设计工具以及IP 核,支持Xilinx公司全系列的FPGA芯片,提供从初始算法验证到硬件设计的通道。System Generator最大的特点就是可利用Simulink建模和仿真环境来实现FPGA设计,而无需了解和使用 RTL级硬件语言,让DSP设计者能够发挥基于FPGA的DSP的最大性能和灵活性,并缩短整个设计的周期。
典型的System Generator工程设计实例如图8-1所示。可以将System Generato看成MATLAB软件中的一个硬件设计工具包,提供了丰富的应用子模块,所有的硬件综合和实现信息都将被自动添加到芯片配置文件中,用户不必熟悉FPGA的设计流程以及HDL语言,只需要经过拖拽和连接将子模块搭成应用系统即可。
图7-1 典型的System Generator工程设计实例示意图
二、System Generator的主要特征
System Generator是用高性能DSP系统的快速建模和实现工具,是DSP高层系统和Xilinx FPGA之间的桥梁,其作用如图8-2所示。可在MATLAB/Simulink环境下对算法以及系统建模,并生成相应的工程,再调用ISE相应的组件进行仿真、综合、实现,并完成芯片的配置。整个开发的过程肯定是反复迭代、修正的,其中不可缺少的纽带就是System Generator。
图7-2 System Generator的作用
System Generator在Simulink中可当作一个用户程序包,自动将模型化的数字系统设计转换成硬件电路,其主要特征如下:
1.丰富的DSP模块
提供了包含信号处理(如FIR滤波器、FFT)、纠错(如Viterbi 解码器、Reed-Solomon编码器/解码器)、算法、存储器(如FIFO、RAM、ROM)及数字逻辑功能的Xilinx模块集,可快速、高效地在Simulink内构建和调试高性能DSP系统。此外,Xilinx模块集提供的模块可以使用户导入.m函数及HDL模块
2.Simulink设计的VHDL或Verilog的自动代码生成
设计人员无需掌握HDL语言即可开发数字处理系统,且所得到的设计具备HDL设计所有的优点。用户也可以通过基本的子模块生成功能特征明确的System Generator IP Core,作为大型设计的一部分使用。同样,掌握了RTL设计的用户,可更好地利用System Generator。
3.硬件协仿真
提供了创建“FPGA 在环路(FPGA-in-the-loop)”仿真对象的代码生成功能,可加速用户的硬件验证工作并加速其在Simulink与MATLAB中的仿真。目前,System Generator支持以太网(10/100/吉比特)、PCI、Cardbus及硬件平台与Simulink之间的JTAG通信。
4.嵌入式系统的硬件/软件协设计
提供了嵌入式系统的硬件/软件协设计能力,可直接加载Xilinx公司的MicroBlaze 32位 RISC处理器,甚至构建和调试DSP协处理器。System Generator提供了硬件/软件接口的共享存储器提取功能,自动生成DSP协处理器、总线接口逻辑、软件驱动器以及协处理器使用方面的软件技术文档。
System Generator软件的安装和配置
1.软件需求
System Generator软件版本必须和ISE版本一致,同时要有匹配的MATLAB版本才能正常工作。对于System Generator 9.1,需要以下的软件环境:
- MATLAB的版本为MATLAB v7.3/Simulink v6.5(R2006b)或者MATLAB v7.4/ Simulink v6.6(R2007a)。注意:MATLAB软件的安装路径上不能出现空格。(如:可以为C:MATLABR2007a);
- ISE的版本为9.1.01i或者更高版本,ISE Simulator的版本为完全版;
- IP核库的版本为ISE IP 9.1i Update 1或者更高版本。
需要注意的是:系统环境变量$XILINX必须设置为ISE的安装目录。
同样,System Generator对常用的第三方软件也有相应的版本要求:
- 综合工具Synplify Pro的版本为v8.6.2或者v8.8.0.4;
- 仿真工具ModelSim的版本至少为PE或者SE v6.1f以及更高版本。
2.System Generator的安装
System Generator的安装软件只能通过网站下载的方式得到,网址为http://www.xilinx.com/ise/optional_prod/system_generator.htm。在安装System Generator之前,需要关闭所有的ISE以及MATLAB应用程序,然后双击安装软件的图标,即弹出图8-3所示的欢迎界面。
图7-3 System Generator的安装欢迎界面 图7-4 System Generator安装时的MATLAB版本选择界面
点击“Next”按键进入软件安装协议说明界面,选中“I Agree”选项进入MATLAB版本选择界面,安装程序会自动列出已安装的MATLAB代码,如图8-4所示(由于只安装了MATLAB 2006b版本,所以只有一个版本)。
继续点击“Next”按键,进入安装路径选择界面,同时安装程序会给出所需的磁盘空间大小,对于9.1版需要118M字节的空间。再点击“Next”按键进入安装进程界面,安装完成后的界面如图8-5所示,点击“Close”按键完成安装。
图7-5 System Generator安转完成提示界面
3.Xilinx HDL库的编译和配置
如果要在ModelSim中完成System Generator设计的仿真,则需要编译所有的IP库模块。由于ModelSim存在PE、SE以及XE等不同的版本,下面分别介绍其编译方法。
1)ModelSim(PE or EE/SE)
Xilinx提供了名为compxlib的库编译工具,在DOS模式下完成库的编译。例如命令:
compxlib –s mti_se –f all –l all
可编译生成ModelSim SE版本中VHDL以及Verilog HDL两种语言的库。完成的compxlib编译指令可查阅Xilinx软件文档《Synthesis and Simulation Design Guide》,也可以直接在
http://toolbox.xilinx.com/docsan/xilinx82/books/docs/sim/sim.pdf的网址中在线查阅。
2)ModelSim(XE)
对于ModelSim XE(Xilinx Edition)版本,则可直接从Xilinx网站上下载已经过编译的库压缩包,其网址为:
http://www.xilinx.com/xlnx/xil_sw_updates_home.jsp?update=mxe_libs。然后将其解压缩到ModelSim XE的安装文件夹中,这是ModelSim的默认寻找路径,因此不用对modelsim.ini文件作任何修改。
三、System Generator开发流程简介
本节介绍使用System Generator设计数字系统的常用步骤。在Simulink的可视化环境中,根据系统设计功能将Xilinx模块连接成所设计的系统,并定义合适的系统参数;而后运用System Generator将Simulink模型转换成硬件可执行模型,将系统定义的参数对应至硬件实现的实体以及输入输出端口,并会自动完成综合、仿真与实现。整个开发流程分为浮点算法开发、定点算法实现、硬件系统设计以及代码优化4个步骤。
1.浮点算法开发:利用MATLAB软件及其提供的工具包快速地完成浮点算法的开发、验证以及性能评估,借助于Simulink可快速完成原型设计和模型分析。
2.定点算法实现:将MATLAB浮点算法通过AccelDSP在Xilinx器件上实现定点逻辑。AccelDSP直接将浮点MATLAB算法的M-文文件自动生成可综合的RTL模型。AccelDSP综合工具是基于高级MATLAB语言的工具,用于设计针对Xilinx FPGA的DSP块。该工具可自动地进行浮点-定点转换,生成可综合的VHDL或Verilog HDL设计,并创建用于验证的测试平台。并且,还能以报告的形式提供资源利用率、吞吐量和延迟等指标,从而根据实际工程需要来设置系统级要求,借助于IP-Explorer技术来实现面积和速度的折中,快速地选择最佳的芯片设计。
3.硬件系统设计与实现:定义使用Xilinx IP的详细硬件架构,采用System Generator for DSP 划分协处理器和可编程器件之间的设计。System Generator可满足FPGA流程中所有需要的功能要求,对于用户而言,通过点击按键即可将模型设计转换成HDL语言,在此过程中会生成下列文件:
- 设计所对应的HDL程序代码。
- 时钟处理模块,包括系统时钟处理操作以及生成设计中所需的不同频率的时钟信号。
- 用于测试设计的HDL测试代码,可直接将其仿真结果和Simulink输出比较。
- 工程文件以及综合、实现过程所产生的各种脚本文件。
4.代码优化:利用ISE RTL设计环境生成优化的FPGA设计,属于高级应用,要求设计者不仅要熟悉算法的架构、瓶颈,还需要精通RTL设计。对于一般设计,如果系统硬件资源够用,再加上设计周期短,则可忽略这一步。
在Simulink可视化设计环境中,重要的是:在Simulink环境中实现定点算法,根据系统设计功能将Xilinx模块连接成设计系统,并定义合适的系统参数;而后利用System Generator将Simulink模型转换为可执行的硬件模型,将系统定义的参数对应到硬件实现的模块、输入/输出端口等属性;再借助于ModelSim软件验证相应的设计是否和Similink输出一致,否则需要重新修改设计;最后将设计生成可对器件编程的比特流文件,将其下载到目标芯片中。因此,典型的开发流程如图8-6所示,其中System Generator会自动为FPGA的综合、HDL仿真以及实现生成命令文件,用户只需完成Simulink设计以及比较最终的RTL输出结果。整个开发流程都是在可视化的环境中完成的。
图7-6 典型的System Generator设计流程