Vivado HLS与System Generator:联系与区别
在很多年以前的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:联系与区别的更多相关文章
- 利用system generator 生成vivado ip—以低通滤波器举例
前段时间自学了matlab和vivado联合推出的system generator工具,用来做数字信号处理,十分好用且使开发更便捷,下面举个例子来供大家一起学习下. 首先打开matlab命令行,输入s ...
- System Generator 生成IP核在Vivado中进行调用
System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...
- ZED-Board从入门到精通系列(八)——Vivado HLS实现FIR滤波器
http://www.tuicool.com/articles/eQ7nEn 最终到了HLS部分.HLS是High Level Synthesis的缩写,是一种能够将高级程序设计语言C,C++.Sys ...
- 基于Vivado HLS在zedboard中的Sobel滤波算法实现
基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard + Webcam 工具:g++4.6 + VIVADO HLS + XILINX EDK + ...
- System Generator入门笔记
System Generator入门笔记 [CPLD/FPGA] 发布时间:2010-04-08 23:02:09 System Generator是Xilinx公司进行数字信号处理开发的一种设计 ...
- 利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
一.前言 利用FPGA设计算法一直以来都是热点,同样也是难点.将复杂的数学公式 模型通过硬件系统来搭建,在低延时 高并行性等优势背后极大提高了设计难度和开发周期.Xilinx公司的sysGen(sys ...
- system generator学习笔记【01】
作者:桂. 时间:2018-05-18 18:26:50 链接:http://www.cnblogs.com/xingshansi/p/9045914.html 前言 学习使用system gene ...
- System.out.println与System.err.println的区别(输出顺序!!!)
System.out.println与System.err.println的区别(输出顺序!!!) 分类:java (208) (0) System.out.println与System.err.p ...
- System.Windows.Forms.Timer与System.Timers.Timer的区别(zz)
.NET Framework里面提供了三种Timer: System.Windows.Forms.Timer System.Timers.Timer System.Threading.Timer VS ...
随机推荐
- 用 Gearman 分发 PHP 应用程序的工作负载
尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面.如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应.实 ...
- 16g u盘变 成1g u盘 解决方案,使用驱动器中的光盘之前需要将其格式化
1\ 计算机----管理------磁盘管理 有一个黑色区域是未分配的 2\ 1)进入cmd 命令行窗口2)输入 diskpart,并回车.弹出系统提示,选是即可.3)输入 list disk,并回 ...
- nginx的监控配置
最近在弄性能,在性能过程中需要监控nginx的一些配置,这里简单的搭建了环境 //下载nginx 根据自己的版本 wget http://nginx.org/download/nginx-1.6.0 ...
- iOS获取设备型号
导入头文件 #include <sys/types.h> #include <sys/sysctl.h> 直接调用 //获得设备型号 + (NSString *)getCurr ...
- IE 9渲染overflow的bug及解决
问题: table父级元素div设置overflow:auto, 当触发table中的checkbox,dropdownlist事件控件时,父级div高度会自动增加(在底部增加空白行). 解决方案: ...
- js的时间操作方法
1.js获取系统时间格式为YYYY-MM-DD HH:MM:SS 1 function curDateTime(){ 2 var d = new Date(); 3 var year = d.getY ...
- C#中Invoke和BeginInvoke的区别
1.Invoke() 调用时,Invoke会阻止当前主线程的运行,等到 Invoke() 方法返回才继续执行后面的代码,表现出“同步”的概念. 2.BeginInvoke() 调用时,当前线程会启用线 ...
- Node.js学习笔记(1)
Node是用c++语言开发,能运行javascript语言的环境. 使用的时候格式为node helloworld.js,helloword.js为服务器端或者系统级端的javascript代码. N ...
- codeforces 677D D. Vanya and Treasure(二维线段树)
题目链接: D. Vanya and Treasure time limit per test 1.5 seconds memory limit per test 256 megabytes inpu ...
- hdu 4725 最短路
思路:将每个layer拆成两个点,编号为N+x,和N+N+x.对所有属于layer x的点i,建N+x到i的有向边,在建i到N+N+x的有向边.最后对所有x号layer和x+1建一条N+N+x到N ...