基于FPGA的智能誤碼測(cè)試儀
1.3 誤碼儀基本測(cè)試過(guò)程
m序列發(fā)生模塊首先根據(jù)用戶的速率要求發(fā)送測(cè)試序列。該序列經(jīng)過(guò)被測(cè)信道傳輸后到達(dá)接收端,并送入位于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),并通過(guò)RS232串口上傳至PC機(jī)。
2 核心部分設(shè)計(jì)
FPGA中的位同步模塊和序列同步模塊是實(shí)現(xiàn)誤碼儀的關(guān)鍵。這兩個(gè)模塊設(shè)計(jì)得好壞直接影響著誤碼儀的整體性能。同時(shí),誤碼儀智能能力的實(shí)現(xiàn)也離不開(kāi)單片機(jī)的有效工作。
2.1 位同步模塊
實(shí)際應(yīng)用中,由于不同的被測(cè)信道采用不同的技術(shù),因此其傳輸方式、傳輸速率、復(fù)雜程度都各不相同。這就要求誤碼儀中的位同步模塊具有較強(qiáng)的適應(yīng)能力。一般常見(jiàn)的同步方法如插入導(dǎo)頻法、濾波法等都無(wú)法滿足信道多變的要求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序列(見(jiàn)圖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ā)來(lái)信號(hào)碼元寬度相當(dāng)于N個(gè)全局時(shí)鐘寬度。由此,位同步模塊便獲得了發(fā)來(lái)信號(hào)的單個(gè)碼元寬度信息。之后,位同步模塊在傳輸信號(hào)的上升沿或下降沿啟動(dòng)本地N計(jì)數(shù)器,產(chǎn)生與發(fā)端信號(hào)同頻的本地時(shí)鐘S2。S2經(jīng)過(guò)一個(gè)定值延時(shí)器延時(shí)Nx個(gè)全局時(shí)鐘寬度后,得到信號(hào)S3。S3與S1在鑒相器中進(jìn)行異或門鑒相,其結(jié)果為S4。由圖3可見(jiàn),若S4中高電平寬度等于Nx個(gè)全局時(shí)鐘寬度,則本地時(shí)鐘S2與發(fā)端時(shí)鐘S1同相。若S4中高電平寬度大于Nx,則本地時(shí)鐘滯后,反之則超前。由此得到了本地時(shí)鐘超前或滯后的信息。控制器根據(jù)這一信息對(duì)本地N計(jì)數(shù)器進(jìn)行加、扣脈沖操作,使得本地時(shí)鐘與發(fā)端時(shí)鐘保持同相。
圖4 序列同步模塊框圖
在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)速率無(wú)關(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)行序列同步。常見(jià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ì)中采用了開(kāi)關(guān)門m序列同步算法7。其原理框圖如圖4所示。
在初始狀態(tài)下,開(kāi)關(guān)K置于B位置,發(fā)端送來(lái)的測(cè)試序列在完成位同步后移位送入寄存器an-1…a0。存滿后,開(kāi)關(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)值超過(guò)閾值,則可認(rèn)為兩序列同步,否則需要重新進(jìn)行同步操作。
采用這一方法后,序列同步時(shí)間大大縮短,有利于進(jìn)行快速測(cè)試。
評(píng)論