news 2026/9/23 20:39:05

vivado hls设计总结(十七)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vivado hls设计总结(十七)

一、数组
1.数组综合后,通常作为内存来实现
内存包括RAM,ROM或者FIFO

2.顶层函数接口上的数组综合为内存接口,用于访问外部的内存接口

3.数组的大小决定了vivado hls工具将数组作为SRL综合,也可能将
数组作为block RAM,或者LUTRAM或者UltraRAM来设计

4.数组作为内存访问可能会存在性能瓶颈。因为内存端口的数量会限制对
数据的访问

5.数组初始化如未谨慎执行,则可能导致 RTL 中不必要的长时间复位和初始化

二、数组的访问和性能
以下代码示例显示了访问数组导致最终 RTL 设计性能受限的案例。在此示例中,对 mem[N] 数组执行了 3 次访问以创
建求和结果。
#include "array_mem_bottleneck.h"
dout_t array_mem_bottleneck(din_t mem[N]) {
dout_t sum=0;
int i;
SUM_LOOP:for(i=2;i<N;++i)
sum += mem[i] + mem[i-1] + mem[i-2];
return sum;
}
在综合期间,该数组作为 RAM 来实现。如果将此 RAM 指定为单端口 RAM,那么将无法通过对 SUM_LOOP 循环进行
流水线化来实现在每个时钟周期内处理新的循环迭代的目标。

三、数组在接口上优化情况
要配置 Vivado HLS 创建这些端口的方式,请执行以下操作:
• 使用 INTERFACE 指令将接口指定为 RAM 或 FIFO 接口。
• 使用 RESOURCE 指令将 RAM 指定为单端口或双端口 RAM。
• 使用 RESOURCE 指令指定 RAM 时延。
• 使用数组最优化指令(Array_Partition、Array_Map 或 Array_Reshape)来重新配置数组结构,从而重新
配置 I/O 端口数量。

四、vivado hls中array数组初始化问题说明
1.xilinx官方是建议设计者将数组使用static来声明的,但是并不强制
2.使用static修饰数组,可以确保vivado hls以rtl中内存的方式来实现数组,
并且初始化数组不会有时钟开销。
3.如果在函数内部有一个局部数组,没有使用static修饰,那么这个局部数组的
初始化在每次函数调用的时候都会进行初始化,综合后,每次执行设计模块的时候,
都会要对RAM写一次初始值。那么对于单口RAM,下面的代码初始化需要8个clock;
int coeff[8] = {-2, 8, -4, 10, 14, 10, -4, 8, -2};
如果coeff的数组大小为1024,那么初始化需要1024个时钟周期,那么这会造成一个问题,
就是在对coeff初始化期间,无法执行任何依赖于coeff的任何运算。

4.如果使用static来修饰coeff
static int coeff[8] = {-2, 8, -4, 10, 14, 10, -4, 8, -2};
这个初始化和rtl是一样的,就是vivado hls会对rtl设计和FPGA的比特流中的变量进行初始化。
这个在程序从flash加载到FPGA的过程中完成的,而不是在程序跑起来需要经历多个时钟周期来初始化内存,
这个设计可以确保大型内存初始化不会产生任何运算开销。

5.RTL配置命令可以指定应用复位后,静态变量是否返回其初始化状态。如果执行复位操作后内存将
返回初始化状态,就会导致运算开销,这个需要经历多个周期才能完成值的复位。每个值必须写入每个内存地址。

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

图书扫描数字化:OCR替代手动录入全流程

图书扫描数字化&#xff1a;OCR替代手动录入全流程 引言&#xff1a;从纸质到数字&#xff0c;OCR如何重塑信息录入方式 在图书管理、档案数字化和出版行业&#xff0c;大量历史文献仍以纸质形式存在。传统的人工录入方式不仅效率低下&#xff08;平均每分钟仅能输入20-30字&am…

作者头像 李华
网站建设 2026/9/22 10:08:24

卷积神经网络进阶:CRNN中CNN模块的设计与优化

卷积神经网络进阶&#xff1a;CRNN中CNN模块的设计与优化 &#x1f4cc; 引言&#xff1a;OCR文字识别的技术演进与挑战 光学字符识别&#xff08;OCR&#xff09;作为连接物理世界与数字信息的关键桥梁&#xff0c;已广泛应用于文档数字化、票据识别、车牌检测等场景。尽管传…

作者头像 李华
网站建设 2026/9/20 16:25:24

Zotero学术翻译与智能阅读解决方案深度解析

Zotero学术翻译与智能阅读解决方案深度解析 【免费下载链接】zotero-pdf2zh PDF2zh for Zotero | Zotero PDF中文翻译插件 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf2zh 面对海量英文文献的阅读压力&#xff0c;科研工作者常常陷入翻译质量与阅读效率的两…

作者头像 李华
网站建设 2026/9/22 15:49:02

PIIINP如何作为肾纤维化的生物标志物?

一、肾纤维化临床评估面临哪些挑战&#xff1f;肾纤维化是慢性肾脏病进展的关键病理特征&#xff0c;其特征为细胞外基质成分如Ⅰ型和Ⅲ型胶原的异常沉积。目前&#xff0c;肾活检是评估肾纤维化的标准方法&#xff0c;但存在采样误差、操作风险以及无法动态监测等局限性。因此…

作者头像 李华
网站建设 2026/9/20 16:26:33

LSTM+CNN融合模型解析:CRNN在文字识别中的优势对比

LSTMCNN融合模型解析&#xff1a;CRNN在文字识别中的优势对比 OCR 文字识别的技术演进与挑战 光学字符识别&#xff08;OCR&#xff09;作为连接物理世界与数字信息的关键技术&#xff0c;已广泛应用于文档数字化、票据处理、车牌识别、智能办公等多个领域。传统OCR系统依赖于复…

作者头像 李华
网站建设 2026/9/22 16:45:03

Obsidian思维导图插件:从零开始构建可视化知识网络

Obsidian思维导图插件&#xff1a;从零开始构建可视化知识网络 【免费下载链接】obsidian-enhancing-mindmap obsidian plugin editable mindmap,you can edit mindmap on markdown file 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-enhancing-mindmap 在信息…

作者头像 李华