主頁 > 前端設計 > 信道編碼中卷積編碼器的設計

信道編碼中卷積編碼器的設計

2020-10-08 15:27:46 前端設計

1.1 引言

卷積碼是1955年由Elias等人提出的,是一種非常有前途的編碼方法,我們在一些資料上可以找到關于分組碼的一些介紹,分組碼的實作是將編碼資訊分組單獨進行編碼,因此無論是在編碼還是譯碼的程序中不同碼組之間的碼元無關,卷積碼和分組碼的根本區別在于,它不是把資訊序列分組后再進行單獨編碼,而是由連續輸入的資訊序列得到連續輸出的已編碼序列,即進行分組編碼時,其本組中的n-k個校驗元僅與本組的k個資訊元有關,而與其它各組資訊無關;但在卷積碼中,其編碼器將k個資訊碼元編為n個碼元時,這n個碼元不僅與當前段的k個資訊有關,而且與前面的段資訊有關,同樣,在卷積碼譯碼程序中,不僅從此時刻收到的碼組中提取譯碼資訊,而且還要利用以前或以后各時刻收到的碼組中提取有關資訊,而且卷積碼的糾錯能力隨約束長度的增加而增強,差錯率則隨著約束長度增加而呈指數下降,卷積碼(n,k,m)主要用來糾隨機錯誤,它的碼元與前后碼元有一定的約束關系,編碼復雜度可用編碼約束長度mn來表示,一般地,最小距離d表明了卷積碼在連續m段以內的距離特性,該碼可以在m個連續碼流內糾正(d-1)/2個錯誤,卷積碼的糾錯能力不僅與約束長度有關,還與采用的譯碼方式有關,總之,由于n,k較小,且利用了各組之間的相關性,在同樣的碼率和設備的復雜性條件下,無論理論上還是實踐上都證實:卷積碼的性能至少不比分組碼差,

1.2 卷積編碼原理

卷積碼在一個二進制分組碼(n,k)當中,包含k個資訊位,碼組長度為n,每個碼組的(n-k)個校驗位僅與本碼組的k個資訊位有關,而與其它碼組無關,為了達到一定的糾錯能力和編碼效率( =k/n),分組碼的碼組長度n通常都比較大,編譯碼時必須把整個資訊碼組存盤起來,由此產生的延時隨著n的增加而線性增加, 為了減少這個延遲,人們提出了各種解決方案,其中卷積碼就是一種較好的信道編碼方式,這種編碼方式同樣是把k個資訊位元編成n個位元,但k和n通常很小,特別適宜于以串行形式傳輸資訊,減小了編碼延時, 與分組碼不同,卷積碼中編碼后的n個碼元不僅與當前段的k個資訊有關,而且也與前面(N-1)段的資訊有關,編碼程序中相互關聯的碼元為nN個,因此,這N時間內的碼元數目nN通常被稱為這種碼的約束長度,卷積碼的糾錯能力隨著N的增加而增大,在編碼器復雜程度相同的情況下,卷段積碼的性能優于分組碼,另一點不同的是:分組碼有嚴格的代數結構,但卷積碼至今尚未找到如此嚴密的數學手段,把糾錯性能與碼的結構十分有規律地聯系起來,目前大都采用計算機來搜索好碼,

下面通過一個例子來簡要說明卷積碼的編碼作業原理,正如前面已經指出的那樣,卷積碼編碼器在一段時間內輸出的n位碼,不僅與本段時間內的k位資訊位有關,而且還與前面m段規定時間內的資訊位有關,這里的m=N-1通常用(n,k,m)表示卷積碼(注意:有些文獻中也用(n,k,N)來表示卷積碼),圖1就是一個卷積碼的編碼器,該卷積碼的n = 2,k = 1,m = 2,因此,它的約束長度nN = n×(m+1) = 2×3 = 6,

假如輸入的資訊為D = [11010],為了使資訊D全部通過移位暫存器,還必須在資訊位后面加3個零,表1列出了對資訊D進行卷積編碼時的狀態,

表1 資訊D進行卷積編碼時的狀態

輸入資訊D

1

1

0

1

0

0

0

0

B3b2

00

0 1

1 1

1 0

0 1

1 0

0 0

0 0

輸出C1C2

1 1

0 1

0 1

0 0

1 0

1 1

0 0

0 0

描述卷積碼的方法有兩類,也就是圖解表示和決議表示,決議表示較為抽象難懂,而用圖解表示法來描述卷積碼簡單明了,常用的圖解描述法包括樹狀圖、網格圖和狀態圖等,

卷積碼的譯碼方法可分為代數譯碼和概率譯碼兩大類,代數譯碼方法完全基于它的代數結構,也就是利用生成矩陣和監督矩陣來譯碼,在代數譯碼中最主要的方法就是大數邏輯譯碼,概率譯碼比較常用的有兩種,一種叫序列譯碼,另一種叫維特比譯碼法,雖然代數譯碼所要求的設備簡單,運算量小,但其譯碼性能(誤碼)要比概率譯碼方法差多

因此,目前在數字通信的前向糾錯中廣泛使用的是概率譯碼方法

