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

HLS入门

目录

  • 一、 内容介绍
  • 二、 理解HLS
    • 2.1 HLS是什么?与VHDL/Verilog编程技术有什么关系?
    • 2.2 HLS有哪些关键技术问题?目前存在什么技术局限性?
  • 三、 HLS在Quartus上的实现
    • 3.1 配置环境
    • 3.2 测试
  • 四、 参考链接

一、 内容介绍

  1. 理解HLS
  2. HLS在Quartus上的实现

二、 理解HLS

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

HLS是一种高级综合技术,它允许开发人员使用高级语言(如C、C++和SystemC)来描述数字电路的行为和功能,然后将其转换为硬件电路实现。这种转换过程是自动完成的,因此开发人员无需手动编写硬件描述语言(HDL)。
HLS的主要目的是简化FPGA设计流程,提高设计效率和设计质量。通过使用高级语言来描述电路,开发人员可以更快速地进行设计和调试,同时也可以更容易地对电路进行修改和优化。此外,HLS还可以自动生成优化后的硬件电路,从而提高性能和资源利用率。
与传统的VHDL/Verilog编程技术相比,HLS提供了更高的抽象级别。VHDL和Verilog是硬件描述语言,通常用于详细描述硬件的逻辑和行为,包括门级和寄存器传输级的设计。这些语言需要设计者具备硬件设计和时序分析的专业知识,并且开发周期可能较长。

HLS与VHDL/Verilog的关系可以概括为:
HLS可以作为从高级语言到VHDL/Verilog的桥梁,将高级语言描述的算法自动转换成VHDL/Verilog代码。
HLS允许设计者在更高的抽象级别上工作,而不必深入到硬件细节,这有助于加速设计过程并提高生产力。
HLS有助于软件工程师参与硬件设计,因为它减少了对硬件专业知识的需求。
HLS工具的结果质量(Quality of Results, QoR)可能不如手动RTL设计,但在开发时间和生产率方面具有优势,特别是在快速原型设计和产品上市时间紧迫的情况下。
总的来说,HLS是一种补充和加速传统VHDL/Verilog设计流程的技术,它使设计者能够更快地实现从概念到硬件的转变。

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

HLS(High-Level Synthesis,高层综合)的关键技术问题和局限性主要包括以下几个方面:

优化限制:与硬件描述语言(HDL)如Verilog相比,HLS在优化方面存在一定限制。例如,HDL可以更精细地控制硬件资源的使用,而HLS可能无法实现同样的优化效果。

动态参数处理:HLS通常禁止动态分配指针,因为这要求工具知道函数访问的存储空间,以便正确放置连接。

并行执行限制:HLS对于并行执行有限制,它不允许访问同一数组的函数并行运行,这可能限制了设计的并行性和性能。

内存过度分配:在某些情况下,HLS倾向于宽度扩展而不是深度扩展,这可能导致BRAM的过度分配和内存使用效率降低。

资源重用:HLS在资源重用方面可能不如手写HDL高效,需要通过内联子功能或复制函数等手段来实现资源的重用。

浮点运算支持:HLS可能不支持浮点累加器,需要使用部分和和树加法器等方法来实现浮点运算。

设计空间探索:HLS工具可能没有提供足够的设计空间探索支持,导致用户需要手动进行繁琐的尝试和错误过程。

性能估计和设计限制:HLS工具可能没有提供早期的性能估计,无法预先检测违反设计和平台限制的行为。

数据通信方式:HLS工具可能没有充分利用所有可能的数据通信方式,影响设计的性能和资源利用。

代码优化:HLS工具可能缺乏对用户代码进行优化转换的功能概述,导致生成的设计不是最优的。

报告和反馈:HLS工具可能在支持代码报告方面存在延迟,不利于快速迭代和设计改进。

特定情况下的效率:在某些特定情况下,如需要将大量加速器映射到硬件时,HLS工具可能无法高效实施,影响设计周期。

这些关键技术问题和局限性表明,尽管HLS提供了从高级语言到硬件设计的快速路径,但在自动化设计流程、优化和资源管理方面仍有改进空间。随着技术的发展,这些局限性有望得到解决,HLS的实用性和效率将进一步提高。

三、 HLS在Quartus上的实现

3.1 配置环境

Quartus prime 18.1
作为HLS实验环境搭建的必要软件之一,经验证Quartus Prime 17.1以及18.1版本可支持HLS开发。该软件可在Intel官网上注册后直接下载并按默认选项安装即可。

Modelsim Starter Edition 10.5b
ModelSim是Quartus Prime的附加软件之一。安装Quartus Prime的同时也会安装相应版本的ModelSim,所以无需专门安装该软件。
在此次HLS实验中,使用的版本是ModelSim Starter Edition 10.5b,此为HLS的默认调用版本并且不需要License。

