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