新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 基于FPGA的誤碼率測試儀的設計與實現

基于FPGA的誤碼率測試儀的設計與實現

作者: 時間:2006-08-30 來源:網絡 收藏
摘要:本文提出了一種使用實現的設計及實現方法。該設計可通過內建的異步串行接口向主控計算機傳遞誤碼信息,也可以通過數碼管實時 顯示一段時間內的。文章先介紹了系統構成和工作流程,然后重點分析
了關鍵技術的實現。
關鍵詞:誤碼,現場可編程門陣列

1、概述
在通信系統的設計實現過程中,都需要系統的誤碼性能。而常見的測試儀多數專用于測試各種標準高速信道,不便于測試實際應用中大量的專用信道,并且價格昂貴,搭建測試平臺復雜。隨著大規(guī)模集成電路的迅速發(fā)展,在保持其集成度高,體積小,功耗低,性價比高特性的同時,能夠實現越來越復雜設計功能,日益廣泛的應用于通信設備的設計實現。

本文提出了一種基于FPGA的誤碼率測試儀的方案,使用一片Altera公司的Cyclone系列的FPGA(EP1C6-144T)及相關的外圍電路,實現誤碼測試功能,主控計算機可以通過FPGA內建的異步串行接口(UART)配置誤碼測試儀并讀取誤碼信息,由計算機完成誤碼分析。同時,該方案還提供了簡易的數據顯示,可以在脫離計算機的情況下,進行通信系統工作性能的定性分析。

2、系統構成和工作流程
按照完成的功能,整個系統可以分為測試碼生成單元、誤碼測試單元、接口單元、顯示單元和時鐘生成單元以及主控計算機上運行的控制測試軟件六個部分,具體框圖如圖1所示。

圖1誤碼測試儀框圖
利用誤碼率測試儀進行誤碼率測試的閉環(huán)測試平臺結構如圖2所示。對照圖1、圖2,將系統的工作流程描述如下。

圖2通信系統誤碼測試框圖

根據待測通信系統的數據速率由計算機通過UART配置時鐘生成單元,得到工作時鐘和各使能計數器的參數,使得系統按照預定時鐘工作;由測試碼生成單元按照設置好的時鐘將 測試碼發(fā)送給待測系統的發(fā)送設備;發(fā)送信號經過信道仿真器后,由待測系統的接收單元接收、判決,再將接收數據和恢復的數據時鐘送入誤碼測試儀;誤碼測試儀中的誤碼測試單元完成輸入數據和本地數據的同步后,對輸入數據同本地數據進行比較,統計誤碼數,每完成兩個測試碼周期的數據比較,就將誤碼信息通過UART發(fā)送給計算機,進行誤碼統計,同時將誤碼數傳送給顯示單元,進行處理后驅動外部的四個七段數碼管,顯示本測試碼周期內的誤碼率。

3、關鍵技術及其實現
3.1測試碼的產生
本設計使用m序列作為測試碼,m序列發(fā)生器按照CCITT建議,生成用于低速數據傳輸設備測試誤碼的m序列,其特征多項式為x9+x4+1,周期為512。利用m序列的偽隨機特性,可以很好的測試在不同的輸入組合下,系統的通信性能,同時,m序列極強的自相關性,便于測試儀實現輸入數據同本地測試碼同步,以便進行誤碼計數。

3.2誤碼測試單元的實現

誤碼測試單元是整個系統的核心單元,其功能框圖如圖3所示。序列同步跟蹤單元的功能是利用m序列的自相關特性,將輸入的數據同本地的m序列同步起來,并將同步信息傳給碼元比較單元。

我們利用測試序列―m序列的自相關性實現接收序列與本地序列的同步。m序列的捕獲有很多方法,通常使用的有相關器法和循環(huán)累加法。相關器法的優(yōu)點是捕獲速度快,通常捕獲時間不超過兩個m序列的周期,但是相關器最大的問題就是所需的邏輯資源太多。相比之下,循環(huán)累加法所需的邏輯資源很少,雖然捕獲時延較長,但在測試環(huán)境下,通常是可以忍受的,另外,我們還可以采取一定的措施進一步減少捕獲時延。循環(huán)累加器的工作原理如下,系統復位后,m序列發(fā)生器按照預設的參數生成m序列,存入m序列緩沖區(qū),碼元同步后,在地址發(fā)生器的控制下,將m序列從緩沖區(qū)中讀出,同輸入序列按位進行同或運算后進行算術加,相加得到的和經D觸發(fā)器緩沖一個時鐘周期后,輸入加法器,作為下一次加法運算的一個加數,從而實現本地序列同輸入序列的循環(huán)累加。累加和送入門限檢測器同所設門限比較,如低于門限,則地址發(fā)生使能和同步指示輸出均無效,為‘0’,如果高于所設門限,則兩信號置高。后面的碼元比較單元開始工作,進行輸入序列和本地序列的比較。地址發(fā)生器產生的地址由兩部分組成,即:
地址輸出=累加地址+偏移地址

兩個地址的初值均為‘0’,累加地址計數范圍同m序列的長度一樣,每個時鐘周期加1,第一個周期輸出的m序列從第一個碼元開始輸出,加完一個m序列周期后,地址發(fā)生器檢查由門限檢測輸入的地址發(fā)生控制信號,如果該信號為‘0’,那么表示輸入序列同本地序列沒有同步,存在相位差,此時,偏移地址加1,累加地址重新開始累加計數,使得第二個周期輸出的m序列從第二個碼元開始輸出,實現了本地m序列相對于輸入序列的“滑動”。

