La decodificación suave utiliza una medida de confiabilidad cuantificada relacionada con la información proveniente del canal. Con la modulación NRZ unipolar (sin retorno a cero), obtenemos una palabra modulada, que se contamina con muestras de la distribución de ruido seleccionada y se demodula con la ayuda de un comparador.
Canales de comunicación y codificación
Si el número de bits erróneos fuera inferior a un cierto límite, el código permitiría restaurar el mensaje original. Por otro lado, si el mensaje contiene más errores de los que el decodificador puede corregir, el código colapsaría; Es posible que el destinatario no conozca plenamente la información original.
Generación de canal
- Evaluación de funciones y segmentación
- Métodos de evaluación de funciones
- Método de segmentación jerárquica, HSM
- Indexación de segmentos
- Evaluación polinomial
Si el error de aproximación ϵ max es demasiado alto, el número de segmentos de segmentación internos aumenta en potencias sucesivas de 2 hasta que ϵ max de todos los segmentos sea ≤ ϵ req. Por tanto, B x0 da el número de bits utilizados para indexar los segmentos de la primera partición.
Códigos Reed-Solomon
Clasificación de los códigos Reed-Solomon
Pero esto plantea un problema relacionado, ya que los coeficientes se calcularon bajo el supuesto de que x se usaría para la evaluación del polinomio y no x2, como en este caso. Estos son códigos lineales, ya que la adición de dos palabras de código produce otra palabra de código y la palabra son todos "ceros" asociados con el código, y cíclicos, ya que un cambio cíclico de cualquier palabra de código produce una palabra de código diferente.
Campo de Galois
Una parte importante de la definición de un cuerpo finito, y por lo tanto de un código Reed-Solomon, es el polinomio generador del cuerpo o polinomio primitivo p(x). El principal interés al adoptar un polinomio primitivo es que todos los elementos distintos de cero de el campo correspondiente El Galois se puede construir teniendo en cuenta el hecho de que el elemento primitivo α es una raíz del polinomio generador del campo.
Construcción de un código Reed-Solomon
Una pequeña desventaja del método logarítmico es que el elemento de campo 0 no se puede representar como un índice. El inverso de un elemento de campo se define como el valor que multiplicado por el elemento de campo produce un valor de 1 (= a 0.
Codificación Reed-Solomon
Agregar el resto r(x) garantiza que el polinomio del mensaje codificado siempre sea exactamente divisible por el polinomio generador. Por ejemplo, para el código (15,11) se puede elegir un mensaje que consta de 11 símbolos de 4 bits.
Decodificación Reed-Solomon
Al introducir dos errores en el símbolo sexto (término x 9) y decimotercero (término x 2) del mensaje codificado, se produce un polinomio de error con dos términos distintos de cero. Para el proceso de división directa se utilizará un método de cálculo similar al del apartado 2.3.4.
El polinomio localizador de error
Otra técnica eficaz para obtener los coeficientes polinomiales localizadores de errores se basa en el método euclidiano para encontrar el máximo común divisor entre dos números [7]. Ω 1 x + Ω 0 (2.57) y se utiliza para determinar el valor del error agregado a los datos de entrada en la ubicación indicada por el polinomio localizador de errores. Ejemplo de decodificación - Parte 2 - Cálculo del polinomio localizador de errores En esta fase queremos encontrar los coeficientes del polinomio localizador de errores.
El segundo procedimiento realizado en paralelo es el que permite obtener los coeficientes del polinomio de deslocalización Λ ( x. Así, en la Tabla 2.4 se muestra el funcionamiento básico del algoritmo de Chien para encontrar las raíces del polinomio de deslocalización.
Calculando los valores de error
La derivada del polinomio localizador de errores Dado un polinomio f(x):. 2.71) Esto equivale a establecer los términos pares del polinomio localizador de errores en cero y dividirlos por x = X − j 1. El resto de las sumas contienen ε en potencias >1, por lo que no pueden ser canceladas por el denominador, pero sí será cero para el límite de ε − > 0. 2.79) Ecuación de Forney para el tamaño del error. El algoritmo de Forney permite calcular valores de error en ubicaciones de error conocidas.
Se basa en la interpolación lagrangiana donde, dado que después de calcular el polinomio del estimador de error Ω (x) es posible calcular el valor del error con:. 2.81) En esta ecuación, el único valor desconocido es la derivada de Λ ( x ) que se obtiene poniendo a cero las potencias de x y dividiendo por x la ecuación de Λ ( x . Una vez identificados los símbolos que contienen los errores, identificar a partir de X j, y calcular los valores de Y j de esos errores, los errores se pueden corregir sumando el polinomio de error E (x) al polinomio obtenido R (x).
Memoria FIFO
Usando el ejemplo de la subsección 2.3.6 como referencia, los pasos y el estado de los datos serán los que se muestran en la Tabla 3.2. Finalmente, una vez que se ha iniciado el decodificador y se han procesado todos los símbolos como en 4.1.1, se muestra en la Fig. Tras la simulación del bloque codificador, hemos continuado con la simulación de los diferentes bloques que componen el decodificador, como se muestra en la Fig.
En este caso, la Tabla 4.4 muestra la cantidad de componentes utilizados en esta implementación. Para profundizar un poco más en el uso de la placa que se muestra en la Fig.
Implementación práctica 41
Arquitectura
La arquitectura general de una FPGA consta de disposiciones de varios bloques programables (bloques lógicos) interconectados con celdas de entrada/salida a través de canales de conexión verticales y horizontales, como se muestra en la Fig. En general se puede decir. que tiene una estructura bastante regular, aunque el bloque lógico y la arquitectura de enrutamiento varían de un fabricante a otro. Algunas funciones simples se pueden implementar en una sola celda, mientras que se pueden lograr funciones más avanzadas con la configuración e interconexión adecuadas de las celdas dentro de una matriz.
La estructura funcional interna de una celda depende del fabricante y de la familia FPGA a la que pertenece. Su arquitectura permite el enrutamiento eficiente de una gran cantidad de conexiones entre estos componentes.
Lenguajes de descripción de hardware
Las celdas configurables permiten la implementación de diversas funciones lógicas programando y luego sintetizando circuitos lógicos combinacionales y síncronos. Por lo general, todas constan de al menos una tabla de búsqueda o LUT, que permite implementar cualquier ecuación lógica hasta un número determinado de entradas y una salida. Por otro lado, redes especiales distribuyen señales de reloj por todo el chip con el objetivo de llegar a los componentes en el menor tiempo posible.
Este conjunto de tecnologías permite al diseñador lograr múltiples aplicaciones, generalmente más rápidas que las que se ejecutan en dispositivos multitarea como las computadoras.
Flujo de trabajo
Criterios de diseño
Implementación en Matlab - Segmentador
- Selección de jerarquía de segmentación
- Cantidad de bits de segmentación y ROMs
- Representación gráfica de la segmentación realizada
Una vez determinada la mejor segmentación, se debe determinar el número de bits óptimos para la segmentación exterior B x0. Luego se aplica la segmentación jerárquica, mientras se busca el B x0 óptimo que minimice el número de segmentos M. Para cada segmento en la segmentación exterior, los coeficientes de Chebyshev se calculan utilizando la función NewRemez que implementa el algoritmo de Remez [10].
Volviendo a la función HierarchyScheme, si el error de aproximación es mayor que el requerido (líneas 27 a 52), se incrementa el número de segmentos de la segmentación interna en potencias sucesivas de 2 hasta cumplir con el error buscado. Aquí se puede observar que la segmentación determinada por el programa se adapta a la función, ya que las mayores no linealidades se encuentran en los extremos.
Implementación System On Chip (SoC)
- Consideraciones generales
- Arquitectura del banco de pruebas - General
- Arquitectura del banco de pruebas - Software
- Arquitectura del banco de pruebas - Hardware
La primera fase utiliza el Generador Uniforme de Números Aleatorios (URNG) de Tausworthe, que se muestra en la Figura 3.14. Como ejemplo, vemos en la Figura 3-14 que los coeficientes que terminan en las columnas de la izquierda luego se suman a sus equivalentes en las otras columnas. . En este caso se utiliza la configuración que se muestra en la Figura 3.16, que presenta la implementación de un multiplicador de desplazamiento y suma, dando como resultado el código que se muestra en B.1.7.
En el caso de la división polinomial, el proceso es básicamente el mismo que se describe para la codificación en la Sección 2.3.4, excepto que en este caso se divide por un polinomio de grado 1. La única diferencia en este caso es que la puerta AND es Se utiliza para evitar que el contenido del registro contribuya al inicio de la palabra de código, lo que se logró en la fig. A su vez, presenta un contador de datos almacenados en memoria y un indicador de error.
En la sección "Fifo_encoder" se muestra la carga de datos de salida del codificador en la memoria FIFO.
Simulaciones y Resultados 79
Simulación en detalle de codificador y decodificador
Esto se debe a que cuando se cambia el selector se debe esperar un ciclo de reloj adicional para que esté disponible el cálculo de los símbolos de paridad, esto se debe al retraso de los registros D del decodificador. Para conseguirlo se debe realizar una correcta elección de los selectores de los multiplexores al introducir los registros de la Fig. Para una mejor explicación se presentan las Tablas 4.1 y 4.2, en las cuales se muestran los registros de los valores de los selectores y el estado de los interruptores.
En este caso el objetivo es tener una copia de los datos de entrada con un retraso controlado para que pueda corregir el mensaje sumando los valores de error obtenidos del bloque de Forney. La Tabla 4.3 muestra el funcionamiento de los bits de control que permiten la lectura y escritura de esta pseudomemoria.
Resultados experimentales
- Determinación de tasa de error
- Utilización de la FPGA
- Bloques en vista de compuertas
Luego, los coeficientes se cargaron en la RAM del programa implementado en HPS y se codificaron y decodificaron 1 millón de palabras para cada SNR. Esta herramienta le permite implementar un analizador de señales digitales, que le permite ver continuamente las señales sintetizadas en la FPGA. En la tabla 4.4 se puede observar que el porcentaje de uso de elementos lógicos o módulos de lógica adaptativa (ALM) es prácticamente nulo.
A primera vista se puede observar que constituyen la porción ocupada más pequeña de la FP-GA. A su vez, en los bloques de color magenta se muestra la sección necesaria para la implementación de los bloques que requiere el procesador FPGA, los cuales se incluyen en la sección donde se encuentra la leyenda ARM A9 Subsystem, siendo el nombre del módulo HPS: u0.
Programa para calculo de segmentos balanceados
Generador Tausworthe de 32 bits
IN NO EVENT SHALL DIGI−KEY 11 // BE LIABLE FOR ANY INCIDENTAL , SPECIAL , INDIRECT OR CONSEQUENTIAL 12 // DAMAGES, LOST PROFITS OR LOST DATA, DAMAGE TO YOUR EQUIPMENT, COST OF 13 // GOODS ACQUISITION, , ANY CLAIMS 14 // BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), 15 // ANY CLAIMS FOR INDEMNIFICATION OR CONTRIBUTIONS, OR OTHER SIMILAR COSTS.
Apendice B 97
Codificador Reed Solomon - LFSR 32 Bits máximo
Memoria FIFO
Codificador Reed Solomon - Maquina de estados
Decodificador Reed Solomon - Maquina de estados
Maquina de estados de control general
Codificador Reed Solomon - Implementación
Multiplicador completo de 4 bits sin acarreo
Decodificador Reed Solomon - Calculo de síndromes
Decodificador Reed Solomon - Algoritmo Euclidiano
Decodificador Reed Solomon - Búsqueda de Chien
Decodificador Reed Solomon - Algoritmo de Forney
- Banco de pruebas diagrama en bloques
- Registro de desplazamiento de 32 bits
- Sistema de comunicaciones generico
- ICDF Rayleigh
- fig:Gráfico de segmentación US
- fig:Gráfico de segmentación P2SL
- fig:Gráfico de segmentación P2SR
- fig:Gráfico de segmentación P2SLR
- Numero de segmentos M vs Bxo
- Rango de segmentos, Bx=6
- Formato de mensaje con paridad
- Funcionamiento de memoria FIFO
- Arquitectura básica de un FPGA
- ALM - Cyclone V
- Unidad de selección de bit
- Arquitectura para indexación e interpolación de ICDF
- Tausworthe 32 bits
- Formas de onda para lectura y escritura de memorias RAM
- Máquina de estados - Codificador
- Máquina de estados - Decodificador
- Maquina de estados finitos general
- Codificador Reed-Solomon (15,11)
- Multiplicación de constantes. Constante = 15
- Multiplicadores por constantes de 4 bits
- Multiplicador completo de 4 bits sin acarreo (GF(16)
- Diagrama de bloques decodificador Reed Solomon
- Hardware para calcular los síndromes
- Procesador Euclideo
- Implementación en hardware de la busqueda de chien
- Implementación en hardware para calcular el valor de error - Algorit-
- ICDF SNR = 10dB segmentada
- Placa de desarrollo - Cyclone V + SoC
- Arquitectura del sistema implementado
- Formas de onda para codificador Reed Solomon
- Simulación de cálculo de síndromes
- Registros y salidas del algoritmo Euclidiano
- Salidas de los algoritmos de Chien y Forney
- Comparación de tasas binarias de error para distintos valores de rela-
- Variación de offset en función de B x1
- Rango de segmentos para Bx = 6
- Elementos de campo para un GF(16) con p ( x ) = x 4 + x + 1
- Tabla de valores para la búsqueda de Chien
- Tabla de lookup para los multiplicadores por constantes de la Fig. 3.15 69
- Estados de registros A y C
- Estados de registros B y D
- Tabla de control para registro de retardo de datos
- Porcentaje de utilización del sistema