Microsoft Visual Studio 2010 (Visual C++, 未使用license)
在整个HLS实验环境搭建中,建议安装使用Microsoft Visual Studio 2010因为经验证更新后的版本将不支持HLS开发。其中Profession、Ultimate、Standard三个版本均可从网上下载安装并未使用License,但是需要注意的是Standard版本仅支持HLS 18.1以及HLS 19.1,所以到时候需要手动匹配HLS版本方可运行。此外,在安装过程中需确保Visual C++被成功勾选。
在此次HLS实验中,使用的版本是Microsoft Visual Studio 2010 Ultimate。
(需要注意的是在全部软件安装完成后,环境变量都已自动被设置,故而无需再手动设置,出现问题再配置)

  1. 找到Quartus目录下的init_hls.bat
    一般在’intelFPGA/18.x/hls’
    在这里插入图片描述
    在命令提示符窗口(CMD)运行此程序
    在这里插入图片描述
    有可能会出现这样的错误,同样也有可能找不到modelsim的vsim.exe,如果你确定这些没找到的都安装了的话,就是环境变量没配置好,你需要找到这两个文件的位置,可以用Everything搜索
    在这里插入图片描述
    在这里插入图片描述
    ok了,然后把路径添加到环境变量中
    在这里插入图片描述
    然后确认返回
    如果还报错就把link.exe直接复制到modelsim的环境win32alem文件夹下
    重新运行
    在这里插入图片描述
    运行成功后重启cmd

3.2 测试

编译为FPGA程序
(1)输入指令“i++ -march=CycloneV counter.cpp”使用FPGA(CycloneV)进行编译并生成名为“a”的可执行文件。注意:此处若提示Warning,无需理会。
(2)输入指令“a”进行测试,若结果显示“PASSED”,则编译与测试成功。
在这里插入图片描述
编译为FPGA程序
(1)输入指令“i++ -march=CycloneV counter.cpp”使用FPGA(CycloneV)进行编译并生成名为“a”的可执行文件。注意:此处若提示Warning,无需理会。
(2)输入指令“a”进行测试,若结果显示“PASSED”,则编译与测试成功。
在这里插入图片描述

(3)输入指令“i++ -march=CycloneV counter.cpp -ghdl” 使用FPGA(CycloneV)进行编译生成名为“a”的可执行文件并记录信号以帮助调试。注意:此处若提示Warning,无需理会。
(4)输入指令“a” 执行可执行文件,若结果显示“PASSED”,则编译与测试成功。同时,在上一步中记录的信号的波形记录会自动生成名为“vsim.wlf”的文件并记录在路径“a.prj/verification”中,以便于使用ModelSim对该信号进行仿真。
在这里插入图片描述

ModelSim仿真
(1)输入指令“cd a.prj”和“cd verification”或者“cd a.prj\verification”进入“vsim.wlf”所在的文件夹中,并输入指令“dir”查看该文件是否存在。

(2)输入指令“vsim vsim.wlf”使用ModelSim打开该文件并对记录的信号进行仿真。
在这里插入图片描述
在这里插入图片描述

四、 参考链接

  1. https://blog.csdn.net/qq_42759162/article/details/129074716
  2. https://blog.csdn.net/qq_42585108/article/details/120643437

相关文章:

HLS入门

目录 一、 内容介绍二、 理解HLS2.1 HLS是什么?与VHDL/Verilog编程技术有什么关系?2.2 HLS有哪些关键技术问题?目前存在什么技术局限性? 三、 HLS在Quartus上的实现3.1 配置环境3.2 测试 四、 参考链接 一、 内容介绍 理解HLSHLS在Quartus上…...

电信光猫的USB存储对外网开放访问

前提条件当然是要有公网IP地址了,没有的话去找电信索要,然后可以使用动态域名正常访问。 我的电信光猫发现共享访问速度还可以,会有31M/s左右的写入速度 但是有一个不方便的是,无法从外网提供访问,SMB协议所用的445端…...

世界上首位AI程序员诞生,AI将成为人类的对手吗?

3月13日,世界上第一位AI程序员Devin诞生,不仅能自主学习新技术,自己改Bug,甚至还能训练和微调自己的AI模型,表现已然远超GPT-4等“顶流选手”。 AI的学习速度如此之快,人类的教育能否跟上“机器学习”的速…...

什么是创造力?如何判断自己的创造力?

创造力,主要表现为创新思想、发现和创造新事物的能力,是知识,智力和能力的综合能力,尤其是在职业发展方面,创造力具有重要的意义,企业的核心竞争力就来源于创造力,这就需要具有创造力的员工来推…...

Elasticsearch集群搭建学习

Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器?如何自定义分词器?拼音分词器注意事项? 自动补全数据同步集群搭建ES集群结构创…...

数据库(vb.net+OleDB+Access)简易学生信息管理系统

在我们日常生活当中,数据库一词往往离不开我们的编程界,在学校、仓库等方面起着存储数据及数据关系作用的文件。相较于Excel,Access可以存储无限多的记录,内容也十分丰富,例如文本、数字、日期、T&F等。而且不需要…...

Android 自定义图片进度条

