文獻標識碼: A
文章編號: 0258-7998(2015)06-0013-03
中文引用格式:馬飛,劉琦,包斌.基于FPGA的AXI4總線時序設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(06):13-15+19.
0 引言
高級微控制器總線結(jié)構(gòu)(Advanced Microcontroller Bus Architecture,AMBA)是一種應(yīng)用于片上系統(tǒng)的總線結(jié)構(gòu)。AMBA總線協(xié)議是ARM公司制定的用于片上系統(tǒng)IP互聯(lián)與管理的一種規(guī)范,由于它是一個開放標準的協(xié)議,所以自從出現(xiàn)之后,其應(yīng)用領(lǐng)域就超出了微控制器設(shè)備,已經(jīng)廣泛應(yīng)用于各種ASIC和片上系統(tǒng)器件中。高級可擴展接口4(Advanced eXtensible Interface 4,AXI4)總線規(guī)范是ARM公司與Xilinx公司共同制定的新一代用于片上系統(tǒng)內(nèi)IP互聯(lián)的總線規(guī)范,是第4版AMBA規(guī)范定義的7個總線接口之一,用以滿足普遍情況下的元件接口要求,為互聯(lián)結(jié)構(gòu)的實現(xiàn)提供了靈活性[1]。
本文通過對AXI4總線協(xié)議的分析研究,在充分了解其工作原理與工作過程的基礎(chǔ)上,采用VHDL硬件描述語言實現(xiàn)了AXI4總線讀猝發(fā)方式數(shù)據(jù)傳輸和寫猝發(fā)方式數(shù)據(jù)傳輸時序控制模塊的設(shè)計與編寫,實現(xiàn)了FPGA邏輯與AXI4從設(shè)備之間的高速數(shù)據(jù)傳輸。
1 AXI4總線協(xié)議簡介
1.1 AXI4總線協(xié)議特性與優(yōu)勢
AXI4總線協(xié)議規(guī)定的數(shù)據(jù)傳輸方式是猝發(fā)式的,使用首字節(jié)選通方式,在獨立的讀寫數(shù)據(jù)通道采用獨立的地址、控制和數(shù)據(jù)周期進行數(shù)據(jù)傳輸,支持非對齊方式的數(shù)據(jù)傳輸,能夠發(fā)出多個未解析的地址,從而完成無序的數(shù)據(jù)傳輸交易。
AXI4總線協(xié)議的上述特性,使得其與其他總線協(xié)議相比較,具有比較明顯的優(yōu)勢。首先,AXI4總線協(xié)議簡化了不同領(lǐng)域IP的集成,將不同接口整合到一個接口中,簡化了用戶熟悉與開發(fā)的難度,從而提高了生產(chǎn)效率;其次,AXI4總線協(xié)議支持嵌入式、DSP以及FPGA各種電子設(shè)計領(lǐng)域的用戶使用,具有很大的靈活性;最后,由于第三方EDA廠商與IP開發(fā)廠商普遍接受并采用了AXI4總線協(xié)議標準,從而使得基于AXI4總線協(xié)議的目標平臺具有廣泛的IP可用性[1-4]。
1.2 AXI4總線協(xié)議信號集與時序關(guān)系
AXI4總線協(xié)議規(guī)定5個不同的通道,分別是讀地址通道(Read Address Channel,AR)、寫地址通道(Write Address Channel,AW)、讀數(shù)據(jù)通道(Read Data Channel,R)、寫數(shù)據(jù)通道(Write Data Channel,W)和寫響應(yīng)通道(Write Response Channel,B)[5-6]。其中,讀、寫地址通道傳輸數(shù)據(jù)交互過程中需要的地址和控制信號;讀數(shù)據(jù)通道傳輸從從設(shè)備到主設(shè)備的讀數(shù)據(jù)以及相應(yīng)讀信息;寫數(shù)據(jù)通道傳輸從主設(shè)備到從設(shè)備的寫數(shù)據(jù);寫響應(yīng)通道用于標識從設(shè)備響應(yīng)主設(shè)備的寫操作。主設(shè)備與從設(shè)備之間的數(shù)據(jù)傳輸分別用到從主設(shè)備到從設(shè)備的寫數(shù)據(jù)通道和從從設(shè)備到主設(shè)備的讀數(shù)據(jù)通道,從主設(shè)備到從設(shè)備的寫數(shù)據(jù)交易過程中,從設(shè)備會通過響應(yīng)通道向主設(shè)備反饋寫操作是否完成。讀地址通道與寫地址通道都是從主設(shè)備到從設(shè)備。其讀通道結(jié)構(gòu)如圖1所示,寫通道結(jié)構(gòu)如圖2所示。
AXI4協(xié)議的5個通道分別有各自的信號集合,各個通道在主設(shè)備與從設(shè)備之間進行數(shù)據(jù)交互的過程中,使用VALID信號與READY信號的握手機制,即信息源通過VALID信號表示該通道存在可用的有效數(shù)據(jù)或者控制信息;信息接收方使用READY信號表示該設(shè)備具備數(shù)據(jù)接收的條件[6-8]。每個通道的信號名稱都以該通道的標識字母開頭,例如,讀地址通道的VALID信號與READY信號分別為ARVALID與ARREADY,其他通道同理。
讀猝發(fā)方式數(shù)據(jù)傳輸過程中的時序關(guān)系如圖3所示。其中,ACLK是全局時鐘信號,所有信號在時鐘上升沿采樣;ARADDR是讀地址信號,該信號給出讀猝發(fā)方式數(shù)據(jù)傳輸一次猝發(fā)操作的第一個傳輸?shù)刂?;ARVALID為讀地址有效信號,高電平表示讀地址可用;ARREADY為讀地址準備信號,該信號為高時表示從設(shè)備準備好接收地址和相關(guān)的控制信號;RDATA為讀數(shù)據(jù);RVALID為讀有效信號,該信號為高表示讀數(shù)據(jù)信號可用;RLAST為一次猝發(fā)操作中最后數(shù)據(jù)的指示信號,高電平表示一次猝發(fā)傳輸中最后一個傳輸數(shù)據(jù);RREADY為讀準備信號,該信號為高時表示主設(shè)備能夠接收讀取的數(shù)據(jù)。
寫猝發(fā)方式數(shù)據(jù)傳輸過程中的時序關(guān)系如圖4所示。其中,BVALID信號為高時表示一次寫猝發(fā)操作完成;BREADY為高表示主設(shè)備可以接收響應(yīng)信息;其余信號功能與讀猝發(fā)方式類似,不再贅述。
需要注意的是,各通道內(nèi)部的信號要嚴格滿足相應(yīng)的時序關(guān)系,但是各個通道之間的信號之間是異步關(guān)系,沒有嚴格的時序要求。以圖4為例,WVALID信號與WDATA信號可以出現(xiàn)在AWVALID信號和AWADDR信號之前,但是WVALID信號與WDATA信號之間、AWVALID信號與AWADDR信號之間必須滿足圖4中的時序關(guān)系。通道之間的信號對應(yīng)是通過ID信號實現(xiàn)的,具有相同ID的讀通道、寫通道和響應(yīng)通道傳輸?shù)氖且淮吴Оl(fā)的數(shù)據(jù),從而能夠確保各個通道之間信號的異步性。
2 邏輯設(shè)計實現(xiàn)
在充分分析AXI4總線協(xié)議的信號集合與時序關(guān)系的基礎(chǔ)上,使用VHDL語言完成讀猝發(fā)模塊和寫猝發(fā)模塊的邏輯設(shè)計。
讀猝發(fā)模塊邏輯設(shè)計流程如圖5所示。模塊接收到讀操作開始信號后,通過對ARREADY信號與讀地址個數(shù)的檢測,判斷是否可以進行讀操作,從而生成讀地址信號ARADDR及其有效信號ARVALID;通過對RREADY信號以及RVALID信號的判斷實現(xiàn)讀地址與讀數(shù)據(jù)個數(shù)的計數(shù)操作,從而判斷已經(jīng)讀出的地址及數(shù)據(jù)個數(shù);數(shù)據(jù)讀出后,通過寫RAM信號將數(shù)據(jù)寫入RAM中,從而完成對AXI4總線的讀猝發(fā)操作。
寫猝發(fā)模塊邏輯設(shè)計流程如圖6所示。模塊接收到寫操作開始信號后,通過對AWREADY信號與寫地址個數(shù)的檢測,判斷是否可以進行寫操作,從而生成寫地址信號AWADDR及其有效信號AWVALID;同時通過對WREADY信號以及寫數(shù)據(jù)個數(shù)的判斷,生成寫數(shù)據(jù)有效信號WVALID;待寫入AXI4總線的數(shù)據(jù)事先存儲在雙口RAM中,通過生成讀RAM的控制信號,從RAM中讀出數(shù)據(jù),與WVALID信號配合以后送給AXI4總線從設(shè)備,從而完成對AXI4總線的寫猝發(fā)操作。
3 測試分析
對AXI4總線時序猝發(fā)讀寫操作邏輯模塊的功能驗證主要通過功能仿真和實際電路測試實現(xiàn)。
首先進行功能仿真測試,功能仿真測試在ModelSim 6.4仿真環(huán)境下進行,利用VHDL語言編寫測試用例,主要用來驗證讀寫模塊能否向從設(shè)備正確發(fā)出相關(guān)的信號。由于從設(shè)備反饋的信號不容易在測試用例中描述,所以從設(shè)備反饋的信號通過實際電路測試的方式完成。在實際電路中,利用ChipScope工具抓取從設(shè)備的反饋信號,同時與主設(shè)備發(fā)出的信號進行時序關(guān)系的對應(yīng),進而驗證信號的時序關(guān)系是否符合協(xié)議規(guī)定。
讀猝發(fā)操作主要信號的波形如圖7所示,從波形中可見,讀地址通道與讀數(shù)據(jù)通道之間是異步關(guān)系,兩個通道通過ARID與RID兩組信號確定同一次猝發(fā)操作。讀地址通道主要信號波形放大后如圖8所示,設(shè)置的初始讀地址為0x10000000,每個猝發(fā)包含0x80個地址字節(jié),從圖中可見,讀猝發(fā)模塊能夠正確將地址信息發(fā)送給從設(shè)備。從從設(shè)備中讀出的數(shù)據(jù)寫入主設(shè)備的RAM中,寫RAM相關(guān)信號如圖9所示,測試過程中,首先將從設(shè)備從0x10000000地址開始以4 B為單位寫入初始數(shù)據(jù),初始數(shù)據(jù)從0開始,每4 B數(shù)據(jù)加1。從圖9中可見,讀出的8 B數(shù)據(jù)正好是相鄰4 B數(shù)據(jù)的拼接,即第一個數(shù)是0x0000000100000000,第二個數(shù)是0x0000000300000002,依此類推,從而能夠驗證數(shù)據(jù)能夠正確從從設(shè)備讀出到主設(shè)備。
寫猝發(fā)模塊的功能驗證通過如下方式實現(xiàn):利用寫猝發(fā)模塊向從設(shè)備的目的地址寫入8 B固定數(shù)0xaaaa55555555aaaa,從設(shè)備將寫操作之前的數(shù)據(jù)和寫操作之后的數(shù)據(jù)反饋給上位機,通過反饋的數(shù)據(jù)判斷是否正確從主設(shè)備寫入從設(shè)備。
上位機反饋的測試結(jié)果如圖10所示,從設(shè)備的目的操作地址為0x10000000~0x10007fff,以4 B為一個操作單元。上電后首先讀取目的地址的數(shù)據(jù),其結(jié)果是隨機的無規(guī)律數(shù)據(jù);之后從設(shè)備將目的地址的數(shù)據(jù)進行初始化,寫入從0開始的遞增數(shù)據(jù),寫完后再讀取目的地址數(shù)據(jù),從而確認初始化數(shù)據(jù)已經(jīng)正確寫入;之后完成寫猝發(fā)操作,將數(shù)據(jù)0xaaaa55555555aaaa寫入目的地址,寫操作完成后再讀取目的地址的數(shù)據(jù),已經(jīng)從初始化的遞增數(shù)據(jù)變成了寫入的數(shù)據(jù)0x5555aaaa和0xaaaa5555,從而能夠驗證寫猝發(fā)模塊已經(jīng)正確將數(shù)據(jù)寫入從設(shè)備。
寫猝發(fā)操作的信號波形如圖11所示,從圖中可見,寫地址通道、寫數(shù)據(jù)通道與寫響應(yīng)通道之間的信號之間是異步關(guān)系,各通道內(nèi)部信號有嚴格的同步時序關(guān)系,與AXI4協(xié)議規(guī)定的時序關(guān)系一致。
在開始數(shù)據(jù)傳輸時,主設(shè)備將一個測試信號置為高,數(shù)據(jù)傳輸結(jié)束后將該信號電平拉低,利用示波器測量該信號的高電平寬度,即可確定數(shù)據(jù)傳輸?shù)乃俾?。通過測試可知,32 KB數(shù)據(jù)傳輸完畢需要約30 μs,傳輸速率為1.09 GB/s。
通過上述測試分析可知,本文設(shè)計實現(xiàn)的數(shù)據(jù)傳輸模塊滿足AXI4總線協(xié)議的時序要求,能夠正確實現(xiàn)AXI4總線主從設(shè)備之間的高速數(shù)據(jù)傳輸。
4 結(jié)論
AXI4總線協(xié)議作為嵌入式系統(tǒng)內(nèi)部的常用總線協(xié)議,得到第三方EDA廠商與IP開發(fā)廠商普遍接受與采用。為滿足AXI4總線主設(shè)備與從設(shè)備之間的數(shù)據(jù)傳輸要求,本文通過對AXI4總線信號集合以及總線時序的分析研究,設(shè)計并實現(xiàn)了滿足AXI4總線時序要求的讀寫控制模塊,采用VHDL語言完成模塊的編寫。通過ModelSim仿真軟件仿真驗證和電路板實際測試分析表明,本文設(shè)計實現(xiàn)的AXI4總線時序模塊符合總線規(guī)范,能夠滿足高速數(shù)據(jù)傳輸?shù)膶嶋H需求,測試結(jié)果表明,數(shù)據(jù)能夠在主從設(shè)備之間正確傳輸,傳輸速率能夠達到1.09 GB/s,具有較高的工程應(yīng)用價值。
參考文獻
[1] 何賓.Xilinx All Programmable Zynq-7000 SoC設(shè)計指南[M].北京:清華大學(xué)出版社,2013.
[2] 蒲杰,李貴勇.基于AXI總線的DMA控制器的設(shè)計與實現(xiàn)[J].重慶郵電大學(xué)學(xué)報(自然科學(xué)版),2012,24(2):174-177.
[3] 張慶利,王進祥,葉以正,等.AMBA片內(nèi)總線結(jié)構(gòu)的設(shè)計[J].微處理機,2002(2):7-10.
[4] 周彩寶,劉應(yīng)學(xué).ARM體系以及AMBA總線分析[J].計算機工程,2003,29(5):147-149.
[5] 胡強.FPGA與通用處理器同步數(shù)據(jù)傳輸接口的設(shè)計[J].電子技術(shù)應(yīng)用,2014,40(8):14-16.
[6] 張軍,馬琪.基于AMBA總線的DMA控制器設(shè)計[J].科技通報,2011,27(2):268-271.
[7] 唐平,鄭建宏.基于AHB總線的DMA控制器的實現(xiàn)與應(yīng)用[J].電子測試,2009(11):64-67.
[8] 肖龍,萬旻,李濤.高速數(shù)字圖像數(shù)據(jù)傳輸?shù)难芯考皩崿F(xiàn)[J].航天返回與遙感,2009(30):50-55.