從FPGA實現角度介紹DP_Main_link主通道原理

??DisplayPort(簡稱DP)是一個標準化的數字式視頻接口標準,具有三大基本架構包含影音傳輸的主要通道(Main Link)、輔助通道(AUX)、與熱插拔(HPD)。
在這里插入圖片描述

??Main Link:用來傳輸各種類型的視頻數據和音頻數據,Main Link由1~4對差分線構成,這些數據線是單向的,從source指向sink。Main Link具體需要幾對數據線,取決于屏幕的分辨率和顏色位數。
??AUX:是一條獨立雙向半雙工的傳輸通道,它也是一對差分信號線。其數據傳輸速率1Mbps,用來傳輸配置參數與指令。具體來說它與EDID及DPCD存儲器相連,并通過總線方式讀寫。
??HPD:該項功能是可選的,實現中斷以及鏈路故障通知。
??DisplayPort1.4協議可以從以下地址下載https://download.csdn.net/download/cjie221/90649332。
在這里插入圖片描述

1.結構框圖

??我們根據DP1.4協議的DPTX框圖進行說明。在Main Link主通道中主要有視頻數據包和第二數據包。視頻數據包就是傳圖像數據,第二數據包用來傳輸音頻數據和其他控制數據,這里我們只介紹視頻數據包。另外DP視頻流傳輸還分為Multi-Stream Transport(MST)多流傳輸模式和Single-Stream Transport(SST)單流傳輸模式。這兩種模式數據格式差別很大。我們先從簡單的開始,這里只介紹SST模式。
??從以下DPTX框圖中可以看出數據處理分成兩個時鐘域,一個是Stream CLK時鐘域,一個是LS CLK時鐘域。那么這里就涉及時鐘域轉換,一般用FIFO實現,并且還可以完成數據位寬的轉換。Stream CLK時鐘域是像素數據,數據位寬一般是24/30bit,LS CLK時鐘域是字節數據,一般是8bit,但在FPGA中實現時,為了降低時鐘頻率,往往采用數據位寬16/32bit。
??首先在Stream CLK時鐘域一般完成視頻數據接收,以及數據位寬轉換,然后存入FIFO中。
??其次在LS CLK時鐘域分別對每個lane的數據進行封包,然后是SR Insertion模塊。Encryption模塊就是HDCP加密模塊,加密模塊是可選項。之后是Interlane Skew通道偏移模塊,Scrambler擾碼模塊,還有8b/10b Encoder編碼模塊,最后是并串轉換。
在這里插入圖片描述

2.實現原理

2.1數據排序

??根據DP協議主鏈路可支持1,2或4 lanes。無論視頻流的顏色空間和像素位深度如何,依照下表進行像素數據的填充。
在這里插入圖片描述

??上面框圖中的Bus Steering模塊功能是就根據lane數對數據進行分配,可以在LS CLK時鐘域實現,也可以在Stream CLK時鐘域實現。
??甚至輸入視頻源直接根據lane數就按照相應的像素模式輸入,這樣實現更簡單。比如鏈路數為1 lane,視頻輸入數據為單像素模式,即每個像素時鐘傳輸1個像素。鏈路數為2 lanes,視頻輸入數據為雙像素模式,即每個像素時鐘傳輸2個像素。鏈路數為4 lanes,視頻輸入數據為四像素模式,即每個像素時鐘傳輸4個像素。這樣就可以不使用Steering模塊,每個像素直接送到各自的lane,存入相應的FIFO中。

2.2數據封包

??根據DP1.4協議,封包的數據是以符號Symbol為單位,一個Symbol 8bit,可以分為數據符號和控制符號。以下控制符號用于組幀。每個控制符號都是一個特殊的K碼。
? BS: Blanking Start,視頻消隱開始標志
? BE: Blanking End,視頻消隱結束標志,每行第一個有效視頻前插入
? FS: Fill Start,填充數據開始標志
? FE: Fill End,填充數據結束標志
? SS: Secondary-data Start,第二數據填充開始標志
? SE: Secondary-data End,第二數據填充結束標志
? SR: Scrambler Reset,SR symbol用來復位LFSR到初始值
? BF: Blanking Fill,增強幀模式填充標志
??在ANSI標準中8B/10B特殊K碼與控制符號對應關系如下表。
在這里插入圖片描述

