導航:首頁 > 源碼編譯 > bcjr演算法通俗

bcjr演算法通俗

發布時間:2023-02-24 11:14:05

⑴ BCJR演算法的介紹

BCJR演算法由賈里尼克(FredJelinek)和波爾,庫克(Cocke)以及拉維夫(Raviv)設計,這是今天數字通信的最廣泛的兩個演算法之一(另一個是維特比演算法)。

⑵ 怎樣使用matlb中的lteturboencode函數

tail-biting的卷積碼和RM碼,以及奇偶校驗碼,最後一個CRC碼!
RM碼由Reed 和Muller提出,非常適合採用大數邏輯解碼,其解碼運算非常簡單。當然了,不是最佳解碼
演算法。但對RM而言,大數邏輯解碼的性能損失很小。
RM碼採用大數邏輯解碼的缺點是:不能接收軟輸入。這將直接降低編碼增益。
從而,在3GPP LTE協議中,上行鏈路的CQI信息,採用的是改進的RM碼(32,O)和(20,O)。這種碼的最大似然解碼演算法
實現的運算量很小。(其演算法的詳細流程,由TI提供,匯編寫的,有些奇怪的指令,沒看懂。)
為分組碼尋找可實現的最大似然解碼演算法,也是糾錯碼研究的一個方向。比如對RM碼採用類似卷積碼的網格表示方法,
從而將Viterbi,BCJR等ML演算法移植過來,就是基於這種考慮。

⑶ BCJR演算法的演算法步驟

計算前向概率
計算後向概率
基於其他信息(例如高斯白雜訊的方差,二進制對稱信道的位交叉概率)計算出平滑的概率。

⑷ 基於圖結構應用《編碼,解碼器》的設計與實現 這個畢業設計應該從什麼思路下手啊~~計算機專高手請指點

兄弟你這個論文有點難度了。不是隨便拉拉就行了。得找專業書籍慢慢找和高人指導了。
我查到點不指導有沒有用。
Turbo卷積碼(TCC)是3G無線系統中所採用的前向錯誤校正(FEC)機制的整體部分。然而,Turbo解碼器所帶來的計算負擔非常重,並不太適合採用傳統DSP或RISC處理器實現。由於現場可編程邏輯陣列(FPGA)內在的並行結構,FPGA為解決3G基站收發器中所需要的符號速率FEC和其它計算密集的任務提供了一個高性能信號處理平台基礎。

Turbo 編碼

級聯碼方案(Concatenated coding schemes)是為了通過結合兩個或更多相對簡單的分量或構造模塊碼來獲得較高的編碼增益。Turbo碼認為是對級聯碼結構的一種改進,其中採用迭代演算法對相關的碼序列進行解碼。Turbo碼是通過將兩個或更多分量碼應用到同一數據序列的不同交織版本上構成的。對於任何傳統單分量編碼,解碼器的最後一級生成的都是硬判決解碼數據位。為了使象Turbo碼這樣的級聯碼方案工作得更好,解碼演算法不應被限制為只能在解碼器間傳遞硬判決。為最好地利用每個解碼器獲得的信息,解碼演算法必須可以實現軟判決交換,而不是採用硬判決。對於採用兩個分量碼的系統,解碼的概念是指將來自一個解碼器的軟判決輸入到另一個解碼器的輸入,並將此過程重復幾次以獲得更好的判決,如圖1所示 。

3GPP Turbo 編碼器

圖2為3GPP編碼器。

輸入數據流輸入到RSC1,它為每個輸入比特生成一個對等比特(Parity Bit)。輸入數據還經過交織後由RSC2處理生成第二個對等比特流。
3GPP標準定義,輸入塊的長度在40至5114 位之間。編碼器生成一個速率為1/3的包括原始輸入位和兩個對等位的系統碼。通過打孔方法可以獲得1/2編碼速度的編碼。遞歸系統編碼器的實現比較直接,然而交織器則不那麼簡單,要比標準的卷積或塊交織器復雜。

