国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA 的高速串行收發(fā)器TLK2711全雙工通信協(xié)議設(shè)計

2023-10-17 08:32杜建鵬
電氣傳動自動化 2023年5期
關(guān)鍵詞:發(fā)送數(shù)據(jù)通信協(xié)議接收端

杜建鵬

(甘肅電器科學(xué)研究院,甘肅蘭州 730900)

隨著計算機技術(shù)和通信技術(shù)的發(fā)展,系統(tǒng)級的互聯(lián)已達到Gbps 的傳輸速率。并行傳輸技術(shù)可以提高芯片與芯片之間、背板與背板之間的數(shù)據(jù)吞吐量,但總線數(shù)呈的增多及傳輸速率的加快會使PCB 布線的難度提高,并且增加了信號的延時和偏移[1-2]。而串行傳輸技術(shù)充分利用傳輸媒體的信道容量,可減少所需的連接器引腳數(shù)目、降低芯片外圍引腳數(shù)、設(shè)備及電纜布線更為簡單、系統(tǒng)抗干擾能力更強[3],因此串行傳輸技術(shù)重新返回到高速傳輸領(lǐng)域并迅速取代了傳統(tǒng)的并行傳輸技術(shù)[4]。8b/10b編碼SerDes 是目前許多高速串行總線采用的編碼機制和結(jié)構(gòu),如PCI Express、光纖通道、TLK2711等。其中TLK2711 作為高速串行總線的物理層,被廣泛用于空間遙感以及衛(wèi)星圖像的數(shù)據(jù)傳輸系統(tǒng)中[5-7]。系統(tǒng)之間的數(shù)據(jù)傳輸必須制定相應(yīng)的協(xié)議。雖然符合規(guī)范的標(biāo)準(zhǔn)協(xié)議(如XILINX 公司為自己FPGA 內(nèi)嵌的Rocket IO 制定的AURORA 協(xié)議)傳輸速度和精度非常高,但是這些標(biāo)準(zhǔn)協(xié)議具有大量通信冗余數(shù)據(jù)和格式定義弊端,會導(dǎo)致通信延時和系統(tǒng)資源浪費。因此,為了提高系統(tǒng)的可靠性和節(jié)約系統(tǒng)資源,本文基于FPGA+TLK2711 平臺設(shè)計了一種輕量級的高速串行全雙工通信協(xié)議,該協(xié)議為點對點鏈路層串行協(xié)議,經(jīng)測試可實現(xiàn)1.6Gbps~2.7Gbps 的可靠串行數(shù)據(jù)傳輸。

1 TLK2711 芯片簡介

TLK2711 是千兆高速收發(fā)器,可用于高速點對點的雙向數(shù)據(jù)傳輸系統(tǒng)。TLK2711 在發(fā)送端將并行信號轉(zhuǎn)換為高速串行信號,在接收端高速串行信號被轉(zhuǎn)換為并行信號,也被稱為SerDes(SERializer/DESerializer)收發(fā)器,其工作原理如圖1 所示。在發(fā)送端,TLK2711 將輸入的16 位數(shù)據(jù)(TXD0~TXD15)分為兩個字節(jié),在TKLSB 和TKMSB 信號的配合下送入兩個8b/10b 編碼器進行編碼,產(chǎn)生的10 位數(shù)據(jù)經(jīng)多路復(fù)用器進入串行器,最后通過具有預(yù)加重功能的發(fā)送器以差分信號的方式輸出。在接收端,TLK2711 接收到串行差分信號,首先通過恢復(fù)時鐘對數(shù)據(jù)進行同步,其次通過解串器進行串并轉(zhuǎn)換,利用兩個獨立的逗點檢測(Comma Detect)和8b/10b 解碼器完成數(shù)據(jù)解碼和字對齊,最后輸出16 位并行數(shù)據(jù)(RXD0~RXD15)以及RKLSB 和RKMSB 信號。圖中LOOPEN為環(huán)回使能信號,使能后可以進行環(huán)回測試;PRBSEN 為偽隨機測試使能信號,可利用芯片中的偽隨機數(shù)發(fā)生器產(chǎn)生偽隨機信號,進行測試;PRE 為預(yù)加重使能信號。

圖1 TLK2711 原理框圖

2 高速串行數(shù)據(jù)傳輸接口設(shè)計

