news 2026/10/26 11:03:01

union_type using

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
union_type using


一、vivado hls中union说明
1.vivado hls中union联合体和标准的c/c++联合体的union使用规则类似
2.vivado hls中需要对内存和数据类型进行比较准确的推断,从而来生成硬件
3.联合体中所有的成员共享一块内存,同一时刻只能使用其中的一个成员
4.在 HLS 中使用联合体时,需要注意数据类型的位宽和对齐,因为这会直接影响生成的硬件
5.在vivado hls中,联合体的综合是有条件的,需要避免使用指针和动态内存分配
6.联合体中使用数组和结构体是被允许的
7.联合体在vivado hls使用,比较常见的用途,是用于事项数据类型的转换

二、内存共享机制
// 案例1: 基本union使用
union DataUnion {
uint32_t word; // 32位
uint8_t bytes[4]; // 4个8位字节
struct {
uint8_t b0, b1, b2, b3;
} byte_struct;
};

void union_example1(ap_uint<32> input, ap_uint<8>& byte0) {
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=input
#pragma HLS INTERFACE ap_none port=byte0

DataUnion data;
data.word = input; // 写入32位字

// 四个字节共享同一内存位置
byte0 = data.bytes[0]; // 读取低8位
// data.bytes[1], [2], [3] 对应高8位
}

三、数据位宽匹配设计
// 案例2: 位宽精确匹配
union FixedUnion {
ap_uint<12> data_12bit; // 12位
ap_uint<4> nibbles[3]; // 3×4=12位,正确匹配
// ap_uint<8> bytes[2]; // 错误:2×8=16位,不匹配!

// 可以使用struct进行位域控制
struct {
ap_uint<4> low : 4;
ap_uint<4> mid : 4;
ap_uint<4> high : 4;
} bits;
};

void union_example2(ap_uint<12> in_data,
ap_uint<4>& out_nibble) {
#pragma HLS PIPELINE II=1

FixedUnion fu;
fu.data_12bit = in_data;

// 通过不同方式访问相同数据
out_nibble = fu.nibbles[1]; // 中间4位
// 等效于:out_nibble = fu.bits.mid;
}

四、使用限制
// 案例3: HLS可综合的union用法
union HLS_Compatible {
// 只包含POD(普通旧数据类型)
float fval;
int ival;
ap_fixed<16,8> fixed_val; // HLS定点数类型

// 以下不可在union中使用:
// 1. 非POD类型(如std::string)
// 2. 动态内存分配
// 3. 虚函数
};

void type_conversion(float float_in, int& int_out) {
#pragma HLS INLINE
union {
float f;
int i;
} converter;

converter.f = float_in;
int_out = converter.i; // 浮点位模式解释为整数
}

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

终端渲染天花板:永恒的工具

表达凝聚全世界&#xff0c;一行统摄天下终。 笔记模板由python脚本于2026-01-27 12:44:36创建&#xff0c;本篇笔记适合研究终端渲染的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官网&…

作者头像 李华
网站建设 2026/10/19 19:30:56

springboot古诗词鉴赏在线学习系统_3krsp-vue

目录系统概述技术架构核心功能特色亮点应用场景开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 SpringBoot古诗词鉴赏在线学习系统是一个结合前后端技术的Web应用&#xff0c;后端基于SpringBoot框架&#xff0c;前端…

作者头像 李华
网站建设 2026/10/25 14:10:57

导师严选2026 AI论文平台TOP9:专科生毕业论文写作全攻略

导师严选2026 AI论文平台TOP9&#xff1a;专科生毕业论文写作全攻略 2026年专科生论文写作工具测评&#xff1a;选对平台&#xff0c;事半功倍 随着人工智能技术的不断进步&#xff0c;AI论文平台已成为越来越多专科生撰写毕业论文的重要辅助工具。然而&#xff0c;面对市场上琳…

作者头像 李华
网站建设 2026/10/19 19:30:47

亲测好用!自考毕业论文必备9款AI论文工具深度测评

亲测好用&#xff01;自考毕业论文必备9款AI论文工具深度测评 自考论文写作的智能助手&#xff1a;AI工具如何提升效率 随着自考人数逐年攀升&#xff0c;毕业论文成为每位考生必须面对的挑战。然而&#xff0c;从选题到成稿&#xff0c;整个过程往往耗时耗力&#xff0c;尤其对…

作者头像 李华
网站建设 2026/10/25 17:49:36

电脑系统打开软件出现mfc71d.dll丢失问题 免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/10/25 8:21:22

学长亲荐!MBA必备TOP8 AI论文工具测评

学长亲荐&#xff01;MBA必备TOP8 AI论文工具测评 2026年MBA论文写作工具测评&#xff1a;为何需要一份精准指南 在MBA学习过程中&#xff0c;撰写高质量的论文不仅是学术能力的体现&#xff0c;更是职业发展的关键环节。然而&#xff0c;面对繁重的课程任务、复杂的分析模型…

作者头像 李华