RS(204,188)碼連續(xù)編碼的設計
在數字電視中RS碼通常是以幀的形式來傳輸的,一幀又有八個數據包,因此連續(xù)編碼就有特別的必要。編碼時先輸入51個是零的數據,得到編碼后將前面51個數據丟棄。要得到RS(204,188)的編碼先要得到域元素,可以借助MATLAB軟件來獲得。程序如下:m=8;%每個符號的比特數;n=2∧m- 1;%編碼后碼字長度;本文引用地址:http://butianyuan.cn/article/166871.htm
k=n-16;%信息長度;gfelement=gftuple([-1:n-1]',m)%產生加羅華域元素;
還可以來求生成多項式g(x).g(x)=(x+1)(x+a)…(x+a15)
程序如下:
N=255;k=239;b=0;gx=rsgenpoly(n,k,[],b)%[]表示缺省的本元多項式。
可以得到g(x):
還可以輸入一組數得到它的編碼程序如下:
m=8;n=255;k=239;b=0;
genpoly=rsgenpoly(n,k,[],b);%產生生成多項式
code=rsenc(msg,n,k,genpoly)%信息碼,前面51個為零,共239 bytes得到的校驗碼是:
48,168,46,159,119,162,72,132,139,235,172,28,76,175,171,238.
硬件設計時常用LFSR(線性反饋寄存器)來實現,可以圖1表示。
運算電路中主要運算是常系數的加羅瓦域乘法,假如有一個八位的二進制數:
域中的數相乘結果仍在域中,那就設結果為r(a)。則有
r(a)=b7a7+b6a6+b5a5+b4a4+b3a3+b2a2+b1a+b0。
與上式相比較就有:
b7=a6;b6=a5;b5=a4;b4=(a7+a3);
b3=(a7+a2);b2=(a7+a1);b1=a0;b0=a7;
同理可以得到編碼需要的定系數伽羅瓦域乘法的結果。
評論