Sunteți pe pagina 1din 8

Segmentacin del cdigo bloque

En LTE, un bloque de transporte conecta la capa MAC y PHY. El bloque de transporte


por lo general contiene una gran cantidad de bits de datos, que se transmiten al mismo
tiempo. El primer conjunto de operaciones realizadas en un bloque de transporte es la
codificacin de canal, que se aplica a cada bloque de cdigo de forma independiente. Si
el marco de entrada al codificador turbo supera el tamao mximo, el bloque de
transporte se suele dividir en varios bloques ms pequeos conocidos como bloques de
cdigo. Desde el intercalador interno del codificador turbo slo se define para 188
tamaos de bloque de entrada, el tamao de estos bloques de cdigo necesario para que
coincida con la gama de tamaos de bloque de cdigo que admite el codificador turbo.
Una combinacin de bloque de cdigo de fijacin de CRC, codificacin turbo,
adaptacin de velocidad y se aplica luego a cada bloque de cdigo de forma
independiente.
Efecto de la adaptacin de velocidad en la codificacin BER turbo

Ejemplo matlab
En la siguiente funcin de la segmentacin buscamos el mejor tamao de sub-bloque de
satisfacer dos propiedades: (i) es uno entre 188 tamaos de bloque vlidas; y (ii) es un
mltiplo entero exacto del tamao de subbloques. El nmero de sub-bloques contenidos
en un bloque de cdigo se conoce como parmetro C y el tamao de cada subbloque se
conoce como Kplus. Tambin tenemos que calcular un parmetro E de la palabra de
cdigo. La salida de la codificacin de canal se conoce como la palabra de cdigo; el
tamao de la palabra de cdigo es el producto de C subbloques y el tamao de salida
por subbloque E. El tamao total de la palabra de cdigo se determina por el
programador, dependiendo de la cantidad de recursos disponibles. La velocidad de
codificacin efectiva es entonces la relacin de tamao de palabra de cdigo para el
tamao de subbloque.
MATLAB function
function [C, Kplus] = CblkSegParams(tbLen)
%#codegen
%% Code block segmentation
blkSize = tbLen + 24;
maxCBlkLen = 6144;
if (blkSize <= maxCBlkLen)
C = 1; % number of code blocks
b = blkSize; % total bits
else
L = 24;
C = ceil(blkSize/(maxCBlkLen-L));
b = blkSize + C*L;
end
% Values of K from table 5.1.3-3
validK = [40:8:512 528:16:1024 1056:32:2048 2112:64:6144].;
% First segment size
temp = find(validK >= b/C);
Kplus = validK(temp(1), 1); % minimum K
La siguiente funcin MATLAB calcula los tamaos de subbloques y determina cuntos
se procesan en paralelo para reconstituir el canal de salidas de codificacin. Primero se
divide el nmero total de bits de palabra de cdigo por el nmero de sub-bloques. Para
cada sub-bloque, nos aseguramos de que el nmero de bits de salida es divisible por el
nmero de bits de modulacin y el nmero resultante de capas mltiples antenas.
Algoritmo

MATLAB function
function E = CbBitSelection(C, G, Nl, Qm)
%#codegen
% Bit selection parameters
% G = total number of output bits
% Nl Number of layers a TB is mapped to (Rel10)
% Qm modulation bits
Gprime = G/(Nl*Qm);
gamma = mod(Gprime, C);
E=zeros(C,1);
% Rate matching with bit selection
for cbIdx=1:C
if ((cbIdx-1) <= (C-1-gamma))
E(cbIdx) = Nl*Qm*floor(Gprime/C);
else
E(cbIdx) = Nl*Qm*ceil(Gprime/C);
end
end
En el receptor, con el fin de realizar correctamente la inversa de las operaciones de
juego, necesitamos los parmetros C y Kplus (el nmero de sub-bloques y el tamao de
cada subbloque, respectivamente).
LTE Transport-Channel Processing
La figura 4.9 muestra un diagrama de bloques de procesamiento de TrCH. Cinco
componentes funcionales caracterizan el procesamiento del bloque de transporte:
Transporte-bloque de fijacin CRC
Segmentacin bloque de cdigo y bloque de cdigo adjunto CRC
Turbo de codificacin basado en una tasa de 1/3
Cambio a juego para manejar cualquier velocidades de codificacin solicitados
Bloque de cdigo de concatenacin.

