HLS入门(LED灯闪烁)

一、HLS简介

HLS(High-Level Synthesis,高级综合)是一种硬件设计方法,它允许设计者使用高级语言(如C、C++或SystemC)来描述硬件行为,然后自动将这些高级语言描述转换成门级或更低级别的硬件实现。HLS的目标是简化硬件设计流程,提高设计效率,并允许软件工程师参与到硬件设计中来。

HLS的主要步骤包括
输入高级语言描述:设计者使用C、C++或SystemC等高级语言来编写硬件的逻辑。
综合:HLS工具将高级语言代码转换成硬件描述语言(HDL)代码,如Verilog或VHDL。
优化:HLS工具会对生成的HDL代码进行优化,以满足性能、面积和功耗等设计要求。
生成硬件:最终,HLS工具会生成可以直接用于FPGA或ASIC实现的硬件描述。

HLS的优势包括
提高设计效率:使用高级语言可以更快地编写和修改设计。
减少设计时间:自动化的转换和优化过程可以缩短设计周期。
提高设计可重用性:高级语言代码更容易理解和维护,有助于设计重用。
降低硬件设计门槛:软件工程师可以更容易地参与到硬件设计中。

HLS面临的挑战
优化难度:自动优化可能无法达到手动优化的水平。
资源限制:HLS生成的硬件可能在资源使用上不如手工设计的硬件高效。
学习曲线:需要学习如何使用HLS工具和理解其优化策略。
HLS是数字电路设计领域的一个重要方向,随着工具和算法的不断发展,它在提高设计效率和降低设计难度方面发挥着越来越重要的作用。

二、环境配置

安装 vivado 的参考链接:
https://blog.csdn.net/qq_43279579/article/details/116849636
安装了vivado后,就自动完成了 HLS

三、HLS实现Led点亮仿真

1.新建项目

点击Vivado HLS 中的Create New Project
在这里插入图片描述
设置项目名,选择项目的路径

在这里插入图片描述
点击next,选择顶层函数,此处暂时不管

在这里插入图片描述
选择添加C仿真文件,此处可以暂时不管
在这里插入图片描述
选择器件
在这里插入图片描述
点击finish,完成工程创建

2.代码编写

1.源文件添加
点击Source,右键后,选择New File,创建文件:
Helloworld.h

#ifndef _HELLOWORLD_H_
#define _HELLOWORLD_H_
#include "ap_int.h"
typedef 	ap_int<1> led_t;
void flash_led(led_t *led_o);
#endif


Helloworld.cpp

#include "HelloWorld.h"
void flash_led(led_t *led_o){
#pragma HLS INTERFACE ap_ovld port=led_o
#pragma HLS INTERFACE ap_ovld port=led_o
	int i;
	for(i=0;i<10000;i++){
		if(i==9999){
			*led_o = ~(*led_o);
		}
	}
}

2.仿真测试文件添加,右键Test Bench,选择New File
tb_Helloworld.cpp

#include "HelloWorld.h"
#include <stdio.h>
int main(){
	led_t led_o;
	const int SHIFT_TIME = 4;
	int i;
	for(i=0;i<SHIFT_TIME;i++){
		flash_led(&led_o);
		printf("result : %d \n",(int)(led_o&0x01));
	}
}


3.添加后如图
在这里插入图片描述

3.C仿真

1.点击 run c sinulation
在这里插入图片描述
弹出下面的界面,什么都不用选
在这里插入图片描述
运行仿真后,出现下面这个界面就说明仿真成功了
在这里插入图片描述
2.综合
进行综合之前,先选择Top Function,点击Project -> Project Setting -> Synthesis ,点击Helloworld.cpp,并点击Browse选择函数flash_led。
在这里插入图片描述
3.点击此处
在这里插入图片描述
4.结束后,会有一个总结文件

在这里插入图片描述
在这个文件的最后,有关于端口的表格
在这里插入图片描述
已经生成好的.v文件
在这里插入图片描述
5.联合仿真
在Helloworld.cpp界面,右边的Drective界面,右键led_o,进入如下界面
在这里插入图片描述
点击ok,结果如下
在这里插入图片描述

三、实验总结

理解了HLS的基本语法,对FPGA学习有了更深刻的理解。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值