banner
Moerjie

Moerjie

hello world

DVB-S學習記錄-信道編碼

經過信源編碼和系統復接後生成的節目傳送碼流,通常需要通過某種傳輸媒介才能到達用戶接收機。通常情況下,編碼碼流並不能直接通過信道傳輸,必須經過信道編碼後,使其變成適合在信道中傳輸的形式後再進行傳輸。

DVB-S 的信道編碼主要包括

  • 擾碼
  • R-S 編碼
  • 卷積交織
  • 卷積編碼

擾碼#

數字通信理論在設計通信系統時都是假設傳輸比特流中 0 和 1 的出現概率是等概的,實際中的通信系統的設計指標等首先也是以該假設為前提的。

但是 TS(transport stream)碼流經過編碼後可能會出現連 0 或連 1 的情況,一方面破壞了系統設計的前提,另一方面連 0 或連 1 會使得比特時鐘的提取變得困難,因此,為保證在任何情況下進入 DVB 傳輸系統的數據碼流中 "0" 與 "1" 的概率都能基本相等,系統引入一個伪隨機序列對 TS 碼流進行 == 擾亂處理 ==,使得 0 和 1 的出現概率接近 50%。

擾亂改變了原 TS 碼流,因此在接收端對傳輸碼流糾錯解碼後,還需按逆過程對其進行解擾處理,以恢復原 TS 碼流。

在接收端對接收到的碼流逆編碼後,就可以恢復原 TS 碼流

原理#

傳送復用器輸出的 TS 流幀結構如圖所示:

image-20231208204057822

第一個字節為同步字節,數值為 47H。每 8 個包組成一個超幀,並將第一個包的同步字節反轉,變為 B8H,後面的 7 個包的同步字節不變。同步字節不參與擾碼,其餘字節參與擾碼

伪隨機二進制序列(PRBS)生成器的多項式應為:

P(X)=1+X14+X15P(X)=1+X^{14}+X^{15}

其擾碼過程如圖所示:

image-20231208204647672

擾碼輸出如下圖所示:

image-20231208204732769

R-S 編碼#

DVB-S 中使用的外層糾錯編碼為 R-S(204,188)碼,編碼效率 $ R_c=\frac {188}{204}=0.92 $ , 碼字長度為 8。

每個 TS 包獨立進行 R-S 編碼保護,生成一個 R-S 碼字,R-S 同步頭就採用 TS 的包頭,如此設計有以下好處:

  1. 當某個 R-S 碼字在接收端解碼時出現無法糾正的錯誤時,誤碼集中在一個 TS 包中,不會影響到其它的 TS 包,便於分接器進行差錯指示
  2. 便於分接器提取 TS 包的同步,簡化了 TS 包同步提取系統結構

R-S 碼字結構#

image

編碼原理#

對於定義在 $GF (2^m)$ 的 RS (n,k) 碼,$n=2^m-1$ ,生成多項式取

g(x)=i=1i=nk(x+αi)=x2t+g2t1x2t1++g2x2+g1x+g0g(x)=\prod_{i=1}^{i=n-k}(x+\alpha^{i})= x^{2t}+g_{2t-1}x^{2t-1}+\cdots+g_{2}x^{2}+g_{1}x+g_{0}

記 $ n-k=2t $ ,糾錯能力為 $t$,就是說如果編碼後的一組數據裡面出現了錯誤的數據個數不大於 t,那麼可以通過 n-k 個監督數據達到對錯誤數據糾正的目的

$g (x)$ 的係數屬於 $GF (2^m)$ , 生成矩陣 G 可表示為:

G=[g2tg2t1g1g0000g2tg2g1g0000g2tg2t1g2t2g0]G=\begin{bmatrix}\mathrm{g_{2t}}&\mathrm{g_{2t-1}}&\cdots&\mathrm{g_{1}}&\mathrm{g_{0}}&0&\cdots&0\\0&\mathrm{g_{2t}}&\cdots&\mathrm{g_{2}}&\mathrm{g_{1}}&\mathrm{g_{0}}&\cdots&0\\\vdots&\vdots&\ddots&\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&\mathrm{g_{2t}}&\mathrm{g_{2t-1} }&\mathrm{g_{2t-2}}&\cdots&\mathrm{g_{0} }\end{bmatrix}

對矩陣 G 進行變換得到與其等價的矩陣 G_1 ,該矩陣由 k 階單位矩陣 $ \bold I $ 和 $k*(n-k) $ 階的矩陣 $ \bold A $ 組成 ,滿足

G1=[IA]=[100a1,1a1,2a1,nk010a2,1a2,2a2,nk001ak,1gk,2ak,nk]G_1=[I|A]=\begin{bmatrix}1&0&\cdots&0&a_{1,1}&a_{1,2}&\cdots&a_{1,n-k}\\0&1&\cdots&0&a_{2,1}&a_{2,2}&\cdots&a_{2,n-k}\\\vdots&\vdots&\ddots&\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&1&a_{k,1}&g_{k,2}&\cdots&a_{k,n-k}\end{bmatrix}

編碼結果可以表示為

C=UG1=[UUA]=[UR]C=U\cdot G_1=[U|U\cdot A]=[U|R]

其中矩陣 $ \bold R $ 有 $n-k$ 個監督符號,多項式表示為

r(x)=rnk1xnk1++r2x2+r1x+r0r(x)=r_{n-k-1}x^{n-k-1}+\cdots+r_2x^2+r_1x+r_0

