資料介紹
作者:姜 浩,李和平 ,馬翠梅,文章來源: 射頻百花潭微信公眾號
為滿足合成孔徑雷達實時成像、數據回放等高速可靠數據傳輸需求,解決傳統數據傳輸系統由于接口要求高、體積與功耗大以及網絡配置不靈活等原因不適合用于外場試驗的問題,基于 ZYNQ 芯片設計一種光纖接口到以太網接口的數據傳輸系統。主要介紹數據傳輸流程的實現方法,并提出一種三級乒乓和指令并行的優(yōu)化策略保證數據正確,提高傳輸速度;通過移植嵌入式 Linux 系統實現靈活修改網絡配置。與傳統方案相比,該系統在體積、功耗和靈活性上具有明顯優(yōu)勢。經實驗驗證,數據傳輸速度可達 770 Mb/s。
飛行試驗獲取合成孔徑雷達( SAR )數據需要消耗大量資源,一般使用計算機實現與雷達系統的高速數據傳輸。雷達系統普遍使用光纖接口,而絕大部分計算機沒有光纖接口,需要一種將光纖接口轉為計算機通用接口的高速數據傳輸系統 。
千兆以太網速率較高、抗干擾能力強且使用方便,更適用于小體積、低功耗的高速數據傳輸系統。實現千兆以太網數據傳輸的方案有高級精簡指令集處理器( ARM ) + 現場可編程門陣列( FPGA )架構方案 、數字信號處理( DSP ) +FPGA 架構方案和 FPGA 脫機方案。前 2 種方案設計臃腫、集成度不高,難以控制體積和功耗;FPGA 脫機方案開發(fā)周期長、程序修改困難且難以修改網絡配置,使用不靈活。本文基于 Xilinx ZYNQ7000 系列芯片,設計一種將光纖接口高速串行數據轉發(fā)為千兆以太網接口傳輸控制協議( TCP )數據的高速數據傳輸系統。
1 系統設計
1.1 系統簡介
數據傳輸系統使用 ZYNQ 單主控芯片實現, 有 2路光纖與 1 路千兆以太網接口,系統架構如圖 1 所示。
圖 1 光纖 - 以太網系統架構圖
Xilinx ZYNQ 7000 系列( ZYNQ xc7z030 )是集成ARM+FPGA 的異構芯片, 其中處理系統 ( PS ) 代表ARM 部分,可編程邏輯( PL )代表 FPGA 部分。PL 部分使用 Aurora IP 實現光纖高速串行數據接收, 通過 PS與 PL 間 的 AXI_HP 接 口 將 數 據 寫 入 PS 掛 載 的DDR3 。PS 部分移植 Linux 系統,存儲于串行外圍接口( SPI ) Flash , 在 Linux 系統下使用 C 語言編程實現輪詢數據可讀標識、讀取 DDR3 數據并通過 TCP/IP 實現數據發(fā)送,興趣數據可存儲于 eMMC 芯片中,通過安全文件傳送協議( SFTP )將文件讀出。
1.2 數據傳輸流程設計
1.2.1 光纖接口
Aurora 協議是 Xilinx 公司提供的一種高效率、簡單易用的高性能點對點串行鏈路協議。光纖接口使用Aurora 協議,使用吉比特收發(fā)器( GTX )通道,允許設備間組合多個 GTX 通道進行通信, 以實現 480 Mb/s~84.48 Gb/s 的數據傳輸。Aurora IP 核將高速串行收發(fā)器 Rocket I/O 的控制信號進行封裝, 只保留很少的用戶接口信號。Aurora IP 用戶接口如圖 2 所示。
圖 2 Aurora IP 用戶接口
圖 2 中, tx_tready 在輸出信號被接收并且數據準備發(fā)送時斷言, tx_tvalid 在輸出流信號或源信號有效時斷言,這樣將數據從應用程序移動到 tx_data 總線并執(zhí)行流控制,實現發(fā)送。當 tx_tvalid 取消斷言時,字間會創(chuàng)建并保留間隙。數據到達接收側時, rx_tvalid 被斷言, 從用戶接口 rx_tdata 總線將數據移動到應用程序并執(zhí)行流控制,實現數據接收。數據必須立即讀取,否則將丟失。 接口使用先進先出( FIFO )方式保存數據,將 rx_tvalid 用作 FIFO 寫使能。
系統使用 2 路 Aurora IP 用戶接口, 數據位寬為32 bit ,每路速率為 2.5 Gb/s ,參考時鐘為 125 MHz ,用戶時鐘為 PS 提供的 150 MHz 時鐘。Aurora IP 核在物理層進行 8B/10B 編碼, 2 路 Aurora 協議可提供 4 Gb/s的數據速率,可保證數據穩(wěn)定正確傳輸并超過系統后級千兆以太網的速率。
1.2.2 AXI_HP 接口
2 路使用 Aurora 協議的光纖接口速率( 4 Gb/s )與千兆以太網速率(不到 1 Gb/s )之間存在差異,需要將數據暫存后等待以太網發(fā)送完畢。ZYNQ 系列 PL 邏輯資源較少, xc7z030ffg676 的 Block RAM 僅有 9.3 Mb 。系統采用 DDR3 實現高速數據緩存。DDR3 控制器位于 PS 部分, 光纖接口輸入的數據需通過 AXI 互聯矩陣寫入 DDR3 。位于 PS 與 PL 間的 ARM AMBA 3.0 互聯矩陣實現主、從設備間的地址、數據和響應事件的點對點通信,有加速一致性( AXI_ACP )、高性能( AX-I_HP )和通用( AXI_GP ) 3 種接口。AXI_HP 接口基于AXI 3.0 協議, 為 PL 部分提供到 DDR 和片上存儲器( OCM ) 內存的高帶寬數據通路, 在使用 64 bit 位寬、150 MHz 時鐘時可提供 1200 MB/s 帶寬, 接近 DDR3讀寫帶寬并遠高于后級以太網 1 Gb/s 帶寬。通過使用AXI Interconnect IP 將 AXI_HP 接口轉為 AXI4 協議。AXI4 采用 READY/VALID 握手通信機制進行數據傳輸, READY 和 VALID為高時,數據在每個時鐘的上升沿進行有效傳輸。
AXI4 總線含有讀地址通道、寫地址通道、讀數據通道、寫數據通道、寫應答通道和系統信號(總線時鐘ACLK 、 總 線 復 位 ARESETN ), 其 中 多 個 通 道 有READY/VALID 握手機制,控制信號多,使用復雜。將AXI4 協議進行封裝,只引出少數信號給用戶,這樣可以大幅縮短后期開發(fā)和維護周期。PL 為 AXI_HP 的主設備,模塊命名為 AXI master 。AXI master 由有限狀態(tài)機實現,狀態(tài)轉移圖如圖 3 所示。
圖 3 AXI master 狀態(tài)轉移圖
AXI master 初始化后進入 WR_IDLE 狀態(tài), 復位所有控制信號和數據信號,在接收到數據傳輸請求信號 burst_req 后進入 WA_WAIT 狀態(tài),更新外部輸入的數據、數據長度 len 和起始地址。如果 FIFO 不為空,進入 WA_START 狀態(tài),在此狀態(tài)下與 AXI_HP 接口進行握手并給 last 信號賦值,由于最大突發(fā)長度為 256,在傳輸結束時需要根據 last 信號判斷是否需要進行再一次傳輸,若數據長度 len 大于 256 , last 信號置 0 ,否則置 1 。在 WA_PROC 狀態(tài)輸出 AXI 可寫信號 burst_data_req ,對計數器 cnt 進行累加。WR_DONE 狀態(tài)輸出傳輸完成信號 burst_finish 。
使用 AXI master 進行數據傳輸時,將 burst_req 置1 請求 AXI master 傳輸, 寫入數據長度 len 和起始地址 addr ,判斷 AXI master 輸出 AXI 可寫信號 burst_da-ta_req 為高時將光纖接口輸入的數據拼接為 64 bit 寫入數據總線,判斷 AXI master 輸出信號 burst_finish 為高后可進行下一次寫請求。經封裝后的 AXI4 協議對用戶的接口只有寫請求、數據可寫、寫完成、數據總線、 地址總 線和數據長 度, 極大簡化 了 AXI4 的READY/VALID 握手機制。
1.2.3 內存映射
為實現網絡參數靈活配置, 在 PS 部分移植嵌入式 Linux 系統進行數據讀取和以太網數據發(fā)送。Linux中 /dev/mem 是處理器地址空間的全映射,可以通過使用 C 標準庫提供給用戶的內存映射方法 mmap 訪問內存物理地址。內存映射是指 Linux 通過將一個虛擬內存區(qū)域與一個對象映射以讀寫對象內容。mmap 將內存物理地址映射到進程的地址空間,實現物理地址和虛擬地址間一一對應的關系,進程可以使用指針讀寫內存物理地址,獲取 PL 寫入 DDR3 的數據。在 Linux讀取完一段數據后, 需要清除 PL 寫入的數據就緒標識。默認情況下,通過內存映射寫入 DDR3 的數據會被寫入內核 Cache 中,不能及時寫入對象的物理輸入 / 輸出( I/O ),這樣會導致 Linux 與 PL 間數據傳輸錯誤。為保證數據安全,在打開 /dev/mem 時添加 O_SYNC參數, 強制刷新內核 Cache 數據到對象 I/O 。Linux 成功讀取數據后并通過 TCP/IP 協議將數據發(fā)送到 PC上位機。
1.3 數據傳輸流程優(yōu)化
1.3.1 控制策略優(yōu)化
光纖數據速率高于以太網數據速率,為了避免緩沖區(qū)寫溢出,保證數據正確,一般需要等待接收數據完畢后再發(fā)送下一包指令,但是這樣串行的指令流程會造成一個周期內各個模塊都有較長的空閑時間。 串行策略流程圖如圖 4 所示。
圖 4 串行策略流程圖
為提高速度,在 PL 寫入 DDR3 、 Linux 讀取 DDR3通過 TCP 發(fā)送和上位機接收數據寫入磁盤三部分采用乒乓操作。DDR3 被分為高、低地址兩部分,光纖數據被乒乓寫入 2 塊空間。Linux 將 2 塊空間數據乒乓發(fā)送,讀到低地址標識后讀取低地址數據,同時發(fā)送高地址數據。上位機先發(fā)送 2 次傳輸指令,使發(fā)送傳輸指令與判斷接收完成這 2 個操作錯位以實現并行處理的優(yōu)化方案。在開始傳輸后,上位機預先發(fā)送傳輸一包數據的指令給記錄器, 再按照發(fā)一包指令、收一包數據的流水線處理,并且建立 2 條流水線以實現數據接收和數據落盤的乒乓操作,到最后一包時不發(fā)送指令,只接收數據。此方案在上位機接收數據時數據傳輸系統可以準備好下一包的數據等待上位機接收,在處理連續(xù)數據時可大幅提升傳輸速度。優(yōu)化策略流程圖如圖 5 所示。
圖 5 優(yōu)化策略流程圖
1.3.2 共享內存映射
使用 O_SYNC 進行內存映射時會嚴重浪費高速內核 Cache 的性能, 讀寫 mmap 映射的內存物理地址非常緩慢。本文在嵌入式 Linux 下分別測試用戶空間、帶 O_SYNC 參數 mmap 和不帶 O_SYNC 參數 mmap 的內存拷貝速度,結果如表 1 所示。
表 1 內存拷貝速度對比
嵌入式 Linux 在檢測到 PL 寫入 DDR3 的數據可讀標識后使用讀描述符進行內存映射,將數據拷貝至TCP 發(fā)送緩沖區(qū)??截愅瓿珊笫褂脤懨枋龇M行內存映射,清除標識,通知 PL 準備下一包數據。共享內存映射比單內存映射提升 36.5% 的拷貝速度。
2 系統實現
2.1 嵌入式 Linux 移植
PS 需要從非易失性存儲器中啟動嵌入式 Linux系統和應用程序 ( APP )。ZYNQ 系列有 JTAG 、 SD 卡、QSPI Flash 和 NAND Flash 4 種啟動方式。因為 SD 卡接插件難以滿足可靠性要求, 且 ZYNQ 不支持 eMMC作為主啟動設備,所以本系統采用 QSPI Flash 啟動掛載 eMMC 作為外部存儲的方案。
Xilinx 提供了 Linux 移植工具 petalinux ,可以很方便實現 Linux 的配置、裁剪。移植過程如下:
① 生成 bit 流文件。使用硬件描述語言完成 PL 部分邏輯功能, 并根據硬件平臺管腳使用情況對 ZYNQIP 核進行配置,編譯整個工程生成 bit 流文件。
② 導入 bit 流文件。在 Linux 虛擬機中依照 ZYNQLinux 模板生成工程,將 bit 流文件作為硬件描述信息導入工程, Linux 通過 bit 流文件實現部分自動設備樹文件配置。
③Linux 裁剪與定制。使用 petalinux 完成內核定制、設備樹文件配置。本系統使用 SPI Flash 加載系統,使用 U-boot 作為第二階段引導文件( SSBL ),將 boot 、U-boot 和 kernel 的存儲位置設置為 flash ;啟用安全數字輸入輸出 ( SDIO ) 控制器和以太網控制器以使用eMMC 和以太網;在設備樹文件中增加 eMMC 、以太網等硬件的物理地址;修改設備樹文件,將 DDR3 的高256 MB 地址空間設置為保留以避免 Linux 系統破壞緩沖區(qū)數據;加入自啟動腳本文件實現 Linux 系統啟動后自動運行應用程序。
④ 打包 bin 文件。使用 petalinux 將 PL 部分配置文件 bit 流文件、 kernel 文件、第一階段引導文件( FS-BL)和U-boot 打包生成 BOOT.bin 文件。
⑤ 固化 Flash 。將生成的 BOOT.bin 文件和 petal-inux 工具生成的 fsbl.elf 文件燒寫進 Flash 中, 實現上電自啟動嵌入式 Linux 操作系統。
嵌入式 Linux 系統啟動時通過運行 BootROM 代碼從外部存儲器加載 FSBL 加載到內存,根據 FSBL 中bit 文 件 對 PS 、 PL 進 行 配 置 后 加 載 SSBL 到 內 存 ,petalinux 使用 U-boot 作為 SSBL 。U-boot 完成硬件配置初始化、內存空間映射后引導 Linux 內核到內存,通過設備樹文件將硬件設備信息傳遞給內核后將控制權移交 Linux 內核, Linux 初始化硬件設備、 加載文件系統后完成啟動。
2.2 PC 上位機
PC 上位機使用網線連接數據傳輸系統,異步 232串口連接信號源。上位機實現用戶和界面交互,可設置串口號、傳輸數據包大小和文件大小。系統連接后,PC 上位機發(fā)送查詢段地址指令建立 TCP 客戶端連接數據傳輸系統,同時信號源會返回數據列表,然后選擇興趣數據段和文件存儲路徑后發(fā)送傳輸指令,最后接收數據傳輸系統的 TCP 數據并記錄到本地磁盤。
3 系統測試
數據傳輸系統使用 5 V 電壓供電。本文通過在嵌入式 Linux 下移植 iperf3 帶寬測試軟件進行測試,最終測得此以太網鏈路速率為 850 Mb/s 。測試使用信號源為雷達原始數據記錄器,該記錄器理論傳輸速度為3200 Mb/s ,高于千兆以太網的最大速率,不會影響測試結果。數據傳輸系統通過 2 路光纖線纜連接記錄器,六類網線連接 PC 上位機。在 PC 上位機進行數據傳輸測試,測試電路實物圖如圖 6 所示,右側為數據傳輸系統。
圖 6 測試電路實物圖
本文監(jiān)測 Windows 網卡資源使用情況,發(fā)現數據傳輸過程中速率平穩(wěn),證明使用的三級乒乓和預發(fā)送指令錯位判斷策略可以有效減少流程中各模塊的空閑時間。 經過多次測試,連續(xù)數據的傳輸速度保持在770 Mb/s 以上, 達到該鏈路物理帶寬的 90.6% , 除去TCP 協議開銷有效數據傳輸速度超過 86 MB/s 。測試傳輸 500 GB 數據,經軟件校驗數據無丟包無錯誤。
本設計與傳統數據傳輸方式性能對比如表 2 所示。與 PCIe 、 USB3.0 相比, ZYNQ 在功耗、傳輸距離和靈活度上具有明顯優(yōu)勢, 更適用于外場試驗環(huán)境,同時傳輸速率較高,接近磁盤寫入速度,滿足應用要求。
表 2 系統性能對比
4 結束語
本文設計了一種光纖接口轉為以太網接口數據傳輸系統的實現方法, 并提出了一種三級乒乓和預發(fā)送指令錯位判斷接收的策略,有效保證了數據正確傳輸,提高了傳輸速率,連續(xù)數據傳輸速度超過 770 Mb/s 。實現的系統 PCB 尺寸僅為 91 mm×63 mm , 使用 5 V 電壓供電,工作電流為 1.1 A ,解決了傳統傳輸系統體積與功耗大、不適用于外場試驗的問題。通過在異構芯片 ZYNQ 的 PS 部分掛載嵌入式 Linux 操作系統,實現在不同網絡環(huán)境下靈活配置系統的網段、 IP 和傳輸協議,擴展了使用場景,降低了后期維護難度。(參考文獻略)
- 以太網光纖收發(fā)器_規(guī)格書_V1.1_20180523
- 基于FPGA的千兆以太網CMOS圖像數據傳輸系統設計 28次下載
- 10G以太網多模光纖詳述 11次下載
- 盤點幾種以太網接口的設計與實現 20次下載
- 一種采集系統高速以太網數據轉發(fā)器的實現 6次下載
- 基于以太網的20路采編傳輸系統的設計_于春華 0次下載
- 一種基于FPGA的以太網高速傳輸平臺 17次下載
- 基于STM32F103的高速以太網接口設計 36次下載
- 基于千兆以太網的高速數據傳輸系統設計
- 基于FPGA的以太網光譜數據傳輸系統 31次下載
- 100G比特以太網物理層標準和傳輸問題 58次下載
- FPGA光纖以太網自協商的設計 45次下載
- OPET100L/OPET100L1微型以太網光纖收發(fā)器 45次下載
- 基于HFC同軸網的以太網接入系統
- 應用于TFDS的以太網高速數采系統設計
- 以太網接口的數據傳輸原理詳解 952次閱讀
- 為何以太網傳輸不能超過100米呢?怎么計算出100米的上限呢? 1308次閱讀
- 用示波器分析以太網傳輸機制 564次閱讀
- 工業(yè)以太網的特點 工業(yè)以太網的關鍵技術包含哪些? 1083次閱讀
- 萬兆以太網規(guī)范解讀 1862次閱讀
- 以太網應用成為汽車傳輸的趨勢 699次閱讀
- 以太網供電(PoE)系統標準詳解 6005次閱讀
- 萬兆以太網系統鏈路傳輸特性參數 3565次閱讀
- 基于HFCT-53D5光纖收發(fā)器的千兆位以太網解決方案 2912次閱讀
- 卓嵐信息科技光纖轉以太網ZLAN9100概述 2469次閱讀
- 工業(yè)以太網的特點_工業(yè)以太網的技術特點 6993次閱讀
- 汽車以太網與工業(yè)以太網物理層對比 1.4w次閱讀
- 工業(yè)以太網系統的應用方案 4245次閱讀
- 基于FPGA的10G以太網高速數據傳輸設計 6138次閱讀
- 開啟400G以太網:Spirent 400G以太網測試系統 1482次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1491次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 4次下載 | 免費
- 8基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537793次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多