±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 803  |  »Ø¸´: 7

lss1776

гæ (³õÈëÎÄ̳)

[ÇóÖú] ÓÃVдµÄSDRAM¿ØÖÆÆ÷£¬Ê¼ÖÕ²»Äܵ÷ÊÔ³ö½á¹û£¬ÇóÖ¸½Ì

±¾ÈËÕýÔÚѧϰSDRAM£¬ÏëÖªµÀÊdzõʼ»¯£¬»¹Êǹ¤×÷״̬ÓÐÎÊÌ⣬ÇóÖ¸½Ì¡£@mchen_6431
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ÄäÃû

±¾Ìû½öÂ¥Ö÷¿É¼û
2Â¥2016-06-02 19:38:45
ÒÑÔÄ   ÉêÇëÐÅÏ¢EPI   »Ø¸´´ËÂ¥   ±à¼­   ²é¿´ÎÒµÄÖ÷Ò³

lss1776

гæ (³õÈëÎÄ̳)

3Â¥2016-06-02 20:22:55
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

µ¥Ç¹Îè¾ÅÖÝ

½ð³æ (ÕýʽдÊÖ)

4Â¥2016-06-02 20:52:34
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

lss1776

гæ (³õÈëÎÄ̳)

5Â¥2016-06-02 20:59:38
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

lss1776

гæ (³õÈëÎÄ̳)

ÒýÓûØÌû:
4Â¥: Originally posted by µ¥Ç¹Îè¾ÅÖÝ at 2016-06-02 20:52:34
Ìù³ö´úÂë¿´¿´°¡

module sdram_0 (
// input
                                        reset,
                                        clk,
                                        in_data,
//full,empty,
// out
                  addr,
                  bank,//???????????????????????????????????????
                  cas,
                  cke,
                  cs,
                  dq,// yu za_data qu bie ??????????????????
                  dqm,
                  ras,
                  out_data,
                  we,
      
                  );
   
   //  duan kou sheng ming
input reset,clk;
input [40:0]in_data;//addr [37:16] data[15:0]

output  [11:0] addr;
reg [11:0] addr;
output reg [1:0] bank;
output  cas,cke,cs,ras,we;
wire cas,cke,cs,ras,we;
assign cke=1'b1;
wire  [3:0] cmd;
assign{cs,ras,cas,we}=cmd;
assign  cmd=init_done?m_cmd:i_cmd;
inout [15:0] dq;
wire [15:0] dq;
output [1:0] dqm;
wire [1:0] dqm;
assign dqm=2'b00;
output reg [15:0] out_data;
reg init_done;
// ji shu ji cun qi sheng ming
reg [15:0]NOP_counter; //200 us and  8 us auto refresh

// kong zhi ji cun qi ;

reg ref_req;

reg [3:0] i_cmd;
reg [11:0] i_addr;
reg [2:0] counter;
reg [2:0] i_state;
reg [2:0] i_next;
reg r;
reg [99:0]rr;
reg start;



always @ (posedge clk or negedge reset )
begin
if(reset==0)
begin
NOP_counter<=19200;
ref_req<=0;
rr<=0;
start<=1;
end
else
begin
if(NOP_counter==1)
begin   ;NOP_counter<=800;if(rr==0) begin rr<=rr+1; start<=1; end else  start<=0;end
else begin NOP_counter<=NOP_counter-1; end
ref_req <= ((NOP_counter == 1) | ref_req) & ~act_ref_req & init_done;
end

end

