編解碼過程
A. 簡單描述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) 在迭代解碼過程中交換的是外部信息
⒉ 概率解碼解碼原理及結構
解碼時首先對接收信息進行處理,兩個成員解碼器之間外部信息的傳遞就形成了一個循環迭代的結構。由於外部信息的作用,一定信噪比下的誤比特率將隨著循環次數的增加而降低。但同時外部信息與接受序列間的相關性也隨著解碼次數的增加而逐漸增加,外部信息所提供的糾錯能力也隨之減弱,在一定的循環次數之後,解碼性能將不再提高。
B. pcm編譯碼輸入與輸出幅度是多少
入信號的頻率為 1KHz,幅度為 2V(峰峰值),在測試點(6)可觀察到 PCM 編碼輸出的碼流.(需 要指出的是,由於我們只在一個時隙上工作,
1、實驗目的及要求
①理解PCM編解碼原理及PCM編解碼性能;
②熟悉PCM編解碼專用集成晶元的功能和使用方法及各種時鍾間的關系;
③熟悉語音數字化技術的主要指標及測量方法;
④PCM編碼原理驗證,理解帶限濾波器作用、A律編碼規則;
⑤PCM編解碼性能測量,觀測編解碼電路頻響、時延、失真、增益等。
2、實驗器材、設備及軟體
PCM編碼軟體,集成晶元TP3057,雙蹤示波器,微處理器,液晶屏。
二、實驗結果
1、定性描述PCM編解碼的特性、編碼規則,並填下表。
量化後的信號是取值離散的數字信號,下一步是將這個數字信號編碼。通常把從模擬信
號抽樣、量化,編碼變換成為二進制符號的基本過程,稱為脈沖編碼調制。
完成PCM編碼的方式有多種,最常用的是採用集成電路完成PCM編解碼,如TP3057、TP3067等,集成電路的優點是電路簡單,只需幾個外圍元件和三種時鍾即可實現,不足是無法展示編碼的中間過程,這種方法比較適合實際通信系統。另一種PCM編碼方式是用軟體來實現,這種方法能分離出PCM編碼的中間過程,如:帶限、抽樣、量化、編碼的完整過程。
在 13 折線法中,無論輸入信號是正是負,均用 8 位折疊二進制碼來表示輸入信號的抽
樣量化值。其中,用第一位表示量化值的極性,其餘七位(第二位至第八位)則表示抽樣量
化值的老冊絕對大小。具體的做法是:用第二至第四位表示段落碼,它的 8 種可能狀態來分別代
表 8 個段落的起點電平。其它四位表示段內碼,它的 16 種可能狀態來分別代表每一段落的
16 個均勻劃分的量化級。這樣處理的結果,使 8 個段落被劃分成 27=128 個量化級。段落
碼和 8 個段落之間的關系如表 2-2 所示,段內碼與 16 個量化級之間的關系見表 2-3。上述
編碼方法是把壓縮、量化和編碼嫌汪合為一體的方法
在A律13折線編碼中,正負方向共16個段落,在每一個段落內有16個均勻分布的侍者宏量化電平,因此總的量化電平數L=256。編碼位數N=8,每個樣值用8比特代碼C1~C8來表示,分為三部分。第一位C1為極性碼,用1和0分別表示信號的正、負極性。第二到第四位碼C2C3C4為段落碼,表示信號絕對值處於那個段落,3位碼可表示8個段落,代表了8個段落的起始電平值。
上述編碼方法是把非線性壓縮、均勻量化、編碼結合為一體的方法。在上述方法中,雖然各段內的16個量化級是均勻的,但因段落長度不等,故不同段落間的量化間隔是不同的。當輸入信號小時,段落小,量化級間隔小;當輸入信號大時,段落大,量化級間隔大。第一、二段最短,歸一化長度為1/128,再將它等分16段,每一小段長度為1/2048,這就是最小的量化級間隔Δ。根據13折線的定義,以最小的量化級間隔Δ為最小計量單位,可以計算出13折線A律每個量化段的電平范圍、起始電平I、段內碼對應電平、各段落內量化間隔Δi。
如量化值:-1600量化值為負值,故極性碼C1為:0;電平范圍位於1024~2048,段落碼C2C3C4為:111;量化間隔為64,段落起始電平為1024,1600-1024=576;576/64=9;段內碼C5C6C7C8為:1001。那麼量化值-1600對應的PCM編碼值為:01111001
C. 哈夫曼編碼的解碼過程的大致思路是什麼(不要代碼)
哈夫曼樹和字元編碼對應你都弄完了,得到是如a :01 b :101對應關系,通過這個關系直接將像「asdsdfdfg」直接轉換為「01110101」這樣二進制編碼。解碼的時候,讀取二進制編碼,先讀取一位,然後在關系表中查找該二進制數對應的字元,如果沒有找到,繼續讀取二位,然後繼續在關系表中查找該二位二進制對應的字元。如此循環,知道找到字元位置,然後將二進制數替換為相應的字元,知道所有的數都替換完為止。
D. 解碼的過程是
解碼是編碼的逆過程,同時去掉比特流在傳播過程中混入的雜訊。利用解碼表把文字譯成一組組數碼或用解碼表將代表某一項信息的一系列信號譯成文字的過程稱之為解碼。解碼器是電子技術中的一種多輸入多輸出的組合邏輯電路,負責將二進制代碼翻譯為特定的對象(如邏輯電平等),功能與編碼器相反。解碼器一般分為通用解碼器和數字顯示解碼器兩大類。 數字電路中,解碼器(如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條倖存路徑中選出一條量度最小的,反推出這條倖存路徑(叫做回溯),得出相應的解碼輸出
E. 計算機編譯就是指編碼和解碼兩個過程嗎
在微指令的控制欄位中,每一位代表一個微命令,在設計微指令時,是否發出某個微命令,只要將控制欄位中相應位置成"1"或"0",這樣就可打開或關閉某個控制門,這就是直接控製法.
在6.3節中所講的就是這種方法.但在某些復雜的計算機中,微命令甚至可多達三四百個,這使微指令字長達到難以接受的地步,並要求機器有大容量控制存儲器,為了改進設計出現了以下各種編譯法.
6.4.1 微指令的編譯法(編碼解碼方法)(2)
2.欄位直接編譯法
在計算機中的各個控制門,在任一微周期內,不可能同時被打開,而且大部分是關閉的(相應的控制位為"0").所謂微周期,指的是一條微指令所需的執行時間.如果有若干個(一組)微命令,在每次選擇使用它們的微周期內,只有一個微命令起作用,那麼這若干個微命令是互斥的.
例如,向主存儲器發出的讀命令和寫命令是互斥的;又如在ALU部件中,送往ALU兩個輸入端的數據來源往往不是唯一的,而每個輸入端在任一微周期中只能輸入一個數據,因此控制該輸人門的微命令是互斥的.
選出互斥的微命令,並將這些微命令編成一組,成為微指令字的一個欄位,用二進制編碼來表示, 就是欄位直接編譯法.
6.4.1 微指令的編譯法(編碼解碼方法)(3)
例如,將7個互斥的微命令編成一組,用三位二進制碼分別表示每個微命令,那麼在微指令中,該欄位就從7位減成3位,縮短了微指令長度.而在微指令寄存器的輸出端,為該欄位增加一個解碼器,該解碼器的輸出即為原來的微命令.
6.4.1 微指令的編譯法(編碼解碼方法)(4)
欄位長度與所能表示的微命令數的關系如下:
欄位長度 微命令數
2位 2~3
3位 4~7
4位 8~15
一般每個欄位要留出一個代碼,表示本段不發出任何微命令,因此當欄位長度為3位時,最多隻能表示7個互斥的微命令,通常代碼000表示不發微命令.
6.4.1 微指令的編譯法(編碼解碼方法)(5)
3.欄位間接編譯法
欄位間接編譯法是在欄位直接編譯法的基礎上,進一步縮短微指令字長的一種編譯法.
如果在欄位直接編譯法中,還規定一個欄位的某些微命令,要兼由另一欄位中的某些微命令來解釋,稱為欄位間接編譯法.
本方法進一步減少了指令長度,但很可能會削弱微指令的並行控制能力,因此通常只作為直接編譯法的一種輔助手段.
6.4.1 微指令的編譯法(編碼解碼方法)(6)
欄位A(3位)的微命令還受欄位B控制,當欄位B發出b1微命令時,欄位A發出a1,1,a1,2,…,a1,7中的一個微命令;而當欄位B發出b2微命令時,欄位A發出a2,1,a2,2,…,a2,7中的一個微命令,僅當A為000時例外,此時什麼控制命令都不產生.
6.4.1 微指令的編譯法(編碼解碼方法)(7)
4.常數源欄位E
在微指令中,一般設有一個常數源欄位E就如指令中的直接操作數一樣.E欄位一般僅有幾位,用來給某些部件發送常數,故有時稱為發射欄位.
該常數有時作為操作數送入ALU運算;有時作為計算器初值,用來控制微程序的循環次數等.
6.4.2 微程序流的控制 (1)
當前正在執行的微指令,稱為現行微指令,現行微指令所在的控制存儲器單元的地址稱現行微地址,現行微指令執行完畢後,下一條要執行的微指令稱為後繼微指令,後繼微指令所在的控存單元地址稱為後繼微地址.
所謂微程序流的控制是指當前微指令執行完畢後,怎樣控制產生後繼微指令的微地址.
與程序設計相似,在微程序設計中除了順序執行微程序外還存在轉移功能和微循環程和微子程序等,這將影響下址的形成.
下面介紹幾種常見的產生後繼微指令地址的方法.
6.4.2 微程序流的控制 (2)
(1)以增量方式產生後繼微地址.
在順序執行微指令時,後繼微地址由現行微地址加上一個增量(通常為1)形成的;而在非順序執行時則要產生一個轉移微地址.
機器加電後執行的第一條微指令地址(微程序入口)來自專門的硬體電路,控制實現取令操作,然後由指令操作碼產生後繼微地址.接下去,若順序執行微指令,則將現行微地址主微程序計數器( PC中)+1產生後繼微地址;若遇到轉移類微指令,則由 PC與形成轉移微地址的邏輯電路組合成後繼微地址.
6.4.2 微程序流的控制 (3)
6.4.2 微程序流的控制 (4)
(2)增量與下址欄位結合產生後繼微地址
將微指令的下址欄位分成兩部分:轉移控制欄位BCF和轉移地址欄位BAF,當微程序實現轉移時,將BAF送 PC,否則順序執行下一條微指令( PC+1).
執行微程序條件轉移時,決定轉移與否的硬體條件有好幾種.例如,"運算結果為零","溢出","已完成指定的循環次數"等.
我們假設有八種轉移情況,定義了八個微命令(BCF取3位),在圖中設置計數器CT用來控制循環次數.如在執行乘(或除)法指令時,經常採用循環執行"加,移位"(或減,移位)的方法,指令開始執行時,在CT中置循環次數)每執行一次循環,計數器減1,當計數器為零時結束循環.又考慮到執行微子程序時,要保留返回微地址,因此圖中設置了一個返回寄存器RR.
F. 算術編碼的編碼方法
若有一個a、b、c、d四種符號的單符號信源,待編序列為S=abda,已知:
符號a b c d
符號概率Pi 0.100 0.010 0.001 0.001
(以二進位小數表示)
累積概率∑pi 0.000 0.100 0.110 0.111
按照一定精度的數值作為序列的算術編碼,實質上是分割單位區間的過程。實現它,必須完成兩個遞推過程:一個代表碼字C(·),另一個代表區間寬度為A(·)。若記SXi表示S的增長(即S後增加一個符號Xi)序列。則有圖1 。
若記λ為空序列,有A(λ)=1,C(λ)=0,則有如圖2 。
並依次求得:C(abd)= 010111, A(abd)= 0.00001
C(abda)= 0.010111 ,A(abda)= 0.000001 該編碼過程可以用圖3所示的單位區間劃分的過程來描述。
解碼為逆遞推過程,可以通過對編碼後的數值進行比較來實現。即判斷C(S)落入哪一個區間,最後得出一個相應的符號序列S'=Ma=S。
實際的編解碼過程比較復雜,但原理相同,算術編碼的理論性能也可使平均符號代碼長度接近符號熵,而且對二元信源的編碼實現比較簡單,故受重視。中國將它應用於報紙傳真的壓縮設備中,獲得了良好的效果。
G. 簡易編解碼電路怎麼實現編碼和解碼的
編碼和解碼電路需要數字邏輯運算,常見的邏輯運算是:與門、或門、非門,只要你設計好輸入和輸出,解碼和編碼就可以用邏輯運算實現,