申偉 李浩 徐彬彬 劉秋生 李朝亮
摘? 要:國(guó)內(nèi)SOC芯片日益崛起,而國(guó)產(chǎn)SOC平臺(tái)的應(yīng)用尚未普及。ARM+FPGA架構(gòu)中,CPU與FPGA通過(guò)AXI總線協(xié)議進(jìn)行數(shù)據(jù)交流,小批量的數(shù)據(jù)可以通過(guò)AXI_lite進(jìn)行交互,對(duì)于大容量的數(shù)據(jù)需要采用AXI_stream協(xié)議。本文進(jìn)行了復(fù)旦微FMQL系列芯片AXI_DMA的應(yīng)用研究與測(cè)試,并與賽靈思ZYNQ_7000系列進(jìn)行了傳輸性能對(duì)比。
關(guān)鍵詞:SOC平臺(tái)? AXI_DMA? FPGA? LINUX
中圖分類號(hào):TP368? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? 文章編號(hào):1674-098X(2020)08(b)-0119-03
Abstract: Domestic SOC chips are rising day by day, but the application of domestic SOC platforms has not been popularized. In the ARM+FPGA architecture, the CPU and FPGA exchange data through the AXI bus protocol. Small batches of data can interact through AXI_lite. For large-capacity data, the AXI_stream protocol is required. In this paper, the application research and test of Fudan Micro FMQL series chip AXI_DMA is carried out, and the transmission performance is compared with Xilinx ZYNQ_7000 series.
Key Words: SOC; AXI_DMA; FPGA; LINUX
FMQL45_FFG900芯片為復(fù)旦微電子旗下的一款SOC芯片。該芯片采用PS+PL架構(gòu),四核APU,GP接口帶寬支持64位,且有更豐富的外設(shè)管腳??蓱?yīng)用于汽車輔助駕駛、無(wú)線通信、視頻、醫(yī)療、工業(yè)控制等。AXI_DMA是為內(nèi)存與AXI4_Stream外設(shè)之間提供高帶寬的直接存儲(chǔ)訪問(wèn),可將CPU從數(shù)據(jù)搬移任務(wù)中解放出來(lái),大大提高數(shù)據(jù)傳輸效率。
1? AXI接口互聯(lián)及握手機(jī)制
AXI協(xié)議提供單一的接口定義,能用在下述三種接口之間:master/interconnect、slave/interconnect、master/slave。在AXI總線使用過(guò)程中可以使用共享地址與數(shù)據(jù)總線,共享地址總線,多數(shù)據(jù)總線,multilayer多層,多地址總線,多數(shù)據(jù)總線。在大多數(shù)系統(tǒng)中,地址通道的帶寬要求沒(méi)有數(shù)據(jù)通道高,因此可以使用共享地址總線,多數(shù)據(jù)總線結(jié)構(gòu)來(lái)對(duì)系統(tǒng)性能和互聯(lián)復(fù)雜度進(jìn)行平衡。
AXI所采用的是一種READY,VALID握手通信機(jī)制,即主從模塊進(jìn)行數(shù)據(jù)通信前,新根據(jù)操作對(duì)各所用到的數(shù)據(jù)、地址通道進(jìn)行握手。主要操作包括傳輸發(fā)送者A等到傳輸接受者B的READY信號(hào)后,A將數(shù)據(jù)與VALID信號(hào)同時(shí)發(fā)送給B。
AXI總線還定義了在進(jìn)出低功耗節(jié)電模式前后的握手協(xié)議。規(guī)定如何通知進(jìn)入低功耗模式,何時(shí)關(guān)斷時(shí)鐘,何時(shí)開(kāi)啟時(shí)鐘,如何退出低功耗模式。這使得所有IP core在進(jìn)行功耗控制的設(shè)計(jì)時(shí),有據(jù)可依,容易集成在統(tǒng)一的系統(tǒng)中。
2? AXI_DMA
AXI_DMA主要包含四個(gè)模塊。AXI_DMA引擎結(jié)構(gòu)如圖 1所示。
數(shù)據(jù)模塊用來(lái)實(shí)現(xiàn)存儲(chǔ)器接口和流接口的轉(zhuǎn)換;Scatter/Gather模塊用來(lái)實(shí)現(xiàn)設(shè)置DMA對(duì)非連續(xù)內(nèi)存訪問(wèn)的支持;狀態(tài)寄存器主要用來(lái)寄存DMA的工作狀態(tài)等信息,用戶可通過(guò) AXI GP接口讀取這些狀態(tài)信息;配置寄存器模塊主要用來(lái)對(duì)AXI_DMA通過(guò)GP接口進(jìn)行初始化的配置以使其能正常工作。
Direct Register Mode具備DMA的基本功能,給出源(目的)地址和傳輸長(zhǎng)度之后就可以開(kāi)啟一次傳輸。配置完一次寄存器之后只能完成存儲(chǔ)器連續(xù)地址空間的讀寫,在此模式下發(fā)送數(shù)據(jù)為MM2S_LENGTH寄存器所填寫的長(zhǎng)度。
當(dāng)發(fā)送數(shù)據(jù)大于收數(shù)據(jù)時(shí)會(huì)產(chǎn)生中斷,中斷處理函數(shù)中讀取狀態(tài)寄存器發(fā)現(xiàn)S2MM_DMASR[DMAIntErr]錯(cuò)誤提示,此錯(cuò)誤正好是填寫的收數(shù)據(jù)緩沖空間小于需要收的數(shù)據(jù)空間(自環(huán)下為發(fā)空間)。讀取內(nèi)存數(shù)據(jù)查看實(shí)際已經(jīng)傳輸了填寫的收數(shù)據(jù)空間的數(shù)據(jù)。當(dāng)發(fā)送數(shù)據(jù)小于收數(shù)據(jù)時(shí)會(huì)產(chǎn)生中斷,讀取S2MM_LENGTH寄存器,收取數(shù)據(jù)為發(fā)送數(shù)據(jù)長(zhǎng)度,收數(shù)據(jù)中斷由tlast信號(hào)觸發(fā),表示收數(shù)據(jù)完成,軟件可以讀取S2MM_LENGTH寄存器查看真實(shí)收到的數(shù)據(jù)包大小。
3? FMQL AXI_DMA實(shí)現(xiàn)及測(cè)試
PL搭建與LINUX系統(tǒng)文件制作:選擇AXI_DMA IP CORE,搭建FPGA BD工程,短接收發(fā)通道,加入ILA監(jiān)測(cè)信號(hào)。編譯生成BIT、HDF文件。通過(guò)FMQL開(kāi)發(fā)環(huán)境PROCISE解析PL配置,生成設(shè)備樹(shù)源文件夾、FSBL工程,IAR編譯生成flsb.out用于第一階段啟動(dòng)配置。由復(fù)旦微提供的BSP包編譯生成u-boot.、內(nèi)核鏡像、設(shè)備樹(shù)、根文件系統(tǒng)。由PROCISE工具打包生成BOOT.bin。
AXI_DMA驅(qū)動(dòng)軟件實(shí)現(xiàn):數(shù)據(jù)發(fā)送模塊用來(lái)將數(shù)據(jù)從PS 搬遷到PL,數(shù)據(jù)接收模塊負(fù)責(zé)將PL數(shù)據(jù)搬遷到PS。收發(fā)數(shù)據(jù)在大體流程上基本一致,最大的差別在于通道的申請(qǐng)上,收發(fā)數(shù)據(jù)需要申請(qǐng)兩個(gè)相對(duì)獨(dú)立的DMA通道,填寫收發(fā)地址和回調(diào)函數(shù)注冊(cè)時(shí)也需要對(duì)應(yīng)到相應(yīng)通道上去。數(shù)據(jù)收發(fā)流程如圖2所示,接收部分與此類似。
PS控制AXI_DMA: PS采用內(nèi)存映射的方式將外設(shè)的寄存器映射進(jìn)PS的內(nèi)存空間,可采用指針操作的方式對(duì)外設(shè)的寄存器進(jìn)行訪問(wèn)。
設(shè)備樹(shù)修改:FMQL設(shè)備樹(shù)關(guān)于DMA部分修改PS中斷號(hào)為25、26。
測(cè)試:PS應(yīng)用測(cè)試程序下發(fā)不同大小的數(shù)據(jù)包,通過(guò)PL側(cè)自環(huán),PS讀數(shù)據(jù)通道將AXI_DMA數(shù)據(jù)取回效驗(yàn)。對(duì)比結(jié)果總結(jié)見(jiàn)表 1。
4? 結(jié)語(yǔ)
國(guó)產(chǎn)復(fù)旦微FMQL系列芯片PS與PL數(shù)據(jù)交互性能不亞于ZYNQ 7000系列,在時(shí)鐘頻率100MHZ和總線位寬為32位的情況下,實(shí)測(cè)PS與PL數(shù)據(jù)傳輸傳輸速率最高可達(dá)370MB/s左右。增加總線位寬、時(shí)鐘頻率、突發(fā)長(zhǎng)度可以得到更高的傳輸速率。AXI_DMA傳輸速率隨著幀長(zhǎng)增加而增加,適用于大包數(shù)據(jù)傳輸。
參考文獻(xiàn)
[1] 吳汶泰,詹璨銘.基于Zynq的AXI總線數(shù)據(jù)傳輸軟件優(yōu)化[J].通信技術(shù),2017,50(7):1576-1580.
[2] 楊海學(xué),吳凡,李林,等.XCZU9的高速大容量數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2019,19(12):84-87.
[3] 莊瓊. 基于AXI總線的DMA高速通道及驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2019.
[4] 陳卓然,張宇.基于ARM+FPGA的心電信號(hào)疲勞駕駛檢測(cè)方法的研究[J].科技創(chuàng)新導(dǎo)報(bào),2019,16(31):46,48.
[5] 曾俊,李雪江,楊勝.基于FPGA的集成式溫度采集裝置設(shè)計(jì)[J].科技創(chuàng)新導(dǎo)報(bào),2019,16(35):49-50,52.
[6] 楊博,楚要?dú)J,景德勝,等.基于AXI4總線的So C中離散量信號(hào)控制IP核的設(shè)計(jì)與驗(yàn)證[J].信息通信,2020(3):90-92.