news 2026/6/22 22:21:24

HLS用于应用加速

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HLS用于应用加速


一、why FPGA
1.FPGA可以自定义数据类型
2.FPGA可以自定义数据路径,dataflow or pipeline
3.有效的memory访问,可以random access,FIFO,stack
4.parallelism并行化没有限制

二、FPGA开发趋于简单化
1.可以使用c/c++/system c,opencl,python来开发FPGA
2.tenssorflow

三、HLS代码结构
1.top-level函数定义
2.interface接口定义
3.dataflow the processing
4.internal streaming variable变量声明
5.synchronize to start of frame帧同步开始
6.covert from axi stream to xf::Mat

四、HLS让FPGA开发变得简单

五、并行化
并行化有两种
1.data-level parallesim
2.task-level parallelism
3.Instruction(operator) level parallelsim
在HLS设计中需要考虑的data-level和task-level的并行化,
不需要考虑指令或者操作的并行化,指令和操作的并行化是HLS帮我们做了。

六、CPU和FPGA
1.cpu使用得地址空间都是虚拟的地址空间
2.FPGA使用的地址空间都是physical address space

七、组合逻辑 + 时序逻辑模型设计

1.单个组合逻辑+时序逻辑设计模型


void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=in2
#pragma HLS INTERFACE ap_none port=out
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}

2.多个组合逻辑+时序逻辑模型

void sub1_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}

void sub2_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}


void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=out

ap_uint<32> tmp1;
ap_uint<32> tmp2;

sub1_func(in1,tmp2,&tmp1);

sub2_func(tmp1,tmp1,&tmp2);

*out = tmp2;

}

上述这个代码综合设计,发现综合的rtl代码,并没有实现两次组合逻辑+时序逻辑模块,为什么??

template<int N>
void sub1_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}

template<int N>
void sub2_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}


void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=out

ap_uint<32> tmp1;
ap_uint<32> tmp2;

sub1_func<1>(in1,tmp2,&tmp1);

sub1_func<2>(tmp1,tmp1,&tmp2);

*out = tmp2;

}
使用模板函数好像实现的功能也不太对!!!

这个后续专门对这块设计进行说明!!!

3.two-module

void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=out

ap_uint<32> tmp1;
ap_uint<32> tmp2;

sub1_func(in1,in1,&tmp1);

sub1_func(tmp1,tmp1,&tmp2);

*out = tmp2;

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:43:56

从入门到精通:Open-AutoGLM账号权限管理的8个必知功能模块

第一章&#xff1a;Open-AutoGLM账号权限管理概述在构建和部署基于 Open-AutoGLM 的自动化系统时&#xff0c;账号权限管理是保障系统安全与数据隔离的核心机制。合理的权限控制策略不仅能防止未授权访问&#xff0c;还能确保不同角色用户仅能执行其职责范围内的操作。权限模型…

作者头像 李华
网站建设 2026/6/23 19:49:16

我要搞个ai程序操控鼠标,截取屏幕,识别刀路,给ai一个刀路寻找规则的prompt,然后ai自己去按规则顺序点亮刀路

要实现一个 AI 程序&#xff0c;能够操控鼠标、截取屏幕、识别刀路&#xff08;CNC 加工路径&#xff09;、根据规则顺序点亮刀路&#xff0c;这实际上是一个典型的 “视觉-语言-动作”闭环系统。该系统融合了图像识别、多模态大模型推理、以及自动化控制三大模块。下面我将从整…

作者头像 李华
网站建设 2026/6/23 2:58:50

JavaScript 数据类型详解:分类、种类、判断方法及深浅差异

在 JavaScript 编程中&#xff0c;数据类型是构建所有程序的基础&#xff0c;理解它的分类、判断方式以及不同类型的核心差异&#xff0c;是写出健壮代码、避免隐蔽 Bug 的关键。本文将全面拆解 JS 数据类型的相关知识点&#xff0c;从分类到实操&#xff0c;帮你彻底吃透这一基…

作者头像 李华
网站建设 2026/6/23 1:46:27

Excalidraw与Notion集成实践:构建智能笔记系统

构建智能笔记系统&#xff1a;Excalidraw 与 Notion 的协同实践 在远程协作日益成为常态的今天&#xff0c;技术团队对知识表达和信息组织的要求已远超“记录”本身。我们不再满足于静态文档&#xff0c;而是追求一种能快速表达、实时互动、图文融合且具备一定智能辅助能力的工…

作者头像 李华
网站建设 2026/6/23 4:39:29

gcc-c++-7.3.0 rpm安装方法 Linux麒麟KY10完整步骤

1. 先确认文件位置 安装包下载&#xff1a;https://pan.quark.cn/s/a7d77803a467&#xff0c;假设你下载完放在了 下载​ 文件夹&#xff0c;路径大概是&#xff1a; ~/Downloads/gcc-c-7.3.0-20190804.35.p06.ky10.x86_64.rpm 可以用命令看一下&#xff1a; ls ~/Download…

作者头像 李华