当前位置: 首页 > news >正文

多端口ROM的实现

一、多端口ROM的实现(使用多个block ram堆实现的)主要使用指令#pragma HLS RESOURCE variableindex_data coreROM_nP_BRAM#include array_FIFO.h//#include hls_stream.hvoid array_process(dout_t d_o[4], din_t d_i[4]){#pragma HLS INLINE offFor_Loop: for (int i0;i4;i) {d_o[i] d_i[i];}}void array_FIFO (dout_t d_o[4], din_t d_i[4], didx_t idx[4]) {#pragma HLS ARRAY_PARTITION variabled_i complete dim1#pragma HLS INTERFACE s_axilite portd_iint i;const din_t index_data[4]{1,2,3,4};//实现了四个read port的ROM#pragma HLS RESOURCE variableindex_data coreROM_nP_BRAMdin_t local_buff[4];#pragma HLS ARRAY_PARTITION variablelocal_buff complete dim0// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {#pragma HLS UNROLL//#pragma HLS PIPELINE II1local_buff[i] d_i[index_data[i]];}array_process(d_o, local_buff);}上述代码的ROM是4个port底层其实是使用两个双端口的block ram来实现的。这两个block ram中都存储着同一个部分的内容这样是可以来解决数据同一个bank撞车问题。二、多端口ROM的实现(使用多个lut ram堆实现的)void array_process(dout_t d_o[4], din_t d_i[4]){#pragma HLS INLINE offFor_Loop: for (int i0;i4;i) {d_o[i] d_i[i];}}void array_FIFO (dout_t d_o[4], din_t d_i[4], didx_t idx[4]) {#pragma HLS ARRAY_PARTITION variabled_i complete dim1#pragma HLS INTERFACE s_axilite portd_iint i;const din_t index_data[4]{1,2,3,4};//实现了四个read port的ROM#pragma HLS RESOURCE variableindex_data coreROM_nP_LUTRAMdin_t local_buff[4];#pragma HLS ARRAY_PARTITION variablelocal_buff complete dim0// Breaks FIFO interface d_o[3] d_i[2];For_Loop: for (i0;i4;i) {#pragma HLS UNROLL//#pragma HLS PIPELINE II1local_buff[i] d_i[index_data[i]];}array_process(d_o, local_buff);}三、虽然没有RAM_NPORT这个东西的指令其实你可以从上述设计逻辑自己定义结构也能实现类似ROM_NPORT的东西。举一反三这个对设计有很大的帮助了避免数组访问bank撞车。
http://www.gsyq.cn/news/1374053.html

相关文章:

  • 2026智能人工气候室应用白皮书:低温型人工气候室/保鲜库/催芽室/全天候智能人工气候室/养虫室/冷冻库/医药冷库/选择指南 - 优质品牌商家
  • 文章三:Elasticsearch 集群恢复和索引分布
  • 告别无效背词,家门口的科学记忆工具太实用
  • Redis为何如此快?揭秘IO多路复用技术【个人八股】
  • Python 基础数据类型详解:列表、元组与 range
  • AArch64虚拟内存系统架构与64KB大页优化实践
  • 2026年黄金回收商家深度解析:宝奢科技等头部企业如何选择 - 2026年企业推荐榜
  • 抗功耗侧信道攻击的逻辑综合框架PoSyn解析
  • P15895 [TOPC 2025] One-Way Abyss 题解
  • 昇腾CANN ge 仓的图优化 Pass:哪些 Pass 真正影响推理性能
  • 比较运算符,逻辑运算符与三目运算
  • 从0开始打造自己的压缩软件(仅文字适配)上——文本的压缩
  • qemu和gcc编译
  • # 网页设计学习感悟
  • Claude Code 在安装vscode插件时遇到的问题。
  • 解锁UE5.1增强输入高级玩法:用自定义Input Modifier实现游戏摇杆灵敏度曲线与高级死区
  • Unity地形优化实战:Terrain设置、LOD与Draw Call控制,让你的开放世界跑得更流畅
  • 网络安全学习第112天
  • 2026国际传感器展会优质平台推荐:上海传感器展会、中国传感器展会、北京传感器展会、国际传感器展会、中国传感器展选择指南 - 优质品牌商家
  • 企业官网后台的工程化设计:内容建模、所见即所得与源码自主可控
  • 一文讲清楚规则、Skill、MCP
  • 别再手动下载DLL了!用Windows自带工具SFC/SCANNOW一键修复kernel32.dll错误
  • 2026年Q2,为何专业通信工程商纷纷锁定河北乐佳U型钢走线架? - 2026年企业推荐榜
  • 别再只用ARIMA了!用Python的SSA算法给你的时间序列数据‘卸个妆’(附完整代码与调参心得)
  • Bi-LSTM vs CNN-BiLSTM:实战对比哪个模型更适合你的时间序列预测任务?
  • 交通顶刊TR Part C 2026年6月论文导读(下)
  • AI应用开发岗面经
  • 别再让系统‘无家可归’:给已用满空间的Win10 SSD无损创建EFI引导分区指南
  • 别再只认ldd了!盘点5种查看Linux程序动态库依赖的方法(含静态/交叉编译场景)
  • 【程序源代码】答题微信小程序(含源码)