在很多年以前的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. 基于HTML5 SVG炫酷文字爆炸特效

    这是一款使用html5 svg.css3和js制作的炫酷文字爆炸特效.该文字特效用SVG path属性将文字路径切割为很多小块,然后使用css3和js在鼠标滑过文字时制作文字爆炸分裂的炫酷效果. 在线 ...

  2. 项目源码--Android聚合视频类播放器

    下载源码 技术要点:  1.高效支持主流的视音频格式 2.本地视频的播放与管理 3.聚合电视在线直播 4.聚合优酷.搜狐.乐视.爱奇艺等多种在线视频 5.优质播放,包含播放.暂停,声音.亮度调整等功能 ...

  3. Busybox支持中文的解决办法

    转载:http://blog.csdn.net/wavemcu/article/details/7202908 ******************************************** ...

  4. 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)

    转:http://blog.csdn.net/zyb19831212/article/details/1887930 一.什么是文件系统 (Filesystem): A directory struc ...

  5. BootStrap2学习日记21---消息提示

    <p><a href="#" title="中国(China),位于东亚,是一个以华夏文明为主体.中华文化为基础,以汉族为主要民族的统一多民族国家,通用 ...

  6. [Java] 内部类总结

    内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权 ...

  7. Objective-C 高级编程:iOS与OS X多线程和内存管理

    <Objective-C 高级编程:iOS与OS X多线程和内存管理> 基本信息 原书名: Pro Multithreading and Memory Management for iOS ...

  8. POJ 2236 Wireless Network (并查集)

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 18066   Accepted: 761 ...

  9. Oracle存储过程的调用(返回参数)

    CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OU ...

  10. Sqlite3笔记

    .tables 查看表.databases 创建数据库alter table 表名 RENAME TO 新表名ALTER TABLE 表名 add column 列名 datatype [DEFAUL ...