本節(jié)介紹的AXI是個(gè)什么東西呢,它其實(shí)不屬于Zynq,不屬于Xilinx,而是屬于ARM。它是ARM最新的總線接口,以前叫做AMBA,從3.0以后就稱為AXI了。
書上講的AXI比較具體,本節(jié)呢不打算落入俗套,從應(yīng)用角度解釋AXI。如果需要深入研究AXI時(shí)序,那完全可以從 ?topic=/com.arm.doc.set.amba/ind.。。 下載最權(quán)威的規(guī)格書,而不是通過(guò)別人寫的書來(lái)獲得這些內(nèi)容(要學(xué)習(xí)一手材料,不要?jiǎng)e人嚼過(guò)的)。
Zynq是以ARM作為核心的,運(yùn)行時(shí)也是第一個(gè)“醒”過(guò)來(lái),然后找可執(zhí)行代碼,找到后進(jìn)入FSBL(第一引導(dǎo)階段),接著找配置邏輯部分的bit文件,找到后就叫醒PL按照bit中的方式運(yùn)行,再接著找可執(zhí)行代碼,進(jìn)入SSBL(第二引導(dǎo)階段),這時(shí)就可以初始化操作系統(tǒng)的運(yùn)行環(huán)境,引導(dǎo)像Linux這樣的大型程序,隨后將控制權(quán)交給Linux。Linux運(yùn)行時(shí)可以跟PL進(jìn)行數(shù)據(jù)交互。注意了,就在這時(shí)候,數(shù)據(jù)交互的通路,就是我們本節(jié)要講的AXI總線。
說(shuō)白了,AXI就是負(fù)責(zé)ARM與FPGA之間通信的專用數(shù)據(jù)通道。
ARM內(nèi)部用硬件實(shí)現(xiàn)了AXI總線協(xié)議,包括9個(gè)物理接口,分別為AXI-GP0~AXI-GP3,AXI-HP0~AXI-HP3,AXI-ACP接口。如下圖黃圈所示。
可以看到,只有兩個(gè)AXI-GP是Master Port,即主機(jī)接口,其余7個(gè)口都是Slave Port(從機(jī)接口)。主機(jī)接口具有發(fā)起讀寫的權(quán)限,ARM可以利用兩個(gè)AXI-GP主機(jī)接口主動(dòng)訪問(wèn)PL邏輯,其實(shí)就是把PL映射到某個(gè)地址,讀寫PL寄存器如同在讀寫自己的存儲(chǔ)器。其余從機(jī)接口就屬于被動(dòng)接口,接受來(lái)自PL的讀寫,逆來(lái)順受。
這9個(gè)AXI接口性能也是不同的。GP接口是32位的低性能接口,理論帶寬600MB/s,而HP和ACP接口為64位高性能接口,理論帶寬1200MB/s。
有人會(huì)問(wèn),為什么高性能接口不做成主機(jī)接口呢?這樣可以由ARM發(fā)起高速數(shù)據(jù)傳輸。答案是高性能接口根本不需要ARM CPU來(lái)負(fù)責(zé)數(shù)據(jù)搬移,真正的搬運(yùn)工是位于PL中的DMA控制器。
位于PS端的ARM直接有硬件支持AXI接口,而PL則需要使用邏輯實(shí)現(xiàn)相應(yīng)的AXI協(xié)議。Xilinx提供現(xiàn)成IP如AXI-DMA,AXI-GPIO,AXI-Datamover都實(shí)現(xiàn)了相應(yīng)的接口,使用時(shí)直接從XPS的IP列表中添加即可實(shí)現(xiàn)相應(yīng)的功能。
有時(shí),用戶需要開發(fā)自己定義的IP同PS進(jìn)行通信,這時(shí)可以利用XPS向?qū)蓪?duì)應(yīng)的IP。xps中用戶自定義IP核可以擁有AXI-Lite,AXI4,AXI-Stream,PLB和FSL這些接口。
后兩種由于ARM這一端不支持,所以不用。
AXI-Lite具有輕量級(jí),結(jié)構(gòu)簡(jiǎn)單的特點(diǎn),適合小批量數(shù)據(jù)、簡(jiǎn)單控制場(chǎng)合。不支持批量傳輸,讀寫時(shí)一次只能讀寫一個(gè)字(32bit)。
AXI4接口和AXI-Lite差不多,只是增加了一項(xiàng)功能就是批量傳輸,可以連續(xù)對(duì)一片地址進(jìn)行一次性讀寫。
上面兩種均采用內(nèi)存映射控制方式,即ARM將用戶自定義IP編入某一地址進(jìn)行訪問(wèn),讀寫時(shí)就像在讀寫自己的片內(nèi)RAM,編程也很方便,開發(fā)難度較低。代價(jià)就是資源占用過(guò)多,需要額外的讀地址線、寫地址線、讀數(shù)據(jù)線、寫數(shù)據(jù)線、寫應(yīng)答線這些信號(hào)線。
另外一種AXI接口就是AXI-Stream,這是一種連續(xù)流接口,不需要地址線(很像FIFO,一直讀或一直寫就行)。對(duì)于這類IP,ARM不能通過(guò)上面的內(nèi)存映射方式控制(FIFO根本沒有地址的概念),必須有一個(gè)轉(zhuǎn)換裝置,例如AXI-DMA模塊來(lái)實(shí)現(xiàn)內(nèi)存映射到流式接口的轉(zhuǎn)換。AXI-Stream適用的場(chǎng)合有很多:視頻流處理;通信協(xié)議轉(zhuǎn)換;數(shù)字信號(hào)處理;無(wú)線通信等。其本質(zhì)都是針對(duì)數(shù)值流構(gòu)建的數(shù)據(jù)通路,從信源(例如ARM內(nèi)存、DMA、無(wú)線接收前端等)到信宿(例如HDMI顯示器、音頻輸出等)構(gòu)建起連續(xù)的數(shù)據(jù)流。這種接口適合做實(shí)時(shí)信號(hào)處理。
有了上面的這些官方IP和向?qū)傻淖远xIP,用戶其實(shí)不需要對(duì)AXI時(shí)序了解太多(除非確實(shí)遇到問(wèn)題),因?yàn)閄ilinx已經(jīng)將和AXI時(shí)序有關(guān)的細(xì)節(jié)都封裝起來(lái),用戶只需要關(guān)注自己的邏輯實(shí)現(xiàn)即可。
-
AXI
+關(guān)注
關(guān)注
1文章
127瀏覽量
16575
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論