always@(posedge clk or  negedge reset )
begin
if(reset==0)
begin
i_addr<={12{1'b1}};
counter<=0;
i_state<=3'b000;
i_next<=3'b000;
r<=0;
end
else
if(!init_done && (start==0))
case(i_state)
// qu xiao xin pian
3'b000:
begin  i_cmd<=4'b1111;i_state<=3'b001;end
// precharge
3'b001: begin  i_cmd<=4'b0010;i_state<=3'b011;i_next<=3'b010;end
//auto_charge

3'b010:begin i_cmd<=4'b0001;i_state<=3'b011;counter<=3;
if(r<1)  begin  i_next<=2; r<=r+1;end
else    i_next<=7;
end

//NOP
3'b011:begin i_cmd<=4'b0111;  if(counter > 1) counter<=counter-1; else i_state<=i_next;  end

//
3'b101:begin i_state<=3'b101; end

// mo shi she ding
3'b111:begin i_cmd<=4'b0000; i_state<=3'b011; i_next<=3'b101; counter<=4;i_addr={12{1'b0}}; end
default :i_state<=3'b000;
endcase
end

always @(posedge clk or negedge reset)
begin
if(reset==0)
init_done<=0;
else
if(i_state==5)  init_done<=1;
end




// work state


//        3      22      16
assign {m_wor,m_bus_addr,m_data}=in_data;

wire [2:0]  m_wor;       // read or write signal

wire  wr ;

assign wr={m_wor[0]};

wire [21:0] m_bus_addr;  // addr bus
assign m_bank={m_bus_addr[21],m_bus_addr[8]};///////********************** you wen ti
wire [11:0] m_addr;       // addr

wire [15:0] m_data;       // data

wire [1:0] m_bank;



reg [2:0]m_count;
reg [3:0] m_state;
reg [3:0] m_next;

reg [3:0] m_cmd;
reg oe;
reg act_ref_req;   // 1 active
assign dq=oe? m_data:16'bzzzz;

always @(posedge clk )
begin
if(reset==0)
begin
m_state<=0;
m_next<=0;
oe<=0;
m_count<=0;
act_ref_req<=0;
end
else

case(m_state)
// idle
0:    if(init_done)
begin
               if(ref_req==1)
                         begin   m_state<=6; end
               else
                     begin  
                      m_state<=1;
                      end
end
// row active
1:
  begin
m_state<=2;m_cmd<=4'b0011;  oe <= 1'b0;bank<=m_bank;addr<=m_bus_addr[20:9]; m_next<=wr?3:4; m_count<=2;//*********************** tRC
end

//NOP
2:begin   oe <= 1'b0;act_ref_req<=0;if (m_next == 7)
                      m_cmd <= {{1{1'b0}},3'h7};
                  else
                    m_cmd <= {{{1'b0}},3'h7};
                       if (m_count > 1)
                      m_count <= m_count - 1'b1;
                  else
                    m_state <= m_next;
              end

//read
3:begin  m_cmd <= {{{1'b0}},3'h5}; oe <= 1'b0;
                if (ref_req)
                        begin
                          m_state <= 6;
                        
                        end
                      else
                        begin
                          addr <= {4'b0100,m_bus_addr[7:0]};
                          out_data <= dq;
                           m_state <=2;
                           m_next<=1;
                           m_count<=2;
                          end
end
//write
4:begin   m_cmd <= {{{1'b0}},3'h4};
                  
                  if (ref_req)
                        begin
                          m_state <= 6;
                        
                        end
                      else
                        begin
                          addr <={4'b0100,m_bus_addr[7:0]};
                           m_state <=2;
                           m_next<=1;
                           oe <= 1'b1;
                          end
end

//ref
6:begin    oe <= 1'b0;      m_state <= 7; //*********************************************tRP
                  addr <= {12{1'b1}};//              
                  // precharge all if arf, else precharge csn_decode
                  if (ref_req)
                      m_cmd <= {{1{1'b0}},3'h2};
                  else
                    m_cmd <= {{{1'b0}},3'h2};
end
// ref_act
7:begin
                  act_ref_req <= 1'b1;
                  m_state <= 2;
                  m_cmd <= {{1{1'b0}},3'h1};
                  m_count <= 3;
                  m_next <= 0;
                  end


              
              default: begin
                  m_state <= m_state;
                  m_cmd <= 4'b1111;
                  oe <= 1'b0;
              end // default
endcase



end
endmodule
6Â¥2016-06-02 21:42:40
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

superjintao

ľ³æ (ÖªÃû×÷¼Ò)

7Â¥2016-06-06 19:41:03
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

lss1776

гæ (³õÈëÎÄ̳)

ÒýÓûØÌû:
7Â¥: Originally posted by superjintao at 2016-06-06 19:41:03
µ÷ÓÃIPºË¶à·½±ã¡£

ÎÒÊÇÔÚѧϰsdram£¬²¢²»ÊǼòµ¥µÄʵÏÖ¹¦ÄÜ¡£

·¢×ÔСľ³æAndroid¿Í»§¶Ë
8Â¥2016-06-06 21:39:30
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ lss1776 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Ò»Ö¾Ô¸Î人Àí¹¤£¬×Ü·Ö321£¬Ó¢Ò»Êý¶þ£¬ÇóÀÏʦÊÕÁô¡£ +5 nnnnnnn5 2026-03-25 5/250 2026-03-27 04:42 by wxiongid
[¿¼ÑÐ] Çóµ÷¼Á Ò»Ö¾Ô¸ ±¾¿Æ ±±¿Æ´ó »¯Ñ§ 343 +6 13831862839 2026-03-24 7/350 2026-03-26 22:57 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] 324Çóµ÷¼Á +3 hanamiko 2026-03-26 3/150 2026-03-26 21:00 by sanrepian
[¿¼ÑÐ] ²ÄÁϵ÷¼Á 5+4 ÏëÒªÒ»ºøÌÒ»¨Ë® 2026-03-25 10/500 2026-03-26 19:56 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] 281Çóµ÷¼Á +3 ÑÇ¿ËÎ÷good 2026-03-26 5/250 2026-03-26 19:48 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] 271Çóµ÷¼Á +6 ÉúÈçÏÄ»¨¡­ 2026-03-22 6/300 2026-03-26 16:48 by ÕÅ¿­Ê®°ËºÅ
[¿¼ÑÐ] ¿¼Ñе÷¼Á +8 СÀ¯ÐÂ±Ê 2026-03-26 8/400 2026-03-26 16:18 by dick_runner
[¿¼ÑÐ] ѰÕÒµ÷¼Á +5 ¾óǿâ? 2026-03-21 8/400 2026-03-26 13:25 by 0906ljy
[¿¼ÑÐ] ¡¾2026¿¼Ñе÷¼Á¡¿ÖÆÒ©¹¤³Ì 284·Ö ÇóÏà¹Ø×¨Òµµ÷¼ÁÃû¶î +4 Ô¬Û¼Û¼ 2026-03-25 8/400 2026-03-25 14:32 by lbsjt
[¿¼ÑÐ] 318Çóµ÷¼Á +3 plumÀî×Ó 2026-03-23 3/150 2026-03-25 09:42 by ÎíÉ¢ºóÏàÓölc
[¿¼ÑÐ] 292Çóµ÷¼Á +4 ¶ì¶ì¶ì¶î¶î¶î¶î¶ 2026-03-24 4/200 2026-03-24 16:41 by peike
[¿¼ÑÐ] 305·ÖÇóµ÷¼Á£¨Ê³Æ·¹¤³Ì£© +5 Sxy112 2026-03-21 7/350 2026-03-24 12:27 by 544594351
[¿¼ÑÐ] Ò»Ö¾Ô¸ºÓ±±¹¤Òµ´óѧ0817»¯¹¤278·ÖÇóµ÷¼Á +7 jhybd 2026-03-23 12/600 2026-03-24 09:03 by jhybd
[¿¼ÑÐ] 361Çóµ÷¼Á +3 Glack 2026-03-22 3/150 2026-03-23 22:03 by fuyu_
[¿¼ÑÐ] 269Çóµ÷¼Á +4 ÎÒÏë¶ÁÑÐ11 2026-03-23 4/200 2026-03-23 21:25 by pswait
[ÂÛÎÄͶ¸å] ¼±·¢ºËÐÄÆÚ¿¯ÂÛÎÄ +3 ÏÍ´ïÎʽò 2026-03-23 5/250 2026-03-23 17:13 by ÃÃ×Ó²»ºÃÈÇ
[¿¼ÑÐ] 308Çóµ÷¼Á +3 īīĮ 2026-03-21 3/150 2026-03-22 16:54 by i_cooler
[¿¼ÑÐ] 319Çóµ÷¼Á +4 СÁ¦Æøçæçæ 2026-03-20 4/200 2026-03-22 15:53 by ColorlessPI
[¿¼ÑÐ] 298Çóµ÷¼ÁÒ»Ö¾Ô¸211 +3 Éϰ¶6666@ 2026-03-20 3/150 2026-03-22 15:50 by ColorlessPI
[¿¼ÑÐ] Çóµ÷¼Á +3 eation27 2026-03-20 3/150 2026-03-20 19:32 by JourneyLucky
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û