SerDes接口——架構與電路

????????隨著通信技術的飛速發展,高速串行互連以其結構簡單,不需要傳輸同步時鐘,相比并行傳輸有更高數據傳輸效率的優點,成為現代通信和數據傳輸的重要組成部分。隨著對數據傳輸速率要求的不斷提高,SERDES應運而生。它是一種時分多路復用(TDM)、點對點的通信技術,即在發送端多路低速并行信號被轉換成高速串行信號,經過傳輸媒體(光纜或銅線),最后在接收端高速串行信號重新轉換成低速并行信號。

????????SERDES(Serializer and Deserializer)接口作為高速串行通信的重要組成部分,對其芯片的研究和設計一直是一個熱點。SERDES接口由串行器(SER)和解串器(DES)兩部分組成,串行器由并串轉換電路、發射器組成,結構比較簡單,而解串器由接收器、串并轉換電路和時鐘與數據恢復電路CDR(Clock and Data Recovery)組成,接VI中串行器的功能是將低速的并行信號轉換成為高速低壓差分信號LVDS(Low Voltage Differential Signaling),然后串化并發送出去,而解串器的功能是接收高速串行LVDS信號并正確地轉換為低速并行信號。在基本的SERDES模塊中,SERDES內部的時鐘頻率必須要大于外部參考時鐘的頻率。

????????其采用的一些技術也突破了傳統并行I/O 接口的數據傳輸瓶頸,比如,(一)采用差分信號傳輸代替單端信號傳輸,從而增強了抗噪聲、抗干擾能力;(二)采用時鐘和數據恢復技術代替同時傳輸數據和時鐘,從而解決了限制數據傳輸速率的信號時鐘偏移問題;(三)采用了多路復用技術(TDM),增加了系統傳輸帶寬,給PCB 版圖布線帶來了極大的方便。

一、SerDes 接口常用構架

????????SerDes芯片廣泛的應用于通信系統的信號傳輸中,但是大多數通信系統設計者在選擇SerDes芯片時,往往只是考慮芯片的功耗和速度,而忽略了SerDes芯片的工作機制和原理。SerDes芯片的內部構架看似不相關,其實構架的不同決定了整個系統在設計時許多重要參數的不同,例如系統的拓撲結構,底層協議,數據格式,以及延遲,時鐘等要求都是需要考慮的。這些因素對系統的開銷,性能具有重要的作用。

????????現在主要由四種SerDes結構,分別是并行時鐘SerDes,嵌入時鐘SerDes,位交錯SerDes以及8b/10b SerDes,下面分別介紹這四種SerDes結構。

1、并行時鐘SerDes

????????并行時鐘SerDes常常用于串行化“數據-地址-控制”并行總線,例如PCI,UTOPIA,處理器總線,控制總線等。這種SerDes架構不再用一個多路復用器去解決整個總線,而是利用一組多路復用器(N~1位)去串行化并行數據,每個多路復用器分別串行化一部分總線。串行數據連同一個附加的時鐘信號并行到達接收端,接收器用這個時鐘信號鎖存并恢復數據。

????????這里有多對時鐘/數據對,因此要確保對與對之間的偏移最小,這樣才能保證解串的正確性。盡管有多對串行線,但是并行時鐘SerDes仍舊擁有更小功耗,更少的數據線,更大的驅動能力,更低的噪聲等優點。并行時鐘SerDes提供了一種性價比高的解決方案。

2、嵌入時鐘SerDes

????????嵌入時鐘 SerDes將數據總線和時鐘轉換為一個串行差分對進行傳輸。兩個時鐘位(一低一高)嵌入進數據流中,作為每個時鐘周期的數據幀結構的起始位和結束位,并在串行數據流中產生周期性的時鐘上升沿。

?????????上電之后,接收器自動搜索周期性的時鐘上升沿。由于數據位的值隨時間改變,同時時鐘位不變,所以接收器能夠唯一定位時鐘沿及同步時鐘沿。一旦鎖定,接收器就從串行流中恢復數據(不管數據為何種形式)。這種自動同步的能力通常稱為“鎖定隨機數據(lock to random data)”,它不需要系統的外部干預。由于接收器是被鎖定為接收的嵌入時鐘,沒有外部的參考時鐘,則對時鐘的抖動要求是相當寬松的(對接收器和發送器都是同樣的)。相比于其他結構的SerDes 芯片,嵌入時鐘SerDes 的結構比較簡單,在系統級的應用也不復雜。

