FPGA實現Aurora 64B66B視頻點對點傳輸,基于GTX高速收發器,提供4套工程源碼和技術支持

目錄

  • 1、前言
    • Aurora 64B66B是啥?
    • 官方有Example,為何要用你這個?
    • 工程概述
    • 免責聲明
  • 2、相關方案推薦
    • 我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目
    • 我這里已有的 GT 高速接口解決方案
    • 本方案在Aurora 8B10B上的應用
  • 3、工程詳細設計方案
    • 工程設計原理框圖
    • 輸入Sensor之-->OV5640攝像頭
    • Native視頻轉AXIS流
    • AXIS視頻流重組
    • Aurora 64B66B視頻傳輸傳輸架構
      • Aurora 64B66BIP核簡介
      • Aurora 64B66B 基本結構
      • Aurora 64B66B 發送流程
      • Aurora 64B66B 接收流程
      • Aurora 64B66B 時鐘架構
      • Aurora 64B66B IP核調用和使用
    • AXIS視頻流恢復
    • AXIS視頻流寫緩存
    • AXIS視頻流讀緩存
    • HDMI視頻輸出架構
    • 點對點視頻發送端工程源碼架構
    • 點對點視頻接收端工程源碼架構
  • 4、vivado工程源碼1詳解-->Kintex7--325T,點對點OV5640視頻轉SFP光口發送
  • 5、vivado工程源碼2詳解-->Kintex7--325T,點對點SFP光口接收OV5640視頻轉HDMI
  • 6、vivado工程源碼3詳解-->Zynq7100,點對點OV5640視頻轉SFP光口發送
  • 7、vivado工程源碼4詳解-->Zynq7100,點對點SFP光口接收OV5640視頻轉HDMI
  • 8、工程移植說明
    • vivado版本不一致處理
    • FPGA型號不一致處理
    • 其他注意事項
  • 9、上板調試驗證
    • 準備工作
    • Aurora 64B66B 視頻點對點傳輸效果演示
  • 10、工程代碼的獲取

FPGA實現Aurora 64B66B視頻點對點傳輸,基于GTX高速收發器,提供4套工程源碼和技術支持

FPGA實現Aurora 64B66B圖像視頻傳輸

1、前言

Aurora 64B66B是啥?

Aurora 64B/66B 是Xilinx(現AMD)開發的高性能鏈路層協議,專為超高帶寬串行通信設計。它采用64B/66B編碼方案,提供比傳統8B/10B更高的有效帶寬利用率(97% vs 80%),主要應用于數據中心、5G基礎設施等需要100Gbps+傳輸的場景
Aurora 64B66B核心作用如下:
1、超高帶寬傳輸:支持25Gbps至112Gbps線速率
2、低協議開銷:僅3.125%的編碼開銷(對比8B/10B的25%)
3、多通道聚合:支持多達32通道綁定
4、前向糾錯:集成Reed-Solomon FEC增強可靠性
5、靈活拓撲:支持點對點、環網和星型結構

Aurora 64B66B主要工程應用如下:
在這里插入圖片描述
博主之前實現過Aurora 8B10B編解碼,本博客用的則是Aurora 64B66B IP核,這兩種方法編解碼器區別如下:
Aurora 64B/66B vs 8B/10B 全面對比
在這里插入圖片描述
在這里插入圖片描述

官方有Example,為何要用你這個?

Xilinx官方的確有Aurora 64B66B IP核的Example例程;
然后呢?你看得懂嗎?你會照著模仿做自己的項目嗎?
如果你會,那么請劃走;
如果你不會,不妨看看下面的聊天記錄
在這里插入圖片描述
這位朋友用了我的Aurora 64B66B數據回環傳輸工程,感覺少走了一年的彎路。。。

工程概述

本設計使用Xilinx 7系列FPGA為平臺,基于GTX高速收發器實現Aurora 64B66B視頻點對點傳輸,所謂點對點傳輸,也就是兩塊FPGA開發板之間的相互傳輸;比如FPGA開發板1采集視頻并通過SFP光口輸出,FPGA開發板2通過SFP光口接收視頻然后轉HDMI輸出給顯示器;本設計旨在為讀者提供一套精簡版的、基于Aurora 64B66B編解碼的視頻點對點收發架構;

視頻發送端處理流程如下:

