前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RAM IP Core中 Write First Read First和No Change的区别

RAM IP Core中 Write First Read First和No Change的区别

作者头像
猫叔Rex
发布2020-06-29 15:18:21
9360
发布2020-06-29 15:18:21
举报
文章被收录于专栏:科学计算科学计算

  当我们调用RAMO的IP时,无论是单端口还是双端口模式,都会有个选项:

可能很多人都没注意过这个选项,记得毕业季去华为面试的时候,还问过我这个问题,当时也是没答上来。后来也发现很多面试官都喜欢问这个问题,今天我们就来讲一下。

  在讲这三种模式具体的区别前,我们先把RAM的接口说一下,对于单端口RAM,有6个端口:

  • clka: 时钟输入端口
  • addra: 地址输入端口
  • dina: 数据输出端口
  • douta: 输出输出端口
  • ena: RAM使能,高有效
  • wea: 写使能,高有效

  这三个选项是用来解决读写冲突时使用的,什么是读写冲突?就是对同一地址进行了读写。首先来回顾一下RAM最常被使用的方式,当需要写入数据时,将wea拉高,并给出地址和数据;当需要读数据时,将wea拉低,在地址的下一个周期输出数据。我们都知道,douta端口受addra的控制,它会输出对应地址的数据。那么问题就来了,当写数据的时候,此时douta输出的,是当前地址刚刚写入的数据,还是写入前的数据,或者直接不输出?

  • Write First Mode:

  写优先模式,在该模式下,写使能有效时,当前时钟下写入的数据,在下一个时钟就会出现在douta端口上。下图中,在时刻1时,将数据1111写入RAM中,默认douta的数据比地址晚一个周期,因此在时刻2时,1111便会出现在douta上。

  • Read First Mode:

  读优先模式,在该模式下,写使能有效时,当前时钟下写入的数据,不会在下一个时钟就会出现在douta端口上。

下图中,假如地址aa上的数据是0xaa,地址bb上的数据是0xbb,地址cc上的数据是0xcc,在时刻1将数据1111写入到RAM中,但在下一个时钟周期即时刻2时,RAM的输出douta输出的是RAM原来的数据0xbb,而不是上一个时刻写入的1111.

  • No Change Mode:

  写优先模式,在该模式下,写使能有效时,输出数据端口douta一直保持不变,不会根据地址的变化而变化。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 傅里叶的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档