將ARM AXI4用于FPGA 把恒星裝入瓶中
本文引用地址:http://www.biyoush.com/article/127296.htm
圖 2:使用新穎的 PCB 天線的微波成像相位天線陣列
AXI4 問世之前
為滿足我們系統(tǒng)的需要,位于 Virtex-6 上的 MicroBlaze™ 處理器必須能夠訪問 DDR3 SDRAM 存儲器,這樣 Linux 才能訪問我們采集到的實時數(shù)據(jù)。為此,我們必須采用一個能同時被 MicroBlaze 總線和實時串流 IP 訪問的存儲器控制器。起初我們試圖使用 PLB 總線,但發(fā)現(xiàn)基于 PLB 的存儲器控制器存在局限性,使我們無法在要求的頻率下連接 64 位寬的接口,而只能提供 32 位寬。我們意識到這個任務(wù)會很艱難,我們又編寫了一個能夠通過低層 NPI 協(xié)議直接與存儲器控制器進行通信的內(nèi)核,但只能實現(xiàn) 2Gbps 的速率。雖然這個速率已經(jīng)令人驚嘆,而且打破了我們能夠?qū)崿F(xiàn)的所有速度記錄,但仍然不能滿足我們的要求。
幸運的是賽靈思隨后推出了 AXI4 互聯(lián)和存儲器控制器,能夠以 400MHz 的雙倍數(shù)據(jù)速率(每秒 8 億次事務(wù)處理)對整個 64 位寬度實現(xiàn)完全訪問。這樣可以有效實現(xiàn) 6.4Gbps 的數(shù)據(jù)吞吐能力,這個速度已經(jīng)超過了我們要求的每板 4Gbps的速度。這正是我們所需要的。
我們實際上找到了兩種實現(xiàn)這個速度的途徑:一個是修改 axi_v6_ddrx 存儲器控制器(隱含在AXI 互聯(lián)層下)。另一種方法是用系統(tǒng)生成器 (System Generator) 生成 AXI Master PCore。PCore 可以以 AXI External Master 的形式附加給 Xilinx Platform Studio (XPS) 里的MicroBlaze 系統(tǒng)。
兩種解決方案都能夠以 5Gbps 的速度向 DDR3 存儲器中傳輸數(shù)據(jù)。AXI 編程簡便,采用獨立的讀寫通道,可以實現(xiàn)非常高的存儲速度。XPS 工具則為 AXI 設(shè)計賦予了極大的靈活性。我們把這種靈活性轉(zhuǎn)化為我們的優(yōu)勢,例如我們可以根據(jù)需要只選擇一條寫入通道,從而能夠簡化邏輯設(shè)計,釋放更多資源。
軟處理器界面
這款賽靈思工具集有一項獨特的功能,即 MicroBlaze 軟處理器。它的“軟”在于能夠使用 FGPA 邏輯。在賽靈思及其合作伙伴的努力下,該處理器能夠得到主流 Linux 內(nèi)核的全面支持。我們被這種努力所打動,決定把開發(fā)工作放在 Linux 環(huán)境中進行。
這項功能的意義在于,我們可以給 FPGA 系統(tǒng)構(gòu)建一個類似 PC 的界面。這樣做的意義非常重大,例如,可以在 FPGA 上實現(xiàn) Web 和 SSH 服務(wù)器。我們可以在 Linux 下安裝 System ACETM 閃存(格式化為 MSDOS),這樣我們就可以遠程更新固件。
網(wǎng)絡(luò)流
鑒于我們能夠在 0.5 秒內(nèi)在每個 FPGA 板上采集 2Gb 的數(shù)據(jù),我們現(xiàn)在要解決的問題是如何在合理的時間內(nèi)通過標準的接口將數(shù)據(jù)從 FPGA 板上輸出。實踐證明,在 Linux 環(huán)境中使用簡單協(xié)議(比如 UDP),利用 MicroBlaze 處理器通過千兆位以太網(wǎng)所實現(xiàn)的網(wǎng)絡(luò)速度太慢,只能達到 0.5 Mb/s。以這種速率下載 0.5 秒內(nèi)采集的數(shù)據(jù),我們需要等上一個多小時!
評論