3、位交錯SerDes

????????位交錯 SerDes 復用低速的SONET/SDH 或8b/10b 串行數據流,通過交差比特位轉換為更快速的串行數據流。在接收端,接收器解復用比特流轉換為低速的碼流。由于高速特性以及低抖動的要求,位交錯SerDes 要求非常精確的外部時鐘。

?????????位交錯 SerDes 芯片常用于電信傳輸設備上,例如分插復用器,準光學轉換器等以加強SONET/SDH 數據流通過電纜或光纖傳輸到核心網的能力。

4、8b/10b SerDes

? ? ? ? 8b/10b SerDes將并行數據映射為10 比特碼,再串行傳輸出去。8b/10b 的編碼方式要求滿足一個時鐘的雙沿傳輸和達到直流平衡。為了定位10 比特碼的邊沿,發送器通過發送一種特殊的comma 字符來標記數據流的幀頭,這種特殊的comma 字符永遠不會出現在普通的數據中,這樣在接收端,利用Comma 檢測器來檢測串行碼流中的特殊Comma 字符,將串行碼流劃分成字邊界正確的10bit 8b/10b 編碼,送到解碼器進行解碼,得到和發送端相同的字節信息。8b/10b SerDes 對外部時鐘的抖動要求較高。

?????????8b/10b SerDes 適合傳送字節數據,許多標準都運用8b/10b 編碼技術,例如以太網,光纖通道,InfiniBand 等,傳輸速率涉及1.0625Gbps、1.25Gbps、2.5Gbps、3.125Gbps 等。在相同的應用中,8b/10b SerDes 的系統相對較復雜,額外的非字節的控制信息必須用帶buffer 緩沖,再以字節的格式發送。

?二、8b/10b SerDes典型結構

????????下面我們就重點探討8b/10b SerDes的內部結構。

?

1、鎖相環

????????SerDes作為一種高速串行傳輸的接口,它需要高質量低抖動的時鐘,而且在將并行數據轉換為串行數據時,需要將并行數據的時鐘頻率提高10倍或20倍,產生高速串行數據的時鐘。因此,我們有必要設計高質量的鎖相環和頻率合成器,來保證提供的時鐘具有高質量、高頻率、低抖動。

????????鎖相環總的來說是一個負反饋跟蹤控制系統,它完成了對壓控振蕩器(VCO)所產生頻率的控制和穩定。通過這樣一個系統,壓控振蕩器產生的時鐘就可以穩定的作為其他系統的時鐘進行使用。鎖相環最重要的一個應用就是產生穩定的時鐘。

2、時鐘數據恢復電路

????????CDR主要功能是接收輸入高速串行信號并判斷信號的相位,從中提取出時鐘信息。

????????實際的系統中,當高速信號在PCB 板級電路或者線纜中傳輸時,由于路徑距離和寄生電容等因素影響,信號從發送端到達接收端的時候,已經產生了隨機的延遲,再加上傳輸過程中所引入的抖動和發送端和接收端同步時鐘固有的頻率偏差,將會使接收端采樣時鐘的相位與接收數據
的相位發生了偏差。在高速條件下,數據的碼元周期都比較小,一旦相位偏差超過一定的范圍,就會發生采樣錯誤。為了能夠正確的對輸入數據進行采樣,滿足系統傳輸誤碼率的指標要求,CDR 模塊必須能夠根據本地時鐘和輸入數據的相位差來正確的調整本地采樣時鐘的相位,以保證采樣時鐘的相位能夠位于輸入數據碼元的中間位置。

????????下圖描述了一個簡化的時鐘和數據恢復電路的原理,時鐘恢復電路檢測輸入數據的跳變沿并調整本地采樣時鐘的相位。數據恢復電路利用調相后的時鐘對相位飄移的輸入數據進行采樣輸出。理想情況下,時鐘采樣時刻應該位于數據的中間位置,假若時鐘采樣時刻位于數據跳變沿位置,則容易產生采樣錯誤。

