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

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

3天内不再提示

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

FPGA自习室 来源:IC的世界 2023-11-13 10:44 次阅读

ram冲突是几乎每颗芯片都需要关注的问题,部分场景下,ram访问冲突不容易验证到,容易造成芯片bug。ram访问冲突的类型通常有访问接口冲突和访问地址冲突。

术语解释:1r1w ram表示ram存在一个写口和一个读口,一共2个端口。1rw ram表示ram只有一个端口,此端口能写能读,同一个周期不能同时读写。1r1rw ram表示存在2个端口,其中一个端口只支持读操作,另外一个端口支持写操作和读操作(不能同时读写)。下文中的Logic访问指的由硬件逻辑发起的访问。csr表示可配置模块, 其对应的soft_access通常是由软件发起的对ram的访问,可能是读操作,也可能是写操作。

1、访问接口冲突

107d0496-8026-11ee-939d-92fbcf53809c.png

接口冲突,即多个访问请求同时访问一个ram的端口,例下图所示,logic 访问和soft访问同时竞争同一个端口。Case1所示为1rw ram(只有一个端口,能读能写),逻辑读和逻辑写同时竞争一个端口。Case2所示ram(可以是多个端口的ram),逻辑访问(读or写)和软件(写or读)访问同时竞争一个端口。

危害:接口冲突类型中,如果某一个访问存在高优先级,那么低优先级访问可能一直无法响应。轻则导致访问失败,重则模块挂死。

解决方案:高优先级访问接口需要控制连续访问次数,必须在一定时间内插入空拍。

2、访问地址冲突

109a18a6-8026-11ee-939d-92fbcf53809c.png

我们以1r1w的ram和1R1RW的ram为例进行讲解。如图所示:访问地址冲突,指的是读操作和写操作同时访问且地址相同。注意:此处的同时并不一定是同一个周期,同时指的是从ram读接口收到读操作直到返回读数据的若干个周期内(一般是1~3周期)。例如T0 clk,ram收到对addr(0x10)的读操作,T1 clk,读数据还未返回,此时ram收到对addr(0x10)的写操作,这种也算读写地址冲突。

危害:发送读写地址冲突时,读返回的数据可能不符合期望,读返回的可能是不确定值,可能是新值(写操作写入的值),也可能是旧值(不同厂家不同类型的ram响应因为不一样),部分厂家支持ram定制返回新值或者旧值,部分厂家ram返回的就是不确定值。读到不确定值明显会影响模块功能。

解决方案:在ram访问接口添加保护模块。

如果读返回需要新值,则在发送地址冲突时,将写操作的写数据转移给读返回。

如果读返回需要旧值,(比较少见)

定制读返回旧值的ram

添加冲突保护模块,发生地址冲突时,对写操作进行反压,此方案需要应用场景允许

审核编辑:汤梓红

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

    关注

    455

    文章

    50730

    浏览量

    423185
  • 接口
    +关注

    关注

    33

    文章

    8580

    浏览量

    151029
  • IC设计
    +关注

    关注

    38

    文章

    1295

    浏览量

    103920
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1368

    浏览量

    114649

原文标题:IC设计:常见的ram访问冲突【必学】

文章出处:【微信号:FPGA_Study,微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    fsmc如何避免NE之间的访问冲突?

    最近看了一些fsmc的资料,这样的话如何避免NE之间的访问冲突,请指点
    发表于 05-06 08:43

    ARM访问外部RAM

    51单片机通过P0和P2口以及ALE、WR、RD的组合可以对外部RAM进行读写,那如果对相同的RAM使用ARM应该如何才能访问外部呢?
    发表于 12-29 23:42

    关于6678 多核访问EDMA 冲突问题

    您好, 想实现6678 多核访问EDMA,如何做到避免多核冲突。目前做法:8核使用不同的region,8核DMA事件用不同的channel。请问还需做哪些工作保证8核用EDMA传输数据时都能正确传送,目前8核分别单核运行都没问题,8核group 运行只有一个核完成传送。谢
    发表于 08-06 09:18

    请问怎样直接指定一个ram并用位带方式来访问

    请问怎样直接指定一个ram,并用位带方式来访问它?用寄存器的位带我懂。但是用内部RAM(0x20000000-0x200FFFFF)怎做位带?直接写 BIT_ADDR(0x20000000,1) 这样应该会出问题吧?系统怎知我用
    发表于 08-28 22:52

    如何用Mutex解决多线程调用printf()函数对串口访问冲突

    互斥量(Mutex)有什么作用?如何用Mutex解决多线程调用printf()函数对串口访问冲突
    发表于 07-22 08:07

    Labview运行myrio冲突拒绝访问是何原因导致的

    Labview运行myrio冲突拒绝访问是何原因导致的?怎样去解决Labview运行myrio冲突拒绝访问的问题呢?
    发表于 02-23 06:52

    S12Z访问冲突错误怎么解决?

    我使用 devkit s12zvc,当我在 RTI 中断中执行任何汇编指令时遇到访问冲突错误。任何第一条汇编指令都会导致访问冲突错误。报错后的MMCEC寄存器:MMCEC = 1441
    发表于 03-22 08:37

    RAM,RAM工作原理是什么?

    RAM,RAM工作原理是什么? RAM (Random Access Memory随机存贮器)是指通过指令可以随机地、个别地对每个存储单元进行访问
    发表于 03-24 16:03 1w次阅读

    什么是载波侦听多路访问/冲突避免(CSMA/CA)协议

    什么是载波侦听多路访问/冲突避免(CSMA/CA)协议 发展背景(出因): 在总线和环形拓扑中,网络上的设备必须共享传输线路,为解决同一
    发表于 04-09 11:31 1.4w次阅读

    解读片上RAM和外部RAM访问速度的差异问题

    有些威廉希尔官方网站 ,比如总线,看起来它和一般程序员关系不大。但它却串联起很多问题:为什么片上RAM和外部RAM访问速度有差异;为什么CPU访问外部RAM
    发表于 10-31 14:17 6496次阅读

    关于ROM和RAM有哪些常见问题

    关于ROM和RAM常见问题分析。
    的头像 发表于 11-19 15:51 2836次阅读

    stm32h743外部RAM非字节对齐访问,引起的hard fault

    stm32h743外部RAM非字节对齐访问,引起的hard fault
    发表于 12-09 09:21 5次下载
    stm32h743外部<b class='flag-5'>RAM</b>非字节对齐<b class='flag-5'>访问</b>,引起的hard fault

    TANDY WP 2 RAM IC卡开源分享

    电子发烧友网站提供《TANDY WP 2 RAM IC卡开源分享.zip》资料免费下载
    发表于 07-15 14:31 0次下载
    TANDY WP 2 <b class='flag-5'>RAM</b> <b class='flag-5'>IC</b>卡开源分享

    如何解决C语言中的“访问权限冲突”异常?C语言引发异常原因分析

    如何解决C语言中的“访问权限冲突”异常?C语言引发异常原因分析  在C语言中,访问权限冲突异常通常是由于尝试访问未授权的变量、函数或其他数据
    的头像 发表于 01-12 16:03 5641次阅读

    IC设计:ram的折叠设计操作步骤

    IC设计中,我们有时会使用深度很大,位宽很小的ram。例如深度为1024,位宽为4bit的ram
    的头像 发表于 03-04 15:08 2132次阅读
    <b class='flag-5'>IC</b>设计:<b class='flag-5'>ram</b>的折叠设计操作步骤