精华内容
下载资源
问答
  • Turbo码是接近于香农极限的信道编码定理,Turbo码出现给通信领域带来了极大影响,极大推动了信息领域发展。Turbo广泛应用在现代通信各个方面,保证了信息传输可靠性、提高传输质量,提高了信号传输抗...
          Turbo码是接近于香农极限的信道编码定理,Turbo码的出现给通信领域带来了极大的影响,极大的推动了信息领域的发展。Turbo广泛应用在现代通信的各个方面,保证了信息传输的可靠性、提高传输质量,提高了信号传输的抗干扰性。
          1.Turbo编码原理
          Turbo码编码器主要由分量编码器、交织器以及删余矩阵和复接器组成。一个常见的Turbo 码编码器如图1.1所示。
    

    在这里插入图片描述
    图1.1 Turbo码编码器结构
    在Turbo码编码过程中,两个分量码的输入信息序列是相同的,长度为N的信息序列{uk}在送入第一个分量编码器(RSC1)进行编码的同时作为系统输出{xks}直接送至复接器,同时{uk}经过交织器I后的交织序列{x1p}送入第二个分量编码(RSC2)。其中,n=I(k),0<n,k<N-1。I()为交织映射函数,N为交织长度,即信息序列长度。两个分量编码器输入序列仅仅是码元的输入顺序不同。两个分量编码器输出的校验序列分别为{x1p}和【x2p}。为提高码率和系统频谱效率,可以将两个校验序列经过删余矩阵删余得到(xkp},再与系统输出{}一起经过复接构成码字序列(ck)。
    Turbo码的分量码采用迭代系统卷积码,这是Turbo码性能优越的一个重要原因。分量编码器可以选用递归系统卷积(RSC,Recursive Systematic Convolutional)码或非系统卷积(NSC,Nonsystematic Convolutional Code)码。给定一个RSC码总能够找到一个生成多项式与之对应的NSC码,反之也一样。
    交织实际上就是将数据序列中元素的位置进行重置,从而得到交织序列的过程。这个过程的逆过程就是在交织序列的基础上将交织序列中的元素恢复原有顺序,从而恢复原始序列的过程,这个过程一般也称为解交织过程。实现交织解交织过程的设备就称为交织器和解交织器。

    1.1交织器的基本原理
    交织是指一个数据序列在一一对应的条件下进行数据位置的重排过程。其逆过程为解交织,也就是将接收到的信息序列进行位置交换,使数据的位置还原成发送时的顺序。假设输入序列为c=(c1,c2,c3,…,cN),那么其输出序列及映射关系如下图所示:
    在这里插入图片描述
    图1.1 交织原理
    1.2常用交织器的介绍
    1.2.1倒序交织器
    倒序交织器原理较为简单,只需将输入序列按照逆序输出即可。该方法需要的计算资源少,交织时延短,但交织前后序列的相关性较大。
    1.2.2分组交织器
    分组交织器是比较常见的一类交织器,它广泛应用于通信系统中。其交织过程描述如下:首先将输入信息序列按照行的顺序写入一个的矩阵,然后将数据按列读出。相对应的解交织处理就是将数据按列写入相同的矩阵,然后按行读出。
    具体的读写顺序如下图所示:
    在这里插入图片描述

                            图1.2 分组交织器
    

    分组交织器和其解交织器相对比较容易实现。但分组交织存在一个比较明显的缺点,就是对于那些低重量输入序列,交织前后,其重量分布不变(实验证明:在这种情况下,生成的 Turbo 码的性能较差)。
    1.2.3螺旋交织器
    分组螺旋交织器首先将输入序列按行写入一个的矩阵,与互为素数。交织时从矩阵的左上角到右下角方向读出数据,每向右移一位的同时向下移一位,即行和列索引同时递增,步长为。通常要求为分量码约束长度的整数倍。假设ri和ci分别表示第i个比特的行和列的索引,则分组螺旋交织器下一个要读取的数据的行列索引分别为:
    其中,i=0,1,2,…,N-1。 递归的初始值设置为r0 =0,c0 = 0。
    下图给出了分组螺旋交织示意图,按照图中a-b-c-d-e-f的顺序依次读取数据即可得到交织输出。当然,分组螺旋交织过程也可以从交织矩阵的左下角到右上角读取数据,结果如下图所示:
    在这里插入图片描述

    图1.3 螺旋交织器
    1.2.4随机交织器
    首先给序列中的每一比特位都赋予随机产生的映射地址(交织向量),然后用查表的方式实现码元交织。使用这种交织器,会使编码所需存储量增加,但交织后码元间的相关性大大降低。其原理如下图所示:
    在这里插入图片描述
    图1.4 随机交织器

    实验仿真:
    2.1 参数设置
    我们利用 Matlab对各交织器方案进行了仿真,各参数设置如下:
    信息序列:由随机函数产生,序列长度为25600。
    编码结构:选用4, [13 15 17],13的 RSC 编码,编码速率为 1/3,这也是1/3码率下的ccdcn编码标准。
    交织长度: 128、256、512、1024。
    调制解调方式:采用BPSK调制与解调。
    道模型:高斯加性白噪声无记忆信道(AWGN)。
    译码器:采用对数最大后验概率(LOGMAP)译码算法,迭代次数为 4 次。
    交织器类型:倒序交织器,倒序输出。行列式分组交织:分组矩阵选 16*(length/16);随机交织:利用迭代算法得到。

    2.2 仿真结果
    根据设置的参数,EbNo设置为-16db~0db,交织深度设置为256,分别选择倒序交织器、分组交织器、随机交织器进行仿真,得到如下结果:
    在这里插入图片描述

    图2.1 交织器类型对Turbo性能的影响
    从上图可以看出:随着信道信噪比从-15db逐渐提高,随机交织器、分组交织器在-6db时误码率已经趋近于0。而倒序交织器在-4db至-3db时才趋近于0。随机交织器相比倒序交织器,降低了序列的相关性,提高了编码性能。分组交织器与随机交织器性能相近,但随机交织后的序列相关性较好。
    随后,针对随机交织器这一类型,研究交织深度对编码性能的影响,分别选择交织深度为128、256、512、1024,得到如下结果:
    在这里插入图片描述
    图2.2 交织深度对Turbo性能的影响
    从上图可以看出:随着信道信噪比从-15db逐渐提高,编码深度为1024的曲线信噪比为-7db时误码率已经趋近于0,性能明显优于其他交织深度;而交织深度为128的曲线,在-5db是误码率依然较高,收敛较慢。可以看出对于同一交织器,交织深度越大,编码性能越好。

    随后我们输入图像,进行分析:

    这里我们以灰度图像lena(512*512)为例,采用BPSK调制与解调,信道环境为AWAG信道,信噪比为6db。
    图像在0db下分别经卷积编码,和Turbo编码后的传输质量分析:
    在这里插入图片描述
    进行试验,结果如上图所示:左图原始图像,中间为经调制,过信道,解调后的图像,右图为错误序列。信道信噪比为0db。第一行是经卷积编码后经信道(加入信噪比6db的高斯白噪声)的图像。第二行是图像经Turbo编码后过信道的图像。由前述可知,在-6db时Turbo误码率已经接近于0。而在0db条件下,卷积码误码率仍然较高。这6db的提升带来的可能是几百万的收益。

    分析上图的结果可知,采用不同的信道编码的传输系统效果不同,观察原始图像、接收图像和错误图像可知Turbo码的性能较卷积码有较大的提升,进而得出Turbo性能明显优于卷积码

    2.验证不同交织器类型对Turbo码性能的影响
    在这里插入图片描述
    进行试验,结果如上图所示:左图原始图像,中间为经调制,过信道,解调后的图像,右图为错误序列。信道信噪比为-6db。第一行是采用倒序交织器经信道的图像。第二行是图像随机交织器后过信道的图像。分析上图可知,交织器的结构对信道编码的效果有较大的影响,对比分析经过随机交织器和倒序交织器结构的Turbo图像传输系统后的接收图像与原始图像可知,在此传输系统中倒序交织器性能更好。

    以上是整个实验过程。下面是实验代码:
    1.主函数,读取图像,进行turbo编码,bpsk调制,过awag信道,随后依次解调,还原,得到传输后的图像。

     	%%
    clc;
    close all;
    
    %% 图像初始化
    lena_jpg = imread('lena_rgb.jpg');
    lena_bmp = rgb2gray(lena_jpg);      %转为灰度图像
    
    lena_bmp_list = lena_bmp(:);
    lena_2bit = de2bi(lena_bmp_list);
    lena_2bit = double(lena_2bit);      %转为双精度数值
    lena_2bit_list = lena_2bit(:);      %数据转为列向量
    
    %% 分析不同信噪比下图像传输质量比较
    % EbNo1 = -10;
    % EbNo2 = -8;
    % EbNo3 = -6;
    % 
    % [receive_data1,error_bits1] = Turbo_AWAG_chanel(lena_2bit_list,EbNo1,1); %调用函数 得到过信道图像
    % [receive_data2,error_bits2] = Turbo_AWAG_chanel(lena_2bit_list,EbNo2,1);
    % [receive_data3,error_bits3] = Turbo_AWAG_chanel(lena_2bit_list,EbNo3,1);
    % 
    % receive_lena_1 = receive_image_reshape(receive_data1);          %接收图像
    % error_image_1 = lena_bmp-receive_lena_1;                        %错误图像
    % 
    % receive_lena_2 = receive_image_reshape(receive_data2);          
    % error_image_2 = lena_bmp-receive_lena_2;
    % 
    % receive_lena_3 = receive_image_reshape(receive_data3);
    % error_image_3 = lena_bmp-receive_lena_3;
    % 
    % % 图像分析
    % figure,
    % subplot(3,3,1)
    % imshow(lena_bmp)
    % title('原始图像');
    % subplot(3,3,2)
    % imshow(receive_lena_1)
    % title('接收图像 (EB/EN=-10)');
    % subplot(3,3,3)
    % imshow(error_image_1)
    % title('错误序列');
    % 
    % subplot(3,3,4)
    % imshow(lena_bmp)
    % title('原始图像');
    % subplot(3,3,5)
    % imshow(receive_lena_2)
    % title('接收图像 (EB/EN=-8)');
    % subplot(3,3,6)
    % imshow(error_image_2)
    % title('错误序列');
    % 
    % subplot(3,3,7)
    % imshow(lena_bmp)
    % title('原始图像');
    % subplot(3,3,8)
    % imshow(receive_lena_3)
    % title('接收图像 (EB/EN=-6)');
    % subplot(3,3,9)
    % imshow(error_image_3)
    % title('错误序列');
    
    %% 分析卷积码和Turbo码
    EbNo11 = 0;
    [receive_data12,error_bits12] = ConvolutionalCreat(lena_2bit_list,EbNo11);      %卷积码
    [receive_data11,error_bits11] = Turbo_AWAG_chanel(lena_2bit_list,EbNo11,1);     %随机交织器
    
    receive_lena_12 = receive_image_reshape(receive_data12);  
    error_image_12 = lena_bmp-receive_lena_12;   
    receive_lena_11 = receive_image_reshape(receive_data11); 
    error_image_11 = lena_bmp-receive_lena_11;  
    
    figure,
    subplot(2,3,1)
    imshow(lena_bmp)
    title('原始图像');
    subplot(2,3,2)
    imshow(receive_lena_12)
    title('接收图像 (卷积码 EB/No=0)');
    subplot(2,3,3)
    imshow(error_image_12)
    title('错误序列');
    subplot(2,3,4)
    imshow(lena_bmp)
    title('原始图像');
    subplot(2,3,5)
    imshow(receive_lena_11)
    title('接收图像 (Turbo EB/No=0)');
    subplot(2,3,6)
    imshow(error_image_11)
    title('错误序列');
    
    
    
    
    %% 分析不同交织器下的图像传输质量
    EbNo21 = -6;
    [receive_data21,error_bits21] = Turbo_AWAG_chanel(lena_2bit_list,EbNo21,1);  %随机交织器
    [receive_data22,error_bits22] = Turbo_AWAG_chanel(lena_2bit_list,EbNo21,2);  %倒序交织器
    
    receive_lena_21 = receive_image_reshape(receive_data21);          
    error_image_21 = lena_bmp-receive_lena_21;                        
    
    receive_lena_22 = receive_image_reshape(receive_data22);          
    error_image_22 = lena_bmp-receive_lena_22;                        
    
    figure,
    subplot(2,3,1)
    imshow(lena_bmp)
    title('原始图像');
    subplot(2,3,2)
    imshow(receive_lena_22)
    title('接收图像 (随机交织器 EB/No=-6)');
    subplot(2,3,3)
    imshow(error_image_22)
    title('错误序列');
    subplot(2,3,4)
    imshow(lena_bmp)
    title('原始图像');
    subplot(2,3,5)
    imshow(receive_lena_21)
    title('接收图像 (倒序交织器 EB/No=-6)');
    subplot(2,3,6)
    imshow(error_image_21)
    title('错误序列');
    
    
    
    
    
    
    

    2.子程序:turbo编码程序(包括不同的交织器代码)

    function [receive_data,error_bits] = Turbo_AWAG_chanel(data,EbNo,intrlvrIndices_type)
        
        
        noiseVar = 10^(-EbNo/10);       %信噪比转换
        rng default
        %% 交织器
        frmLen = length(data);
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 交织器类型的选取 %%%%%%%%%%%%%%%%%%%%%%%
        %%%%%%   1表示随机交织器 2表示倒序交织器 3表示分组交织器   %%%%%%%%%%%%%
        if intrlvrIndices_type == 1
            intrlvrIndices = randperm(frmLen);      %随机交织 利用randperm产生随机数列
        elseif intrlvrIndices_type == 2
            intrlvrIndices = (frmLen:-1:1);         %倒序排列
        elseif intrlvrIndices_type == 3             %分组交织
            
            a = 1:frmLen;
            b = zeros(1,frmLen);
            m =16;
            n =frmLen/m;
            
            for i=1:frmLen
                j = mod(i-1,n)*m+floor((i-1)/n)+1;
                b(j) = a(i);
            end
            intrlvrIndices = b;
        end
        %% Turbo
        % Create a turbo encoder and decoder pair using the trellis structure given
        % by |poly2trellis(4,[13 15 17],13)| and |intrlvrIndices|.
        
        hTEnc = comm.TurboEncoder('TrellisStructure',poly2trellis(4, ...
            [13 15 17],13),'InterleaverIndices',intrlvrIndices);
        
        hTDec = comm.TurboDecoder('TrellisStructure',poly2trellis(4, ...
            [13 15 17],13),'InterleaverIndices',intrlvrIndices, ...
            'NumIterations',4);     %Iterations表示迭代,该参数意为迭代阶数
        %% BPSK
        % Create a BPSK modulator and demodulator pair, where the demodulator
        % outputs soft bits determined by using a log-likelihood ratio method.
        hMod = comm.BPSKModulator;
        hDemod = comm.BPSKDemodulator('DecisionMethod','Log-likelihood ratio', ...
            'Variance',noiseVar);
    
        %% AWAG
        % Create an AWGN channel object and an error rate object.
        hChan = comm.AWGNChannel('EbNo',EbNo);
        hError = comm.ErrorRate;
    
        %% 数据处理
        
        encodedData = step(hTEnc,data);
        modSignal = step(hMod,encodedData);
        receivedSignal = step(hChan,modSignal);
        demodSignal = step(hDemod,receivedSignal);
        receiveBits = step(hTDec,-demodSignal);
        
    %     receiveBits = zeros(length(demodSignal),1);
    %     
    %     for i=1:length(demodSignal)
    %         if demodSignal(i)>=0
    %             receiveBits(i)=0;
    %         elseif demodSignal(i)<0
    %             receiveBits(i)=1;
    %         end
    %     end
        
        errorStats = step(hError,data,receiveBits);
        
        
        receive_data = receiveBits;
        error_bits = errorStats(1);
    
    
    
    end
    

    3.子程序:卷积编码程序(添加卷积码,目的是为了和turbo编码进行比较,凸显turbo编码性能的优越性)

    function [receive_data,error_bits] = ConvolutionalCreat(data,EbNo)
    
    noiseVar = 10^(-EbNo/10);       %信噪比转换
    
    %% 卷积码
    hConEnc = comm.ConvolutionalEncoder('TrellisStructure',poly2trellis(4, ...
            [13 15 17],13));
    hDec = comm.ViterbiDecoder('TrellisStructure',poly2trellis(4, ...
            [13 15 17],13),'InputFormat','Hard');
    
    %% BPSK
    % Create a BPSK modulator and demodulator pair, where the demodulator
    % outputs soft bits determined by using a log-likelihood ratio method.
    hMod = comm.BPSKModulator;
    hDemod = comm.BPSKDemodulator('DecisionMethod','Log-likelihood ratio', ...
        'Variance',noiseVar);
    
    %% AWAG
    % Create an AWGN channel object and an error rate object.
    hChan = comm.AWGNChannel('EbNo',EbNo);
    hError = comm.ErrorRate;
    %% 
    % hConEnc = comm.ConvolutionalEncoder;
    % 
    % hChan = comm.AWGNChannel('NoiseMethod', ...
    %     'Signal to noise ratio (SNR)',...
    %     'SNR',noiseVar);
    % hDemod = comm.DPSKDemodulator('BitOutput',true);
    % hDec = comm.ViterbiDecoder('InputFormat','Hard');
    % hError = comm.ErrorRate('ComputationDelay',3,'ReceiveDelay', 34);
    
    %% 
    
        encodedData = step(hConEnc,data);
        modSignal = step(hMod,encodedData);
        receivedSignal = step(hChan,modSignal);
        demodSignal = step(hDemod,receivedSignal);
        receiveBits = step(hDec,-demodSignal);
        
    %     receiveBits = zeros(length(demodSignal),1);
    %     
    %     for i=1:length(demodSignal)
    %         if demodSignal(i)>=0
    %             receiveBits(i)=0;
    %         elseif demodSignal(i)<0
    %             receiveBits(i)=1;
    %         end
    %     end
        
        errorStats = step(hError,data,receiveBits);
        
        
        receive_data = receiveBits;
        error_bits = errorStats(1);
    
    
    % 
    % for counter = 1:20
    %     data = randi([0 1],30,1);
    %     encodedData = step(hConEnc, data);
    %     modSignal = step(hMod, encodedData);
    %     receivedSignal = step(hChan, modSignal);
    %     demodSignal = step(hDemod, receivedSignal);
    %     receivedBits = step(hDec, demodSignal);
    %     errors = step(hError, data, receivedBits);
    % end
    % %%
    % % Display the number of errors.
    % errors(2)
    end
    

    子程序——图像调整代码(功能是图像整形,进制转换)

    function y=receive_image_reshape(receive_data)
    
        receive_data_2bit = reshape(receive_data,length(receive_data)/8,8);
        receice_10bit = bi2de(receive_data_2bit);
        receive_image = reshape(receice_10bit,sqrt(length(receice_10bit)),sqrt(length(receice_10bit))); %接收图像
        receive_lena = uint8(receive_image);            %双精度数值转换为UINT8型号
        y = receive_lena;
        
    end
    

    实验图像在此:可以下载
    在这里插入图片描述

    展开全文
  • Turbo编码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性长码,并通过在两个软入/软出(SISO)译码器之间进行多次迭代实现了伪随机译码。他性能远远超过了其他的编码方式,得到了广泛关注...

    Turbo编码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软入/软出(SISO)译码器之间进行多次迭代实现了伪随机译码。他的性能远远超过了其他的编码方式,得到了广泛的关注和发展。

    Turbo编码原理

    编码方面主要包括对并行级联编码与串行级联编码的分析,以及对混合级联方式的研究。

    Turbo编码器的结构

    典型的Turbo码编码器结构框图如图1所示:由两个反馈的编码器(称为成员编码器)通过一个交织器I并行连接而成。如果必要,由成员编码器输出的序列经过删余阵,从而可以产生一系列不同码率的码。例如,对于生成矩阵为g=[g1,g2](212)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。一般情况下,Turbo码成员编码器是RSC编码器。原因在于递归编码器可以改善码的比特误码率性能。

     

    turbo编码

    3GPP LTE协议中使用的Turbo码为1/3码率的并行级联码,它的编码器由两个相同的码率为1/2RSC编码器及交织器组成,如图2所示。

    由于与非递归卷积码相比,递归卷积码产生的码字重量更大,所以这里采用了两个相同的系统递归卷积码(RSC)。信息序列分成相同的两路,第一路经过RSC编码器1,输出系统码及校验码。另一路先通过交织器进行交织,使信息序列在1帧内重新排列顺序,然后经过RSC编码器2得到系统码和对应的校验码,由于该系统码和实际上都是原信息序列,只是排列顺序不同,在接收端完全可以通过对进行交织得到,因此在传输过程中可以省去,而只保留对应的校验位。


    由于RSC编码器不能如非递归编码器一样通过输入连“0”序列来使编码器复位(网格终止),因此通过设计如图8所示的AB间的开关来控制编码器终止(AB连接时,发现相同的反馈进行异或送进存储器时数据为0),当一帧结束时,开关由A打到B,则经过m时刻后,编码器复位,可以对下一帧数据进行编码。这里m=2。只有RSC编码器1(外编码器)进行了网络终止,RSC编码器2保持开放。


     

    举例说明turbo码工作原理



    假设输入序列为:     U = (1 0 1 0 1 1 0 1)                        

    第一个子码的校验序列为   v1 = (1 1 0 0 0 1 1 1)                       

    假设交织后的第二个子码的输入序列为:U’ = (1 1 0 1 1 0 0 1) 

    第二个子码的校验序列为: v2 = (1 0 0 1 1 0 1 1) 

    Turbo码的输出序列为:V = 111010100001101110011111) 

     

    Turbo编码中的交织器

    协议中交织器输入输出bit之间的关系:

    其中f1f2的取值与K值有关,关系见协议TS36.212中的Table5.1.3-3

     

    Turbo 译码

    译码方面主要包括迭代译码、译码算法(最大后验概率算法MAP、修正的MAP算法Max-Log-MAP、软输出Viterbi 算法SOVA等)的研究。

    标准turbo译码器结构

    Turbo码的迭代译码方案,与其并行级联编码方案相配合,无论从编码结构还是译码思路上都将Turbo码看作一个整体的长随机码,因此明显提高了译码性能。

    迭代译码通过将外码译码器的输出信息反馈回内译码器,从而使得两个相互独立的译码器充分利用彼此的信息,也因此才将各个子码连成一个真正意义下的长码。

     

    Turbo译码算法

    标准MAP算法

    是对bahl软输出算法做一定修正后,通过除以先验分布来消除正反馈的算法。对于约束长度为M 1的卷积码,其运算量为每比特6x3^M次乘法和5x2^M次加法。由于乘法运算量大,限制了译码的规模和速度。

    Log-MAP算法

    实际上就是对标准MAP算法中的似然全部用对数似然度来表示,这样,乘法运算变成了加法运算。总的运算量成为6x2^M次加法,5x2^M次求最大运算和5x2^M次查表。

    Max-Log-MAP算法

    是在上述对数域的算法中,将似然值加法表示式中的对数分量忽略,是似然加法完全变成求最大值运算,这样除了省去大部分的加法运算外,最大的好处是省去了对信噪比的估计,使得算法更稳健。

    展开全文
  • 介绍了信道编码中所采用的前向纠错编码(FEC)方案中的重要技术——卷积交织器和解交织的原理,并在 此基础上提出了基于FPGA的卷积交织器的设计方案。文中对卷积交织器设计的关键部分,即读写地址的产生方法进行了...
  • 然而,信道编码仅在检测和校正单个差错和不太长差错串时才有效。  为了解决这一问题,希望能找到把一条消息中相继比特分散开方法,即一条消息中相继比特以非相继方式被发送。这样,在传输过程中即使发生了...

    在陆地移动通信这种变参信道上,比特差错经常是成串发生的。这是由于持续较长的深衰落谷点会影响到相继一串的比特。然而,信道编码仅在检测和校正单个差错和不太长的差错串时才有效。
     为了解决这一问题,希望能找到把一条消息中的相继比特分散开的方法,即一条消息中的相继比特以非相继方式被发送。这样,在传输过程中即使发生了成串差错,恢复成一条相继比特串的消息时,差错也就变成单个(或长度很短),这时再用信道编码纠错功能纠正差错,恢复原消息。这种方法就是交织技术
     交织技术的一般原理
      假定由一些4比特组成的消息分组,把4个相继分组中的第1个比特取出来,并让这4个第1比特组成一个新的4比特分组,称作第一帧,4个消息分组中的比特2~4,也作同样处理。
      然后依次传送第1比特组成的帧,第2比特组成的帧,…。在传输期间,如果帧2丢失,若没有交织,那就会丢失某一整个消息分组,但采用了交织,仅每个消息分组的第2比特丢失,再利用信道编码, 全部分组中的消息仍能得以恢复,这就是交织技术的基本原理。概括地说,交织就是把码字的b个比特分散到n个帧中,以改变比特间的邻近关系,因此n值越大,传输特性越好,但传输时延也越大,所以在实际使用中必须作折衷考虑。

    展开全文
  • 虽然信道编码(分组编码和卷积编码)能纠正错误比特或有限连续错误比特,但在陆地移动信道上,大多数误码并非是单个出现,很可能是长突发形式信息串错误比特。而采用交织技术目的是使误码离散化,使突发差错变为...

           数字通信中,由于传输特性不理想及各种干扰和噪声的影响,将会产生传输差错。虽然信道编码(分组编码和卷积编码)能纠正错误比特或有限连续错误比特,但在陆地移动信道上,大多数误码并非是单个出现的,很可能是长突发形式的信息串错误比特。而采用交织技术的目的是使误码离散化,使突发差错变为随机离散,这样在接收端纠正随机离散差错就能够改善整个数据序列传输质量了。

           交织技术的一般原理如下:假定有一些比特组成的消息分组,把4个相继分组中的第1个比特取出来,并让这4个第1比特组成一个新的4比特分组,称作第1帧;4个消息分组中的第2~4比特,也作同样的处理,如下图所示。

           然后依次传送第1比特组成的帧,第2比特组成的帧……若在传输期间,帧2丢失,如果没有交织,那么就丢失了某一整体消息分组;采用交织技术后,即使每个消息分组的第2比特丢失,利用信道编码后,全部消息分组中的消息仍可恢复,这就是交织技术的基本原理。概括地说,交织就是把码字的b个比特分散到n个帧中,以改变比特间的邻近关系。因而n值越大,传输性能越好(n为交织深度)。但是交织将带来时延,由于在收发双方均有先存储后读取数据处理的过程,故n值越大,传输时延也越大,所以在实际使用中必须折中考虑

           在GSM交织方案的实施中,交织分两次进行,第一次为比特间交织:语音编码器和信道编码器将每20 ms语音数字化并进行编码,编为456个比特,速率为22.8 kb/s,并将456比特按(57 × 8)交织矩阵分成8组,每组57比特就成为经矩阵交织后的离散编码比特分布;第二次交织为块间交织:一个普通突发脉冲(时隙)中可传输2组57比特数据,GSM系统将相邻的两个语音块再进行交织,每一个20 ms语音已成为8组57比特数据,前一个20 ms的第5、6、7、8组分别与后一个20 ms的第1、2、3、4组结合,构成一个时隙(TS)的语音数据。

    参考文献:现代通信系统新技术,王兴亮著,西安电子科技大学出版社。

    展开全文
  • (前面部分讲太基础了,所以从1.5节开始) 第一章 通信原理概述 ...1.5.2信道编码交织 信道编码是通过添加冗余信息,以便在接收端进行纠错处理,解决信道噪声和干扰导致误码问题。 为了解决连续误...
  • 这里写目录标题一、ofdm总体概述二、基本原理(一)OFDM系统接收机典型结构图(二)OFDM调制与解调三、过程中涉及技术(一)信道编码(二)交织(三)扩频(四)导频(五)保护间隔(六)RF射频调制(七)信道...
  • 第五章 信道编码交织 信道编码的引入主要是为了解决数据在信道中传输时引入误码问题。解决误码问题有两个办法: • 接收端在发现误码后,请求发送端对错误数据进行重传,称为后向纠错。ARQ就是一种后向纠错...
  • WiMAX FEC编译码原理研究及性能分析,王志云,姜冰,IEEE802.16协议无线城域网OFDMA物理层所采用的信道编码包括如下几个部分:随机化、前向纠错编码、比特交织以及调制。在OFDMA物理层所采�
  • 现代编码理论 经典教材

    热门讨论 2008-05-20 10:45:28
    第一章绪论  1.1 信道编码的历史及研究现状  1.2 简单编码方式回顾 • 1.2.1 线性分组码 • 1.2.2 循环码  第二章基础理论  2.1 信道编码定理  2.2 硬判决与软判决  2.3 基本...
  • 作者从信号和频谱讲起,以通信模型为主线,对信道、信源编码、信道编码交织、脉冲成形、调制、天线技术、复用和多址技术等做了系统讲解。 本书针对真正希望搞清楚通信原理的读者编写,适用于高等院校通信专业本科...
  • mtk手机原理图分析

    2017-09-13 14:45:03
    z DSP:主要完成对语音信号编解码、信道编码、加密、交织处理等; z ARM7:主要是对外部 Memory 接口、用户接口( LCD、键盘、触摸等)、语音接口、射频接口、电源管理等命令控制,使各部分协调工作。 2、...
  • 47. 3G系统采用了什么信道编码技术? 39 48. 什么是HARQ技术 40 49. CPCH是否能够提高上行速率容量,该信道相关功能 40 50. WCDMA承载分组数据传输信道有哪些 41 51. WCDMA系统中物理信道功率分配方式 41 52. ...
  • 实现:经过信源编码、信道编码交织等处理多路数据按照一定时序关系对载波进行调制 应用: 1.E1接口中应用(32个时隙总传输速率为:64*32=2.048Mbit/s) 2.GSM系统中应用(空中接口使用该技术,8个....
  • Turbo编码与译码原理  Turbo编码器是:并行级联卷积编码(PCCC,Parallel Concatenated ConvolutionalCode),它使用了两个8状态子编码器和一个Turbo码内交织器。Turbo编码码率为1/3。 二. 仿真链路: 信道...
  • RS编码与译码原理  Turbo编码器是:并行级联卷积编码(PCCC,Parallel Concatenated ConvolutionalCode),它使用了两个8状态子编码器和一个Turbo码内交织器。Turbo编码码率为1/3。 二. 仿真链路...
  • 输入一串二进制比特序列(经过信源编码、信道编码交织之后结果) 这个二进制比特序列经过一个星座图映射,对于 QPSKQPSKQPSK 调制映射关系,如下所示: 二进制序列 IQ信号 s(t)s(t)s(t)相位 00 +12+\...
  • 5G中CRC table生成

    千次阅读 2019-04-17 11:47:27
    信道编码是一种组合,这种组合包含了检错,纠错,速率匹配,交织,以及传输信道和控制信息向物理信道的映射。 CRC是信道编码的重要组成部分。CRC的原理是通过多项式除法获得校验码,但是实际代码实现是通过查表法,...
  • 无线通信原理与应用第二版中文版

    千次下载 热门讨论 2010-10-31 20:52:41
    6.13 信道编码原理 6.14 分组码 6.14.1 分组码举例 6.14.2 Reed—Solomon码实例研究 6.15 卷积码 6.15.1 卷积码解码 6.16 编码增益 6.17 网格编码调制 问题与练习 第7章 语音编码 7.1 ...
  • GSM原理及其网络优化.pdf

    热门讨论 2009-01-03 21:52:41
    2.6.2 信道编码 2.6.3 交织技术 2.6.4 突发脉冲形成 2.6.5 加密 2.6.6 调制和解调 第3章 呼叫处理过程分析 3.1 小区选择与重选 3.1.1 过程描述 3.1.2 小区选择过程 3.1.3 小区重选过程 3.1.4 网络对处于空亲模式...
  • 无线通信原理与应用(第一版) 中文版

    千次下载 热门讨论 2011-05-01 21:35:17
    6.13 信道编码原理 6.14 分组码 6.14.1 分组码举例 6.14.2 Reed—Solomon码实例研究 6.15 卷积码 6.15.1 卷积码解码 6.16 编码增益 6.17 网格编码调制 问题与练习 第7章 语音编码 7.1 ...
  • 第六章 单元测试 选择题 1、GSM系统中,用户接入...自适应均衡技术、交织技术、卷积编码、跳频 7、属于GSM系统广播信道的是FCCH、SCH、BCCH。 8、GSM系统基带处理中采用了帧内交织、 帧间交织。 判断题 9、GSM系统
  • 3.3.2 信道编码交织 103 3.4 物理层过程 124 3.4.1 同步过程 124 3.4.2 功率控制 124 3.4.3 随机接入过程 127 3.4.4 PDSCH相关过程 127 3.4.5 PUSCH相关过程 131 3.4.6 PDCCH相关过程 133 3.4.7...
  • 编码理论发展史一个里程碑,它使人们设计信道编码的方法从增加码最小汉明距离转向 减少低重量码字个数。Turbo 码性能优异,已经被确定为第三代通信系统的信道编码方案 之一。本文介绍了Turbo 码编译码原理...
  • 3.3.2 信道编码交织 90 3.4 物理层过程 111 3.4.1 同步过程 111 3.4.2 功率控制 111 3.4.3 随机接入过程 114 3.4.4 PDSCH相关过程 114 3.4.5 PUSCH相关过程 118 3.4.6 PDCCH相关过程 120 3.4.7 PUCCH相关过程 120 ...
  • 摘要:纠错编码被广泛应用在各种数字通讯、数字...如GSM标准中,对语音的信道编码采用卷积纠错、分组码检错。美国蜂窝数字分组数据系统(CDPD)中采用了m=6(63,47)RS(Reed Solomon)码。CDMA标准中,主要包括卷积
  •  1.4.3 信道编码定理应用   1.5 连续信道香农容量公式   1.5.1 连续消息信息度量   1.5.2 连续信道香农容量公式   1.5.3 香农容量公式指导意义   参考文献  第2章 分组码和卷积码基础 ...
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制仿真模块及其仿真实现过程;第9章介绍了在通信系统仿真和调试过程中经常遇到问题及其解决办法;最后,第10章以cdma 2000为...
  • OFDM概述

    2020-11-02 07:53:00
    1. 什么是OFDM 1.1 基本原理 OFDM即正交频分复用技术,是多载波调制技术一种。 其核心思想是将信道划分为若干相互正交信道,将高速数据流经过串并转换划分成多路并行低速子数据流,分别...2.1 编码交织 ...
  • 7.1.5 数字电视编码的原理 7.1.6 解码器原理 7.1.7 编解码器的功能 7.1.8 编解码的技术指标 7.2 复用器 7.2.1 复用器原理 7.2.2 复用器功能 7.2.3 复用器的选型 7.3 加扰器 7.3.1 加扰器原理 7.3.2 加扰器的功能 ...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

信道编码交织的原理