溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

發(fā)布時(shí)間:2020-03-03 11:05:39 來源:網(wǎng)絡(luò) 閱讀:1457 作者:feifei884431 欄目:網(wǎng)絡(luò)安全

信道編碼作用就是針對(duì)無線傳輸環(huán)境下復(fù)雜多變的信道條件,采取的一種提高發(fā)送數(shù)據(jù)正確率的典型方法。比如對(duì)于傳輸?shù)男畔⒈忍匦蛄?例如x=[1 1 0 1 0 1 1 0]是一個(gè)長(zhǎng)度為8的序列),如果直接經(jīng)過無線信道,由于各種干擾的存在,接收到的序列y可能出現(xiàn)差錯(cuò)變?yōu)榱藋=[1 1 0 1 1 1 1 0]。其中第五位出現(xiàn)了偏差由0變?yōu)榱?產(chǎn)生錯(cuò)誤。信道編碼的職責(zé)就是按照某種數(shù)學(xué)規(guī)律在發(fā)送數(shù)據(jù)之后添加一定的校驗(yàn)位比特(例如c=[1 1 0 0])使得發(fā)送的數(shù)據(jù)變?yōu)樾畔⒈忍豿和校驗(yàn)比特c的某種組合方式(例如最直接的就是級(jí)聯(lián)的方式s=[x c]=[1 1 0 1 0 1 1 0 1 1 0 0])。此時(shí)發(fā)送的數(shù)據(jù)變?yōu)閟。此時(shí)經(jīng)過無線信道,受干擾影響接收到的數(shù)據(jù)y'是y'=[1 1 0 1 1 1 1 0 1 1 0 0],不過由于比特流之間滿足特定的數(shù)學(xué)規(guī)律,可以糾正這一個(gè)錯(cuò)誤,恢復(fù)出原始發(fā)送數(shù)據(jù)s=[1 1 0 1 0 1 1 0 1 1 0 0],進(jìn)而提高了數(shù)據(jù)傳輸?shù)目煽啃浴_@種措施是針對(duì)信道條件的影響采取的編碼方式來提高傳輸可靠性【1】,信道編碼由此得名。

Turbo編碼屬于信道編碼的一種,而且是一種性能極好的方案。這個(gè)“好”在通信系統(tǒng)中具體體現(xiàn)在具有很好的傳輸可靠性以及可以接受的實(shí)現(xiàn)復(fù)雜度。(Bit Error Rate,BER)就是很好的可靠性衡量準(zhǔn)則,比方我發(fā)送100個(gè)比特,其中錯(cuò)了18個(gè)比特,那么此時(shí)的BER=18%。實(shí)現(xiàn)復(fù)雜度的問題也可以主觀感受一下,我設(shè)計(jì)一個(gè)特別復(fù)雜的編碼方案,接收端對(duì)收到的數(shù)據(jù)進(jìn)行對(duì)應(yīng)的復(fù)雜的操作,這雖然能帶來BER的提升,但是花費(fèi)的開銷太大,實(shí)際應(yīng)用中實(shí)用性不高。Turbo編碼的BER特性是現(xiàn)有所有信道編碼中數(shù)一數(shù)二的,又具有適度的實(shí)現(xiàn)復(fù)雜度,因此說Turbo是一種好碼。


寫著寫著就寫多了,這篇文章主要是寫一下Turbo的編譯碼思路以及Matlab的仿真實(shí)現(xiàn)(譯碼的話公式?jīng)]看懂)。

編碼器:

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

            圖-1Turbo碼編碼器結(jié)構(gòu)

    從圖中可以看出Turbo碼編碼器由兩個(gè)遞歸系統(tǒng)卷積碼編碼器(RSC)和一個(gè)交織器(Interleaver)以及一個(gè)打空器(Puncturer)組成。和普通的卷積碼編碼器不同的是,遞歸系統(tǒng)卷積碼編碼器有一個(gè)反饋支路,同時(shí)它有一輸出信號(hào)就是原始的輸入信息。RSC的具體的結(jié)構(gòu)如圖-2所示。

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

            圖-2RSC編碼器結(jié)構(gòu)

沒有打孔的Turbo碼編碼器的碼率是1/3,實(shí)際中,常常采用變碼率的Turbo碼,這時(shí)就需要進(jìn)行打孔操作,從圖-1中可以看出,打孔針對(duì)的是兩個(gè)RSC編碼器產(chǎn)生的校驗(yàn)比特,原始的信息比特是不參加打孔操作的。

假設(shè)RSC編碼器的寄存器的個(gè)數(shù)為:m。

輸入Turbo編碼器的信息記為:Infor

