Académique Documents
Professionnel Documents
Culture Documents
Implementacion de un codicador
y decodicador digital
ReedSolomon a traves de
programacion VHDL
Cecilia E. Sandoval Ruiz
y
Antonio Fedon
Universidad de Carabobo,
ON
1. Introducci on
En los actuales momentos se evidencia una creciente tendencia hacia el uso
de dispositivos de logica recongurable a alta escala de integracion (Wak-
erly, 2001), en funcion de los benecios que esta tecnologa ofrece a los
dise nadores de sistemas digitales, estos dispositivos programables a traves
de un lenguaje de descripcion de hardware como VHDL, los cuales per-
miten congurar sistemas digitales seg un las especicaciones demandadas
por los usuarios, ajustar cambios en la programacion, optimizar los dise nos
tratandolos en forma modular.
Una importante caracterstica de VHDL es que se encuentra estandariza-
do bajo la norma 1076 (Prez y cols., 2002). Es por ello que se ha seleccionado
como lenguaje para la descripcion del codicador de canal digital.
Debido a la gran importancia que tiene el campo de las comunicaciones
digitales, por la ventaja que ofrece sobre las comunicaciones analogicas,
resulta interesante dise nar un sistema compacto que incorpore las etapas
de procesamiento y comunicacion de datos, ya que debido a la gran exi-
bilidad de las FPGAs (Field Programmable Gates Array) no se requiere
establecer requisitos mnimos para realizar cualquier tipo de dise no. Siendo
imprescindible que la memoria sea suciente para almacenar la totalidad
del hardware a implementar (Suardaz, 2004).
Se plantea entonces la necesidad de emplear la tecnologa de programa-
cion en VHDL como soporte para el dise no del codicador ReedSolomon,
donde se presenta la posibilidad de subdividir el codicador, atendiendo a
cada modulo seg un su funcion especica para lograr los objetivos planteados
a traves de la descripcion de hardware, y realizar los ajustes que permitan
optimizar el dise no en la etapa de programacion.
2. Codificador ReedSolomon
En el estudio de los codicadores de canal se presenta como el mas ven-
tajoso el codigo Reed-Solomon (vease la gura 1). Se puede observar que
su probabilidad de error en relacion se nal a ruido esta cercano al lmite de
Shannon, presentando mayor eciencia sobre otros codigos correctores de
error (Antolin Agatep, 2000).
En esta etapa se presenta el tratamiento de la trama de datos para formar
la palabra de codigo que sera transmitida incluyendo un mecanismo para
correccion de errores, en este estudio se considerara Codigo ReedSolomon
(ReedSolomon Code). Este es un codigo corrector de errores basado en
bloques con un amplio rango de aplicaciones en comunicaciones digitales
y almacenamiento. El codigo fue inventado en 1960 por Irving S. Reed
y Gustave Solomon, miembros del MIT Lincoln Laboratory, en su artculo
2
IMPLEMENTACI
ON
de los s bits y a nade smbolos de paridad para hacer una palabra de codigo
de n smbolos. Existen n k smbolos de paridad de s bits cada uno. Un
decodicador puede corregir hasta t smbolos que contienen errores en una
palabra de codigo, donde 2t = (n k) (Xilinx System Generator v2.1 for
Simulink).
El siguiente diagrama muestra una tpica palabra de codigo ReedSolo-
mon (este se conoce como un codigo sistematico puesto que los datos se
dejan inalterados y los smbolos de paridad se anexan):
FIGURA 2. Palabra de Codigo ReedSolomon (Fuente: Reed-Solomon Solutions with Spartan-II
FPGA (Antolin Agatep, 2000)
Para codicar la trama con esta estructura se debe procesar a traves
de un circuito digital que opere bajo los fundamentos de campo nito de
Galois. Este presenta una arquitectura en el codicador compuesta por los
bloques funcionales mostrados en la gura 3.
FIGURA 3. Arquitectura generica de un codicador ReedSolomon (Fuente: ReedSolomon
Solutions with Spartan-II FPGA (Antolin Agatep, 2000)
2.2. Campos de Galois aplicados a la codicacion ReedSolomon
Los codigos ReedSolomon se basan en un area especialista de las matema-
ticas llamada Campos Galois (GF) o campos nitos. Un campo nito tiene
4
IMPLEMENTACI
i=0
x
h(Generator Star)
;
al ser expandido se obtiene:
g(x) = G
nk1
x
nk1
+ G
nk2
x
nk2
+ + G
1
x + G
0
,
donde n es la longitud de la palabra codicada (en smbolos), k es la lon-
gitud del mensaje codicado (en smbolos) y m es la longitud del smbolo
(bits).
5
C. E. SANDOVAL RUIZ Y A. FED
ON
3. Dise no de un codificador-decodificador ReedSolomon (7, 3)
En base al desarrollo teorico estudiado se realizo la descripcion de cada uno
de los modulos.
3.1. Dise no del codicador RS(7, 3)
Para comprender en forma practica el calculo del codeword, asumiremos un
campo GF(8), es decir, m = 3 bits/smbolo; la representacion de los ele-
mentos del campo estara comprendida por el polinomio irreducible p(x) =
x
3
+x+1, el cual tiene por raz , por lo que al igualar a cero el polinomio
se obtiene
3
+ + 1 = 0, tal que
3
= + 1 sera la representacion para
sustituir el elemento (8) que se desborda del campo, con lo que se puede
convertir a un elemento perteneciente al campo.
A partir de la expresion de G(x), para un codicador RS(7, 3) se obtuvo
el polinomio generador de la forma:
G(x) =
2
x
3
+
5
x
2
+
5
x +
6
,
el cual es sustituido en funcion de la tabla 2.2, obteniendose:
G(x) = 4x
3
+ 7x
2
+ 7x + 5,
el cual permite obtener la palabra codicada compuesta por 3 smbolos de
datos y 4 smbolos de paridad. Lograndose implementar el codicador de
la forma que muestra la gura 4.
FIGURA 4. Codicador RS(7, 3) (Fuente: Propia del autor).
6
IMPLEMENTACI
ON
este caso 3 bits por smbolo: msn =gf ([matriz de datos], m). En tanto que
la palabra de codigo se obtiene al aplicar el comando de codicacion (rsenc)
al arreglo de Galois (msn) y a la longitud de la palabra de codigo, con la
longitud del mensaje: Code =rsenc (msn,n,k).
TABLA 3. Codigo en tt MATLAB del RS(7, 3).
>>m=3 % longitud del smbolo (en bits)
>>n=7 % longitud del codeword (en smbolos)
>>k=3 % longitud del mensaje (en smbolos)
>>i(x) =gf([1,3,7], m) % aplica gf(2
m
) al mensaje sin formato
>>c(x) =rsenc(i(x), n, k) % aplica g(x).i(x) para obtener el codeword
>>c(x) =[1,3,7,0,1,1,5] % palabra de codigo obtenida
Con lo cual queda validado el codicador dise nado a traves de la herra-
mienta matematica MATLAB. Esto para comprobar la abilidad del dise no
realizado.
3.3. Dise no del decodicador RS(7, 3)
Para la implementacion del decodicador a traves de VHDL, se toma como
base la arquitectura dada en la gura 5.
FIGURA 5. Diagrama de bloques del decodicador RS (Fuente: ReedSolomon Solutions with
Spartan-II FPGA (Antolin Agatep, 2000).
Ahora, en base al diagrama de bloques se deniran las funciones es-
peccas de cada modulo.
8
IMPLEMENTACI
ON
las races de un polinomio f(x) cuya formula general es:
f(x) = x
t
+ f
1
x
t
+ + f
t1
x + f
t
.
3.3.5. Generador del error
Debemos resolver un sistema de ecuaciones con tantas incognitas como
errores hayamos detectado y tiene la forma, para nuestro ejemplo:
Y
1
+ Y
2
= S
1
,
x
1
Y
1
+ x
2
Y
2
= S
2
,
donde Y
1
indica el valor del error en el smbolo dado por (nexponente de
x
1
), x
1
es la raz de f(x), Y
2
indica el valor del error en el smbolo dado por
(n exponente de x
2
), x
2
es la otra raz de f(x). Finalmente se realizara
la adicion entre modulo-2 (XOR), entre el dato de entrada que fue recibido
por el decodicador (que se mantiene registrado en una memoria RAM) y
el error generado, con lo que se obtiene el codigo recuperado.
Una vez que se maneja el algoritmo se realiza la denicion de la entidad,
la cual esta representada a traves del plano de transferencia (RTL) en la
gura 6, siendo este resultado de la descripcion bajo la sintaxis VHDL.
TABLA 4. Codigo en VHDL de los componentes.
begin
U1: calc sindrome port map (rx, inicio, clk, s1, s2, s3, s4);
U2: localiz e port map (s1, s2, s3, s4, f1, f2, xa, xb, pos1, pos2);
U3: valor e port map (s1, s2, s3, s4, xa, xb, e1, e2);
end Behavioral;
Y se procede a la descripcion del comportamiento. Cada uno de los
modulos internos ha sido descrito como componente, quedando la imple-
mentacion mostrada en la gura 7.
4. Metodologa
Entre los pasos que se siguieron para la programacion se realizo el modelo
del codicador y decodicador a dise nar RS(7, 4) con el n umero de smbolos
m = 3, con lo cual se logro describir su comportamiento. Este fue descrito
bajo la sintaxis del lenguaje descriptor de hardware estandarizado VHDL,
y se creo un archivo de asignacion de pines para as realizar el mapeo sobre
10
IMPLEMENTACI
ON
TABLA 5. Convertidor de elementos del campo nito a display siete
segmentos (archivo driver.vhdl).
with OCT select
display<="1111001" when "001", --1
"0100100" when "010", --2
"0110000" when "011", --3
"0011001" when "100", --4
"0010010" when "101", --5
"0000010" when "110", --6
"1111000" when "111", --7
"1000000" when others; --0
El archivo driver.ucf que presenta la asignacion de pines, se muestra en
la tabla 6.
TABLA 6. Asignacion de pines al display del banco de prueba DIO1
(archivo driver.ucf).
NET "A" LOC = "P17" ;
NET "a1" LOC = "P45" ;
NET "a2" LOC = "P47" ;
NET "a3" LOC = "P49" ;
NET "a4" LOC = "P56" ;
NET "B" LOC = "P20" ;
NET "C" LOC = "P22" ;
NET "D" LOC = "P24" ;
NET "E" LOC = "P29" ;
NET "F" LOC = "P31" ;
NET "G" LOC = "P34" ;
De igual manera se conguraron los pines de entrada de datos para la
recepcion de la trama. En la gura 8 se muestra el proceso de programacion.
5. An alisis de resultados
Los resultados obtenidos a traves de la simulacion del codicador y del
decodicador corresponde al mostrado en la gura 9.
En la simulacion del comportamiento del codicador ReedSolomon se
establecio el procesamiento de los datos recibidos (rx). En la gura 9 se
pueden observar los resultados, donde tx es la trama de entrada de datos
que se ha codicado generando cx; a esta nueva trama de siete smbolos se le
ha adicionado el ruido del canal sobre dos de sus smbolos cualesquiera ex,
con lo que se obtiene la trama recibida rx. Estos smbolos son procesados y
12
IMPLEMENTACI
ON
a traves del sistema de ecuaciones produciendo los coecientes de f(x),
entiendase f
1
y f
2
, que sirven de entrada a la matriz de conversion para
obtener x
a
y x
b
, estas ultimas, races del polinomio f(x) y con los cuales
se calculan los valores de los errores e
1
y e
2
, los cuales son sumados en las
posiciones localizadas con la entrada al receptor rx, obteniendose la data
corregida.
En la implementacion del dise no sobre el FPGA, se establecio la trama
de datos a enviar, como en la simulacion (D = 4, 2, 7), correspondientes
a la secuencia de datos (D = 100, 010, 111), estos son codicados para la
transmision; asmismo, se presenta la salida de datos a transmitir a traves
de los display siete segmentos del banco de prueba del sistema de desarrollo
del Spartan IIe 208 pq, Xilinx. Este procedimiento se realizo con el n de
completar el proceso de implementacion. La gura 10 muestra en el display
menos signicativo la secuencia de salida cx.
FIGURA 10. Prueba sobre el FPGA.
Es importante destacar los benecios de implementar el codicador-
decodicador ReedSolomon en un FPGA, ya que permite el procesamiento
paralelo. Adicionalmente los proveedores del paquete VHDL deben seguir
14
IMPLEMENTACI
ON
[2] Ashenden, Peter J., Tutorial VHDL, EDA Consultant, Ashenden Designs Pty, Ltd.,
http://www.ashenden.com.au
[3] Carpio, Fernando, VHDL. Lenguaje para descripcion y modelado de circuitos, 1997.
[4] Cuervo, Efren C., Construccion de un decodicador ReedSolomon en VHDL.
[5] Chang, K. C., Digital Systems Design with VHDL and Synthesis, An Integrated
Approach, IEEE Computer Society, eua, 1999.
[6] IEEE Standard VHDL Language Reference Manual1076, publicada en 2002.
[7] Lopez Martnez, Fco. Javier, Dise no de transmisor y receptor para redes inalmbricas
W-Man, Mencion de Honor Malaga, 2005.
[8] Nazar A. Saqib, Implementacion eciente de algoritmos criptogracos en dispositivos
de hardware recongurable, Tesis doctoral, Mexico, 2004.
[9] Negrete C., Marco A, Inversion modular en campos nitos binarios, mayo de 2006.
[10] Ortiz-Garca, Implementacion en hardware recongurable de un divisor en campos
nitos binarios GF, mayo de 2006.
[11] Prez L., Serafn A., y otros, Dise no de sistemas digitales con VHDL, Editorial Thom-
son, Espa na, 2002, http://www.dte.uvigo.es/vhdl/
[12] Suardaz, Juan, Control electronico mediante telefona movil digital basada en la red
GSM, Revista Tecnologa y Desarrollo, 2004.
[13] Wakerly, John F., Dise no digital: principios y prcticas, tercera edicion, Editorial Pear-
son, Mexico, 2001.
[14] Xilinx System Generator v2.1 for Simulink.
abstract
In this paper we present a simple methodology to design basic and
the state-of-the-art ReedSolomon Coders building blocks, oriented
to eld programmable gate arrays (FPGA). The design methodol-
ogy is initialized with the design at the software level of the Coder,
later the architecture is designed and captures using VHDL, nally
the simulations using ModelSim 5.7 and results allow validating the
behavioral of the coder the design methodology proposed.
The operations in nite or Galois elds, GF(2
m
), is a basic for
several algorithms in areas error-correction codes and digital sig-
nal processing. Nevertheless the involved calculations are very time
consuming, especially when they are performed by software. Due
to performance and security reason, it is rather convenient to im-
plement algorithms by hardware.
16