tag 标签: fpga,片外sram

相关博文
  • 热度 10
    2013-4-3 21:33
    2329 次阅读|
    2 个评论
        由于毕设需求片外SRAM,现对片外sram时序进行测试,下面会陆续更新其他测试,为大家以后的设计提供可能的参考,片外sram型号:IS61LV25616,FPGA芯片为altera的,这个不重要,关于该芯片大家可以参考其手册。 下面给出该手册上给出的读写条件,还有一些读写时要注意的最小时间,大家用的话可以看下手册: 下面给出测试代码,比较简单的反应了读写时序,不太严谨,忘谅解: /* 片外SRAM在没有往里面写数据之前,从里面读出的数据是随机的 */ module chipout_sram_test ( input wire          CLOCK_50, input wire     SW,     output reg          SRAM_WE_N,  // write enable output reg          SRAM_CE_N,  // chip enable output reg          SRAM_OE_N,  // data output enable output reg          SRAM_LB_N,  // low_byte enable output reg          SRAM_UB_N,  // high_byte_enable output reg    SRAM_ADDR,  // addr,0!256k-1 inout  wire   SRAM_DQ     // dual_direction data ); reg dq_reg; reg cnt1,cnt2; assign SRAM_DQ=(!SRAM_WE_N)?dq_reg:16'bz; always @(posedge CLOCK_50) begin   if (SW )     begin       SRAM_WE_N=1;       SRAM_CE_N=1;       SRAM_OE_N=1;       SRAM_LB_N=1;       SRAM_UB_N=1;       SRAM_ADDR=0;       cnt1=0;       cnt2=0;       dq_reg=0;          end   else     begin    if (cnt1=16)   //write test        begin          SRAM_WE_N=0;          SRAM_CE_N=0;          SRAM_OE_N=0;          SRAM_LB_N=0;          SRAM_UB_N=0;          SRAM_ADDR=cnt1;           dq_reg=cnt1;          cnt1=cnt1+1;        end       else      // read test        begin            SRAM_WE_N=1;           SRAM_CE_N=0;           SRAM_OE_N=0;           SRAM_LB_N=0;           SRAM_UB_N=0;           SRAM_ADDR=cnt2;                   cnt2=cnt2+1;                 end          end     end endmodule 其中cnt1产生写地址及写数据,cnt2产生读地址,我用SignalTap II 工具抓取了波形,触发条件是SW 变为低电平(SignalTap怎么用大家百度一下): 波形显示:当前周期给读地址,下个周期数据就出现在数据端口上,再下个周期就可以进行采样,其实这和工作频率有关,我的设计中是50Mhz(20ns),手册上也给出读地址给后最多15ns后即可出现数据; 我没仿真在对一个地址写数据后多少周期可以读该地址的数据,不过参考手册至少中间要隔一个周期后才可以, 整体而言sram的速率还是非常快的。