转载自EETOP http://bbs.eetop.cn/thread-875310-1-1.html
【背景】一年多没有写FPGA代码了,最近开始搞DDR项目,想深入研究一下DDR IP核的三个刷新接口
【平台】A7 + DDR3
【结论】结果发现这三个接口刷新与否没有本质区别,不用主动刷新此接口;IP核自己刷新就行;
【步骤】将黑金A7101的代码移植到另一块开发板上,在DDR读写结束的时候,手动将app_ref_req,app_zq_req,app_sr_req等信号拉高一拍,观察刷新效果。
本来以为刷新的话可以控制app_rdy等信号被拉低的位置的,进而简化读写过程,减小数据输入输出时间,结果发现手动刷新只是徒然增加app_rdy拉低的几率o(╥﹏╥)o
调试记录如下:
1. DDR初探
1.1官方说明
【见图片1】
1.2 尝试自动刷新操作
刷新信号
|
现象
|
结论
|
|
1
|
app_ref_req,app_zq_req,app_sr_req
|
刷新后app_rdy等信号短时拉高,读写基本要长时间等待
|
|
2
|
app_ref_req,app_zq_req
|
IP核可用,app_rdy持续拉低的时间变多
|
|
3
|
app_ref_req
|
IP核可用,app_rdy拉低间隔不等
|
|
4
|
不刷新
|
刷新代码修改如下:
READ_END:
begin
// state <= IDLE; MEN_REF_TEST
state <= MEN_REF_TEST;
app_ref_req <= 1'b1;
app_zq_req <= 1'b1;
app_sr_req <= 1'b0;
app_ack_cnt <= 3'd0;
app_ack_timeout <= 10'd0;
end
/////////////////////////////////////////
//add by leo,test ref_req, zq_req
MEN_REF_TEST:
begin
//state <= IDLE;
app_ref_req <= 1'b0;
app_zq_req <= 1'b0;
app_sr_req <= 1'b0;
app_ack_cnt <= app_ack_cnt + app_sr_active + app_ref_ack + app_zq_ack;
app_ack_timeout <= app_ack_timeout + 1;
if(app_ack_cnt == 2 || app_ack_timeout >= 100)
begin
state <= MEN_REF_TEST_END;
app_ack_cnt <= 0;
app_ack_timeout <= 0;
end
end
MEN_REF_TEST_END:
state <= IDLE;
//add by leo end
也就是同时刷新3个信号,结果如下
(0217初探刷新问题)
【操作1】示例,spec称sr_req需要接地,这里刷新了,IP核出问题。
【操作2】 停止手动刷新app_sr_req新号,IP核工作正常,但是在2333和3057这两个时刻,app_rdy拉低似乎比不刷新的时候拉低的频率更高。
【操作3】只刷新ref_req信号,app_rdy长时间拉低的情况仍然存在。
【操作4】 不刷新
【空闲地方】往往在读数据的时候出现,他的间隔反倒为1480的整数倍,非常标准;1480,2960,4440!!
【app_wdf_rdy】偶尔拉低一拍,数据要等一下;
App_wdf_rdy偶尔拉低一拍的时间间隔也是1480Tclk,和app_rdy偶尔出现的拉低间隔是一致的,这里是巧合吗?
1.3 app_rdy拉低时间分析
读取时间拉低前面4Tclk后面14Tclk。数据读出时间为段1+17Tclk ;也就是读取数据经过fifo至少需要缓存18+1(后面也会顿一拍)个数据。
【重要】
【读取数据分析】
写数据,一开始,地址比数据提前1Tclk(-1)数据中断了1Tclk(-1),地址由于app_rdy中断了10Tclk(+10)
也就是数据写完了后10-1-1=8Tclk后,地址写完了。这个地址不提前,试一下看行不行。。。
【重要】
【读取数据分析】
从读指令发起APP_CMD=1开始,读取数据有效延时了13Tclk,数据中断19Tclk,如果用FIFO缓冲,读取延时取3Tclk,
总延时为35Tclk = 13+19+3Tclk;
保险起见,提前40Tclk发起读数命令,保证数据可达性;
写数据的话,中间断断续续大概10Tclk,数据写完,但是地址没有写完,等8Tclk写完
(0218提出3个问题)
另外,黑金A7101开发板的程序写的真的很不错,接口加一个fifo就可以搞定了,赞一个!
下一次写一写黑金代码解读吧。
FPGA菜鸟的求学之路。。。。。。。。