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