摘 要: 本文提出了一種基于FPGA的誤碼測試方案,并在FPGA上實現(xiàn)了其功能。該方案不僅納入了“同步保護(hù)”的思想,同時對誤碼率量級的判斷也提出了一種簡化而又可行的方法。
在數(shù)字通信系統(tǒng)中,為了檢測系統(tǒng)的性能,通常使用誤碼分析儀對其誤碼性能進(jìn)行測量。誤碼分析儀給工程實際應(yīng)用帶來了極大的便利,比如它有豐富的測試接口和測試內(nèi)容,并能將結(jié)果直觀、準(zhǔn)確的顯示出來。但是它的價格昂貴,并且通常需要另加外部輔助長線驅(qū)動電路才能與某些系統(tǒng)接口適配。這些都嚴(yán)重的制約了通用誤碼儀在實際中的應(yīng)用。
基于工程的需要和實際應(yīng)用中的困難性,本文提出一個基于FPGA的多功能誤碼測試方案。芯片采用Altera公司的ACEX1K家族的EP1K50。
誤碼測試
圖1就是系統(tǒng)框圖。
該誤碼儀由發(fā)送端、接收端,以及接口模塊等部分組成。發(fā)送端產(chǎn)生測試的比特流,作為通信系統(tǒng)的信源數(shù)據(jù)通過接口模塊發(fā)送出去,另外它還有誤碼插入功能;接收端模塊從數(shù)據(jù)接口中接收通信系統(tǒng)輸出的比特流,并將它與本地產(chǎn)生的,與發(fā)端形式相同的比特流進(jìn)行比較,進(jìn)行誤碼統(tǒng)計,從而完成誤碼測試功能。
發(fā)送端
在發(fā)送端要產(chǎn)生替代通信信源的碼序列,那么究竟應(yīng)該選擇什么樣的碼作為測試碼呢?這類碼序列的最重要的特征是具有近似于隨機(jī)信號的性能。也可以說具有噪聲近似的性能。但是,真正的隨機(jī)信號和噪聲是不能重復(fù)再現(xiàn)和產(chǎn)生的。所以只能產(chǎn)生一種周期性的脈沖信號來近似隨機(jī)噪聲的性能,這稱之為偽隨機(jī)序列或PN碼。本方案中就采用m序列作為測試碼,雖然它是周期信號,但它具有類似于隨機(jī)信號較好的自相關(guān)特性。
發(fā)送端另外一個重要的功能是實現(xiàn)誤碼插入。也就是人為的在發(fā)送序列中插入已知插入頻率的誤碼信號,然后在接收端檢測這些誤碼,最后可以將檢測的結(jié)果與發(fā)送端已知的插入頻率進(jìn)行比較,以判斷通信系統(tǒng)的誤碼性能。這也是檢測通信系統(tǒng)性能的重要方法之一。在此可以通過一個受時鐘控制的反向器實現(xiàn)這一功能。將傳輸?shù)哪骋粋€碼通過反向器,也就是強(qiáng)制它變?yōu)橐粋€比特的誤碼,改變反向器的時鐘控制信號就可以實現(xiàn)對誤碼插入率的控制。
接收端
接收端實際上可以分成三個功能子模塊:本地m序列發(fā)生子模塊,同步子模塊,誤碼率計算子模塊。
本地m序列發(fā)生子模塊的結(jié)構(gòu)與發(fā)送端相似,只是將接收到的連續(xù)r位碼長的序列(其中r為發(fā)送端m序列發(fā)生器的級數(shù))置入本地m序列寄存器中,作為其初始狀態(tài),并且收發(fā)雙方已同步于這個狀態(tài),由前面對m序列的討論知道,如果兩個具有相同邏輯結(jié)構(gòu)的m序列發(fā)生器在某一時刻寄存器狀態(tài)相同,則由這兩個m序列發(fā)生器所產(chǎn)生的數(shù)字?jǐn)?shù)據(jù)流保持同步。這樣在本地就可以產(chǎn)生一個與發(fā)送端結(jié)構(gòu)相同且比特對齊的m序列了。
同步判斷是進(jìn)行誤碼統(tǒng)計的先決條件,只有對接收到的碼序列與本地碼序列不斷地進(jìn)行同步判斷,確定收、發(fā)端處于同步狀態(tài),那么誤碼統(tǒng)計才有意義。在通信系統(tǒng)中同步的方法有很多種,但由于對于誤碼測試儀,發(fā)送端并不是真實的隨機(jī)信息,在接收端只要確定了m序列的級數(shù)和某一時刻的寄存器狀態(tài),就能在后續(xù)的時間里產(chǎn)生出與發(fā)送端同步的m序列。所以通信系統(tǒng)中通常采用的如滑動相關(guān)法,匹配濾波法,插入導(dǎo)頻法等方法在這里并沒有用。
很容易想到,如果接收端截取的N位碼序列中包含有誤碼,則由此產(chǎn)生的本地序列與發(fā)端是不同的,那么此后進(jìn)行的誤碼統(tǒng)計就是毫無意義的,因此對誤碼測試儀收發(fā)雙方進(jìn)行嚴(yán)格同步的意義是為了避免由于將接收到的含有誤碼的狀態(tài)作為本地初始狀態(tài)而造成的“假同步”。同步判別的狀態(tài)轉(zhuǎn)移如圖2所示。
實現(xiàn)了上述功能的同步模塊在實際應(yīng)用中已經(jīng)能夠保證收發(fā)雙方的同步問題了,但是考慮到實際系統(tǒng)的處理能力及處理性能,還有必要對他做進(jìn)一步的優(yōu)化。觀察上述系統(tǒng)不難發(fā)現(xiàn),同步模塊一旦探測到接收到的誤碼個數(shù)超過了預(yù)設(shè)的判決門限就認(rèn)為收發(fā)雙方不同步,而重新進(jìn)行同步判定,這種處理方式不僅降低了誤碼儀對突�
錯誤的處理能力,更嚴(yán)重的是會導(dǎo)致接收端進(jìn)行反復(fù)同步,從而大大降低了處理的效率。而實際上這種由突發(fā)錯誤造成的“反復(fù)同步”是沒有必要的。所以在實際的設(shè)計中我們又納入了“同步保護(hù)”機(jī)制。有同步保護(hù)的狀態(tài)轉(zhuǎn)移如圖3所示。
由圖3可以看到,有同步保護(hù)的同步判別狀態(tài)轉(zhuǎn)移圖只是在原有的四個狀態(tài)的基礎(chǔ)上增加了一個失同步檢查態(tài),增加這個狀態(tài)的目的是為了在同步計數(shù)的過程中,如果有短時的大量突發(fā)誤碼,并不立即指示時同步信號,而是進(jìn)行失同步檢查,如果在后續(xù)的連續(xù)幾個檢測周期內(nèi)都有大量的誤碼,那么可以判斷收發(fā)端已經(jīng)失同步了,立即給出失同步報警信號。此時有必要對本地m序列發(fā)生器重新加載,重新同步;而如果短時的大量誤碼只是由于突發(fā)誤碼造成的,后續(xù)的幾個連續(xù)檢測周期內(nèi)接收端的誤碼并沒有超過判決門限,那么就繼續(xù)進(jìn)行同步計數(shù),沒有必要重新進(jìn)行同步判定了。
在同步模塊中,判決門限的設(shè)定與采用的m序列的周期,以及誤碼測試的準(zhǔn)確性要求有關(guān)。
當(dāng)收發(fā)端已經(jīng)判斷同步以后,只要將接收信號與本地的m序列流進(jìn)行同步的串行比較就可以統(tǒng)計誤碼了。誤碼率的計算常常又需要進(jìn)行除法運算,要在FPGA中或其它的可編程邏輯器件中實現(xiàn)除法運算通常要消耗掉大量的邏輯資源,可以采用估算的辦法大致的估計出誤碼率。具體的方法是:在進(jìn)行測試的時候首先設(shè)定一個統(tǒng)計周期,對傳輸?shù)拇a元進(jìn)行一個統(tǒng)計,例如設(shè)定統(tǒng)計周期為100M信號。然后對這100M傳輸信號進(jìn)行誤碼統(tǒng)計,給定一系列判決門限,在每個周期結(jié)束的時候,將誤碼統(tǒng)計結(jié)果與判決門限進(jìn)行比較,得出誤碼率量級,例如:如果誤碼個數(shù)在5到50 之間,則認(rèn)為誤碼量級為10-7,在50 到500之間,就認(rèn)為誤碼率量級為10-6,以此類推。這樣估算不可避免的會造成真實誤碼率的偏差,但是它不僅節(jié)約了大量的邏輯資源,而且并不影響工程實際中對誤碼量級的判斷,因此是完全可行的。
接口模塊
接口模塊主要是為了與通信系統(tǒng)傳輸形式相匹配,如常用的RS-232接口或RS-485接口。由于采用FPGA實現(xiàn)整體功能,哪怕是對非標(biāo)準(zhǔn)信道進(jìn)行測試,接口形式也易于擴(kuò)展,而且還有利于系統(tǒng)的集成化,避免了通用誤碼儀的外加輔助長線驅(qū)動器。
結(jié)語
在數(shù)字通信系統(tǒng)中,誤碼儀的使用是很普遍的,而現(xiàn)今的通信系統(tǒng)大量采用FPGA作為系統(tǒng)的核心控制器件,將物理層上的各協(xié)議層的功能集中在FPGA內(nèi)部實現(xiàn)。本文提出的誤碼測試方案在一片Altera公司的EP1K50芯片上進(jìn)行了試驗驗證,大約需要消耗1000個邏輯單元,只占到整個芯片資源的36%。今后還有很大的擴(kuò)展空間。設(shè)計的仿真波形如圖4和圖5。另外本測試方案還可以作為某些系統(tǒng)的嵌入式模塊,有利于系統(tǒng)的性能調(diào)試。