基于FPGA的誤碼率測試儀的設(shè)計與實現(xiàn)
了關(guān)鍵技術(shù)的實現(xiàn)。
關(guān)鍵詞:誤碼測試,現(xiàn)場可編程門陣列
1、概述
在通信系統(tǒng)的設(shè)計實現(xiàn)過程中,都需要測試系統(tǒng)的誤碼性能。而常見的誤碼率測試儀多數(shù)專用于測試各種標(biāo)準高速信道,不便于測試實際應(yīng)用中大量的專用信道,并且價格昂貴,搭建測試平臺復(fù)雜。隨著大規(guī)模集成電路的迅速發(fā)展,FPGA在保持其集成度高,體積小,功耗低,性價比高特性的同時,能夠?qū)崿F(xiàn)越來越復(fù)雜設(shè)計功能,日益廣泛的應(yīng)用于通信設(shè)備的設(shè)計實現(xiàn)。
本文提出了一種基于FPGA的誤碼率測試儀的方案,使用一片Altera公司的Cyclone系列的FPGA(EP1C6-144T)及相關(guān)的外圍電路,實現(xiàn)誤碼測試功能,主控計算機可以通過FPGA內(nèi)建的異步串行接口(UART)配置誤碼測試儀并讀取誤碼信息,由計算機完成誤碼分析。同時,該方案還提供了簡易的數(shù)據(jù)顯示,可以在脫離計算機的情況下,進行通信系統(tǒng)工作性能的定性分析。
2、系統(tǒng)構(gòu)成和工作流程
按照完成的功能,整個系統(tǒng)可以分為測試碼生成單元、誤碼測試單元、接口單元、顯示單元和時鐘生成單元以及主控計算機上運行的控制測試軟件六個部分,具體框圖如圖1所示。
圖1誤碼測試儀框圖
利用誤碼率測試儀進行誤碼率測試的閉環(huán)測試平臺結(jié)構(gòu)如圖2所示。對照圖1、圖2,將系統(tǒng)的工作流程描述如下。
圖2通信系統(tǒng)誤碼測試框圖
根據(jù)待測通信系統(tǒng)的數(shù)據(jù)速率由計算機通過UART配置時鐘生成單元,得到工作時鐘和各使能計數(shù)器的參數(shù),使得系統(tǒng)按照預(yù)定時鐘工作;由測試碼生成單元按照設(shè)置好的時鐘將 測試碼發(fā)送給待測系統(tǒng)的發(fā)送設(shè)備;發(fā)送信號經(jīng)過信道仿真器后,由待測系統(tǒng)的接收單元接收、判決,再將接收數(shù)據(jù)和恢復(fù)的數(shù)據(jù)時鐘送入誤碼測試儀;誤碼測試儀中的誤碼測試單元完成輸入數(shù)據(jù)和本地數(shù)據(jù)的同步后,對輸入數(shù)據(jù)同本地數(shù)據(jù)進行比較,統(tǒng)計誤碼數(shù),每完成兩個測試碼周期的數(shù)據(jù)比較,就將誤碼信息通過UART發(fā)送給計算機,進行誤碼統(tǒng)計,同時將誤碼數(shù)傳送給顯示單元,進行處理后驅(qū)動外部的四個七段數(shù)碼管,顯示本測試碼周期內(nèi)的誤碼率。
3、關(guān)鍵技術(shù)及其實現(xiàn)
3.1測試碼的產(chǎn)生
本設(shè)計使用m序列作為測試碼,m序列發(fā)生器按照CCITT建議,生成用于低速數(shù)據(jù)傳輸設(shè)備測試誤碼的m序列,其特征多項式為x9+x4+1,周期為512。利用m序列的偽隨機特性,可以很好的測試在不同的輸入組合下,系統(tǒng)的通信性能,同時,m序列極強的自相關(guān)性,便于測試儀實現(xiàn)輸入數(shù)據(jù)同本地測試碼同步,以便進行誤碼計數(shù)。
3.2誤碼測試單元的實現(xiàn)
誤碼測試單元是整個系統(tǒng)的核心單元,其功能框圖如圖3所示。序列同步跟蹤單元的功能是利用m序列的自相關(guān)特性,將輸入的數(shù)據(jù)同本地的m序列同步起來,并將同步信息傳給碼元比較單元。
我們利用測試序列―m序列的自相關(guān)性實現(xiàn)接收序列與本地序列的同步。m序列的捕獲有很多方法,通常使用的有相關(guān)器法和循環(huán)累加法。相關(guān)器法的優(yōu)點是捕獲速度快,通常捕獲時間不超過兩個m序列的周期,但是相關(guān)器最大的問題就是所需的邏輯資源太多。相比之下,循環(huán)累加法所需的邏輯資源很少,雖然捕獲時延較長,但在測試環(huán)境下,通常是可以忍受的,另外,我們還可以采取一定的措施進一步減少捕獲時延。循環(huán)累加器的工作原理如下,系統(tǒng)復(fù)位后,m序列發(fā)生器按照預(yù)設(shè)的參數(shù)生成m序列,存入m序列緩沖區(qū),碼元同步后,在地址發(fā)生器的控制下,將m序列從緩沖區(qū)中讀出,同輸入序列按位進行同或運算后進行算術(shù)加,相加得到的和經(jīng)D觸發(fā)器緩沖一個時鐘周期后,輸入加法器,作為下一次加法運算的一個加數(shù),從而實現(xiàn)本地序列同輸入序列的循環(huán)累加。累加和送入門限檢測器同所設(shè)門限比較,如低于門限,則地址發(fā)生使能和同步指示輸出均無效,為‘0’,如果高于所設(shè)門限,則兩信號置高。后面的碼元比較單元開始工作,進行輸入序列和本地序列的比較。地址發(fā)生器產(chǎn)生的地址由兩部分組成,即:
地址輸出=累加地址+偏移地址
兩個地址的初值均為‘0’,累加地址計數(shù)范圍同m序列的長度一樣,每個時鐘周期加1,第一個周期輸出的m序列從第一個碼元開始輸出,加完一個m序列周期后,地址發(fā)生器檢查由門限檢測輸入的地址發(fā)生控制信號,如果該信號為‘0’,那么表示輸入序列同本地序列沒有同步,存在相位差,此時,偏移地址加1,累加地址重新開始累加計數(shù),使得第二個周期輸出的m序列從第二個碼元開始輸出,實現(xiàn)了本地m序列相對于輸入序列的“滑動”。
經(jīng)過本地碼的滑動,同輸入序列完全同步,根據(jù)m序列的相關(guān)性,累加值會出現(xiàn)相關(guān)峰,超過門限檢測的門限值,此時,門限檢測單元就會將地址發(fā)生控制信號置‘1’,地址發(fā)生器的偏移地址不再變化,累加地址繼續(xù)循環(huán)計數(shù),m序列緩沖區(qū)按照輸入的地址,將與輸入序列同步的m序列輸出至門限檢測單元和碼元比較單元,同時,經(jīng)過UART向主控PC發(fā)送開始誤碼測試的消息。
當(dāng)序列同步完成之后,門限檢測單元繼續(xù)工作,檢查序列的同步狀況,當(dāng)某一時刻,相關(guān)峰值低于門限,則可以判斷系統(tǒng)誤碼率過高,或者數(shù)據(jù)傳輸過程中出現(xiàn)丟幀的情況。此時,門限檢測單元將同步指示和地址發(fā)生使能同時置為無效,開始新一輪捕獲,同時經(jīng)過UART向主控PC發(fā)送停止誤碼測試的報警,等待下一次統(tǒng)計的開始??梢钥闯觯到y(tǒng)誤碼性能的設(shè)計指標(biāo)同門限檢測單元中的門限可以建立對應(yīng)關(guān)系,便于測試前的參數(shù)設(shè)置。圖4是測試碼捕獲的時序仿真圖,為了測試誤碼統(tǒng)計功能,我們將測試碼的前三個碼取反,以便形成誤碼。從圖中可以看出,當(dāng)累加器的和高于門限時,同步指示為高,當(dāng)一個新的測試碼周期開始時,誤碼計數(shù)開始,前三個測試碼是錯的,可以看到誤碼計數(shù)正確的統(tǒng)計了誤碼個數(shù)。
碼元比較單元將接收到的序列通本地產(chǎn)生的m序列按位作異或運算,每出現(xiàn)一個誤碼,就會輸出一個計數(shù)脈沖。誤碼計數(shù)單元按照預(yù)先設(shè)置好的參數(shù),每檢測完兩個測試碼周期,就通過UART向傳送一次誤碼個數(shù),便于主控計算機統(tǒng)計誤碼信息。
誤碼測試單元通過UART同PC機進行通信,將誤碼信息發(fā)送給PC機,由PC機進行誤碼數(shù)據(jù)的分析統(tǒng)計處理,并形成報表。UART通過系統(tǒng)提供的10MHz的時鐘分頻得到57.6Kbps的波特率。
3.3誤碼率實時顯示的實現(xiàn)
誤碼率的實時顯示是通過四個共陰極的七段數(shù)碼管實現(xiàn)的,主要用于誤碼測試儀脫離主控計算機工作時,通過對每兩個測試碼周期的誤碼統(tǒng)計,將這一時段的實時誤碼率用科學(xué)計數(shù)法在七段數(shù)碼管上顯示出來,以便對通信系統(tǒng)的運行情況進行定性的分析。第一個數(shù)碼管顯示個位和小數(shù)點,第二個數(shù)碼管顯示小數(shù)點后第一位,第三個顯示負號,第四個顯示一位數(shù)字,表示科學(xué)計數(shù)法的負幾次方。下面以兩個測試碼周期(1024個碼)中統(tǒng)計到256個誤碼為例,說明如何得到實時顯示。首先,將誤碼數(shù)送入比較器,分別同11、102進行比較,256大于102,說明誤碼率在101數(shù)量級,第四個數(shù)碼管顯示1,再將 1/101256=2560=
(101000000000)2的第12位和第11位取出,即(10)2=2,作為第一個數(shù)碼管顯示的個位數(shù),取出第10位、第9位和第8位,即(100)2按二進制小數(shù)計算為0.5,則第二個數(shù)碼管顯示5。計算小數(shù)部分時,可用查表法,直接得到輸出數(shù)值,以簡化計算。
3.4軟件測試平臺的設(shè)計
我們采用VisualC++和matlab混合編程來實現(xiàn)軟件測試平臺。VisualC++是微軟公司推出的功能強大的軟件開發(fā)調(diào)試工具,對計算機底層操作十分方便,通過API函數(shù)對串口進行編程更是一項十分成熟的技術(shù)。matlab是MathWork公司發(fā)布的科學(xué)計算軟件,具有功能很強的繪圖功能和及其豐富的函數(shù)庫,給數(shù)據(jù)的分析、圖表的制作提供強大的支持。軟件測試平臺的基本思想是利用VisualC++編制平臺的人機交互界面,以及完成同誤碼測試核的數(shù)據(jù)通信,再調(diào)用matlab里的函數(shù),對得到的測試數(shù)據(jù)進行分析輸出,同時在人機交互界面上顯示誤碼事件及其發(fā)生時刻。
4、結(jié)束語
本文提出了一種基于FPGA的誤碼率測試儀的設(shè)計實現(xiàn)方案,具有體積小,成本低,使用靈活,通過內(nèi)建的UART同主控計算機進行數(shù)據(jù)交換,同時發(fā)揮了FPGA速度快和計算機數(shù)據(jù)處理能力強的優(yōu)勢,獲得了較好的系統(tǒng)性能,可以方便的運用于通信設(shè)備的研制和測試。
同時,利用FPGA的在線可編程(ISP)能力,可以不斷升級、完善,實現(xiàn)更多的功能。在此基礎(chǔ)上,還能夠進一步的進行系統(tǒng)擴展,如使用加入單片機并移植嵌入式操作系統(tǒng),將用點陣液晶代替數(shù)碼管,增加外部存儲(flash,RAM等),從而構(gòu)成一個手持的誤碼測試系統(tǒng),可以完全脫離主控計算機工作。
參考文獻:
[1]褚振勇,翁木云FPGA設(shè)計及應(yīng)用,西安電子科技大學(xué)出版社
[2]張志勇等精通MATLAB6.5版,北京航空航天大學(xué)出版社
[3]CycloneFPGAFamilyDataSheet,Altera,March2003,ver1.1
[4]何強,何英MATLAB擴展編程清華大學(xué)出版社
評論