一旦將輸入數據塊長度K 提供給編碼器以後,編碼器將計算交織矩陣行數R和列數 C,並創建相應的交織數據結構。R 和 C 是數據塊長度K的函數。在輸入符號被載入到交織矩陣以後,那麼將根據一定的順序進行行間交換和列間交換。交換模式是根據塊長度K選擇的(即依賴於K)。行和列交換完成後,通過逐列讀出交織矩陣數據就可以得到最終的交織序列。在數據讀出時需要進行刪減操作,以保證在輸出中只有正確的輸入符號,請注意,交織陣列包含的數據位通常比K個原始輸入符號要多 ,因為R C>K。然後,新的序列經過RSC2編碼生成第二個對等位流。
實現交織器的一種方法是在存儲器中存儲完整的交換序列。即,一旦K 給定,即調用一個初始化常式(運行在處理器上的軟體常式或利用FPGA中的功能單元)生成相應的交換序列,然後將這一信息存儲在存儲器中。然而,這一方法需要大量的存儲器。利用Virtex -E FPGA 技術提供的 4096位每塊的片上存儲器,將需要[5114 13/4096]=17個存儲器塊。

在我們的方法中,採用一個預處理引擎生成一個序列值(存儲),這一序列值被存儲起來,交織器地址發生器將使用這些序列值。這一硬體單元採用幾個小型數據結構(素數表)來計算所需要的序列。這一準備過程需要的時鍾周期數與信息塊的長度成比例。例如,對於K=40的塊需要280時鍾周期,而對於最大塊長度K=5114,則需要 5290個時鍾周期。該過程只需要在塊長度變化時進行。地址發生器利用這些更為緊湊的數據結構來實時生成交織地址。

3GPP Turbo 解碼器

解碼器包括兩個MAP(最大後驗概率)解碼器和幾個交織器。Turbo演算法的優良的性能源於可以在兩個MAP解碼器間共享可靠性信息(extrinsic data,外數據,或稱先驗數據)。

在我們的設計中,MAP解碼器採用的是Bahl, Cocke, Jelinek 和 Rajiv (BCJR) 演算法。BCJR演算法計算每個符號的最大後驗對數似然率,並且是一種真正的軟判決演算法。考慮到數據是以塊的形式傳輸的,因此可以在時間維中前向或反向搜索一個符號序列。對於任一序列,其出現概率都是單獨符號出現概率的乘積。由於問題是線性的,因此序列概述可以利用概率的對數和來代替。

為了與一般文獻中的習慣一致,我們將解碼迭代的前向和反向狀態概率分別利用 和 來表示。通常,BCJR演算法要求在接收到整個信息後才開始解碼。對於實時應用,這一限制可能太嚴格了。例如,3GPP Turbo解碼器將需要大量存儲器存儲一個5114符號信息塊的完全狀態結構(state trellis)。對於單片FPGA設計來說,這需要的存儲資源太多了。與維特比(Vitebi)演算法類似,我們可以先從全零向量 O和數據{yk}(k 從 n 到 n-L) 開始反向迭代。L次反向迭代可獲得非常好的 n-L近似值。只要L選擇合適,最終的狀態標志(state metric)就是正確的。可以利用這一性質在信息結束前就開始進行有效的位解碼。

L 被稱為收斂長度。其典型值大約是解碼器約束長度的數倍(通常為5至10倍),並隨著信噪比的降低而增加。

通常,Turbo解碼演算法將計算所有的 (對整塊信息),將這些數值存儲起來,然後在反向迭代中與反向狀態概率一起用來計算新的外信息(extrinsic information,或稱先驗信息)。我們的設計中採用了窗口化方法。

解碼過程以一個前向迭代開始,計算包含L 個接收符號的塊i的 值。同時,對未來(i+1)塊進行一個反向迭代(標號 )。對塊i+1的反向迭代結束時,就獲得了開始對塊i 進行反向迭代所需要的正確的 初始向量。 與此同時對數似然函數(Lall)也在進行。 每一 和 處理過程都需要8個max* 操作 - 每個針對狀態結構(tellis)中的8個結點之一。最終的對數似然計算需要14個並行max* 運算符。為了提供可接受的解碼速率,在設計中採用了38個max* 功能單元。

從 C描述到FPGA設計

FPGA Turbo 編碼解碼器設計是利用基於C的設計和驗證方法進行的,如圖3所示。

演算法開發階段採用具有定點C類型的Art Library 來對定點計算的位真(bit-true)效應進行准確建模。在這一階段考察了幾種可能演算法的定點性能。一旦選定正確的量化演算法,就可利用A|rtDesignerPro創建一個專用DSP架構。A|rtDesignerPro的一個最強大的功能之一是可以插入和利用專用的數據通道核心(稱為專用單元,ASU)。利用這些ASU加速器核心可以使我們處理Turbo解碼器演算法內在的計算復雜性。

A|rtDesignerPro可自動完成寄存器分配、調度和控制器生成。在Turbo編碼解碼器設計中, A|rtDesignerr的自動循環合並可獲得最佳的;任務調度,MAP解碼步驟的內部循環都只有一個周期長。

