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