?3、LVDS 收發器

????????LVDS(Low Voltage Differential Signal) 信號標準是高速串行通信中常用的接口標準之,是一種小振幅差分信號技術,其電路如下:

? ? ? ? LVDS使用非常低的幅度信號(100~450mV) ,通過一對平行的PCB 走線或平衡電纜傳輸數據。在兩條平行的差分信號線上流經的電流方向相反,噪聲信號同時耦合到兩條線上,而接收端只關心兩信號的差值,于是噪聲被抵消。由于兩條信號線周圍的電磁場也互相抵消,故差分信號傳輸比單線信號傳輸電磁輻射小得多,從而提高了傳輸效率并降低了功耗。

????????此外,除了LVDS接口標準,現在少數廠商生產的SerDes芯片中還運用了CML(Current Mode Logic)接口標準。雖然CML接口缺少嚴格的技術規范標準,但是它的應用越來越廣泛。由于CML的電路結構是所有高速數據接口形式中最簡單的一種,且它的數據傳輸率可以達到2.5 Gbps甚至更高,較之CMOS電路,CML電路可以在較低的電源電壓條件下實現低擺幅、高頻率的工作狀態。

4、8B/10B 編碼器

????????8B/10B 編碼方式是1983 年由IBM 的A.X.Widmer 所提出,其根據規定的映射機制將原來的8 比特數據轉化成特定的10 比特數據。8B/10B 編碼器通過均衡映射后的數據流中0 和1 的數量來獲得直流平衡的碼字,而這些直流平衡的碼字可以為后面的時鐘恢復電路提供滿足要求的狀態翻轉次數。

????????8B/10B 編碼原理是將一組連續的8 位字節數據分解為2 組數據:一組為3 比特,另一組為5 比特。分別對2 組數據進行編碼獲得4 比特和6 比特數據,然后組成10 比特數據。我們利用Dx.y 表示256 個數據字符,利用Kx.y 表示12 個特殊控制字符。

????????下圖表示出了具體的映射關系,Dx.y 中x 用高3 位二進制表示,y 用低5 位二進制表示,8 比特并行數據中的高三位HGF 被編碼成jhgf,低5 位EDCBA 被編碼成iedcba,兩組數組成編碼后的10 位并行數據abcdeifghj。

?????????同時為了保證數據流的DC 平衡,在編碼過程中還需要表示不平衡度的極性偏差值RD(Running Disparity)。所有有效的8B/10B 碼字中0 和1 的數量差只有3中情況:0、+2、-2。當碼字中1 的個數比0 的個數多兩個時RD 值為1,,當0 的個數和1 的個數相等時RD 值為0,而當0 的個數比1 的個數多兩個時RD 值為-1。

????????為了維持數據流中的直流平衡性,碼字機制要求每個碼字的RD 值須與前一個碼字的RD 值互為相反值,所以在對當前碼字進行編碼時需要參考前一個碼字的RD 值來進行編碼,下表所示為下一時刻的RD 值與之前的RD 值和當前碼字的RD值的關系:

?????????因為協議規定RD 的初始值為-1,所以在編碼過程中RD 只會出現+1 和-1 兩種情況,從而需要編碼的字符會根據2 種不同RD 值產生兩種不同的編碼結果,并且將編碼后更新的RD 用于下一個碼字的編碼。

????????用于編碼的映射機制規定了268 種有效字節的對應方式,其中包括針對256 個數據字符編碼機制和12 個特殊控制字符的編碼機制。如下表:

?????????上表的3B/4B 模塊中出現Dx.7 的情況時需要特殊處理,此時如果Dx.7 和5B/6B 模塊中的Dx 組合在一起被編碼時需要避免產生連續5 個0 或1 的情況。如果碰到連續5 個0 或1 的情況則認為是表征字符邊界的comma 信號。

????????控制碼字Kx.y 的映射關系,8B/10B 標準使用12 個特殊的控制碼字。在控制碼字中,K28.5、K28.7 為表征字符邊界的comma 序列。