因此經過 R-S 編碼後的碼多項式為

c(x)=u(x)xnk+r(x)c(x)=u(x)x^{n-k}+r(x)

DVB-S 使用的 R-S 生成多項式為

G(X)=15(X+λi)G(X)=\overset{15}{\operatorname*{\coprod}}(X+\lambda^i)

其中 $ \lambda =02H $ ,為本原元,域生成多項式為

P(X)=X8+X4+X3+X2+1P(X)=X^8+X^4+X^3+X^2+1

最小碼距為 17 字節

將 $G (x)$ 展開可得

g(x)=x16+59x15+13x14+104x13+189x12+68x11+209x10+30x9+8x8+163x7+65x6+41x5+229x4+98x3+50x2+36x+59g(x)=x^{16}+59x^{15}+13x^{14}+104x^{13}+189x^{12}\\+68x^{11}+209x^{10}+30x^{9}+8x^{8}+163x^{7}+65x^{6}\\+41x^{5}+229x^{4}+98x^{3}+50x^{2}+36x+59

假設信息多項式為

m(x)=m187x187+m186x186++m1x1+m0m(x)=m_{187}x^{187}+m_{186}x^{186}+\cdots+m_{1}x^{1}+m_{0}

則使用 $x^{16}\times m (x) /g (x)$ 所得餘式的 16 個係數即為生成的 16 個校驗字節,將這 16 個字節添加到 188 個數據後就完成了 R-S 編碼

R-S (204,188,T=8) 碼幀結構#

image-20231209195625640

卷積交織#

在編碼後加上卷積交織,使得數據的傳送順序按照一定的規律分散開,這樣可以使信道中突發性干擾造成的錯誤字符也被分散開來。

DVB-S 中交織採用卷積交織的方式,其交織深度為 204/17=12 ,下圖為交織和解碼的原理圖

image-20231209211827932

它由 FIFO 組成,數據按行寫入寄存器,按列讀出。

交織過程如下:R-S 編碼碼字向第 0 到第 11 支路依次循環輸入數據,每條支路每次輸入一個字節,交織後的數據按相同的順序從各支路中輸出,每條支路每次輸出一個字節。R-S 碼字的同步頭永遠從第 0 支路,即無延時支路傳送。這樣交織後的數據流依然保持了 R-S 碼字的同步和長度

假設輸入的數據為從小到大的自然數,輸入的數據如下

123456789101112
131415161718192021222324
252627282930313233343536
373839404142434445464748
495051525354555657585960
616263646566676869707172
737475767778798081828384
858687888990919293949596
979899100101102103104105106107108
109110111112113114115116117118119120
121122123124125126127128129130131132
133134135136137138139140141142143144
145146147148149150151152153154155156
157158159160161162163164165166167168
169170171172173174175176177178179180
181182183184185186187188189190191192
193194195196197198199200201202203204
205206207208209210211212213214215216
217218219220221222223224225226227228

經過交織模塊後可以得到如下輸出:

100000000000
1300000000000
2500000000000
3700000000000
4900000000000
6100000000000
7300000000000
8500000000000
9700000000000
10900000000000
12100000000000
13300000000000
14500000000000
15700000000000
16900000000000
18100000000000
19300000000000
20520000000000
217140000000000

因此,在卷積交織的輸出序列中,同一個誤碼包的任意兩個字節的最小距離為 12 字節,所以,R-S (204,188,T=8) 編碼加上卷積交織後糾錯的最大字節長度為 $ 8\times12=96 $ ,大大提高系統的糾錯能力。

卷積編碼#

DVB-S 的內碼編碼採用收縮卷積編碼,系統框圖如下

image-20231209211850906

中間的方框代表一個 7 位的移位寄存器,兩個輸出 X、Y 的生成多項式分別為

G1=1+X+X2+X3+X6G2=1+X2+X3+X5+X6\begin{aligned}G_1&=1+X+X^2+X^3+X^6\\\\G_2&=1+X^2+X^3+X^5+X^6\end{aligned}

該系統每個 clk 輸入 1bit 信息,有兩個模 2 加法器輸出 2bit 信息,且輸出的信息和移位寄存器內的當前信息和前 6 個信息都有關係,因此常用 (2,1,7) 來表示該卷積碼

QPSK#

數字信號理論頻譜帶寬無限寬,要想無失真的傳輸數字信號,要在無限帶寬信道中傳輸,而衛星系統的信道是帶限信道,因此需要對卷積編碼模塊輸出的信號進行成型濾波,使其與衛星信道匹配。

基帶成型濾波器一方面要降低傳輸中需要的帶寬,另一方面使碼間串擾降至最低。理論上來說,如果隨機數字碼元流的重複周期為 Ts,只要通過帶寬為 π/Ts 的理想濾波器後,在 $nTs$ 時刻抽樣,碼間干擾。由於理想 LPF 難以實現,因此選用升餘弦滾降濾波器,傳輸函數為

image-20231210112143612

的升餘弦滾降濾波器滿足要求

$f_N=\frac {1}{2T_s}=\frac {R_s}{2}$ 為奈奎斯特頻率

傳輸帶寬 $B_r=\frac {1=\alpha}{2T_s} Hz$

頻帶利用率 $\eta=\frac {R_s}{B_r}=\frac {2}{1+\alpha} bit/Hz$

在 DVB-S 系統中滾降係數 $\alpha=0.35$

下圖為 QPSK 調製框圖:

image-20231210112752444

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。