0 引言
数字电视广播需要将高质量和高可靠的图像、声音、文字和数据等信息快速、高效地传输到接收方,但传输中发生杂散电磁波干扰或者存在多径反射和阻抗不匹配时,接收端就很容易产生误码,造成恢复数据出现差错,甚至完全恢复不了原来的数据,使得数字电视广播的高可靠性大大降低。
为了提高传输系统的可靠性,需要在数字调制之前对数字基带信号进行前向纠错编码,也就是信道编码,信道编码的目的就是数字电视系统的抗干扰能力,使码在传输中即使有各种干扰,接收端仍然能够正确接收。
1 RS码编码原理
RS(n,k)码,也写成RS(n,k,2t),是非二进制码。它是由k个m-bits的输入数据流,加上由k个m-bits的输入数据流生成的2t个m-bits的校验数据流而产生的n个m-bits数据流。具有以下的特性:
①0kn2m+2。通常n=2m-1。②2t=n-k。t表示纠错的最大能力。③最小码距d0=2t+1。
RS(n,k)码是一种多进制线性分组码。构成RS(n,k)码常用以下的系统编码方式:
其中a是本原元。r=n-k,t是纠错的最大个数,modg(x)表示除以g(x)的余数。
2 设计实现
RS(204,188)码实际上是RS(255,239)码的截断码,常用于数字电视的信道纠错。
在数字电视中RS码通常是以帧的形式来传输的,一帧又有八个数据包,因此连续编码就有特别的必要。编码时先输入51个是零的数据,得到编码后将前面51个数据丢弃。要得到RS(204,188)的编码先要得到域元素,可以借助MATLAB软件来获得。程序如下:m=8;%每个符号的比特数;n=2∧m- 1;%编码后码字长度;
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;
同理可以得到编码需要的定系数伽罗瓦域乘法的结果。
测试时加入前面随机的信息码,得到仿真结果见图3。
由图3可以看出,仿真产生的监督码是:
图3编码仿真输出
48,168,46,159,119,162,72,132,139,235,172,28,76,175,171,238.
与MATLAB软件产生的编码比较可知结果是正确的。综合以后的电路示意图见图4所示。
用Virtex4的4vlx15sf363-11进行综合,占用352个SLICE,工作频率可以达到233.568 MHz。
3 结论
先采用MATLAB软件获得了域元素、生成了多项式和编码,极大地减轻了计算量。通过改善编码结构。正确获得了编码,也实现了编码的连续性,在工程中有很大的实用意义。