- 博客(9)
- 收藏
- 关注
原创 在Zynq AP SoC设计中使用HLS IP(二)
概述对于硬件加速模块来说,这些硬件加速模块会消耗源于CPU存储器的数据,并且以streaming方式产生数据。本文使用Vivado HLS和xfft IP模块(在IP Integrator使用HLS IP那节用过)。这些模块是连接到HP0的AXI4从端口,使得zynq7处理系统的数据通过AXI DMA IP核。硬件加速模块是免费的运行,并不需要驱动,只要数据被CPU推送(通常简称为处理系统或PS)。
2016-12-12 16:41:58
1444
原创 在Zynq AP SoC设计中使用HLS IP(一)
概述高层次综合设计最常见的的使用就是为CPU创建一个加速器,将在CPU中执行的代码移动到FPGA可编程逻辑去提高性能。本文展示了如何在Zynq AP SoC设计中使用HLS IP。在Zynq器件应用Vivado HLS IP这里集成了HLS IP和由HLS创建的软件驱动,目的是控制在Zynq器件上实现的IP设计。Step 1: 创建Vivado HLS IP Block 脚本完成时,会生成vhls
2016-12-12 01:36:47
1720
原创 复合数据类型在Vivado Hls中的应用
在C++中常用的复合数据类型,一种是结构体,另一种就是枚举类型。struct对于struct来说,如果出现在顶层函数,并作为顶层函数参数的时候,struct里的scalar变量就会被映射scalar类型的端口,数组就会被映射为相应的memory端口。在实际使用中,建议预先把结构体在头文件里声明。对于结构体中的元素,Vivado hls里提供相应的data pack优化方式,这种优化方式分为两种,即f
2016-12-03 22:03:33
1028
原创 如何在IP Integrator中使用HLS IP
概叙通常来说,我们不仅要用高级综合package RTL,还可以利用内部IP Integrator。本文是一个复杂的FFT数据块的设计,介绍如何设计HLS IP,并且在IP Integrator中使用它来作一个设计——这里生成两个HLS blocks的IP,并且在一个FFT(Xilinx IP)的设计中使用他们,最终使用RTL testbench来验证设计。集成带有Xilinx IP Block的
2016-12-03 20:34:38
1491
原创 Vivado Hls 设计优化
在使用高层次综合时,创造高质量的RTL设计时,一个重要部分就是对C代码进行优化。Vivado Hls总是试图最小化loop和function的latency,为了实现这一点,它试图在loop和function上并行执行尽可能多的操作。在function级别上,高级综合总是试图并行执行function。 除了这些自动优化,directive是用来: (1) 并行执行多个tasks,例如,同一个函数
2016-11-29 07:40:22
6242
原创 Vivado Hls 设计分析
概叙设计方法:综合设计回顾最初的结果应用优化的 directives去提高效率你可以重复上述步骤,直到达到要求。然后,你可以重新审查设计去提高面积。此过程的关键部分是分析结果,下面通过一个project来介绍如何使用reports和 GUI perspective 去分析设计,并且决定用哪种solution去应用相应的优化。* directive简介*创建solution时,directiv
2016-11-22 08:05:12
3362
原创 数据类型的转化
如何对任意精度类型的变量初始化对于ap_[u]int类型在C/C++里,是通过变量类型+变量名+数值,来对一个变量初始化,同样,对于任意精度的数据类型,我们也可以采用这种方式来进行变量初始化。在Vivado Hls里是支持copy initialization(Y)和direct initialization(Y)这两种方式来进行初始化,但不支持uniform initialization,同时,对
2016-11-14 13:23:21
2352
原创 Vivado HLs中任意精度数据类型的处理方法
我们在设计硬件时,它往往是要求更精确的位宽。例如,一个filter的输入是12位和一个累加器的结果只需要一个最大范围为27位。然而对于硬件设计来说,使用标准的C数据类型会造成硬件成本的浪费。这就会造成我们要使用更多的LUT和寄存器,延迟甚至可能超过时钟周期和需要更多的周期来计算结果。这往往不是我们需要的结果。因此下面我将介绍如何利用Vivado HLS处理许多位准确或任意精度数据类型,以及允许使用任
2016-11-13 22:03:38
7325
原创 Vivado Hls 设计流程总结
Vivado Hls 设计流程总结 对于Vivado Hls来说,输入包括Tesbench,C/C++源代码和Directives,相应的输出为IP Catalog,DSP和SysGen,特别的,一个工程只能有一个顶层函数用于综和,这个顶层函数下面的子函数也是可以被综合的,会生成相应的VHDL和Verilog代码,所以,C综合后的RTL代码结构通常是跟原始C描述的结构是一致的,除非是子函数功能
2016-11-07 22:15:16
8304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人