編碼的具體流程為:將輸入Turbo碼編碼器的信息(infor)m個(gè)尾比特(tail1)輸入進(jìn)第一個(gè)RSC編碼器進(jìn)行編碼,加m個(gè)尾比特的目的是將第一個(gè)RSC編碼器的最終狀態(tài)回歸到零狀態(tài),輸出為parity1。將輸入Turbo碼編碼器的原始信息(infor)進(jìn)行交織,將交織后的信息再加m個(gè)尾比特(tail2)輸入進(jìn)第二個(gè)RSC編碼器進(jìn)行編碼,加m個(gè)尾比特的目的是將第二個(gè)RSC編碼器的最終狀態(tài)回歸到零狀態(tài),輸出為parity2。parity1parity2的長(zhǎng)度相等,都是輸入信息的長(zhǎng)度加上m。假如想得到不同碼率的Turbo碼,可以對(duì)兩路校驗(yàn)信息進(jìn)行打孔,如不進(jìn)行打孔操作,則Turbo碼編碼器的輸出即為:infor+tail1+tail2+parity1+parity2。


譯碼器:

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

            圖-3 Turbo碼譯碼器(MAP)

從圖-3中可以看出,Turbo碼譯碼器(MAP)由兩個(gè)MAP譯碼器和兩個(gè)交織器,一個(gè)解交織器組成。其中MAP Decoder 1MAP Decoder 2分別針對(duì)Turbo碼編碼器的RSC 1RSC2進(jìn)行譯碼操作。由于輸入到第二個(gè)RSC編碼器的信息經(jīng)過了交織的過程,因此,接收到的系統(tǒng)信息在輸入到MAP Decoder 2之前,先要進(jìn)行交織的操作。解交織器和另一個(gè)交織器的功能類似,在此不再說明。

譯碼的流程從圖-3中可以很明顯的看出來:將原始信息,由第一個(gè)RSC編碼器產(chǎn)生的第一路校驗(yàn)信息,第二個(gè)MAP譯碼器產(chǎn)生的相對(duì)于第一個(gè)MAP譯碼器而言的先驗(yàn)信息(第一次初始化為零)經(jīng)過解交織后聯(lián)合輸入進(jìn)第一個(gè)MAP譯碼器進(jìn)行譯碼進(jìn)行譯碼;將第一個(gè)MAP譯碼器輸出的相對(duì)于第二個(gè)MAP譯碼器的先驗(yàn)信息經(jīng)過交織,原始的信息經(jīng)過交織,第二路校驗(yàn)信息聯(lián)合輸入進(jìn)第二個(gè)MAP譯碼器進(jìn)行譯碼,這時(shí),第二個(gè)MAP譯碼器輸出的便是相對(duì)于第一個(gè)MAP譯碼器而言的先驗(yàn)信息,完成了一次迭代。可以根據(jù)實(shí)際的需要,設(shè)定譯碼的迭代次數(shù),一般情況下,隨著迭代次數(shù)的增加,譯碼器的性能會(huì)增加,但是,當(dāng)?shù)螖?shù)增加到一定的程度以后,譯碼器增加的性能就已經(jīng)很小了,實(shí)際中,迭代次數(shù)一般選8

Turbo碼大體的編解碼思路就說這么多,具體的Matlab程序網(wǎng)上流行的一個(gè)WuYufei大神的版本,可以從這里獲得鏈接: http://pan.baidu.com/s/1jG1twhC 密碼: w9qe。


這里發(fā)現(xiàn)的問題是,Wu的程序是AWGN信道下BPSK調(diào)制方式的,調(diào)制階數(shù)比較低,從提高傳輸有效性的角度上需要高階調(diào)制(比如之前的BPSK調(diào)制,1就代表比特1,-1就代表比特0,高階的調(diào)制例如QPSK,s1代表00,s2代表01,s3代表10,s4代表11),這樣同樣傳輸s1~s4中的一個(gè)符號(hào),就可以表示兩個(gè)比特的數(shù)據(jù),速率提升了一倍,同樣帶來的結(jié)果是傳輸可靠性會(huì)有所下降(因?yàn)閟1~s4之間的區(qū)分度不如1、-1之間的區(qū)分的好,即更容易互相混淆)但是在可容忍的可靠性下降范圍內(nèi)采用QPSK調(diào)制確實(shí)提高了傳輸有效性。所以我需要做的就是在Wu的程序基礎(chǔ)上加入調(diào)制的步驟。

Turbo編碼不需要適配,假設(shè)產(chǎn)生了信息比特有100個(gè),經(jīng)過Turbo編碼(碼率1/3)那得到的數(shù)據(jù)比特為300,對(duì)這300個(gè)比特進(jìn)行QPSK調(diào)制即可,調(diào)制完的符號(hào)經(jīng)過AWGN信道疊加噪聲時(shí)需要注意噪聲功率,原本的噪聲幅度為sigma,那么加到QPSK符號(hào)上的噪聲幅度需要變?yōu)閟igma/sqrt(2)。

Turbo譯碼器的輸入需要提供每一個(gè)比特的軟信息(符號(hào)置信度),所以經(jīng)過AWGN信道的接收數(shù)據(jù)y,需要①先進(jìn)行軟解調(diào)【2】處理,②將QPSK調(diào)制軟解調(diào)的符號(hào)級(jí)軟信息映射為比特級(jí)軟信息作為Turbo的輸入。