FPGA開發板1的視頻輸入源有多種,一種是板載的HDMI輸入接口,另一種是傳統攝像頭,包括OV7725、OV5640和AR0135;如果你的FPGA開發板沒有視頻輸入接口,或者你的手里沒有攝像頭時,可以使用FPGA邏輯實現的動態彩條模擬輸入視頻,代碼里通過parametr參數選擇視頻源,默認不使用動態彩條;FPGA首先對攝像頭進行i2c初始化配置,然后采集攝像頭視頻;然后采集視頻送入Xilinx官方的Video In To AXI4-Stream IP核實現Native視頻轉換到AXI4-Stream視頻流;然后AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號重組,因為Aurora 64B66B發送接口不帶tuser信號,所以需要將tuser嵌入到數據流中傳輸;然后視頻流送入Xilinx官方的Aurora 64B66B IP核實現64B66B數據編碼,數據以高速差分信號輸出,經板載的SFP光口發送至遠端節點;

視頻接收端處理流程如下:

FPGA開發板2用板載的SFP光口的光纖接收視頻,經SFP-RX接口輸入高速差分信號再進入Xilinx官方的Aurora 64B66B IP核實現64B66B數據解碼,輸出AXI4-Stream視頻流;AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號恢復,因為Aurora 64B66B接收接口不帶tuser信號,所以需要在嵌入數據中的tuser恢復出來;然后AXI4-Stream視頻流送入本博主自研的純verilog實現的、AXI4-Stream接口的圖像寫緩存模塊,實現視頻寫入DDR緩存操作;然后使用本博主自研的純verilog實現的、AXI4-Stream接口的圖像讀緩存模塊,實現視頻從DDR讀出操作;然后讀出的視頻送入純verilog實現的Native視頻時序模塊實現視頻同步;然后使用RGB轉HDMI模塊或者專用芯片實現RGB視頻流轉HDMI差分視頻信號;最后用顯示器顯示視頻即可;

針對市場主流需求,本博客設計并提供4套工程源碼,具體如下:
在這里插入圖片描述
現對上述4套工程源碼做如下解釋,方便讀者理解:

工程源碼1:點對點傳輸案例1的視頻發送端工程

開發板FPGA型號為Xilinx–>Kintex7–35T–xc7k325tffg676-2;此工程為點對點傳輸案例1的視頻發送端工程,即視頻Aurora 64B66B編碼轉SFP光口輸出;FPGA開發板1的輸入視頻為OV5640攝像頭或者動態彩條,默認使用OV5640;FPGA首先使用純Verilog實現的i2c總線對攝像頭進行初始化配置,分辨率配置為1280x720@30Hz;然后采集輸入視頻,將輸入的兩個時鐘傳輸一個RGB565像素的視頻采集為一個時鐘傳輸一個RGB888像素的視頻;然后采集視頻送入Xilinx官方的Video In To AXI4-Stream IP核實現Native視頻轉換到AXI4-Stream視頻流;然后AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號重組,因為Aurora 64B66B發送接口不帶tuser信號,所以需要將tuser嵌入到數據流中傳輸;然后視頻流送入Xilinx官方的Aurora 64B66B IP核實現64B66B數據編碼,數據以高速差分信號輸出,經板載的SFP光口發送至遠端節點,輸出分辨率為1280x720@60Hz;由此形成Sensor+64B66B編碼+SFP光口的高端架構;該工程適用于視頻轉SFP光口光端機應用;

工程源碼2:點對點傳輸案例1的視頻接收端工程

開發板FPGA型號為Xilinx–>Kintex7–35T–xc7k325tffg676-2;此工程為點對點傳輸案例1的視頻接收端工程,即SFP光口視頻接收Aurora 64B66B解碼轉HDMI輸出;FPGA開發板2用板載的SFP光口的光纖接收視頻,經SFP-RX接口輸入高速差分信號再進入Xilinx官方的Aurora 64B66B IP核實現64B66B數據解碼,輸出AXI4-Stream視頻流;AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號恢復,因為Aurora 64B66B接收接口不帶tuser信號,所以需要在嵌入數據中的tuser恢復出來;然后AXI4-Stream視頻流送入本博主自研的純verilog實現的、AXI4-Stream接口的圖像寫緩存模塊,實現視頻寫入DDR緩存操作;然后使用本博主自研的純verilog實現的、AXI4-Stream接口的圖像讀緩存模塊,實現視頻從DDR讀出操作;然后讀出的視頻送入純verilog實現的Native視頻時序模塊實現視頻同步;然后使用RGB轉HDMI模塊或者專用芯片實現RGB視頻流轉HDMI差分視頻信號;最后用顯示器顯示視頻即可,輸出分辨率為1280x720@60Hz;由此形成Sensor+64B66B編碼+SFP光口的高端架構;該工程適用于視頻轉SFP光口光端機應用;

工程源碼3:點對點傳輸案例2的視頻發送端工程

