第12周作业--HLS入门

2024-05-25 01:12
文章标签 入门 作业 hls

本文主要是介绍第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博客

这篇关于第12周作业--HLS入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000066

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联