????????在接收端的8B/10B 解碼模塊實現的功能是編碼的逆過程,需要將編碼后的10bit 數據根據映射表映射成8bit 的原始數據,同時還需要實現錯誤字符的檢測功能。?

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

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

相關文章

Springboot分模塊開發詳解(2):建立子工程

1.創建base-entity 選中base工程&#xff0c;右鍵創建一個新的maven工程 自動選擇了base這個目錄存放子工程 創建后&#xff0c;pom.xml修改成如下內容&#xff1a; <?xml version"1.0"?> <projectxsi:schemaLocation"http://maven.apache.org/POM/4…

到天宮做客(2017寒假培訓測試壓軸題)

個人QQ&#xff1a;757394026團隊QQ&#xff1a;466373640個人博客&#xff1a;www.doubleq.winc/noi/信息學奧數博客&#xff1a;http://www.cnblogs.com/zwfymqz 題目描述 有一天&#xff0c;我做了個夢&#xff0c;夢見我很榮幸的接到了豬八戒的邀請&#xff0c;到天宮陪他吃…

NAND FLASH分區規劃

由于BOOTLOADRER、PARAMS以及內核、文件系統都在NAND FLASH上&#xff0c;因此分區就得進行統一規劃。系統的NAND FLASH分區依賴于u-boot和Linux內核兩方面的設置。U-Boot中的NAND分區 文件&#xff1a;include/configs/開發板.h這是Phy3250的參數&#xff0c;Phy3250采用32MB的…

圖像去霧算法學習

現有的圖像采集設備對外界環境的干擾非常敏感,在霧霾環境中,獲取的戶外圖像往往退化嚴重,主要表現為場景特征信息模糊、對比度低、色彩失真,不利于計算機視覺系統對圖像真實特征的提取,從而影響其后續的分析、理解、識別等一系列處理,很大程度上降低了視覺系統的實際應用…

訓練與解碼

BW算法是對某一個HMM(一個音素)進行訓練&#xff0c;需要該HMM對應的觀察向量(一段音頻)&#xff0c;如何讓一段文本中的某個音素找到對應一整段音頻中的一小段音頻&#xff1f;需要用到對齊來找到所有的[音素-音頻]的配對。 訓練時也需要解碼 1&#xff0c;設訓練的一句話有n…

Atlassian發布事故管理解決方案Jira Ops

Atlassian聯合首席執行官兼聯合創始人Scott Farquhar于9月4日宣布&#xff0c;Atlassian推出了一款名為Jira Ops的新產品&#xff0c;并且他們將收購OpsGenie。\\正如“Jira Ops \u0026amp; OpsGenie: powerful incident management”所描述的那樣&#xff0c;Jira Ops是一款新…

U-Boot如何向內核傳遞Flash的分區信息

1.如何對nand 分區。修改mtdparts環境變量就可以了么&#xff1f; 對于目前的U-boot而言,是的.而且, 設置了mtdparts變量之后,你可以在nand read/write/erase命令中直接使用分區的名字而不必指定分區的偏移位置. set bootargs noinitrd consolettySAC0 root/dev/mtdblock3 ro…

Python爬蟲學習系列教程

大家好哈&#xff0c;我呢最近在學習Python爬蟲&#xff0c;感覺非常有意思&#xff0c;真的讓生活可以方便很多。學習過程中我把一些學習的筆記總結下來&#xff0c;還記錄了一些自己實際寫的一些小爬蟲&#xff0c;在這里跟大家一同分享&#xff0c;希望對Python爬蟲感興趣的…

ICer 常用網站推薦

總結一下我經常用到的IC網站&#xff0c;主要是數字IC&#xff0c;大致分資源類和資訊類吧&#xff1a; 一、資訊類 CSDN&#xff1a;目前關于IC的文章也越來越多啊。。https://www.csdn.net/ 知乎&#xff1a;目前來說應該是活躍大佬比較多。。https://www.zhihu.com/ DVCO…

C++成員訪問限定符 private public

private和public稱為成員訪問限定符。用它們來聲明個成員的被訪問權限。 ? ?private?稱為私有的&#xff0c;只能在本類中的成員函數引用&#xff0c;類外不能調用。 ? ?public ?稱為共有的&#xff0c;既可以被本類中的成員函數所引用&#xff0c;也可以被本類中的成員…

