《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的AXI4總線時(shí)序設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的AXI4總線時(shí)序設(shè)計(jì)與實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第6期
馬 飛,,劉 琦,,包 斌
北京空間機(jī)電研究所,北京100094
摘要: 針對(duì)AXI4總線設(shè)備之間的高速數(shù)據(jù)傳輸需求,,根據(jù)AXI4總線協(xié)議,,設(shè)計(jì)實(shí)現(xiàn)了一種基于FPGA的AXI4總線讀寫時(shí)序控制方法。以FPGA為核心,,采用VHDL語(yǔ)言,,完成了滿足AXI4總線協(xié)議的讀猝發(fā)方式數(shù)據(jù)傳輸和寫猝發(fā)方式數(shù)據(jù)傳輸時(shí)序控制模塊的設(shè)計(jì)。利用FPGA內(nèi)部嵌入式系統(tǒng)提供的高性能數(shù)據(jù)傳輸接口完成AXI4時(shí)序控制模塊的功能驗(yàn)證,。實(shí)際應(yīng)用表明,,依據(jù)提出的設(shè)計(jì)方法實(shí)現(xiàn)的讀寫時(shí)序控制模塊能夠滿足AXI4總線協(xié)議規(guī)定的時(shí)序關(guān)系,實(shí)現(xiàn)數(shù)據(jù)的高速正確傳輸,,總線數(shù)據(jù)傳輸速率能夠達(dá)到1.09 GB/s,。
關(guān)鍵詞: AXI4總線 時(shí)序控制 FPGA
中圖分類號(hào): TP336
文獻(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.
Design and implementation of AXI 4 bus timing based on FPGA
Ma Fei,,Liu Qi,,Bao Bin
Beijing Institute of Space Mechanics & Electricity,,Beijing 100094,,China
Abstract: To fulfill the needs for high speed data transfers between AXI 4 bus devices,,a FPGA based timing control method of data writing and reading for AXI 4 bus is provided. Timing control modules of data writing and reading in burst are designed according to the AXI 4 bus protocol. Functions of the design are validated in high performance interfaces of embedded system in FPGA. The application shows that the design provided in this paper provides an accurate timing that meets the AXI 4 bus protocol. Data transports between AXI 4 bus devices correctly in the speed of 1.09 GB/s.
Key words : AXI 4 bus,;timing control,;FPGA

    

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所示。

qrs1-t1.gif

qrs1-t2.gif

    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ù)。

qrs1-t3.gif

    寫猝發(fā)方式數(shù)據(jù)傳輸過程中的時(shí)序關(guān)系如圖4所示,。其中,,BVALID信號(hào)為高時(shí)表示一次寫猝發(fā)操作完成;BREADY為高表示主設(shè)備可以接收響應(yīng)信息,;其余信號(hào)功能與讀猝發(fā)方式類似,,不再贅述,。

qrs1-t4.gif

    需要注意的是,各通道內(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ā)操作,。

qrs1-t5.gif

    寫猝發(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ā)操作,。

qrs1-t6.gif

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è)備,。

qrs1-t7.gif

qrs1-t8.gif

qrs1-t9.gif

    寫猝發(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è)備,。

qrs1-t10.gif

    寫猝發(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)系一致,。

qrs1-t11.gif

    在開始數(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。