開發板FPGA型號為Xilinx–>Zynq7100–xc7z100ffg900-2;此工程為點對點傳輸案例2的視頻發送端工程,即視頻Aurora 64B66B編碼轉SFP光口輸出;FPGA開發板1的輸入視頻為OV5640攝像頭或者動態彩條,默認使用OV5640;FPGA首先使用純Verilog實現的i2c總線對攝像頭進行初始化配置,分辨率配置為1280x720@30Hz;然后采集輸入視頻,將輸入的兩個時鐘傳輸一個RGB565像素的視頻采集為一個時鐘傳輸一個RGB888像素的視頻;然后采集視頻送入Xilinx官方的Video In To AXI4-Stream IP核實現Native視頻轉換到AXI4-Stream視頻流;然后AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號重組,因為Aurora 64B66B發送接口不帶tuser信號,所以需要將tuser嵌入到數據流中傳輸;然后視頻流送入Xilinx官方的Aurora 64B66B IP核實現64B66B數據編碼,數據以高速差分信號輸出,經板載的SFP光口發送至遠端節點,輸出分辨率為1280x720@60Hz;由此形成Sensor+64B66B編碼+SFP光口的高端架構;該工程適用于視頻轉SFP光口光端機應用;

工程源碼4:點對點傳輸案例2的視頻接收端工程

開發板FPGA型號為Xilinx–>Zynq7100–xc7z100ffg900-2;此工程為點對點傳輸案例2的視頻接收端工程,即SFP光口視頻接收Aurora 64B66B解碼轉HDMI輸出;FPGA開發板2用板載的SFP光口的光纖接收視頻,經SFP-RX接口輸入高速差分信號再進入Xilinx官方的Aurora 64B66B IP核實現64B66B數據解碼,輸出AXI4-Stream視頻流;AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號恢復,因為Aurora 64B66B接收接口不帶tuser信號,所以需要在嵌入數據中的tuser恢復出來;然后AXI4-Stream視頻流送入本博主自研的純verilog實現的、AXI4-Stream接口的圖像寫緩存模塊,實現視頻寫入DDR緩存操作;然后使用本博主自研的純verilog實現的、AXI4-Stream接口的圖像讀緩存模塊,實現視頻從DDR讀出操作;然后讀出的視頻送入純verilog實現的Native視頻時序模塊實現視頻同步;然后使用RGB轉HDMI模塊或者專用芯片實現RGB視頻流轉HDMI差分視頻信號;最后用顯示器顯示視頻即可,輸出分辨率為1280x720@60Hz;由此形成Sensor+64B66B編碼+SFP光口的高端架構;該工程適用于視頻轉SFP光口光端機應用;

本博客詳細描述了FPGA實現Aurora 64B66B視頻點對點傳輸的設計方案,工程代碼可綜合編譯上板調試,可直接項目移植,適用于在校學生、研究生項目開發,也適用于在職工程師做學習提升,可應用于醫療、軍工等行業的高速接口或圖像處理領域;
提供完整的、跑通的工程源碼和技術支持;
工程源碼和技術支持的獲取方式放在了文章末尾,請耐心看到最后;

免責聲明

本工程及其源碼即有自己寫的一部分,也有網絡公開渠道獲取的一部分(包括CSDN、Xilinx官網、Altera官網等等),若大佬們覺得有所冒犯,請私信批評教育;基于此,本工程及其源碼僅限于讀者或粉絲個人學習和研究,禁止用于商業用途,若由于讀者或粉絲自身原因用于商業用途所導致的法律問題,與本博客及博主無關,請謹慎使用。。。

2、相關方案推薦

我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目

其實一直有朋友反饋,說我的博客文章太多了,亂花漸欲迷人,自己看得一頭霧水,不方便快速定位找到自己想要的項目,所以本博文置頂,列出我目前已有的所有項目,并給出總目錄,每個項目的文章鏈接,當然,本博文實時更新。。。以下是博客地址:
點擊直接前往

我這里已有的 GT 高速接口解決方案

我的主頁有FPGA GT 高速接口專欄,該專欄有 GTP 、 GTX 、 GTH 、 GTY 等GT 資源的視頻傳輸例程和PCIE傳輸例程,其中 GTP基于A7系列FPGA開發板搭建,GTX基于K7或者ZYNQ系列FPGA開發板搭建,GTH基于KU或者V7系列FPGA開發板搭建,GTY基于KU+系列FPGA開發板搭建;以下是專欄地址:
點擊直接前往

本方案在Aurora 8B10B上的應用

本方案在Aurora 8B10B上也有應用應用,可以參考我之前發布的博客,鏈接如下:
點擊直接前往

3、工程詳細設計方案

工程設計原理框圖

工程設計原理框圖如下:
在這里插入圖片描述

輸入Sensor之–>OV5640攝像頭

