摘要:提出了一種基于FPGA的誤碼測試方案,并簡要介紹了該方案的設計思想。
在數字通信系統的性能測試中,通常使用誤碼分析儀對其誤碼性能進行測量。它雖然具有簡單易用、測試內容豐富、誤碼測試結果直觀、準確等優點,但是,價格昂貴、不易與某些系統接口適配,通常需要另加外部輔助長線驅動電路;此外,誤碼分析儀對于突發通信系統的誤碼性能測試存在先天不足。例如,在對TDMA系統上行鏈路誤碼性能測試時,只有通過外加接口,對連續數據進行數據壓擴,才能為被測設備模擬出突發形式的數據,從而完成測試。這給測試工作帶來極大的不便。 另一方面,現今的通信系統大量采用FPGA作為系統的核心控制器件。將物理層上的各協議層的功能集中在FPGA內部實現,不僅提高了通信系統的集成,同時也減少了硬件和軟件設計的復雜度。
基于上述兩方面的考慮,筆者在FPGA內部實現了一個簡易的多功能誤碼分析儀。該誤碼儀主要有三方面優點:一是可以根據用戶需要,以連續或突發的方式產生若干種不同的隨機序列或固定序列,并據此測試數字通信系統的誤碼性能;二是測試結果可以誤碼率或者誤碼數兩種形式,通過外圍器件直觀地顯示出來;三是作為被測系統的一個嵌入式模塊,便于功能擴展及系統調試。 1 偽隨機序列(m序列)
許多數字通信理論的結論都基于這樣一個假設:原始的信源信號為0、1等概并相互獨立的隨機數字序列。同樣,實際數字通信系統的設計,也是基于相同假設。因此,為使測試結果盡可能真實地反映系統的性能,采用偽隨機序列(m序列)作為測試中傳輸的信號。
M序列是一種線反饋移位寄存器序列,其原理方框圖如圖1所示。每級移位寄存器的輸出被反饋系數Ci加權(Ci可以取1或0),經模2和運算再反饋到第一級。令第一級的輸入為ak,就有:
根據反饋系數的取值不同,電路可以產生出各種具有不同特性的數字序列。對于一定的移位寄存器級數r,存在一些特殊的Ci取值,使得輸出序列的周期達到最長,即為2r-1。這樣的序列被稱為最長線性反饋移位寄存器序列,即m序列。
2 誤碼儀測試原理
該誤碼儀由發端模塊和收端模塊兩部分組成。發端模塊產生連續或者突發的比特流,作為通信系統的信源數據;收端模塊接收通信系統輸出的比特流,并將其與本地產生的、與發端形式相同的比特流進行比較,從而完成誤碼測試。從邏輯上看,誤碼儀的工作過程大致可以分成以下幾個步驟:
(1)發端模塊產生原始數據,并使其通過被測通信系統構成的信道;
(2)收端模塊產生與發端相同碼型、相同相位的數據流;
(3)將收到的數據流與收端產生的本地數據流逐比特地比較,并進行誤碼統計;
(4)根據誤碼統計結果,計算出相應的誤碼率,并輸出誤碼指示。
誤碼儀收端模塊所面臨的最主要問題是如何準確地實現本地產生的m序列與收到的數據流同步,即比特對齊,這是整個誤碼儀正常工作的前提。為了適應各種不同類型的通信系統,根據m序列的性質,采用隨動同步的方法解決這個問題。圖2給出了隨動同步的原理框圖。
通過上述討論知道,周期為2r-1的m序列發生器由r級移位寄存器組成。同時,由r個比特所能組成的所有序列(除全零序列外)都會在m序列的一個周期內遍歷,且相應的前后位置固定。因此,如果兩個具有相同邏輯結構的m序列發生器在某一時刻所有寄存器狀態完全相同,則由這兩個m序列發生器所產生的數字數據流保持同步。隨動同步就是根據m序列的這個性質實現的。
3 誤碼儀邏輯結構
發端模塊
本誤碼儀的發端模塊實質上是一個多功能的序列發生器。用戶可以通過相應的控制信號,指定其m序列發生器的線性反饋邏輯。由它產生的數字數據流將作為仿真數據送出到需要進行誤碼性能測試的數字通信系統中。
?
收端模塊
收端模塊在邏輯上可以分成兩個功能子模塊:一是m序列發生子模塊,二是誤碼統計子模塊。前者的邏輯功能與發端模塊相類似,其作用是產生一個與發端形式相同并且比特對齊的本地m序列;后者的作用是將收到的數據與本地m序列相比較,同時統計誤碼指標,從而完成對數字通信系統的誤碼性能測試。
在測試過程中,接收到的數字序列被不斷地逐次移入接收數據緩沖器中。在接收序列中,任意截取包含r個連續比特的片斷(其中r為發端m序列發生器的階數),將其置入本地m序列發生器的移位寄存器中,作為其初始狀態,并假定此時收發雙方已同步在這個狀態。此后,本地m序列發生器與接收數據緩沖器同步移位輸出。這樣,只要對兩個序列逐位比較,就可以進行誤碼統計了。需要特別注意:如果截取的數據片斷中包含誤碼,則據此得出的收發雙方已同步的結論是錯誤的。這樣的數據片斷將導致整個誤碼統計過程失去意義,不妨稱這種情況為同步。為了消除假同步的影響,需要一種保護機制,用以確保收發雙方的正常同步。 根據上述思想,筆者設計的收端模塊的狀態機由4個狀態組成,分別為搜索態(SEARCH)、預同步態(PRESYN)、同步態(SYN)和等待態(WAIT)。各個狀態所完成的功能如下:
搜索態(SEARCH):在該狀態下,當接收數據緩沖器中出現非全零狀態時,其中的序列被置入收端m序列發生器的移位寄存器中,同時進入預同步狀態。
預同步態(PRESYN):在該狀態下,本地m序列發生器輸出本地比特流,并使其與收到的數據流進行逐位比較,同時進行初步的誤碼統計。如果統計結果指示誤碼高于某一事先選定的閾值,則說明電路進入了假同步,于是需要返回搜索態重新同步。反之,則可以較大的概率認為收發雙方已經同步。反之,則可以較大的概率認為收發雙方已經同步,電路進入同步態。
同步態(SYN):在該狀態下,電路將進行正式的誤碼統計,并且在指定的測試周期結束時進入等待狀態,同時輸出誤碼測試結果。
等待態(WAIT):誤碼測試尚未啟動以及測試結束時所處的狀態。在該狀態下誤碼儀等待再一次誤碼測試的啟動信號。
收端模塊的邏輯狀態轉移圖見圖3。
4 測試結果的輸出
通常,誤碼測試結果可以以誤碼數和誤碼率兩種形式輸出。大多數取代傳統誤碼分析儀的其它誤碼測試方案均采用易于實現的誤碼數形式輸出測試結果,但種方式受到輸出位數的限制而無法適應高誤碼率或需要進行長時間統計的測試環境。但是,誤碼率的計算又常常需要進行除法運算,而在FPGA或其它可編程邏輯器件中實現除法運算通常要消耗掉大量的邏輯資源,有時甚至超過了實現主要功能所需的資源。 事實上,在一般的工程實踐中,人們通常關心的只是誤碼率的量級,因而誤碼儀也就沒有必要準確地計算出實際的誤碼率。根據這一想法,該誤碼儀采用某種近似的實際的誤碼率。根據這一想法,該誤碼儀采用某種近似的估計算法,避免了意義不大的除法運算,而以較少的資源消耗實現了對誤碼率的估計。下面簡要介紹該估計算法。
在誤碼測試邏輯中,接收到的總比特數與誤碼個數均以二進制方式存儲在內部的邏輯向量中。它們最高非0比特所處的位置之差實際上反映了誤碼率的指標不。這樣只要根據這個差值就可以大致估計出誤碼率,同時復雜的除法運算也被簡單的減法運算所代替。
例如:當收到總特數為“00……01110110110”誤碼計數值為“00……0110”時,總比特數的最高非0位為第10位,誤碼計數值為第3位,差值為7,誤碼率近似為1/2 7,即7.8×10 -3,與實際誤碼率6.3×10 -3相當。
采用近似算法可能造成的最大系統誤差是輸出誤碼率的50%.但是,在通信系統的誤碼性能統計中,這樣的誤差并不會影響對系統誤碼率數量級的判斷。因此,作為調試使用的簡易誤碼性能的測試算法是完全可行的。
評論
查看更多