微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 同步sram读写问题

同步sram读写问题

时间:10-02 整理:3721RD 点击:
同步sram读写问题
module sram_control(reset,clock1,datal,datah,address,
                    oe_n,ce_n,bwe_n,led_0,state,wel_n,
                    weh_n,mode,adsc_n,adsp_n,adv_n,data_out);
input clock1;                                     //sram的时钟                              
input reset;                                       //复位信号
input state;                                       //读写控制信号   
inout[8:0] datal;                                //数据低9位
inout[8:0] datah;                               //数据高9位
output[17:0] address;                       //地址信号
output oe_n;                                     //输出使能
output ce_n;                                     //片选信号
output bwe_n;                                   //字节写使能
output wel_n;                                    //低八位写使能
output weh_n;                                   //高八位写使能   
output mode;                                    //突发顺序选择
output adsc_n;                                 //控制器地址选通
output adsp_n;                                 //处理器地址选通
output adv_n;                                   //突发传输选择
output led_0;                                    //存满标志
output[17:0] data_out;                      //引致led观测是否与写入数据一致
  
reg ce_n,bwe_n,wel_n,weh_n,oe_n,mode,adsc_n,adsp_n,adv_n,led_0;
reg[17:0] address;
reg[17:0] data;                                   //待写入数据
wire[8:0] datal,datah;
parameter write=1'b1;
parameter read =1'b0;
  
always @  (posedge[/email] clock1 or negedge reset)            
if(!reset)
   begin
   address<=18'b00_0000_0000_0000_0000;
   data<=18'b00_0000_0000_0000_0000;
   ce_n<=1'b0;
   bwe_n<=1'b1;
   oe_n<=1'b1;
   mode<=1'b0;
   adv_n<=1'b1;
   adsp_n<=1'b1;
   led_0<=1'b1;
   end
   
else
  case(state)
      write: begin                                 //写状态
            if(address==18'b11_1111_1111_1111_1111)//刚好写满
               begin
               ce_n<=1'b0;
               led_0<=1'b0;
               address<=18'b00_0000_0000_0000_0000;
               bwe_n<=1'b1;
               wel_n<=1'b1;
               weh_n<=1'b1;
               oe_n<=1'b1;
               end
             else if((address<18'b11_1111_1111_1111_1111)&&(led_0==1))//写的过程
               begin
               if(address[0]==0)                    //偶地址写入AA
                 begin
                 ce_n<=1'b0;
                 oe_n<=1'b1;
                 bwe_n<=1'b0;
                 wel_n<=1'b0;
                 weh_n<=1'b0;
                 adsc_n<=1'b0;
                 address<=address+1'b1;
                 data<=18'b01_0001_0000_1000_1000;        
                 end
               else                                 //奇地址写入CC
                 begin
                 ce_n<=1'b0;
                 oe_n<=1'b1;
                 bwe_n<=1'b0;
                 wel_n<=1'b0;
                 weh_n<=1'b0;
                 adsc_n<=1'b0;
                 address<=address+1'b1;
                 data<=18'b01_1000_1100_1100_0110;
                 end
               end
             else                                    //等待读
               begin
               ce_n<=1'b0;
               bwe_n<=1'b1;
               wel_n<=1'b1;
               weh_n<=1'b1;
               oe_n<=1'b1;
               led_0<=1'b0;
               end
             end
        read: begin                                  //读状态
              led_0<=1'b1;
              ce_n<=1'b0;
              bwe_n<=1'b1;
              wel_n<=1'b1;
              weh_n<=1'b1;
              oe_n<=1'b0;
              adsc_n<=1'b0;
              address<=address+1'b1;
              end
  endcase
assign datal=oe_n?data[8:0]:9'bz;
assign datah=oe_n?data[17:9]:9'bz;
assign data_out={datah,datal};
endmodule  

首先我不知道 同步sram的控制信号这样给可以吗
其次我将data_out接到七段led上显示时,始终显示待写入的数据(即写的时候显示AA\CC(data的数据),读的时候不显示,因为此时给的是高阻态),而不是我想象中的sram中写入的AA\CC,我不知道是sram中根本没存入数据,还是我的输入输出总线控制有问题(即3个assign语句),希望大家给我这个初学者多提些建议!

关注中,等高手解答

已经解决啦!

说出来你的解决思路和方案

慢慢调就好了

帮顶~!~!
杀毒软件下载最新金山毒霸office酷我音乐盒金山毒霸下载~!

dddddddddddddddddddd

上一篇:最快的SRAM
下一篇:有做MVB控制器的没有

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top