??在DP協議中,還有普通幀模式與增強幀模式區別,普通幀模式所有的控制符號都是1個K碼,增強幀模式部分控制符號是4個K碼的組合,具體控制符號差別如下表。
在這里插入圖片描述

??視頻流數據封包格式如下圖所示。每個lane都從BE(消隱結束)控制符號開始,緊接著是視頻數據,然后是BS(消隱開始)控制符號,每個lane的BS后必須跟隨VB-ID,Mvid7:0和Maud7:0。之后填充數據零。
在這里插入圖片描述

??無論lane數量是多少, VB-ID,Mvid7:0和Maud7:0 必須傳輸4次,如下圖所示。
在這里插入圖片描述

??在BE控制符號和BS控制符號之間的視頻數據采用一種叫Transfer Unit傳輸單元的方式傳輸。每lane的Transfer Unit的大小必須介于32~64個符號。
??因為數據打包速率(packed data rates)必須小于等于鏈路符號速率(link symbols rates)。當打包數據率低于鏈路符號率時,鏈路層必須執行符號填充(Symbols stuffing)。也就是說在TU中除了數據,還需要符號填充。
??符號填充由stuffing frame symbols和dummy data symbols組成。 Stuffing frame symbols 由FS符號和FE符號構成,位于每個TU (Transfer Unit)之內,dummy data symbols在擾碼之前必須是0x00,插在FS和FE之間,如下圖所示。
??注意,每行視頻數據最后一個TU不填充FS和FE,必須全部是視頻數據。
在這里插入圖片描述

??還有DP傳輸的數據中必須包含視頻流的屬性信息,叫做主視頻流屬性數據Main Stream Attribute(MSA)在主視頻流的垂直消隱期間每幀發送一次。屬性數據包括以下:
(1) 用于視頻流時鐘恢復的M和N值(24bits each)
(2) 水平總點數和垂直總行數(16bits each)
(3) 水平有效開始點數和垂直有效開始行數(16bits each)
(4) 水平和垂直同步信號極性和寬度(1 bit for polarity and 15 bits for width)
(5) 水平有效點數和垂直有效行數(16bits each)
(6) 雜項0(MISC0, 8bits)
(7) 雜項1(MISC1, 8bits)
??通過每lane發送2個連續的SS符號開始,之后就是主流屬性數據,最后用SE結束。如下圖所示。第二數據包也是用SS符號開始,SE結束,只是區別開始時只用1個SS符號。
在這里插入圖片描述

??根據以上規則,對1lane,2lane,4lane分別處理,在LS CLK時鐘域根據視頻輸入每行的等效長度進行計數,然后分別插入控制符號,以及視頻數據,從而完成數據封包。SR符號的插入也可以在封包時完成。

2.3通道間偏移

??相鄰lane必須插入2個鏈路時鐘LS Clk歪斜,目的是提高鏈路對外部噪聲的抗干擾能力,如下圖所示。
在這里插入圖片描述

2.4擾碼

??為了減少EMI,在8B/10B編碼之前,需進行擾碼。16-bit LFSR的多項式為 G(X) = X16 + X5 + X4 + X3 + 1 。數據的每個字節都使用LFSR的最高有效 8 位以相反的位順序進行加擾/解擾。
在這里插入圖片描述

在這里插入圖片描述

??SR符號或SR BF BF SR符號序列被用于復位LFSR至初始值FFFFh(或在eDP標準下初始值為FFFEh)。

3.實現框架