A|rtDesignerPro生成的最終結果是可綜合的寄存器級(RT-level) VHDL或Verilog 描述。基於C的工具流支持FPGA專用功能。例如,可利用BlockRAM自動構造RAM,而寄存器文件也可利用分布式存儲器而不是觸發器來實現 。

最後,邏輯綜合和Xilinx實施工具套件將RTL HDL 轉換為 FPGA 配置位流。

FPGA Turbo 編碼解碼器實現

A|rtDesigner創建的Turbo編碼器和解碼器核心硬體結構包含許多專用ASU加速器。其中最重要的一個加速器完成max* 操作。max* 運算符根據下式計算兩個冪值a 和 b:

max* (a,b)=ln(expc(a)+expc(b))。

如 圖4所示, max* 運算是通過選擇(a,b)最大值,並應用一個存儲在查找表(LUT)中的校正因子近似進行的。這一近似演算法非常適合利用Xilinx FPGA 實現,其中LUT是其最終基本構造單元。

結果

Turbo解碼演算法硬體字長的選擇極大地影響總體性能。利用C-to-FPGA設計流程,這一定點分析是完全在C環境中完成的。結果示於圖 5。

上圖顯示出了我們的浮點Turbo解碼器演算法和對應的定點演算法之間的性能差別。模擬是在5114塊長度、5次解碼迭代和AWGN信道模型情況下進行的。結果清晰明顯出性能的損失是非常小的。

我們的Turbo解碼器的定點性能做為解碼器迭代次數的函數 ,對於1.5 dB SNR,位錯率為10-6。

解碼器功能的實現非常具有挑戰性,我們同時針對Virtex-E和 Virtex-II 器件進行了適配。Virtex-II 器件實施是採用運行在1.85 speedfile資料庫上的Xilinx 4.1i 實施工具集完成的。利用XC2V1000BG575-5 FPGA實現的最終設計,達到了66 MHz 的時鍾性能,消耗了3,060個邏輯片 和 16個塊RAM。對於從40至 5114符號長度的塊,採用5次解碼迭代循環的情況下,解碼器達到了2 至6.5 百萬符號每秒(Msym/s)的吞吐量。編碼器佔用了903個邏輯片、3個塊RAM並支持83 MHz時鍾頻率。對於從40至5114位的塊長度,速率可達到9 至20 Msym/s。

能用上就好了,用不上別怪我。對不起哈~祝福你~

⑸ 乘積碼的三個步驟

(1)將信息元填入一個 2 k 行 1 k 列的矩陣;
(2)對矩陣的每一行,用一個( , ) 1 1 n k 系統分組碼 1 V 進行編碼,得到一個2 k 行1 n 列
的矩陣;
(3)對這個矩陣的每一列,用一個( , ) 2 2 n k 系統分組碼 2 V 進行編碼,最終得到一個2 n
行1 n 列的矩陣。
這樣得到的糾錯碼是一個1 2 1 2 (n ×n, k ×k)分組碼,所以稱為乘積碼。乘積碼的兩個編碼器是對排列順序不同的同一組信息元進行編碼,兩個編碼
器並行工作,沒有「內」「外」之分,統稱為分量編碼器。乘積碼也因此被稱為二維碼。同
樣,乘積碼也可以先按列編碼,再按行編碼,得到的碼字是完全一樣的。乘積碼的傳輸方式
也不唯一,可以按行傳輸、按列傳輸甚至按對角線傳輸。
與串列級聯碼一樣,傳統的乘積碼解碼方法把解碼過程分為兩步,先按行解碼,給出判
決結果,再按列解碼(先列後行也一樣)。這種解碼方式的復雜度只是兩個分量解碼器的復雜
度之和,解碼過程簡單,但不能充分發揮乘積碼的糾錯能力。採用前面提到的迭代解碼方式
能大大改善糾錯效果,但是為了使分組碼能採用迭代解碼,需要將它表示成卷積碼的網格圖
形式。1974 年Bahl、Cocke、Jelinek 和Raviv 提出的BCJR 迭代解碼演算法利用分組碼的校驗
矩陣解決了這個問題

⑹ 弗萊德里克賈里尼克是什麼專家

弗萊德里克賈里尼克是語音識別和自然語言處理的專家。

賈里尼克1932年出生,他家是捷克的一個較富裕猶太家庭,本來可以有很好的教育。但是,這些都被二戰打破了。父親死在了集中營,而賈里尼克整天混跡於街頭,戰爭結束後回到學校,很快趕上同班同學,但是也沒有得過A。

