SSram读写时序分析

来源:互联网 发布:网络游戏客户端编程 编辑:程序博客网 时间:2024/06/01 15:24
  • SSram引脚
      output reg Ssram_Clk;
      output reg [20:0] Ssram_Addr;
      inout [23:0] Ssram_Data;
      output reg Ssram_OEn;
      output reg Ssram_GWn;
      output wire Ssram_CE2n;
      output wire Ssram_CE2;
      output wire Ssram_CEn;
      output wire Ssram_Mode;
      output wire [3:0] Ssram_BWn;
      output wire Ssram_BWEn;
      output reg Ssram_ADSCn;
      output reg Ssram_ADSPn;
      output wire Ssram_ADVn;
      output wire Ssram_ZZ;
  • 引脚配置
      assign Ssram_CE2n=1’b0;
      assign Ssram_CE2=1;
      assign Ssram_CEn=0;
      assign Ssram_Mode=0;
      assign Ssram_BWn=4‘b0000;
      assign Ssram_BWEn=1;
      assign Ssram_ADSCn=0;
      assign Ssram_ADSPn=1;
      assign Ssram_ADVn=1;
      assign Ssram_ZZ=0;


  • 引脚配置分析

  SSram内部结构如下图所示

  下面分别从地址控制、数据控制、读写控制、其他共4个部分进行讲解

  • 片选信号
    /CE、CE2、/CE2,这三个信号是片选信号,使用 过程中直接配置为选中芯片即可,分别设置为0,1,0
    分析

  从图中粉色方框可以看出如果任一片选信号不被选中,其与读写信号通过“与”逻辑,则读写信号被锁定无效,芯片无法正常读写

  • 睡眠模式信号
    ZZ:睡眠控制信号

分析
  睡眠模式用于降低功耗,不使用的话就直接拉低即可

  • 地址控制信号
    /ADV:自动突发地址(A0,A1)计数片选
    /ADSP:自动突发地址(A0,A1)计数清0(与/ADSC和/CE配合)
    /ADSC:自动突发地址(A0,A1)计数清0
    /MODE:自动突发地址(A0,A1)计数方式(顺序计数,格雷码计数)

分析
  实际使用中不使用自动地址功能,因此/ADV拉高,计数器停止工作;/ADSC拉低,强制计数器清0,使其输出结果A0,A1与实际地址的A0’,A1’做异或的时候不改变地址,也即是由自己控制地址的低两位;由于/CE已经拉低,/ADSP必须拉高,否则其非->与结果恒为1,会影响/GW写信号;/ADV屏蔽计数功能后,/MODE为0或者1无关紧要。

  • 写控制信号
    /GW:写使能控制信号(与/BWE,/BW(a-x)配合)
    /BWE:写使能控制信号
    /BW(a-x):写使能控制信号

分析
  BWE和BW(a-x)配合用于字节读写,实际使用中不使用字节读写功能可以屏蔽该功能。如上图蓝色方框所示,当/BWE拉高时,/BW(a-x)无效,字节读写功能被屏蔽,所有位都同时读写,此时读写控制由/GW完成;/GW拉低,进行写功能

  • 读控制信号
    /OE:数据输出使能信号,低电平有效

分析
  如上图中绿色方框所示,当片选有效且无写操作的时候,/OE信号就能控制数据是否能被输出到芯片的数据引脚上,实际上其内部数据是一直输出的,由于读写数据线共用,因此用/OE来控制读写数据线争用问题。当/OE有效时,内部存储器数据通过三态门输出到芯片数据引脚上,否则数据输出通路断开。


  • 写时序

  从图中方框可以看出,写地址、写数据、写控制信号都经过了一个寄存器,因此在写数据时候三个信号应该边沿对齐,比时钟信号提前一定的相位(根据实际情况调整,大多数情况下提前180°,也即反相时钟即可)

  • 读时序

注:读写时序完全可以参照芯片手册,本例致力于简化操作
  从上图中可以看出读地址经过一个SSRAM芯片时钟寄存一次,其输出数据点如图中A点所示,A点数据同样经过芯片时钟寄存一次,然后通过三态控制器输出,其读时序如下图所示,信号说明如下:

  • clock:FPGA逻辑时钟
  • addr:ssram地址线引脚
  • A data:A点输出数据
  • B data:B点输出数据
  • OEn:ssram数据输出使能信号
  • ssram clock:ssram时钟引脚
  • data valid:读取数据有效
  • data valid2:读取数据有效信号经过ssram时钟同步
  • read data:B点数据经过ssram时钟同步,也即是FPGA读出的数据

  ssram clock上升沿采集到addr1地址后,延迟一段时间于A点输出A data,data1数据经过下一个ssram clock时钟上升沿寄存一次,经过三态门输出到B点B data,B点数据相对于时钟上升沿延迟一段时间叫clock access time,时钟上升沿之后数据保持时间为clock high to data invalid,本例中使用的是用ssram clock时钟对数据进行寄存一次,输出如read data所示。
  想要输出数据稳定,ssram clock上升沿采集到的地址数据要足够稳定,因此ssram clock与clock要选择合适的相位延迟,大多数直接选择反相时钟(相位延迟180°),本例中选择相位延迟180°时,通过signalTab观察单个地址读写会有误码现象,数据输出不够稳定,相位延迟240°可保证数据稳定输出。

注:ssram的地址信号有两类:同步地址A(Synchronous Address Inputs)和同步突发地址A0,A1(Synchronous Burst Address Inputs),其中A0,A1用于突发数据,若不使用该功能,A0,A1必须接地址的最低位。A地址则无高低位之分,地址设置如:A0,A1,A,A,A,…A

0 0