閱讀337 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【OpenHW參賽手記】AXI初體驗

去年報名參加了OpenHW2012開源硬件大賽,入圍後收到了Xilinx讚助的ZED-Board。

自從今年3月拿到ZED板卡,就開始體驗ARM+FPGA這個神奇的架構。

AXI,是PS與PL之間最佳的通信手段。

Xilinx XPS中用戶自定義IP核可以擁有AXI-Lite,AXI4,AXI-Stream,PLB和FSL這些接口實現和PS通信。

其中AXI-Lite具有輕量級,結構簡單的特點,適合小批量數據、簡單控製場合。AXI4和AXI-Lite差不多,隻是增加了一項功能就是突發傳輸,可以連續對一片地址進行一次性讀寫。上麵兩種均采用內存映射控製方式,即ARM將用戶自定義IP編入某一地址進行訪問,讀寫時就像在讀寫自己的片內RAM,編程也很方便,開發難度較低。代價就是資源占用過多,需要額外的讀地址線、寫地址線、讀數據線、寫數據線、寫應答線這些信號線,而且傳輸速度受限(主要是因為采用AXI-GP物理接口,帶寬很低)。

另外一種AXI接口就是AXI-Stream,這是一種連續傳輸的接口技術,速度能達到很高,而且不需要地址線(有點像FIFO,你就一直讀或一直寫就行)。這類IP不能通過上麵的內存映射方式控製,必須有一個轉換裝置,例如AXI-Interconnector,AXI-DMA模塊就能實現內存映射到流式接口的轉換,但編程較複雜,調試起來沒有內存映射方式直觀,必須要通過芯片內部調試接口(Chipscope)來觀察。

AXI-Stream適用的場合有很多:視頻流處理;通信協議轉換;數字信號處理;無線通信等。

其本質都是針對數值流構建的數據通路,從信源(例如ARM內存、DMA、無線接收前端等)到信宿(例如HDMI顯示器、音頻輸出等)構建起連續的數據流。這種接口適合做實時信號處理。當然,實際處理中也有分塊和不分塊的情況,典型分塊情況就是計算FFT。

後麵兩種貌似在ZED上麵用處不大,都是Microblaze的接口。不過應該也有橋接IP。沒有研究。

我們項目中屬於典型的流式數據,從射頻前端、ADC采集到信號傳輸到DDR2內存,組織為時分複用或並行通路來傳輸數值數據到自定義IP,並攜帶額外信息(當前幀均衡器的係數),利用控製流通道傳輸過去。處理結果仍傳回DDR2中,交給主機顯示或存儲為文件。和DDR2的通信需要借助AXI-HP物理接口,PL部分為master,負責數據搬移。

通過以上論述,應該比較清楚的看到整個數據走向了。具體實施細節還需要進一步研究。

最後更新:2017-04-03 16:48:32

  上一篇:go C# 網絡編程之獲取本機名、ip地址、域名、物理位置
  下一篇:go Android 的係統屬性(SystemProperties)設置分析