吳曉晶 成衛(wèi)忠
基于FPGA的誤碼檢測(cè)儀設(shè)計(jì)與實(shí)現(xiàn)
吳曉晶 成衛(wèi)忠
本文設(shè)計(jì)了一種利用FPGA實(shí)現(xiàn)誤碼檢測(cè)的方案。文章首先從誤碼儀的基本原理入手,介紹了其各個(gè)功能子模塊的工作原理及方案,并著重分析了誤碼檢測(cè)儀的一些關(guān)鍵模塊的實(shí)現(xiàn)方法。最后利用VHDL語(yǔ)言進(jìn)行編程。系統(tǒng)經(jīng)編譯、綜合后下載到FPGA中進(jìn)行了實(shí)現(xiàn)。
在通信系統(tǒng)中,收發(fā)機(jī)故障、信號(hào)傳播衰落、碼間干擾、鄰近波道干擾等原因都會(huì)使得數(shù)字通信中的接收端不可避免的出現(xiàn)誤碼,造成系統(tǒng)性能惡化甚至通信中斷,其結(jié)果都是以誤碼的形式表現(xiàn)出來(lái),因此常常需要應(yīng)用誤碼檢測(cè)儀對(duì)其誤碼性能進(jìn)行測(cè)量。由于數(shù)字通信系統(tǒng)通信速率通常較高,使得誤碼檢測(cè)電路的實(shí)現(xiàn)具有一定的難度。且如果采用分離元件進(jìn)行設(shè)計(jì),通常需要數(shù)十種器件,且在高速率時(shí)由于各器件間的延時(shí)很難控制和處理,導(dǎo)致電路的調(diào)試難度較大且其檢測(cè)性能難于保障?;诖?,本文應(yīng)用硬件描述語(yǔ)言實(shí)現(xiàn)了一種基于FPGA的誤碼率檢測(cè)系統(tǒng)。
本文的誤碼檢測(cè)儀采用逐位檢測(cè)法進(jìn)行設(shè)計(jì),其基本原理如圖1所示。
逐位比較型誤碼檢測(cè)的基本原理是通過(guò)發(fā)送端和接收端兩個(gè)類(lèi)型相同的序列經(jīng)過(guò)同步之后對(duì)碼元進(jìn)行逐個(gè)比較。一旦出現(xiàn)誤碼,原本一致的碼元就會(huì)出現(xiàn)異同,利用這一特點(diǎn),通過(guò)位同步時(shí)鐘的控制利用異或門(mén)對(duì)碼元進(jìn)行逐個(gè)比較,將比較的結(jié)果通過(guò)計(jì)數(shù)器送到顯示電路進(jìn)行顯示。
本地偽隨機(jī)序列與偽隨機(jī)碼序列產(chǎn)生器的發(fā)送序列雖然是完全一樣的碼型,但發(fā)送序列通過(guò)信道后要產(chǎn)生延時(shí),與本地序列比較相位已經(jīng)不能完全對(duì)齊,因此必須在接收端進(jìn)行同步。本地偽隨機(jī)序列移位是在時(shí)鐘的控制下進(jìn)行的,實(shí)現(xiàn)兩序列的正確比較必須是本地偽碼序列和接收的偽碼序列同步,因此,本地端和發(fā)送端要求有同步的時(shí)鐘信號(hào)。在設(shè)計(jì)過(guò)程中,同步捕獲功能由同步與保護(hù)控制電路完成,當(dāng)序列對(duì)應(yīng)位狀態(tài)不一致時(shí),同步與保護(hù)控制電路輸出一個(gè)控制信號(hào),時(shí)鐘??垭娐房鄢粢粋€(gè)時(shí)鐘脈沖,同時(shí),偽隨機(jī)序列碼發(fā)生器被觸發(fā),這樣就等同于本地偽隨機(jī)碼序列等待一個(gè)時(shí)鐘周期后,與接收碼序列進(jìn)行比較。若連續(xù)發(fā)現(xiàn)本地碼序列和接收碼序列狀態(tài)不一致,則通過(guò)同步與保護(hù)控制電路和??蹠r(shí)鐘電路,使本地偽隨機(jī)碼序列繼續(xù)處于等待狀態(tài),直至本地序列和接收序列的狀態(tài)同步為止。同步與保護(hù)電路的功能一方面是起同步控制作用,另一方面是在系統(tǒng)狀態(tài)同步后,一旦出現(xiàn)誤碼或短時(shí)的不同步,也不立即進(jìn)行同步捕獲,而是設(shè)置了一定的失鎖保護(hù)時(shí)間,以保證系統(tǒng)同步的穩(wěn)定性。
圖1 逐位比較型誤碼檢測(cè)器的原理圖
計(jì)數(shù)器模塊是用在輸入一萬(wàn)個(gè)偽隨機(jī)碼的情況下,統(tǒng)計(jì)誤碼輸出的個(gè)數(shù),這樣輸出的個(gè)數(shù)也就是輸出誤碼率,省去了除法器模塊,節(jié)約了FPGA芯片的資源,提高了利用率,并將最后結(jié)果通過(guò)七段數(shù)碼管進(jìn)行顯示。
偽隨機(jī)序列產(chǎn)生器
偽隨機(jī)碼,也稱(chēng)為偽噪聲(Pseudorandom Noise,PN)碼。這種碼序列最關(guān)鍵的特征是具有近似于隨機(jī)信號(hào)的性能。由于噪聲具有完全的隨機(jī)特性,也可以說(shuō)這種碼序列具有近似于噪聲的性能。然而,真正的噪聲和隨機(jī)信號(hào)是不可能重復(fù)再現(xiàn)的,那么,可操作的方法就是利用一種周期性的脈沖信號(hào)來(lái)近似隨機(jī)噪聲的性能,故稱(chēng)該周期性的脈沖信號(hào)為偽隨機(jī)碼或PN碼。
本文中偽隨機(jī)碼的產(chǎn)生利用多級(jí)移位寄存器經(jīng)線性反饋產(chǎn)生周期性的m序列的方式實(shí)現(xiàn)。為減輕系統(tǒng)復(fù)雜度,實(shí)現(xiàn)過(guò)程中本文選擇移位寄存器級(jí)數(shù)為五級(jí)。五級(jí)移位寄存器可產(chǎn)生序列長(zhǎng)度為31的m序列,經(jīng)計(jì)算其反饋系數(shù)可為45、67、75,對(duì)應(yīng)的二進(jìn)制為100101、110111、111101,圖2為一種簡(jiǎn)單的五級(jí)移位寄存器構(gòu)成的m序列發(fā)生器。設(shè)計(jì)過(guò)程中,本文采用反饋系數(shù)為45。
5級(jí)移位寄存器產(chǎn)生的31位的m序列之一為0000101011101100011111001101,其仿真波形圖3所示。
狀態(tài)同步與誤碼計(jì)數(shù)的模塊
狀態(tài)同步與誤碼計(jì)數(shù)模塊主要包含:移位與串/并變換模塊,并行輸入與狀態(tài)控制模塊,狀態(tài)并行比較模塊,連1狀態(tài)計(jì)數(shù)模塊,逐位比較檢測(cè)模塊,誤碼統(tǒng)計(jì)與門(mén)限檢測(cè)模塊,時(shí)鐘??勰K模塊等。其結(jié)構(gòu)框圖如圖4所示。
在實(shí)際工作中,不僅要求接收端的m序列和發(fā)送端的m序列類(lèi)型相同,同時(shí)兩序列的狀態(tài)也必須同步,若狀態(tài)不同步,則無(wú)法進(jìn)行檢測(cè)。由于m序列有多個(gè)不同狀態(tài),狀態(tài)同步的方法為設(shè)定同步楨為子序列,進(jìn)行逐楨比較,確認(rèn)同步后發(fā)出同步信號(hào),經(jīng)過(guò)判決電路進(jìn)行比較判決。狀態(tài)同步控制則采用時(shí)鐘停扣的方法,即發(fā)現(xiàn)狀態(tài)不同的時(shí)序時(shí),控制本地的m序列驅(qū)動(dòng)時(shí)鐘停止。通過(guò)這樣的方式,發(fā)送的m序列就會(huì)向前移動(dòng)一個(gè)時(shí)鐘周期,之后再進(jìn)行下一輪比較。
圖2 5級(jí)寄存器構(gòu)成
圖3 m序列輸出仿真波形
圖4 誤碼同步檢測(cè)模型
誤碼率顯示模塊
誤碼率顯示模塊結(jié)構(gòu)如圖5所示。顯示模塊的功能是輸出統(tǒng)計(jì)的誤碼率,精度范圍為“10-1”到“10-4”,當(dāng)誤碼率小于“10-4”時(shí),認(rèn)為誤碼率已經(jīng)很小,可忽略,此時(shí)誤碼率顯示模塊輸出為0。整體流程如下,誤碼數(shù)以串行的方式輸入(誤碼輸出端統(tǒng)計(jì)在一萬(wàn)個(gè)輸入脈沖中有誤碼的個(gè)數(shù)的,誤碼門(mén)限檢測(cè)模塊設(shè)置的門(mén)限為30%,因此誤碼數(shù)輸出最大值為3000,即范圍為0~3000,可用12位二進(jìn)制碼表示),經(jīng)“QUANBING”串并轉(zhuǎn)換模塊變成12位的二進(jìn)制并行碼,12位二進(jìn)制碼再經(jīng)“12bcd”二—十進(jìn)制轉(zhuǎn)換電路轉(zhuǎn)換成四位十進(jìn)制并行碼,四位十進(jìn)制并行碼經(jīng)“BINGQUAN”并串轉(zhuǎn)換器轉(zhuǎn)換為四位十進(jìn)制串行碼,四位十進(jìn)制串行碼接入到“SXQG”顯示數(shù)組模塊,把四位十進(jìn)制數(shù)變成科學(xué)計(jì)數(shù)法的形式科學(xué)計(jì)數(shù)輸出,科學(xué)計(jì)數(shù)輸出再經(jīng)“SXY、JISHUYIQIANG、XJSH、QUANBING4”組成的掃描式顯示輸出模塊把科學(xué)計(jì)數(shù)輸出到硬件電路即七段數(shù)碼管顯示電路上。
測(cè)試及驗(yàn)證
在測(cè)試及驗(yàn)證過(guò)程中,本文將編寫(xiě)的VHDL程序經(jīng)過(guò)編譯、綜合后下載到FPGA芯片中。實(shí)驗(yàn)中檢測(cè)端人為插入具有誤碼的序列,以驗(yàn)證系統(tǒng)的檢測(cè)功能。圖6為檢測(cè)電路發(fā)送端發(fā)送帶有插入誤碼的波形,插入規(guī)則為每5個(gè)碼字中插入一個(gè)誤碼,其波形如圖6所示。
圖中第一行的波形為接收碼,二進(jìn)制表示為10011 00010 01110 00101,第二行波形為本地碼,二進(jìn)制表示為10010 00011 01111 00100,可觀察到接收碼與本地碼每隔5個(gè)脈沖就有一個(gè)不相同,也就是說(shuō)每輸入5個(gè)信號(hào)脈沖就會(huì)輸出一個(gè)誤碼脈沖。
圖7為計(jì)數(shù)器計(jì)數(shù)輸出,用二進(jìn)制表示為00001 00001 00001 00001。
圖5 誤碼率顯示模塊
圖6 有誤碼插時(shí)接收碼與本地碼在示波器上的波形
圖7 計(jì)數(shù)器計(jì)數(shù)輸出
本文采用逐位比較的方法,通過(guò)偽隨機(jī)碼、狀態(tài)同步、誤碼比較及計(jì)數(shù)統(tǒng)計(jì)實(shí)現(xiàn)了一種基于FPGA誤碼檢測(cè)儀。該方法大大地降低了誤碼儀設(shè)計(jì)的復(fù)雜度, 提高了系統(tǒng)的穩(wěn)定性,且結(jié)構(gòu)簡(jiǎn)單易于實(shí)現(xiàn),具有一定的工程應(yīng)用價(jià)值。
10.3969/j.issn.1001-8972.2015.15.019