1949年母親帶她移民到美國,很窮,他只有打工補貼家用,上學自然也被耽誤。但是,他為的理想而努力的想法一直很堅定。最初,他想成為律師,為父親一樣的冤屈者辯護。但很快發現濃厚口語會讓他在法庭上吃虧。

他又立志成為醫生,但是被哈佛醫學院高昂學費擋在門外,剛好麻省理工給他提供全額獎學金,他就開始了電氣工程專業學習。在麻省理工,遇到了資訊理論鼻祖香濃博士,語言學大師賈格布森,這些大師對他影響很重要。

賈里尼克在麻省理工取得博士學位,在康奈爾任教,後去了IBM,在那裡,建立了空前絕後強大的研究隊伍,提出了統計語言識別的框架。他們的BCJR演算法被IBM列為IBM有史以來對人類貢獻的最大貢獻之一。

賈里尼克曾經跟隨資訊理論的創始人勞德·艾爾伍德·香農教授,深入地研究過數據通信的問題,是那個時代最好的通信專家。所以他在面對語音識別問題的時候,就自然而然地想到,語音識別其實可以類比成一個通信問題。

語音識別的本質,就是「說的人」要讓「聽的人」,明白自己的想法。這個過程可以分成三個步驟:

說話人把大腦里的想法組織成語言,通過語音表達出來;語音傳遞給收聽的人,在收聽人的大腦里從聲音信號轉變成神經信號;收聽人把神經信號轉換成說話人的想法。

這個過程,其實就相當於通信過程里的「編碼-傳輸-解碼」。所以,賈里尼克就想到了借用通信問題的解決思路,把語音識別不準的問題當成是通信過程里的噪音干擾問題,用大數據解決干擾的方法來解決語音識別的問題。

⑺ 簡單描述turbo解碼過程

Turbo碼主要的創新點在於利用似然比來調解兩個解碼器輸出的差異。每個解碼器都產生一>組對應m-輸入比特的假設(似然比),然後比較兩組假設結果,如果存在差異,則解碼器交換假設的結果。每個解碼器都可以利用對方的假設來估計新的假設,然後它們對新的假設結果進行比較,重復上述過程直至兩個解碼器得到同樣的假設為止。
這個過程與小強填字或者數獨類似。可以這么理解,兩個不同的人(解碼器)拿到同一個小強填字,但是他們採用不同的方式來解決填字的問題,一個只看橫/豎方向,另一個只看斜>線方向。當然,他們獨立做出來的結果不能保證完全正確,於是他們在填字的同時記下他們對於該結論的確定度,比如某些字他們敢保證絕不會出錯,某些字吃不準,某些是胡亂猜的。。。然後他們對比各自的結果及相應的確定度,通過參考對方的結果,雙方都可以根據差異得到一些啟示,然後他們根據這些啟示再次嘗試填字,重復以上過程直至兩人的結果完全相符(但還是不能確保和正確答案一樣,只能保證差不離)。是概率解碼演算法,也就是最大後驗概率演算法(MAP)。但在Turbo碼出現之前,信道編碼使用的概率解碼演算法是最大似然演算法(ML)。ML演算法是MAP演算法的簡化,即假設信源符號等概率出現,因此是次優的解碼演算法。Turbo碼的解碼演算法採用了MAP演算法,在解碼的結構上又做了改進,再次引入反饋的概念,取得了性能和復雜度之間的折衷。同時,Turbo 碼的解碼採用的是迭代解碼,這與經典的代數解碼是完全不同的。
Turbo 碼的解碼演算法是最早在BCJR 演算法的基礎上改進的,我們稱以MAP演算法,後來又形成Log-MAP演算法、Max-Log-MAP以及軟輸入軟輸出(SOVA)演算法。Turbo 碼的解碼結構圖
⒈Turbo 碼的解碼結構如圖所示. Turbo 解碼器有以下的特點:
1) 串列級聯
2) 迭代解碼
3) 在迭代解碼過程中交換的是外部信息
⒉ 概率解碼解碼原理及結構
解碼時首先對接收信息進行處理,兩個成員解碼器之間外部信息的傳遞就形成了一個循環迭代的結構。由於外部信息的作用,一定信噪比下的誤比特率將隨著循環次數的增加而降低。但同時外部信息與接受序列間的相關性也隨著解碼次數的增加而逐漸增加,外部信息所提供的糾錯能力也隨之減弱,在一定的循環次數之後,解碼性能將不再提高。