用系统的Progressbar,设置图片drawable作为进度条会出现图片长度不好控制,容易被截断,或者变形的问题。而我有个需求,使用图片背景,和图片进度,而且在进度条头部有个闪光点效果。 如下图: 找了…...

对话:用言语构建深刻的思想碰撞

对话:用言语构建深刻的思想碰撞 在写书中,对话是一种有力的工具,能与读者进行有效的沟通和交流,引发深思和反思。它不仅是信息传递的方式,更是加深情感、探讨主题和吸引读者参与的桥梁。你应从读者的角度思考&#xf…...

Linux完整版命令大全(九)

4. linux压缩备份命令 ar 功能说明&#xff1a;建立或修改备存文件&#xff0c;或是从备存文件中抽取文件。语  法&#xff1a;ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]补充说明&#xff1a;ar可让您集合许多…...

solidworks画螺栓学习笔记

螺栓 单位mm 六边形 直径16mm 水平约束 拉伸 选择厚度6mm 拉伸切除 画相切圆 切除厚度6mm&#xff0c;反向切除 &#xff0c;拔模角度45 螺栓 直径9mm&#xff0c;长度30mm 倒角 直径1mm&#xff0c;角度45 异形孔向导 螺纹线 偏移打勾&#xff0c;距离为2mm&#…...

【Spark】加大hive表在HDFS存的每个文件的大小

配置参数&#xff1a; spark.hadoop.hive.exec.orc.default.stripe.size78643200 spark.hadoop.orc.stripe.size78643200 spark.hadoopRDD.targetBytesInPartition78643200 spark.hadoop.hive.exec.dynamic.partition.modenonstrict spark.sql.sources.partitionOverwriteMode…...

2024 年 5 个 GO REST API 框架

什么是API&#xff1f; API是一个软件解决方案&#xff0c;作为中介&#xff0c;使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值&#xff1a; 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码&#xff1b;这些是为移动开…...

socket地址理解

socket介绍 套接字的基本概念 1. 套接字的定义&#xff1a; 套接字&#xff08;socket&#xff09;是计算机网络中用于通信的端点&#xff0c;它抽象了不同主机上应用进程之间双向通信的机制。 2. 套接字的作用&#xff1a; 套接字连接应用进程与网络协议栈&#xff0c;使…...

Gopeed的高级用法

Gopeed是一个开源全平台下载器&#xff0c;具体简介请参考&#xff1a; “狗屁下载器”&#xff1f;Gopeed - 开源全平台下载器 (免费轻量 / 比 Aria2 好用 / 远程下载) - 异次元软件世界 (iplaysoft.com) 这里主要介绍下自己摸索出来的 Gopeed 的高级做法。 有的网站添加的…...

OpenHarmony系统使用gdb调试init

前言 OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;适配新的开发板时&#xff0c;启动流程init大概率会出现问题&#xff0c;其为内核直接拉起的第一个用户态进程&#xff0c;问题定位手段只能依赖代码走读和增加调试打印&#xff0c;初始化过程中系统崩溃…...

【SpringCloud】Spring Cloud基本介绍

目录 回顾架构分类单体架构分布式架构微服务架构什么是微服务优点缺点微服务的架构特征&#xff1a;微服务架构面临的挑战技术挑战微服架构的设计原则微服务概念提供者(Provider)消费者(Consumer)RPC和Restful集群分布式 总结 服务拆分和远程调用服务拆分原则服务拆分示例 思考…...

全域运营是本地生活服务的新模式吗?

最近&#xff0c;本地生活赛道又出现了一个新的说法&#xff0c;即全域运营是本地生活的下半场。事实上&#xff0c;这一论断并非空穴来风&#xff0c;而是有真凭实据。 作为多家互联网大厂重点布局的业务板块&#xff0c;本地生活的火爆程度早已有目共睹。根据多家互联网大厂…...

机器视觉-硬件

机器视觉-硬件 镜头焦距凸透镜焦点不止一个相机镜头由多个镜片组成对焦和变焦 镜头光圈光圈的位置光圈系数F 镜头的景深景深在光路中的几何意义 远心镜头远心镜头的种类远心镜头特性应用场景 镜头的分辨率镜头反差镜头的MTF曲线镜头的靶面尺寸镜头的几何相差相机镜头接口螺纹接…...

机器学习实验 --- 逻辑回归

第1关&#xff1a;逻辑回归核心思想 任务描述 本关任务&#xff1a;根据本节课所学知识完成本关所设置的编程题 #encodingutf8 import numpy as npdef sigmoid(t):完成sigmoid函数计算:param t: 负无穷到正无穷的实数:return: 转换后的概率值:可以考虑使用np.exp()函数#*****…...

浅谈C++函数

目录 一、函数的概念二、调用函数的两个前提三、函数传参的三种形式四、函数返回类型 一、函数的概念 函数是C程序的基本模块&#xff0c;通常一个C程序由一个或多个函数组成。函数可以完成用户指定的任务&#xff0c;一般分为库函数和用户自定义的函数。函数由函数头和函数体…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...