經過本地碼的滑動,同輸入序列完全同步,根據m序列的相關性,累加值會出現相關峰,超過門限檢測的門限值,此時,門限檢測單元就會將地址發(fā)生控制信號置‘1’,地址發(fā)生器的偏移地址不再變化,累加地址繼續(xù)循環(huán)計數,m序列緩沖區(qū)按照輸入的地址,將與輸入序列同步的m序列輸出至門限檢測單元和碼元比較單元,同時,經過UART向主控PC發(fā)送開始誤碼測試的消息。

當序列同步完成之后,門限檢測單元繼續(xù)工作,檢查序列的同步狀況,當某一時刻,相關峰值低于門限,則可以判斷系統誤碼率過高,或者數據傳輸過程中出現丟幀的情況。此時,門限檢測單元將同步指示和地址發(fā)生使能同時置為無效,開始新一輪捕獲,同時經過UART向主控PC發(fā)送停止誤碼測試的報警,等待下一次統計的開始??梢钥闯?,系統誤碼性能的設計指標同門限檢測單元中的門限可以建立對應關系,便于測試前的參數設置。圖4是測試碼捕獲的時序仿真圖,為了測試誤碼統計功能,我們將測試碼的前三個碼取反,以便形成誤碼。從圖中可以看出,當累加器的和高于門限時,同步指示為高,當一個新的測試碼周期開始時,誤碼計數開始,前三個測試碼是錯的,可以看到誤碼計數正確的統計了誤碼個數。
碼元比較單元將接收到的序列通本地產生的m序列按位作異或運算,每出現一個誤碼,就會輸出一個計數脈沖。誤碼計數單元按照預先設置好的參數,每檢測完兩個測試碼周期,就通過UART向傳送一次誤碼個數,便于主控計算機統計誤碼信息。

誤碼測試單元通過UART同PC機進行通信,將誤碼信息發(fā)送給PC機,由PC機進行誤碼數據的分析統計處理,并形成報表。UART通過系統提供的10MHz的時鐘分頻得到57.6Kbps的波特率。

3.3誤碼率實時顯示的實現

誤碼率的實時顯示是通過四個共陰極的七段數碼管實現的,主要用于誤碼測試儀脫離主控計算機工作時,通過對每兩個測試碼周期的誤碼統計,將這一時段的實時誤碼率用科學計數法在七段數碼管上顯示出來,以便對通信系統的運行情況進行定性的分析。第一個數碼管顯示個位和小數點,第二個數碼管顯示小數點后第一位,第三個顯示負號,第四個顯示一位數字,表示科學計數法的負幾次方。下面以兩個測試碼周期(1024個碼)中統計到256個誤碼為例,說明如何得到實時顯示。首先,將誤碼數送入比較器,分別同11、102進行比較,256大于102,說明誤碼率在101數量級,第四個數碼管顯示1,再將 1/101256=2560=
(101000000000)2的第12位和第11位取出,即(10)2=2,作為第一個數碼管顯示的個位數,取出第10位、第9位和第8位,即(100)2按二進制小數計算為0.5,則第二個數碼管顯示5。計算小數部分時,可用查表法,直接得到輸出數值,以簡化計算。

3.4軟件測試平臺的設計

我們采用VisualC++和matlab混合編程來實現軟件測試平臺。VisualC++是微軟公司推出的功能強大的軟件開發(fā)調試工具,對計算機底層操作十分方便,通過API函數對串口進行編程更是一項十分成熟的技術。matlab是MathWork公司發(fā)布的科學計算軟件,具有功能很強的繪圖功能和及其豐富的函數庫,給數據的分析、圖表的制作提供強大的支持。軟件測試平臺的基本思想是利用VisualC++編制平臺的人機交互界面,以及完成同誤碼測試核的數據通信,再調用matlab里的函數,對得到的測試數據進行分析輸出,同時在人機交互界面上顯示誤碼事件及其發(fā)生時刻。

4、結束語
本文提出了一種基于FPGA的誤碼率測試實現方案,具有體積小,成本低,使用靈活,通過內建的UART同主控計算機進行數據交換,同時發(fā)揮了FPGA速度快和計算機數據處理能力強的優(yōu)勢,獲得了較好的系統性能,可以方便的運用于通信設備的研制和測試。

同時,利用FPGA的在線可編程(ISP)能力,可以不斷升級、完善,實現更多的功能。在此基礎上,還能夠進一步的進行系統擴展,如使用加入單片機并移植嵌入式操作系統,將用點陣液晶代替數碼管,增加外部存儲(flash,RAM等),從而構成一個手持的誤碼測試系統,可以完全脫離主控計算機工作。

參考文獻:
[1]褚振勇,翁木云FPGA設計及應用,西安電子科技大學出版社
[2]張志勇等精通MATLAB6.5版,北京航空航天大學出版社
[3]CycloneFPGAFamilyDataSheet,Altera,March2003,ver1.1
[4]何強,何英MATLAB擴展編程清華大學出版社


評論


相關推薦

技術專區(qū)

關閉