《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的誤碼測(cè)試儀研究與設(shè)計(jì)
基于FPGA的誤碼測(cè)試儀研究與設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2013年第24期
張 強(qiáng),,彭向偉
(重慶郵電大學(xué) 工業(yè)物聯(lián)網(wǎng)與網(wǎng)絡(luò)化控制教育部重點(diǎn)實(shí)驗(yàn)室,,重慶400065)
摘要: 誤碼率是反映數(shù)據(jù)傳輸設(shè)備及其信道工作質(zhì)量的一個(gè)重要指標(biāo),。作為通信系統(tǒng)的可靠性測(cè)量工具,,誤碼測(cè)試儀廣泛地應(yīng)用于通信設(shè)備的生產(chǎn)調(diào)試,、檢驗(yàn)以及日常維護(hù)等方面。在對(duì)傳統(tǒng)誤碼儀設(shè)計(jì)的研究和分析之后,,研究并設(shè)計(jì)了一種基于FPGA的誤碼測(cè)試儀,,詳細(xì)地分析和介紹了各個(gè)模塊的工作原理。
Abstract:
Key words :

摘  要: 誤碼率是反映數(shù)據(jù)傳輸設(shè)備及其信道工作質(zhì)量的一個(gè)重要指標(biāo),。作為通信系統(tǒng)的可靠性測(cè)量工具,,誤碼測(cè)試儀廣泛地應(yīng)用于通信設(shè)備的生產(chǎn)調(diào)試、檢驗(yàn)以及日常維護(hù)等方面,。在對(duì)傳統(tǒng)誤碼儀設(shè)計(jì)的研究和分析之后,研究并設(shè)計(jì)了一種基于FPGA的誤碼測(cè)試儀,,詳細(xì)地分析和介紹了各個(gè)模塊的工作原理,。
關(guān)鍵詞: 誤碼測(cè)試;FPGA,;m序列,;Verilog HDL

    隨著科技的發(fā)展,信息通信已成為人們?nèi)粘I钪斜夭豢缮俚囊徊糠?。?shù)字通信因其抗干擾能力強(qiáng),、通信質(zhì)量不受距離的影響、通信保密性好等特點(diǎn)而得到廣泛應(yīng)用和迅速發(fā)展[1],。與此同時(shí),,數(shù)字通信的傳輸可靠性就尤為重要了,而誤碼測(cè)試儀作為評(píng)估數(shù)據(jù)傳輸通道質(zhì)量的重要工具被廣泛地應(yīng)用,。
    誤碼率是反映數(shù)據(jù)傳輸設(shè)備及其通信信道工作質(zhì)量的一個(gè)重要指標(biāo),。誤碼測(cè)試儀就是通過(guò)檢測(cè)數(shù)據(jù)傳輸系統(tǒng)的誤碼指標(biāo),對(duì)其系統(tǒng)的數(shù)據(jù)傳輸質(zhì)量進(jìn)行評(píng)估的一種工具,。傳統(tǒng)的誤碼儀大多數(shù)都具備了諸如操作簡(jiǎn)單,、結(jié)果直觀精確、測(cè)試內(nèi)容豐富等優(yōu)點(diǎn),,但是同時(shí)也存在體積偏大,、價(jià)格昂貴、只適用于某些專用信道測(cè)試以及不易與某些接口適配等方面的問(wèn)題[2],。因此分析和對(duì)比了現(xiàn)有的誤碼儀,,研究和設(shè)計(jì)了一種基于FPGA的誤碼測(cè)試儀。
