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