新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的幀同步提取方法的研究

        基于FPGA的幀同步提取方法的研究

        作者: 時間:2012-11-06 來源:網絡 收藏

        2 同步提取原理

        本文介紹的提取是在每一幀的前面加上長度為128位的PN碼作為幀頭數據(如圖4所示),然后根據這些幀頭數據的相關性提取相關峰值,幀頭數據必須具有良好的自相關性和互相關性,當和本地碼完全相同時其相關峰最大。

        假設PN碼為p(n),經A/D采樣后第n個采樣點的數據是data(n),噪聲是N(n),那么data(n)和PN碼之間的循環互相關函數為:

        Rdp(k)=data(n)·p(k+n)  (1)

        式中,L是PN碼的長度。當data(n)正好與PN碼對齊,即data(n)=p(n)+N(n)時,有:

        Rdp(k)=Σ[p(n)+N(n)]·p(k+n)

        =ΣN(n)·p(k+n)+Σp(n)·p(k+n) (2)

        由于N(n)與PN是互不相關的,因此(2)式的前半部分相關值很小;而對于(2)式的后半部分,當其與本地的PN碼完全對應,即p(n)=p(k+n)時,Rdp(k)將得到最大相關值。對于L=128的PN碼,將會有一個21dB增益的相關峰,因此可以提取到明顯的相關峰。

        由以上分析可以看出,在同步相關提取的實現當中要用到反向器和乘法器,電路復雜,用設計必然會占很大的資源。經過研究分析并參考其它文獻資料,這里采用補碼配對相減匹配濾波法,僅利用減法器和加法器即可,不僅使電路設計簡單,而且使電路得到極大的優化。在同步信息的復接部分用的幀頭信息是一個128位的M序列碼,而在同步提取部分用的則是該序列碼的鏡像碼。

        假設復接部分的同步頭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。第一位數字0編為1,第二位數字0編為2,第三位數字編為3......。在鏡像本地碼中,第一個出現數字1的位置編號為8,第二個出現數字1的位置編號為11......。依次做以下配對:

        其中的映射關系是: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表示電平系數+1,用符號0表示電平系數-1,也可以用符號1表示電平系數-1,用符號0表示電平系數+1。本文采用符號0表示電平系數+1,用符號1表示電平系數-1。

        配對之后,對各個組合對應的輸入移位樣點數據做補碼減法運算。例如在組合(1,8)中,當樣點數據進入移位寄存器時,將對應移位寄存器中的并行第一位輸出作為被減數,第8位輸出作為減數。其它組合類似。當樣點數據中的同步頭完全進入移位寄存器時,那么對應并行輸出的第一位應該是正值,而第8位對應的是負值。兩個輸出做補碼相減。正值減去一個負值,輸出得到一個更大的數值。這時,只有增加運算的位數,才能得到正確的運算結果。

        對128個編號可以做64個配對,這就需要64個減法器。64個減法運算同時進行,有64個輸出結果。然后利用32個加法器對64個數值進行加法運算。逐級進行相加運算,最后得到一個相關峰值。假設data(n)是16bit的信息數據,在逐級相加運算當中,不是直接采用這16位進行補碼減法和補碼加法運算,而是隨著一級級的相加運算,位數也一位一位地增加。這樣就優化了電路,節省了資源。

        假設一個碼元采樣8個點,經I、Q分路(以QPSK調制為例)之后,每一正交路為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,表示結果8(十進制),而在補碼中卻為-8。如果將補碼的頭一位都進行重復,使其變為5位,就可完全避免這種情況的發生。例如:

        00101-11101=00101+00010+00001=00111+00001=01000

        11000-00111=11000+11000+00001=10000+00001=10001 通過這樣的一個變換,即不會產生溢出,也不會產生錯誤,保證了電路進行逐級運算的正確性。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 时尚| 吉水县| 色达县| 临沂市| 南木林县| 买车| 上思县| 余姚市| 武穴市| 班玛县| 武乡县| 涞源县| 双鸭山市| 石首市| 大新县| 富顺县| 镇原县| 新平| 区。| 永州市| 曲阜市| 和龙市| 巴林右旗| 时尚| 杂多县| 宁化县| 金坛市| 浦城县| 于田县| 兴宁市| 牙克石市| 东兴市| 喀喇| 武穴市| 马公市| 崇明县| 英山县| 上思县| 陆丰市| 庄浪县| 新营市|