Vivado HLS与System Generator:联系与区别

时间:2022-08-31 20:39:39

在很多年以前的ISE套件里面,有个功能强大的AccelDSP,它可以可自动地进行浮点到定点转换,并把算法生成可综合的HDL,还可以创建用于验证的测试平台,但是在4年前左右的时候销声匿迹了,当时的说法是市场策略的问题。几年之后Vivado HLS横空出世,具备了更加强大的分析、综合、验证等功能,使得我们可以快速把现有的C/C++代码在满足HLS设计规范的情况下直接生成可综合的结果。在这前后的时间里面,我们还有一个工具可以直接把现有的算法生成可综合的结果,而不需要或者只需要很少的手工HDL编写,那就是System
Generator。那HLS和System Generator既然都可以生成现成的可综合HDL代码,那么它们直接有什么区别和联系呢?我们可以在此做一些简单的探讨,不足之处请大家指出。(1)相比于手工编码,Vivado HLS与System Generator都是在一种更高层次的级别上进行设计。       Vivado HLS是把现有的基于C/C++/SystemC的算法直接在基于Eclipse的编译环境中进行开发、验证并生成可综合的代码,只要对FPGA的基本结构有了一定的了解,我们很容易以开发软件类似的方式完成算法的综合,开发效率是不言而喻的。      
System Generator同样可以把现有的算法在Simulink环境中进行开发、仿真验证、FPGA在回路验证等等,而且它不仅可以生成可综合的HDL、EDK中使用的IP,甚至可以直接生成bit流文件。当然,因为在使用System Generator设计时要直接使用FPGA中的基本模块,开发人员要对FPGA的架构和开发方式更加熟悉,比如什么地方要插入寄存器保证时序,什么地方使用某些模块不会产生额外的硬件资源消耗等等。       做为全新的设计工具,目前看起来Vivado HLS的设计完成的速度要更快一些,当然Vivado套件中的System
Generator和ISE套件中的System Generator相比,生成速度已经提高了很多了。(2)二者都是基于模型的设计方法中的重要手段       基于模式的设计(MBD)在复杂的嵌入式系统中的应用越来越广泛了,因为结合了Matlab/Simulink设计方法,验证与测试工作可以多次、反复地高效运行,并且使用了自动代码生成技术,开发、验证与确认等工作的效率大大提高。       假设我们已经有了一个基于C/C++的,或者在Simulink环境中已经充分验证了的代码,那我们至少有四种途径直接生成可综合的HDL代码,包括:      
把Simulink模型用System Generator中的模块重新搭建(可以自己编写个m文件,标明替换规则,然后自动替换,但是不是万能的,什么时候Xilinx出一个就好了),然后进行直接仿真验证、基于JTAG/以太网的FPGA在回路测试、ModelSim仿真等等,最后可以生成HDL文件、IP、综合网表、比特流等。       用Matlab的HDL Coder/HDL Verifier进行HDL文件的生成、测试等。它的测试、验证思想等与System Generator是一致的,但是因为它并不是专门针对Xilinx
FPGA的,所以生成的都是标准的HDL,对IP、硬件资源的使用以及不如System Generator灵活。       使用Matlab/Simulink/Embeded Coder直接把现有的模型生成C代码,这个代码生成速度和测试、验证是很快的,是MBD开发的一种典型方式。使用生成的C代码,或者使用现有的C代码,然后就可以使用Vivado HLS进行高层次的综合工作了。(3)二者可以互相转换、调用       说了这么多,那Vivado HLS和System Generator如何进行一些互动呢?在Vivado开发环境下,得益于Vivado
IPI以IP为中心的这样的设计方法,它们直接的互动变得非常容易。例如:       把Vivado HLS综合的结果打包为一个IP,或者生成HDL代码,从而供System Generator直接调用;如果懒得验证,可以直接使用Vivado HLS模块;        在一个Vivado工程中,一部分功能可以由Vivado HLS综合而来,一部分现有的基于System Generator的算法直接被调用,它们便可以共同工作了。

转载地址:http://xilinx.eetrend.com/blog/6388