??根據上述的分析,我們可以將DPTX對應到如下的框架。首先根據lane數,將輸入視頻數據按對應的像素模式輸入,最多是四像素模式。之后是pixel to symbol模塊,將像素位寬轉成符號位寬。然后存入FIFO。LS CLK時鐘域用32bit目的是為了降低處理時鐘頻率。之后是封包模塊,最復雜的操作就在此模塊,按行等效長度進行計數,在不同的計數位置,插入控制符號,或者從FIFO中讀取視頻數據插入。通道間偏移相對簡單,寄存器打拍移位就可實現。擾碼模塊參考DP協議附錄,按并行模式實現即可。
??因為大多數SERDES IP都集成了8b/10b編解碼,所以可以不用單獨開發8b/10b編碼模塊,直接利用SERDES IP就可以實現。至于SERDES IP為什么用135MHz做參考時鐘,因為DP的常見速率1.62Gbps/lane(RBR),2.7Gbps/lane(HBR),5.4Gbps/lane(HBR2),8.1Gbps/lane(HBR3)與135MHz都有倍數關系,PLL比較容易產生相應時鐘頻率。當然如果非要用其他如100MHz時鐘做參考時鐘,也是可以的,只是有可能PLL輸出時鐘精度不準,有可能會影響到sink端數據解串。
在這里插入圖片描述

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

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

相關文章

嵌入式軟件--stm32 DAY 2

大家學習嵌入式的時候,多多學習用KEIL寫代碼,雖然作為編譯器,大家常用vscode等常用工具關聯編碼,但目前keil仍然是主流工具之一,學習掌握十分必要。 1.再次創建項目 1.1編譯器自動生成文件 1.2初始文件 這樣下次創建新…

游戲引擎學習第234天:實現基數排序

回顧并為今天的內容設定背景 我們今天繼續進行排序的相關,雖然基本已經完成了,但還是想收尾一下,讓整個流程更完整。其實這次排序只是個借口,主要是想順便聊一聊一些計算機科學的知識點,這些內容在我們項目中平時不會…

計算機網絡——常見的網絡攻擊手段

什么是XSS攻擊,如何避免? XSS 攻擊,全稱跨站腳本攻擊(Cross-Site Scripting),這會與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,因此有人將跨站腳本攻擊縮寫為XSS。它指的是惡意攻擊者往Web頁面…

Agent的九種設計模式 介紹

Agent的九種設計模式 介紹 一、ReAct模式 原理:將推理(Reasoning)和行動(Acting)相結合,使Agent能夠在推理的指導下采取行動,并根據行動的結果進一步推理,形成一個循環。Agent通過生成一系列的思維鏈(Thought Chains)來明確推理步驟,并根據推理結果執行相應的動作,…

LeetCode 熱題 100:回溯

46. 全排列 給定一個不含重復數字的數組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 示例 1: 輸入:nums [1,2,3] 輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 輸入&#xff…

cJSON_Print 和 cJSON_PrintUnformatted的區別

cJSON_Print 和 cJSON_PrintUnformatted 是 cJSON 庫中用于將 cJSON 對象轉換為 JSON 字符串的兩個函數,它們的區別主要在于輸出的格式: 1. cJSON_Print 功能:將 cJSON 對象轉換為格式化的 JSON 字符串。 特點: 輸出的 JSON 字符…

A股周度復盤與下周策略 的deepseek提示詞模板

以下是反向整理的股票大盤分析提示詞模板,采用結構化框架數據占位符設計,可直接套用每周市場數據: 請根據一下markdown格式的模板,幫我檢索整理并輸出本周股市復盤和下周投資策略 【A股周度復盤與下周策略提示詞模板】 一、市場…

Linux下使用C++獲取硬件信息

目錄 方法獲取CPU信息:讀取"/proc/cpuinfo"文件獲取磁盤信息:讀取"/proc/diskstats"文件獲取BIOS信息有兩種方法:1、讀取文件;2、使用dmidecode命令獲取主板信息有兩種方法:1、讀取文件&#xff1…

BootStrap:進階使用(其二)

今天我要講述的是在BootStrap中第二篇關于進一步使用的方法與代碼舉例; 分頁: 對于一些大型網站而言,分頁是一個很有必要的存在,如果當數據內容過大時,則需要分頁來分擔一些,這可以使得大量內容能整合并全面地展示&a…

【技術派后端篇】技術派中的白名單機制:基于Redis的Set實現

在技術派社區中,為了保證文章的質量和社區的良性發展,所有發布的文章都需要經過審核。然而,并非所有作者的文章都需要審核,我們通過白名單機制來優化這一流程。本文將詳細介紹技術派中白名單的實現方式,以及如何利用Re…

TRAE.AI 國際版本

