Action Plan
Outcome 17: Workforce Theme: Responsive Workforce
Un código BOSE – CHAUDHURI- HOCQUENQHEM (BCH) es un código cíclico con una gran variedad de longitudes de bloque, tasas de código y capacidad de corrección de errores. Los códigos BCH más comunes tienen una longitud de bloque n = 2m – 1, donde m es un entero igual o mayor que 3. Los polinomios generadores de los códigos BCH suelen venir tabulados según los valores de n, k, t. Tales polinomios se expresan en formato octal y al ser convertidos a binario el dígito de más a la derecha representa el coeficiente de grado cero del polinomio. Para este código el polinomio generador utilizado es g(x) = x3 + x + 1. Al igual que los códigos implementados anteriormente se realizan los mismos pasos, primero se realiza un programa en C++ para después poder codificar ese programa en VHDL para su implementación en la FPGA.
La función que se desarrolló para la simulación de un código (15-11) debido a su funcionamiento resultó ser una función general, en la que sólo deben ser cambiados los parámetros de n-k para el código e introducir el polinomio generador para el código correspondiente. De este modo logramos un módulo de software general en el cual sólo serán necesarios algunos cambios para poder implementar otro tipo de código.
Los diagramas esquemáticos para el codificador y decodificador se muestran en las figuras siguientes.
Figura 4-22. Diagrama esquemático del codificador BCH (15-11).
Figura 4-23. Diagrama esquemático del decodificador Meggit (15-11).
Las entidades formadas en VHDL para el codificador y decodificador son respectivamente las siguientes:
entity CODER is
Port ( ENTRADA : in std_logic_vector(0 to 10); SALIDA : out std_logic_vector(0 to 14)); end CODER;
entity DECODER is
Port ( ENTRADA : in std_logic_vector(0 to 14); SALIDA : out std_logic_vector(0 to 10)); end DECODER;
Los diagramas esquemáticos programados para el codificador y decodificador 15-11 se muestran en las figuras siguientes:
En las siguientes figuras se muestran los resultados de las simulaciones, tanto para el codificador como para el decodificador.
Figura 4-26. Señales de entrada y salida del codificador BCH (15,11).
Figura 4-27. Señales de entrada y salida del decodificador Meggit (15,11).
De esta forma se implementan tres diferentes técnicas de control de error en códigos de bloque. Estos módulos de software creados están listos para ser implementados en una FPGA o en cualquier otro dispositivo lógico programable que soporte VHDL, el cual después de ser programado con alguno de estos módulos, se comportará como un
codificador o decodificador, en el cual solo se tendrá que reprogramar para utilizar otra técnica de control de error diferente a la que esté utilizando, esta facilidad de reconfiguración es uno de los principales objetivos del radio definido por software en lo que respecta al procesamiento de señales y representaría una gran ventaja debido a la evolución tan rápida de las telecomunicaciones.
Conclusiones
En este trabajo se logró la implementación de diferentes técnicas de control de error, utilizando códigos de bloque lineal, como son los códigos Hamming, códigos cíclicos y códigos BCH.
Los códigos más adecuados para su implementación en hardware son los códigos cíclicos, debido a esto la programación en el lenguaje de descripción de hardware resultó ser más sencilla que la de los códigos Hamming o BCH, aunque en este trabajo el último de los códigos que se implementaron fue un código BCH (15-11) en el que se logró un programa general, ya que con solo unos cambios en parámetros de la función del codificador se pueden implementar códigos de diferente longitud, por lo que no solo llegamos al diseño de diferentes módulos de software, sino que llegamos a un solo módulo de software general el cual puede modificarse para la implementación de códigos de diferente longitud.
En la parte de la decodificación de los códigos, la forma más viable de implementar un decodificador es utilizando la decodificación Meggit, ya que emplea registros de corrimiento como los códigos cíclicos, una vez implementado el módulo encargado de detectar el síndrome, sólo resta implementar el circuito del decodificador Meggit para poder corregir el error, pero este depende de la longitud del código, ya que el tamaño del registro de corrimiento cambiará así como el circuito de corrección de la palabra código.
Los programas que resultaron de este trabajo para códigos cíclicos y BCH utilizan decodificador Meggit, estos programas están construidos de tal forma que sólo con hacer el cambio en el tamaño del arreglo que representa el registro de corrimiento y de cambiar las condiciones necesarias para hacer la corrección de error se tiene un módulo que nos representa otro decodificador diferente, por lo que puede servir de base para la construcción de más módulos de software que implementen distintos decodificadores.
Los resultados de este trabajo son importantes en el estudio del procesamiento de señales en el radio definido por software, ya que como se mencionó en el Capítulo 2 no todo el proceso de comunicación puede implementarse en software, pero una de las etapas importantes en este proceso es el de detección y control de error, ya que los codificadores y decodificadores nos dan un porcentaje mayor de eficiencia en la transmisión del mensaje.
Lo más importante de implementar un diseño en un dispositivo lógico programable es que utilizando el mismo hardware, en este caso la misma tarjeta FPGA, se pueden tener implementadas diferentes técnicas de control de error, así con un mismo dispositivo tenemos una gran variedad de codificadores y decodificadores. Esta es la idea principal del radio definido por software.
De este modo se trata de hacer conciencia en la necesidad de un radio definido por software, ya que cada día que pasa la tecnología en comunicaciones móviles e inalámbricas avanza y no siempre se utilizarán los mismos dispositivos de transmisión y recepción, por
lo cual para evitar estos cambios el tener un dispositivo reconfigurable sería de gran eficiencia y utilidad.