測試數(shù)據(jù)匯總
案例 | 時鐘頻率 | 理論速率 | 測試結(jié)果 |
FSPI通信案例 | 150MHz | 71.53MB/s | 讀速率:67.452MB/s 寫速率:52.638MB/s |
PCIe通信案例 | 100MHz | 803.09MB/s | 讀速率:595.24MB/s 寫速率:791.14MB/s |
備注:
(1)當TLP header size =16Byte時,PCIe理論傳輸速率為:782.50MB/s;(2)當TLP header size =12Byte時,PCIe理論傳輸速率為:803.09MB/s;
FSPI、PCIe總線介紹
FSPI(Flexible Serial Peripheral Interface)是一種高速、全雙工、同步的串行通信總線,在RK3568J處理器中就有FSPI控制器,可用來連接FSPI設備。它具備如下特點:
(1)支持串行NOR FLASH、串行NAND FLASH;
(2)支持SDR模式;
(3)支持單線、雙線以及四線模式。
圖1FSPI數(shù)據(jù)傳輸波形圖
PCIe,即PCI-Express(peripheral component interconnect express)是一種高速串行計算機擴展總線標準。主要用于擴充計算機系統(tǒng)總線數(shù)據(jù)吞吐量以及提高設備通信速度。
圖2PCIe數(shù)據(jù)傳輸圖
硬件平臺介紹
硬件方案:創(chuàng)龍科技TL3568F-EVM評估板(瑞芯微RK3568J + 紫光同創(chuàng)Logos-2)。
TL3568F-EVM評估板簡介:
創(chuàng)龍科技TL3568F-EVM是一款基于瑞芯微RK3568J/RK3568B2四核ARM Cortex-A55處理器 + 紫光同創(chuàng)Logos-2 PG2L50H/PG2L100H FPGA設計的異構(gòu)多核國產(chǎn)工業(yè)評估板,由核心板和評估底板組成,ARM Cortex-A55處理單元主頻高達1.8GHz/2.0GHz。核心板ARM、FPGA、ROM、RAM、電源、晶振、連接器等所有元器件均采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率100%。同時,評估底板大部分元器件亦采用國產(chǎn)工業(yè)級方案。
RK3568J + FPGA典型應用場景
RK3568J + FPGA應用場景十分廣泛,涵蓋小電流選線、繼電保護測試儀、運動控制器、醫(yī)療內(nèi)窺鏡、血液分析儀、目標識別跟蹤等領(lǐng)域,可滿足多種工業(yè)應用要求。
案例測試
下文主要介紹基于瑞芯微RK3568J與紫光同創(chuàng)Logos-2(硬件平臺:創(chuàng)龍科技TL3568F-EVM評估板)的FSPI、PCIe通信案例,按照創(chuàng)龍科技提供的案例用戶手冊進行操作得出測試結(jié)果。
基于RK3568J + FPGA的FSPI通信案例
(1)案例說明
ARM端運行Linux系統(tǒng),基于FSPI總線對FPGA DRAM進行讀寫測試。
圖4ARM端程序流程圖
ARM端實現(xiàn)SPI Master功能,原理說明如下:
a)打開SPI設備節(jié)點,如:/dev/spidev4.0。
b)使用ioctl配置FSPI總線,如FSPI總線極性和相位、通信速率、數(shù)據(jù)長度等。
c)選擇模式為單線模式、雙線模式或四線模式。當設置FSPI為四線模式時,發(fā)送數(shù)據(jù)為四線模式,接收數(shù)據(jù)為四線模式。
d)發(fā)送數(shù)據(jù)至FSPI總線,以及從FSPI總線讀取數(shù)據(jù)。
e)校驗數(shù)據(jù),然后打印讀寫速率、誤碼率。
FPGA端實現(xiàn)SPI Slave功能,原理說明如下:
a)FPGA將SPI Master發(fā)送的數(shù)據(jù)保存至DRAM。
b)SPI Master發(fā)起讀數(shù)據(jù)時,F(xiàn)PGA從DRAM讀取數(shù)據(jù)通過FSPI總線傳輸至SPI Master。
(2)測試結(jié)果
ARM通過FSPI總線(四線模式)寫入2048Byte隨機數(shù)據(jù)至FPGA DRAM,然后讀出數(shù)據(jù)、進行數(shù)據(jù)校驗,同時打印FSPI總線讀寫速率和誤碼率。
從下圖可知,本次實測寫速率為11.035MB/s,讀速率為24.414MB/s,誤碼率為0.00%。
圖5
若設置FSPI總線通信時鐘頻率為150MHz,ARM通過FSPI總線寫入1MByte隨機數(shù)據(jù)至FPGA DRAM,然后讀出數(shù)據(jù),循環(huán)100次,不做數(shù)據(jù)檢驗,最后打印FSPI總線讀寫速率和誤碼率。
最終,本次測試設置FSPI總線通信時鐘頻率為150MHz,則FSPI四線模式理論通信速率為:(150000000 / 1024 / 1024 / 8 x 4)MB/s ≈ 71.53MB/s。從下圖可知,本次實測寫速率為52.638MB/s,讀速率為67.452MB/s,比較接近理論通信速率。
備注:本案例設計FPGA BRAM大小2048Byte,一次寫入1MByte數(shù)據(jù)量會導致BRAM數(shù)據(jù)溢出,因此誤碼率較高。配置一次寫入1MByte數(shù)據(jù)量只是為了驗證FSPI的最大通信速率,不考慮誤碼率。
圖6
基于RK3568J + FPGA的PCIe通信案例
(1)案例說明
ARM端基于PCIe總線對FPGA DRAM進行讀寫測試。應用程序通過ioctl函數(shù)發(fā)送命令開啟DMA傳輸數(shù)據(jù)后,等待驅(qū)動上報input事件;當應用層接收到input事件,說明DMA傳輸數(shù)據(jù)完成。
圖7程序流程圖
ARM端原理說明如下:
a)采用DMA方式;
b)將數(shù)據(jù)寫至dma_memcpy驅(qū)動申請的連續(xù)內(nèi)存空間(位于DDR);
c)配置DMA,如源地址、目標地址、傳輸?shù)臄?shù)據(jù)大小等;
d)寫操作:通過ioctl函數(shù)啟動DMA,通過PCIe總線將數(shù)據(jù)搬運至FPGA DRAM;
e)程序接收驅(qū)動上報input事件后,將通過ioctl函數(shù)獲取DMA搬運數(shù)據(jù)耗時,并計算DMA傳輸速率(即寫速率);
f)讀操作:通過ioctl函數(shù)啟動DMA,通過PCIe總線將FPGA DRAM中的數(shù)據(jù)搬運至dma_memcpy驅(qū)動申請的連續(xù)內(nèi)存空間(位于DDR);
g)程序接收驅(qū)動上報input事件后,將數(shù)據(jù)從內(nèi)核空間讀取至用戶空間,然后校驗數(shù)據(jù),同時通過ioctl函數(shù)獲取DMA搬運數(shù)據(jù)耗時,并計算DMA傳輸速率(即讀速率)。
FPGA端原理說明如下:
a)實現(xiàn)PCIe Endpoint功能;
b)處理PCIe RC端發(fā)起的PCIe BAR0空間讀寫事務;
c)將PCIe BAR0讀寫數(shù)據(jù)緩存至FPGA DRAM中。
(2)測試結(jié)果
將隨機數(shù)據(jù)先寫入FPGA DRAM,再從FPGA DRAM讀出。測試完成后,程序?qū)蛴∽罱K測試結(jié)果,包含讀寫平均傳輸耗時、讀寫平均傳輸速率、讀寫錯誤統(tǒng)計等信息。
圖8
表 2測試結(jié)果說明
write/read | 寫操作 | 讀操作 |
time | DMA傳輸耗時,本次測試為79us | DMA傳輸耗時,本次測試為105us |
rate | DMA傳輸速率,本次測試為791.14MB/s | DMA傳輸速率,本次測試為595.24MB/s |
app time | 應用層寫數(shù)據(jù)至驅(qū)動Buffer耗時,本次測試為55us | 應用層從驅(qū)動Buffer讀取數(shù)據(jù)耗時,本次測試為288us |
app rate | 應用層寫數(shù)據(jù)至驅(qū)動Buffer速率,本次測試為1132.10MB/s | 應用層從驅(qū)動Buffer讀取數(shù)據(jù)速率,本次測試為217.99MB/s |
write_error/read_error | 寫數(shù)據(jù)過程中出錯次數(shù),本次測試為0 | 讀數(shù)據(jù)過程中出錯次數(shù),本次測試為0 |
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602977 -
測試
+關(guān)注
關(guān)注
8文章
5269瀏覽量
126598 -
RK3568
+關(guān)注
關(guān)注
4文章
514瀏覽量
5034
發(fā)布評論請先 登錄
相關(guān)推薦
評論