⑻ 8PSK的調制解調

對1800Hz單載波進行碼元速率恆為2400Bd的8PSK調制,即對於每個碼元調制所得的信號長度等於四分之三個載波信號周期。發送端完整的信號調制框圖如下所示:
信息的發送是以數據幀的形式進行發送的,每次只發送一個數據幀,而不是連續發送的,這樣信息在發送前發送端就不需要先跟接收端建立連接,但同時在對信號進行信源編碼,信道編碼和前導及探測報頭序列的過程中則降低了信號傳送的效率。數據幀主要包括兩部分即前導及探測報頭序列和所要傳輸的數據部分。
1、截尾卷積編碼
一般情況下,卷積編碼的時候在輸入信息序列輸入完畢後都還要再輸入一串零比特的數據用於對移位寄存器進行復位,這樣在一定程度上影響了信源的編碼效率。而截尾卷積編碼則是在每次編碼完成後不對移位寄存器進行復位操作,而是將上次編碼後編碼寄存器的狀態作為下次編碼時移位寄存器的初始狀態。這樣一方面使得信源的編碼的碼率得到了提高,另一方面也增加了信息的安全性,因為接收端只有知道發送端編碼器中的移位寄存器的初始狀態或者付出比較大的解碼代價的情況下才能對接收到的信號進行解調,否則解調出來的永遠是亂碼。
2、交織
碼元的交織其實是屬於信道編碼,交織的目的是通過將信息在信道中受到的突發連續差錯分散開來,使得接收到的信號中的差錯趨向於隨機差錯,降低接收端信息解調出錯的概率,從而提高通信中信息的可靠性。交織的方法一般是用兩個適當大小的矩陣,同一時間一個用於數據的存儲另外一個則用於數據的讀取,而且兩個矩陣的存取或者輸出是交替的。輸入序列按照逐行(列)的順序存儲到其中的一個矩陣中,而輸出序列則是按照逐列(行)的順序從另一個矩陣中讀取。通常矩陣越大,則對於連續性的突發錯誤的分散效果越好,但是編碼的時延也就越大。
3、Walsh碼
Walsh碼是一種同步正交碼,在同步傳輸的情況下,具有良好的自相關特性和處處為零的互相關特性。其編碼所得到的碼元都是取自Hadamard矩陣的行或者列。理論上,信號如果在信道中是相互正交的,那麼信號之間的相互干擾就可以達到零了。但是由於信號的多徑效應和其他非同步信號的干擾,使得信道中的信號並不是完全正交的,干擾也就不為零了。所以實際情況下,Walsh碼一般都只是作為擴頻碼來使用。
擴頻簡單地說就是將傳輸信號的帶寬擴展到更寬的頻帶上去。在信道的傳輸過程中,由於信號的頻譜擴展了,其幅值也隨之減小,使得信號很好地隱藏在雜訊之中,即可以用比較低的發送功率來傳輸信號,同時提高信號的保密性。而在接收端對信號進行解調的時候,只是將擴展後的信號的功率譜縮回來使得其功率譜的幅值大大增加,而並沒有改變接收信號中雜訊功率譜的幅值,這樣就能夠大大提高接收端的信噪比,從而提高信號的抗干擾能力。
4、PN碼
Walsh碼的自相關特性和互相關特性在實際的應用中都不夠理想,即信號經過多徑信道時,不同徑之間不同信號之間都會產生嚴重的干擾。為此,可以用相關性較好的偽隨機序列與Walsh碼模8相加,這時得到的碼元序列既保持了Walsh碼的正交性,同時又大大改善了其相關特性,使其相關功率譜的旁瓣大大減小。該調制中所用到的偽隨機序列即PN序列(Pseudorandom Noise偽雜訊序列)。通常所說的M序列和m序列即為短PN序列和長PN序列。將Walsh編碼和PN碼模8相加後,所得到的信息序列在傳輸中的抗多徑引起的干擾性能就能夠得到較大的提高了。
5、前導及探測報頭序列
前導序列及探測報頭就是在信息發送之間加在數據幀前相對於接收端已知的序列。前導及探測報頭序列的作用是用於接收端對信號的捕獲,信道的估計、均衡和對接收信號頻偏的估計。若沒有在發送信息前加上前導及探測報頭,則接收端沒法判斷接收到的信號到底是雜訊還是發送端發送的消息,信號也就無法解調。
6、8PSK調制
8PSK信號的調制主要包括對每輸入的三個比特信號映射到同相支路和正交支路上的相應電平,並對兩路的電平分別進行濾波,最後再將濾波所得的同相支路和正交支路的信號調制到頻帶上去。其調制框圖如下所示:

