ARM+FPGA低成本通信方案!輕松實現(xiàn)GPMC并口“小數(shù)據(jù)-低時延,大數(shù)據(jù)-高帶寬”
GPMC并口簡介
GPMC(General Purpose Memory Controller)是TI處理器特有的通用存儲器控制器接口,支持8/16bit數(shù)據(jù)位寬,支持128MB訪問空間,最高時鐘速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等處理器專用于與外部存儲器設(shè)備的接口,如:(1)FPGA器件(2)ADC器件(3)SRAM內(nèi)存(4)NOR/NAND閃存


GPMC并口3大特點
(1)小數(shù)據(jù)-低時延
在工業(yè)自動化控制領(lǐng)域中,如工業(yè)PLC、驅(qū)控一體控制器、運動控制器、CNC數(shù)控主板、繼電保護設(shè)備、小電流接地選線等,極其注重精確性與快速性,GPMC并口“小數(shù)據(jù)-低時延”的特點顯得格外耀眼,能夠很好地提高數(shù)據(jù)傳輸效率,降低傳輸成本。
(2)大數(shù)據(jù)-高帶寬大數(shù)據(jù)時代對能源電力領(lǐng)域的數(shù)據(jù)量傳輸、數(shù)據(jù)處理等方面提出了更高的要求。GPMC提供了最大的靈活性,以支持四個可配置片選中不同的時序參數(shù)和位寬配置??筛鶕?jù)外部設(shè)備的特點,使用最佳的片選設(shè)置。可通過配置GPMC接口的時序參數(shù)和不同工作模式,最大速率可超過100MB/s。因此,GPMC“大數(shù)據(jù)-高帶寬”的特點在能源電力領(lǐng)域扮演著重要角色。
(3)低成本-低功耗“低成本、低功耗、高性能”是如今智能設(shè)備發(fā)展趨勢,GPMC并口相對于PCIe串行接口,成本更低、功耗更低。兩者都為常用的通信接口,均可滿足高速通信要求,但在與FPGA通信的時候,用戶往往更喜歡選用GPMC并口,因為:1、使用低成本FPGA即可實現(xiàn)高速通信,而具備PCIe接口的FPGA成本則成倍增長。2、具備PCIe接口的FPGA功耗往往較大,而低成本FPGA功耗較小。一般而言,低功耗器件的使用壽命也將更長。

AM62x基于GPMC的ARM+FPGA通信方案
Tronlong創(chuàng)龍科技,贊44(立即點擊,1分鐘了解AM62x最新工業(yè)處理器平臺)

基于CPU直接訪問方式
以AM62x為例,通過GPMC接口與FPGA連接,采用CPU直接訪問方式讀取FPGA端的數(shù)據(jù),寫速度可達(dá)15.501MB/s,讀速度可達(dá)5.744MB/s。
此方式適合“小數(shù)據(jù)-低時延”場合。

程序流程說明:(1)ARM端通過GPMC總線將數(shù)據(jù)寫入FPGA BRAM;(2)ARM端通過GPMC總線從FPGA BRAM讀取數(shù)據(jù);(3)判斷寫入與讀取數(shù)據(jù)的正確性,并計算讀寫速率。
基于UDMA訪問方式以AM62x為例,通過GPMC接口與FPGA連接,采用UDMA的方式讀取FPGA端的數(shù)據(jù),寫速度可達(dá)73.90MB/s,讀速度可達(dá)77.47MB/s,實際上通過配置GPMC接口的時序參數(shù)和不同工作模式,最大速率可超過100MB/s。
此方式適合“大數(shù)據(jù)-高帶寬”場合。

備注:由于測試受線材限制影響,因此測得誤碼率會過高。

程序流程說明
ARM端:(1) 采用UDMA方式;(2)將數(shù)據(jù)寫入至dma_memcpy驅(qū)動申請的連續(xù)內(nèi)存空間(位于DDR);(3)配置UDMA,如源地址、目標(biāo)地址、傳輸?shù)臄?shù)據(jù)大小等;(4)寫操作:通過ioctl函數(shù)啟動UDMA,通過GPMC總線將數(shù)據(jù)搬運至FPGA BRAM;(5)程序接收驅(qū)動上報input事件后,將通過ioctl函數(shù)獲取UDMA搬運數(shù)據(jù)耗時,并計算UDMA傳輸速率(即寫速率);(6)讀操作:通過ioctl函數(shù)啟動UDMA,通過GPMC總線將FPGA BRAM中的數(shù)據(jù)搬運至dma_memcpy驅(qū)動申請的連續(xù)內(nèi)存空間;(7)程序接收驅(qū)動上報input事件后,將數(shù)據(jù)從內(nèi)核空間讀取至用戶空間,然后校驗數(shù)據(jù),同時通過ioctl函數(shù)獲取UDMA搬運數(shù)據(jù)耗時,并計算UDMA傳輸速率(即讀速率)。
FPGA端:(1)根據(jù)ARM端GPMC時序解析數(shù)據(jù),對FPGA內(nèi)部BRAM資源進行訪問。BRAM的地址位寬為10bit,數(shù)據(jù)位寬為16bit,內(nèi)存空間大小為2KByte(1024 x 16bit)。

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。