基于FPGA的2M誤碼測(cè)試儀設(shè)計(jì)
0 引言
無論是何種通信新業(yè)務(wù)的推出和運(yùn)營(yíng),都離不開強(qiáng)力有效且高可靠的傳輸系統(tǒng)。隨之而帶來的問題就是如何對(duì)系統(tǒng)的傳輸質(zhì)量進(jìn)行測(cè)量和保證。
誤碼測(cè)試儀是一種能夠測(cè)量和保證傳輸質(zhì)量的智能化儀器,該儀器可通過檢測(cè)來反映數(shù)據(jù)傳輸設(shè)備及其信道工作的誤碼損傷性能質(zhì)量指標(biāo),并對(duì)其進(jìn)行傳輸質(zhì)量分析的有效工具。在電信運(yùn)營(yíng)、工程驗(yàn)收、科研、設(shè)備生產(chǎn)、教學(xué)實(shí)驗(yàn)等各方面,誤碼儀都是必不可少的通信測(cè)量和線路維護(hù)的最佳輔助工具。目前在陜西省業(yè)務(wù)設(shè)備的接口應(yīng)用中,百分之九十以上的接口是2M的接口,比如:交換網(wǎng)絡(luò)上應(yīng)用、信令網(wǎng)上的應(yīng)用、數(shù)據(jù)網(wǎng)上的應(yīng)用、網(wǎng)管網(wǎng)上的應(yīng)用等,都使用了2M的數(shù)據(jù)。針對(duì)傳統(tǒng)誤碼儀的不足,本文給出了基于Altera公司的cyclone系列FPGA芯片EP1C12-240PQFP的2M誤碼測(cè)試儀的設(shè)計(jì)方案?;贔P-GA的誤碼測(cè)試儀相對(duì)于傳統(tǒng)的誤碼測(cè)試儀的優(yōu)點(diǎn)在于其FPGA的內(nèi)部邏輯功能是通過向內(nèi)部靜態(tài)存儲(chǔ)器單元加載配置數(shù)據(jù)來實(shí)現(xiàn)的。其配置文件決定了邏輯單元的邏輯功能以及模塊間或與I/O間的連接,并最終決定了FPGA所實(shí)現(xiàn)的功能。FPGA的這種結(jié)構(gòu)允許多次編程,并享有快速有效地對(duì)新設(shè)計(jì)進(jìn)行優(yōu)化的靈活性,故現(xiàn)今的通信系統(tǒng)大量采用FPGA作為系統(tǒng)的核心控制器件。本文重點(diǎn)介紹了FPGA內(nèi)核中序列發(fā)生模塊和序列接收模塊中核心內(nèi)容的設(shè)計(jì)。其中FPGA內(nèi)核中m序列發(fā)生器的設(shè)計(jì)思想采用移位寄存器理論,并根據(jù)本原多項(xiàng)式來獲得m序列移位寄存器的反饋邏輯式:
其中cn-1-i∈GF(2)是反饋系數(shù),xi∈GF(2)是每位寄存器的狀態(tài)。這樣,結(jié)合cyclone系列FPGA芯片EP1C12-240PQFP的結(jié)構(gòu)特點(diǎn),就很容易實(shí)現(xiàn)反饋移位寄存器的邏輯功能。
1 誤碼測(cè)試系統(tǒng)的總體方案
誤碼一般是由通信系統(tǒng)中接收端抽樣判決器的錯(cuò)誤判斷造成的,而造成錯(cuò)誤判斷的原因主要有兩個(gè):一是碼間串?dāng)_,另一個(gè)是信道加性噪聲的影響。誤碼測(cè)試儀存在兩種設(shè)計(jì)方案,一種是誤碼儀的發(fā)射端模塊和接收模塊兩部分獨(dú)立,可用于單工的通信系統(tǒng)性能測(cè)試。但是由于該系統(tǒng)的測(cè)試序列需要?jiǎng)討B(tài)生成,所以,其能夠測(cè)試的系統(tǒng)碼速只能和FPGA控制模塊所能達(dá)到的速度相同。另一種方案是將發(fā)射端模塊和接收模塊結(jié)合在一個(gè)系統(tǒng)內(nèi)部,這樣能測(cè)試具有回環(huán)的通信系統(tǒng),如雙工通信的收發(fā)設(shè)備等。本文設(shè)計(jì)屬于第二種方案,其誤碼測(cè)試系統(tǒng)框圖如圖1所示。圖中,發(fā)送端模塊產(chǎn)生的偽隨機(jī)序列作為通信系統(tǒng)的信源數(shù)據(jù)流流經(jīng)信道,接收端模塊則接收來自信道輸出的比特流,并將其與接收端模塊產(chǎn)生的與發(fā)送端模塊輸出類型相同的偽隨機(jī)序列進(jìn)行比較,從而完成誤碼測(cè)試。誤碼儀由發(fā)送端的序列發(fā)生器1模快、接收端的位同步信號(hào)提取模塊、幀同步碼檢測(cè)模塊、序列發(fā)生器2模塊、誤碼分析模塊及外設(shè)接口構(gòu)成。其中位同步信號(hào)提取模塊的作用是獲得位定時(shí)同步脈沖。幀同步碼檢測(cè)模塊的作用是獲取幀同步信號(hào),以使兩個(gè)序列能以同相位比較計(jì)算誤碼率。因?yàn)槿绻邮盏臏y(cè)試序列與序列發(fā)生器2模塊產(chǎn)生的序列兩者相位不同,則誤碼的測(cè)試結(jié)果將毫無意義。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)硬件組成
根據(jù)誤碼測(cè)試儀器的功能要求,在本系統(tǒng)的硬件總體架構(gòu)中,將FPGA作為總控制器,并外擴(kuò)E1接口模塊,以用于實(shí)現(xiàn)碼型和波形的轉(zhuǎn)換,同時(shí)將FPGA輸出的NRZ碼型轉(zhuǎn)換成適合于在E1信道中傳輸?shù)腍DB3碼型,并將來自E1信道的HDB3碼轉(zhuǎn)換為NRZ碼送入FPGA中;E2PROM存儲(chǔ)模塊則可將誤碼分析模塊的誤碼測(cè)試結(jié)果進(jìn)行存儲(chǔ),且掉電不丟失數(shù)據(jù),并可隨時(shí)讀取,以便于在無人值守的情況下進(jìn)行誤碼測(cè)試;LCM顯示模塊是為了使用戶了解誤碼測(cè)試結(jié)果;RS232串口模塊則用于和PC機(jī)通訊,上傳誤碼檢測(cè)結(jié)果,以便于從PC機(jī)上看到一段時(shí)間內(nèi)誤碼率曲線圖及其它誤碼信息,使用戶了解通信系統(tǒng)的誤碼發(fā)生情況;此外,系統(tǒng)還外擴(kuò)有鍵盤、電源管理模塊、時(shí)鐘電路、JTAG下載口和AS下載口。
2.2 E1接口電路的設(shè)計(jì)
E1的標(biāo)準(zhǔn)傳輸線路碼通常采用三階高密度雙極性碼(HDB3,high density bipolar),它是一種雙極性歸零碼,是廣泛用于PCM線路的傳輸碼型。本文中的E1接口選用非平衡的75 Ω物理接口(一收一發(fā))。E1接口芯片ET2154是一路E1PCM-30/ISDN-PRI收發(fā)器,它集成有時(shí)鐘數(shù)據(jù)恢復(fù)及發(fā)送E1脈沖成型的片內(nèi)線路接口單元(LIU)和E1幀處理器(Framer),其各項(xiàng)指標(biāo)符合ITU-T的G.703、G.704、G.706、G.823建議等要求。ET2154的線路接口功能主要包括三部分。第一是接收器,用于處理時(shí)鐘和數(shù)據(jù)恢復(fù);第二是發(fā)送器,用于形成波形和驅(qū)動(dòng)E1線路;第三是抖動(dòng)抑制器。
(1)E1線路接收接口
當(dāng)HDB3碼流從E1線纜經(jīng)BNC接口進(jìn)入,并通過一個(gè)1:2的變壓器耦合至RTIP租RRNG輸入管腳后,其接收模塊將允許用戶設(shè)置寄存器以匹配外部線路的阻抗。ET2154中的數(shù)據(jù)時(shí)鐘恢復(fù)模塊可從HDB3碼流中恢復(fù)時(shí)鐘和數(shù)據(jù)。從HDB3碼流中恢復(fù)出時(shí)鐘和數(shù)據(jù)可通過高倍采樣來實(shí)現(xiàn),首先由外部提供一個(gè)2.048 MHz的時(shí)鐘信號(hào),然后由芯片內(nèi)部PLL將它16倍頻到32.768 MHz 。即先對(duì)每位HDB3碼進(jìn)行16倍的采樣,然后由時(shí)鐘恢復(fù)系統(tǒng)利用16倍的采樣時(shí)鐘來恢復(fù)時(shí)鐘和數(shù)據(jù)。其E1信號(hào)接收示意圖如圖2所示。
正常情況下(RTIP,RRING有信號(hào)輸入),在RCK(接收方向恢復(fù)時(shí)鐘)管腳輸出恢復(fù)后的時(shí)鐘信號(hào)。而當(dāng)ET2154被配置成輸出NRZ數(shù)據(jù)模式時(shí),則在RSER管腳輸出恢復(fù)出的串行數(shù)據(jù)信號(hào)并送入FPGA。
(2)E1線路發(fā)送接口
待傳輸?shù)拇袛?shù)據(jù)流一般由XSER (發(fā)送串行數(shù)據(jù)NRZ)管腳進(jìn)入ET2154,并在XCK(發(fā)送方向輸入時(shí)鐘)管腳接收來自FPGA的2.048 MHz的時(shí)鐘信號(hào)。ET2154主要由內(nèi)部精密的數(shù)模轉(zhuǎn)換器(DAC)來產(chǎn)生要發(fā)送到E1線路上的波形,這種波形符合ITU G.703規(guī)范。系統(tǒng)中的發(fā)送器可將模擬波形從TYIP、TRING管腳通過1:1.36的升壓變壓器耦合到E1線路上。其E1信號(hào)發(fā)送示意圖如圖3所示。
(3) E1線路控制接口
ET2154的工作方式和特性是通過對(duì)其外部管腳的控制來實(shí)現(xiàn)的。通常將這些控制管腳連接至FPGA的外部I/O口,由FPGA來進(jìn)行控制。ET2154與FPGA的連接電路如圖4所示。ET2154通過內(nèi)部寄存器的配置來設(shè)置其工作方式,F(xiàn)PGA則利用8位數(shù)據(jù)/地址復(fù)用線AD0~AD7來對(duì)ET2154內(nèi)部的寄存器進(jìn)行設(shè)置,從而實(shí)現(xiàn)所需要的功能。
3 系統(tǒng)軟件設(shè)計(jì)
在對(duì)系統(tǒng)軟件進(jìn)行設(shè)計(jì)時(shí),可將誤碼測(cè)試系統(tǒng)的功能分為各個(gè)功能模塊,然后用VHDL語言編程實(shí)現(xiàn)FPGA芯片內(nèi)部各個(gè)功能模塊的硬件邏輯,最后整合完成設(shè)計(jì)。本誤碼測(cè)試系統(tǒng)的FP-GA內(nèi)核中的功能模塊有時(shí)鐘分配模塊、序列發(fā)送模塊、序列接收模塊、LCM控制模塊、I2C控制模塊、RC232串口控制模塊、鍵盤消抖及掃描處理模塊、總控制模塊等。FPGA內(nèi)核中各個(gè)模塊之間的相互關(guān)系如圖5所示。
3.1 鍵盤處理模塊
本系統(tǒng)中的鍵盤處理模塊包括按鍵的消抖和鍵盤的掃描處理。由于鍵盤模塊的設(shè)計(jì)直接和用戶的輸入控制相關(guān),用戶的一切控制結(jié)果都和按鍵輸入相對(duì)應(yīng),所以可將總控制模塊和按鍵處理模塊放在一起考慮。
3.2 時(shí)鐘電路
時(shí)鐘是整個(gè)系統(tǒng)設(shè)計(jì)中重要的一環(huán)。序列發(fā)送、序列接收、對(duì)E2PROM模塊的讀與寫、串口通信的波特率以及LCD顯示等都離不開時(shí)鐘信號(hào)的控制,這就需要系統(tǒng)內(nèi)有一個(gè)基準(zhǔn)的時(shí)鐘模塊來提供所需要的時(shí)鐘信號(hào)。時(shí)鐘模塊可由鎖相環(huán)和分頻器模塊構(gòu)成。通過對(duì)QuartusⅡ中mega-function模塊ALTPLL的定制可生成PLL,inclk0是外部有源晶振提供給FPGA的clk0引腳的16 MHz時(shí)鐘,可經(jīng)過PLL產(chǎn)生C0、C1兩個(gè)時(shí)鐘信號(hào),其中C0是inclk0的2倍,為32 MHz,可作為序列接收模塊中對(duì)測(cè)試碼進(jìn)行采樣的采樣時(shí)鐘。而C1是inclk0的3倍,為48 MHz,設(shè)計(jì)時(shí)可將C1信號(hào)送入分頻電路獲得2 MHz時(shí)鐘,作為序列發(fā)生器的時(shí)鐘;也可將C1信號(hào)經(jīng)分頻電路獲得1 MHz時(shí)鐘,作為I2C控制模塊的讀/寫及鍵盤模塊的時(shí)鐘信號(hào);當(dāng)C1信號(hào)送入U(xiǎn)ART控制模塊和LCM控制模塊后,可通過各自模塊內(nèi)部的分頻電路獲得所需要的時(shí)鐘。圖6所示的PLL模塊中方框內(nèi)表格中的各項(xiàng)內(nèi)容分別表示信號(hào)名稱、信號(hào)倍率、信號(hào)相位及占空比。
3.3 測(cè)試序列發(fā)送模塊的軟件設(shè)計(jì)
測(cè)試序列采用m序列時(shí),ITU建議用于數(shù)據(jù)傳輸設(shè)備測(cè)量誤碼的m序列的周期是511,其特征多項(xiàng)式(本原多項(xiàng)式)建議采用f(x)=x9+x5+1,本文應(yīng)用移位寄存器理論從本原多項(xiàng)式出發(fā)來產(chǎn)生m序列,本原多項(xiàng)式是f(x)=x9+x5+1的m序列的VHDL語言編程如下:
在Ahera的Quaaus II開發(fā)平臺(tái)下,本原多項(xiàng)式f(x)=x9+x5+1的m序列的仿真波形如圖7所示。
3.5 幀同步信號(hào)檢測(cè)
對(duì)幀同步電路的一項(xiàng)基本要求就是要迅速發(fā)現(xiàn)失步,以便及時(shí)恢復(fù)同步。若在發(fā)送端插入幀同步碼“0011011”,那么,在誤碼檢測(cè)時(shí),由于E1串行數(shù)據(jù)流中也會(huì)出現(xiàn)“0011011”這樣的內(nèi)容,因而難以判斷哪些是幀同步碼,哪些是數(shù)據(jù)內(nèi)容,所以,在設(shè)計(jì)中,可采用計(jì)數(shù)器來進(jìn)行幀同步碼的定位。
E1的幀周期為125μs,兩幀即為250 μs,這樣,若規(guī)定當(dāng)捕捉到第一個(gè)同步序列后,只有在一段時(shí)間內(nèi),每間隔250μs,可連續(xù)三次(計(jì)數(shù)器計(jì)數(shù))捕捉到這個(gè)同步序列時(shí),才認(rèn)為找到了幀同步。與此類似,在一段時(shí)間內(nèi),如果連續(xù)三次都沒有捕捉到幀同步序列,那么,即可認(rèn)為幀同步丟失。其幀同步信號(hào)檢測(cè)流程如圖9所示。
在單個(gè)幀同步序列捕捉的FPGA實(shí)現(xiàn)中,“0011011”序列的捕捉由輸入序列移位寄存器、相關(guān)運(yùn)算陣列和相關(guān)求和網(wǎng)絡(luò)等部分組合完成。工作時(shí),幀同步碼序列“0011O11”首先進(jìn)入相關(guān)運(yùn)算陣列,而輸入數(shù)據(jù)流則在時(shí)鐘驅(qū)動(dòng)下被送入輸入序列移位寄存器中。在相關(guān)運(yùn)算陣列對(duì)輸入序列和幀同步碼進(jìn)行一次相關(guān)運(yùn)算后,可將結(jié)果送入求和網(wǎng)絡(luò)。輸入序列移位寄存器每更新一位數(shù)據(jù),相關(guān)運(yùn)算陣列就進(jìn)行一次相關(guān)運(yùn)算,而求和網(wǎng)絡(luò)則對(duì)每次的結(jié)果都進(jìn)行求和計(jì)算。求和網(wǎng)絡(luò)輸出的相關(guān)值需要與一個(gè)檢測(cè)門限值作比較,以判斷是否出現(xiàn)同步碼。檢測(cè)同步碼“001 1011”的模塊如圖10所示,它由7個(gè)觸發(fā)器、7個(gè)異或非門和一個(gè)8輸入與非門構(gòu)成。該電路可以檢測(cè)出sequence串行輸入的數(shù)據(jù)流中包含的特殊碼字“0011011”,其中利用地線和電源線可將相關(guān)運(yùn)算陣列的一個(gè)輸入自右向左的連接成“0011011”,與同步碼字對(duì)應(yīng)的另一個(gè)輸入端接輸入序列移位寄存器的輸出,7個(gè)對(duì)應(yīng)位可進(jìn)行異或非(同或)運(yùn)算,對(duì)應(yīng)位匹配時(shí),結(jié)果為“1”。7個(gè)異或非門的運(yùn)算結(jié)果進(jìn)入求和網(wǎng)絡(luò)后,只有當(dāng)7位對(duì)應(yīng)位全都匹配時(shí),捕捉信號(hào)SYN才有效(有效狀態(tài)為“0”),此時(shí)表明找到了一次同步序列碼。
4 結(jié)束語
本文所介紹的誤碼測(cè)試系統(tǒng)采用以大規(guī)?,F(xiàn)場(chǎng)可編程邏輯器件FPGA及外圍接口芯片構(gòu)成,文中詳細(xì)介紹了系統(tǒng)硬件架構(gòu)中EI接口電路以及FPGA內(nèi)核中序列發(fā)生模塊和序列接收模塊中核心內(nèi)容的設(shè)計(jì)方法,并給出了部分模塊的仿真波形。整個(gè)誤碼測(cè)試系統(tǒng)儀器結(jié)構(gòu)緊湊。實(shí)驗(yàn)表明,該系統(tǒng)在線檢測(cè)的速度和穩(wěn)定度方面都有大的提高。