1. 简述Shannon 的信源编码定理及信道编码定理。
[10分] 答:熵:H ,信道容量:C ,传信率:R 。
信源编码:当R>H 时,一定存在某种信源编码方式使信息能够完全传送;否则,当R<=H 时,是不可能的。
信道编码:当R<C 时,一定存在某种信道编码方式使信息能够可靠传送;否则,当R>=C 时,是不可能的。
2. 简述差错控制编码的基本原理。
为何软判决译码比硬判决译码可以得到较高的编码增益?[10分]差错控制编码的定理是发送方对准备传输的数据进行抗干扰编码,即按某种算法附加上一定的冗余位,构成一个码字后再发送。
接收方收到数据后进行校验,即检查信息为和附加冗余位之间的关系,以检查传输过程中是否有差错发生。
硬判决译码,即在译码前对接收量进行二电平量化后再进行判决译码。
种种量化方式比较粗糙,将丢失较多有用信息。
而软判决译码的量化电平数Q>2,(常取Q>8),量化越精细,损失也就越小,故将获得较硬判决译码更大的编码增益。
3. 一个数据传输信道,带宽为1MHz,信噪比为50dB,计算在这个信道上能实现的最大信息传输率。
为什么信息传输率是受限的?[10分] 16.7Mbps信息传输率受限是因为信道带宽限制,以及信道中的噪声干扰。
4. 设一个[7,4]码的生成阵为试求该码的全部码字、一致校验矩阵以及最小汉明距离。
[20分]信息位有四位,应有16种组合——信息组0000 0001 0010 00110100 0101 0110 01111000 1001 1010 10111100 1101 1110 1111C={C| c=mG}⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=0001110001001101001011000111G全部码字:0000000 0001110 0010011 00111010100101 0101011 0110110 01110001000111 1001001 1010100 10110101100010 1101100 1110001 11111111一致校验矩阵G=[I A]H=[AT I]最小汉明距离:第4,5,6列的和为0,所以最小汉明距离为:35.循环冗余校验(CRC)的生成多项式为CRC-16: x16+x15+x2+1,试画出其编译码电路。
若用MATLAB软件实现,信息序列为500bit的随机序列,给出其主要软件和编码结果。
(译码时仅考虑检错)[20分] dec2bin(2009201211)1110111110000011111101000111011编码电路:移位脉冲cp在前1-k个节拍内,k1,k2打向“1”,各信息元直接经k1输出,成为前k个码元;在k+1~n个节拍内,k1,k2打向“2”,使移位寄存器中各校验元依次输出,形成一个长为n的码字。
译码电路:当寄存器为全零时,表示无错,输出c的前k个码字,即为正确的信息吗。
%发送端对信息进行编码Ip=[1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1]msg=[ip,randint(1,469)]generator=[1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1];c=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];multip=conv(c,msg);[divid,remainder]=deconv(multip,generator);remainder=mod(remainder(end-15:end),2);code=[msg,remainder];%接收端对信息进行校验[divid,remainder]=deconv(code,generator);remainder=mod(remainder(end-15:end),2);if isequal(remainder,[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);msgbox(['crc[',num2str(code(end-16:end)),'] 校验正确!']);elsemsgbox(['crc[',num2str(remainder),'] 校验错误!']);endclcclearid=[1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0]msg=[id,randint(1,469)]poly=[1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1];[M N]=size(poly)mseg=[msg zeros(1,N-1)][q r]=deconv(mseg,poly)r=abs(r)for i=1:length(r)a=r(i);if ( mod(a,2)== 0 )r(i)=0;elser(i)=1;endendcrc=r(length(msg)+1:end)frame = bitor(mseg,r)[divid,remainder]=deconv(frame,poly);remainder=mod(remainder(end-15:end),2);if isequal(remainder,[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);msgbox(['crc[',num2str(frame(end-16:end)),'] 校验正确!' ] );elsemsgbox(['crc[',num2str(remainder),'] 校验错误!']);end6.卷积码的码率为R=1/2,约束度为k=7,生成多项式为G1=133,G0=171,请画出该卷积码的编码器和部分格网图。
采用Viterbi软判决译码时要考虑哪些关键步骤,用软件(C或MATLAB 实现其主要部分。
[20分](2,1,7)有六个寄存器。
由网格图的输入支路特点分析可知,产生任意一个状态节点Si的输入条件mi是确定的,即mi=‘1’,i为偶数;mi=‘0’,i为奇数。
输入条件mi表示译码器最终需要输出的比特信息。
此外,译码器所要找的留选路径是不同状态的组合。
对于(2,1,6)卷积码而言,具有2m=26=64(m为编码存储)个不同状态,可以用6位比特向量来表示所有的状态。
将mi作为最高位加在状态向量上,用7位比特向量同时表示每一状态和对应的输入支路的译码信息,这样在译码器回溯时就可以直接输出存储向量的高位作为译码器的输出。
采用这种方法大大降低了回溯路径和译码器判决的难度,由此降低了译码器结构的复杂性。
G1=1011011,G0=1111001Viterbi软判决译码时,要首先对接受序列进行多比特量化,理想软判决情况下,信道接受值直接用于译码器。
另外,软判决算法在距离度量上采用的是欧几里德度量。
由于编码器有6级移位寄存器,故存在64个状态,分别为s0~s63.在这里只取s。
(000000),s1(000001),s2(000010),s3(000011)作部分网格图:在卷积码译码中,Viterbi译码算法是纠错能力很强的一种,已广泛应用于卫星通信系统。
Viterbi译码算法是一种最大似然译码算法[1]。
Viterbi译码算法的步骤:(1)根据接收码符号,计算出相应的分支量度值;(2)将进入某一状态的2条分支量度与其前面的状态量度累加求和;(3)比较到达同一状态的2条新的路径量度的大小,选择最小者作为新的状态量度存储起来,并记住与此路径(幸存路径)对应的信息码元;(4)对所有的2m个状态都实施上述相加/比较/选择(ACS)运算;路径量度最小的一条路径(约为以前码元长度的5倍)作为译码数据输出;(6)将译码时刻向前延伸一步,重复以上步骤,直至译码结束。
7.如果有一个BCH码(15,11),请说明其系统码的编译码过程,并画出原理电路。
[10分]gx=x4+x2+x+1可纠1位错误。
检验矩阵为H=111101*********011110101100100001111010110010111010110010001编码过程:首先将信息元多项式m(x)乘以x4,得到xn-k×m(x),即将信息码置为(c14,c13,c12,……,c4),设为c1。
然后找出校验码cr满足cr=c1(modg(x))=(c3,c2,c1,c0)这样使得到带发送码字c(x)=c1+cr=(c14,c13,……,c0).解码过程:1,计算接收到的码字向量R的2t伴随矩阵;2,计算错误定位多项式;3,解多项式,得到错误位置;4,如果不是二进制BCH码,就计算错误位置的误差值。
编码电路:前1~11节拍,k1置于1 ,第12~15节拍,k1置于2 。
译码电路:图按错误图样为(100000000000000)设计。
当m=1时,使D0~D3清零。
BCH码的译码方法可以有时域译码和频域译码两类。
频移译码是把每个码组看成一个数字信号,把接受到的信号进行离散傅氏变换(DFT),然后利用数字信号处理技术在“频域”内译码,最后进行傅氏反变换得到译码后的码组。
时域译码则是在时域直接利用码的代数结构进行译码。
BCH的时域译码方法有很多,而且纠多个错误的BCH码译码算法十分复杂。
常见的时域BCH译码方法有彼得森译码、迭代译码等。
BCH的彼得森译码基本过程为:1、用的各因式作为除式,对接收到的码多项式求余,得到t个余式,称为“部分校验式”。
2、用t个部分校验式构造一个特定的译码多项式,它以错误位置数为根。
3、求译码多项式的根,得到错误位置。
4、纠正错误。