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