基于FPGA的幀同步提取方法的研究
2 同步提取原理
本文介紹的幀同步提取是在每一幀的前面加上長(zhǎng)度為128位的PN碼作為幀頭數(shù)據(jù)(如圖4所示),然后根據(jù)這些幀頭數(shù)據(jù)的相關(guān)性提取相關(guān)峰值,幀頭數(shù)據(jù)必須具有良好的自相關(guān)性和互相關(guān)性,當(dāng)和本地碼完全相同時(shí)其相關(guān)峰最大。
假設(shè)PN碼為p(n),經(jīng)A/D采樣后第n個(gè)采樣點(diǎn)的數(shù)據(jù)是data(n),噪聲是N(n),那么data(n)和PN碼之間的循環(huán)互相關(guān)函數(shù)為:
Rdp(k)=data(n)·p(k+n) (1)
式中,L是PN碼的長(zhǎng)度。當(dāng)data(n)正好與PN碼對(duì)齊,即data(n)=p(n)+N(n)時(shí),有:
Rdp(k)=Σ[p(n)+N(n)]·p(k+n)
=ΣN(n)·p(k+n)+Σp(n)·p(k+n) (2)
由于N(n)與PN是互不相關(guān)的,因此(2)式的前半部分相關(guān)值很小;而對(duì)于(2)式的后半部分,當(dāng)其與本地的PN碼完全對(duì)應(yīng),即p(n)=p(k+n)時(shí),Rdp(k)將得到最大相關(guān)值。對(duì)于L=128的PN碼,將會(huì)有一個(gè)21dB增益的相關(guān)峰,因此可以提取到明顯的相關(guān)峰。
由以上分析可以看出,在同步相關(guān)提取的實(shí)現(xiàn)當(dāng)中要用到反向器和乘法器,電路復(fù)雜,用FPGA設(shè)計(jì)必然會(huì)占很大的資源。經(jīng)過(guò)研究分析并參考其它文獻(xiàn)資料,這里采用補(bǔ)碼配對(duì)相減匹配濾波法,僅利用減法器和加法器即可,不僅使電路設(shè)計(jì)簡(jiǎn)單,而且使電路得到極大的優(yōu)化。在同步信息的復(fù)接部分用的幀頭信息是一個(gè)128位的M序列碼,而在同步提取部分用的則是該序列碼的鏡像碼。
假設(shè)幀同步復(fù)接部分的同步頭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
對(duì)鏡像之后的本地碼先進(jìn)行編號(hào),按照順序依次從1編到128。第一位數(shù)字0編為1,第二位數(shù)字0編為2,第三位數(shù)字編為3......。在鏡像本地碼中,第一個(gè)出現(xiàn)數(shù)字1的位置編號(hào)為8,第二個(gè)出現(xiàn)數(shù)字1的位置編號(hào)為11......。依次做以下配對(duì):
其中的映射關(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
在同步頭中,既可以用符號(hào)1表示電平系數(shù)+1,用符號(hào)0表示電平系數(shù)-1,也可以用符號(hào)1表示電平系數(shù)-1,用符號(hào)0表示電平系數(shù)+1。本文采用符號(hào)0表示電平系數(shù)+1,用符號(hào)1表示電平系數(shù)-1。
配對(duì)之后,對(duì)各個(gè)組合對(duì)應(yīng)的輸入移位樣點(diǎn)數(shù)據(jù)做補(bǔ)碼減法運(yùn)算。例如在組合(1,8)中,當(dāng)樣點(diǎn)數(shù)據(jù)進(jìn)入移位寄存器時(shí),將對(duì)應(yīng)移位寄存器中的并行第一位輸出作為被減數(shù),第8位輸出作為減數(shù)。其它組合類(lèi)似。當(dāng)樣點(diǎn)數(shù)據(jù)中的同步頭完全進(jìn)入移位寄存器時(shí),那么對(duì)應(yīng)并行輸出的第一位應(yīng)該是正值,而第8位對(duì)應(yīng)的是負(fù)值。兩個(gè)輸出做補(bǔ)碼相減。正值減去一個(gè)負(fù)值,輸出得到一個(gè)更大的數(shù)值。這時(shí),只有增加運(yùn)算的位數(shù),才能得到正確的運(yùn)算結(jié)果。
對(duì)128個(gè)編號(hào)可以做64個(gè)配對(duì),這就需要64個(gè)減法器。64個(gè)減法運(yùn)算同時(shí)進(jìn)行,有64個(gè)輸出結(jié)果。然后利用32個(gè)加法器對(duì)64個(gè)數(shù)值進(jìn)行加法運(yùn)算。逐級(jí)進(jìn)行相加運(yùn)算,最后得到一個(gè)相關(guān)峰值。假設(shè)data(n)是16bit的信息數(shù)據(jù),在逐級(jí)相加運(yùn)算當(dāng)中,不是直接采用這16位進(jìn)行補(bǔ)碼減法和補(bǔ)碼加法運(yùn)算,而是隨著一級(jí)級(jí)的相加運(yùn)算,位數(shù)也一位一位地增加。這樣就優(yōu)化了電路,節(jié)省了FPGA資源。
假設(shè)一個(gè)碼元采樣8個(gè)點(diǎn),經(jīng)I、Q分路(以QPSK調(diào)制為例)之后,每一正交路為4個(gè)點(diǎn)。相對(duì)于(1,8)配對(duì),在第一個(gè)補(bǔ)碼配對(duì)減法器中對(duì)應(yīng)的是{t13,t1[3..0]}和{t83,t8[3..0]};相對(duì)應(yīng)(2,11)配對(duì),在電路中對(duì)應(yīng)的是{t23,t2[3..0]}和{ta13,ta1[3..0]};依此類(lèi)推。
下面有必要分析一下為什么要表示成{t13,t1[3..0]}的形式。在補(bǔ)碼運(yùn)算中,由0101-1101=0101+0010+0001=0111+0001可以看到0111+0001的和值是一個(gè)更大的正值,是不能用4位表示的,因?yàn)檫@個(gè)時(shí)候和值本應(yīng)為1000,表示結(jié)果8(十進(jìn)制),而在補(bǔ)碼中卻為-8。如果將補(bǔ)碼的頭一位都進(jìn)行重復(fù),使其變?yōu)?位,就可完全避免這種情況的發(fā)生。例如:
00101-11101=00101+00010+00001=00111+00001=01000
11000-00111=11000+11000+00001=10000+00001=10001 通過(guò)這樣的一個(gè)變換,即不會(huì)產(chǎn)生溢出,也不會(huì)產(chǎn)生錯(cuò)誤,保證了電路進(jìn)行逐級(jí)運(yùn)算的正確性。
評(píng)論