HLS 基础 (五 复合数据类型)

Struct

当struct作为顶层函数的参数时:

  • scalar变量成员会被映射为标准的scalar端口
  • 数组会被默认映射为存储器端口

结构体在头文件中声明。

HLS为结构体中的元素提供了一些优化方式:

  • Byte_pad
    • field_level
    • struct_level

Example

image-20220508185235859

image-20220508185350285

Byte_pad: field_level

​ 结构体中的得所有元素必须以8bit为边界;

image-20220508185604099

​ 所以在field_level条件下属于数组B和变量A必须扩展为8bit,故struct类型大小为40bit;

image-20220508185643230

Byte_pad: struct_level

​ 结构体中的每个元素保持原有的位宽,但是封装后的整个要以8bit为边界,即8bit的倍数。

image-20220508185932105

所以B数组+A元素是20bit,需要额外扩充4bit使得整个struct占用24bit;

比较两种不同的Data pack Mode

image-20220508190223192

Data Pack可以减少latency initial interval,提升系统吞吐率。同时还将for循环进行了展开。

枚举类型 Enumerated Type

image-20220508190618555

Example

image-20220508190805218

综合结果:

Vivado自动推断数据位宽。

image-20220508190909868

Summary

image-20220508191341818

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信