一種基于FPGA的幀同步提取方法的研究
在可靠的通信系統(tǒng)中,要保證接收端能正確解調(diào)出信息,必須要有一個同步系統(tǒng),以實現(xiàn)發(fā)送端和接收端的同步,因此同步提取在通信系統(tǒng)中是至關(guān)重要的。一個簡單的接收系統(tǒng)框圖如圖1所示。
本文介紹一種基于現(xiàn)場可編程門陣列(FPGA)的同步方案。FPGA是與傳統(tǒng)PLD不同的一類可編程ASIC,它是將門陣列的通用結(jié)構(gòu)與PLD的現(xiàn)場可編程特性結(jié)合于一體的新型器件,最早由美國Xilinx公司于1985年推出。FPGA具有集成度高、通用性好、設(shè)計靈活、開發(fā)周期短、編程方便、產(chǎn)品上市快捷等特點,它的門數(shù)可達100萬門以上。近年來,FPGA在系統(tǒng)的硬件設(shè)計方面得到了廣泛的應用。
1 同步序列碼
本文介紹的幀同步提取是在每一幀的前面加擴頻碼,該擴頻碼必須具有良好的自相關(guān)性和互相關(guān)特性。表1是m序列碼和Gold系列碼的性能比較,從表中可以看出,m序列碼的自相關(guān)性和互相關(guān)特性要比Gold系列碼好得多,m序列碼作為同步頭具有較強的抗干擾能力和較低的截獲概率,而且長的m序列更容易在一定的強噪聲中被提取,這樣就能夠充分保證數(shù)據(jù)的正常通信。因此相對于Gold系列碼來說,m序列碼更適合于作為同步頭。本文的同步序列碼指的是M序列碼,M序列碼是由m序列碼得到的,即在相應的m序列碼后補零,用以實現(xiàn)PN碼的相等匹配,因為對應m序列碼來說,1的個數(shù)總是比0的個數(shù)多一個。
利用相關(guān)法,在同步頭沒有來臨之時,其相關(guān)峰比較低;如果數(shù)據(jù)中的同步頭和本地同步頭完全對齊,那么就能夠出現(xiàn)大的相關(guān)峰值,但這個峰值可能不會達到理論值,這是因為在數(shù)據(jù)傳輸中,數(shù)據(jù)流包括同步頭都要受到噪聲的干擾。因此,同步提取還要看同步是在一個什么樣的噪聲環(huán)境中才能良好工作。本文介紹的是長度為128的M序列碼作為同步頭的同步提取方法。之所以取長度為128的PN碼作為同步信息,一方面是考慮到同步提取的復雜性要求同步信息不能太長,另一方面是要滿足相關(guān)峰值盡可能的大,長度為128的PN碼可以提供21dB的處理增益,這使得在一定的噪聲背景下仍然可以提取到相關(guān)峰值。
圖2是在信噪比為0dB下的相關(guān)情況??梢钥闯鲈?dB下長度為128的M序列碼作為同步頭的相關(guān)特性是良好的。圖3是在信噪比為-7dB的情況下做的仿真??梢园l(fā)現(xiàn),由噪聲所產(chǎn)生的相關(guān)峰增高,有超過最高相關(guān)峰的趨勢。經(jīng)過實驗,信噪比繼續(xù)降低時,真正的相關(guān)峰就會被噪聲所產(chǎn)生的相關(guān)峰淹沒,這樣就不能提取出相關(guān)峰。因此,同步提取要考慮噪聲的影響。
2 同步提取原理
本文介紹的幀同步提取是在每一幀的前面加上長度為128位的PN碼作為幀頭數(shù)據(jù)(如圖4所示),然后根據(jù)這些幀頭數(shù)據(jù)的相關(guān)性提取相關(guān)峰值,幀頭數(shù)據(jù)必須具有良好的自相關(guān)性和互相關(guān)性,當和本地碼完全相同時其相關(guān)峰最大。
假設(shè)PN碼為p(n),經(jīng)A/D采樣后第n個采樣點的數(shù)據(jù)是data(n),噪聲是N(n),那么data(n)和PN碼之間的循環(huán)互相關(guān)函數(shù)為:
式中, L是PN碼的長度。當data(n)正好與PN碼對齊,即data(n)=p(n)+N(n)時,有:
由于N(n)與PN是互不相關(guān)的,因此(2)式的前半部分相關(guān)值很??;而對于(2)式的后半部分,當其與本地的PN碼完全對應,即p(n)=p(k+n)時,Rdp(k)將得到最大相關(guān)值。對于L=128的PN碼,將會有一個21dB增益的相關(guān)峰,因此可以提取到明顯的相關(guān)峰。
由以上分析可以看出,在同步相關(guān)提取的實現(xiàn)當中要用到反向器和乘法器,電路復雜,用FPGA設(shè)計必然會占很大的資源。經(jīng)過研究分析并參考其它文獻資料,這里采用補碼配對相減匹配濾波法,僅利用減法器和加法器即可,不僅使電路設(shè)計簡單,而且使電路得到極大的優(yōu)化。在同步信息的復接部分用的幀頭信息是一個128位的M序列碼,而在同步提取部分用的則是該序列碼的鏡像碼。
假設(shè)幀同步復接部分的同步頭M序列碼是:
1000010110/0010111010/1101100000/1100110101/0011100111/1011010000/1010101111/1010010100/0110111000/1111111000/0111011110/0101100100/10000000
而同步頭M序列碼的鏡像碼則為:
00000001/0010011010/0111101110/0001111111/0001110110/0010100101/1111010101/0000101101/1110011100/1010110011/0000011011/0101110100/0110100001
對鏡像之后的本地碼先進行編號,按照順序依次從1編到128。第一位數(shù)字0編為1,第二位數(shù)字0編為2,第三位數(shù)字編為3......。在鏡像本地碼中,第一個出現(xiàn)數(shù)字1的位置編號為8,第二個出現(xiàn)數(shù)字1的位置編號為11......。依次做以下配對:
其中的映射關(guān)系是:a→10,b→20,c→30,d→40,e→50,f→60,g→70,h→80,i→90,j→100,k→110,l→120
在同步頭中,既可以用符號1表示電平系數(shù)+1,用符號0表示電平系數(shù)-1,也可以用符號1表示電平系數(shù)-1,用符號0表示電平系數(shù)+1。本文采用符號0表示電平系數(shù)+1,用符號1表示電平系數(shù)-1。
配對之后,對各個組合對應的輸入移位樣點數(shù)據(jù)做補碼減法運算。例如在組合(1,8)中,當樣點數(shù)據(jù)進入移位寄存器時,將對應移位寄存器中的并行第一位輸出作為被減數(shù),第8位輸出作為減數(shù)。其它組合類似。當樣點數(shù)據(jù)中的同步頭完全進入移位寄存器時,那么對應并行輸出的第一位應該是正值,而第8位對應的是負值。兩個輸出做補碼相減。正值減去一個負值,輸出得到一個更大的數(shù)值。這時,只有增加運算的位數(shù),才能得到正確的運算結(jié)果。
對128個編號可以做64個配對,這就需要64個減法器。64個減法運算同時進行,有64個輸出結(jié)果。然后利用32個加法器對64個數(shù)值進行加法運算。逐級進行相加運算,最后得到一個相關(guān)峰值。假設(shè)data(n)是16bit的信息數(shù)據(jù),在逐級相加運算當中,不是直接采用這16位進行補碼減法和補碼加法運算,而是隨著一級級的相加運算,位數(shù)也一位一位地增加。這樣就優(yōu)化了電路,節(jié)省了FPGA資源。
假設(shè)一個碼元采樣8個點,經(jīng)I、Q分路(以QPSK調(diào)制為例)之后,每一正交路為4個點。相對于(1,8)配對,在第一個補碼配對減法器中對應的是{t13,t1[3..0]}和{t83,t8[3..0]};相對應(2,11)配對,在電路中對應的是{t23,t2[3..0]}和{ta13,ta1[3..0]};依此類推。
下面有必要分析一下為什么要表示成{t13,t1[3..0]}的形式。在補碼運算中,由0101-1101=0101+0010+0001=0111+0001可以看到0111+0001的和值是一個更大的正值,是不能用4位表示的,因為這個時候和值本應為1000,表示結(jié)果8(十進制),而在補碼中卻為-8。如果將補碼的頭一位都進行重復,使其變?yōu)?位,就可完全避免這種情況的發(fā)生。例如:
00101-11101=00101+00010+00001=00111+00001=01000
11000-00111=11000+11000+00001=10000+00001=10001
通過這樣的一個變換,即不會產(chǎn)生溢出,也不會產(chǎn)生錯誤,保證了電路進行逐級運算的正確性。
對應128長的同步頭,一個碼元采樣8個點,經(jīng)I、Q分路,每一正交路為4個點,每一路上為128×4=512個樣點。采用并行處理,在數(shù)據(jù)來到之時,分成四路,每一路做一個匹配濾波器,這樣可以直接由每個碼元對應的樣點組成匹配濾波器。將四個匹配濾波器產(chǎn)生的相關(guān)值比較出最大值,再和后邊門限比較,超過門限,即作為同步信號。同步提取的流程如圖5所示。
3 仿真結(jié)果
同步相關(guān)峰的仿真(利用Quartus2.1軟件)如圖6和圖7所示,clk是輸入時鐘,in是輸入數(shù)據(jù),sclr是清零信號,out是輸出信號。
用Quartus2.1軟件編譯適配,一片APEX EP20K400EBC652-1X只用了百分之三十的邏輯單元就可以實現(xiàn)同步提取。
一個完整的幀同步系統(tǒng)的工作狀態(tài)包括兩種,即捕獲狀態(tài)和鎖定狀態(tài),并且在一定條件下使它們互相間能自動切換。當幀同步信號捕捉到時,幀同步系統(tǒng)應立即由捕捉狀態(tài)轉(zhuǎn)換到鎖定狀態(tài)。同步提取完成后,只是完成了初始同步,即同步捕獲,還要進行同步鎖定,以防止假同步和漏同步的發(fā)生。限于篇幅,這兒僅僅討論了初始同步的實現(xiàn)。
通過對幀同步提取的FPGA實現(xiàn)可以看出,補碼配對相減匹配濾波法是一個很有效的方法。它提供了一種將擴頻碼作為同步信息進而實現(xiàn)幀同步提取的方法,并且在很大程度上節(jié)約了FPGA的內(nèi)部資源。這兒只是介紹了M序列碼作為同步頭的實現(xiàn)方案,對于m序列碼作為同步頭的實現(xiàn),只要稍微做一下修改,即加一些相應的延時單元就可以實現(xiàn)。
評論