此模塊為點對點視頻發送端工程所獨有;輸入Sensor是本工程的輸入設備,其一為OV5640攝像頭,此外本博主在工程中還設計了動態彩條模塊,彩條由FPGA內部邏輯產生,且是動態移動的,完全可模擬Sensor,輸入源選擇Sensor還是彩條,通過Sensor模塊的頂層參數配置,默認選擇Sensor輸入;Sensor模塊如下:
在這里插入圖片描述
SENSOR_TYPE=0;則輸出OV5640攝像頭采集的視頻;
SENSOR_TYPE=1;則輸出動態彩條的視頻;

OV5640攝像頭需要i2c初始化配置,本設計配置為1280x720@30Hz分辨率,本設計提供純verilog代碼實現的i2c模塊實現配置功能;此外,OV5640攝像頭還需要圖像采集模塊實現兩個時鐘輸出一個RGB565的視頻轉換為一個時鐘輸出一個RGB888視頻,本設計提供純verilog代碼實現的圖像采集模塊實現配置功能;動態彩條則由FPGA內部邏輯實現,由純verilog代碼編寫;將OV5640攝像頭配置采集和動態彩條進行代碼封裝,形成helai_OVsensor.v的頂層模塊,整個模塊代碼架構如下:
在這里插入圖片描述

Native視頻轉AXIS流

此模塊為點對點視頻發送端工程所獨有;然后采集視頻送入Xilinx官方的Video In To AXI4-Stream IP核實現Native視頻轉換到AXI4-Stream視頻流;如下:
在這里插入圖片描述

AXIS視頻流重組

此模塊為點對點視頻發送端工程所獨有;然后AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號重組,因為Aurora 8B10B發送接口不帶tuser信號,所以需要將tuser嵌入到數據流中傳輸;將AXIS視頻流重組模塊直接拖入Block Design中,如下:
在這里插入圖片描述

Aurora 64B66B視頻傳輸傳輸架構

Aurora 64B66B視頻傳輸傳輸架構在視頻點對點傳輸發送端和接收端都用到了;
然后視頻流送入Xilinx官方的Aurora 64B66B IP核實現64B66B數據編碼,數據以高速差分信號輸出,經板載的SFP光口進行回環傳輸;經SFP-RX接口輸入高速差分信號再進入Xilinx官方的Aurora 64B66B IP核實現64B66B數據解碼,輸出AXI4-Stream視頻流;本設計基于GTX高速收發器實現Aurora 64B66B圖像視頻傳輸,Aurora 64B66B在Block Design中如下:
在這里插入圖片描述
Aurora 64B66B圖像視頻傳輸架構的核心是Aurora 64B66B IP核的例化和使用,所以本章節我們重點講解這個IP;

Aurora 64B66BIP核簡介

關于Aurora 64B66B IP核介紹最詳細的肯定是Xilinx官方的《pg074_Aurora 64B/66B LogiCORE IP Product Guide》,我們以此來解讀,《pg074》PDF文檔我已放在了資料包里;我用到的開發板FPGA型號為Xilinx–7系列FPGA;帶有多路GTX資源,每通道的收發速度為500 Mb/s到10.3125 Gb/s之間(GTX為例)。本設計使用的Aurora 64B66B IP核基于GTX高速收發器實現物理層和數據鏈路層;

Aurora 64B66B 基本結構

根據《pg074_Aurora 64B/66B LogiCORE IP Product Guide》,Aurora 64B66B基本結構如下:
在這里插入圖片描述
由上圖可知,Aurora 64B66B IP核由四個核心模塊構成,協同實現鏈路初始化、數據編解碼及流控制:

通道邏輯(Lane Logic)
功能:驅動每個GT收發器(GTX/GTH/GTY),初始化收發器硬件,處理64B66B編解碼、錯誤檢測(如CRC校驗)
關鍵操作:檢測控制字符(如空閑符、時鐘補償符),確保數據對齊

全局邏輯(Global Logic)
功能:管理多通道綁定(Lane Bonding),驗證通道同步狀態,生成隨機空閑字符維持鏈路活性,監控所有通道的錯誤(如hard_err硬件錯誤、soft_err位錯誤)
錯誤處理:檢測到嚴重錯誤時自動復位并重新初始化通道

發送用戶接口(TX User Interface)
接口類型:支持AXI4-Stream幀接口(帶tlast/tkeep)或流接口(簡化無幀控制)
功能:將應用層數據封裝為Aurora幀(添加SCP/ECP控制符),插入時鐘補償序列(每10,000字節插入12字節開銷)

接收用戶接口(RX User Interface)
功能:解析輸入數據流,剝離SCP/ECP控制符,恢復原始數據幀并通過AXI4-Stream輸出;支持流量控制(如UFC/NFC)
特點:無彈性緩沖,依賴實時流控避免溢出

用戶數據接口對比
Aurora 64B66B支持幀接口 (Framing) 流接口 (Streaming),對比如下:
在這里插入圖片描述

Aurora 64B66B 發送流程

