当前位置: 首页 > news >正文

第12周作业--HLS入门

目录

一、HLS入门

二、HLS入门程序编程

创建项目

1、点击Vivado HLS 中的Create New Project

2、设置项目名

3、加入文件

4、仿真

3、综合


一、HLS入门

1. HLS是什么?与VHDL/Verilog编程技术有什么关系?

HLS(High-Level Synthesis,高层综合)是一种将高级语言描述的逻辑结构自动转换成低抽象级语言描述的电路模型的技术。与VHDL/Verilog编程技术的关系主要体现在HLS允许开发者使用C/C++等高级语言来编写可以在FPGA上运行的程序,而无需直接使用VHDL或Verilog这类硬件描述语言。

2. HLS有哪些关键技术问题?目前存在什么技术局限性?

HLS关键技术问题及局限性:

  1. 设计空间探索的挑战:HLS工具在转换过程中需要处理大量的设计选项和优化参数,如并行性、流水线化级别等。设计者需要对这些参数有深入理解才能做出最佳选择,这增加了设计的复杂性。

  2. 性能预测不准确:尽管HLS工具提供了性能评估功能,但这些预测往往与实际硬件实现存在差异。这种不准确性可能导致设计迭代,增加开发时间和成本。

  3. 资源利用效率:由于HLS工具的保守策略,生成的RTL代码可能不是最优的,导致FPGA资源利用率不高。这限制了设计的性能和面积效率。

  4. 支持的高级语言特性有限:虽然HLS支持C/C++等高级语言,但并非所有语言特性都能有效地转换为硬件描述。这限制了可以使用的编程技巧和算法。

  5. 调试和验证难度:与传统软件开发相比,HLS生成的硬件代码更难调试。硬件错误可能不会立即显现,且定位和修复错误更加困难。

除了上述内容外,对HLS技术的优化方向分析如下:

  1. 提高工具链的智能化:通过增强HLS工具的智能分析能力,帮助设计者更好地进行设计空间探索和性能预测,减少迭代次数。

  2. 扩展支持的语言特性:扩大HLS支持的高级语言特性集,使得更多复杂算法能够被有效转换,从而提升设计的灵活性和表达能力。

  3. 优化资源利用:通过改进算法和优化技术,提高FPGA资源的利用率,增强设计的性能和面积效率。

  4. 简化调试和验证过程:开发更加高效的调试工具和验证方法,降低硬件调试的难度,提高开发效率。

二、HLS入门程序编程

创建项目
1、点击Vivado HLS 中的Create New Project

2、设置项目名

3、加入文件

分别新建文件Helloworld.cpp,Helloworld.h与tb_Helloworld.h

Helloworld.h

//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

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

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));}
}
4、仿真

在保存好代码之后,点击图中的这个按钮进行C仿真:

弹出界面后,什么都不用选,默认即可。

运行仿真后,出现下面这个界面就说明仿真成功了:

3、综合

进行综合之前,先选择Top Function。

点击Project -> Project Setting -> Synthesis ,点击Helloworld.cpp,并点击Browse选择函数flash_led。

然后点击c运行

 

结束后,会有一个总结文件如下:

在solution1\impl\verilog中,有已经生成好的.v文件:

在Helloworld.cpp界面,右边的Drective界面,右键led_o,进入如下界面:

按上图来配置,并点击OK。

然后点击联合仿真:

仿真结束后,出现下面界面,说明联合仿真成功:

参考

HLS入门-LED闪烁仿真_hls c仿真设置-CSDN博客

【嵌入式系统应用开发】FPGA——HLS入门实践之led灯闪烁_hls的ip核-CSDN博客

Vivado2018.3的下载安装_vivado2018.3下载-CSDN博客

http://www.lryc.cn/news/351851.html

相关文章:

  • WorkManager使用技巧及各Android版本适配
  • 鼠标滚轮使用时上下跳动的解决方法
  • CSS【常用CSS样式、盒子模型、定位、浮动 、扩展样式】--学习JavaEE的day46
  • os.path 提供用于处理文件路径和文件的系统函数
  • golang通过go-aci适配神通数据库
  • 【Vue】Vue2中的Vuex
  • 前端生成二维码
  • wordpress woocommer 添加代码实现,点击按钮,将产品添加到购物车并且跳转到结账页面
  • Scala学习笔记6: 类
  • JS数组根据对象的某一个字段排序
  • JavaScript操作
  • 雪花算法 代码
  • 我把PostgreSQL最核心的插件撸干净了!!!
  • Transformer详解(1)-结构解读
  • 使用Flask Swagger自动生成API文档
  • 操作系统408考研-经典例题
  • 工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发
  • react中hook 函数的使用
  • 探索k8s集群中kubectl的陈述式资源管理
  • webgl入门-绘制三角形
  • 深入分析 Android Activity (三)
  • 电影《朝云暮雨》观后感
  • Isaac Sim仿真平台学习(1)认识Isaac Sim
  • C++:vector基础讲解
  • Grafana 路径遍历所有路径 CVE-2021-43798漏洞预警
  • 基于Docker部署GitLab环境搭建
  • 初始化是什么
  • Python图形界面(GUI)Tkinter笔记(九):用【Button()】功能按钮实现人机交互
  • linux 内核安装、切换版本,禁用内核更新
  • 充电桩中PE接地实时监测的一种电路.pdf