國際版下載地址: https://www.trae.ai/https://www.trae.ai/ 國際版本優勢:提供更多高校的AI助手模型 Claude-3.5-Sonnet Claude-3.7-Sonnet Gemini-2.5-Pro GPT-4.1 GPT-40 DeepSeek-V3-0324DeepSeek-V3DeepSeek-Reasoner(R1)

關于支付寶網頁提示非官方網頁

關于支付寶網站提示 非官方網站 需要找官方添加白名單 下面可以直接用自己的郵箱去發送申請 支付寶提示“非支付寶官方網頁,請確認是否繼續訪問”通常是因為支付寶的安全機制檢測到您訪問的頁面不是支付寶官方頁面,這可能是由于域名或頁面內容不符合支…

【今日三題】打怪(模擬) / 字符串分類(字符串哈希) / 城市群數量(dfs)

??個人主頁&#xff1a;小羊 ??所屬專欄&#xff1a;每日兩三題 很榮幸您能閱讀我的文章&#xff0c;誠請評論指點&#xff0c;歡迎歡迎 ~ 目錄 打怪(模擬)字符串分類(字符串哈希)城市群數量(dfs) 打怪(模擬) 打怪 #include <iostream> using namespace std;int …

npm install 版本過高引發錯誤,請添加 --legacy-peer-deps

起因&#xff1a;由于使用"react": "^19.0.0", 第三方包要低版本react&#xff0c;錯解決方法&#xff01; npm install --save emoji-mart emoji-mart/data emoji-mart/react npm install --save emoji-mart emoji-mart/data emoji-mart/react npm err…

Python基礎總結(七)之條件語句

文章目錄 條件語句if一、Python中的真假二、條件語句格式2.1 if語句格式2.2 if-else語句2.3 if-elif-else語句 三、if語句嵌套 條件語句if 條件語句其實就是if語句&#xff0c;在講解if語句之前需要知道Python中對于真假的判斷。 一、Python中的真假 在Python中非0的都為真&…

基于Ubuntu2504部署OpenStack E版

OpenStack 初始化環境安裝數據庫、memcahe、rabbitmq等服務安裝keystone服務安裝glance服務安裝placement服務安裝nova服務安裝neutron服務安裝horizon服務 官網 OpenStack Epoxy 鞏固了作為 VMware 替代方案的地位&#xff0c;增強了安全性&#xff0c;并改進了硬件支持 第 3…

可發1區的超級創新思路(python 、MATLAB實現):基于多尺度注意力TCN-KAN與小波變換的時間序列預測模型

一、數學模型與原理 1.1 小波變換多尺度分解 輸入功率序列 x(t) 經小波變換分解為近似系數 Aj? 與細節系數 Dj?: 1.2 多尺度TCN特征提取 對每個尺度子序列 {A3?,D3?,D2?,D1?} 采用獨立TCN: 式中 ?d? 為擴張率 d=2l 的擴張卷積,Wd? 為可學習參數。 1.3 多尺度注…

YOLOv11改進有效漲點專欄:從理論到實戰的深度優化指南

## YOLOv11的進化之路 在目標檢測領域,YOLO系列算法始終保持著革命性的創新步伐。YOLOv11作為該系列的最新演進版本,在保持實時檢測優勢的同時,通過架構層面的深度優化實現了精度與速度的平衡。本文將從**七大核心模塊**出發,系統性地解析針對YOLOv11的有效改進方案,涵蓋從…

Cursor新版0.49.x發布

小子看到 Cursor 0.49.x 版本正式發布&#xff0c;截止今天已經有兩個小patch版本&#xff01;本次更新聚焦于 自動化Rules生成、改進的 Agent Terminal 以及 MCP 圖像支持&#xff0c;并帶來了一系列旨在提升編碼效率和協作能力的改進與修復。 以下是本次更新的詳細內容&…

《手環表帶保養全攻略:材質、清潔與化學品避坑指南》

系列文章目錄 文章目錄 系列文章目錄前言一、表帶材質特性與專屬養護方案二、清潔劑使用紅黑榜三、家庭清潔實驗&#xff1a;化學反應警示錄四、保養實踐方法論總結 前言 手環作為現代生活的智能伴侶&#xff0c;表帶材質選擇豐富多樣。從柔軟親膚的皮質到耐用耐磨的金屬&…