將ARM AXI4用于FPGA 把恒星裝入瓶中
本文引用地址:http://dyxdggzs.com/article/127296.htm

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