1 m序列
    偽隨機(jī)序列也叫做偽隨機(jī)碼,,是為模仿隨機(jī)序列的隨機(jī)特性而產(chǎn)生的一種碼流,。在一般的通信工程應(yīng)用中,,常采用二進(jìn)制偽隨機(jī)序列。偽隨機(jī)序列只有0和1兩種狀態(tài),,一般是通過(guò)反饋移位寄存器來(lái)產(chǎn)生的,,這種反饋移位寄存器可分為線性反饋和非線性反饋移位寄存器兩種。其中由線性反饋移位寄存器產(chǎn)生的周期最長(zhǎng)的二進(jìn)制數(shù)字序列叫做最大長(zhǎng)度線性反饋移位寄存器序列,,也稱m序列,。因?yàn)槠渥陨淼淖韵嚓P(guān)性和良好的統(tǒng)計(jì)特性,m序列廣泛地用于密碼學(xué)和誤碼測(cè)試等應(yīng)用,。
    如圖1所示,,m序列信號(hào)發(fā)生器是在n級(jí)線性移位寄存器的基礎(chǔ)上,加上反饋邏輯電路構(gòu)成的。正是由于m序列的這種結(jié)構(gòu)特點(diǎn),,所以非常適合于通過(guò)FPGA來(lái)產(chǎn)生,。一般地,m序列信號(hào)發(fā)生器有兩種結(jié)構(gòu):Fabonacci型和Galois型[3],。

    本文采用Fabonacci型移位寄存器來(lái)產(chǎn)生m序列,。這種結(jié)構(gòu)的特點(diǎn)是移位寄存器的反饋抽頭位置和本原多項(xiàng)式是一致的,序列與寄存器的初始狀態(tài)相對(duì)應(yīng),而碼流序列的產(chǎn)生速度主要受反饋網(wǎng)絡(luò)的時(shí)延影響。
    an是各個(gè)移位寄存器的狀態(tài),,cn是對(duì)應(yīng)的各移位寄存器的反饋系數(shù),,系數(shù)為1時(shí)表示參與反饋;為0時(shí)表示不參與反饋,。反饋函數(shù)為:an=c0a0+c1a1+…+cn-1an-1,。在每一個(gè)時(shí)鐘脈沖時(shí)刻,高位的移位寄存器將狀態(tài)值傳給下一個(gè)移位寄存器,。一旦級(jí)數(shù)和反饋系數(shù)確定了,,則反饋移位寄存器的輸出序列也就確定了。m序列的一個(gè)重要的性質(zhì)就是任何一個(gè)m序列的循環(huán)移位仍是一個(gè)m序列,,序列長(zhǎng)度為m=2n-1,。由于移位寄存器狀態(tài)全為0時(shí)系統(tǒng)會(huì)陷入死循環(huán),所以當(dāng)意外出現(xiàn)全為0的情況時(shí)使an-1等于1,,跳出全0狀態(tài)實(shí)現(xiàn)自啟動(dòng),。
    本文根據(jù)誤碼測(cè)試的需要,設(shè)計(jì)了9位,、15位和23位寄存器的3個(gè)不同長(zhǎng)度的m序列,。根據(jù)ITU—T的建議,它們的本原多項(xiàng)式分別為x9+x5+1,、x15+x14+1和x11+x9+1,。設(shè)計(jì)選用的FPGA芯片為 Cyclone IV代的 EP4CE15系列,該芯片有15 408個(gè)邏輯單元,,165個(gè)I/O口,,4個(gè)PLL,,端口支持頻率可達(dá)600 Mb/s以上[4]。發(fā)送端提供3種類型m序列,,支持在一定范圍內(nèi)的發(fā)送時(shí)鐘頻率的改變,。本設(shè)計(jì)主要是基于低速的數(shù)字通信設(shè)計(jì),發(fā)送頻率設(shè)置為2N,,N為0~20的整數(shù),,單位為MHz。
    在系統(tǒng)模塊中設(shè)計(jì)了一個(gè)按鍵模塊用于選擇發(fā)送序列的級(jí)數(shù)以及發(fā)送時(shí)鐘頻率,。由于在按動(dòng)按鍵時(shí)通常會(huì)出現(xiàn)抖動(dòng)和其他情況,,所以采用了防抖動(dòng)設(shè)計(jì),其基本原理就是運(yùn)用一個(gè)小的狀態(tài)機(jī),,記住先前的狀態(tài),,然后再對(duì)接下來(lái)的電平變化進(jìn)行判斷。