對信號進行濾波的作用是一方面對信號所佔的帶寬進行壓縮,另一方面是提高信號抗雜訊干擾的能力。當發送端和接收端所用到的濾波器都為根號升餘弦濾波器的時候,能夠有效地濾除信號傳輸過程中所受到的雜訊干擾,降低系統的誤碼率。
根號升餘弦濾波器的沖激響應為:

其中為根號升餘弦濾波器的滾降系數,濾波器的滾降系數越高則其濾波性能越好,同時減少抽樣定時脈沖的誤差,但是佔用的帶寬也就越寬,一般選擇在0.2—0.6之間。 接收端在對信號進行解調的時候主要解決的問題包括:
·傳輸過程中多普勒效應產生的頻移;
·時延產生的多徑效應;
·對接收到的碼元序列進行解碼。
8PSK信號接收端的解調框圖如下所示:

其中所包含的各個模塊及其功能如下所示:
1、去載波低通濾波
該模塊的是利用已知的發送端載波頻率的正弦波信號和接收采樣所得的信號進行相乘,所得的結果包括兩部分,即載波的倍頻部分和基帶部分,其中不考慮接收信號在傳輸過程中由於干擾導致的頻率變化。然後將所得的信號進行低通濾波,即可將前一步所得的信號中的載波倍頻部分濾除而只保留信號的基帶部分。該過程相當於將接收到信號的頻譜從一定的頻段上搬移到基帶上,以便於後面模塊對信號的解調。
2、信號的捕獲

在對信號進行解調前應先解決的問題是從什麼時候開始接收到的不是雜訊而是發送端發送過來的信息,即尋找信號的起始時刻。這時候就可以利用已知的發送數據幀的前導及探測報頭序列,在接收端用已知的前導及探測報頭序列和接收信號進行相關,理想情況下當接收端正好接收到完整的前導及探測報頭序列的時候相關值會達到最大,而在離最大相關值較遠的地方則相關值都會相對小得多。實現時,落入滑動窗的序列和本地序列做相關,然後做FFT變換,對變換後的譜峰進行判斷。之所以不直接用序列的相關值來進行判斷是因為相關值會受頻差的影響而使相關失效。當接收序列和本地序列同步的時候會,相關FFT會出現明顯的譜峰,而當沒有同步的時候,相關FFT不會出現明顯的譜峰。如果譜峰沒有達到門限,則采樣序列向前移動,若達到門限則將其記錄,並向前移動,將連續幾個點的譜峰都達到門限值的點作為粗同步的位置(一般要求要有連續五個相關值達到門限)。比較其譜峰值,選取譜峰最大的點作為捕獲點。譜峰的門限要根據實際經驗而定,因為信號在傳輸過程中信道的參數是變化的。實現信號的捕獲時即實現了信號的粗同步,粗同步可以用來實現粗頻偏估計。
數據幀頭位置的捕獲只是實現了信號的碼元級同步,之後還需進行位同步。捕獲是否成功很大程度上決定了接收端是否能夠接收到發送的信號,所以捕獲時的相關序列應該足夠長(探測報頭384碼元),從而確保系統有足夠的抗干擾能力。但是當序列太長時,FFT變換的計算量就很大,所需的時間也會比較長,可以將本地序列進行分段,然後進行分段的相關和FFT變換,以減少計算量,但是這樣帶來的後果是信號的捕獲率將會有所降低,所以要對運算量和捕獲率進行權衡。
滑動步長的大小和每次作相關FFT運算所需要的指令數有關,每個步長內DSP所能執行的指令數應該不少於每次相關FFT運算所需的指令數,不然就會影響到信號解調的實時性。
3、第一次頻偏估計

