HLS学习1:使用FPGA点灯

0、引言

本系列博客主要用于记录学习过程,如有错误欢迎指点。

芯片:xc7z020clg400-1; 开发板:小熊猫7020开发板; 开发环境:Vivado 18.3; 系统环境:Windows 11; 参考资料:小熊猫HLS文档、ug902、ug871、米联客HLS、黑金HLS等。

1、HLS

新建工程

名字随意取,路径要记住

添加文件

添加使用HLS语言编写的cpp文件,添加完成后,浏览该文件,提取Top Function文件(这里的文件名对应之后的IP名) 然后添加TestBench Files(用于测试和调用前者的CPP文件),你也可以不添加,一样可以综合打包完成

选择芯片

代码

#include "stdio.h"
#include "ap_int.h"
#define CLK_FREQ  1
void hls_01_fpga_led_stream_ip(ap_int<4> &led)
{
          
   
	#pragma HLS interface ap_none port=led
	#pragma HLS interface ap_ctrl_none port=return
	static int led_number=0;
	static long cnt_reg=0;
	if(cnt_reg<CLK_FREQ)cnt_reg++;
	else
	{
          
   
		cnt_reg=0;
		if(led_number<3)led_number++;
		else led_number=0;
	}
	if(led_number==0)
	{
          
   
		led=0x1;
	}
	else if(led_number==1)
	{
          
   
		led=0x2;
	}
	else if(led_number==2)
	{
          
   
		led=0x4;
	}
	else if(led_number==3)
	{
          
   
		led=0x8;
	}
}

进行综合(Synthesis)

选择顶部菜单栏的综合按钮(C Synthesis)默认第一个 综合完成后,如果没有问题,会自动跳转到综合报告界面,可以看到端口和资源用量。

打包IP(导出RTL)

点击菜单栏的这个图标,进行导出 弹出的对话框,默认即可 完成导出

进行测试/仿真(Simulation)

此步骤非必须,但对后期代码实际部署有明显优点,可以通过该手段对代码进行测试。 如果说IP代码是一个功能块/函数;那个tb文件则是调用IP的主函数。

#include "stdio.h"
#include "ap_int.h"

extern void  hls_01_fpga_led_stream_ip(ap_int<4> &led);
int main(void)
{
          
   
	int i=0;
	unsigned int tmp_print_data=0;
	ap_int<4> led=7;
	for(i=0;i<1000;i++)
	{
          
   
		hls_01_fpga_led_stream_ip(led);
		tmp_print_data=led&0xf;
		printf("i=%d,led=%d
",i,tmp_print_data);
	}
	return 0;
}

然后点击该图标,进行仿真 通过查看log文件或console窗口的输出信息,判定程序是否正确运行。

2、Vivado

创建工程

一路Next,直到这里选择自己的芯片xc7z020clg400-1(这个错了,会导致IP无法正确加载,这个选择可以在软件中进行二次修改)

导入IP

点击左侧的Setting(这里可以修改芯片型号) IP——>Repository——>添加——>选择HLS工程路径 点击OK,添加完成(这里需要注意,必须是IP名称前的图标必须是黄色的才行,如果是灰色,将无法进行后续工作,请检测是否芯片不匹配。 点击OK关闭界面。

创建 Block Design

点击右侧的加号,将刚刚导入的IP进行添加 添加完成

进行连线及配置

由于我们要实现的是简单的流水灯功能,所需要的时钟信号和复位信号都由外置引脚进行提供,LED也需要参考原理图进行了配置,所以在块设计中,我们需要将所有的端口进行配置。

选中对应管脚,使用Ctrl+T快捷键,快速生成端口。 连线完成后,我们需要要块设计转换为HDL Wrapper 创建完成

分配管脚

点击左侧选单中的Open Elaborated Design,弹出的对话框默认OK。 弹出该页面 按照下图进行引脚配置,然后Ctrl+S保存,并命名

生成Bit文件

这里的14指的电脑CPU核心数 可以选Open Hardware Manager打开该界面,然后选择Open target,选择Auto

烧录测试

选择Program device烧录。

经验分享 程序员 微信小程序 职场和发展