Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigo Convolucional
Codigo Convolucional
convolucional
Ivn Daro Hastamorir*
Juan Diego Melenje*
Richard Andersson Rodrguez*
Ivn Daro Ladino**
ivanovich04@gmail.com
gothicman_504@hotmail.com
randersson86@gmail.com
ivan.ladino@hotmail.com
**
AGOSTO20103 ISSN1909-9142
coningenio
Resumen
Cdigo Convolucional
pp. 168-179
Convolutional
Codes
Abstract
This article explains in detail the Convolutional design process encoder and decoder. It explains every step of the design and operation. With the code implemented
in MATLAB is to provide an educational tool to the lab at the University of Los
Libertadores, so that students in communications courses to understand the operation of channel coding schemes.
In Convolutional decoding process is usually used the Viterbi algorithm, which in
some ways is complex and confusing when studying for the first time. Therefore,
during the study and implementation of this project proposes a new simpler and
equally effective to perform the decoding process.
169
AGOSTO20103
ISSN 1909-9142
Cdigo Convolucional
INTRODUCCION
pp. 168-179
coningenio
mable FPGA.
MARCO TERICO
Los canales de comunicaciones no son ideales, por el contrario su funcionamiento est determinado por varios facto-
rboles de Trellis.
170
AGOSTO20103 ISSN1909-9142
coningenio
Cdigo Convolucional
pp. 168-179
convolucionales.
La codificacin se puede entender a travs de un ejemplo como el mostrado en la figura (1), en la cual tenemos un codificador (2,1,3). El proceso de codificacin
consiste bsicamente en una serie de operaciones XOR
entre el dato presente y los datos previamente recibidos,
como el codificador
171
AGOSTO20103
ISSN 1909-9142
Cdigo Convolucional
pp. 168-179
coningenio
con todas las posibles secuencias que pueden obtenerse con el correspondiente co-
Ejemplo
Se invierte el dato.
Entrada del dato a codificar (Es el ingreso del dato que se desea transmitir).
172
AGOSTO20103 ISSN1909-9142
coningenio
Cdigo Convolucional
pp. 168-179
A la salida nos da 11 debido a que se realiza una operacin XOR entre el dato que hay en las memorias y las
funciones de transferencia.
Convol1.m
codiconvol.m
decoconvol.m
Programa principal
del cdigo de canal
convolucional:
%Programa para la deteccin y correcin de
errores por medio del cdigo de canal Convo-
lucional
clear all;
close all;
clc;
x=input(Digite el dato de entrada: \n);
y=input(Digite m (nmero de registros): \n);
Nuevamente se realiza la XOR con los datos de las memorias y las funciones de transferencia, lo cual nos da 01
y la salida anterior (11) es desplazada.
173
AGOSTO20103
ISSN 1909-9142
Cdigo Convolucional
pp. 168-179
[Tabla_codificador,Dato_codificado]=codiconvol(x,y,f1,f2)
pause
disp(----------------------------Decodificad
or----------------------------------------------);
dc=input(Digite el dato codificado: \n);
[Tabla_decodificador,Dato]=decoconvol(dc,y,f1,f2)
%///////////////Cantidad de errores detectados////////////////
%----------------Nmero de errores detectados-----------------------------disp(-----------------Nmero de errores detectados------------------------);
errodet=xor(Dato_codificado,dc);
Errores_detectados=sum(errodet)
%--------------Mensaje sobre la deteccin y correccin de error------------disp(--------------Mensaje sobre la deteccin y correccin de error-------------);
if x==Dato
disp(El cdigo fue capaz de detectar y corregir los errores provocados en la
transmisin);
else
disp(El cdigo fue capaz de detectar lo errores, pero no fue capaz de
corregirlos);
end
174
AGOSTO20103 ISSN1909-9142
coningenio
coningenio
Cdigo Convolucional
pp. 168-179
tablar_1(k,2*j)=kk(:,1) | tt(k,2*j);
cont=cont+1;
tabla_2(k,2*j)=kk(1,2) | tt(k,2*j);
yy(i,:)=dec2binvec(cont,m);
yy1(i,:)=fliplr(yy(i,:));
end
end
end
Apuntador=yy1;
tabla_11(:,1:n2-1)=tablar_1(:,2:n2);
[m1,n1]=size(Apuntador);
tabla_1=[tabla_11 d1];
ed=zeros(m1,n1);
Tabla_codificador=or(tabla_1,tabla_2);
Apuntad=[ed Apuntador];
%--Reutilizacin de la tabla---[m2,n2]=size(Apuntad);
datot=[dd d];
tt=zeros(m2,n2); d1=zeros(m2,1);
for l=1:ld
%//////////Codificador//////////
tyu=datot(1+l:m+l);
%-------Genera la tabla--------c1_1=and(tyu,ft11);
for j=1:m
c2_2=and(tyu,ft22);
for k=1:mm
fda(:,:)=Apuntad(:,1+j:m+j);
c1_10=sum(c1_1);
c11(k,:)=and(fda(k,:),ft11);
c2_20=sum(c2_2);
c22(k,:)=and(fda(k,:),ft22);
y11=c1_10/2;
c110(k,:)=sum(c11(k,:));
y22=c2_20/2;
c220(k,:)=sum(c22(k,:));
r11=floor(y11); r22=floor(y22);
y1(k,:)=c110(k,:)/2;
y2(k,:)=c220(k,:)/2;
ct11(l)=c1_10-(2*r11);
ct22(l)=c2_20-(2*r22);
r1(k,:)=floor(y1(k,:));
r2(k,:)=floor(y2(k,:));
end
ct1(:,:)=c110(k,:)-(2*r1(k,:));
%--Codificacin---
ct2(:,:)=c220(k,:)-(2*r2(k,:));
kk1=[ct11;ct22];
kk1w=kk1(:);
kk=[ct1 ct2];
Dato_codificado=kk1w;
175
AGOSTO20103
ISSN 1909-9142
Cdigo Convolucional
Diseo de decodificador
convolucional
pp. 168-179
coningenio
tes etapas:
Ejemplo:
Se va a realizar el proceso de decodificacin del dato codificado en el ejemplo anterior, claro est que se va a cambiar un
en la transmisin.
000000
000011
001101
001110
codificado.
110110
110101
ciones de la tabla.
111011
111000
distancia Hamming.
176
AGOSTO20103 ISSN1909-9142
coningenio
Cdigo Convolucional
for i=1:mm
3
3
2
4
3
1
4
4
cont=cont+1;
pp. 168-179
yy(i,:)=dec2binvec(cont,ld1);
yy1(i,:)=fliplr(yy(i,:));
end
Apuntador=yy1; [m1,n1]=size(Apuntador);
ed=zeros(m1,n1);
Apuntad=[ed Apuntador];
tt=zeros(m2,n2);
d1=zeros(m2,1);
%/////////Decodificador/////////
%-------Genera la tabla---------
function [Tabla_decodificador,Dato]=decoconvol(dc,m,ft1,ft2)
for j=1:ld1
%Programa para un decodificador convolucional de n bits.
for k=1:mm
fda(:,:)=Apuntad(:,1+j:ld1+j);
%m es el nmero de memorias
c11(k,:)=and(fda(k,:),ft11);
c22(k,:)=and(fda(k,:),ft22);
c220(k,:)=sum(c22(k,:));
ld=length(dc);
y1(k,:)=c110(k,:)/2;
ld1=ld/2;
y2(k,:)=c220(k,:)/2;
ld2=ld1-m;
dd=zeros(1,ld2);
r1(k,:)=floor(y1(k,:));
ft111=[ft1 dd];
r2(k,:)=floor(y2(k,:));
ft222=[ft2 dd];
ct1(:,:)=c110(k,:)-(2*r1(k,:));
ft11=ft111(end:-1:1); ft22=ft222(end:-1:1);
ct2(:,:)=c220(k,:)-(2*r2(k,:));
kk=[ct1 ct2];
mm=2^ld1;
cont=-1;
tablar_1(k,2*j)=kk(:,1) | tt(k,2*j);
177
AGOSTO20103
ISSN 1909-9142
Cdigo Convolucional
tabla_2(k,2*j)=kk(1,2) | tt(k,2*j);
pp. 168-179
pp(ii,:)=sum(gg(ii,:));
end
end
end
[yu,sd]=min(pp);
tabla_11(:,1:n2-1)=tablar_1(:,2:n2);
Dato=de2bi(sd-1,ld1,left-msb)
Tabla_decodificador=or(tabla_1,tabla_2)
%----Bsqueda en la tabla con distancia
Hamming------------for ii=1:m2
gg(ii,:)=xor(dc(1,:),Tabla_
decodificador(ii,:));
178
AGOSTO20103 ISSN1909-9142
coningenio
coningenio
CONCLUSIONES
REFERENCIAS
1. TODD K. Moon. Error correction
coding
posiciones no inmediatas.
Mathematical
Methods
1998.
2000.
4. MACKAY, David J.C. Information
Theory, inference and learning al-
dec/marco4.html
6. www.mathworks.com
7. www.xilinx.com
8. www.altera.com
Hay varias opciones para la codificacin de datos, pero la que recomendamos para un mejor entendimiento por parte de los estudiantes es el rbol de Trellis.
179
AGOSTO20103
ISSN 1909-9142