24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 806  |  回复: 7

lss1776

新虫 (初入文坛)

[求助] 用V写的SDRAM控制器,始终不能调试出结果,求指教

本人正在学习SDRAM,想知道是初始化,还是工作状态有问题,求指教。@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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 322求调剂 +4 宋明欣 2026-03-27 4/200 2026-03-27 22:02 by 催化大白
[考研] 086000调剂 +3 7901117076 2026-03-26 3/150 2026-03-27 21:34 by Jianing_Mi
[考研] 学硕274求调剂 +5 Li李鱼 2026-03-26 5/250 2026-03-27 20:51 by 热情沙漠
[考研] 07化学280分求调剂 +10 722865 2026-03-23 10/500 2026-03-27 15:51 by Plutoqq
[考研] 一志愿哈尔滨工业大学材料与化工方向336分 +4 辰沐5211314 2026-03-26 4/200 2026-03-27 15:21 by 星空星月
[考研] 085600,材料与化工321分,求调剂 +9 大馋小子 2026-03-27 9/450 2026-03-27 14:30 by mmm just
[考研] 303求调剂 +7 安忆灵 2026-03-22 8/400 2026-03-27 11:46 by sanrepian
[考研] 276求调剂。有半年电池和半年高分子实习经历 +10 材料学257求调剂 2026-03-23 11/550 2026-03-27 10:13 by YCIT- LHL
[考研] 349求调剂 +5 杰斯塔里斯 2026-03-21 5/250 2026-03-27 00:31 by wxiongid
[考研] 一志愿华理,数一英一285求A区调剂 +8 AZMK 2026-03-25 10/500 2026-03-26 22:37 by 学员8dgXkO
[考研] 324求调剂 +4 wysyjs25 2026-03-21 4/200 2026-03-26 20:38 by fmesaito
[考研] 材料277求调剂 +5 min3 2026-03-24 5/250 2026-03-26 15:13 by zzll406
[考研] 263求调剂 +6 yqdszhdap- 2026-03-22 10/500 2026-03-26 13:11 by 公瑾逍遥
[考研] 环境专硕324分求调剂推荐 +5 轩小宁—— 2026-03-26 5/250 2026-03-26 12:05 by i_cooler
[考研] 考研调剂 +6 来好运来来来 2026-03-21 7/350 2026-03-25 22:43 by 418490947
[考研] 一志愿南航 335分 | 0856材料化工 | GPA 4.07 | 有科研经历 +6 cccchenso 2026-03-23 6/300 2026-03-25 22:25 by 544594351
[考研] 293求调剂 +7 加一一九 2026-03-24 7/350 2026-03-25 12:02 by userper
[考研] 335求调剂 +4 yuyu宇 2026-03-23 5/250 2026-03-23 23:49 by Txy@872106
[考研] 341求调剂(一志愿湖南大学070300) +5 番茄头--- 2026-03-22 6/300 2026-03-23 23:45 by Txy@872106
[考研] 求老师收我 +3 zzh16938784 2026-03-23 3/150 2026-03-23 12:56 by ztnimte
信息提示
请填处理意见