徐磊 紀(jì)小明 趙永春
摘要:源同步串行總線是FPGA片間互連的常用方式。針對傳統(tǒng)的源同步串行總線傳輸方法對線路的利用率不高的情況,提出了一種高效的源同步總線收發(fā)編解碼方法,可以顯著提高源同步串行總線的傳輸效率。
關(guān)鍵詞:FPGA;源同步;編碼方法
0 引言
現(xiàn)場可編程門陣列(FPGA)是近年來快速發(fā)展的新型可編程邏輯器件,主要應(yīng)用于集成電路的定制電路開發(fā)驗(yàn)證[1]。在數(shù)字系統(tǒng)中,多片F(xiàn)PGA互連傳輸數(shù)據(jù)需要穩(wěn)定高效的接口,源同步串行總線是FPGA片間互連的常用方式。源同步系統(tǒng)中每兩個(gè)部件之間數(shù)據(jù)進(jìn)行單向或雙向傳遞,在和數(shù)據(jù)同向的傳遞方向上同時(shí)傳遞一個(gè)和數(shù)據(jù)保持特定相位關(guān)系的參考時(shí)鐘,在數(shù)據(jù)的源端,參考時(shí)鐘和數(shù)據(jù)保持確定的相位關(guān)系,而在數(shù)據(jù)的目的端,另外一個(gè)部件可根據(jù)參考時(shí)鐘的相位來準(zhǔn)確捕獲對應(yīng)的數(shù)據(jù)[2]。系統(tǒng)采用源同步機(jī)制,可以允許發(fā)送端在數(shù)據(jù)信號線或時(shí)鐘信號線上出現(xiàn)周期性或隨機(jī)的信號抖動,即使數(shù)據(jù)或時(shí)鐘因?yàn)槎秳映霈F(xiàn)偏差,只要確保兩者的時(shí)序關(guān)系保持一致就可以保證收端獲得正確的信號[3]。
FPGA片間有傳輸數(shù)據(jù)需求時(shí),傳統(tǒng)的源同步串行總線編碼方法,以n根線路傳輸m位寬數(shù)據(jù)為例,n根線路中固定一路傳輸隨路時(shí)鐘,再選一路傳輸高有效的同步脈沖,同步脈沖指示傳輸?shù)挠行?shù)據(jù)的起始,再將m位寬數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換并依次序平鋪在剩余的n-2根線路上,易知并串轉(zhuǎn)換后數(shù)據(jù)長度為ceil[m/(n-2)],其中ceil為向上取整。接收端進(jìn)行解碼時(shí),使用隨路時(shí)鐘采集同步脈沖的狀態(tài),當(dāng)檢測到高有效的同步脈沖時(shí),認(rèn)為接收到了有效數(shù)據(jù)的低位,開始對串行的有效數(shù)據(jù)進(jìn)行緩存,逐次接收數(shù)據(jù),在第ceil[m/(n-2)]次時(shí),串行有效數(shù)據(jù)全部接收完畢,此時(shí)再串并轉(zhuǎn)換就最終恢復(fù)出m位寬數(shù)據(jù)。傳統(tǒng)的源同步串行傳輸方法如圖1所示。
顯然,傳統(tǒng)的源同步串行總線傳輸方法,連續(xù)傳輸?shù)淖钚¢g隔為ceil[m/(n-2)],即數(shù)據(jù)傳輸延遲。
1 高效的源同步總線收發(fā)編解碼方法
傳統(tǒng)的源同步串行總線傳輸方法對線路的利用率并不高,尤其是同步脈沖這一路并未參與有效數(shù)據(jù)的傳輸,為了提高線路利用率,減小連續(xù)傳輸?shù)淖钚¢g隔(傳輸延遲),本文提出了一種高效的源同步總線收發(fā)編解碼方法。
以n根線路傳輸m位寬數(shù)據(jù)為例,n根線路中固定一路傳輸隨路時(shí)鐘,剩余的n-1路全部用來傳輸有效數(shù)據(jù),同時(shí)將有效數(shù)據(jù)分為數(shù)據(jù)幀和同步幀兩種類型。本文提出的高效源同步串行傳輸方法原理如圖2所示。
數(shù)據(jù)幀的設(shè)計(jì):m位寬數(shù)據(jù)在最低位和最高位之外分別增加一位“0”,形成m+2位寬數(shù)據(jù),將m+2位寬數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換并依次序平鋪在剩余的n-1根線路上,并串轉(zhuǎn)換后串行數(shù)據(jù)長度為ceil[(m+2)/(n-1)]。
同步幀的設(shè)計(jì):同步幀與數(shù)據(jù)幀的長度保持一致,也為ceil[(m+2)/(n-1)],同步幀的數(shù)據(jù)全部為“1”。
發(fā)送端在首次傳輸數(shù)據(jù)幀之前先發(fā)一次同步幀,之后每隔ceil[(m+2)/(n-1)]長度傳輸1次數(shù)據(jù)幀,在連續(xù)發(fā)k次數(shù)據(jù)幀后插入一次同步幀,后續(xù)按k次數(shù)據(jù)幀插入一次同步幀的規(guī)律持續(xù)發(fā)送。同步幀的插入確保接收端同步性的判斷和維持,插入間隔k可設(shè)置為100萬次。
接收端使用隨路時(shí)鐘采集其余n-1線路的狀態(tài),每次對連續(xù)的ceil[(m+2)/(n-1)]長度串行數(shù)據(jù)進(jìn)行判斷,如果其內(nèi)容全部為“1”則檢測到了同步幀。數(shù)據(jù)幀是由“0”作為起始和結(jié)尾的,故這樣檢測得到的同步幀是唯一的。檢測到同步幀后,對后續(xù)的連續(xù)k次ceil[(m+2)/(n-1)]長度串行數(shù)據(jù)做串并轉(zhuǎn)換,并舍棄起始和結(jié)尾的“0”就得到了最終的有效數(shù)據(jù)。k次之后驗(yàn)證接收到的是否是同步幀,若是則說明總線傳輸穩(wěn)定,接收的數(shù)據(jù)正確可靠,若否則說明總線出現(xiàn)傳輸錯(cuò)誤。驗(yàn)證了同步幀后,按k次數(shù)據(jù)幀接續(xù)1次同步幀的規(guī)律對總線進(jìn)行有效數(shù)據(jù)的提取和同步性驗(yàn)證。
由上述設(shè)計(jì)可知,本文提出的高效源同步總線收發(fā)編解碼方法,連續(xù)傳輸?shù)淖钚¢g隔和傳輸延遲為ceil[(m+2)/(n-1)],相比傳統(tǒng)方法有顯著提升,并引進(jìn)了錯(cuò)誤檢測機(jī)制。
2 效果對比
本文提出的編碼方法能顯著提高源同步總線的傳輸效率,具體以5線傳輸64 bit數(shù)據(jù)為例,傳統(tǒng)源同步串行傳輸方法如圖3所示。源同步時(shí)鐘用1根線,數(shù)據(jù)同步有效標(biāo)志用1根線,64 bit并行數(shù)據(jù)經(jīng)過并串轉(zhuǎn)換需要ceil[64/(5-2)]=22個(gè)時(shí)鐘節(jié)拍傳輸,因此連續(xù)傳輸間隔為22個(gè)時(shí)鐘周期。
5線傳64 bit數(shù)據(jù)的高效源同步串行傳輸方法如圖4所示。源同步時(shí)鐘用1根線,其余4根線全用于有效數(shù)據(jù)的傳輸。數(shù)據(jù)幀的長度為ceil[(64+2)/(5-1)]=17,同步幀的長度與數(shù)據(jù)幀相同。同步幀的插入間隔在源同步條件下可以比較大,比如10 000次數(shù)據(jù)幀后插入1次同步幀,因此同步幀的影響可以忽略不計(jì),從而線路資源全用于有效數(shù)據(jù)的傳輸。
設(shè)隨路時(shí)鐘為150 MHz,周期為6.66 ns,則2線傳輸28 bit數(shù)據(jù)包的傳輸效率對比如表1所示。新編碼方法在線路資源不變的情況下,傳輸效率提升了29%。
3 結(jié)語
源同步高速接口使用并行鏈路連接,以時(shí)鐘和多位數(shù)據(jù)相伴傳輸,解決了接收方的數(shù)據(jù)同步問題[4]。針對傳統(tǒng)的源同步串行總線編碼方法效率不高的情況,本文提出了一種更高效的編碼方式,該方式可以充分利用線路的帶寬資源,顯著提升數(shù)據(jù)傳輸速率。
[參考文獻(xiàn)]
[1] 卿啟新.基于FPGA的LVDS視頻信號轉(zhuǎn)換系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2011.
[2] 顧峰,呂余清.應(yīng)用源同步技術(shù)實(shí)現(xiàn)高速ADC與FPGA互連[J].電子技術(shù),2016(10):30-33.
[3] 張驊.源同步接口芯片的測試[J].集成電路應(yīng)用,2003(10):62-64.
[4] 許勇.一個(gè)源同步高速接口的設(shè)計(jì)[J].高性能計(jì)算技術(shù),2003(4):29-33.
收稿日期:2020-08-03
作者簡介:徐磊(1987—),男,陜西西安人,碩士研究生,工程師,研究方向:電子對抗技術(shù)。