基于FPGA的數(shù)據(jù)高速串行通信實(shí)現(xiàn)
1 引言 在許多實(shí)際運(yùn)用的場(chǎng)合中,數(shù)字信號(hào)傳輸具有數(shù)據(jù)量大,傳輸速度高,采用串行傳輸?shù)忍攸c(diǎn)。這就要求數(shù)據(jù)收發(fā)雙方采用合理的編解碼方式及高速器件。數(shù)字信號(hào)傳輸一般分并行傳輸、串行傳輸兩種。并行傳輸具有數(shù)據(jù)源和數(shù)據(jù)目的地物理連接方便,誤碼率低,傳輸速率高。但是并行傳輸方式要求各條線路同步,因此需要傳輸定時(shí)和控制信號(hào),而其各路信號(hào)在經(jīng)過轉(zhuǎn)發(fā)與放大處理后,將引起不同的延遲與畸變,難以實(shí)現(xiàn)并行同步。若采用更復(fù)雜的技術(shù)、設(shè)備與線路,其成本會(huì)顯著上升。而高速遠(yuǎn)程數(shù)據(jù)傳輸一般采用串行同步傳輸。傳統(tǒng)建立準(zhǔn)確的時(shí)鐘信號(hào)的方法是采用鎖相環(huán)技術(shù)。但鎖相環(huán)有若干個(gè)明顯缺陷,一是其同步建立時(shí)間及調(diào)整精度即使采用變階的方法也很難兼顧;二是鎖相環(huán)需要一個(gè)高精度高頻率的本地時(shí)鐘。 本文所討論的兩種串行同步傳輸方法,無需高頻率時(shí)鐘信號(hào),就可完全數(shù)字化。采用Altera公司的ACEXlK系列器件完成電路設(shè)計(jì),且外圍電路簡(jiǎn)單,成本低,效果好。 2主要器件介紹 編碼和解碼采用ACEXlK系列器件EPlK100QC208-2。ACEXlK器件是Altera公司針對(duì)通信、音頻處理及類似場(chǎng)合應(yīng)用而設(shè)計(jì)的。該系列器件具有如下特性: 高性能。采用查找表(LUT)和嵌入式陣列塊(EAB)相結(jié)合的結(jié)構(gòu),適用于實(shí)現(xiàn)復(fù)雜邏輯功能和存儲(chǔ)器功能,例如通信中應(yīng)用的DSP、多通道數(shù)據(jù)處理、數(shù)據(jù)傳遞和微控制等; 高密度。典型門數(shù)為1萬到10萬門,有多達(dá)49 152位的RAM(每個(gè)EAB有4 096位RAM)。 系統(tǒng)性能。器件內(nèi)核采用2.5 V電壓,功耗低,其多電壓引腳驅(qū)動(dòng)2.5 V、3.3 V、5.0 V的器件,也可被這些電壓所驅(qū)動(dòng),雙向I/O引腳執(zhí)行速度可達(dá)250 MHz; 靈活的內(nèi)部互聯(lián)。具有快速連續(xù)式延時(shí)可預(yù)測(cè)的快速通道互連。 3實(shí)現(xiàn)方法 本文所述方法應(yīng)用于數(shù)字音頻數(shù)據(jù)實(shí)時(shí)傳輸。原始數(shù)字音頻每一幀視頻數(shù)據(jù)為并行8位,速率達(dá)2 Mb/s,串行傳輸速度為16 Mb/s。 3.1新的曼徹斯編碼方法 這種方法是在接收端利用狀態(tài)轉(zhuǎn)移圖的方法得到同步時(shí)鐘信號(hào)。具體方法如下: (1)幀同步信號(hào)的產(chǎn)生 發(fā)送方系統(tǒng)提供64 MHz時(shí)鐘,將其4分頻得到16 MHz時(shí)鐘作為系統(tǒng)時(shí)鐘,64 MHz時(shí)鐘僅用于最后的消除信號(hào)毛刺。幀同步共16位,其中前12位為"0",后3位為"1",最后1位為"0"。仿真時(shí)序如圖1所示。 (2)編碼方法 數(shù)據(jù)發(fā)送采用曼徹斯特編碼,編碼規(guī)則為:0→01(零相位的一個(gè)周期的方波);1→10(π相位的一個(gè)周期的方波)。 從以上規(guī)則可知輸出信號(hào)將在每一位碼元中間產(chǎn)生跳變,因此可采用具有游程短,位定時(shí)信息豐富的曼徹斯特編碼電路。編碼時(shí),當(dāng)輸入信號(hào)為"0"時(shí),輸出為時(shí)鐘的"非";當(dāng)輸入信號(hào)為"1"時(shí),輸出與時(shí)鐘一致。因此,可采用數(shù)據(jù)選擇時(shí)鐘,其電路如圖2所示。 (3)狀態(tài)轉(zhuǎn)移圖生成同步信號(hào) 接收方系統(tǒng)提供80 MHz時(shí)鐘,接收方和發(fā)送方的時(shí)鐘并非來自同一個(gè)時(shí)鐘源。將發(fā)送方的信號(hào)通過序列碼檢測(cè)器,發(fā)送方的幀同步信號(hào)有一個(gè)維持187.5 ns的脈沖(3個(gè)16 MHz時(shí)鐘),當(dāng)接收方檢測(cè)到"11111111111111"時(shí)(14個(gè)80 MHz時(shí)鐘,共175 ns),則認(rèn)為是有效信號(hào),然后向后級(jí)發(fā)出一個(gè)復(fù)位信號(hào),接收方的后繼模塊開始重新工作。由于發(fā)送方采用曼徹斯特編碼,數(shù)據(jù)不會(huì)出現(xiàn)連續(xù)的"1"或連續(xù)的"0",游程短,這種檢測(cè)幀同步信號(hào)的方法是有效的,不存在把所要傳輸?shù)臄?shù)據(jù)當(dāng)成幀同步的情況。當(dāng)該復(fù)位信號(hào)產(chǎn)生后,狀態(tài)機(jī)開始工作,用狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移產(chǎn)生同步信號(hào)。狀態(tài)轉(zhuǎn)移圖如圖4所示。 由于不會(huì)連續(xù)出現(xiàn)超過6個(gè)"1"或"0",累積誤差小,采用該方法,對(duì)接收方時(shí)鐘精度要求不高,仿真時(shí)將時(shí)鐘分別調(diào)為80.6 MHz和79.4 MHz,在這兩種情況下都能準(zhǔn)確得到同步時(shí)鐘并恢復(fù)原信號(hào)。與鎖相環(huán)相比,它所需的建立時(shí)間要短得多。 3.2另一種編碼方法 另一種比較特殊編碼方式含有豐富的時(shí)鐘信號(hào)。接收端將接收到的數(shù)據(jù)延時(shí)即可得到同步時(shí)鐘。其產(chǎn)生幀同步新的曼徹斯特編碼方法一致。 (1)編碼方法 發(fā)送方系統(tǒng)提供64 MHz時(shí)鐘,原始信號(hào)速率依舊為16 MHz,數(shù)據(jù)的編碼方式:0→1000,1→1110。 一個(gè)碼元對(duì)應(yīng)64 MHz的4位編碼。每一個(gè)碼元開始時(shí)第1位為"1",第2和第3位為輸入信號(hào)信息,第4位是"0",這樣便可保證在每一個(gè)碼元開始時(shí)產(chǎn)生上升沿。該上升沿便是一個(gè)非常優(yōu)良的同步時(shí)鐘,只要將上升沿對(duì)準(zhǔn)數(shù)據(jù)的有效位置(編碼的第2,3位),即可恢復(fù)原信號(hào)。 接收方檢測(cè)幀同步的方法與新的曼徹斯特編碼方法一樣。解碼過程是將輸入信號(hào)通過D觸發(fā)器延時(shí)得到同步時(shí)鐘,再由同步時(shí)鐘恢復(fù)原信號(hào)。D觸發(fā)器的時(shí)鐘采用接收方的系統(tǒng)時(shí)鐘80 MHz,則通過一個(gè)D觸發(fā)器的延時(shí)時(shí)間T的范圍0~12.5 ns,可通過兩D觸發(fā)器延時(shí)時(shí)間T的范圍12.5~25 ns,通過3個(gè)觸發(fā)器延時(shí)時(shí)間T的范圍25.0~37.5 ns,這樣就可以將上升沿延時(shí)到數(shù)據(jù)編碼的有效位置(編碼第2、3位的時(shí)間范圍是15.625~46.875 ns)。當(dāng)信號(hào)通過D觸發(fā)器,信號(hào)的寬度可能會(huì)有變化,這里把通過D觸發(fā)器的信號(hào)作為同步時(shí)鐘,只關(guān)心其上升沿位置,而其寬度的變化不會(huì)影響解碼過程。 圖7中datain為輸入的原信號(hào),dataout為編碼后的信號(hào),clkout為得到的同步時(shí)鐘,clk64m為發(fā)送方系統(tǒng)時(shí)鐘,clk80m為接收方系統(tǒng)時(shí)鐘。當(dāng)輸入第1個(gè)碼元,還未產(chǎn)生輸出信號(hào);輸入第2個(gè)碼元時(shí),第1個(gè)碼元"1"所對(duì)應(yīng)64 MHz編碼"1110"輸出;輸入第3個(gè)碼元時(shí),將第2個(gè)碼元"0"所對(duì)應(yīng)64 MHz編碼"1000"輸出,依次類推。在接收方,將dataout延時(shí)得到clkout,由圖可看出每次clkout的上升沿都對(duì)準(zhǔn)編碼的有效部分,這樣就可準(zhǔn)確的恢復(fù)原信號(hào)。 4結(jié)語 這兩種同步方法與鎖相環(huán)相比,優(yōu)點(diǎn)明顯,建立時(shí)間短,只需要一個(gè)幀同步用來檢測(cè)數(shù)據(jù)開始,然后就可在一個(gè)碼元時(shí)間內(nèi)恢復(fù)同步時(shí)鐘,而且對(duì)接收方時(shí)鐘的精度和頻率要求不是很高,整個(gè)編碼和解碼可以分別用一個(gè)FPGA完成設(shè)計(jì),電路設(shè)計(jì)全數(shù)字化,大大降低了PCB設(shè)計(jì)的成本和難度,且調(diào)試方便,縮短了項(xiàng)目周期。 | ||||||