Aurora 64B66B用戶發送數據使用幀接口(AXI4-Stream),包括以下流程:

用戶發起傳輸
應用層置位s_axi_tx_tvalid并輸出數據至s_axi_tx_tdata,同時用s_axi_tx_tlast標識幀結束,s_axi_tx_tkeep標記末尾有效字節

IP核組幀
當s_axi_tx_tready與s_axi_tx_tvalid同時有效時,IP核采樣數據

組幀規則:
幀首添加2字節SCP(Start Channel Protocol)
幀尾添加2字節ECP(End Channel Protocol)
若數據字節數為奇數,末尾補PAD字符

插入控制序列
在數據間隙插入空閑字符或時鐘補償序列(CC),優先級高于數據傳輸
發送過程中可通過拉低s_axi_tx_tvalid暫停傳輸(流控)

串行化輸出
數據經GT收發器進行64B66B編碼,轉為串行信號通過物理鏈路發送

使用總結
以上流程為Aurora 64B66B IP核內部實現,開發者只需了解即可,無需關心起具體實現細節,開發者只需把發送數據轉換為AXI4-Stream數據流送入Aurora 64B66B用戶發送接口即可;

Aurora 64B66B 接收流程

數據解析
GT收發器接收串行數據,進行字對齊和64B66B解碼
通道邏輯檢測并剝離SCP、ECP、PAD及空閑字符,提取有效負載

幀恢復與輸出
恢復的數據通過AXI4-Stream接口輸出:
m_axi_rx_tvalid標識有效數據
m_axi_rx_tlast標識幀結束
m_axi_rx_tkeep標記幀末有效字節(僅當tlast有效時)
無流控信號:接收端無tready,需應用層實時消費數據

錯誤檢測
實時監測編解碼錯誤(置位soft_err)或幀結構錯誤(如連續SCP,置位frame_err)

使用總結
以上流程為Aurora 64B66B IP核內部實現,開發者只需了解即可,無需關心起具體實現細節,開發者只需把Aurora 64B66B IP核輸出的AXI4-Stream數據流送入自己的接收模塊即可進行具體分析和處理;

Aurora 64B66B 時鐘架構

Aurora 64B66B IP核涉及多時鐘域協同,關鍵時鐘信號如下:
在這里插入圖片描述
時鐘交互要點:
跨時鐘域同步:INIT_CLK用于復位邏輯(gt_reset需同步至該時鐘域),避免亞穩態
用戶時鐘生成:USER_CLK由GT收發器的CDR(時鐘數據恢復)電路產生,確保與輸入數據同步
抖動要求:參考時鐘(GT_REFCLK)需滿足嚴格抖動限制(通常<1 ps RMS),否則高線速下鏈路失鎖

Aurora 64B66B IP核調用和使用

Aurora 64B66B IP核調用和使用很簡單,通過vivado的UI界面即可完成,如下:
在這里插入圖片描述
然后配置如下:
在這里插入圖片描述
具體配置要根據自己的項目需求而定,上圖只是博主的配置,僅供參考;

AXIS視頻流恢復

此模塊為點對點視頻接收端工程所獨有;AXI4-Stream視頻流再送入純verilog代碼實現的AXIS視頻流重組模塊實現信號恢復,因為Aurora 8B10B接收接口不帶tuser信號,所以需要在嵌入數據中的tuser恢復出來;將AXIS視頻流恢復模塊直接拖入Block Design中,如下:
在這里插入圖片描述

AXIS視頻流寫緩存

此模塊為點對點視頻接收端工程所獨有;然后AXI4-Stream視頻流送入本博主自研的純verilog實現的、AXI4-Stream接口的圖像寫緩存模塊,實現視頻寫入DDR緩存操作;AXIS視頻流寫緩存模塊代碼架構如下:
在這里插入圖片描述
AXIS視頻流寫緩存模塊配置項如下:
在這里插入圖片描述
AXIS視頻流寫緩存模塊配置在Block Design中如下:
在這里插入圖片描述

AXIS視頻流讀緩存

此模塊為點對點視頻接收端工程所獨有;然后使用本博主自研的純verilog實現的、AXI4-Stream接口的圖像讀緩存模塊,實現視頻從DDR讀出操作;AXIS視頻流寫緩存模塊代碼架構如下:
在這里插入圖片描述
AXIS視頻流讀緩存模塊配置項如下:
在這里插入圖片描述
AXIS視頻流讀緩存模塊配置在Block Design中如下:
在這里插入圖片描述

HDMI視頻輸出架構

此模塊為點對點視頻接收端工程所獨有;緩存圖像從DDR3讀出后經過Native時序生成模塊輸出標準的VGA時序視頻,然后經過純verilog顯示的RGB轉HDMI模塊輸出HDMI差分視頻;最后送顯示器顯示即可;代碼例化如下:
在這里插入圖片描述