內核kernel以及根文件系統rootfs是如何映射到對應的nand flash的

原文 初始化代碼讀取uboot到內存里面&#xff0c;然后跳轉到uboot那里去執行uboot&#xff0c;uboot初始化必要的硬件&#xff0c;加載一些驅動&#xff0c;其中包括nand flash的驅動&#xff0c;然后根據uboot里面設置的一個啟動命令TAG: NAND rootfs Flash 【系統啟動過程…

CMOS 圖像傳感器——Color Filter Array

在介紹CMOS圖像傳感器的工作原理時候說道,像點(Sensor感光的基本單元叫做“像點”)吸收入射光后會有一定概率激發出電子,這個過程叫做光電轉換。光子激發出電子會被像點下方的電場捕獲并存儲起來備用。像點的作用可以類比成一個盛水的小桶,它可以在一定范圍內記錄其捕獲的…

我的一點企業做云經驗

最近&#xff0c;經常有朋友問我在企業做云的經驗&#xff0c;也有人問我OpenStack二次開發項目經驗。正好這方面也有點經歷&#xff0c;那現在就把我過往有關經歷整理整理&#xff0c;總結出幾條心得體會&#xff0c;分享給大家。 技術&#xff1a;我們OpenStack二次開發做了什…

CMOS圖像傳感器——黑電平校正

黑電平(black level ),也稱作Optical Black,很多人也稱呼為OB,指的是光學暗區,即黑色數據的最低電平值,指在經過一定校準的顯示裝置上,沒有一行光亮輸出的視頻信號電平,通常指圖像數據為0時對應的sensor信號電平值。 在CMOS圖像傳感器對圖像進行處理的過程中,黑電平是…

C#利用WebClient 兩種方式下載文件(一)

WebClient client new WebClient(); 第一種 string URLAddress "http://files.cnblogs.com/x4646/tree.zip"; string receivePath"C:\"; client.DownloadFile(URLAddress, receivePath System.IO.Path.GetFileName(URLAddress)); 就OK了。 第二種 Strea…

文件的行操作

1.1 第8題 輸出test.txt文件內容時&#xff0c;不包含clsn字符串的命令 文件內容&#xff1a; [rootznix ~]# cat /data/test.txt test liyao clsn 1.1.1 方法一grep 使用grep命令&#xff0c;找什么就寫什么 -v 參數是排除的意思 [rootznix ~]# grep -v "clsn" /dat…

linux多線程編程5--信號量(semaphore)

信號量本質上是一個非負的整數計數器&#xff0c;也是UNIX中古老的實現進程互斥和同步的手段&#xff0c;Linux下信號量概念是在線程中&#xff0c;信號則在進程控制中&#xff0c;不過原理差不多&#xff0c;最基本最經典的操作莫過于P、V操作了&#xff0c;能實現進程、線程的…

【leetcode】910. Smallest Range II

題目如下&#xff1a; 解題思路&#xff1a;我的思路是先找出最大值。對于數組中任意一個元素A[i]來說&#xff0c;如果A[i] K 是B中的最大值&#xff0c;那么意味著從A[i1]開始的元素都要減去K&#xff0c;即如果有A[i] K > A[-1] - K&#xff0c;那么A[i] K 就可以作為…

CMOS圖像傳感器架構的演變

01、 引言 圖像傳感器目前用于多種應用。自 1969 年電荷耦合器件 (CCD) 發明以來&#xff0c;固態圖像傳感器已蔓延到各種消費市場&#xff0c;例如小型攝像機和數碼相機。自 2005年以來已成為主流固態圖像傳感器的 CMOS 圖像傳感器在為 CCD 開發的技術的基礎上不斷發展。除了…

Linux系統中/dev/mtd與/dev/mtdblock的區別

MTD(memory technology device內存技術設備)是用于訪問memory設備&#xff08;ROM、flash&#xff09;的Linux的子系統。MTD的主要目的是為了使新的memory設備的驅動更加簡單&#xff0c;為此它在硬件和上層之間提供了一個抽象的接口。MTD的所有源代碼在/drivers/mtd子目錄下。…