news 2026/3/23 0:41:35

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/3/18 0:01:53

基于springboot在线音乐个性化推荐APP的设计与实现

随着移动互联网的快速发展&#xff0c;人们对音乐的个性化需求日益增长。在线音乐个性化推荐APP应运而生&#xff0c;旨在为用户提供更加贴合个人喜好的音乐体验。该APP采用Java语言开发&#xff0c;结合Spring Boot框架和MySQL数据库&#xff0c;实现了高效的数据处理和稳定的…

作者头像 李华
网站建设 2026/3/21 1:38:17

VMPDump:动态脱壳利器,让VMProtect保护无所遁形

VMPDump&#xff1a;动态脱壳利器&#xff0c;让VMProtect保护无所遁形 【免费下载链接】vmpdump A dynamic VMP dumper and import fixer, powered by VTIL. 项目地址: https://gitcode.com/gh_mirrors/vm/vmpdump 在逆向工程的世界里&#xff0c;VMProtect保护一直是让…

作者头像 李华
网站建设 2026/3/20 1:43:10

隐私优先的离线音频转录神器:Buzz让语音转文字更安全高效

隐私优先的离线音频转录神器&#xff1a;Buzz让语音转文字更安全高效 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 还在为会…

作者头像 李华
网站建设 2026/3/16 23:42:46

Python行为树编程完整指南:快速构建智能决策系统

Python行为树编程完整指南&#xff1a;快速构建智能决策系统 【免费下载链接】py_trees Python implementation of behaviour trees. 项目地址: https://gitcode.com/gh_mirrors/py/py_trees 想要为你的Python项目添加智能决策能力吗&#xff1f;PyTrees行为树库正是你需…

作者头像 李华
网站建设 2026/3/20 19:11:52

B站直播神器:5分钟打造高互动自动化直播间

B站直播神器&#xff1a;5分钟打造高互动自动化直播间 【免费下载链接】Bilibili-MagicalDanmaku 【神奇弹幕】哔哩哔哩直播万能场控机器人&#xff0c;弹幕姬答谢姬回复姬点歌姬各种小骚操作&#xff0c;目前唯一可编程机器人 项目地址: https://gitcode.com/gh_mirrors/bi/…

作者头像 李华
网站建设 2026/3/17 1:57:51

API限流与鉴权:生产环境OCR服务安全控制

API限流与鉴权&#xff1a;生产环境OCR服务安全控制 背景与挑战&#xff1a;当OCR服务暴露于公网 随着企业数字化进程加速&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术已成为文档自动化、票据处理、信息提取等场景的核心组件。基于CRNN模型的通用文字识别服务因其…

作者头像 李华