高速串行數(shù)據(jù)傳輸接口如圖2 所示,TLK2711與高速連接器構(gòu)成通信協(xié)議的物理層,實現(xiàn)收發(fā)數(shù)據(jù)的編解碼與串并轉(zhuǎn)換。FPGA 則實現(xiàn)數(shù)據(jù)鏈路層功能,完成通道的初始化、發(fā)送數(shù)據(jù)的幀封裝、接收數(shù)據(jù)的解封裝,同時為上層用戶提供簡單的通信接口。

圖2 高速串行數(shù)據(jù)傳輸接口

3 全雙工通信協(xié)議設(shè)計

3.1 高速串行通信協(xié)議模型

本文設(shè)計的是在FPGA 中實現(xiàn)的全雙工點對點鏈路層串行通信協(xié)議,不存在尋址交換和復(fù)雜的上層應(yīng)用,主要功能為鏈路初始化和同步、數(shù)據(jù)幀傳輸和鏈路管理。圖3 為高速串行通信協(xié)議的模型。模型包括TLK2711_logic_ctrl 模塊、TLK2711_tx_ctrl模塊、TLK2711_rx_ctrl 模塊和FIFO 數(shù)據(jù)緩存模塊。TLK2711_logic_ctrl 模塊主要為上層用戶提供環(huán)回測試、偽隨機測試及預(yù)加重功能接口,為了簡化應(yīng)用,可將這些信號設(shè)置為芯片正常工作時的狀態(tài)。數(shù)據(jù)發(fā)送功能主要由TLK2711_tx_ctrl 模塊和發(fā)送端FIFO 實現(xiàn),上層應(yīng)用將發(fā)送數(shù)據(jù)寫入FIFO,當(dāng)寫完一幀數(shù)據(jù)后,使能tx_start_en 信號,TLK2711_tx_ctrl模塊將FIFO 中的數(shù)據(jù)讀出組幀后發(fā)送出去,數(shù)據(jù)幀長由wrcnt[10:0]信號給定。數(shù)據(jù)接收功能主要由TLK2711_rx_ctrl 模塊實現(xiàn),當(dāng)接收到有效數(shù)據(jù),TLK2711_rx_ctrl 模塊對數(shù)據(jù)進行解幀,將解幀后的數(shù)據(jù)寫入接收端FIFO,供上層應(yīng)用讀取,每當(dāng)接收完一個完整的數(shù)據(jù)幀,TLK2711_rx_ctrl 模塊給出數(shù)據(jù)幀接收完畢信號(received_end 信號)通知上層應(yīng)用,并給出接收數(shù)據(jù)幀長。

圖3 高速串行通信協(xié)議模型

3.2 協(xié)議原語及狀態(tài)切換

3.2.1 協(xié)議原語

為了保證數(shù)據(jù)的正確傳輸,需要傳輸一些控制信息,這些定義的控制信息稱為協(xié)議原語。本協(xié)議采用8b/10b 中的K 字符和D 字符組合實現(xiàn)數(shù)據(jù)發(fā)送與接收的控制功能。SerDes 通過掃描搜尋cmoma 字符序列實現(xiàn)數(shù)據(jù)對齊功能。根據(jù)技術(shù)手冊,TLK2711僅識別包含字符特征序列b0011111 或b1100000的控制字符作為識別數(shù)據(jù)邊界的comma 碼。在8b/10b中僅有K28.1、K28.5 和K28.7 包含這些字符特征序列,因此定義D5.6/K28.5 為同步字符,D12.1/K28.5 為同 步應(yīng) 答 字 符,D10.2/K28.5 為 空 閑 字 符,K28.2/K27.7 為幀頭標(biāo)識,K29.7/K30.7 為幀尾標(biāo)識。

3.2.2 狀態(tài)切換

系統(tǒng)上電后需要對SerDes 進行初始化和同步來建立一個有效鏈路,這樣SerDes 才能進行正確的數(shù)據(jù)收發(fā)。鏈路同步由TLK2711_tx_ctrl 模塊和TLK2711_rx_ctrl 模塊共同完成,最終鏈路應(yīng)答標(biāo)志Spa_ok 和鏈路同步標(biāo)志Lane_ok 均為高電平,表示鏈路同步, 可以進行數(shù)據(jù)的收發(fā)。TLK2711_tx_ctrl 模塊和TLK2711_rx_ctrl 模塊功能均由狀態(tài)機實現(xiàn),具體的狀態(tài)切換如下:

(1)鏈路初始化狀態(tài)

系統(tǒng)上電、復(fù)位或數(shù)據(jù)在傳輸過程中發(fā)生鏈路中斷都會使鏈路重新初始化。首先發(fā)送端會不斷發(fā)送同步字符D5.6/K28.5,當(dāng)接收端連續(xù)收到32 個同步字符時,會置鏈路應(yīng)答標(biāo)志位Spa_OK為高。

(2)鏈路同步狀態(tài)

發(fā)送端再次發(fā)送80 個連續(xù)的同步應(yīng)答字符D12.1/K28.5 與176 個 連 續(xù) 的 同 步 字 符D5.6/K28.5,以保證接收端能夠有效的收到32 個同步字符D5.6/K28.5 或16 個同步應(yīng)答字符D12.1/K28.5。當(dāng) 接收端在應(yīng)答狀態(tài)下收到了連續(xù)的16個同步應(yīng)答字符D12.1/K28.5,則鏈路同步標(biāo)志Lane_OK 置高,鏈路進入同步狀態(tài)。

(3)收發(fā)數(shù)據(jù)狀態(tài)

在同步狀態(tài)下,發(fā)送數(shù)據(jù)首先發(fā)送幀頭K28.2/K27.7,接下來發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)結(jié)束后發(fā)送幀尾K29.7/K30.7,之后進入空閑(IDEL)狀態(tài)。

(4)空閑狀態(tài)

在空閑狀態(tài)下,發(fā)送端不斷發(fā)送空閑字符D10.2/K28.5,以保持鏈路的建立。 當(dāng)需要發(fā)送數(shù)據(jù)時,轉(zhuǎn)入收發(fā)數(shù)據(jù)狀態(tài)。

(5)鏈路檢測狀態(tài)

如果鏈路在一定時間內(nèi)沒有收到幀頭、幀尾、空閑字符、同步字符和同步應(yīng)答字符,說明收發(fā)鏈路必有一條沒有建立,重新進入鏈路初始化狀態(tài)。如果鏈路收到無效字符k0.0 和K31.7(即0x0000或0xFFFF),且RKLSB 與RKMSB 均為高,連續(xù)三次,鏈路即重新進入初始化狀態(tài)。

3.3 全雙工串行通信協(xié)議實現(xiàn)

協(xié)議的FPGA 邏輯實現(xiàn)采用VHDL 硬件描述語言,由tlk2711_logic_ctrl_ENT 模塊、tlk2711_tx_ctrl模塊、tlk2711_rx_ctrl 模塊和內(nèi)置發(fā)送端TLK2711_FIFO組成,如圖4 所示。

圖4 全雙工串行通信協(xié)議

tlk2711_logic_ctrl_ENT 模塊主要對TLK2711的控制信號進行了統(tǒng)一管理,包括LCKREFN 信號、TESTEN 信號、LOOPEN 信號、PRBSEN 信號和PRE 信號。該模塊接收系統(tǒng)復(fù)位信號(rst_n),并產(chǎn)生整個邏輯的復(fù)位信號(rst_n),同時將ENABLE置為低電平,延時100ms,使TLK2711 芯片復(fù)位。

tlk2711_tx_ctrl 模塊主要實現(xiàn)數(shù)據(jù)的發(fā)送和對TLK2711 芯片發(fā)送端口的控制。當(dāng)接收到tx_start_en信號的上升沿,只要發(fā)送FIFO 不為空,就讀取FIFO 中的數(shù)據(jù)組幀后進行發(fā)送,發(fā)送數(shù)據(jù)長度由tx_start_en 信號的上升沿時,wrcnt[10:0]的值決定。發(fā)送數(shù)據(jù)必須保證鏈路在初始化后同步的狀態(tài)下進行,數(shù)據(jù)幀格式如表1 所示??梢钥吹綆^和幀尾只占用整個數(shù)據(jù)幀中的4 個字節(jié),因此該協(xié)議屬于輕量級的串行數(shù)據(jù)傳輸協(xié)議。

表1 數(shù)據(jù)幀格式

tlk2711_rx_ctrl 模塊主要實現(xiàn)數(shù)據(jù)的接收和解幀,將解幀后的數(shù)據(jù)寫入外置接收FIFO。接收數(shù)據(jù)前需進行鏈路的初始化和同步。同時,接收端實現(xiàn)鏈路的檢測功能,當(dāng)判斷鏈路失效后,重新進入復(fù)位模式,進行鏈路的初始化和同步。Spa_ok和Lane_ok 為鏈路應(yīng)答標(biāo)志和鏈路同步標(biāo)志,傳輸至tlk2711_tx_ctrl 模塊,作為鏈路初始化和同步的標(biāo)志信號。

