Implementación de un codificador y decodificador digital Reed

Anuncio
Investigación
Implementación de un codificador
y decodificador digital
Reed–Solomon a través de
programación VHDL
Cecilia E. Sandoval Ruiz
y
Antonio Fedón
Universidad de Carabobo,
Área de Estudios de Postgrado,
Facultad de Ingenierı́a
Venezuela
[email protected], [email protected]
recibido: diciembre de 2006
preimpreso
resumen
En este artı́culo se presenta un procedimiento metodológico simple
y el estado del arte para diseñar bloques funcionales del codificador Reed–Solomon orientados a tecnologı́a FPGA. Este se inicia
con el diseño a nivel de algoritmo del codificador, luego se concibe la arquitectura y se captura el diseño de hardware usando
VHDL, finalmente se lleva acabo la validación del comportamiento
del codificador utilizando ModelSim 5.7 a través de simulaciones de
los módulos.
Las operaciones en los campos finitos de Galois, GF (2m ), es la
base de varios algoritmos en el área de corrección de errores y procesamiento digital de señales, sin embargo los cálculos involucrados
requieren gran cantidad de tiempo al ser implementados a través
de software, por razones de desempeño y seguridad es preferible
implementar los algoritmos en hardware.
1
C. E. SANDOVAL RUIZ Y A. FEDÓN
1. Introducción
En los actuales momentos se evidencia una creciente tendencia hacia el uso
de dispositivos de lógica reconfigurable a alta escala de integración (Wakerly, 2001), en función de los beneficios que esta tecnologı́a ofrece a los
diseñadores de sistemas digitales, estos dispositivos programables a través
de un lenguaje de descripción de hardware como VHDL, los cuales permiten configurar sistemas digitales según las especificaciones demandadas
por los usuarios, ajustar cambios en la programación, optimizar los diseños
tratándolos en forma modular.
Una importante caracterı́stica de VHDL es que se encuentra estandarizado bajo la norma 1076 (Prez y cols., 2002). Es por ello que se ha seleccionado
como lenguaje para la descripción del codificador de canal digital.
Debido a la gran importancia que tiene el campo de las comunicaciones
digitales, por la ventaja que ofrece sobre las comunicaciones analógicas,
resulta interesante diseñar un sistema compacto que incorpore las etapas
de procesamiento y comunicación de datos, ya que debido a la gran flexibilidad de las FPGAs (Field Programmable Gates Array) no se requiere
establecer requisitos mı́nimos para realizar cualquier tipo de diseño. Siendo
imprescindible que la memoria sea suficiente para almacenar la totalidad
del hardware a implementar (Suardı́az, 2004).
Se plantea entonces la necesidad de emplear la tecnologı́a de programación en VHDL como soporte para el diseño del codificador Reed–Solomon,
donde se presenta la posibilidad de subdividir el codificador, atendiendo a
cada modulo según su función especifica para lograr los objetivos planteados
a través de la descripción de hardware, y realizar los ajustes que permitan
optimizar el diseño en la etapa de programación.
2. Codificador Reed–Solomon
En el estudio de los codificadores de canal se presenta como el más ventajoso el código Reed-Solomon (véase la figura 1). Se puede observar que
su probabilidad de error en relación señal a ruido esta cercano al lı́mite de
Shannon, presentando mayor eficiencia sobre otros códigos correctores de
error (Antolin Agatep, 2000).
En esta etapa se presenta el tratamiento de la trama de datos para formar
la palabra de código que será transmitida incluyendo un mecanismo para
corrección de errores, en este estudio se considerará Código Reed–Solomon
(Reed–Solomon Code). Este es un código corrector de errores basado en
bloques con un amplio rango de aplicaciones en comunicaciones digitales
y almacenamiento. El código fue inventado en 1960 por Irving S. Reed
y Gustave Solomon, miembros del MIT Lincoln Laboratory, en su artı́culo
2
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
FIGURA 1. Caracterı́stica de los codificadores de canal (Fuente: Reed-Solomon Solutions with
Spartan-II FPGA (Antolin Agatep, 2000)
publicado “Polynomial Codes over Certain Finite Fields”. Mas sin embargo
la clave para hacer del código Reed–Solomon una aplicación tecnológica fue
la implementación de un algoritmo eficiente de decodificación el cual fue
realizado por Elwyn Berlekamp de la Universidad de Berkeley (Suardı́az,
2004).
Actualmente los códigos Reed–Solomon se utilizan para corregir errores
en varios sistemas, incluyendo: dispositivos de almacenamiento (cintas, discos compactos, DVD, códigos de barras), comunicaciones inalámbricas o
móviles (telefonı́a celular, enlaces de microondas, etc.), comunicaciones
satelitales, televisión digital/DVB, módem de alta velocidad como ADSL,
x DSL (Cuervo, s/f).
Estos códigos pertenecen a la familia de códigos de bloque, en que el
codificador procesa un bloque de sı́mbolos sin codificar, a los que agrega
redundancia para producir otro bloque, de mayor longitud, de sı́mbolos
codificados, de ahı́ el interés en desarrollar un proyecto en donde aplique
este tipo de algoritmo de corrección de errores en VHDL.
2.1. Propiedades de los códigos Reed–Solomon
El código Reed–Solomon es un subconjunto de los códigos BCH y son de
bloques lineales. Un código Reed–Solomon se especifica como RS(n, k) con
sı́mbolos de s bits. Lo anterior significa que el codificador toma k sı́mbolos
3
C. E. SANDOVAL RUIZ Y A. FEDÓN
de los s bits y añade sı́mbolos de paridad para hacer una palabra de código
de n sı́mbolos. Existen n − k sı́mbolos de paridad de s bits cada uno. Un
decodificador puede corregir hasta t sı́mbolos que contienen errores en una
palabra de código, donde 2t = (n − k) (Xilinx System Generator v2.1 for
Simulink).
El siguiente diagrama muestra una tı́pica palabra de código Reed–Solomon (este se conoce como un código sistemático puesto que los datos se
dejan inalterados y los sı́mbolos de paridad se anexan):
FIGURA 2. Palabra de Código Reed–Solomon (Fuente: Reed-Solomon Solutions with Spartan-II
FPGA (Antolin Agatep, 2000)
Para codificar la trama con esta estructura se debe procesar a través
de un circuito digital que opere bajo los fundamentos de campo finito de
Galois. Este presenta una arquitectura en el codificador compuesta por los
bloques funcionales mostrados en la figura 3.
FIGURA 3. Arquitectura genérica de un codificador Reed–Solomon (Fuente: Reed–Solomon
Solutions with Spartan-II FPGA (Antolin Agatep, 2000)
2.2. Campos de Galois aplicados a la codificación Reed–Solomon
Los códigos Reed–Solomon se basan en un área especialista de las matemáticas llamada Campos Galois (GF ) o campos finitos. Un campo finito tiene
4
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
la propiedad de que las operaciones aritméticas (+, −, ×, /, etc.) en elementos del campo siempre tienen un resultado en el campo. Un codificador
o decodificador Reed–Solomon debe ser capaz de realizar estas operaciones
aritméticas (Nazar, 2004; Negrete, 2006; Ortiz-Garcı́a, 2006).
2.3. Generador polinomial
Una palabra de código Reed–Solomon es generada usando un polinomio
especial. Todas las palabras de código válidas son divisibles exactamente
por el polinomio generador. La forma general de este polinomio es:
g(x) = (x − αi )(x − αi+1 ) · · · (x − αi+2t );
la palabra de código se genera de:
c(x) = g(x) ∗ i(x),
donde g(x) es el polinomio generador, i(x) es el bloque de información, c(x)
es una palabra de código válida y α se conoce como un elemento primitivo
del campo (Antolin Agatep, 2000; Cuervo, s/f).
El primer paso corresponde a la definición del campo de Galois para la
codificación, el cual estará definido en función de la longitud del sı́mbolo,
entiéndase m bits/sı́mbolo, el cual permite conocer el polinomio reducible
del campo de Galois GF (2m ).
Las bases teóricas que sustentan este codificador están dadas por el polinomio en su forma general:
g(x) =
n−k−1
Y ³
x − αh×(Generator
Star)
´
;
i=0
al ser expandido se obtiene:
g(x) = Gn−k−1 xn−k−1 + Gn−k−2 xn−k−2 + · · · + G1 x + G0 ,
donde n es la longitud de la palabra codificada (en sı́mbolos), k es la longitud del mensaje codificado (en sı́mbolos) y m es la longitud del sı́mbolo
(bits).
5
C. E. SANDOVAL RUIZ Y A. FEDÓN
3. Diseño de un codificador-decodificador Reed–Solomon (7, 3)
En base al desarrollo teórico estudiado se realizó la descripción de cada uno
de los módulos.
3.1. Diseño del codificador RS(7, 3)
Para comprender en forma práctica el cálculo del codeword, asumiremos un
campo GF (8), es decir, m = 3 bits/sı́mbolo; la representación de los elementos del campo estará comprendida por el polinomio irreducible p(x) =
x3 + x + 1, el cual tiene por raı́z α, por lo que al igualar a cero el polinomio
se obtiene α3 + α + 1 = 0, tal que α3 = α + 1 será la representación 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 expresión de G(x), para un codificador RS(7, 3) se obtuvo
el polinomio generador de la forma:
G(x) = α2 x3 + α5 x2 + α5 x + α6 ,
el cual es sustituido en función de la tabla 2.2, obteniéndose:
G(x) = 4x3 + 7x2 + 7x + 5,
el cual permite obtener la palabra codificada compuesta por 3 sı́mbolos de
datos y 4 sı́mbolos de paridad. Lográndose implementar el codificador de
la forma que muestra la figura 4.
FIGURA 4. Codificador RS(7, 3) (Fuente: Propia del autor).
6
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
Al aplicar los datos de entrada D = [1, 3, 7, 0, 0, 0, 0], se obtiene a la salida
C = [1, 3, 7, 0, 1, 1, 5], para lo cual se definieron los multiplicadores para el
campo de Galois, los cuales son componentes que obtienen a su salida el
resultado del producto en el campo en función de la entrada.
El módulo en VHDL para la multiplicación del coeficientes 4 por los
sı́mbolos de entrada es:
TABLA 1. Código en VHDL del multiplicador por 4 en GF (8).
with D in select
dato1<="000" when
"100" when
"011" when
"111" when
"110" when
"010" when
"101" when
"001" when
"000",
"001",
"010",
"011",
"100",
"101",
"110",
others;
--4x0=0
--4x1=4
--4x2=3
--4x3=7
--4x4=6
--4x5=2
--4x6=5
--4x7=1
El manejo de los registros y la XOR entre los elementos procesados será:
TABLA 2. Código en VHDL de la arquitectura del RS(7, 3).
process (clk)
begin
if (clk’event and clk=’1’) then
rdato4<=dato4;
rdato3<=rdato4 xor dato3;
rdato2<=rdato3 xor dato2;
rdato1<=rdato2 xor dato1;
D dato<=rdato1 xor D in;
end if;
end process;
D out<=rdato1;
Este diseño es una aplicación práctica sencilla que permite ilustrar el
funcionamiento y validar el código en VHDL; este puede ser extendido para
cualquier codificador RS(n, k).
3.2. Validación en MATLAB del diseño
El cálculo del campo de Galois se realizó también usando la herramienta
matemática MATLAB, el comando para obtener el arreglo de Galois (gf) se
aplicó a la matriz de datos a enviar y al número de bits por sı́mbolo, en
7
C. E. SANDOVAL RUIZ Y A. FEDÓN
este caso 3 bits por sı́mbolo: msn =gf ([matriz de datos], m). En tanto que
la palabra de código se obtiene al aplicar el comando de codificación (rsenc)
al arreglo de Galois (msn) y a la longitud de la palabra de código, con la
longitud del mensaje: Code =rsenc (msn,n,k).
TABLA 3. Código en tt MATLAB del RS(7, 3).
>>m=3
% longitud del sı́mbolo (en bits)
>>n=7
% longitud del codeword (en sı́mbolos)
>>k=3
% longitud del mensaje (en sı́mbolos)
>>i(x) =gf([1,3,7], m)
% aplica gf (2m ) 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 código obtenida
Con lo cual queda validado el codificador diseñado a través de la herramienta matemática MATLAB. Esto para comprobar la fiabilidad del diseño
realizado.
3.3. Diseño del decodificador RS(7, 3)
Para la implementación del decodificador a través de VHDL, se toma como
base la arquitectura dada en la figura 5.
FIGURA 5. Diagrama de bloques del decodificador RS (Fuente: Reed–Solomon Solutions with
Spartan-II FPGA (Antolin Agatep, 2000).
Ahora, en base al diagrama de bloques se definirán las funciones especı́ficas de cada módulo.
8
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
3.3.1. Cálculo del sı́ndrome
Este es un cálculo similar al cálculo de paridad. Un código de palabra Reed–
Solomon tiene 2t sı́ndromes que dependen solamente de los errores (no de
la palabra transmitida). Los sı́ndromes pueden ser calculados al sustituir
las 2t raı́ces del polinomio generador g(x) en r(x) (Cuervo, s/f).
3.3.2. Encontrar el número de errores y localizarlos
Encontrar el lugar del sı́mbolo erróneo implica resolver de forma simultánea
ecuaciones con t incógnitas. Varios algoritmos rápidos existen para realizar
lo anterior. Estos algoritmos toman ventaja de la estructura matricial especial de los códigos Reed–Solomon y reducen de gran forma el esfuerzo
computacional requerido.
3.3.3. Polinomio localizador de error
Para encontrar un polinomio localizador de error se pueden utilizar el algoritmo Berlekamp–Massey o el algoritmo de Euclides. El algoritmo de
Euclides tiende a ser el más utilizado en la práctica debido a que es más
fácil de implementar, sin embargo el algoritmo Berlekamp–Massey tiende
a llevar a una implementación hardware y software más eficientes. Este
algoritmo fue elegido debido a que se limita a entregar el resultado de la
división únicamente (Cuervo, s/f). Además sus únicas operaciones sobre
los datos son la suma polinomial que en hardware son realizadas con compuertas XOR y las multiplicación y división por potencias de 2, que por ser
aritmética binaria se traducen en hardware como corrimientos de bits.
Ahora debemos localizar los sı́mbolos erróneos, para ello debemos seguir
un procedimiento que implica resolver unos sistemas de ecuaciones, el primero de ellos sigue la fórmula general:
St+j = f1 ∗ St+j−1 + · · · + ft−1 ∗ Sj+1 + ft ∗ Sj .
3.3.4. Corrección de errores
Nuevamente, esto implica resolver ecuaciones con t incógnitas para poder
encontrar los valores verdaderos, que deberán ser sustituidos en las posiciones correspondientes para ası́ poder reproducir el mensaje correcto que
se intento enviar. Esto se hace con el algoritmo de búsqueda de Chien,
donde 1 ≤ j ≤ t, fi son las incógnitas y Si los componentes del sı́ndrome
calculado.
La posición en la que están los errores se obtiene de los exponentes de
9
C. E. SANDOVAL RUIZ Y A. FEDÓN
las raı́ces de un polinomio f (x) cuya fórmula general es:
f (x) = xt + f1 xt + · · · + ft−1 x + ft .
3.3.5. Generador del error
Debemos resolver un sistema de ecuaciones con tantas incógnitas como
errores hayamos detectado y tiene la forma, para nuestro ejemplo:
Y1 + Y2 = S1 ,
x1 Y1 + x2 Y2 = S2 ,
donde Y1 indica el valor del error en el sı́mbolo dado por (n − exponente de
x1 ), x1 es la raı́z de f (x), Y2 indica el valor del error en el sı́mbolo dado por
(n − exponente de x2 ), x2 es la otra raı́z de f (x). Finalmente se realizará
la adición entre modulo-2 (XOR), entre el dato de entrada que fue recibido
por el decodificador (que se mantiene registrado en una memoria RAM) y
el error generado, con lo que se obtiene el código recuperado.
Una vez que se maneja el algoritmo se realiza la definición de la entidad,
la cual está representada a través del plano de transferencia (RTL) en la
figura 6, siendo este resultado de la descripción bajo la sintaxis VHDL.
TABLA 4. Código en VHDL de los componentes.
begin
U1: calc sindrome
U2: localiz e
U3: valor e
end Behavioral;
port map (rx, inicio, clk, s1, s2, s3, s4);
port map (s1, s2, s3, s4, f1, f2, xa, xb, pos1, pos2);
port map (s1, s2, s3, s4, xa, xb, e1, e2);
Y se procede a la descripción del comportamiento. Cada uno de los
módulos internos ha sido descrito como componente, quedando la implementación mostrada en la figura 7.
4. Metodologı́a
Entre los pasos que se siguieron para la programación se realizó el modelo
del codificador y decodificador a diseñar RS(7, 4) con el número de sı́mbolos
m = 3, con lo cual se logró describir su comportamiento. Este fue descrito
bajo la sintaxis del lenguaje descriptor de hardware estandarizado VHDL,
y se creó un archivo de asignación de pines para ası́ realizar el mapeo sobre
10
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
FIGURA 6. Entidad del decodificador RS.
FIGURA 7. Estructura del decodificador RS.
el dispositivo de hardware reconfigurable seleccionado para esta aplicación,
como lo es el FPGA de Xilinx, Spartan IIe 208 pq, dando como resultado del
proceso de programación un archivo de extensión .bit el cual fue descargado
en el dispositivo.
Adicional a la fuente del codificador se crearon las fuentes de interfase
para lograr la visualización de los datos en el display del banco de prueba
DIO1, el archivo .vhdl corresponde a la tabla 5.
11
C. E. SANDOVAL RUIZ Y A. FEDÓN
TABLA 5. Convertidor de elementos del campo finito a display siete
segmentos (archivo driver.vhdl).
with OCT select
display<="1111001"
"0100100"
"0110000"
"0011001"
"0010010"
"0000010"
"1111000"
"1000000"
when
when
when
when
when
when
when
when
"001",
"010",
"011",
"100",
"101",
"110",
"111",
others;
--1
--2
--3
--4
--5
--6
--7
--0
El archivo driver.ucf que presenta la asignación de ‘pines’, se muestra en
la tabla 6.
TABLA 6. Asignación de pines al display del banco de prueba DIO1
(archivo driver.ucf).
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
"A"
"a1"
"a2"
"a3"
"a4"
"B"
"C"
"D"
"E"
"F"
"G"
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
=
=
=
=
=
=
=
=
=
=
=
"P17"
"P45"
"P47"
"P49"
"P56"
"P20"
"P22"
"P24"
"P29"
"P31"
"P34"
;
;
;
;
;
;
;
;
;
;
;
De igual manera se configuraron los pines de entrada de datos para la
recepción de la trama. En la figura 8 se muestra el proceso de programación.
5. Análisis de resultados
Los resultados obtenidos a través de la simulación del codificador y del
decodificador corresponde al mostrado en la figura 9.
En la simulación del comportamiento del codificador Reed–Solomon se
estableció el procesamiento de los datos recibidos (rx). En la figura 9 se
pueden observar los resultados, donde tx es la trama de entrada de datos
que se ha codificado generando cx; a esta nueva trama de siete sı́mbolos se le
ha adicionado el ruido del canal sobre dos de sus sı́mbolos cualesquiera ex,
con lo que se obtiene la trama recibida rx. Estos sı́mbolos son procesados y
12
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
FIGURA 8. Proceso de programación del FPGA.
FIGURA 9. Simulación del Codec RS(7, 3).
se obtiene s1, s2, s3 y s4, los resultados del sı́ndrome; éstos son procesados
13
C. E. SANDOVAL RUIZ Y A. FEDÓN
a través del sistema de ecuaciones produciendo los coeficientes de f (x),
entiéndase f1 y f2 , que sirven de entrada a la matriz de conversión para
obtener xa y xb , estas últimas, raı́ces del polinomio f (x) y con los cuales
se calculan los valores de los errores e1 y e2 , los cuales son sumados en las
posiciones localizadas con la entrada al receptor rx, obteniéndose la data
corregida.
En la implementación del diseño sobre el FPGA, se estableció la trama
de datos a enviar, como en la simulación (D = 4, 2, 7), correspondientes
a la secuencia de datos (D = 100, 010, 111), estos son codificados para la
transmisión; ası́mismo, se presenta la salida de datos a transmitir a través
de los display siete segmentos del banco de prueba del sistema de desarrollo
del Spartan IIe 208 pq, Xilinx. Este procedimiento se realizó con el fin de
completar el proceso de implementación. La figura 10 muestra en el display
menos significativo la secuencia de salida cx.
FIGURA 10. Prueba sobre el FPGA.
Es importante destacar los beneficios de implementar el codificadordecodificador Reed–Solomon en un FPGA, ya que permite el procesamiento
paralelo. Adicionalmente los proveedores del paquete VHDL deben seguir
14
IMPLEMENTACIÓN DE UN CODIFICADOR Y DECODIFICADOR DIGITAL REED–SOLOMON
las normas de programación IEEE-1076, haciendo que los diseños sean
portátiles a cualquier plataforma (Chang, 1999; Ashenden, s/f; IEEE Standard VHDL Language Reference Manual1076, 2002; Carpio, 1997).
6. Trabajos futuros
El diseño de un dispositivo para implementar un código popular Reed–
Solomon como lo es RS(255, 223) con sı́mbolos de 8 bits. Cada palabra de
código contiene 255 bytes de palabra de código, de los cuales 223 bytes son
datos y 32 bytes son paridad. Para este código se tiene: N = 255, k = 223,
s = 8, 2t = 32 y t = 16.
El decodificador puede corregir cualquier error de 16 sı́mbolos en la palabra de código, es decir, errores de hasta 16 bytes en cualquier lugar de
la palabra pueden ser automáticamente corregidos. Una vez establecido el
polinomio g(x) (los sı́ndromes pueden ser calculados al sustituir las 2t raı́ces
del polinomio generador g(x) en r(x).)
7. Conclusiones
Teniendo en cuenta que el comportamiento del los módulos diseñados ha
sido validado a través de la simulación, se realizó el mapeo del diseño sobre el
FPGA y se obtuvo una programación exitosa del codificador y decodificador
Reed–Solomon. Entre los aportes realizados se presentan:
•
•
•
•
•
Estado del arte sobre codificación Reed–Solomon. Se ha incluido además un número importante de referencias bibliográficas.
Compendio de la teorı́a de campos finitos de Galois orientada a codificación Reed–Solomon.
Desarrollo de un modelo de codificación Reed–Solomon.
Desarrollo de la sintaxis de programación en VHDL (Lenguaje Descriptor de Hardware).
Se constata, a través de simulaciones que la introducción de técnicas de
codificación Reed–Solomon mejoran notablemente las prestaciones del
sistema. Una de las mejores alternativas es el posible uso de una cadena
concatenada semejante a la propuesta en la norma IEEE 802.16.
8. Referencias bibliográficas
15
[1] Antolin Agatep, “Reed–Solomon Solutions with Spartan-II FPGA”, WP110 1.1, 10
de febrero de 2000.
C. E. SANDOVAL RUIZ Y A. FEDÓN
[2] Ashenden, Peter J., Tutorial VHDL, EDA Consultant, Ashenden Designs Pty, Ltd.,
http://www.ashenden.com.au
[3] Carpio, Fernando, VHDL. Lenguaje para descripción y modelado de circuitos, 1997.
[4] Cuervo, Efrén C., Construcción de un decodificador Reed–Solomon 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] López Martı́nez, Fco. Javier, Diseño de transmisor y receptor para redes inalmbricas
W-Man, Mención de Honor Málaga, 2005.
[8] Nazar A. Saqib, “Implementación eficiente de algoritmos criptográficos en dispositivos
de hardware reconfigurable”, Tesis doctoral, México, 2004.
[9] Negrete C., Marco A, Inversión modular en campos finitos binarios, mayo de 2006.
[10] Ortiz-Garcı́a, Implementación en hardware reconfigurable de un divisor en campos
finitos binarios GF , mayo de 2006.
[11] Prez L., Serafı́n A., y otros, Diseño de sistemas digitales con VHDL, Editorial Thomson, España, 2002, http://www.dte.uvigo.es/vhdl/
[12] Suardı́az, Juan, “Control electrónico mediante telefonı́a móvil digital basada en la red
GSM”, Revista Tecnologı́a y Desarrollo, 2004.
[13] Wakerly, John F., Diseño digital: principios y prcticas, tercera edición, Editorial Pearson, México, 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 Reed–Solomon Coders building blocks, oriented
to field programmable gate arrays (FPGA). The design methodology is initialized with the design at the software level of the Coder,
later the architecture is designed and captures using VHDL, finally
the simulations using ModelSim 5.7 and results allow validating the
behavioral of the coder the design methodology proposed.
The operations in finite or Galois fields, GF (2m ), is a basic for
several algorithms in areas error-correction codes and digital signal 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 implement algorithms by hardware.
16
Descargar