實際情況下,信號在傳輸的過程中由於受到各種各樣的干擾和多普勒效應的影響,當信號達到接收端的時候其頻率或多或少的都會發生一定的變化。所以接收機的目的不是在一個不變的頻率上接收信號,而是在不同的頻率上得到信號的不同部分,在對信號進行采樣之前要麼對接收信號的頻率進行調整,要麼對接收端的采樣頻率進行調整,事實上對接收到的信號頻率進行調整要比對采樣率進行調整簡單,所以一般情況下都是對接收信號的頻率進行調整,具體調整多少就要先對接收信號進行頻偏估計才知道。
第一次頻偏估計採用的方法是利用探測報頭碼元與本地序列進行相乘,若本地序列的頻率為,接收到的信號頻率為,那麼理想情況下,兩序列相乘則得到的結果中僅包含頻率為和的分量,其中即為所想要求的頻偏值。這時可以對相乘所得的結果進行FFT變換,將時域上的信號變換到頻域上去,就可以很容易地根據頻域中低頻段上的頻譜峰值的位置估計出頻偏的大小,最後再利用估計出的頻偏值對接收到的信號進行調整。由於前面的粗同步只是碼元級別上的同步,所以第一次頻偏估計所得到的頻偏值不夠精確,調整後的信號可能還存在一定的相位差。
4、位同步
信號的捕獲位置並不一定是最佳的采樣時刻,接收信號經過粗同步的調整後雖然頻率已經基本正確,但是其中可能還存在一定的相位差,所以必須對信號再次進行同步,即精同步。由於信號經過粗同步以後就已經實現了碼元級的同步,表明信號的精確采樣位置肯定在粗同步位置及其前一碼元和後一碼元之間的某個位置上,要找出其確切的位置則可以利用本地已知的探測報頭序列和從粗同步位置的前一碼元到後一碼元之間的序列進行滑動相關。相關值最大的位置即為所要尋找的精同步位置,即最佳采樣時刻的位置。
5、第二次頻偏估計

在對接收信號進行第一次頻偏估計和位同步之後,就基本上能夠使得探測報頭的位置精確到采樣點級別。但是由於第一次頻偏估計具有估計范圍大,估計精度差的特點,為了使得就收信號的頻率更加准確有必要對位同步後的信號再進行一次頻偏估計。第二次頻偏估計利用前面已經得到的接收信號中主徑和多徑的精確位置,將本地序列分別和主徑信號和多徑信號進行相關FFT,再將得到的兩個信號頻譜進行線性疊加,並進行線性擬合,這樣得到的頻譜圖包含主徑和多徑的信息,為頻偏估計提供了更加可靠的信息。第二次頻偏估計具有頻偏估計范圍小,估計精度高的特點,所以在高速移動的環境下,將兩次頻偏結合起來就能夠大大地提高信號傳輸的可靠性。
對於雙方都有信息收發的通信系統而言,可以將主要的頻偏工作交給其中的一方,而另一方則只要對收到的信號頻率進行稍微的調整就行了。如開始的時候發送端發送的信號頻率為,傳輸過程中由於多普勒效應使得接收端接收到的信號頻率為,若接收端能將其中的頻偏准確地估計出來,則下次原來的接收端在將新的消息發送給原來的發送端的時候就可以調整其發送信號的頻率為,而不是。理想情況下,如果信道的特性在兩個信號傳輸的過程中都保持不變的情況下,那麼原來發送端接收到的信號的頻率就為,就不用再對接收的信號進行頻偏估計了。
6、均衡
信道均衡的主要功能是用於消除由於信號在傳輸過程中經歷頻率選擇性衰落所引起的碼間干擾。一般情況下若要使用的不是自適應均衡,那麼在對信號進行均衡的時候要用到信道的各種參數,那麼就應先對信道進行估計。
信號在傳輸過程中會有多徑效應,所以應該對接收信號進行信道估計,找出其中的主徑和多徑(一般情況下只要找出其中一條主要的多徑即可)。信道估計即在粗同步位置周圍將接收信號和本地序列進行相關,找出其中的峰值,其目的就是找出接收信號中主徑信號和多徑信號的精確起始位置。在好的信道中,若信道的信噪比比較低,則主徑的第一個旁瓣和多徑的主瓣有可能重疊在一起,導致多徑判決出現偏差。這時可以採用主徑重構的方法來解決該問題,即利用本地序列的相關圖重構出理想情況下主徑的相關圖,然後再用總的相關圖減去主徑序列的相關圖,即可得到多徑序列的相關圖根據所得的主徑和多徑的位置就可以進行均衡了。
自適應均衡器中的均衡系數可以實現自動調整,所以均衡前可以先不對信道進行估計,經常使用的線性橫向均衡器(LTE)如下圖所示:

