上一節說到了DDR尋址的問題,如下圖:

從官方文檔上我們看到了DDR的地址是從0008_0000開始的,那么我們開始修改Xilinx給我們提供的IP核代碼。其實很簡單,上一節已經分析了地址停留在0000_1000的原因,現在我們只需要把write_burst_counter的位寬變大就可以了。
從上表看到地址范圍由全0到全1,計算一下就知道需要的寬度為27,即 C_NO_BURSTS_REQ = 26;
重新打包IP核,生成比特流。開始調試


由於從0003_0000開始的地址是保留位,理論上來說當我們寫到這里了應該會報錯,但實際上並沒有,有上面兩張圖看出報錯是從0003_07c0開始的,具體是什么原因還得以后繼續深挖


同樣的,理論上從0008_0000開始的地址應該返回正常,但實際上是從0008_07c0開始正常的。
到這里從PL控制DDR的讀寫基本就已經成功了,但是兩個地方都是07c0,到底是為什么?還有待進一步研究,文檔全是英文的,看起來有點吃力,進度可能會比較慢
by the way , Jeff Johnson also has a good tutorial on using AXI DMA: http://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html ,感興趣的可以參考一下
