news 2026/4/16 7:21:00

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/4/15 17:29:54

智能弹窗拦截技术终极指南:打造无干扰移动体验的完整解决方案

智能弹窗拦截技术终极指南&#xff1a;打造无干扰移动体验的完整解决方案 【免费下载链接】LiTiaoTiao_Custom_Rules 李跳跳自定义规则 项目地址: https://gitcode.com/gh_mirrors/li/LiTiaoTiao_Custom_Rules 还在为手机应用中不断弹出的广告、更新提示和权限请求而烦恼…

作者头像 李华
网站建设 2026/4/12 8:33:48

AI CAD设计革命:如何用文字描述快速生成专业机械图纸

AI CAD设计革命&#xff1a;如何用文字描述快速生成专业机械图纸 【免费下载链接】text-to-cad-ui A lightweight UI for interfacing with the Zoo text-to-cad API, built with SvelteKit. 项目地址: https://gitcode.com/gh_mirrors/te/text-to-cad-ui 还在为复杂的C…

作者头像 李华
网站建设 2026/4/8 14:58:13

智能设计革命:文字描述生成专业CAD图纸的完整指南

智能设计革命&#xff1a;文字描述生成专业CAD图纸的完整指南 【免费下载链接】text-to-cad-ui A lightweight UI for interfacing with the Zoo text-to-cad API, built with SvelteKit. 项目地址: https://gitcode.com/gh_mirrors/te/text-to-cad-ui 还在为复杂的CAD软…

作者头像 李华
网站建设 2026/4/15 11:30:59

iOS侧载技术完全指南:突破AppStore限制的自由安装方案

iOS侧载技术完全指南&#xff1a;突破AppStore限制的自由安装方案 【免费下载链接】AltStore AltStore is an alternative app store for non-jailbroken iOS devices. 项目地址: https://gitcode.com/gh_mirrors/al/AltStore 还在为无法安装心仪的第三方应用而烦恼吗&a…

作者头像 李华
网站建设 2026/4/13 15:26:03

小剧场短剧影视小程序源码分享,搭建自己的短剧小程序

温馨提示&#xff1a;文末有资源获取方式&#xff5e;一、市场前景&#xff1a;千亿蓝海&#xff0c;风口正当时“昨晚又为一部短剧熬夜了&#xff01;”这已成为当代年轻人的日常。3分钟一集&#xff0c;连续反转&#xff0c;极致爽点——短剧正以惊人的速度占领我们的碎片时间…

作者头像 李华
网站建设 2026/4/15 20:12:00

Minecraft基岩版跨平台启动器技术解析

Minecraft基岩版跨平台启动器技术解析 【免费下载链接】mcpelauncher-manifest The main repository for the Linux and Mac OS Bedrock edition Minecraft launcher. 项目地址: https://gitcode.com/gh_mirrors/mc/mcpelauncher-manifest 架构设计概述 Minecraft基岩版…

作者头像 李华