2 誤碼儀總體設(shè)計(jì)及其工作原理
    一般地,,誤碼儀主要由發(fā)送端和接收端兩部分組成,。發(fā)送端就是一個(gè)偽序列發(fā)生器,負(fù)責(zé)產(chǎn)生用來(lái)檢測(cè)被測(cè)信道的碼流,。該流碼必須具有隨機(jī)性和重復(fù)可生成性,通常采用m序列作為測(cè)試碼,。接收端則是誤碼儀最重要的一部分,,其主要作用為接收從被測(cè)信道傳來(lái)的測(cè)試序列,并從序列碼中提取時(shí)鐘信號(hào),,在此基礎(chǔ)上恢復(fù)出本地序列,,然后進(jìn)行序列碼流對(duì)比并統(tǒng)計(jì)出誤碼。如圖2所示,,發(fā)送端就是m序列產(chǎn)生模塊,,接收端包括位同步模塊、序列同步模塊和誤碼計(jì)數(shù)模塊等,。下面分別就各個(gè)模塊做較為詳細(xì)的介紹說(shuō)明,。

2.1 誤碼信號(hào)檢測(cè)原理
    誤碼率是指在測(cè)量的時(shí)間內(nèi)錯(cuò)誤的數(shù)字碼元數(shù)量與數(shù)字碼元總數(shù)之比。這個(gè)工作主要由兩個(gè)計(jì)數(shù)器完成,,一個(gè)計(jì)數(shù)器計(jì)數(shù)誤碼,,而另一個(gè)則計(jì)數(shù)總的碼數(shù)。
    誤碼測(cè)試儀由發(fā)送和接收兩部分組成,,發(fā)送模塊要求發(fā)出標(biāo)準(zhǔn)的數(shù)據(jù)信號(hào)作為測(cè)試信號(hào),,代替實(shí)際線路中的傳輸信號(hào)送到被測(cè)系統(tǒng)中。接收部分要求能產(chǎn)生與發(fā)送部分完全相同的數(shù)據(jù)信號(hào),,用以與接收到的信號(hào)逐位比較,。
    由圖3可知,由信道傳送到接收機(jī)的序列碼通過(guò)異或門(mén)與接收機(jī)產(chǎn)生的序列進(jìn)行比較,若相同則輸出為0,,若不同則輸出為1并計(jì)為1個(gè)誤碼, 最后再統(tǒng)計(jì)總的碼元數(shù)和誤碼數(shù),從而得到準(zhǔn)確的誤碼數(shù)或誤碼率,。

    總的來(lái)說(shuō), 誤碼儀檢測(cè)的工作流程可概括為以下幾個(gè)步驟:
    (1)以某種方式產(chǎn)生并發(fā)送碼組相同的碼型,以相同相位的本地碼組作為對(duì)比標(biāo)準(zhǔn),;
    (2)將本地恢復(fù)碼元與從信道接收到的碼組逐個(gè)進(jìn)行比較, 并輸出誤碼脈沖信號(hào);
    (3)對(duì)誤碼脈沖信號(hào)進(jìn)行統(tǒng)計(jì), 并給出相應(yīng)的誤碼率,。
    由于傳統(tǒng)的誤碼儀一般用于專用的通信信道測(cè)試,,其接口類型較為單一。為此本文設(shè)計(jì)了RS422,、E1,、E2接口,擴(kuò)展了誤碼測(cè)試的接口類型,。