軟解調(diào)主要根據(jù)公式寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

實(shí)際應(yīng)用中由于在高信噪比的條件下r被判決為s1~s4中某一個(gè)的可能性會(huì)很有壓倒性,另外的三種可能較小,所以導(dǎo)致LLR的計(jì)算過程中會(huì)出現(xiàn)NaN或Inf之類的結(jié)果。所以實(shí)際應(yīng)用中采用更簡(jiǎn)化的方案:寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧采用這個(gè)方案不會(huì)出現(xiàn)上述NaN,Inf之類的問題。

附上我做的高階(QPSK)調(diào)制有/無Turbo編碼的BER-SNR曲線~

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

總結(jié)一下的話,主要就是介紹了Turbo編碼的思想以及應(yīng)用于高階調(diào)制的Matlab仿真需要注意的問題。


【1】通信系統(tǒng)主要是解決三個(gè)問題:可靠性、有效性、安全性。其中可靠性和有效性是一種矛盾關(guān)系,一方面希望我發(fā)送一點(diǎn)兒消息(比如一個(gè)數(shù)字1,接收端可以理解出大量的信息(比如a“我愛北京天安門,天安門上太陽(yáng)升”);另一方面我又希望我發(fā)送的數(shù)據(jù)可以被接收方正確的理解(即a就是代表那句歌詞)。顯然消息蘊(yùn)含的信息時(shí)有限的(比如數(shù)字1如果規(guī)定代表歌詞的話,那么真的需要傳輸數(shù)字“1”的信息的時(shí)候需要找別的信息來代替)而且傳輸過程中會(huì)發(fā)生損失(比如發(fā)送數(shù)字1,卻接受到了數(shù)字7,那么收端肯定無法正確理解發(fā)端的意思)這對(duì)于傳輸可靠性來說是一個(gè)消極因素。這時(shí)需要發(fā)端進(jìn)行適當(dāng)?shù)牟僮鱽硖岣甙l(fā)送數(shù)據(jù)的準(zhǔn)確性,即如前文所述的信道編碼,與信道編碼類似的提高可靠性的操作會(huì)引起信息的冗余,這對(duì)于傳輸有效性來說是一個(gè)消極因素。因而通信系統(tǒng)需要在有效性和可靠性之間取得適當(dāng)?shù)恼壑小5谌齻€(gè)安全性就顧名思義了,我希望我傳輸?shù)臄?shù)據(jù)只有我和接受的人收到,其他的人收到也是無用的信息,這涉及到一些抗干擾相關(guān)的技術(shù),小編研究不深。

【2】軟解調(diào),相對(duì)應(yīng)的就有硬解調(diào)。

先說硬解調(diào),還記得我們?yōu)榱颂岣邆鬏斢行栽诿看伟l(fā)送信息的時(shí)候發(fā)的是s1~s4之中的一個(gè)嘛,現(xiàn)在假設(shè)s1=-1-1i,s2=-1+1i,s3=1-1i,s4=1+1i。那s1~s4可以畫成如下的星座圖。

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

經(jīng)過無線信道的各種干擾影響之后,接收到信號(hào)r可能位于這個(gè)位置,如下圖

寫寫Matlab的Turbo仿真實(shí)現(xiàn)吧

那么究竟應(yīng)該將接收信號(hào)r判別成s1~s4中哪一種呢?硬解調(diào)給出的方案就是計(jì)算一下r到s1~s4之間的各個(gè)距離d1~d4,取距離最近的那一個(gè)作為判決結(jié)果。這么做是有原因的,因?yàn)橛绊懸蛩胤?均值的高斯分布,所以噪聲影響從s1(-1,-1i)的位置變到了r所在的位置的概率畢竟是小的,所以優(yōu)先判決為距離更近的點(diǎn)。這么做比較簡(jiǎn)單,但是給人一種生硬的感覺,突出一個(gè)“強(qiáng)行”,硬判決由此得名。經(jīng)過應(yīng)判決我們得知的只有被判決成的符號(hào)是s1~s4中的哪一個(gè),并不知道r究竟與判決結(jié)果的偏移程度有多大,這是一部分信息損失,我們希望能補(bǔ)償回來。

再說一下軟解調(diào),軟解調(diào)在判決的時(shí)候,并不是生硬的給出r判決為s1~s4的哪一個(gè),而是給出發(fā)送s1~s4,收端收到r的這四種情況各自發(fā)生的概率p(r|s1)~p(r|s4)(這個(gè)概率又稱為軟信息)。殘忍的判決工作軟解調(diào)并不做,只是把各種概率作為輸出,這樣的話硬解調(diào)損失的r與判決結(jié)果的偏移/相似程度就得意保留,沒有信息損失。而這個(gè)軟信息正好可以天然的用于類似于Turbo譯碼器這種需要軟信息的譯碼操作。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI