求助:ddr3 ml605的一些问题
时间:10-02
整理:3721RD
点击:
1.
app_addr = row + bank + col
app_addr = bank + row + col
两者的区别是什么?
2.
对于顺序的读写,比如ML605板上的DDR3是512MB的,那么如果全部写入或者读出,无论在back-to-back 还是 non back-to-back模式下,
app_addr是否就单调的增加就行,而不用单独处理 col_addr row_addr bank_addr,如果是这样,那么就不用了解DDR3内部的组织了。
而对于单独地读写一个burst length,我的理解也是不用单独处理col_addr等的。
请问是否是这样?
3.
我的设计这样的:
3.1 put data -> ddr3: (put_data_fifo + mask_fifo) -> ddr3, 两个fifo的写入速率小于读出速率,
这样的话,对ddr3的写入就会不连续,所以我采用了app_rdy和app_wdf_rdy同时处理的模式,也就是说:在app_rdy和app_wdf_rdy同时为高的情况下
如果fifo有数据的话,app_en会隔一个周期使能(写入app_cmd和app_addr);
app_en使能的同时app_wdf_wren,写入app_wdf_data为burst的前四个qw;app_en不使能时,写入app_wdf_data为burst的后四个qw.
3.2 ddr3 -> get data: ddr3 -> (get_data_fifo),同理,fifo的读出速率小于写入速率。
当fifo快满时,就要停止从ddr3读取数据,也就是停止app_en及地址的增加,这样的话就无法实现back-to-back了,
所以我的ddr3读取逻辑还是app_en使能隔一个周期。
请问这样的设计是否会有问题?
而事实呢,我确实碰到问题,比如512MB全部写入然后全部读出时,我的逻辑状态机会死机:写和读都会死机。
读死机是app_rdy始终为低;
写死机是状态机跳到未知状态去了,可我没有定义其他状态啊。
呼唤 catcat_2 和 lucien_1986 出来答疑,万分感谢!
app_addr = row + bank + col
app_addr = bank + row + col
两者的区别是什么?
2.
对于顺序的读写,比如ML605板上的DDR3是512MB的,那么如果全部写入或者读出,无论在back-to-back 还是 non back-to-back模式下,
app_addr是否就单调的增加就行,而不用单独处理 col_addr row_addr bank_addr,如果是这样,那么就不用了解DDR3内部的组织了。
而对于单独地读写一个burst length,我的理解也是不用单独处理col_addr等的。
请问是否是这样?
3.
我的设计这样的:
3.1 put data -> ddr3: (put_data_fifo + mask_fifo) -> ddr3, 两个fifo的写入速率小于读出速率,
这样的话,对ddr3的写入就会不连续,所以我采用了app_rdy和app_wdf_rdy同时处理的模式,也就是说:在app_rdy和app_wdf_rdy同时为高的情况下
如果fifo有数据的话,app_en会隔一个周期使能(写入app_cmd和app_addr);
app_en使能的同时app_wdf_wren,写入app_wdf_data为burst的前四个qw;app_en不使能时,写入app_wdf_data为burst的后四个qw.
3.2 ddr3 -> get data: ddr3 -> (get_data_fifo),同理,fifo的读出速率小于写入速率。
当fifo快满时,就要停止从ddr3读取数据,也就是停止app_en及地址的增加,这样的话就无法实现back-to-back了,
所以我的ddr3读取逻辑还是app_en使能隔一个周期。
请问这样的设计是否会有问题?
而事实呢,我确实碰到问题,比如512MB全部写入然后全部读出时,我的逻辑状态机会死机:写和读都会死机。
读死机是app_rdy始终为低;
写死机是状态机跳到未知状态去了,可我没有定义其他状态啊。
呼唤 catcat_2 和 lucien_1986 出来答疑,万分感谢!
困扰已久的问题,同求
同问,有经验的人来说下吧
