基于FPGA的图像处理(一)--System Generator介绍

        计算机视觉系统通常需要进行大量的信息处理才能够得到所需要的信息。目前主要有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芯片不再扮演胶合逻辑的角色,而成为数字信号处理系统的核心器件。在芯片内,不仅包含了逻辑资源,还有多路复用器、存储器、硬核乘加单元以及内嵌的处理器等设备,并且还具备高度并行计算的能力,使得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:\MATLAB\R2007a);
  • 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设计流程


转载于:https://www.cnblogs.com/libing64/archive/2012/11/03/2878727.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

营销组合(4P营销)分析案例:采用SPSS+Excel进行分析

文章目录1、研究目的:营销决策2、研究内容:营销组合分析2.1规模预测分析2.1.1 预测思路与方法2.1.2季节分解法预测市场规模2.2 产品属性分析2.2.1 KANO模型基本思想2.2.2 KANO模型的数据分析步骤2.2.2.1 数据准备2.2.2.2 Better—Worse系数矩阵2.3 定价决…

LeetCode MySQL 1445. 苹果和桔子

文章目录1. 题目2. 解题1. 题目 表: Sales ------------------------ | Column Name | Type | ------------------------ | sale_date | date | | fruit | enum | | sold_num | int | ------------------------ (sale_date,fruit) 是该表主…

台达plc自由口通讯_台达PLC和ABB机器人Devicenet通讯

之前有经常遇见台达PLC和第三方机器人进行Devicenet通讯,故作以下整理,方便再次使用。以台达模块DVPDNET-SL与ABB IRC5通讯为例,方法如下:1.硬件连线将PLC模块端和Robot端按照引脚定义接好网线。2.设定模块地址。3.设定模块通讯速…

关于Unix哲学

今天看了一篇文章关于Unix哲学的,写的不错这里做个摘录。 原文地址:http://www.ruanyifeng.com/blog/2009/06/unix_philosophy.html 1. 清晰原则。 代码要写得尽量清晰,避免晦涩难懂。清晰的代码不容易崩溃,而且容易理解和维护。重…

电子商城战略分析(采用定性与定量分析方法)

文章目录研究目的:战略选择研究内容:环境分析宏观环境分析市场环境分析竞争环境分析定性与定量分析方法定性:SWOT分析定量:内外因素评价矩阵内外因素数据获取内外因素得分计算评分的计算权重的计算最终得分的计算制作战略选择矩阵…

LeetCode MySQL 1393. 股票的资本损益

文章目录1. 题目2. 解题1. 题目 Stocks 表: ------------------------ | Column Name | Type | ------------------------ | stock_name | varchar | | operation | enum | | operation_day | int | | price | int | ------------…

厂办大集体改制不签字_许昌二印,磨砂技术被外国觊觎,老工人说烂在肚子里也不外漏...

仓库租赁成为学习班和俱乐部场所市区计划改造提升老厂院10个,许昌市第二印刷厂有其一。今天,我们一起了解,许昌市第二印刷厂。当时,全国仅三家印刷厂能印制磨砂烟盒,市第二印刷厂位列其中。(你当年抽的磨砂许昌的包装&…

Kaggle:Video Game Sales电子游戏销售分析(Tableau展示)

文章目录项目介绍分析思路导图数据导入数据探索数据展示项目介绍 项目来源:Kaggle; 项目介绍:由vgchartz.com的一个刮版生成的,有一份综合的游戏行业销售数据,希望产生一份综合的游戏行业报告; 数据介绍&a…

LeetCode MySQL 1204. 最后一个能进入电梯的人(累加/变量/窗口函数)

文章目录1. 题目2. 解题1. 题目 表: Queue ---------------------- | Column Name | Type | ---------------------- | person_id | int | | person_name | varchar | | weight | int | | turn | int | ---------------------- person_id 是这个…

facenet训练自己的数据_①如何帮助自己简易分析体测数据②没有私教一个人无法开始训练?...

我们进健身房后,办卡以后,会有教练联系免费帮你做检测,检测后会拿出一张纸,聊完天,你就拿出一张卡,抱着一两个月我就会有巨大改变的决心,你辛苦赚的万八千就消失了.这张纸真的有这么…

Power Bi:零售数据可视化

文章目录理解数据含义确定需要解决的问题根据问题新建度量值确定背景、主题、字体及字体大小结果展示理解数据含义 本次可视化共有四张表,根据数据说明文档选择自己需要的特征,不需要的数据列隐藏。 确定需要解决的问题 根据问题新建度量值 确定背景…

excel打开csv错误换行_「乱吐槽·乱学习」excel高手捷径:一招鲜,吃遍天③

大家好,我是阿乱。话说三十而立,至于立的是什么玩意儿就见仁见智吧(≧∇≦)ノ,不过旗杆什么的先放下来哈,咱们这里说的是身上得有多几个技能,好让我们立于不败之地嘛。当然也欢迎年轻人加入啦,反…

POJ 3694 Network

大意:让你求无向图的桥(割边) 思路:一次查询,重建一次图,然后求一次割边,TLE。去网上开了看资料,可以用LCA暴力查询,唔,改天看看LCA。 TLE CODE: …

LeetCode MySQL 1308. 不同性别每日分数总计(累加/变量/窗口函数)

文章目录1. 题目2. 解题1. 题目 表: Scores ------------------------ | Column Name | Type | ------------------------ | player_name | varchar | | gender | varchar | | day | date | | score_points | int | -----------------------…

Power Bi:DAX函数总结

文章目录日期与时间函数筛选器函数逻辑判断函数逻辑函数统计函数文本函数日期与时间函数 1.计算年初至今累计--TOTALYTD函数例如计算年初至今累计的销售金额: [年累计金额]: TOTALYTD([销售金额],日历年[日期]) # 如果要加上一个时间截止点,…

javascript “||”、“”的运用

你是否看到过这样的代码:aa||""; 可能javascript初学者会对此感到茫然。今天就跟大家分享一下我的一些心得。 其实,以下三种方式是完全等价的 aa||"defaultValue"; if(!a){a"defaultValue";} if(anull||a""||aundefined){…

MySql:函数总结

文章目录字符串函数数学函数日期和时间函数流程函数其他函数字符串函数 数学函数 日期和时间函数 流程函数 其他函数

endnote怎么和word关联_endnote x9怎么和word关联?Word中用EndNote X9教程

刚刚接触EndNote X9这款文献写作管理软件,不能熟练的在Word中用EndNote X9引入文献,不知道endnote x9怎么和word关联。这里小编为大家带来了Word中用EndNote X9教程,一起来看看吧!下载安装好 word2019与endnote X9打开系统偏好设置…

[Hands On ML] 6. 决策树

文章目录1. 训练与可视化2. 分类预测3. 模型参数4. 回归5. 不稳定性本文为《机器学习实战:基于Scikit-Learn和TensorFlow》的读书笔记。 中文翻译参考 《统计学习方法》决策树笔记 决策树可以分类,也可以回归,还有多输出任务 是随机森林的基…

【转载】KMP算法详解

如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢 这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符…