您好,欢迎访问三七文档
1AWGN信道中基于循环码的数字通信系统摘要:循环码是线性分组码中一种重要的编码,具有许多特殊的代数性质。其编码和解码相对简单,但纠错的能力较强。循环码除了具有线性码的一般性质外,还具有循环性。本设计利用MATLAB对信号源序列生成,循环码编解码过程,AWGN信道加躁过程建模,分析各个模块波形与功率波,并画出误码率与信噪比关系曲线。对仿真数据,波形进行综合分析,达到设计目的。关键词:循环码,AWGN,MATLAB一、数字通信系统模型与AWGN信道数字通信系统(DigitalCommunicationSystem,DCS)是利用数字信号来传递信息的通信系统,如图1所示,数字通信涉及的技术问题很多,其中主要有信源编码与译码、数字解调与调制、同步以及加密与解密等。加性高斯白噪声AWGN(AdditiveWhiteGaussianNoise)是最进本的噪声与干扰模型。加性噪声:叠加在信号上的一种噪声。白噪声:噪声的功率谱密度在所有的频率上均为一常数,则称这样的噪声为高斯白噪声。在通信上指的是一种通道模型,此通道模型唯一的信号减损是来自于宽带的线性加成或是稳定普密度与高斯分布振幅的白噪声。二、循环码(1)循环码介绍循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码(GreyCode)。循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若(0121...aaaann)为一循环码组,则(1032...nnnaaaa)、(2143...nnnnaaaa)……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。★循环码的多项式表示设码长为n的循环码表示为(0121......aaaaainn),其中ia为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n的各个分量看做多项式:012211)(axaxaxaxaxTininnnn的各项系数,则码字与码多项式一一对应,这种多项式中,x仅表示码元位置的标记,因此我2们并不关心x的取值,这种多项式称为码多项式。★循环码的生成矩阵和一致校验矩阵对所有的i=0,1,2,……k-1,用生成多项式g(x)除iknx,有:式中)(xbi是余式,表示为:因此,)(xbxikn是)(xg的倍式,即)(xbxikn是码多项式,由此得到系统形式的生成矩阵为:,它是一个k×n阶的矩阵。同样,由0THG可以得到系统形式的一致校验矩阵为:如已知(7,4)循环码的生成多项式和校验多项式分别为:1)(3xxxg,1)(24xxxxh。写得其生成矩阵和校验矩阵分别为:(2)循环码编码原理有信息码构成信息多项式011...)(mxmxmkk,其中最高幂次为k-1;用knx乘以信息多项式m(x),得到的)(xmxkn,最高幂次为n-1,该过程相当于把信息码(0121...mmmmkk,,,,)移位到了码字德前k个信息位,其后是r个全为零的监督位;用g(x)除)(xmxkn得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)与)(xmxkn相加,得到的多项式必为一码多项式。3根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图2所示:(3)循环码的纠错原理纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过MODEM传输文件的协议如ZMODEM、XMODEM协议中均用到了CRC校验技术。在磁盘、光盘介质存储技术中也使用该方法。当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:y=c+e上式也可以写成多项式形式:)()()(xexcxy,译码器的任务就是从y(x)中得到e(x),然后求的估值码字)()()(xexyxc并从中得到信息组)(xm。循环码译码可按以下三个步骤进行:(1)有接收到的y(x)计算伴随式s(x);(2)根据伴随式s(x)找出对应的估值错误图样)(xe;(3)计算)()()(xexyxc^,得到估计码字)(xc。若)(xc=c(x),则译码正确,否则,若)()(xcxc,则译码错误。由于g(x)的次数为n-k次,g(x)除E(x)后得余式(即伴随式)的最高次数为n-k-1次,故S(x)共有kn2个可能的表达式,每一个表达式对应一个错误格式。可以知道(7,4)循环码的S(x)共有)47(2=8个可能的表达式,可根据错误图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示。BCH(7,4)循环码错误图样表:4表1BCH(7,4)循环码错误图样上式指出了系统循环码的译码方法:将收到的码字R(x)用g(x)去除,如果除尽则无错;否则有错。如果有错,可由余式S(x)一一找出对应图样,然后将错误图样E(x)与R(x)模2和,即为所求码字C(x),从而实现纠错目的。根据前面的讨论,可得(7,4)循环码译码的程序框图如下图所示:三、MATLAB程序仿真下面采用(15,7)循环码进行仿真。如果不考虑具体的编码和译码过程,采用系统默认的生成矩阵,则仿真方法如下。%(15,7)循环编码性能(纠错后还原为信息序列,与原信息序列进行比较)bits=70000;%符号数msg=randint(bits,1,2);%随机产生的信息序列SNR=0:1:12;%信噪比L=length(SNR);BER1=zeros(1,L);BER2=zeros(1,L);modbit1=pskmod(msg,2);%调制fork=1:L%未编码的序列,调制后经过高斯白噪声信道,再解调制,求误码y1=awgn(modbit1,SNR(k),'measured');%在传输序列中加入AWGN噪声5demmsg1=pskdemod(y1,2);%解调recode=reshape(demmsg1',1,[]);error1=(recode~=msg');errorbits=sum(error1);BER1(k)=errorbits/length(msg);endcode=encode(msg,15,7,'syclic',[100010111]);%(15,7)循环编码modbit2=pskmod(code,2);%调制fork=1:L%编码的序列,调制后经过高斯白噪声信道,再解调制,再纠错后求误码y2=awgn(modbit2,SNR(k),'measured');%在传输序列中加入AWGN噪声demmsg2=pskdemod(y2,2);%解调recode=reshape(demmsg2',1,[]);decodebit=decode(recode,15,7,'cyclic',[100010111]);%译码error2=(decodedbit~=msg');errorbits=sum(error2);BER2(k)=errorbits/length(msg);endsemilogy(SNR,(BER1),'b-*')%画图holdonsemilogy(SNR,(BER2),'r-o')gridonlegend('未编码','(15,7)循环编码');xlabel('SNR/dB');ylabel('BER');title('(15,7)循环编码性能')运行结果如图所示。由图可见,不管是循环编码还是未编码的代码,经译码后误码率都是随着信道信噪比的提升而下降,但相比之下,在同一信噪比时,系统采用循环码编码后性能较好,与未编6码的系统相比误码率大大降低。四、Simulink仿真(1)设计思路(2)设计原理图在设计中,本系统信号产生模块选用了伯努利二进制序列产生器(BernoulliBinaryGenerator)来输出随机数字信号,然后进入二进制循环码编码器(BinaryCyclicEncoder)来进行编码,再送进入AWGN信道(加入高斯白噪声)传输,接受信号送入二进制循环码译码器(BinaryCyclicDecoder)进行差错纠正,其后加一误码率计算模块(ErrorRateCalculation)计算误码率。电路图如下图所示。(3)SIMULINK仿真模块的参数设置:①贝努利二进制序列产生器模块的设置框图左图是贝努利二进制序列产生器模块的设置框图,其中参数有三项:第一项probabilityofazero取值为0.5,表示0和1出现的概率相等。Initialseed表示随机种子数。不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。Sampletime=0.01表示抽样时间,也就是说输出序列中每个二进制符号的持续时间是0.01秒。Samplesperframe表示每帧的抽样数用来确定每帧的抽样点的数目。7②BPSK调制器模块的设置框图如左图所示,BPSK调制器模块的设置框图中有二项,第一项是Phaseoffset(rad)(相位偏移),这里设置为0。第二项是Samplespersymbol(输出信号采样数)这里设置为1。③二进制循环编码器模块的设置框图如右图所示,码字长度为7,信息码长度为4。④AWGN模块参数设置框图如左图所示,Initialseed表示随机种子数。不同的随机种子数将产生不同的二进制序列,特定的随机种子数可以产生一个特定的二进制序列。信噪比为10dB,每个符号的比特数为1,输入信号功率为1w,符号周期为1s。⑤误比特统计模块的设置框图如右图所示,其中Receivedelay表示接收延迟,意思是在通信接收端口需要对接收到的信号进行解调,解码或解交织而带来一定的延迟,使得到达误码统计模块接收端的信号滞后于发送端的信号。为了补偿这种延迟这里设置为0。Computationdelay表示计算延迟,在仿真过程中,有时间需要忽略最初的若干个输入数据就通过计算延迟来实现。这里设置为0。Computationmode表示计算模式,帧的计算模式(Entireframe),误码统计模块对发送端和接收端的所有输入数据进行统计。outputdata是输出数据,这里设置为Port的意思是表示把统计数据从端口中输出。workspace表示把统计数据输出到工作区。8⑥ToWorkspace模块参数设置如左图所
本文标题:纠错码-11
链接地址:https://www.777doc.com/doc-2102859 .html