完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Vivado HLS给FPGA设计提供了一种新的方式,可以让软件工程师直接介入FPGA开发,加速了各种算法在FPGA上实现和应用的进程,特别是在如今人工智能大潮流下,Vivado HLS可以加速各种机器学习,深度学习算法在FPGA上的实现,加速算法落地和产业实现。
1、传统的RTL设计流程 传统用于FPGA设计的方法都是基于RTL描述的,RTL即基于Verilog/VHDL等硬件描述语言直接对所需要实现的硬件进行描述,然后生成相应的硬件电路,基本流程如下图所示: 2、基于C/C++的Vivado HLS设计流程 基于C/C++的Vivado HLS设计流程采用C/C++高级程序语言进行FPGA开发,可以使软件工程师直接介入FPGA硬件开发,可以加速各种应用落地,基本流程如下所示: 在Vivado HLS中与在Vivado中类似,具体的设计流程有添加C源文件,添加C测试文件,C仿真,C综合,C/RTL联合仿真,导出RTL等几个步骤,基本流程如下图所示: 3、Vivado HLS设计流程实例讲解 在开始实例讲解之前,我们先介绍一下我们实例中需要的几个源文件。为简单起见,本实例主要实现一个简单的数组加法。 顶层文件:VectorAdd.c,此文件为设计的顶层文件,并且一个Vivado HLS只能有一个顶层文件,一个顶层文件中只能包含一个函数,如果需要调用其他子函数的话,可以再其他文件中定义了之后在顶层文件中调用。 #include "VectorAdd.h"void VectorAdd(data_t A[N],data_t c,data_t B[N]){ unsigned int i; myloop: for(i=0;i #define N 5 typedef int data_t;void VectorAdd(data_t A[N],data_t c,data_t B[N]);测试文件:VectorAdd_tb.c,此文件为整个工程的测试文件,Vivado HLS中默认main函数为测试函数,其中main函数必须是有返回值的函数,其中定义返回1为测试失败,返回0为测试成功。 #include "VectorAdd.h"#include "stdio.h"int main(){ data_t A[N]={-4,-3,0,1,2}; data_t c=5; data_t B[N]={0}; data_t RefB[N]={1,2,5,6,7}; unsigned int i=0; unsigned int errcnt=0; VectorAdd(A,c,B); for(i=0;i0) { printf("test failedn"); return 1; } else { printf("test passn"); return 0; }}介绍完所需的几个文件后,下面我们开始一步一步的介绍如何创建工程和工程设计。 第一步:创建工程 第二步:添加顶层文件 第三步:添加测试文件 第四步:创建solution和选择芯片类型 第五步:C仿真 第六步:C综合 综合完成之后,可以查看资源,时序,延时等报告 综合完成之后生成了Verilog和VHDL代码。 第七步:C/RTL协同仿真 C/RTL协同仿真后可以查看相应的RTL仿真波形。 第八步:导出RTL |
|
|
|
只有小组成员才能发言,加入小组>>
801 浏览 1 评论
999 浏览 1 评论
12433 浏览 0 评论
5885 浏览 3 评论
17675 浏览 6 评论
996浏览 1评论
971浏览 1评论
801浏览 1评论
3840浏览 1评论
999浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:34 , Processed in 0.824254 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号