打印

FPGA 读SRAM 时候的注意事项(原创)

[复制链接]
3342|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cuianbin|  楼主 | 2012-11-15 11:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
SRAM 是很通用的存储器,分为同步SRAM 和异步SRAM 关于二者的区别:同步SRAM,读写需要时钟控制,而异步SRAM 读写无需时钟。举个例子 我们最常用的SRAM IS61LV25616 就是异步SRAM ,异步SRAM 比同步SRAM 要快,操作也很简单.在写SRAM的时候速度是相当快的,地址单元变化后,数据线上放上数据,就一定能写进指定的单元中。但是在读SRAM的时候要注意一个输出延时,以前没有注意到,想当然的以为数据输出是按我写的来运行的,其实不然,现在把我的“研究”分享一下!
    首先看一下IS61LV25616的数据手册,可以看到共有4中型号可供选择 8ns 10ns 12ns 15ns  它们的速度不同,自己使用的SRAM 到底是什么型号的,芯片上是标着-8,-10 。。的 所以这个指标也要关注一下!
    其他得操作时序我就不多说了,这里只需要说一点。看图

当读条件建立后,地址变化时候 理想的情况下,数据会跟着地址实时变化,但是很遗憾,它有个延时输出,延时了多久呢?TAA 这个taa 是不能忽略的,可以看到如果选用10ns的期间,它的最大值有10ns 这是什么概念呢?如果时钟频率是50MHZ(20ns) 那么当在第一个时钟上升沿建立地址后,数据要延时半个时钟周期才会输出!Dout 是数据线上的数据,如果在FPGA中用一个寄存器保存下来,那么如果不注意,那么这个寄存器保存下来的值是前一个地址的值!如果你不知道这一点,那么后面的数据处理就出错了。
  我从网上找到一个好东西,就是IS61LV25616的verilog 模型,这样我就可以用modelsim进行仿真了。下面是我的仿真结果:写SRAM
读SRAM

第一个图是写SRAM ,地址单元0 写入的是0069H 地址单元1写入的是0068H
第二个图是读SRAM, 地址单元0时,shuju 并没有输出,而是延时了半个时钟周期采输出,data_temp2 保存的是地址单元1中的数据,但是实际上保存了写入地址单元0中的数据 0069H 地址单元2 保存了写入地址单元1中的数据0068H.

仿真的结果和实际的运行结果是不是一样的呢?
看一下SigTapII Logic Anylazer 的结果就知道了 写SRAM

读SRAM
和仿真结果完全一样。
所以,大家在使用SRAM 的时候一定要注意这个时延,否则就会出错!


SRAM 仿真模型:很有用的 eetop.cn_IS61LV25616.zip (1.14 KB)

相关帖子

沙发
swustlx86| | 2012-11-15 17:27 | 只看该作者
谢谢分享 好好学习

使用特权

评论回复
板凳
shang651| | 2012-11-15 20:36 | 只看该作者
不错,谢谢。

使用特权

评论回复
地板
星星之火红| | 2012-11-18 16:44 | 只看该作者
**很好啊。

使用特权

评论回复
5
wmsk| | 2012-11-18 17:03 | 只看该作者
不错啊。

使用特权

评论回复
6
710291751| | 2012-12-20 18:16 | 只看该作者
谢谢分享 好好学习

使用特权

评论回复
7
zbhbyc| | 2012-12-20 19:41 | 只看该作者
谢谢分享!

使用特权

评论回复
8
GoldSunMonkey| | 2012-12-20 20:10 | 只看该作者
要是XILINX就好了

使用特权

评论回复
9
dsptms320| | 2012-12-20 21:40 | 只看该作者
有个程序贴出来分享下,就好了...呵呵

使用特权

评论回复
10
heningbo12| | 2012-12-24 23:18 | 只看该作者
记录一下

使用特权

评论回复
11
chluo_09| | 2012-12-27 19:55 | 只看该作者
谢谢lz的代码分享啊

使用特权

评论回复
12
zhukegood| | 2013-9-24 09:36 | 只看该作者
谢谢楼主分享,先顶一个了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:来到这个论坛,乐于分享,好好学习!!

86

主题

439

帖子

5

粉丝