En la siguiente funcin de MATLAB, tenemos que distinguir entre el caso en que el
transporte slo contiene un nico bloque de cdigo y los casos en los que contiene ms
de un bloque de cdigo, ya que en el primer caso no es necesario aplicar el apego CRC
al bloque de cdigo como el bloque de transporte ya contiene un archivo adjunto de
CRC.

function [out, Kplus, C] = TbChannelCoding(in, prmLTE)
% Transport block channel coding
%#codegen
inLen = size(in, 1);
[C , Kplus] = CblkSegParams(inLen-24);
intrlvrIndices = lteIntrlvrIndices(Kplus);
G=prmLTE.maxG;
E_CB=CbBitSelection(C, G, prmLTE.NumLayers, prmLTE.Qm);
% Initialize output
out = false(G, 1);
% Channel coding the TB
if (C==1) % single CB, no CB CRC used
% Turbo encode
tEncCbData = TurboEncoder( in, intrlvrIndices);
% Rate matching, with bit selection
rmCbData = RateMatcher(tEncCbData, Kplus, G);
% unify code paths
out = logical(rmCbData);
else % multiple CBs in TB
La secuencia de las operaciones realizadas en la decodificacin del canal puede
considerarse como la inversa de los realizados en la codificacin de canal, de la
siguiente manera:
La iteracin sobre cada bloque de cdigo
Cambio dematching (de tipo objetivo a 1/3 la tasa) compuesto por:
- Seleccin e insercin de bits
- Desentrelazado Parity bits
- Desintercalado Secuencia auxiliar
- La recuperacin de los bits sistemticos y de paridad para la decodificacin turbo
Bloque de cdigo 1/3-rate turbo decodificacin con la terminacin anticipada basado
en CRC.
Aqu estamos utilizando CRC de todo el bloque de transporte como otro criterio de
parada temprana y como un mecanismo para la actualizacin del estado de HARQ. La
siguiente funcin MATLAB resume las operaciones en el decodificador de TrCH.
Algoritmo
MATLAB function
function [decTbData, crcCbFlags, iters] = TbChannelDecoding( in, Kplus, C, prmLTE)
% Transport block channel decoding.
%#codegen
intrlvrIndices = lteIntrlvrIndices(Kplus);
% Make fixed size
G=prmLTE.maxG;
E_CB=CbBitSelection(C, G, prmLTE.NumLayers, prmLTE.Qm);
% Channel decoding the TB
if (C==1) % single CB, no CB CRC used
% Rate dematching, with bit insertion
deRMCbData = RateDematcher(-in, Kplus)
% Turbo decode the single CB
tDecCbData =TurboDecoder(deRMCbData, intrlvrIndices, prmLTE.maxIter)
% Unify code paths
decTbData = logical(tDecCbData);
else % multiple CBs in TB
decTbData = false((Kplus-24)*C,1); % Account for CB CRC bits
startIdx = 0;
for cbIdx = 1:C
% Code-block segmentation
E=E_CB(cbIdx);
rxCbData = in(dtIdx(1:E) + startIdx);
startIdx = startIdx + E;
% Rate dematching, with bit insertion
% Flip input polarity to match decoder output bit mapping
deRMCbData = lteCbRateDematching(-rxCbData, Kplus, C, E);
% Turbo decode each CB with CRC detection
% - uses early decoder termination at the CB level
[crcDetCbData, crcCbFlags(cbIdx), iters(cbIdx)] = ...
TurboDecoder_crc(deRMCbData, intrlvrIndices);
% Check the crcCBFlag per CB. If still in error, abort further TB
% processing for remaining CBs in the TB, as the HARQ process will
% request retransmission for the whole TB.
if (prmLTE.fullDecode)
if (crcCbFlags(cbIdx)==1) % error
break;
end
end
% Code-block concatention
decTbData((1:(Kplus-24)) + (cbIdx-1)*(Kplus-24)) = logical(crcDetCbData);
end
end
Las mediciones de BER
Ahora nos medimos las tasas de errores de bits de la TrCH enlace descendente LTE en
presencia del ruido del canal AWGN. El chap4_ex06 funcin combina todas las
operaciones de tratamiento TrCH con codificacin y modulacin.
Algoritmo

