0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx RAM地址冲突

FPGA开发之路 来源:FPGA开发之路 2023-01-15 16:15 次阅读

Address collision 指的是RAM的两个port同时访问相同的地址可能导致数据发生错误的情况。在Xilinx中,不同的RAM,不同的RAM配置会导致address collision时不同的数据结果。

Distributed RAM

对于DRAM,写数据是 synchronous write,需要一个时钟周期, 读数据是 asynchronous read,当前时钟周期就能读出数据。因此当在某一个cycle读写同时访问同一地址时,读数据是 old data,即该地址原存放的数据而不是新要写入的数据。

Block RAM

BRAM的读写都是 synchronous。BRAM的两个Port分别为 PortA 和 PortB。

我们可以将 BRAM address collision 分为以下三类。

PortA 和 PortB 同时读数据

两个Port都会正确读出该地址中的数据。

PortA 和 PortB 同时写入数据

该地址最终被写入的数据是 non-deterministic。因此设计中要避免两个port同时写数据的address collision。

PortA 写数据同时 PortB 读数据,或者是 PortA 读数据同时 PortB 写数据

在这种情况下,数据总是会被正确写入到RAM中,但是读出的数据内容则依赖于BRAM的配置。BRAM的write mode可以配置为三种模式,write first,read first 和 no change。

下图为不同配置下的数据读写结果。可以看到当 write port 配置为 READ_FIRST时,不管 read port 如何配置,都会读出 old data。而当 write port 配置为 WRITE_FIRST 或 NO_CHANGE时,不管 read port 如何配置,读数据都是 X,即 undeterministic。因此在可能发生address collision 的BRAM,一般将两个 port都配置为 READ_FIRST,以确保数据读出的正确。

be7c4db8-94a4-11ed-bfe3-dac502259ad0.png

Ultra RAM

URAM的读写也都是 synchronous。URAM比较有意思的一点是,PortA 总是先于 PortB 执行操作,因此在 address collision 我们会看到不同于BRAM的结果。

PortA写,PortB读。PortB 会读出new data。(因为PortA先执行,所以在PortB读执行时,new data已经写入RAM中了)

PortA读,PortB写。PortA 会读出old data。(同样的,这也是因为PortA先执行)

PortA写,PortB写。最终该地址写入的值是PortB的值。(PortB因为后执行会覆盖PortA写的值)

beafa7ee-94a4-11ed-bfe3-dac502259ad0.png

Reference

《UltraScale Architecture Configurable Logic Block》

《UltraScale Architecture Memory Resources》

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6702

    浏览量

    88273
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1342

    浏览量

    114182
  • Xilinx
    +关注

    关注

    70

    文章

    2134

    浏览量

    120306

原文标题:Xilinx RAM Address Collision