Vivado HLS与System Generator:联系与区别的更多相关文章

  1. 利用system generator 生成vivado ip—以低通滤波器举例

    前段时间自学了matlab和vivado联合推出的system generator工具,用来做数字信号处理,十分好用且使开发更便捷,下面举个例子来供大家一起学习下. 首先打开matlab命令行,输入s ...

  2. System Generator 生成IP核在Vivado中进行调用

    System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...

  3. ZED-Board从入门到精通系列(八)——Vivado HLS实现FIR滤波器

    http://www.tuicool.com/articles/eQ7nEn 最终到了HLS部分.HLS是High Level Synthesis的缩写,是一种能够将高级程序设计语言C,C++.Sys ...

  4. 基于Vivado HLS在zedboard中的Sobel滤波算法实现

     基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard  + Webcam 工具:g++4.6  + VIVADO HLS  + XILINX EDK + ...

  5. System Generator入门笔记

    System Generator入门笔记  [CPLD/FPGA] 发布时间:2010-04-08 23:02:09  System Generator是Xilinx公司进行数字信号处理开发的一种设计 ...

  6. 利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator

    一.前言 利用FPGA设计算法一直以来都是热点,同样也是难点.将复杂的数学公式 模型通过硬件系统来搭建,在低延时 高并行性等优势背后极大提高了设计难度和开发周期.Xilinx公司的sysGen(sys ...

  7. system generator学习笔记【01】

    作者:桂. 时间:2018-05-18  18:26:50 链接:http://www.cnblogs.com/xingshansi/p/9045914.html 前言 学习使用system gene ...

  8. System.out.println与System.err.println的区别(输出顺序!!!)

    System.out.println与System.err.println的区别(输出顺序!!!) 分类:java (208)  (0) System.out.println与System.err.p ...

  9. System.Windows.Forms.Timer与System.Timers.Timer的区别(zz)

    .NET Framework里面提供了三种Timer: System.Windows.Forms.Timer System.Timers.Timer System.Threading.Timer VS ...

随机推荐

  1. git本地提交到远程仓库命令

    创建好远程仓库,然后要从本地上传代码到远程仓库: 1.git init 初始化git本地仓库 2. git add 添加到暂存区 3. git commit -am "提交备注" ...

  2. android5.0 编译

    android5.0编译需要jdk1.7版本,将来本地可能需要同时维护两套jdk版本,请参考: 在线安装openjdk1.7 sudo apt-get install openjdk-7-jre op ...

  3. SharePoint 2013 开发——APP安全模型

    博客地址:http://blog.csdn.net/FoxDave 除非开启了SharePoint网站的匿名访问,否则对于入站的请求,必须要有一个身份验证的过程(Authentication),这个 ...

  4. 深入理解jQuery插件开发(转)

    如果你看到这篇文章,我确信你毫无疑问会认为jQuery是一个使用简便的库.jQuery可能使用起来很简单,但是它仍然有一些奇怪的地方,对它基本功能和概念不熟悉的人可能会难以掌握.但是不用担心,我下面已 ...

  5. Unity 特殊文件夹 Assets Resources StreamingAssets Editor Plugins......

    AssetsAssets文件夹是unity项目中放置游戏资源的主文件夹. 该文件夹中的内容将直接反应在编辑器的Project视口中.许多系统API基于该文件夹路径. ResourcesUnity允许你 ...

  6. 解决Ubuntu自带编译器不好使问题

    解决Ubuntu自带编译器不好使问题 1.删除Ubuntu自带的tiny版本,这个版本用起来很别扭不好使. 2.安装full版本的vim 3.显示效果:full版本. 之前自带的版本:

  7. 2017-4-28/PHP实现Redis

    谈一谈Redis的数据结构,如果换做PHP,怎么实现?如果再考虑用上LFU或LRU,又该如何实现?   Redis的数据结构有String.List.Set.Sorted Set.Hash等,而PHP ...

  8. Cascade Classifier Training 没有基础也会目标检测啦

    Cascade Classifier Training 具体自己看: http://docs.opencv.org/2.4.13.2/doc/user_guide/ug_traincascade.ht ...

  9. ByteBuffer: 当由一个byte[]来生成一个固定不变的ByteBuffer时,使用ByteBuffer.wrap(byte[]);

    StringBuilder sb = new StringBuilder(1024); //向sb中写入900个左右的随机字符内容 for(int j=1; j< 50;j++) { sb.ap ...

  10. DMA

    DMA:如果将一串字符串通过串口传送到外设中去,用传统的方法,则CPU将不断的去扫描UTSTAT这个寄存器,在字符发送期间,CPU将不能做任何其他事情.为了解决这个问题,则在诞生了DMA CPU只需要 ...