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

    文章

    7348

    浏览量

    95017
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1401

    浏览量

    121000
  • Xilinx
    +关注

    关注

    73

    文章

    2206

    浏览量

    131889

原文标题:Xilinx RAM Address Collision

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RAM存储器中的地址冲突场景

    RAM 是基于 FPGA 的系统设计中的关键组件,通常用于其高速数据存储功能。然而,地址冲突可能会带来重大挑战,影响系统的可靠性和性能。本文我们将探讨简单双端口 RAM 模块中
    的头像 发表于 04-24 09:59 1564次阅读
    块<b class='flag-5'>RAM</b>存储器中的<b class='flag-5'>地址</b><b class='flag-5'>冲突</b>场景

    Linux如何防止内存冲突

    在聊这个话题之前,我们先回忆一下单片机系统中是如何分配内存的?如果没有bootloader,那硬件环境起来之后就直接进入主程序运行,如果有引导程序bootloader,那就需要设置好跳转地址,否则设置不对,系统就无法启动了。
    的头像 发表于 01-30 16:51 1431次阅读
    Linux如何防止内存<b class='flag-5'>冲突</b>?

    CW32F030 RAM存储器的介绍

    1 概述 CW32F030 内部集成 8KB 嵌入式 RAM 供用户使用,用来存放程序执行过程中的各种数据。 RAM 的起始地址为0x2000 0000,数据在 RAM 中以小端模式
    发表于 01-12 06:33

    显存读写冲突造成花屏解决方案

    . TE信号从TFT控制器发出, 告诉MCU,现在“开始”从第一行开始读RAM并显示了~ 目标是避免TFT控制器读取RAM数据时, MCU却在往同一位置写数据所造成的冲突, 详细说明: 举例: &
    发表于 12-29 09:07

    如何高效修改西门子PLC的相同IP地址

    IP 地址重复冲突的问题,无法实现数据采集与远程通信,将直接影响到设备联网率与信息化管理水平。 某企业多台PLC控制的设备在上网时出现相同IP冲突问题。由于设备较多,如果要求厂商工程师来到现场逐一修改IP的方式效率较低。一方面
    的头像 发表于 12-16 13:52 608次阅读
    如何高效修改西门子PLC的相同IP<b class='flag-5'>地址</b>

    芯源MCU的RAM存储器的操作

    用户可执行的RAM 存储器操作包括:读操作、写操作。 对RAM 的读写操作支持8bit、16bit 和32bit 三种位宽,用户程序可以通过直接访问绝对地址的方式完成读写, 但要注意读写的数据位宽
    发表于 11-21 07:46

    工业NAT网关实现PLC、机床等设备IP地址冲突的解决方案

    在工业自动化项目中,工程师经常会遇到一个问题——IP地址冲突。比如一台编写好程序的自动化设备,其内部PLC的IP地址是固定的192.168.1.1,在接入工厂局域网络时却发现无法联网,经过检查后才
    的头像 发表于 11-06 16:58 887次阅读
    工业NAT网关实现PLC、机床等设备IP<b class='flag-5'>地址</b><b class='flag-5'>冲突</b>的解决方案

    ram ip核的使用

    1、简介 ram 的英文全称是 Random Access Memory,即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据, 其读写速度是由时钟频率
    发表于 10-23 07:33

    国外老旧设备出现IP冲突无法上网如何解决

    在智能制造机数字化转型的浪潮中,大量工厂仍存在一些运行年限较久的老旧设备。这类设备多是海外设备,常因出厂预设静态IP地址、硬件限制无法修改网络参数,导致在接入现代企业网络时频繁出现IP地址冲突,加上
    的头像 发表于 10-16 10:52 515次阅读
    国外老旧设备出现IP<b class='flag-5'>冲突</b>无法上网如何解决

    N9H30如何从SPI闪存将应用程序加载到RAM地址0x0?

    无法利用 uboot 从 SPI 闪存0x0将应用程序加载到 RAM 地址。SF 读取0x0 0x100000 0x700000这是 uboot 限制
    发表于 09-01 06:06

    IP地址冲突导致德国站群服务器断网的解决方法?

    在网络管理中,IP地址冲突是一个常见且令人头疼的问题。尤其是对于依赖站群服务器进行大规模网络操作的企业而言,IP冲突可能会导致整个服务器群组无法正常工作,从而造成严重的业务中断。本文将探讨如何解决因
    的头像 发表于 08-12 15:47 884次阅读

    编程软件连接PLC出现IP冲突时如何解决?

    一般来说,每个PLC都有自己的IP地址,用以和其他设备进行通信。而如果同一网络出现相同IP的设备,就会导致IP冲突、数据丢包或ping不通等问题。而如果IP地址没有冲突,不在一个网段内
    的头像 发表于 07-31 17:08 1227次阅读
    编程软件连接PLC出现IP<b class='flag-5'>冲突</b>时如何解决?

    CNC的IP地址相同冲突如何解决?

    的IP地址,这就极易引发IP地址冲突问题。当这些设备接入车间网络时,IP冲突会导致数据采集不上来,物联网平台缺乏数据来源,严重影响数字化车间的建设。 通常,设备被设置相同IP
    的头像 发表于 07-23 14:13 881次阅读
    CNC的IP<b class='flag-5'>地址</b>相同<b class='flag-5'>冲突</b>如何解决?

    国外PLC出现IP相同冲突如何解决

    在某汽车零部件制造工厂的智能化改造项目中,需要将车间内多台西门子PLC设备接入工厂监控系统,实现设备数据的实时采集与远程监控。 然而,在设备联网调试过程中,发现出现了IP冲突问题。原因在于这批PLC
    的头像 发表于 05-15 17:05 1005次阅读
    国外PLC出现IP相同<b class='flag-5'>冲突</b>如何解决

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一个 LogiCORE IP 核,用于在 FPGA 中实现高效的移位寄存器(Shift Register)。该 IP 核利用
    的头像 发表于 05-14 09:36 1273次阅读