日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

axi ps读写pl_PL读写DDR:Datamover能干什么

發布時間:2023/12/1 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 axi ps读写pl_PL读写DDR:Datamover能干什么 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近發現工程項目中一直在用AXI-DMA。這玩意兒搬數據倒是沒問題,就是用axi-lite配置起來非常反人類。。。簡單的辦法其實是用datamover ip核。

這個ip核能干嘛呢。準備寫個文章解析一下。由于好多feature沒用過,所以僅僅看文檔可能理解有誤,歡迎指出錯誤。

首先掃個盲:MM2S指的是Memory map to stream. 讀DDR. S2MM指的是steam to memory map. 寫DDR.

Datamover能干嘛

  • 能把數據以axi_stream的格式從DDR里搬入搬出
  • 支持4KB的邊界保護以及自動拆解太長的burst
  • 可以排隊處理多次讀寫請求
  • 支持字節為單位的非對齊傳輸
  • 支持store-and-forward模式。也就是MM2S的時候先把數據緩存下來,再分發出去
  • 支持indeterminate BTT mode。也就是說。。S2MM的時候你甚至不需要知道你要寫多少數。

簡單的使用方法

上圖是一個讀操作的。寫的類似。接口只有4個。

  • 把你要搬數據的信息例如起始地址,數據長度等以axi-stream的形式捅到command端口。
  • AXI4 Master接到DDR上(實際是接到MIG上)。
  • AXI4 Stream Master就是讀出來的數。
  • AXI-Stream status是狀態。拿出來容易debug.

你應該往AXI4-STREAM SLAVE(command)端口里捅什么

這個東西的重中之重顯然就是command指令。

指令格式如上面的樣子。讀寫都是一樣的。一個一個來講。

xCACHE: 這個一共4bit. 用于配置axi總線一些cache性質的。感興趣參考AXI的文檔。不關心全給成0. 主要是一個cache相關的東西。

xUSER: 4bit.這個是你自己定義的信號。。也就是說你想用axi總線穿點兒私貨。。那就要把數據寫到這個地方。到時候axi傳輸的時候會出現在user端口。

RSVD: Reserved... 干什么的顯然。。。

TAG: 這個是給該條指令個一個標簽。有這個TAG在出了錯debug的時候可以報是哪條指令出錯了。當然你要是頭鐵覺得不用DEBUG. TAG全給0.

SADDR: 讀寫DDR里的初始地址。要注意的是如果你想非對齊傳輸,配置Datamover的時候要把非對齊傳輸點開。(例如ddr指定的是32bit, 對齊傳輸是指你從0,4,8這些地址開始讀,非對齊傳輸是指你想從1開始讀)

DRR: 這個數據就比較繞了。。。這個數據是后面DSA的開關。主要是為了調整Stream端(而不是memory端,memory端直接由SADDR地址就能確定)非對齊操作的位置,也就是說,這個值表示該條指令對應的傳輸需要對stream端數據做調整。具體怎么調整看后面的DSA. 用在MM2S.

EOF: 這個數據一樣比較繞。先說簡單的。

在S2MM的過程中,如果INDETERMINATE BTT模式關閉,你想用tlast信號表示你寫完了,那么EOF要置高。

在MM2S的過程中,同時存在多條指令。你想讓最后一條讀出來后再來tlast. 那就只在最后一條置高這個EOF. 如果你開啟來非對齊傳輸。。。最好每條都置高。否則你得注意兩條指令之間不會不有廢數據。

DSA: 這個是為了調節stream側的數據非對齊的。。。舉個栗子。假如DDR是32bit的。那么它應該有4個byte. (從高到低 m3 m2 m1 m0)。這個DSA如果等于1。表明你會把數據m1放到stream的第一個數據。m0被丟掉了。。。所以如果需要這種操作,就打開DRR, 配置DSA. 否則DRR也不需要打開。

Type: 這個表示你的地址要不要累加。。如果不累加你就是在起始地址瘋狂寫。所以一般傳輸要是一整塊的話這個要置1.

BTT: 這個簡單。你要傳輸多少個數。。。注意單位是byte. 不是你axi_stream的寬度。

配置IP CORE需要注意的點

Stream端的數據位寬要小于或者等于AXI4端的數據位寬。配置IP核的時候就會提示。

配置界面上Maximum Burst Size這個參數比較繞。指的是AXI總線的burst size. 一般來說設個16什么的就好。你給出的BTT會自動切成這種小的傳輸。

其他都很簡單。。。看上面操作就能實現。

總結

這篇文章解讀了一下讀DDR的接個IP核。如果不想直接用AXI-FULL來讀寫DDR,要操作AXI_STREAM數據讀寫DDR的話,最常用的IP核是DMA和這個datamover。其中DMA更適合用PS來操作。更復雜功能更強大,但是實際使用起來比較復雜,尤其你想從PL寫個AXILITE控制DMA的時候。。。所以。

從PL調用DDR直接用datamover才是比較合理的操作。就這這樣。。。

總結

以上是生活随笔為你收集整理的axi ps读写pl_PL读写DDR:Datamover能干什么的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。