摘? 要: 誤碼" title="誤碼">誤碼儀是評(píng)估信道性能的基本測(cè)量?jī)x器。先從誤碼儀的基本框圖入手,介紹其中各個(gè)功能模塊的作用;之后著重討論誤碼儀中關(guān)鍵模塊的實(shí)現(xiàn)方法;最后介紹誤碼儀的外圍附件和擴(kuò)展能力。
關(guān)鍵詞: 誤碼儀? FPGA? 位同步" title="位同步">位同步? 鎖相環(huán)? m序列
?
在實(shí)際工作中,常常需要誤碼儀能測(cè)試多種信道。但是目前市面上所銷售的誤碼儀大多只能測(cè)試電信部門的標(biāo)準(zhǔn)通信信道,低速以一、二次群為主,高速可達(dá)SDH信道速率;且價(jià)格昂貴、體積偏大,不能用于測(cè)試實(shí)際工作中大量存在的專用信道或自行架設(shè)的信道。這類信道多為水文監(jiān)測(cè)、氣象預(yù)報(bào)等特殊用途而設(shè)計(jì),一般對(duì)傳輸系統(tǒng)的可靠性要求較高。
本文所介紹的智能誤碼儀在設(shè)計(jì)時(shí)特別考慮了這類信道的測(cè)試要求。它結(jié)合FPGA及單片機(jī)的結(jié)構(gòu)特點(diǎn)進(jìn)行編程,可在較寬的速率范圍內(nèi)(150bit/s~2.048Mbit/s)實(shí)現(xiàn)智能位同步和快速碼序列同步。用戶不僅可以從LCD上了解信道的誤碼情況,還可以通過儀器與PC機(jī)連接,在個(gè)人電腦上看到某段時(shí)間內(nèi)的誤碼率折線圖和其它誤碼信息,并以此來了解系統(tǒng)的誤碼發(fā)生情況。為了便于在無人值守的情況下進(jìn)行誤碼測(cè)試,該誤碼儀內(nèi)置了大容量的E2PROM,可以保存被測(cè)系統(tǒng)最后4000次的誤碼事件(包括時(shí)間及誤碼率大小)。由于設(shè)計(jì)時(shí)采用了FPGA、單片機(jī)等大規(guī)模集成電路,該誤碼儀不僅體積小巧(采用貼片元件時(shí)僅香煙盒大小),而且成本低廉、功能強(qiáng)大,具有較高的實(shí)用價(jià)值和市場(chǎng)價(jià)值。
1 誤碼儀總體框圖及誤碼測(cè)試原理
1.1 誤碼儀整體結(jié)構(gòu)
圖1是該誤碼儀的整體設(shè)計(jì)框圖。
?
m序列發(fā)生模塊的主要功能是根據(jù)用戶的速率要求產(chǎn)生測(cè)試序列——m序列。實(shí)際設(shè)計(jì)時(shí),采用CCITT建議的用于低速數(shù)據(jù)傳輸設(shè)備測(cè)試誤碼的m序列,其特征多項(xiàng)式為X9+X5+1,周期為512。在外部附件的支持下,它還可以進(jìn)行多種碼型變換和調(diào)制解調(diào)。
位同步模塊的主要功能是從傳來的碼元中提取位同步信息——碼元時(shí)鐘, 并將這一時(shí)鐘提供給本地序列同步模塊,以便在本地恢復(fù)出與測(cè)試序列同步的檢驗(yàn)序列。
序列比較模塊用于比較檢驗(yàn)序列與測(cè)試序列的一致性。通過比較就能知道經(jīng)過被測(cè)信道傳輸后測(cè)試序列中有多少碼元產(chǎn)生了錯(cuò)誤,并以此評(píng)估被測(cè)信道的性能。由于m序列是周期序列,所以測(cè)試序列與檢驗(yàn)序列的比較必須在周期的同一位置開始進(jìn)行(即同相)。這也是本地序列同步模塊的另一項(xiàng)重要功能。完成了序列比較后,序列比較模塊將實(shí)時(shí)地把傳輸?shù)目偞a元數(shù)和誤碼數(shù)傳送給單片機(jī)。
單片機(jī)是整個(gè)誤碼儀的核心,它根據(jù)用戶的選擇控制各模塊的正常工作,并根據(jù)各模塊提供的狀態(tài)向用戶發(fā)出誤碼事件、狀態(tài)告警、故障提示等信息。在加電時(shí)對(duì)FPGA進(jìn)行配置也是單片機(jī)的一項(xiàng)重要任務(wù)。實(shí)際設(shè)計(jì)時(shí)選用了性價(jià)比極高的FPGA——Altera公司的FLEX10K10。該器件的配置文件有15K字節(jié),因此選用了大容量的通用單片機(jī)AT89C55。存儲(chǔ)器及時(shí)鐘為用戶查詢誤碼信息提供了方便,為了簡(jiǎn)化電路設(shè)計(jì),選用了I2C總線方式的E2PROM(24LC128)和專用時(shí)鐘芯片(PCF8563)。
1.2 主要模塊特點(diǎn)
在設(shè)計(jì)該誤碼儀時(shí),根據(jù)FPGA的結(jié)構(gòu)特點(diǎn)進(jìn)行編程,采用了獨(dú)特的算法,使該誤碼儀中位同步模塊和本地序列同步模塊具有較強(qiáng)的智能處理能力。
位同步模塊可自適應(yīng)地提取并跟蹤位同步時(shí)鐘。由于誤碼儀需要對(duì)多種非標(biāo)準(zhǔn)信道進(jìn)行測(cè)試,因此它必須能在較寬的速率范圍內(nèi)工作。在位同步模塊中采用了新型數(shù)字鎖相算法,使該誤碼儀能在不知道發(fā)端發(fā)送速率的情況下對(duì)信號(hào)進(jìn)行快速而準(zhǔn)確的位同步處理。在單片機(jī)的配合下,還可向用戶提供無信號(hào)提示、失步" title="失步">失步告警等多種信息。
本地序列同步模塊可實(shí)現(xiàn)快速序列同步。完成位同步后,誤碼儀還需進(jìn)行序列同步。為了減少序列同步的時(shí)間,設(shè)計(jì)了快速序列同步算法,使誤碼儀能在不知道發(fā)送端m序列發(fā)生器初始狀態(tài)的情況下進(jìn)行快速盲同步,并提供序列失步告警和序列失步后快速恢復(fù)功能。因此,該誤碼儀不僅可以用于對(duì)信道進(jìn)行閉環(huán)測(cè)試,而且還能方便地進(jìn)行開環(huán)測(cè)試。
1.3 誤碼儀基本測(cè)試過程
m序列發(fā)生模塊首先根據(jù)用戶的速率要求發(fā)送測(cè)試序列。該序列經(jīng)過被測(cè)信道傳輸后到達(dá)接收端" title="接收端">接收端,并送入位于FPGA內(nèi)的位同步模塊。位同步模塊恢復(fù)碼元時(shí)鐘成功后,會(huì)將這一時(shí)鐘送至其它模塊,并通知單片機(jī)位同步成功。其它模塊利用本地時(shí)鐘完成檢驗(yàn)序列恢復(fù)、同步及比較,并由此得到誤碼信息:誤碼數(shù)和總碼數(shù)。該信息實(shí)時(shí)傳送給單片機(jī)后,單片機(jī)每隔1秒進(jìn)行一次誤碼率的計(jì)算,并將具體日期、時(shí)間和誤碼率大小顯示在LCD上。如果誤碼率大于0則認(rèn)為發(fā)生了一次誤碼事件,單片機(jī)會(huì)將此事件發(fā)生的時(shí)間和誤碼率的大小記錄在儲(chǔ)存器內(nèi),并通過RS232串口上傳至PC機(jī)。
2 核心部分設(shè)計(jì)
FPGA中的位同步模塊和序列同步模塊是實(shí)現(xiàn)誤碼儀的關(guān)鍵。這兩個(gè)模塊設(shè)計(jì)得好壞直接影響著誤碼儀的整體性能。同時(shí),誤碼儀智能能力的實(shí)現(xiàn)也離不開單片機(jī)的有效工作。
2.1 位同步模塊
實(shí)際應(yīng)用中,由于不同的被測(cè)信道采用不同的技術(shù),因此其傳輸方式、傳輸速率、復(fù)雜程度都各不相同。這就要求誤碼儀中的位同步模塊具有較強(qiáng)的適應(yīng)能力。一般常見的同步方法如插入導(dǎo)頻法、濾波法等都無法滿足信道多變的要求[5]。為此,根據(jù)數(shù)字鎖相環(huán)的基本原理并結(jié)合FPGA的結(jié)構(gòu)特點(diǎn),研究了一種自適應(yīng)的智能鎖相算法,該算法可使誤碼儀在較寬的速率范圍內(nèi)對(duì)信號(hào)時(shí)鐘進(jìn)行智能提取和跟蹤,具有較高的實(shí)用價(jià)值。
圖2是該位同步模塊的結(jié)構(gòu)框圖。為了使接收端能快速、準(zhǔn)確地提取碼元時(shí)鐘,發(fā)送端在發(fā)送m序列前應(yīng)先發(fā)送一定數(shù)量的0101序列(見圖3中的S1),其中“0”和“1”的寬度與單個(gè)碼元寬度相同。在接收端預(yù)先不知道信號(hào)單個(gè)碼元寬度(即碼元時(shí)鐘)的情況下,位同步模塊首先進(jìn)行碼元寬度檢測(cè)。這一工作主要由碼元寬度計(jì)數(shù)器完成。該計(jì)數(shù)器在高速全局時(shí)鐘驅(qū)動(dòng)下分別對(duì)信號(hào)中的“0”、“1”電平進(jìn)行寬度計(jì)數(shù)。
?
?
由于發(fā)送的是0101序列,因此碼元寬度計(jì)數(shù)器的計(jì)數(shù)值N將保持在一定閾值范圍內(nèi),這一N值表示了發(fā)來信號(hào)碼元寬度相當(dāng)于N個(gè)全局時(shí)鐘寬度。由此,位同步模塊便獲得了發(fā)來信號(hào)的單個(gè)碼元寬度信息。之后,位同步模塊在傳輸信號(hào)的上升沿或下降沿啟動(dòng)本地N計(jì)數(shù)器,產(chǎn)生與發(fā)端信號(hào)同頻的本地時(shí)鐘S2。S2經(jīng)過一個(gè)定值延時(shí)器延時(shí)Nx個(gè)全局時(shí)鐘寬度后,得到信號(hào)S3。S3與S1在鑒相器" title="鑒相器">鑒相器中進(jìn)行異或門鑒相,其結(jié)果為S4。由圖3可見,若S4中高電平寬度等于Nx個(gè)全局時(shí)鐘寬度,則本地時(shí)鐘S2與發(fā)端時(shí)鐘S1同相。若S4中高電平寬度大于Nx,則本地時(shí)鐘滯后,反之則超前。由此得到了本地時(shí)鐘超前或滯后的信息。控制器根據(jù)這一信息對(duì)本地N計(jì)數(shù)器進(jìn)行加、扣脈沖操作,使得本地時(shí)鐘與發(fā)端時(shí)鐘保持同相。
在m序列中,連0、連1的情況很多,為了防止鑒相器在此期間誤操作,設(shè)計(jì)了判別及控制電路,在信號(hào)出現(xiàn)連0或連1時(shí)使鑒相器不操作,讓本地N計(jì)數(shù)器始終以N為計(jì)數(shù)值計(jì)數(shù)。采用這種同步方法后,不僅誤碼儀同步適應(yīng)范圍加寬,而且本地恢復(fù)時(shí)鐘的精度也僅與全局時(shí)鐘有關(guān),而與發(fā)端信號(hào)速率無關(guān)。實(shí)際測(cè)試證實(shí),在信號(hào)存在50個(gè)連0時(shí),位同步模塊仍能正常工作。
2.2 序列同步模塊
前面已經(jīng)提到,m序列是周期序列,測(cè)試序列和檢驗(yàn)序列的比較應(yīng)以周期內(nèi)的同一位置作為起點(diǎn)。因此,在序列比較前應(yīng)首先進(jìn)行序列同步。常見的序列同步方法有:滑動(dòng)相關(guān)捕捉法、序列相關(guān)捕捉法、SAW器件捕捉法等[6]。這些方法都是利用序列的相關(guān)特性進(jìn)行同步的,存在著結(jié)構(gòu)復(fù)雜、同步時(shí)間較長(zhǎng)等缺陷,不適合用FPGA實(shí)現(xiàn)。為了使誤碼儀能在不知道發(fā)送端序列發(fā)生器初始狀態(tài)的情況下進(jìn)行快速盲同步,在實(shí)際設(shè)計(jì)中采用了開關(guān)門m序列同步算法[7]。其原理框圖如圖4所示。
?
在初始狀態(tài)下,開關(guān)K置于B位置,發(fā)端送來的測(cè)試序列在完成位同步后移位送入寄存器an-1…a0。存滿后,開關(guān)K置于A位置。寄存器an-1…a0和模二加法器在本地時(shí)鐘的驅(qū)動(dòng)下產(chǎn)生出檢驗(yàn)序列。由于m序列的下一存儲(chǔ)器狀態(tài)組合僅取決于當(dāng)前的狀態(tài)組合,因此,如果最初的9個(gè)接收碼元是正確的,則隨后產(chǎn)生的所有碼元都是與測(cè)試序列相同和同步的。之后,測(cè)試序列與檢驗(yàn)序列需要進(jìn)行一次相關(guān)比較,如在若干個(gè)(如5個(gè))碼元周期內(nèi)其相關(guān)值超過閾值,則可認(rèn)為兩序列同步,否則需要重新進(jìn)行同步操作。
采用這一方法后,序列同步時(shí)間大大縮短,有利于進(jìn)行快速測(cè)試。
2.3 單片機(jī)軟件的設(shè)計(jì)
單片機(jī)在誤碼儀中承擔(dān)著控制核心的作用。其實(shí)際工作流程如圖5所示。
?
儀器加電復(fù)位后單片機(jī)首先配置FPGA。配置成功后,單片機(jī)等待用戶的鍵盤指令并確定測(cè)試模式和速率。根據(jù)用戶的選擇,單片機(jī)將及時(shí)地調(diào)整FPGA內(nèi)各模塊的工作參數(shù)。用戶選擇測(cè)試開始后,單片機(jī)首先檢測(cè)FPGA中位同步模塊是否工作正常。根據(jù)位同步模塊的工作情況,單片機(jī)可向用戶發(fā)出無信號(hào)及失步告警,提示用戶檢查線路。位同步成功后,單片機(jī)每隔1秒讀取一次誤碼數(shù)據(jù)并進(jìn)行分析計(jì)算。若誤碼率大于0.5,則認(rèn)為序列同步失敗,單片機(jī)要求序列同步模塊重新進(jìn)行同步操作。若連續(xù)3秒同步無效,則認(rèn)為位同步失效,單片機(jī)將發(fā)出失步告警,并提醒用戶發(fā)送端速率可能已改變或信道干擾嚴(yán)重。在此期間,誤碼率的顯示和存儲(chǔ)都不受影響。
在發(fā)生誤碼事件后,單片機(jī)會(huì)及時(shí)地通過I2C總線將其存儲(chǔ)于外部E2PROM中,并及時(shí)上傳PC機(jī)。用戶可通過LCD實(shí)時(shí)地了解誤碼測(cè)試情況,并在測(cè)試中隨時(shí)查詢存儲(chǔ)器中的誤碼信息。
3 誤碼儀的擴(kuò)展和再升級(jí)
智能誤碼儀的設(shè)計(jì)和開發(fā)面向的是多種傳輸信道。為了適應(yīng)不同信道的傳輸方式,設(shè)計(jì)了大量的外部接口配件,每一種配件提供了不同的碼型變換(HDB3等)和信號(hào)調(diào)制解調(diào)方式(FSK等)。用戶可以根據(jù)實(shí)際測(cè)試需要進(jìn)行選擇。采用這種靈活的配置方式后,用戶不僅降低了使用成本,而且提高了測(cè)試的針對(duì)性。
為了提高該誤碼儀的再升級(jí)和可移植能力,選用了單片機(jī)和FPGA作為核心器件。其中FPGA采用模塊化的設(shè)計(jì)思想,其中的成熟模塊可被其它基于FPGA的系統(tǒng)或模塊調(diào)用。對(duì)于那些需要隨時(shí)測(cè)試信道誤碼而又不希望另外購買誤碼儀的用戶來說,將已設(shè)計(jì)好的測(cè)試模塊移植到自己的系統(tǒng)中將是一個(gè)不錯(cuò)的選擇。同時(shí),FPGA的正常運(yùn)行需要對(duì)其進(jìn)行正確的配置,不同的配置文件將使FPGA產(chǎn)生不同的工作效能。用戶通過下載最新的配置文件可以方便地實(shí)現(xiàn)系統(tǒng)的軟升級(jí)。
近幾年來,“虛擬儀器”技術(shù)逐漸成熟,讓PC機(jī)直接配置或部分控制FPGA不僅可以減輕單片機(jī)的工作負(fù)擔(dān),而且可以通過修改PC機(jī)上的軟件實(shí)現(xiàn)對(duì)專用信道測(cè)試功能的優(yōu)化。本文所介紹的誤碼儀在開發(fā)時(shí)已注意在這方面留下足夠的拓展空間,只要開發(fā)出更為復(fù)雜的PC機(jī)客戶端服務(wù)程序,無需改動(dòng)現(xiàn)有的設(shè)備就能實(shí)現(xiàn)在PC機(jī)上進(jìn)行誤碼測(cè)試操作。
本文所介紹的智能誤碼儀采用大規(guī)??删幊碳呻娐纷鳛楹诵?具有體積小巧、成本低廉、性能優(yōu)異、可拓展能力強(qiáng)的特點(diǎn)。尤其是FPGA中的自適應(yīng)位同步模塊和快速序列同步模塊設(shè)計(jì)獨(dú)特、功能完善,具有較高的應(yīng)用價(jià)值。隨著該誤碼儀外部設(shè)備的不斷完善和改進(jìn),它將向更多的專業(yè)用戶提供更全面更優(yōu)質(zhì)的支持與服務(wù)。
?
參考文獻(xiàn)
1 趙雅興.FPGA原理、設(shè)計(jì)與應(yīng)用.天津:天津大學(xué)出版社,1998.10
2 徐志軍.大規(guī)??删幊踢壿嬈骷捌鋺?yīng)用.西安:電子科技大學(xué)出版社,2000.11
3 胡漢才.單片機(jī)原理及系統(tǒng)設(shè)計(jì).北京:清華大學(xué)出版社,2001.10
4 張厥盛,鄭繼禹,萬心平.鎖相技術(shù).西安?押電子科技大學(xué)出版社,? 1994.06
5 樊昌信, 詹道庸, 徐炳祥等.通信原理.北京:國防工業(yè)出版社,1995.10
6 查光明.擴(kuò)頻通信.西安?押電子科技大學(xué)出版社, 1990.12
7 Simon M K,? Omura J K,? Scholtz R A and Levitt B? K. Spread Spectrum Communications. Computer Science
? Press Inc.,? Rockville,? Md.,? 1985