文章出处:【微信号:FPGA开发之路,微信公众号:FPGA开发之路】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    工业设备IP地址冲突如何通过NAT网关解决

    已经陷入枯竭,IP地址重复便有可能导致数据送错,通信网络便会出现故障,无论是广域网还是局域网都有可能面对到IP冲突的问题。 对此,物通博联提供基于NAT网关的解决方案。网关可以通过WAN和LAN多个接口形成不同防火墙区域,从而对设备进行网段隔离;通过NAT和IP映射实
    的头像 发表于 08-07 15:21 135次阅读
    工业设备IP<b class='flag-5'>地址</b><b class='flag-5'>冲突</b>如何通过NAT网关解决

    IP地址冲突解决方法图示

    你是否在日常使用网络时,有这样的经历:突然就失去网络连接,时断时续,加载缓慢,文件传输突然中断?网络连接并没有完全断开,但网速变得异常缓慢看电视剧卡顿、下载文件简直龟速?那么你可能是IP地址冲突
    的头像 发表于 07-26 11:51 255次阅读

    两个路由器ip地址冲突怎么解决

    当两个路由器的IP地址发生冲突时,会导致网络连接不稳定或无法连接。以下是解决两个路由器IP地址冲突的步骤: 确定冲突的IP
    的头像 发表于 07-09 11:35 2386次阅读

    如何解决工厂中相同IP设备冲突故障问题

    随着网络规模的不断扩大,相应的IP地址资源也越来越捉襟见肘,IP地址冲突现象与日俱增。特别是在工业场景中,很多相同设备会放在相似的网络环境进行测试后才出货,当设备部署到工厂现场中就十分容易出现IP
    的头像 发表于 06-13 17:30 324次阅读
    如何解决工厂中相同IP设备<b class='flag-5'>冲突</b>故障问题

    stm8l中断控制串口收发,提示串口地址和变量地址冲突了怎么解决?

    刚刚接触单片机,刚刚接触stm8l,想实现串口有数据时通过CC1101将数据发送,当串口没有数据时则进入接收状态。但是编译时出现,中断地址和代码中的变量地址冲突的错误无法解决。希望大神予以指点。
    发表于 04-19 06:30

    在远程访问设备如果PLC的IP地址冲突如何解决

    要求从PLC中采集数据以达到远程监控的目的,从而实现设备、人员、物料、能源等多种生产要素的互联共通,从而及时觉察设备故障与产能缺陷,合理利用数据分析手段进行决策。但如果现场IP的IP地址冲突,那么数据采集通信便无法实现,后续
    的头像 发表于 02-20 17:26 515次阅读
    在远程访问设备如果PLC的IP<b class='flag-5'>地址</b><b class='flag-5'>冲突</b>如何解决

    局域网IP地址冲突、环路的罪魁祸首是什么?

    局域网IP地址冲突、环路的罪魁祸首是什么? 局域网IP地址冲突和环路是网络中常见的问题,它们会导致网络故障和通信中断,影响企业和个人的网络使用体验。本文将详细说明局域网IP
    的头像 发表于 02-04 11:03 2677次阅读

    什么是透明网桥?多台网桥的IP地址冲突是否会影响视频监控传输?

    什么是透明网桥?多台网桥的IP地址冲突是否会影响视频监控传输? 透明网桥是一种网络设备,用于连接两个以太网LAN,通过MAC地址过滤和转发数据帧。它能够学习和存储网络中各个节点的MAC地址
    的头像 发表于 02-03 16:41 1288次阅读

    求助,如何指定变量的RAM和ROM地址

    我使用 \" pragma 部分 far \" data 来指定 ram 地址,但我怎样才能指定它加载的 ROM 地址
    发表于 01-25 06:44

    softune如何把一个变量定义在指定RAM地址

    你好,请问如何把一个变量定义在指定RAM地址? 例如把 i 变量定义在 RAM地址 0x0200,谢谢!
    发表于 01-18 10:48

    个人和局域网IP地址冲突解决方案

    随着网络的广泛应用,使网络规模不断扩大,相应的IP地址分配也在不断增多,IP地址冲突现象与日俱增,在一定程度上影响了网络的正常运行。维护网络稳定、高效运行,解决IP地址
    的头像 发表于 12-13 09:58 1033次阅读
    个人和局域网IP<b class='flag-5'>地址</b><b class='flag-5'>冲突</b>解决方案

    发生IP冲突的原因是什么呢?如何解决IP冲突的问题呢?

    发生IP冲突的原因是什么呢?如何解决IP冲突的问题呢? IP地址冲突是指在一个局域网中两个或多个设备被分配了相同的IP地址,这会导致网络通信
    的头像 发表于 12-07 09:32 4178次阅读

    IC设计中关于ram的应用

    统计有效数据包的个数。 假设数据中存在pkt_id,pkt_id为0~63,则ram的深度为64。pkt_id用于作为读写地址RAM读延时为3个时钟周期。
    的头像 发表于 11-17 17:36 500次阅读
    IC设计中关于<b class='flag-5'>ram</b>的应用

    IC设计:常见的ram访问冲突

    ram冲突是几乎每颗芯片都需要关注的问题,部分场景下,ram访问冲突不容易验证到,容易造成芯片bug。ram访问
    的头像 发表于 11-13 10:44 1326次阅读
    IC设计:常见的<b class='flag-5'>ram</b>访问<b class='flag-5'>冲突</b>

    IP地址配置冲突导致路由振荡怎么办?

    IP地址配置冲突导致路由振荡怎么办? 标题:解决IP地址配置冲突导致的路由振荡 引言: 在网络中,IP地址配置
    的头像 发表于 11-09 09:24 672次阅读