FPGA学习6-hls简易操作

1、VITIS HLS 软件Create Project 或在左上角 File-> New Project ,设置工程名和路径,next一路,Clock Period 一栏可填入运行时钟的周期,软件会根据此时钟进 行逻辑优化,可根据实际需要填写。

FPGA学习6-hls简易操作_第1张图片

在此框内part selection内点击...,选择硬件平台。点击finish

左上角source右键新建一个cpp文件(后缀一定是c或者cpp,不然编译会报错),编写源码,在project中点击设置图标(project setting。。。),点击synthesis,设置top function(自己写的文件在最后)

点击绿三角进行编译,或则击菜单栏 Solution-Run C Synthesis-Active Solution,,可以通过点击图标open report按钮查看综合之后占用的资源和一些时序信息情况(如latency(ns)执行时间.interval循环迭代执行间隔,trip Count 表示循环中预估最多执行时间,pipelined 表示是否进行流水线操作,Bram 表示 Block RAM 占用率)。

点击炸药包图形(export rtl)导出IP核。我的hls版本是2020.1编译出现问题ERROR: [IMPL 213-28] Failed to generate IP.command ‘ap_source’ returned error code,经过网上查询把hls一个bug,把时间改到2021年以前就可以,测试了改成2019年,导出无问题。还有一种方法是下载补丁,可在CSDN搜索攻略。
在vivado中建立工程,打开软件设置(左边settings),在IP栏 选择 repository,点击+号添加 IP 核路径,点击IP catalog,搜索hls,找到IP
FPGA学习6-hls简易操作_第2张图片
2、仿真
hls的界面左边testbench增加测试代码,需要main函数,查看仿真是否通过
通过 c 仿真之后进行c_rtl交叉仿真,在 vivado 中中添加IP核,打开图标 create
block design,在显示的 block design 中点击加号添加 IP 核,export端口,Create HDL Wrappe,添加top.v进行仿真(步骤类似FPGA仿真)

  3 接口

HLS 接口主要分为三类: clock and reset interface Block Level interface ,Port Level Interface
我们能够综合的主要是 Block Level interface ,Port Level Interface 。 Block Level interface分为 ap_ctrl_none,ap_ctrl_hs,ap_ctrl_chain 三种, ap_ctrl_none 指没有 BlockLevelinterface,ap_ctrl_hs 包含: ap_start,ap_idle,ap_ready,ap_done 四种, ap_start 捕捉到上升沿时 hls 的 topfunction 开始执行, ap_idle 在 topfunction 开始执行之后处于低电平,执行完成之后处 于高电平,ap_ready 处于高电平时表示 topfunction 准备完毕,开始执行之后处于低电平,ap_done 在 topfunction 执行完成之后处于高电平,当 ap_start 捕捉到上升沿之后重新处于低电平, ap_ctrl_chain ap_ctrl_hs 多一个 ap_continue 接口,如果在 topfunction 执行完成之后 ap_continue 处于低电平,此时 IP 核会终止运行,只有在 ap_continue 被置于高电平才会开始新 一轮运行。
Port Level Interface接口和 topfunction 参数有关,主要分为 AXI4 Interface,No I/O Interface,wire handshake,memory Interface 四种。AXI4 Interface分为 axi,m_axi,s_axilite 三种,基于 AXI 总线协议,用于 PS 端和 PL 端数据交互;No I/O Interface分为 ap_none 和 ap_stable 两种。wire handshake分为 ap_vld,ap_ovld,ap_ack 三种;memory Interfac包含 ap_bram、ap_memory ap_fifo 三种。
HLS常用优化分成 Throughput,Area,Latency,logic 四种方式优化
可以查看的官方资料 UG998、UG871、UG902、UG1233、UG1391

你可能感兴趣的:(FPGA学习,学习,fpga开发)