MATLAB function
function [ber, numBits]=chap4_ex06(EbNo, maxNumErrs, maxNumBits)
%% Constants
FRM=2432-24;
Kplus=FRM+24;
Indices = lteIntrlvrIndices(Kplus);
ModulationMode=1;
k=2*ModulationMode;
maxIter=6;
CodingRate=1/2;
snr = EbNo + 10*log10(k) + 10*log10(CodingRate);
noiseVar = 10.^(-snr/10);
%% Processing loop modeling transmitter, channel model and receiver
numErrs = 0; numBits = 0; nS=0;
while ((numErrs < maxNumErrs) && (numBits < maxNumBits))
% Transmitter
u = randi([0 1], FRM,1); % Randomly generated input bits
data= CbCRCGenerator(u); % Transport block CRC code
[t1, Kplus, C] = TbChannelCoding(data,Indices,maxIter); % Transport
Channel encoding
t2 = Scrambler(t1, nS); % Scrambler
t3 = Modulator(t2, ModulationMode); % Modulator
% Channel
c0 = AWGNChannel(t3, snr); % AWGN channel
% Receiver
r0 = DemodulatorSoft(c0, ModulationMode, noiseVar); % Demodulator
r1 = DescramblerSoft(r0, nS); % Descrambler
[r2 ] = TbChannelDecoding(r1, Kplus, C, Indices,maxIter); % Transport
Channel decoding
y = CbCRCDetector(r2); % Code block CRC detector
% Measurements
numrrs = numrrs sum(=u); % Update number of bit errors
numBits = numBits + FRM; %Update number of bits processed
% Manage slot number with each subframe processed
nS = nS + 2; nS = mod(nS, 20);
end
%% Clean up & collect results
ber = numErrs/numBits; % Compute Bit Error Rate (BER)


Mediante la ejecucin de esta funcin con un rango de valores de SNR, podemos
verificar que la combinacin del mtodo empleado para su DLSCH y PDSCH sin
operaciones de OFDM y MIMO se implementa correctamente. Figura 4.10 ilustra el
rendimiento del BER del transceptor. En este experimento, se utiliza la adaptacin de
velocidad con una velocidad de codificacin de 1/2 y un modulador QPSK y repetir las
operaciones para un rango de valores para un nmero mximo de iteraciones de uno a
seis. Como era de esperar, al proporcionar ms iteraciones de descodificacin se obtiene
progresivamente mejores resultados de rendimiento. Esto demuestra una vez ms el
papel fundamental que la terminacin temprana puede desempear para lograr el
procesamiento DLSCH especificado en el estndar LTE ms realizable.


Hasta ahora hemos estudiado el esquema de correccin de errores hacia adelante
empleado en el estndar LTE basado en un modelo de canal sencillo (AWGN). El
estndar LTE usa la propagacin del entorno AWGN para la medicin del rendimiento
esttico. No desvanecimiento o multipaths existen para este modelo de propagacin y
no toma en cuenta la respuesta de frecuencia de los canales reales. La mayora de los
canales reales se suman a las seales diversas formas de transmisin de la decoloracin
y otras distorsiones correlacionados.
Estos perfiles de desvanecimiento introducen interferencia entre smbolos, que debe ser
compensada mediante el uso de ecualizacin.
Se observa que el rendimiento de la codificacin de canal iterativo turbo depende del
nmero de iteraciones utilizados. Esto motiva la discusin con respecto a la aceleracin
de la simulacin en el Captulo 9.

S-ar putea să vă placă și