圖中抽頭系數的調整演算法包括最小均方誤差法(LMS)和遞歸最小二乘法(RLS)。其中LMS採用的准則是使均衡器的期望輸出值和實際輸出值之間的均方誤差(MSE)最小化。而RLS的准則是對初始時刻到當前時刻所有誤差的平方進行平均並使其最小化。由此可以看出雖然RLS演算法收斂性好,但是其運算量也大得多。
除了圖中所示的線性橫向均衡器外,還包括線性格型均衡器(LLE)、判決反饋均衡器(DFE)和分數間隔均衡器。其中線性格型均衡器最復雜,但收斂速度也快,系數也優良。判決反饋均衡器能夠很好地解決後尾效應,適於有嚴重失真的無線信道,但同時也可能導致誤碼擴散。分數間隔的均衡器和其他的均衡器不一樣,其他均衡器的采樣周期都是碼元周期,即都可以稱得上是碼率均衡器,但是分數間隔均衡器的采樣周期小於碼元周期的一半,故所得的信號不會出現頻譜的混疊現象。
7、截尾卷積解碼
由於截尾卷積碼在進行編碼前沒有對編碼器的移位寄存器進行復位操作,所以在接收端對其進行解碼的情況下,如果不清楚其初始狀態,那麼就要付出額外的代價才能對其進行解碼。目前主要的截尾卷積解碼方法包括循環維特比解碼演算法(CAV)和BCJR解碼演算法。通常在進行截尾卷積編碼時,會將一段數據序列的後m個碼字初始化編碼移位寄存器,從而使得其移位寄存器在編碼前和編碼後的狀態保持一致。其中循環維特比解碼演算法就是利用這一性質在接收端將接收到碼字序列的多個拷貝首尾相連,然後進行維特比解碼,在經過一定長度的解碼後最佳路徑和倖存路徑在很大程度上是一致的,這是就可以將找到的首尾狀態相等的碼塊作為最終的解碼結果。這樣就可以在不知道編碼移位寄存器初始狀態的情況下進行截尾卷積解碼,但其計算量要比一般情況下的卷積碼解碼計算量大得多。

⑼ Turbo碼的解碼原理

香農資訊理論告訴我們,最優的解碼演算法是概率解碼演算法,也就是最大後驗概率演算法(MAP)。但在Turbo碼出現之前,信道編碼使用的概率解碼演算法是最大似然演算法(ML)。ML演算法是MAP演算法的簡化,即假設信源符號等概率出現,因此是次優的解碼演算法。Turbo碼的解碼演算法採用了MAP演算法,在解碼的結構上又做了改進,再次引入反饋的概念,取得了性能和復雜度之間的折衷。同時,Turbo 碼的解碼採用的是迭代解碼,這與經典的代數解碼是完全不同的。
Turbo 碼的解碼演算法是最早在BCJR 演算法的基礎上改進的,我們稱以MAP演算法,後來又形成Log-MAP演算法、Max-Log-MAP以及軟輸入軟輸出(SOVA)演算法。Turbo 碼的解碼結構圖
⒈Turbo 碼的解碼結構如圖所示. Turbo 解碼器有以下的特點:
1) 串列級聯
2) 迭代解碼
3) 在迭代解碼過程中交換的是外部信息
⒉ 概率解碼解碼原理及結構
解碼時首先對接收信息進行處理,兩個成員解碼器之間外部信息的傳遞就形成了一個循環迭代的結構。由於外部信息的作用,一定信噪比下的誤比特率將隨著循環次數的增加而降低。但同時外部信息與接受序列間的相關性也隨著解碼次數的增加而逐漸增加,外部信息所提供的糾錯能力也隨之減弱,在一定的循環次數之後,解碼性能將不再提高。

閱讀全文

與bcjr演算法通俗相關的資料

熱點內容
廣東加密貨幣 瀏覽:216
利用python批量查詢系統 瀏覽:496
什麼app看左右臉 瀏覽:302
台灣小公主s解壓密碼 瀏覽:568
易語言鎖機軟體源碼 瀏覽:156
迅雷下載完成無法解壓 瀏覽:592
硬碟分區命令圖解 瀏覽:447
當前雲伺服器如何關閉 瀏覽:78
mac下python在哪 瀏覽:641
廣東惠州DNS伺服器地址 瀏覽:357
編譯影片時軟體渲染錯誤 瀏覽:625
流星蝴蝶劍解壓失敗 瀏覽:294
如何確認方舟編譯器 瀏覽:664
奶粉源箱源碼什麼意思 瀏覽:178
台州程序員兼職一般去哪些網站 瀏覽:408
舊版本怎麼下載到新的安卓 瀏覽:972
flash個人網站源碼下載 瀏覽:724
javasocketbyte 瀏覽:270
素描基礎教程pdf 瀏覽:542
香港商報pdf版 瀏覽:428