吳廣智 邢麗娜 李健鐸 孟憲華
(1、貴州黔南科技學(xué)院,貴州 貴陽 550600 2、東軟醫(yī)療系統(tǒng)股份有限公司,遼寧 沈陽 110034)
隨著半導(dǎo)體技術(shù)的迅速發(fā)展,計算機(jī)的性能和應(yīng)用取得了長足的進(jìn)步,可是傳統(tǒng)并行總線技術(shù)PCⅠ卻跟不上處理器和存儲器的進(jìn)步而成為提高傳輸速率的瓶頸。PCⅠExpress是一種基于SerDes 的串行雙向通信技術(shù),數(shù)據(jù)傳輸速率為2.5G/通道(lane),可多達(dá)32 通道(lane),同時支持芯片與芯片和背板與背板之間的通信[1]。SerDes 發(fā)展到如今已被廣泛運用在FPGA 和ASⅠC 兩種芯片接口設(shè)計上,不同的是ASⅠC設(shè)計主要關(guān)注設(shè)計的功能性模塊,其接口部分一般采用芯片制造廠所提供的標(biāo)準(zhǔn)單元或者是根據(jù)設(shè)計公司已有的ⅠP 進(jìn)行改造,但是在FPGA 芯片設(shè)計中接口電路模塊起著至關(guān)重要的作用[3]。本方案針對東軟Westlake 超聲系統(tǒng)的板間數(shù)據(jù)傳輸,設(shè)計采用Xilinx select ⅠO 接口實現(xiàn)高速串行數(shù)據(jù)通信,通過邏輯控制動態(tài)調(diào)整數(shù)據(jù)在ⅠO 口的延時,系統(tǒng)啟動后發(fā)送端發(fā)送已知碼型,接收端首先通過邏輯控制動態(tài)調(diào)整數(shù)據(jù)線的相對延遲時間,獲得數(shù)據(jù)穩(wěn)定時的延時值,然后根據(jù)已知碼型將接收到的數(shù)據(jù)進(jìn)行移位與已知碼型對應(yīng),此即完成通信鏈路校驗,校驗完成后系統(tǒng)開啟正常工作狀態(tài),完成板間數(shù)據(jù)的通信傳輸。
一個典型SERDES 收發(fā)機(jī)由發(fā)送通道和接收通道組成[2]:編碼器、串行器、發(fā)送器以及時鐘產(chǎn)生電路組成發(fā)送通道;解碼器、解串器、接收器以及時鐘恢復(fù)電路組成接收通道。顧名思義,編碼器和解碼器完成編碼和解碼功能,其中8B/10B、64B/66B 和不規(guī)則編碼(scrambling)是最常用的編碼方案。串行器和解串器負(fù)責(zé)從并行到串行和從串行到并行的轉(zhuǎn)換。串行器需要時鐘產(chǎn)生電路,時鐘發(fā)生電路通常由鎖相環(huán)(PLL)來實現(xiàn)。解串器需要時鐘和數(shù)據(jù)恢復(fù)電路(CDR),時鐘恢復(fù)電路通常也由鎖相環(huán)來實現(xiàn),但有多種實現(xiàn)形式如相位插植、過剩抽樣等。發(fā)送器和接收器完成差分信號的發(fā)送和接收,其中LVDS 和CML 是最常用的兩種差分信號標(biāo)準(zhǔn)。另外還有一些輔助電路也是必不可少的,例如環(huán)路(loopback)測試、內(nèi)置誤碼率測試等等。
Westlake 超聲系統(tǒng)數(shù)據(jù)在硬件電路板SP 板、BF 板及mother 板之間傳輸,SP 板簡單概括為聲數(shù)據(jù)處理板,BF 板為聲波發(fā)射板,mother 板為SP 板與BF 板之間連接的橋梁。實現(xiàn)板間通信的前提是建立正確的通信鏈路,SP 板向BF 板發(fā)送數(shù)據(jù)的通路稱為BPBUS,BF 板向SP 板發(fā)送數(shù)據(jù)的通路稱為RFBUS,BPBUS 與RFBUS 獨立工作,互不影響,實現(xiàn)SP板與BF 板之間的通信,使系統(tǒng)能夠正常運作。
通信鏈路的硬件實現(xiàn)是基于FPGA 的Select ⅠO 接口,支持各種ⅠO 接口標(biāo)準(zhǔn),由于LVDS 接口標(biāo)準(zhǔn)具有高速傳輸且功耗低等優(yōu)點,因此本方案采用LVDS 電平標(biāo)準(zhǔn)。FPGA 高級Select ⅠO 邏輯資源包括ⅠSERDES 和OSERDES,它可以支持非常高的Ⅰ/O 數(shù)據(jù)速率,允許內(nèi)部邏輯以低于Ⅰ/O 的速率運行。Oserdes 輸出已知碼的串行數(shù)據(jù)到Ⅰserdes 進(jìn)行串并轉(zhuǎn)換,同時通過FPGA 邏輯代碼控制select ⅠO 的數(shù)據(jù)延時,使串行通信數(shù)據(jù)穩(wěn)定接收,最后通過bit shift 獲取正確數(shù)據(jù),建立完整的通信鏈路后,系統(tǒng)進(jìn)入超聲數(shù)據(jù)傳輸工作狀態(tài)。整體設(shè)計框架如圖1 所示。
圖1 整體設(shè)計框架圖
SerDes 時鐘設(shè)計是保證數(shù)據(jù)穩(wěn)定且正確傳輸?shù)幕A(chǔ),經(jīng)測試驗證時鐘必須采用同源時鐘才能使數(shù)據(jù)傳輸穩(wěn)定,在Westlake 系統(tǒng)中,SerDes 時鐘結(jié)構(gòu)如圖2 所示。
圖2 SerDes 時鐘結(jié)構(gòu)圖
每塊電路板的時鐘源相同,輸出的數(shù)據(jù)和時鐘的相位關(guān)系固定,在接收端數(shù)據(jù)和時鐘之間有相位延遲,可以通過數(shù)據(jù)移位獲得正確的數(shù)據(jù)。
本設(shè)計根據(jù)系統(tǒng)時鐘選擇串并轉(zhuǎn)換的時鐘,系統(tǒng)數(shù)據(jù)時鐘為120M,為使傳輸數(shù)據(jù)穩(wěn)定系統(tǒng)程序中降低數(shù)據(jù)速率為60M,此時對應(yīng)串行數(shù)據(jù)的速率為300M,經(jīng)測試驗證數(shù)據(jù)能夠穩(wěn)定傳輸,但該速率并不是本方案最大速率,測試驗證當(dāng)數(shù)據(jù)為120M時,即串行速率達(dá)到600M依然能夠穩(wěn)定傳輸。
在Xilinx 7 系列FPGA 中Ⅰserdes 和Oserdes 支持非常高的ⅠO 數(shù)據(jù)速率,對于Ⅰserdes 需要根據(jù)bitslip 重新對齊串行數(shù)據(jù)以獲得正確的字節(jié)數(shù)據(jù)。圖3 為Oserdes 并轉(zhuǎn)串輸出到Ⅰserdes 串轉(zhuǎn)并輸入的字節(jié)序變化。
圖3 字節(jié)序變化示意圖
SerDes 最大支持串并轉(zhuǎn)換比為1:14,表1 所示SerDes可以實現(xiàn)的串并轉(zhuǎn)換的并行數(shù)據(jù)的位寬。
表1
其中10 與14 位位寬需要兩個Ⅰserdes 級聯(lián)或兩個Oserdes 級聯(lián)獲得。如圖4 所示。
圖4 Ⅰserdes 級聯(lián)圖
級聯(lián)時,當(dāng)需要獲取10 位位寬時,使用下面一個Ⅰserdes2 的Q3 與Q4 作為data internal[8:9],當(dāng)需要獲取14位位寬時,使用下面一個Ⅰserdes2 的Q3~Q8 作為data internal[8:13]。
系統(tǒng)中需要通過serdes 傳輸?shù)臄?shù)據(jù)的位寬為18bit,不能通過一個serdes 進(jìn)行轉(zhuǎn)換,根據(jù)serdes 最大串并轉(zhuǎn)換比1:14,本方案中將系統(tǒng)數(shù)據(jù)拼接為20bit,然后分成兩組10bit傳輸,因此本方案中串并轉(zhuǎn)換比選擇1:10。
Serdes 傳輸方式分為SDR 和DDR 兩種。以serdes 串并轉(zhuǎn)換比1:4 來描述兩種傳輸方式如圖5 和圖6。
圖5 SerDes SDR 圖
圖6 SerDes DDR 圖
(1)SerDes SDR 1:4
(2)SerDes DDR 1:4
Ser_clk 的頻率即串行接口的傳輸速度,本方案中采用的是DDR 1:10 模式,并行數(shù)據(jù)與串行數(shù)據(jù)的時鐘關(guān)系比即為1:5。
板間通信數(shù)據(jù)總線拆分為BPBUS 與RFBUS,信號連接結(jié)構(gòu)圖如圖7 所示。
圖7 信號連接結(jié)構(gòu)圖
本設(shè)計中BPBUS 與RFBUS 都是4 路獨立的通路,互不干擾互不影響,每一路都有單獨的ⅠDELAY 模塊,單獨的delay 值,設(shè)計中只有接收端每一路都穩(wěn)定才輸出rdy 信號,代表4 路通信建立成功。
因此設(shè)計中SerDes 通信首先需要建立通信鏈路,使接收數(shù)據(jù)穩(wěn)定,具體實現(xiàn)思路是通過發(fā)送固定碼10’h123,由于接收串行數(shù)據(jù)與源同步時鐘具有相位差,通過邏輯代碼控制delay 值,使數(shù)據(jù)與時鐘相位一致,確定數(shù)據(jù)idelay 延時值后,數(shù)據(jù)能夠穩(wěn)定傳輸,板間通信鏈路成功建立,輸出通信鏈路成功的標(biāo)志信號rdy,準(zhǔn)備接收系統(tǒng)數(shù)據(jù)。
根據(jù)系統(tǒng)需要,發(fā)射數(shù)據(jù)分4 路串行數(shù)據(jù)傳輸,采用DDR模式,串并轉(zhuǎn)換比為1:10,對于Ⅰserdes 而言,串行輸入可以直接來自ⅠOB 也可以來自ⅠDELAY2單元(串行信號經(jīng)過ⅠDELAY2后進(jìn)行了延時),這就需要通過ⅠODELAY value 來設(shè)置。本方案數(shù)據(jù)經(jīng)過ⅠDELAY2 后輸出到Ⅰserdes。通過邏輯控制ⅠDELAY2的延時值,保證數(shù)據(jù)能夠穩(wěn)定傳輸,設(shè)計結(jié)構(gòu)如圖8 所示。
圖8 FPGA 邏輯控制流程圖
兩塊電路板SerDes 結(jié)構(gòu)一樣,可以在程序中復(fù)用,節(jié)省開發(fā)時間,提高工作效率。SerDes module 中串并轉(zhuǎn)換采用Xilinx 庫中的ⅠPcore 設(shè)計,重點在于如何確定idelay module的delay 值,使輸出數(shù)據(jù)穩(wěn)定,F(xiàn)PGA 邏輯控制流程如圖9 所示。
圖9 FPGA 邏輯控制流程圖
系統(tǒng)板間通信SerDes 鏈路建立,且保證了數(shù)據(jù)傳輸?shù)恼_性與穩(wěn)定性,能夠應(yīng)用于Westlake 項目中,完成超聲數(shù)據(jù)的通信傳輸。