卷積碼演算法
A. 基於單片機的卷積碼編碼與維特比解碼的設計
VHDL實現也可以,編碼器我會做,主要是解碼器的設計,採用回溯演算法 通過打孔方法可以獲得1/2編碼速度的編碼。遞歸系統編碼器的實現比較直接,然而基於,qmVCCV
B. 誰能通俗的講解下viterbi演算法嗎
我們來分析Viterbi 演算法的復雜度: (n, k, N)卷積碼的狀態數為2k (N−1) ,對每一時刻要
做2k (N−1) 次「加-比-存」操作,每一操作包括2k 次加法和2k −1 次比較,同時要保留2k (N−1)
條倖存路徑。由此可見,Viterbi 演算法的復雜度與信道質量無關,其計算量和存儲量都隨約束
長度N 和信息元分組k 呈指數增長。因此,在約束長度和信息元分組較大時並不適用。
為了充分利用信道信息,提高卷積碼解碼的可靠性,可以採用軟判決Viterbi 解碼演算法。
此時解調器不進行判決而是直接輸出模擬量,或是將解調器輸出波形進行多電平量化,而不
是簡單的 0、1 兩電平量化,然後送往解碼器。即編碼信道的輸出是沒有經過判決的「軟信
息」。
C. 卷積碼的約束長度怎麼計算
結果是9約束度N=m+1m=2n=3約束長度=Nn所以結果是9
D. 卷積碼的原理
DMT和卷積編碼調制在DSL中的應用
鍾曉建 潘貴敦 馬親民 梁小宇
�
(華中師范大學物理系武漢430079)
【摘要】討論了離散多音頻調制和網格編碼相結合的調制方式在DSL中的應用,離散多音頻調制DMT〔1〕是一種多載波調制技術,將傳輸數據根據各子帶信噪比按位分配到子帶上,使每個子帶碼元寬度大於多徑延遲。如果把調制和糾錯編碼結合起來,則可使誤碼率大大降低,是一種帶寬利用率較高的調制方式。
�關鍵詞:ADSL離散多音頻網格編碼〔2〕歐氏距離〔3〕離散傅立葉變換/逆變換
1引 言
� 隨著Internet技術的不斷發展,人們對傳輸數據的速度、質量要求越來越高,在當前為了有效地利用現有的資源——電話線,提出了DSL〔1〕(數字用戶線)的概念,使用話音頻率以上的頻帶(4 k~1.1 MHz)來調制高速數字信號,按照Δf=4.3125 kHz分割成一個個的子帶,由於Δf剛好是音頻的寬度,故命名為離散多音頻,DMT調制是基於離散傅立葉變換對並行數據進行調制解調的。隨著超大規模集成電路(VL SI)和數字信號處理(DSP)技術的不斷進步,用FFT實現實時DMT調制已付諸使用。但以往的調制解調系統,糾錯編碼與調制是各自獨立設計並實現的,解碼和解調也是如此,這樣解調器在接收信號是對信號作獨立硬判決,硬判決結果再送給解碼器解碼,這種硬判決會導致接收端信息的不可恢復的丟失,解決這個問題的方法是在接收端採用軟判決解碼。DSL技術中就是將DMT和網格編碼綜合設計,在白雜訊環境下比傳統技術的誤碼性能有了很大的提高。這種最佳的編碼調制系統是按照編碼序列的歐氏距離為設計的量度,這就要求將編碼器和調制器當作一個統一的整體進行綜合設計,使得編碼器和調制器級聯後產生的編碼信號序列具有最大的歐氏自由距離。從信號空間的角度看,這種最佳編碼調制的設計實際上是一種對信號空間的最佳分割。經過實驗分析,DMT和卷積編碼結合後的編碼增益比傳統編碼的編碼增益增加了8 dB。�
2xDSL接入設備體系結構
� 在ADSL的應用當中,其硬體體系結構大致是由線路介面、接收濾波、線路驅動、模擬前端以及DMT收發器這幾個模塊組成。其中DMT收發器在發端對數據進行復用、循環冗餘校驗、前向糾錯、子帶排序、卷積編碼、星座映射以及IFFT變換,送到模擬前端變換成模擬信號發送出去,而在收端是將模擬信號經過FFT變換、解映射、維特比解碼等一系列反變換,提交給上層。根據T1.413〔4〕標准,採用韋氏16狀態4維網格碼作為內碼,採用Reed�Solomon編碼作為前向糾錯碼,另外由於網格編碼對成塊的雜訊抵抗能力較差,因此在進行網格編碼之前將數據進行交織使雜訊分散。ADSL的DMT收發器框圖大致如圖1所示。
3DMT與卷積編碼調制原理
� 在ADSL的發送端,將數據分配到不同的子帶上,這種分配可以根據各個子帶的信噪比來確定分配的bit數。而ADSL系統為各個子帶建立並維持了一個比特數和增益大小的表,是在ATU-R一端計算出來並返回給局端。為保證後一子帶所帶的位數不小於前一子帶的位數,先對子帶進行排序,即子帶按信噪比大小從小到大進行排序。為了使編碼獲得的碼字有較大的歐氏自由距離,採用了四維TCM網格編碼,這樣位抽取是基於一對子帶的,因為一個子帶在空間上是二維的,一對相互正交的子帶在空間上則是四維的 ,相應的在解碼的時候也是一對一對的作維特比解碼。歐氏自由距離是在四維空間上計算出來的,這樣四維的陪集可以由兩個二維的陪集的聯合構成,即這樣四維TCM網格碼的歐氏自由距離可以由兩個二維星座圖的距離的平方和算出, 在解碼系統中,最可能發生錯誤的情況是在具有最小的平方歐氏距離的兩個序列�{an}和{bn}�之間,(前者是發送序列,後者是解碼序列),這一最小平方歐氏距離常又稱為平方自由距離,記做:
��編碼的目的是為了使這個平方自由距離最大。
�網格編碼調制的通過一種特殊的信號映射可變成卷積碼的形式。這種映射的原理是將調制信號集分
割成子集,是的子集內的信號間具有更大的空間距離,用編碼效率為k/(k 1)的卷積碼選擇子集,用其餘位選擇子集中的點。在DSL數字用戶環路中用16狀態的4維網格編碼的編碼器結構如圖2所示。
其中的卷積編碼部分如圖3所示。
圖2中每兩個子帶抽取的位數z′=x y-1(x為第一個子帶所帶的位數,y為第二個子帶所帶的位數)。{uz′-1,uz′-2,…u1}為原碼,輸出的是經過卷積以及異或以後的編碼,為兩個二進制碼字,即{vz-y�,vz′-y-1,…v1,v0}和{wy-1,wy-2,…w1,w0},這兩個二進制碼字將映射成兩個星座點。編碼演算法使星座點的兩個最低位決定星座點的二維陪集{v1,v0}和{w1,w0}實際上是這個上標的二進製表示。對於一幀中最後兩個碼字,為了使卷積編碼狀態{s3,s2,s1,s0}回到零狀態。讓編碼前的碼字的{u1,u2}={0,0},則最後兩對子帶抽取的位數z′=x y-3。
�
這樣編碼得出的信號有兩個基本特徵:
� (1)星座圖中所用的信號點數大於未編碼同種調制所需的點數(擴大了一倍),這些附加的信號點為糾錯編碼提供冗餘度。
�(2)採用卷積碼在相繼的信號點之間引入某種依賴性,因而只有某些信號點序列才是允許出現的,這些允許的信號序列可以模型化為網路結構。可用網格圖來表述。
� 在接收端對接收序列進行維特比解碼〔4〕,即最大似然解碼,可以用網格圖求最相似的路徑來描述這種演算法,它依賴於有限狀態的馬爾可夫系統的描述,包括狀態變遷以及狀態變遷的輸出碼字。在四維TCM�編碼的基礎上,解碼時要對一對一對的數據進行解碼,計算碼距時也是以四維空間的歐氏距離為標准,取最相似的一條路徑。對於長度為L m的網格路徑(L為信息序列的長度,m表示後綴為m個0向量)接收序列為所有的網格路徑在零時刻發散於同一個初始狀態、收斂於第j時刻(j=L m)的同一個最後一狀態。在理想狀況下,對於一個存儲量無限度的通道,可以將所有可能的路徑都記錄下來,然後選擇其中對數似然函數值最大的作為解碼結果。
對數似然函數是將接收序列判定為某條路徑的序列的條件概率的對數
��這里的對數似然函數取最大值,實際上是接收的碼序列與估計路徑的碼之間的距離取最小值,是基於歐氏空間距離來計算的。在這里維特比解碼演算法的核心是回退的觀點,採用動態規劃法存儲數據,如果對每條可能的路徑進行存儲的話,隨著解碼深度的增加,存儲量將成4的指數增長,這在現實條件下是不可能的。因為每個節點都有四個分支(二輸入十六狀態的網格圖),因此我們對於j時刻到達的某一狀態
δi(i=1,2…,S-1),進行加—比—選操作,即將所有可能前一時刻的狀態的最大似然函數∧j-1(δp)與當前接收的序列和前一狀態到當前狀態的估計碼的似然度相加,選擇其中最大的作為j時刻i狀
態的最大似然函數值,並在倖存序列j(δi)在原來的基礎上加上這條最優的路徑u〔δp→δi〕。這樣給出的演算法可以表述為:
� 變數/存儲:
� S—狀態數(DSL為16);
� T—每一狀態的分支數(4);
� j—時刻編號,即第j時刻
�對於用卷積編碼完畢的序列可以直接送到數字信號處理器中作IDFT〔5〕變換成串列數據了。每個子帶i的二進制碼字可以映射成星座圖上的復數點(Zi=ai jbi),為了使輸出信號為實信號,頻域上的子帶i的復數值(i≥N′,N′=N/2)為
��Zi=conj�(ZN-i),(i≥N′,N′=N/2)
即取共軛復數,這樣經過離散傅立葉逆變換,得到時域信號:
��此信號經過並/串變換,再通過A/D變換,變成模擬信號送到線路上進行傳輸。
4模擬結果
� 我們在應用Itex公司的ADSL解決方案中,用該公司提供的局端模擬工具IADT對ADSL鏈路性能進
行模擬,得到ADSL每個子帶(從0~255)的信噪比,再根據這個預測值來確定每個子帶的位數和增益值。
從而建立一個與子帶一一對應的表,其線路預測的信噪比曲線如圖4所示。
我們可以看到,測得的線路上行速率為544
kbps,網路速率(去掉ADSL鏈路開銷)為448 kbps,下行鏈路速率為8 160 kbps,網路速率為7 616 kbps。
5總 結
� 本文描述了在帶寬受限的信道採用DMT和卷積編碼相結合的技術,將調制與糾錯編碼結為一體,高效利用了現有的帶寬。隨著ADSL技術的逐漸成熟,該編碼技術也正在應用於其它領域,如無線通信,針對其信道的衰減特性可以獲得較高的帶寬利用率。在具體硬體實現上,由於超大規模集成電路的發展,硬體已不再是信號處理的瓶頸了,如以上分析的維特比解碼,其對硬體的需求是隨著N的增大而迅速增加,需要上十萬的門電路實現,現已有單片的維特比解碼器,或是在特殊的應用中集成在一塊數字晶元中,同時完成RS編碼、交織、FFT變換等等。
�參考文獻
�
1Asymmetrical Digital Subscriber Lines(ADSL)�ITU-T�Recommendation G.992,Geneva,June,1999
2曹志剛,錢亞生.現代通信原理.北京:清華大學出版社
3Stephen G Wilson.digital Molation and Coding,○C1996 byPrentice�Hall,Inc
4ANSI T1.413�1998,COMMITTEE T1—Telecommunications Working Group T1E1.4 T1E1.4/98�007R5,1998
5John G Proakis.Digital Communications,Third edition,McGraw�Hill 1998
E. 最短路徑導航查詢系統(編碼)
信道編碼技術
數字信號在傳輸中往往由於各種原因,使得在傳送的數據流中產生誤碼,從而使接收端產生圖象跳躍、不連續、出現馬賽克等現象。所以通過信道編碼這一環節,對數碼流進行相應的處理,使系統具有一定的糾錯能力和抗干擾能力,可極大地避免碼流傳送中誤碼的發生。誤碼的處理技術有糾錯、交織、線性內插等。
提高數據傳輸效率,降低誤碼率是信道編碼的任務。信道編碼的本質是增加通信的可靠性。但信道編碼會使有用的信息數據傳輸減少,信道編碼的過程是在源數據碼流中加插一些碼元,從而達到在接收端進行判錯和糾錯的目的,這就是我們常常說的開銷。這就好象我們運送一批玻璃杯一樣,為了保證運送途中不出現打爛玻璃杯的情況,我們通常都用一些泡沫或海棉等物將玻璃杯包裝起來,這種包裝使玻璃杯所佔的容積變大,原來一部車能裝5000各玻璃杯的,包裝後就只能裝4000個了,顯然包裝的代價使運送玻璃杯的有效個數減少了。同樣,在帶寬固定的信道中,總的傳送碼率也是固定的,由於信道編碼增加了數據量,其結果只能是以降低傳送有用信息碼率為代價了。將有用比特數除以總比特數就等於編碼效率了,不同的編碼方式,其編碼效率有所不同。
數字電視中常用的糾錯編碼,通常採用兩次附加糾錯碼的前向糾錯(FEC)編碼。RS編碼屬於第一個FEC,188位元組後附加16位元組RS碼,構成(204,188)RS碼,這也可以稱為外編碼。第二個附加糾錯碼的FEC一般採用卷積編碼,又稱為內編碼。外編碼和內編碼結合一起,稱之為級聯編碼。級聯編碼後得到的數據流再按規定的調制方式對載頻進行調制。
前向糾錯碼(FEC)的碼字是具有一定糾錯能力的碼型,它在接收端解碼後,不僅可以發現錯誤,而且能夠判斷錯誤碼元所在的位置,並自動糾錯。這種糾錯碼信息不需要儲存,不需要反饋,實時性好。所以在廣播系統(單向傳輸系統)都採用這種信道編碼方式。
下圖是糾錯碼的各種類型:
1、RS編碼
RS碼即里德-所羅門碼,它是能夠糾正多個錯誤的糾錯碼,RS碼為(204,188,t=8),其中t是可抗長度位元組數,對應的188符號,監督段為16位元組(開銷位元組段)。實際中實施(255,239,t=8)的RS編碼,即在204位元組(包括同步位元組)前添加51個全「0」位元組,產生RS碼後丟棄前面51個空位元組,形成截短的(204,188)RS碼。RS的編碼效率是:188/204。
2、卷積碼
卷積碼非常適用於糾正隨機錯誤,但是,解碼演算法本身的特性卻是:如果在解碼過程中發生錯誤,解碼器可能會導致突發性錯誤。為此在卷積碼的上部採用RS碼塊, RS碼適用於檢測和校正那些由解碼器產生的突發性錯誤。所以卷積碼和RS碼結合在一起可以起到相互補償的作用。卷積碼分為兩種:
(1)基本卷積碼:
基本卷積碼編碼效率為,η=1/2, 編碼效率較低,優點是糾錯能力強。
(2)收縮卷積碼:
如果傳輸信道質量較好,為提高編碼效率,可以采樣收縮截短卷積碼。有編碼效率為:η=1/2、2/3、3/4、5/6、7/8這幾種編碼效率的收縮卷積碼。
編碼效率高,一定帶寬內可傳輸的有效比特率增大,但糾錯能力越減弱。
3、Turbo碼
1993 年誕生的Turbo 碼,單片Turbo 碼的編碼/解碼器,運行速率達40Mb/s。該晶元集成了一個32×32 交織器,其性能和傳統的RS 外碼和卷積內碼的級聯一樣好。所以Turbo碼是一種先進的信道編碼技術,由於其不需要進行兩次編碼,所以其編碼效率比傳統的RS+卷積碼要好。
4、交織
在實際應用中,比特差錯經常成串發生,這是由於持續時間較長的衰落谷點會影響到幾個連續的比特,而信道編碼僅在檢測和校正單個差錯和不太長的差錯串時才最有效(如RS只能糾正8個位元組的錯誤)。為了糾正這些成串發生的比特差錯及一些突發錯誤,可以運用交織技術來分散這些誤差,使長串的比特差錯變成短串差錯,從而可以用前向碼對其糾錯,例如:在DVB-C系統中,RS(204,188)的糾錯能力是8個位元組,交織深度為12,那麼糾可抗長度為8×12=96個位元組的突發錯誤。
實現交織和解交織一般使用卷積方式。
交織技術對已編碼的信號按一定規則重新排列,解交織後突發性錯誤在時間上被分散,使其類似於獨立發生的隨機錯誤,從而前向糾錯編碼可以有效的進行糾錯,前向糾錯碼加交積的作用可以理解為擴展了前向糾錯的可抗長度位元組。糾錯能力強的編碼一般要求的交織深度相對較低。糾錯能力弱的則要求更深的交織深度。
下圖是交織的原理圖:
一般來說,對數據進行傳輸時,在發端先對數據進行FEC編碼,然後再進行交積處理。在收端次序和發端相反,先做去交積處理完成誤差分散,再FEC解碼實現數據糾錯。另外,從上圖可看出,交積不會增加信道的數據碼元。
根據信道的情況不同,信道編碼方案也有所不同,在DVB-T里由於由於是無線信道且存在多徑干擾和其它的干擾,所以信道很「臟」,為此它的信道編碼是:RS+外交積+卷積碼+內交積。採用了兩次交積處理的級聯編碼,增強其糾錯的能力。RS作為外編碼,其編碼效率是188/204(又稱外碼率),卷積碼作為內編碼,其編碼效率有1/2、2/3、3/4、5/6、7/8五種(又稱內碼率)選擇,信道的總編碼效率是兩種編碼效率的級聯疊加。設信道帶寬8MHZ,符號率為6.8966Ms/S,內碼率選2/3,16QAM調制,其總傳輸率是27.586Mbps,有效傳輸率是27.586*(188/204)*(2/3)=16.948Mbps,如果加上保護間隔的插入所造成的開銷,有效碼率將更低。
在DVB-C里,由於是有線信道,信道比較「干凈」,所以它的信道編碼是:RS+交積。一般DVB-C的信道物理帶寬是8MHZ,在符號率為6.8966Ms/s,調制方式為64QAM的系統,其總傳輸率是41.379Mbps,由於其編碼效率為188/204,所以其有效傳輸率是41.379*188/204=38.134Mbps。
在DVB-S里,由於它是無線信道,所以它的信道編碼是:RS+交積+卷積碼。也是級聯編碼。
下圖是DVB-T、DVB-C、DVB-S各自的信道編碼方式:
5、偽隨機序列擾碼
進行基帶信號傳輸的缺點是其頻譜會因數據出現連「1」和連「0」而包含大的低頻成分,不適應信道的傳輸特性,也不利於從中提取出時鍾信息。解決辦法之一是採用擾碼技術,使信號受到隨機化處理,變為偽隨機序列,又稱為「數據隨機化」和「能量擴散」處理。擾碼不但能改善位定時的恢復質量,還可以使信號頻譜平滑,使幀同步和自適應同步和自適應時域均衡等系統的性能得到改善。
擾碼雖然「擾亂」了原有數據的本來規律,但因為是人為的「擾亂」,在接收端很容易去加擾,恢復成原數據流。
實現加擾和解碼,需要產生偽隨機二進制序列(PRBS)再與輸入數據逐個比特作運算。PRBS也稱為m序列,這種m序列與TS的數據碼流進行模2加運算後,數據流中的「1」和「0」的連續遊程都很短,且出現的概率基本相同。
利用偽隨機序列進行擾碼也是實現數字信號高保密性傳輸的重要手段之一。一般將信源產生的二進制數字信息和一個周期很長的偽隨即序列模2相加,就可將原信息變成不可理解的另一序列。這種信號在信道中傳輸自然具有高度保密性。在接收端將接收信號再加上(模2和)同樣的偽隨機序列,就恢復為原來發送的信息。
在DVB-C系統中的CA系統原理就源於此,只不過為了加強系統的保密性,其偽隨機序列是不斷變化的(10秒變一次),這個偽隨機序列又叫控制字(CW)。
關於其發展,給你個幻燈片看
F. 求助,卷積碼的軟判決維特比解碼的matlab模擬
區間大小是根據喜好確定的吧,越大量化就越准確
如果要進行軟解碼,那麼解調器輸出也應該是軟的,
即概率信息,可能需要使用軟解調演算法
G. Turbo碼的特點
Turbo碼有一重要特點是其解碼較為復雜,比常規的卷積碼要復雜的多,這種復雜不僅在於其解碼要採用迭代的過程,而且採用的演算法本身也比較復雜。這些演算法的關鍵是不但要能夠對每比特進行解碼,而且還要伴隨著解碼給出每比特譯出的可靠性信息,有了這些信息,迭代才能進行下去。用於Turbo碼解碼的具體演算法有:MAP(Maximum A Posterior)
Max-Log-MAP、Log-MAP和SOVA(Soft Output Viterbi Algorithm)演算法。MAP演算法是1974年被用於卷積碼的解碼,但用作Turbo碼的解碼還是要做一些修改;Max-Log-MAP與Log-MAP是根據MAP演算法在運算量上做了重大改進,雖然性能有些下降,但使得Turbo碼的解碼復雜度大大的降低了,更加適合於實際系統的運用;Viterbi演算法並不適合Turbo碼的解碼,原因就是沒有每比特譯出的可靠性信息輸出,修改後的具有軟信息輸出的SOVA演算法,就正好適合了Turbo碼的解碼。這些演算法在復雜度上和性能上具有一定的差異,系統地了解這些演算法的原理是對Turbo碼研究的基礎,同時對這些演算法的復雜度和性能的比較研究也將有助於Turbo的應用研究。
Turbo碼的模擬一般參考吳宇飛的經典程序。
此外,要想在移動無線系統中成功的使用Turbo碼,首先要考慮在語音傳輸中最大延遲的限制。在短幀情況下的模擬結果表明短交織Turbo碼在AWGN信道和Rayleigh衰落下仍然具有接近信道容量的糾錯能力,從而顯示出Turbo碼在移動無線通信系統中非常廣闊的應用前景。
Turbo碼 (Turbo Code)
Turbo 碼(Turbo Code)是一類應用在外層空間衛星通信和設計者尋找完成最大信息傳輸通過一個限制帶寬通信鏈路在數據破壞的雜訊面前的其它無線通信應用程序的高性能糾錯碼。有兩類 Turbo 碼在那裡,塊 Turbo 碼和卷積 Turbo 碼(CTCs),它們是相當不同的,因為它們使用不同的構件碼,不同的串聯方案和不同的 SISO 演算法。
H. 解碼的過程是
解碼是編碼的逆過程,同時去掉比特流在傳播過程中混入的雜訊。利用解碼表把文字譯成一組組數碼或用解碼表將代表某一項信息的一系列信號譯成文字的過程稱之為解碼。解碼器是電子技術中的一種多輸入多輸出的組合邏輯電路,負責將二進制代碼翻譯為特定的對象(如邏輯電平等),功能與編碼器相反。解碼器一般分為通用解碼器和數字顯示解碼器兩大類。 數字電路中,解碼器(如n線-2n線BCD解碼器)可以擔任多輸入多輸出邏輯門的角色,能將已編碼的輸入轉換成已編碼的輸出,這里輸入和輸出的編碼是不同的。輸入使能信號必須接在解碼器上使其正常工作,否則輸出將會是一個無效的碼字。解碼在多路復用、七段數碼管和內存地址解碼等應用中是必要的。
假設編碼序列為( Λ) 1 2,m m m C = c c ,經過信道傳輸,接收端收到的信號為R (模擬信號或數字信號,取決於對信道的定義),那麼接收端會順理成章地在所有可能的碼序列中尋找條件概率P(C R) m 最大的一個,認為它是最可能的發送序列。即:
C~ Arg{MAX P(C R)} m C mm=這種判決准則稱為最大後驗概率准則 (MAP)。
演算法
viterbi解碼演算法是一種卷積碼的解碼演算法。缺點就是隨著約束長度的增加演算法的復雜度增加很快。約束長度N為7時要比較的路徑就有64條,為8時路徑變為128條。(2<<(N-1))。所以viterbi解碼一般應用在約束長度小於10的場合中。
演算法規定t時刻收到的數據都要進行64次比較,就是64個狀態每條路有兩條分支(因為輸入0或1),同時,跳傳到不同的兩個狀態中去,將兩條相應的輸出和實際接收到的輸出比較,量度值大的拋棄(也就是比較結果相差大的),留下來的就叫做倖存路徑,將倖存路徑加上上一時刻倖存路徑的量度然後保存,這樣64條倖存路徑就增加了一步。在解碼結束的時候,從64條倖存路徑中選出一條量度最小的,反推出這條倖存路徑(叫做回溯),得出相應的解碼輸出