點對點視頻發送端工程源碼架構

提供1套工程源碼,以工程源碼1為例,工程Block Design設計如下:
在這里插入圖片描述
提供4套工程源碼,以工程源碼1為例,綜合后的工程源碼架構如下:
在這里插入圖片描述

點對點視頻接收端工程源碼架構

提供4套工程源碼,以工程源碼2為例,工程Block Design設計如下:
在這里插入圖片描述
提供4套工程源碼,以工程源碼2為例,綜合后的工程源碼架構如下:
在這里插入圖片描述
工程源碼3、4使用了Zynq7100;PL端時鐘由Zynq軟核提供,所以需要運行運行SDK以啟動Zynq,所以需要在SDK里運行一個簡單的hello world程序,SDK軟件代碼架構如下:
在這里插入圖片描述

4、vivado工程源碼1詳解–>Kintex7–325T,點對點OV5640視頻轉SFP光口發送

開發板FPGA型號:Kintex7–325T–xc7k325tffg676-2;
FPGA開發環境:Vivado2019.1;
輸入:OV5640攝像頭或動態彩條,分辨率1280x720@30Hz;
輸出:SFP光口,分辨率1280x720@60Hz;
光編碼方案:Xilinx Aurora 64B66B IP核;
回環光口類型:1路SFP光口;
高速收發器類型:GTX,線速率10Gbps;
Aurora 64B66B用戶數據位寬:64 bit;
實現功能:FPGA實現Aurora 64B66B圖像視頻傳輸;
工程作用:此工程目的是讓讀者掌握FPGA實現Aurora 64B66B圖像視頻傳輸的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

5、vivado工程源碼2詳解–>Kintex7–325T,點對點SFP光口接收OV5640視頻轉HDMI

開發板FPGA型號:Kintex7–325T–xc7k325tffg676-2;
FPGA開發環境:Vivado2019.1;
輸入:SFP光口,分辨率1280x720@60Hz;
輸出:HDMI,RTL邏輯編碼,分辨率1280x720@60Hz;
光編碼方案:Xilinx Aurora 64B66B IP核;
回環光口類型:1路SFP光口;
高速收發器類型:GTX,線速率10Gbps;
Aurora 64B66B用戶數據位寬:64 bit;
實現功能:FPGA實現Aurora 64B66B圖像視頻傳輸;
工程作用:此工程目的是讓讀者掌握FPGA實現Aurora 64B66B圖像視頻傳輸的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

6、vivado工程源碼3詳解–>Zynq7100,點對點OV5640視頻轉SFP光口發送

開發板FPGA型號:Zynq7100–xc7z100ffg900-2;
FPGA開發環境:Vivado2019.1;
輸入:OV5640攝像頭或動態彩條,分辨率1280x720@30Hz;
輸出:SFP光口,分辨率1280x720@60Hz;
光編碼方案:Xilinx Aurora 64B66B IP核;
回環光口類型:1路SFP光口;
高速收發器類型:GTX,線速率10Gbps;
Aurora 64B66B用戶數據位寬:64 bit;
實現功能:FPGA實現Aurora 64B66B圖像視頻傳輸;
工程作用:此工程目的是讓讀者掌握FPGA實現Aurora 64B66B圖像視頻傳輸的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

7、vivado工程源碼4詳解–>Zynq7100,點對點SFP光口接收OV5640視頻轉HDMI

開發板FPGA型號:Zynq7100–xc7z100ffg900-2;
FPGA開發環境:Vivado2019.1;
輸入:SFP光口,分辨率1280x720@60Hz;
輸出:HDMI,RTL邏輯編碼,分辨率1280x720@60Hz;
光編碼方案:Xilinx Aurora 64B66B IP核;
回環光口類型:1路SFP光口;
高速收發器類型:GTX,線速率10Gbps;
Aurora 64B66B用戶數據位寬:64 bit;
實現功能:FPGA實現Aurora 64B66B圖像視頻傳輸;
工程作用:此工程目的是讓讀者掌握FPGA實現Aurora 64B66B圖像視頻傳輸的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第3章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

8、工程移植說明

vivado版本不一致處理

1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點擊文件–>另存為;但此方法并不保險,最保險的方法是將你的vivado版本升級到本工程vivado的版本或者更高版本;
在這里插入圖片描述
3:如果你的vivado版本高于本工程vivado版本,解決如下:
在這里插入圖片描述
打開工程后會發現IP都被鎖住了,如下:
在這里插入圖片描述
此時需要升級IP,操作如下:
在這里插入圖片描述
在這里插入圖片描述

FPGA型號不一致處理

如果你的FPGA型號與我的不一致,則需要更改FPGA型號,操作如下:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
更改FPGA型號后還需要升級IP,升級IP的方法前面已經講述了;

其他注意事項

1:由于每個板子的DDR不一定完全一樣,所以MIG IP需要根據你自己的原理圖進行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;

9、上板調試驗證

準備工作

需要準備的器材如下:
FPGA開發板,沒有開發板可以找本博提供;
SFP光模塊和光纖;
我的開發板了連接如下:
在這里插入圖片描述

Aurora 64B66B 視頻點對點傳輸效果演示

Aurora 64B66B光口視頻點對點傳輸效果演示如下:

FPGA實現Aurora 64B66B圖像視頻傳輸

10、工程代碼的獲取

代碼太大,無法郵箱發送,以某度網盤鏈接方式發送,
資料獲取方式:文章末尾的V名片。
網盤資料如下:
在這里插入圖片描述
此外,有很多朋友給本博主提了很多意見和建議,希望能豐富服務內容和選項,因為不同朋友的需求不一樣,所以本博主還提供以下服務:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93341.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93341.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93341.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【軟件安裝|1】CentOS7最新可用國內 yum 鏡像源配置和Linux版MySQL8.0安裝及其相關知識

文章目錄一.更換yum鏡像源二.安裝并配置MySQL8.0安裝配置相關知識什么是yum&#xff1f;什么是鏡像源&#xff1f;相關知識請看最后&#xff0c;首先來更換yum鏡像源 更換前需要準備好VmwareWorkstation和Finalshell&#xff0c;開啟虛擬機&#xff0c;切換到root用戶 Vmware和…

【深度學習】深度學習的四個核心步驟:從房價預測看機器學習本質

文章目錄基礎概念與原理第一步&#xff1a;準備數據 - 構建學習的基礎數據生成與特征工程&#xff08;選擇對預測有用的特征&#xff09;數據集劃分的重要性第二步&#xff1a;設計模型 - 建立數學表達線性回歸模型的數學表達損失函數的設計哲學第三步&#xff1a;訓練優化 - 自…

Java使用Apache POI讀取Excel文件

一、下載jar包 Apache POI有提供下載地址&#xff1a;Apache Archive Distribution Directory&#xff0c;直接打開鏈接并選擇所需的版本下載即可(雙擊last modified可按最新更新時間排序)&#xff0c;本文章以poi-bin-4.1.1-20191023.zip為例&#xff0c;進入官網下載鏈接后&…

VLMs開發——基于Qwen2.5-VL 實現視覺語言模型在目標檢測中的層級結構與實現方法

概述 目標檢測作為計算機視覺領域的核心任務&#xff0c;傳統方法依賴于 YOLO 等視覺模型對預定義類別進行位置預測。然而&#xff0c;此類方法受限于預訓練類別體系&#xff0c;難以實現靈活的視覺交互。視覺語言模型&#xff08;Vision-Language Models, VLMs&#xff09;的…

Spring Boot + Redis + 布隆過濾器防止緩存穿透

? 項目概述 在高并發系統中&#xff0c;緩存穿透 是一個經典問題&#xff1a;當惡意請求或業務邏輯查詢一個數據庫中不存在的 Key&#xff0c;由于緩存中也沒有&#xff0c;請求會直接打到數據庫&#xff0c;導致數據庫壓力激增&#xff0c;甚至宕機。 本項目使用 Spring Bo…

電子電路學習日記

這里的 K 表示 千歐&#xff08;kilo-ohm&#xff09;&#xff0c;而 F 在很多國產 EDA 軟件&#xff08;比如立創EDA、Altium 的一些中文封裝庫&#xff09;里用來標注精度&#xff08;公差&#xff09;&#xff0c; F 代表 1% 精度&#xff08;英文 Fine tolerance&#xff0…

oracle 怎么實現讀一致性

? Oracle 數據塊讀一致性判斷流程&#xff08;正確版&#xff09; 假設&#xff1a;Query SCN 查詢開始的 SCN&#xff08;Query SCN&#xff09; lastSubbmit SCN 行中最新的提交scn Row SCN 行最后修改的 SCN&#xff08;存儲在行頭&#xff0c;通過 ITL 推導&#xff09…

ISTA為什么要加上軟閾值激活函數?r若沒有L1 正則化也要加其他激活函數嗎?

一、加上軟閾值函數&#xff08;Soft-thresholding&#xff09;是因為 LISTA&#xff08;以及它的前身 ISTA&#xff09;本質上是在求解一個 帶 L1 正則化的稀疏優化問題&#xff1a; min?x12∥y?Ax∥22λ∥x∥1 \min_x \frac{1}{2} \|y - Ax\|_2^2 \lambda \|x\|_1 xmin?2…

線程P4 | 線程安全問題及解決方法

何為線程安全&#xff1f;要談及何為線程安全&#xff0c;總得說來&#xff0c;我們可以用一句話來概況&#xff1a;如果在多線程環境下代碼運行結果和我們預期是相符的&#xff0c;即和單線程環境下的運行結果相同&#xff0c;那么我們就稱這個程序是線程安全的&#xff0c;反…

水印消失術!JavaAI深度學習去水印技術深度剖析

一、飛算JavaAI平臺概述1.1 飛算JavaAI定位與技術特色 飛算JavaAI是國內領先的智能化Java開發平臺&#xff0c;通過AI技術賦能軟件開發全流程&#xff0c;特別針對小程序、Web應用等輕量級開發場景提供*零基礎編程→高質量交**的一站式解決方案。其核心優勢體現在&#xff1a; …

醋酸釓:醫學影像與科技創新中的重要角色

醋酸釓是一種由釓元素和醋酸根離子組成的化合物。釓是稀土金屬之一&#xff0c;常常用于醫學影像、核磁共振成像&#xff08;MRI&#xff09;以及某些工業應用。醋酸釓作為釓的鹽之一&#xff0c;具有許多獨特的性質&#xff0c;尤其在醫學和科學研究領域表現突出。一、醋酸釓的…

插入排序專欄

插入排序&#xff08;Insertion Sort&#xff09;是一種簡單直觀的排序算法&#xff0c;其思想源于我們日常生活中整理撲克牌的方式。本文將詳細解析插入排序的工作原理&#xff0c;通過 Java 實現代碼進行分析&#xff0c;深入探討其時間復雜度的計算過程&#xff0c;并闡述其…

高效Unicode字符表示:一種創新的詞表構建策略分析

在自然語言處理中&#xff0c;處理多語言和特殊字符的表示始終是一項挑戰。本文將分析一種創新的詞表構建策略&#xff0c;該策略通過數學優化和雙token機制&#xff0c;在保持詞表緊湊的同時實現了對Unicode字符的全面覆蓋。 詞表構建的核心邏輯 該策略包含四個關鍵步驟&#…

python與物聯網基礎知識

軟件準備&#xff1a;軟件&#xff1a;thonny-4.0.1-windows-portable(win10,11系統64位)驅動&#xff1a;CP210x_Windows_Drivers固件&#xff1a;esp8266-1m-20220618-v1.19.1.bin物料準備&#xff1a;面包板、開發板、電源線一、安裝與調試&#xff1a;1.在軟件文件中找到th…

SVN提交服務器拒絕訪問的問題

SVN提交服務器拒絕訪問的問題 介紹 分析 1.服務器的SVN沒有開啟 2.服務器的網絡端口除了問題沒有開放端口 3.客戶端的SVN配置除了問題刷新一下數據 4.客戶端的SVN重裝 找原因 1.初步以為是**防火墻**的問題 2.網絡運營商的問題 總結 介紹 SVN相信大家都用過,今天反饋一個比較…

【Linux】庫制作與原理

前言 本篇博客我們來認識下庫方面的知識 &#x1f493; 個人主頁&#xff1a;zkf ? 文章專欄&#xff1a;Linux 若有問題 評論區見&#x1f4dd; &#x1f389;歡迎大家點贊&#x1f44d;收藏?文章 目錄 1.什么是庫 2.靜態庫 2.1靜態庫的生成 2.2靜態庫的使用 3.動態庫 …

Android ADB 常用指令全解析

ADB&#xff08;Android Debug Bridge&#xff09;是 Android 開發和測試不可或缺的調試工具&#xff0c;它建立了電腦與 Android 設備之間的通信橋梁&#xff0c;通過命令行指令可實現對設備的全方位控制。掌握 ADB 指令能大幅提升開發效率&#xff0c;解決各類調試難題。本文…

使用 Rust 創建 32 位 DLL 的完整指南

使用 Rust 創建 32 位 DLL 的完整指南 在 Rust 中創建 32 位 DLL 需要特定的工具鏈配置和編譯選項。以下是詳細步驟和最佳實踐&#xff1a; 環境準備 1. 安裝 Rust 工具鏈 # 安裝 Rust curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh# 安裝 32 位目標 rustu…

算法基礎 第3章 數據結構

1.單調棧 1.什么是單調棧 單調棧&#xff0c;即具有單調性的棧。 實現 #include <iostream> #include <stack> using namespace std; const int N 3e6 10; int a[N], n; void test1() {stack<int> st; // 維護?個單調遞增的棧for(int i 1; i < n; i…

[機器學習]08-基于邏輯回歸模型的鳶尾花數據集分類

使用sklearn的LogisticRegression多分類模型程序代碼&#xff1a;import numpy as np from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt import matplotlib as mpl from sklearn import datasets from sklearn import preprocessing impo…