1.3 卷積碼的編碼演算法

卷積碼的編碼描述方法有 5 種:沖激回應描述法、生成矩陣描述法、多項式乘積描述法、 狀態圖描述法和網格圖描述法[2],本文采用的是沖擊回應描述法編碼思想,下面以n=2,k=1,N=3,(2,1,3)卷積碼為例展開研究,其編碼方式如圖1 所示,

圖 2 卷積碼編碼器(編碼效率 1/ 2 , N = 3)

沖激回應,就是編碼器對移入的單個 “1” 位元的回應(假設暫存器初始狀態為0 0 0) ,當一位1 通過圖三 的暫存器時,暫存器的內容為:

表2 卷積碼暫存器內容

暫存器內容

分支字

1

Q

100

1

1

010

1

0

001

1

1

輸入序列:1 0 0

輸出序列:1 1   1 0   1 1

輸入 “1” 所對應的輸出序列就是這個編碼的回應,輸入序列 m = 101 時,對應的輸出可按如下方式線性疊加時移輸入 “脈沖” 得到,由于可以通過將按時間移位的脈沖進行線性疊加,或者將輸入序列和編碼器的脈沖回應相卷積,來產生輸出編碼,因此這種編碼器稱為卷積編碼器,

輸入序列:1 0 0

輸出序列:1 1   1 0   1 1

輸入 “1” 所對應的輸出序列就是這個編碼的回應,輸入序列 m = 101 時,對應的輸出可按如下方式線性疊加時移輸入 “脈沖” 得到,由于可以通過將按時間移位的脈沖進行線性疊加,或者將輸入序列和編碼器的脈沖回應相卷積,來產生輸出編碼,因此這種編碼器稱為卷積編碼器,

1.4 卷積碼的結構和描述方法

卷積碼的一般結構:

圖3 卷積碼編碼結構

由上圖可以看到,n個輸出位元不僅與當前的k個輸入資訊有關,還與前(N-1)k個資訊有關,通常將N稱為約束長度,(有的書的約束長度Nn),常把卷積碼記為:(n,k,N)

其編碼效率為k/n卷積碼編碼器的實體方框圖:

(n,K,N)=(3,1,3)

  1. 從樹狀圖看到,對于第j個輸入資訊位元,相應出現有 條支路,且在 時樹狀圖出現節點,自上而下重復取4種狀態;當j變大時圖的縱向尺寸越來越大,
  2. 提出一種網格圖,注意到碼樹狀態的重復性,使圖形變得緊湊,

(二) 狀態圖描述法

當網格圖達到穩定狀態后,取出兩個節點之間的一段網格圖,得到狀態轉移圖,此后,再把目前狀態與下一節拍狀態合并起來,即可得到最簡的狀態轉移圖,稱之為卷積碼狀態圖,(3,1,3)卷積碼的狀態圖,隨著資訊序列不斷輸入,編碼器就不斷從一個狀態轉移到另一個狀態并同時輸出相應的碼序列,所以圖3所示狀態圖可以簡單直觀的描述編碼器的編碼程序,因此通過狀態圖很輕易給出輸入資訊序列的編碼結果,假定輸入序列為110100,首先從零狀態開始即圖示a狀態,由于輸入資訊為“1”,所以下一狀態為c并輸出“11”,繼續輸入資訊“1”,由圖知下一狀態為d、輸出“01”……其它輸入資訊依次類推,按照狀態轉移路徑a->c->d->b->c->b->a輸出其對應的編碼結果“110101001011”,
狀態圖可以完整的描述編碼器的作業程序,但是其只能顯示狀態轉移的程序而不能顯示狀態轉移發生的時刻,由此引出用來表示卷積碼的另一種常用方法——網格圖,網格圖就是時間與對應狀態的轉移圖,在網格圖中每一個點表示該時刻的狀態,狀態之間的連線表示狀態轉移,通過觀察網格圖可以發現在網格圖中輸入資訊x并沒有標出,但如觀察到轉移后的狀態表示,x)就可以發現輸入資訊已經隱含在轉移后的狀態中,在圖4中還可以發現兩個網格圖不同主要集中在轉移后狀態位置不同,重新排序結構是為了優化運算而設計的,因為其中蝶型與蝶型之間是相互獨立的,

下面就讓我們來看看網格圖是如何描述卷積編碼程序的:仍以(2,1,2)為例,假定輸入序列為1011010100,起始狀態為狀態a,第一個有效時鐘沿來臨后,編碼器接收到輸入資訊“1”,根據圖4所示網格圖知該時刻狀態為c,并輸出其對應的編碼結果“11”,同樣在下一個時刻接收到輸入資訊“0”,狀態變為b并輸出“10”,接下來的輸入資料依次類推……,由此我們可以用網格圖作出該例子的卷積編碼程序,如圖5所示,其中兩個狀態連線之間的資訊為輸出結果圖5網格圖描述卷積編碼程序由圖可以看出網格圖非常明了地描述了卷積碼的編碼程序,