4 測試與驗證

4.1 仿真測試

利用ModelSim 工具對高速串行通信協(xié)議進行仿真測試,上電后發(fā)送端通過先后發(fā)送同步字符和同步應(yīng)答字符,接收端連續(xù)收到相應(yīng)字符后,最終置鏈路應(yīng)答標(biāo)志位Spa_OK 和鏈路同步標(biāo)志Lane_OK 為高電平,鏈路進入同步狀態(tài)。

在鏈路同步狀態(tài)下,當(dāng)接收到tx_start_en 信號,發(fā)送模塊將FIFO 中的數(shù)據(jù)讀出,并增加幀頭0x5CFB 和幀尾0xFCFE 后進行發(fā)送。

當(dāng)接收到幀頭0x5CFB,將后續(xù)接收數(shù)據(jù)寫入FIFO,直到接收到幀尾0xFCFE,發(fā)出接收完畢信號received_end 信號。接收數(shù)據(jù)期間計數(shù)接收到的數(shù)據(jù)個數(shù),接收數(shù)據(jù)完畢將數(shù)據(jù)長度通過data_length輸出。

4.2 實物測試

利用Microsemi 公司的SmartFusion2 SOC 平臺構(gòu)建多通道數(shù)據(jù)獲取系統(tǒng),采集到的數(shù)據(jù)通過由TLK2711 構(gòu)建的串行數(shù)據(jù)通道輸出。系統(tǒng)有兩路TLK2711 構(gòu)建的串行數(shù)據(jù)通道和一路千兆以太網(wǎng)接口,測試時將兩路串行數(shù)據(jù)通道的收發(fā)接口通過同軸線纜互聯(lián),即采集數(shù)據(jù)由一路串行數(shù)據(jù)通道發(fā)送,再由另一路串行數(shù)據(jù)通道接收,最后數(shù)據(jù)通過千兆以太網(wǎng)上傳至上位機。通過測試系統(tǒng)能夠?qū)崿F(xiàn)高速可靠數(shù)據(jù)全雙工傳輸,設(shè)置系統(tǒng)時鐘為80MHz~135MHz 的范圍,系統(tǒng)數(shù)據(jù)傳輸速率能夠達到1.6Gbps~2.7Gbps。在FPGA 中進行了誤碼計數(shù)設(shè)計,通過接收端進行監(jiān)控收到的數(shù)據(jù)是否為所發(fā)送的數(shù)據(jù)。測試時發(fā)送時鐘為135MHz,串行數(shù)據(jù)率為2.7Gbps,發(fā)送數(shù)據(jù)量為1000Gb,將數(shù)據(jù)分為10000 個數(shù)據(jù)幀,發(fā)送完畢沒有出現(xiàn)誤碼。所以誤碼率BER=出錯位數(shù)/總傳輸位數(shù)<1/1012=10-12。

5 結(jié)論

本文以SerDes 器件TLK2711 作為串行數(shù)據(jù)傳輸?shù)奈锢韺?,在FPGA 中設(shè)計串行數(shù)據(jù)通信協(xié)議的鏈路層,實現(xiàn)了一種輕量級的高速高可靠串行數(shù)據(jù)通信協(xié)議。進行了功能仿真和實物測試,經(jīng)測試該通信協(xié)議在TLK2711 硬件的基礎(chǔ)上能夠?qū)崿F(xiàn)最高2.7Gbps 的數(shù)據(jù)傳輸速率,誤碼率小于10-12。本設(shè)計將為高速數(shù)據(jù)系統(tǒng)的設(shè)計和驗證提供重要參考。

猜你喜歡
發(fā)送數(shù)據(jù)通信協(xié)議接收端
移動自組網(wǎng)中MAC層協(xié)議研究
基于擾動觀察法的光通信接收端優(yōu)化策略
頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
一種設(shè)置在密閉結(jié)構(gòu)中的無線電能傳輸系統(tǒng)
基于多接收線圈的無線電能傳輸系統(tǒng)優(yōu)化研究
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計
使用IPSec安全傳輸數(shù)據(jù)
基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計與研究