当前位置: 首页 > 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;一般分为库函数和用户自定义的函数。函数由函数头和函数体…...

Python 3.7 + XGBoost 多分类实战:从数据清洗到SHAP模型解释的保姆级教程

Python 3.7 XGBoost 多分类实战&#xff1a;从数据清洗到SHAP模型解释的保姆级教程在机器学习领域&#xff0c;XGBoost因其出色的性能和可解释性成为众多数据科学家的首选工具。本文将带您完整走过多分类任务的全流程&#xff0c;从原始数据到可解释的预测模型&#xff0c;每个…...

开发转兼职DBA(二):执行计划教我做事

开发转兼职DBA&#xff08;二&#xff09;&#xff1a;执行计划教我做事 查询慢了不知道为什么&#xff0c;加了索引还是慢&#xff0c;复合索引怎么建&#xff0c;执行计划怎么看——这些不是DBA的专利&#xff0c;是每个写SQL的开发者迟早要面对的事。 文章目录 开发转兼职DB…...

Godot4 2D游戏开发避坑指南:TileMap绘制、节点顺序与相机设置的三个常见问题

Godot4 2D游戏开发避坑指南&#xff1a;TileMap绘制、节点顺序与相机设置的三个常见问题当你第一次用Godot4完成一个2D场景搭建时&#xff0c;那种成就感往往会被几个突如其来的bug瞬间击碎——角色神秘消失、背景纹丝不动、屏幕边缘出现诡异黑边。这些问题看似简单&#xff0c…...

口碑最好的AI论文写作工具推荐(从文献整理到论文成稿全流程)适合全体毕业生

还在为选题方向纠结、文献资料翻找耗时、开题报告无从下手、论文框架反复修改、查重率居高不下、降重过程痛苦不堪&#xff0c;甚至答辩PPT还要临时抱佛脚&#xff1f;作为学术新手、应届生或本科硕士毕业生&#xff0c;面对论文写作的重重关卡&#xff0c;流程复杂、操作门槛高…...

JavaScript对象创建:告别繁琐,四种灵活写法一学就会

在JavaScript里&#xff0c;创建对象的这般方法常把刚开始学习的新手弄得困惑不已&#xff0c;好像无论走哪条道都行得通&#xff0c;可又不清楚该挑哪一条才好。我编写JavaScript都有十几年功夫了&#xff0c;对象创建这事差不多每天都会碰到可谓基础技能。它不像变量声明那般…...

SMUDebugTool:AMD Ryzen处理器深度调试与性能调优完全指南

SMUDebugTool&#xff1a;AMD Ryzen处理器深度调试与性能调优完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

让B站缓存视频重获自由:一个简单实用的格式转换工具

让B站缓存视频重获自由&#xff1a;一个简单实用的格式转换工具 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还记得那个周末的下午吗&#xf…...

Linux CPU性能优化:D状态和Z状态排查与处理

文章目录一、Linux进程五大基本状态1. 运行状态&#xff08;R&#xff0c;Running / Runnable&#xff09;2. 可中断睡眠状态&#xff08;S&#xff0c;Interruptible Sleep&#xff09;3. 不可中断睡眠状态&#xff08;D&#xff0c;Uninterruptible Sleep&#xff09;4. 停止…...

开源合规生死线,DeepSeek协议识别错误率高达63%?2024企业级扫描避坑清单全公开

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;开源合规生死线&#xff0c;DeepSeek协议识别错误率高达63%&#xff1f;2024企业级扫描避坑清单全公开 近期第三方审计机构对主流AI增强型开源扫描工具开展交叉验证测试&#xff0c;结果显示DeepSeek-R…...

Agent 一接文档批注就开始改错位置:从 Annotation Anchor 到 Suggestion Scope 的工程实战

Agent 对接文档协作平台时&#xff0c;批注是最危险的操作之一。生产环境里&#xff0c;Agent 收到"在第三段加批注"的指令&#xff0c;结果批注挂到第二段末尾&#xff0c;甚至覆盖已有评论。更隐蔽的是&#xff0c;Agent 以作者 A 登录&#xff0c;批注却显示作者 …...