多項式法就是由卷積碼的生成多項式直接得出其編碼器的結構圖,如上面例子中的(2,1,2)卷積碼的生成多項式矩陣為:
G=1+D+D2,1+D2
其中,D是延遲算子,生成多項式的第一項為1+D+D2,表示輸出編碼的第一個碼元等于輸入碼元x與前兩個時刻輸入的碼元x、x的模2和,同理第二項類似,
為了更好地理解卷積碼生成多項式矩陣和編碼器之間的關系,下面再舉一個k>1的例子:卷積碼的生成多項式矩陣為:

2.1 Matlab程式及結果

我們采用matlab來驗證模塊設計的正確性,在matlab6.5里有卷積編碼函式convenc可呼叫,在本例中涉及到的引數分別設定為IG171QG133K7所以將上述引數代入卷積編碼多項式轉換成網格描述的函式poly2trellis中即可完成convenc函式所需的必要轉換,即trellispoly2trellisKIGQG;這樣就可以使用convenc函式進行卷積編碼,msg_conconvencmsg_bittrellis,其中msg_bit為輸入資訊序列,
假定msg_bit=10110101000000,則matlab輸出結果:msg_con=1110001001101001110010110111;為了和matlab輸出結果比較方便將msg_con用I、Q兩路表示,則msg_i=11010110101101,msg_q=10001001100111

函式卷積碼M檔案:
function output = cnv_encd(g,k0,input)

if rem(length(input),k0)>0 %看填充0是否為必須,

input=[input,zeros(size(1:k0-rem(length(input),k0)))];

end

n=length(input)/k0; %把輸出的位元按全0分組,n為所得的組數,

if rem(size(g,2),k0)>0 %檢查矩陣的大小

error('Error, g is not of the right size.')

end

l=size(g,2)/k0; %暫存器的數+1,也就是通常所說的約束長度

n0=size(g,1); %編碼后的并行輸出埠數

u=[zeros(size(1:(l-1)*k0)),input,zeros(size(1:(l-1)*k0 ))]; %保證編碼器從全0 開始,并回到全0狀態

ul=u(l*k0:-1:1);

for i=1:n+l-2

ul=[ul,u((i+l)*k0:-1:(i*k0+1) )];

end

uu=reshape(ul,l*k0,n+l-1);

output=reshape(rem(g*uu,2),1,n0*(l+n-1));

主程式

k0=2;%輸入埠數,為2,

g=[0 0 1 0 1 0 0 1;0 0 0 0 0 0 0 1;1 0 0 0 0 0 0 1]; %編碼矩陣,幾行就代表幾個輸出口,%列的最右邊暫存器的連接狀態

input=[1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1];%輸入的二進制序列

output=cnv_encd(g,k0,input);%編碼輸出

當輸入為當資訊序列為 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1,其輸出結果如下圖所示,

圖8 matlab程式結果圖

2.3 卷積碼性能分析

(1) 碼率對誤碼性能的影響

卷積碼的碼率 R = k/ n,他是卷積碼的一個重要引數,當改變卷積碼的碼率時,系統的誤碼性能也將隨之發生變化,從圖4 中的誤位元率曲線可以看出,當碼率一定時,隨著信道噪聲的逐漸減小,系統的誤位元率也逐漸減小,當改變系統碼率時,隨著卷積碼碼率的逐漸提高,系統的誤位元率也呈現出增大的趨勢,也就是說碼率越低,系統的誤位元率就越小,誤碼性能就越好,仿真表明[4 ],當系統碼率從2/ 3 降至1/ 3 時,可以使誤位元率減小0125 dB ,然而,信道帶寬和譯碼器的復雜性也將相應地增加,因此,對于二進制對稱信道,當采用BPSK調制方式時,通常選取的碼率為1/ 2,

(2) 約束長度對誤碼性能的影響

對于碼率一定的卷積碼,當約束長度 N 發生變化時,系統的誤碼性能也會隨之發生變化,我們以碼率 R = 1/ 2的(2 ,1 ,3)卷積碼為例展開分析,從圖5 中的誤位元率曲線可以清楚地看到,隨著約束長度的逐漸增加,系統的誤位元率明顯降低,所以說當碼

(3) 回溯長度對卷積碼性能的影響

回溯長度是在 Viterbi 譯碼程序中一個很重要的引數,他決定了譯碼延遲,隨著他的不斷變化,誤碼性能也隨從圖6 中的誤位元率曲線可以清楚地看到,當回溯長度一定時,隨著信道噪聲的逐漸減小,系統的誤位元率逐漸降低;當回溯長度逐漸增加,系統的誤位元率隨之逐漸降低,但是當回溯程度τ增加到τ≥ 5 N 時( N 為編碼的約束長度) ,誤位元率數值趨于穩定,因此,在確定回溯長度時既要考慮到隨著τ的增加誤位元率隨之降低的趨勢,也要考慮到譯碼延遲會變大,在選取回溯長度時,通常取τ= 5 N,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/163136.html

標籤:其他

上一篇:從視頻中提取音頻資料,然后應用傅里葉對音頻降噪(python)

下一篇:色散時域補償演算法——TSM演算法(時域離散采樣方法)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more