首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

读写外部SRAM的程序:烂代码找错!

读写外部SRAM的程序:烂代码找错!

程序要完成的功能是在地址1110和11110内写入两个不同的值,然后读出1110的值送LCD显示,看是否能够正确读写SRAM.


事实是CD显示的仍然是要写入11110的值,也就是没有正确写入和读出SRAM的值.


高手改错了!!!


inout [15:0] datbus;
output oe;
output ce;
output we;
output lb;
output ub;
output [17:0] adress;
 


reg [17:0] r_adress;
reg [15:0] r_datbus;
reg dat_dir;
reg r_oe;
reg r_ce;
reg r_we;
reg [3:0] i;
reg [3:0] r_count_clk1;
reg ddclk;
reg flag;   //读写SRAM转换


 if(flag)
   begin
    dat_dir <= 1;
       if(r_count_clk1 == 0)
             begin
    r_adress <= 18'b00_0000_0000_0000_1110;  //SRAM 送地址
     r_we <= 1'd0;   //write
     r_ce <= 1'd0;
     r_oe <= 1'd1;
     r_datbus <= 16'b0000_0000_0001_1111;   //送数据
     end
  
    else if(r_count_clk1 ==3)
      begin
      r_adress <= 18'b00_0000_0000_0001_1110;   //送地址
      r_datbus <= 16'b0000_0011_1110_0000;      //送数据
      end
      else if(r_count_clk1 == 5)
    begin
    r_adress = 18'bzz_zzzz_zzzz_zzzz_zzzz;
    r_oe <= 1;
    r_we <= 1;
      end
    end
   
////////////////////read////////////////////////////////////////////////////// 
   else
   begin
    dat_dir <= 0;
    if(r_count_clk1 == 0)
    begin
     r_adress <= 18'b00_0000_0000_0000_1110;  //SRAM 地址
      r_oe <= 1'd0;          //read
     r_ce <= 1'd0;
     r_we <= 1'd1;
    end
    else if(r_count_clk1 == 3)
      begin
      r_red <= r_datbus & 16'b0000_0000_0001_1111;
      r_green <= (r_datbus & 16'b0000_0111_1110_0000)>>5;
      r_blue <= (r_datbus & 16'b1111_1000_0000_0000)>>11;
      end
    else if(r_count_clk1 == 5)
    begin
    r_adress = 18'bzz_zzzz_zzzz_zzzz_zzzz;
     r_oe <= 1'd1;          //read
     r_we <= 1'd1;
    end


end 


assign adress = r_adress;
assign datbus = dat_dir?r_datbus:16'bzzzz_zzzz_zzzz_zzzz;
assign oe = r_oe;
assign ce = r_ce;
assign we = r_we;
assign tclk1 = iclk1;

返回列表