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