2.2 位同步模塊
    位同步模塊的主要工作就是提取信道中碼流的時(shí)鐘,,它由一個(gè)跳變沿捕捉模塊、一個(gè)狀態(tài)寄存器和一個(gè)計(jì)數(shù)器組成,。如圖4所示,,其中data是輸入系統(tǒng)的串行信號(hào)(m序列),clk是頻率為串行信號(hào)碼元速率的2N倍的高頻時(shí)鐘信號(hào),,a是系統(tǒng)產(chǎn)生的與輸入串行信號(hào)碼元位同步的脈沖信號(hào),,即位同步脈沖。

    系統(tǒng)工作時(shí),當(dāng)輸入信號(hào)data發(fā)生變化時(shí),捕捉模塊就能及時(shí)抓捕到這次跳變,并產(chǎn)生一個(gè)脈沖信號(hào)c,,該信號(hào)可以將可控計(jì)數(shù)器清零,,同時(shí)將狀態(tài)寄存器的輸出b置為0,并送到計(jì)數(shù)器中,。計(jì)數(shù)器進(jìn)行模為2N的計(jì)數(shù),待計(jì)滿后就輸出脈沖信號(hào)a,,該信號(hào)一方面可作為整個(gè)系統(tǒng)輸出的位同步時(shí)鐘信號(hào),另一方面它也被接入了狀態(tài)寄存器,,控制狀態(tài)寄存器的輸出b在計(jì)數(shù)器完成N的記數(shù)后就變?yōu)?,;在沒(méi)有c脈沖信號(hào)時(shí)使b保持為1,使計(jì)數(shù)器的模值保持為2N,,直到輸入信號(hào)data產(chǎn)生新的跳變并產(chǎn)生新的c脈沖信號(hào),。
    由此可見(jiàn),在輸入信號(hào)為連1或連0的情況下,,只要系統(tǒng)使用的時(shí)鐘信號(hào)足夠精確,,就可以保證在一定時(shí)間里輸出滿足要求的位同步時(shí)鐘,而在輸入信號(hào)data發(fā)生跳變時(shí)系統(tǒng)又會(huì)捕捉該跳變沿并以此為基準(zhǔn)來(lái)輸出位同步時(shí)鐘。為了保證系統(tǒng)的精確性,,文本中采用2N等于10,。
2.3 序列同步模塊
    前面已經(jīng)指出m序列是周期序列,測(cè)試序列和檢驗(yàn)序列的比較應(yīng)以周期內(nèi)的同一位置作為起點(diǎn),。因此在序列比較前應(yīng)首先進(jìn)行序列同步,。常見(jiàn)的序列同步方法有滑動(dòng)相關(guān)捕捉法,、序列相關(guān)捕捉法、SAW器件捕捉法等,。但是這些方法都存在著結(jié)構(gòu)復(fù)雜,、同步時(shí)間較長(zhǎng)等缺陷,不適合用FPGA實(shí)現(xiàn),。
    序列同步模塊的一個(gè)重要作用就是根據(jù)位同步模塊得到同步時(shí)鐘并產(chǎn)生本地檢測(cè)碼元序列,,通常采用的是灌碼的方式。如圖5所示,,在初始狀態(tài)下開(kāi)關(guān)K置于B位置,,發(fā)送端送來(lái)的測(cè)試序列在完成位同步后按從高位到低位的順序依次送入移位寄存器,存滿后開(kāi)關(guān)K就置于A的位置,。移位寄存器和模二加法器在本地時(shí)鐘的驅(qū)動(dòng)下產(chǎn)生出檢驗(yàn)序列,。這里要強(qiáng)調(diào)的是,本地碼元的m序列發(fā)生器和誤碼儀發(fā)送端的m序列產(chǎn)生器結(jié)構(gòu)完全一致,。

    以9階的m序列為例,,由于m序列的下一存儲(chǔ)器狀態(tài)組合僅由當(dāng)前的狀態(tài)組合所決定,因此只要最初接收到的9個(gè)碼元是正確的,,則其隨后產(chǎn)生的所有碼元都是與測(cè)試序列相同和同步的,。在這之后,測(cè)試序列與檢驗(yàn)序列需要進(jìn)行一次相關(guān)比較,,假如在若干個(gè)(如10個(gè))碼元周期內(nèi)其相關(guān)值超過(guò)閾值,,則可認(rèn)為兩序列同步,否則需要重新進(jìn)行同步操作,。
    采用這一方法之后,序列同步的時(shí)間大大縮短,,有利于進(jìn)行碼流的快速測(cè)試,。
2.4 誤碼計(jì)數(shù)和顯示
    將恢復(fù)出來(lái)的本地檢測(cè)序列與被測(cè)信道傳輸來(lái)的測(cè)試序列相比較可以檢測(cè)出誤碼。兩個(gè)碼流通過(guò)一個(gè)異或門(mén)比較,,相同為0,,不同則為1,然后計(jì)數(shù)器統(tǒng)計(jì)1的個(gè)數(shù)得出總的誤碼數(shù),。
    誤碼測(cè)試儀定時(shí)每隔1 s進(jìn)行誤碼統(tǒng)計(jì),,并將結(jié)果通過(guò)點(diǎn)陣型液晶顯示器顯示,直觀地顯示實(shí)時(shí)誤碼情況,。為了便于簡(jiǎn)化硬件電路,,設(shè)計(jì)采用FPGA直接驅(qū)動(dòng)液晶顯示器。
    特別地,,由于程序設(shè)計(jì)中會(huì)用到除法運(yùn)算,,而除法運(yùn)算會(huì)消耗大量的FPGA邏輯單元,,因此本設(shè)計(jì)中采用獨(dú)特的算法將除法運(yùn)算轉(zhuǎn)換成位運(yùn)算,極大地減少了系統(tǒng)資源的占用,。
3 誤碼測(cè)試儀的IP內(nèi)核
    該誤碼測(cè)試儀基于FPGA設(shè)計(jì),,程序采用Verilog HDL編寫(xiě)。其建模的編程特點(diǎn)使得系統(tǒng)更直觀和便于實(shí)現(xiàn)[5],。圖6為誤碼測(cè)試儀的內(nèi)核模塊系統(tǒng)框架,。所有的程序編寫(xiě)都遵循自底而上的建模思想。

 

 

    圖6所示的IP核框架大致給出了本次系統(tǒng)設(shè)計(jì)的主要部分模塊,。在這里只給出了一部分的輸入和輸出信號(hào),。下面就一些信號(hào)做簡(jiǎn)單介紹說(shuō)明。Clkin 為外部時(shí)鐘輸入40 MHz,。DATAin為經(jīng)過(guò)被測(cè)信道的m序列,。Clka、Clkb,、Clkc分別為倍頻或分頻后的時(shí)鐘信號(hào),。Ctrl為L(zhǎng)CM控制信號(hào)。按鍵模塊控制發(fā)送序列的級(jí)數(shù)和發(fā)送時(shí)鐘頻率,,而LED信號(hào)主要控制LED燈顯示誤碼儀工作狀態(tài),。
    本文研究了一種低速數(shù)字通信系統(tǒng)的誤碼測(cè)試儀。該誤碼測(cè)試儀是基于FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)為核心設(shè)計(jì)而成,,適用于斷線誤碼檢測(cè),。該測(cè)試儀可以在發(fā)送端發(fā)送頻率不明的情況下進(jìn)行碼流的時(shí)鐘恢復(fù),這樣就使得其使用范圍更廣,。同時(shí)根據(jù)FPGA的特點(diǎn),,系統(tǒng)還設(shè)計(jì)有AS下載口和JTAG下載口以及留出了一些多的I/O口,這樣可以方便以后功能的增加和系統(tǒng)軟件的升級(jí),。程序結(jié)構(gòu)編寫(xiě)中,,采用了一些獨(dú)特的算法使得系統(tǒng)資源占用減少,同時(shí)增加了系統(tǒng)的智能性,。
    設(shè)計(jì)中軟件采用的是Verilog HDL編寫(xiě)程序,,軟件開(kāi)發(fā)環(huán)境使用的是Altera公司的EDA開(kāi)發(fā)工具quartusII 11.0。整個(gè)系統(tǒng)體積較小,,具有一定的智能性且價(jià)格便宜,,適用于一般的數(shù)字通信線路測(cè)試以及個(gè)人架設(shè)的通信信道。經(jīng)過(guò)測(cè)試,,系統(tǒng)的性能可以達(dá)到測(cè)試的基本要求,。
參考文獻(xiàn)
[1] 劉江.基于FPGA的誤碼率測(cè)試儀的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2005,2l(4):162-163.
[2] 王輝.基于DSP和FPGA的開(kāi)環(huán)多碼型誤碼測(cè)試儀的設(shè)計(jì)[J].測(cè)控技術(shù)與儀器儀表,,2010,,36(9):115-118.
[3] 鄒學(xué)玉,易國(guó)華.一類基于FPGA的m序列發(fā)生器設(shè)計(jì)[J]. 長(zhǎng)江大學(xué)學(xué)報(bào),,2006,,9(3):84-86.
[4] Altera Corp.Cyclone Device Handbook[DB/OL].[2013-07-15].http://www.a(chǎn)ltera.conl.2010.
[5] 王金明.VerilogHDL 程序設(shè)計(jì)教程[M].北京:人民郵電出版社,2004.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。