108
SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES” SISTEMA DIGITAL PARA COMUNICACIONES EN FPGA T E S I N A Que para obtener el grado de: INGENIERO EN COMUNICACIONES Y ELECTRÓNICA. Presentan: ISAEL JAIMES GONZALEZ ASESORES: M. en C. BRAULIO SANCHEZ ZAMORA M. en C. ORLANDO BELTRÁN NAVARRO. México, D. F. Mayo de 2008. INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACAN INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES”

SISTEMA DIGITAL PARA COMUNICACIONES EN FPGA

T E S I N A

Que para obtener el grado de:

INGENIERO EN COMUNICACIONES Y ELECTRÓNICA.

Presentan:

ISAEL JAIMES GONZALEZ

ASESORES:

M. en C. BRAULIO SANCHEZ ZAMORA M. en C. ORLANDO BELTRÁN NAVARRO.

México, D. F. Mayo de 2008.

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD CULHUACAN INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

Page 2: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA ELÉCTRICA

UNIDAD CULHUACAN

TESINA

SISTEMA DIGITAL PARA COMUNICACIONES EN FPGA

QUE PRESENTAN LOS CC.

ISAEL JAIMES GONZALEZ

M. en C. Orlando Beltrán Navarro M. en C. Braulio Sánchez Zamora

Coordinador del seminario Asesor

M. en C. Héctor Becerril Zamora Jefe de Carrera de ICE

Page 3: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CONTENIDOCONTENIDOCONTENIDOCONTENIDO

IntroducciónIntroducciónIntroducciónIntroducción 5

ObjetivosObjetivosObjetivosObjetivos 6

JustificaciónJustificaciónJustificaciónJustificación 6

CAPITULOCAPITULOCAPITULOCAPITULO I I I I.... Tecnología FPGA Tecnología FPGA Tecnología FPGA Tecnología FPGA

RESUMEN 7

1.1 FPLD (Field Programmable Logic Devices). 7

1.1.1 Características de los FPLD. 9

1.1.2 Tipos de FPLD’s. 12

1.1.2.1 CPLD 15

1.1.2.2 Static RAM FPGAs 16

1.1.2.3 Antifuse FPGA 17

1.2 FPGA. 18

1.2.1 Ventajas de los FPGA’s. 19

1.2.2 Desventajas de los FPGA’s. 20

1.2.3 Comparando arquitecturas FPGA 21

1.2.4 El flujo de diseño en el FPGA. 23

CAPÌTULO II. Elementos DigitalesCAPÌTULO II. Elementos DigitalesCAPÌTULO II. Elementos DigitalesCAPÌTULO II. Elementos Digitales

RESUMEN 29

2.1 Elementos biestables 29

2.1.1 Latchs y Flip-Flops 30

2.1.2 Latch S-R 31

2.1.3 Latch R-S &&&&&& 32

2.1.4 Latch S-R con habilitación 33

2.1.5 Latch D 34

2.1.5.1 Flip-flop D con disparo de flanco 35

2.1.5.2 Flip-flop D con dispara de flanco con de habilitación. 38

2.2 Registros de corrimiento 39

2.2.1 Aplicaciones de los registros de corrimiento. 42

2.2.2 Contadores de registro de corrimiento. 43

Page 4: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

2.2.2.1Contador Anillo 44

2.2.2.2 Contador Johnson 44

2.2 Registro de Corrimiento Retroalimentado (FSR - FEEDBACK SHIFT

REGISTER).

45

2.4 LFSR (Registro de Desplazamiento con Retroalimentación Lineal). 46

2.5 Implementación de los LFSR. 48

2.5.1 Implementación de Galois. 48

2.5.2 Implementación de Fibonacci 48

CAPITULO CAPITULO CAPITULO CAPITULO III III III III. . . . Sistemas CriptográficosSistemas CriptográficosSistemas CriptográficosSistemas Criptográficos

RESUMEN 50

3.1 Cifrado de flujo 50

3.1.1 Estructura general 51

3.1.2 Ventajas del cifrado de flujo sobre el cifrado de bloque 52

3.2 Generadores de secuencias pseudoaleatorias 53

3.2.1 Seguridad en los generadores de secuencias pseudoaleatorias 54

3.2.2 Tipos de generadores de secuencias pseudoaleatorias 54

3.3 Propiedades de las secuencias pseudoaleatorias 55

3.3.1 Postulados de Golomb 56

3.3.2 Complejidad lineal 56

3.4 Cifrado de flujo basado en LFSR 58

3.4.1 Esquema general del LFSR con configuración de Galois 59

CAPITULO ICAPITULO ICAPITULO ICAPITULO IVVVV. Detección de Errores. Detección de Errores. Detección de Errores. Detección de Errores por CRC por CRC por CRC por CRC

RESUMEN 61

4.1 Métodos de detección de errores 61

4.1.1 Paridad 62

4.1.2 Verificación de suma de bloque 64

4.1.3 Comprobación de redundancia cíclica (CRC) 66

4.2 Creando CRC 68

4.2.1 Detección de errores. 70

Page 5: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

4.2.2 Calculo de CRC serial 72

4.2.3 Calculo del CRC en paralelo. 73

CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO V.V.V.V. Diseño , Pruebas y Resultados Diseño , Pruebas y Resultados Diseño , Pruebas y Resultados Diseño , Pruebas y Resultados

RESUMEN 74

5.1 Lenguaje de descripción de hardware (VHDL) 74

5.1.1 Antecedentes 74

5.1.2 Definición 75

5.2 Construcción de LFSR. 77

5.2.1 Condiciones de los LFSR para la generación de secuencias

pseudoaleatorias

77

5.2.1.1 LFSR que genera una secuencia de longitud 2L-1. 78

5.2.1.2 LFSR controlado por el reloj y una señal de habilitación. 80

5.3 Generadores basados en el control de reloj. 82

5.3.1 Generador bilateral de control de paso (Bilateral Stop-and-Go

Generator).

82

5.3.1.1 Diseño en VHDL del Generador bilateral de control de

paso

83

5.3.1.2 Resultados del generador bilateral de paso 84

5.4 Construcción del CRC-32 86

5.4.1 Diseño VHDL del CRC-32 87

5.4.2 Resultados del CRC-32 90

5.5 Construcción de los dispositivos para la transmisión y recepción de datos 91

CONCLUSIONES 95

TRABAJO A FUTURO 96

INDICE ACRONIMOS 97

BIBLIOGRAFÍA 98

Page 6: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Introducción Introducción Introducción Introducción

El presente escrito tiene como finalidad dar a conocer los elementos básicos e

indispensables que se utilizaran para el llevar acabo el proyecto denominado: “Sistema

digital para comunicaciones en FPGA”. El cual surgió con la necesidad de la eliminación

de errores de transmisión por ruido y la protección de la información en un medio de

comunicaciones.

La estructura de este escrito esta encaminada hacia la introducción de los conceptos

básicos que se manejaran durante la realización del trabajo. De forma mas concreta los

temas principales a tratar para el conocimiento teórico de este proyecto son la

programación en lenguaje VDHL, la tecnología programable FPGA, así como generadores

de secuencia pseudoaleatoria que están constituidos por Registros de Desplazamiento

Realimentados Linealmente (LFSR) y el código de redundancia cíclica (CRC).

Es importante señalar que los temas antes mencionados son extensos y que engloban

una gran cantidad de términos complejos; sin embargo para nuestros propósitos no es

necesario profundizar en esos temas, por lo que solamente resaltaremos los aspectos

convenientes y de trascendencia para nuestro proyecto y entendimiento de este.

Page 7: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

JUSTIFICACION Y

OBEJTIVOS

Page 8: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Justificación.Justificación.Justificación.Justificación.

Este proyecto surge de la necesidad de dar a conocer, una de varias tecnologías que se

pueden utilizar en diferentes rubros con varias aplicaciones, como es el caso de la

tecnología FPGA aplicada para un enlace de comunicaciones punto a punto teniendo la

necesidad de implementar un sistema que nos brinde un alto nivel de confiabilidad y

seguridad para la transmisión de información entre estas dos terminales.

Durante muchos años el problema de la seguridad en la transmisión de datos, por

cualquier medio guiado, ha sido determinante para la creación de nuevas técnicas de

encriptación mas eficaces para resguardar nuestra información y evitar que se ha obtenida

por agentes externos. Otro factor importante para la transmisión de información es la

corrección de errores, ya que estos se presentan en todo canal de transmisión, debido

diferentes factores como el ruido (principalmente), temperatura, etc. A partir de estos

factores se elaborara un hardware capaz de proporcionarnos dichos aspectos.

Objetivo.Objetivo.Objetivo.Objetivo.

La finalidad del proyecto es la transmisión de información entre dos equipos terminales de

datos. La variante que existirá en esta transmisión, respecto a la transmisión tradicional,

será el uso de FPGA como dispositivos de acoplamiento entre los equipos terminales. Las

aplicaciones que se asignarán a los FPGA serán las de encriptación de información, lo

cual nos garantiza una transmisión segura y confiable. Además de la corrección de errores

de acuerdo con la norma de la CCITT (Comité Consultivo Internacional Telegráfico y

Telefónico) antiguo nombre del comité de normalización de las telecomunicaciones dentro

de la UIT ahora conocido como UIT-T.

Objetivos particulares.Objetivos particulares.Objetivos particulares.Objetivos particulares.

Los objetivos a desarrollar dentro de esta Tesina se describen a continuación:

• Desarrollar varios programas en VHDL; entre los que se encuentra el diseño de un

LFSR, generadores para cifrado de información y un CRC de 32 bits.

Page 9: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CAPÍTULO I

Page 10: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

7

CAPITULO I. Tecnología FPGA.CAPITULO I. Tecnología FPGA.CAPITULO I. Tecnología FPGA.CAPITULO I. Tecnología FPGA.

Resumen.Resumen.Resumen.Resumen.

Este capitulo nos introduce al conocimiento de la tecnología FPGA, sus orígenes,

características de esta, ventajas y desventajas al hacer uso de esta tecnología así como la

flexibilidad que nos brinda esta para llevar acabo la el diseño, simulación e

implementación de sistemas complejos.

1.1 FPLD (Field Programmable Log1.1 FPLD (Field Programmable Log1.1 FPLD (Field Programmable Log1.1 FPLD (Field Programmable Logic Devices)ic Devices)ic Devices)ic Devices)

Los FPLDs representan un desarrollo relativamente en el campo de los circuitos VLSI.

Estos implementan miles de compuertas lógicas en estructuras multinivel. La estructura de

un FPLD, es similar a la de un MPLD (Mask-Programmable Logic Device), consiste de un

arreglo de celdas lógicas que pueden ser interconectadas por programación para la

implementación de diferentes diseños. La mayor diferencia entre un FPLD y una MPLD es

que un MPLD es programado usando técnicas de fabricación de circuitos integrados para

formar interconexiones de metal mientras que un FPLD es programado usando switches

programables eléctricamente similares a los tradicionales PLD (Programmable Logic

Devices). Un FPLD puede alcanzar numero de niveles de integración mucho mas grandes

que un PLD tradicional debido a su implementación lógica y arquitecturas de

enrutamiento. El primer PLD desarrollado para implementar circuitos lógicos fue el PLA

(Field-Programmable Logic Array). Este es realizado usando lógica AND-OR con varias

compuertas AND con entradas programables seguidas por una compuerta OR

programable. Las arquitecturas de enrutamiento de un PLA son muy simples con crossbar

ineficientes como estructuras en las cuales todas las salidas están conectadas a todas las

entradas a través de un switch. Como tal, los PLD son adecuados para implementar lógica

de dos niveles en forma de suma productos. El siguiente paso en el desarrollo de los

PLDs fue la introducción de dispositivos de arreglos lógicos programables (PLA) con un

solo nivel de programabilidad – compuertas AND programables seguidas por compuertas

OR fijas. En orden para permitir la implementación de circuitos secuenciales, las

compuertas OR son usualmente seguidas por Flip-Flops. Una variante de la arquitectura

Page 11: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

8

PLD básica aparece en muchos FPLDs hoy en día. Múltiples FPLD combinan sencillos

PLDs en un solo chip usando estructuras interconectadas programables. Hoy tales

combinaciones son conocidas como Complex PDL (CPDLs) con capacidades

equivalentes a diez de un FPDL. Las arquitecturas de enrutamiento de un FPDL

proporcionan un enrutamiento mas eficiente tipo MPLD donde cada conexión típica pasa a

través de varios switches. La lógica FPLD es implementada usando múltiples niveles de

compuertas de mas bajo fan-in los cuales a menudo son mas compactas que

implementaciones de dos niveles. La construcción de un FPLD con muy alta capacidad

requiere un diferente enfoque, muy similar a los conjuntos de compuertas programables

por mascaras (Mask-Programable Gate Arrays – MPGAs) que son chips lógicos de muy

alta capacidad de propósito general. Como un MPGA consiste de unos conjuntos de

transistores prefabricados, estos son personalizados por logica del usuario por medio de

las uniones de cables, necesitando la personalización durante la fabricación del chip. Un

FPLD el cual es de campo programable equivalente de un MPGA es conocido como un

FPGA. El usuario final configura un FPGA por la programación. En este texto nosotros

usamos el FPLD como una expresión que cubre todos los dispositivos lógicos

programables en campo incluyendo CPLDs y FPGAs.

¿Por qué un FPLD? Los FPLD pueden ser programados en segundos mejor que en

semanas, en minutos que en los meses requeridos para la producción de partes

programadas por mascaras. Un fabricante de FPLD realiza un solo dispositivo estándar

donde la programación es hecha por los usuarios finales en su lugar de trabajo. Estos

dispositivos actualmente están disponibles en densidades sobre 100,000 compuertas en

un solo dispositivo. Este tamaño es bastante largo para implementar algunos sistemas

digitales en un solo chip y sistemas largos pueden ser implementados en múltiples FPLD

sobre un PCB estándar o en forma de Módulos Multi-Chip (Multi-Chip Modules – MCM).

Hasta hace poco solo dos opciones principales fueron disponibles para diseñadores de

sistemas digitales.

• Primero, podrían usar circuitos de integración a pequeña escala (Small-Scale

Integrated - SSI) y integración a media escala (Médium-Scale Integrated - MSI)

para implementar una cantidad relativamente pequeña de lógica con un gran

numero de dispositivos.

Page 12: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

9

• Segundo, podrían usar unos conjuntos de compuertas enmascaradas

programables (Mask-Programable Gate Arrays – MPGA) o simplemente un arreglo

de compuertas para implementar diez o cien o mil compuertas lógicas o un solo

circuito integrado en lógica multinivel con alambrado entre los niveles lógicos. Este

alambrado de lógica es construido durante el proceso de manufacturación

requiriendo una mascara para dicho propósito.

Como solución intermedia varios tipos de sencillos PLD estaban disponibles como (PLA,

PAL). Un PLD simple es un dispositivo lógico de propósito general capaz de implementar

la logica de diez o cien de circuitos SSI y realizar funciones lógicas en el campo usando

hardware de programación barata [1].

1.1.1 Características de los FPLD1.1.1 Características de los FPLD1.1.1 Características de los FPLD1.1.1 Características de los FPLD

Los FPLDs ofrecen los beneficios de PLDs y MPLDs. También permiten la

implementación de miles de compuertas lógicas en un solo circuito y poder ser

programados por diseñadores en sitios que no requieran procesos de manufacturación

costosos. La figura 1.1 proporciona algunas de las principales opciones actualmente

usadas para diseño de sistema digital y mostrar porque consideramos los FPLDs como la

tecnología más prometedora para la implementación de un número muy grande de

sistemas digitales. Así como las ventajas de los FPLD sobre otros tipos de lógica

disponible.

Page 13: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

10

Figura 1.1 Opciones para tecnologías de dispositivos diferentes

Dadas las características anteriores las orientaremos a la comparación de FPLD y MPLD

como las tecnologías más aceptables para diseño de sistema digital complejo así como la

implementación.

Velocidad. Los FPLDs ofrecen dispositivos que operan a velocidades excediendo a lo 200

MHz en algunas aplicaciones. Obviamente, las velocidades son más altas que en

sistemas implementados por circuitos SSI, pero aun mas baja que la velocidad de los

MPDLs. La principal razón para esto llega a ser por la programabilidad del FPLD, devido a

los puntos pogramables interconectados que agregan resistencia al camino interno,

mientras que los puntos de programación en el mecanismo de interconexión agregan

capacitancia al camino interno.

Densidad. Así para dar un número de puertas el tamaño de un MPLD y un FPLD están

dadas por la cuenta de I/O también la capacidad de estos puede llegar a ser igual

Tiempo de desarrollo. El desarrollo del FPLD es seguido por el desarrollo de las

herramientas para diseñar sistemas. Todas esas herramientas pertenecen a herramientas

Page 14: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

11

de alto nivel económico jamás para pequeños diseños. Este tiempo de desarrollo incluye

principalmente realización de prototipos y simulación mientras las otras fases, incluyen la

generación del modelo de prueba tiempo de consumo, la oblea de fabricación, ensamblaje

y las pruebas son evitadas. Esto conduce a veces al desarrollo típico para el diseño del

FPLD pausando en días o semanas, en contraste al MPLD a veces el desarrollo toma

muchas semanas o meses.

Realización de prototipos y tiempo de simulación. Mientras el proceso de manufacturación

de MPLD toma semanas o meses desde la finalización del diseño hasta la entrega de las

partes finalizadas, los FPLD solo requieren finalización del diseño. Las modificaciones

para corregir un diseño de flujo son rápidamente y sencillamente hechas suministradas en

un corto tiempo esto da ventaja para el mas rápido desarrollo del producto y en corto

tiempo a mercado de nuevos productos basados en FPLD. Un prototipo FPLD proporciona

bajo costo, mientras que los MPLD proporcionan un bajo costo en cuanto el volumen de

producción

La verificación apropiada de un MPLD requiere que los usuarios para verificar sus diseños

por simulación extensa antes de la introducción de fabricación de todos los

inconvenientes de la velocidad / exactitud, compensación conectadas con alguna

simulación. En contraste las simulaciones de los FPDLs son mucho mas simples debido al

hecho que las características de temporizacion y los modelos son conocidos de antemano.

Tiempo de fabricación. Los usuarios no requieren que escriban pruebas de diseño

específicas porque la prueba del fabricante verifica que cada FPLD funcione para todos

los posibles diseños implementados. Las consecuencias de la fabricación de chips de

ambas categorías es obvia. Una vez verificado, el FPLD puede ser fabricado en cualquier

cantidad y entregar como partes completamente probadas listas para la implementación

del diseño, en un MPLD requiere una preparación de producción separada para cada

nuevo diseño.

Modificaciones futuras. En vez de personalizar la parte en el proceso de fabricación como

para los MPLD y FPLS estos son personalizados por modificaciones eléctricas. La

personalización eléctrica toma milisegundos o minutos y puede aun ser realizado sin

dispositivos especiales con dispositivo s de programación de bajo costo. Aun mas, este

puede ser realizado en un sistema, que significa la parte que puede ser impresa en la

tarjeta del circuito, reduciendo el peligro de daño debido a una orientación incorrecta. En

Page 15: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

12

otro aspecto, cada modificación del diseño para ser implementado en un MPLD requiere

una mascara personalizada que cuesta muchos miles de dólares que solo puede ser

costeadas por el numero total de unidades fabricadas.

Seguridad de inventario. Una característica importante de los FPLD es el bajo costo de

inventario, similar a las partes SSI y MSI. Desde la fabricación actual esta hecha en el

momento de programar un dispositivo, la misma parte puede ser usada para diferentes

funcionalidades y diferentes diseños. Esto no se encuentra en un MPLD desde la

funcionalidad y aplicación están fijos aun solo producto. También la decisión en el

volumen de los MPLD debe ser hecha por adelantado de la fecha de entrega, teniendo en

cuenta la probabilidad de que también algunas o insuficientes partes sean ordenadas a

producir. Generalmente los FPLD son conectados con muy bajo riesgo de diseño en

términos de dinero y retraso.

Desarrollo de herramientas usadas para diseños en FPLD usualmente integran el rango

de entrada del diseño, procedimiento y herramientas de simulación la cuales permiten una

fácil reusabilidad de todas las partes de un diseño correcto.

Costo. El mayor beneficio de un diseño barato en un MPLD es el bajo costo en cantidades

grandes. Los FPLD tienen mucho menor costo desarrollo y modificación del diseño,

incluyendo cambios iniciales en el NRE, utilidades y costos de pruebas. Sin embargo, la

gran área sin usarse y la baja densidad del circuito resultan en costos de fabricación por

unidad altos [1].

1.1.2 Tipos de FPLD’s1.1.2 Tipos de FPLD’s1.1.2 Tipos de FPLD’s1.1.2 Tipos de FPLD’s

La arquitectura general de un FPLD se muestra en la figura 1.2 Un FPLD típicamente

consiste de un numero de celdas lógicas que son usadas par la implementación de

funciones lógicas. Las celdas lógicas son organizadas en forma de matriz. La

interconexión de los recursos se conectan a las entradas y salidas de una celda lógica tan

bien como bloques de entrada / salida usadas para conectar un FPLD con el mundo

exterior.

Page 16: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

13

Figura 1.2 Arquitectura de un FPLD

A pesar de la misma estructura general, implementaciones concretas de FPLDs difieren

entre los competidores principales. Debido en cuanto al acceso de la programabilidad del

circuito, estructura interna de la celda lógica, bloques de entrada / salida y mecanismos de

enrutamiento.

Una celda lógica de un FPLD puede ser un transistor o un microprocesador complejo.

Típicamente es capaz de implementación combinacional y funciones lógicas secuenciales

de diferentes complejidades.

Los FPLD comerciales emplean celdas lógicas que son basadas en uno o mas de las

siguientes partes como son un par de transistores, compuertas pequeñas básicas (NANDs

o XORs de dos entradas), multiplexores, tablas look-up, estructuras AND-OR con wide-

fan-in.

Tres tecnologías de programación son asociadas con costos de área y redimiendo,

comúnmente son usados para implementar el switch programables par los FPLDs. Esos

son:

Page 17: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

14

• Memoria estática de acceso variable (Static Random Access Memory-SRAM),

donde el switch es un transistor controlado por el estado de un bit SRAM.

• EPROM, donde el switch es un transistor de compuerta flotante que puede ser

apagado por un cambio de inyección en la compuerta flotante.

• Antifuse, en el cual, cuando es programado eléctricamente, forman un camino bajo

en resistencia.

En todos los casos, un switch programable ocupa un área grande y muestra una alta

resistencia parásita y capacitancia que un contacto típico usado en un MPLDs. Un área

adicional también es requerida para programación de circuiteria, resultando una densidad

mayor y una velocidad muy baja de FPLDs comprada con un MPLD.

Una arquitectura de enrutamiento de un FPLD incorpora segmentos de unión de varias

longitudes las cuales pueden ser interconectadas con switches eléctricamente

programables. La densidad lograda por un FPLD depende del numero de uniones

incorporadas. Si el numero de los segmentos de uniones son insuficientes, solo una

fracción pequeña de las celda lógica puede ser utilizada. Un excesivo numero de los

segmentos de uniones es un área desperdiciada. La distribución de los segmentos de

unión afecta grandemente a la densidad como al rendimiento de un FPLD. Estos pueden

ser optimizados eligiendo la apropiada gradualidad y funcionalidad de la celda lógica.

Como diseñando arquitecturas de enrutamiento para lograr un alto grado de enrutabilidad

mientras se minimizan los números de los switches [1].

Si la tecnología de programación y el desarrollo de la arquitectura son combinadas, tres

principales categorías de FPLDs abarcaríamos como son:

• Dispositivo complejo lógico programable (Complex Programable Logic Device-

CPLD).

• Static RAM Programmable Logic Arrays, o simplemente FPGAs

• FPGAs difusos.

Page 18: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

15

1.1.21.1.21.1.21.1.2.1.1.1.1 CPLDs.CPLDs.CPLDs.CPLDs.

La arquitectura típica de un CPLD se muestra en la figura 1.3. El usuario crea

interconexiones para programara al el EPROM o transistores EEPROM para formar varios

fan-in en las compuertas.

Los bloques de función (Function Block-FB) son similares para un solo PLD de dos

niveles. Cada FB contiene un PLD con un arreglo AND que se suministran a las

macroceldas (macrocells - MC) el arreglo AND consiste de un numero de términos del

producto. El usuario programa el arreglo AND encendiendo los transistores de la EPROM

que permiten seleccionar las entradas hasta ser incluidas en un termino del producto.

Figura 1.3 Arquitectura típica de un CPLD

Una macrocelda incluye una compuerta OR para completar la lógica AND-OR y también

incluye registros y una pista de I/O. Este también puede contener celdas EPROM

adicionales para multiplexores de control que seleccionan un registro o una salida no

registrada y decide si el resultado de la macrocelda es la salida en la pista de I/O en esa

localización. Las salidas de las macroceldas son conectadas con entradas de FB

adicionales o como las entradas en un mecanismo universal de interconexión (universal

interconnect mechanism – UIM) global que llegan a todos los FB en el chip. Las

Page 19: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

16

macroceldas FB, y los mecanismos de interconexión varían de un producto a otro dando

un rango de capacidad de dispositivos y velocidades.

1.1.2.2 1.1.2.2 1.1.2.2 1.1.2.2 Static RAM FPGAs.Static RAM FPGAs.Static RAM FPGAs.Static RAM FPGAs.

En un SRAM FPGA, las celdas de memoria estática guardan el programa que representa

el diseño del usuario. Los SRAM FPGA implementan lógica como tablas lookup (lookup

tables - LUTs) hechas de celdas de memoria en las que las entradas de la función

controlan las líneas de direccionamiento. Cada LUT de 2n celdas de memoria implementan

cualquier función de “n” entradas. Una o mas LUT, se unen con flip flops para formar un

bloque lógico (logic block – LB). Los LB están organizados en un conjunto de dos

dimensiones con segmentos de interconexión en canales como se muestra en la figura

1.4.

Figura 1.4 Arquitectura típica de una SRAM FPGA

Page 20: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

17

Los segmentos de interconexión se conectan a los pines de los LB en los canales y otros

segmentos en las cajas de interconexión, a través de transistores de paso controlados por

celdas de memoria de configuración. Las cajas de interconexión, debido a su complejidad

alta, no son interconexiones de crossbar entero.

Un programa SRAM FPGA consiste de una simple programa de palabra larga. La

circuiteria del chip carga esta palabra, leyéndola de forma serial de una memoria externa

todo el tiempo que este encendida es aplicada al chip. Los bits del programa colocan los

valores de todas las celdas de memoria de configuración en el chip. Así chocando los

valores de las LUT y seleccionado cual segmento conecta con cada uno al otro. Los

SRAM FPGA son intrínsicamente reprogramables. Estos pueden ser fácilmente

actualizados proporcionados por los diseñadores con nuevas capacidades tales como la

reconfigurabilidad.

1.1.2.3 1.1.2.3 1.1.2.3 1.1.2.3 Antifuse FPGAAntifuse FPGAAntifuse FPGAAntifuse FPGA

Un Antifuse es un dispositivo de dos terminales que cuando es expuesto a muy alto voltaje

forma un corto circuito permanente entre los nodos de cualquiera de las dos terminales.

Los antifuse individuales son pequeños, permitiendo una arquitectura basada en base

antifuse para tener miles de millones de antifuses, un FPGA antifuse, se encuentra

ilustrado en la figura 1.5, usualmente consiste de raíces de elementos lógicos

configurables con canales de interconexión entre ellos como los tradicionales arreglos de

compuertas.

Figura 1.5 Arquitectura FPGA Antifuse

Page 21: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

18

Las termínales de los bloques lógicos (logic block – LB) se amplían en el canal. Un LB es

usualmente una simple red de compuerta-nivel, la cual el usuario programa mediante la

conexión de sus terminales de entrada o para la interconexión de redes. Hay antifuses en

toda la unión a unión de los puntos de interconexión en el canal y en toda la unión a unión

de los puntos de interconexión cuando se interceptan los canales.

1.2 FPGA1.2 FPGA1.2 FPGA1.2 FPGA

Un FPGA (Arreglos de compuertas programables en el campo) es un dispositivo múltinivel

programable de propósito general. Integra una gran cantidad de dispositivos lógicos

programables en un chip. El tamaño y velocidad de los FPGA’s es equiparable a los

Circuitos Integrados para Aplicaciones Específicas (ASIC’s), pero los FPGA’s son más

flexibles y su ciclo de diseño es más corto [2].

Un FPGA es un a arreglo de bloques lógicos programables colocados en una

infraestructura de interconexiones programable; es posible programar la funcionalidad de

los bloques lógicos, las interconexiones entre bloques y las conexiones entre entradas y

salidas. Un FPGA es programable a nivel hardware, por lo que proporciona las ventajas de

un procesador de propósito general y un circuito especializado.

La aplicación de los FPGA va más allá de la implementación de lógica digital, pueden ser

utilizados para la implementación de arquitecturas específicas. Los sistemas basados en

FPGA’s proporcionan un mejor desempeño que sus correspondientes implementaciones

en software. Las aplicaciones que requieren de un gran numero de operaciones simples

son adecuadas para su implementación en FPGA’s puesto que un elemento de

procesamiento puede diseñarse para efectuar esta operación y varias instancias de este

pueden reproducirse para llevar a cabo procesamiento paralelo [2].

Para implementar diseños con miles o decenas de miles de compuertas, los diseñadores

pueden valerse de Arreglos de compuertas programadas por máscaras (MPGAs),

comúnmente llamados arreglos de compuertas. Un MPGA puede implementar decenas de

miles e incluso cientos de miles de compuertas en un chip. Un MPGA consiste de una

base de transistores prediseñados con sus cableados. El cableado es construido durante

el proceso de fabricación, por esto cada diseño necesita de mascaras adecuadas para el

cableado. El desarrollo de las mascaras para los MPGAs eleva el costo para volúmenes

Page 22: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

19

pequeños de producción. Los tiempos típicos de desarrollo de estos dispositivos son de 4

a 6 semanas.

Los FPGA ofrecen los beneficios de los arreglos de lógica programable y arreglos de

compuertas. De manera similar a los MPGA’s, los FPGA’s implementan miles de

compuertas lógicas en un circuito integrado. Análogamente a los PLD’s, los FPGA’s son

programados por los diseñadores reduciendo los tiempos y costos. Estas ventajas han

hecho que los FPGA se popularicen [2] [3].

Implementación Instantánea. . . . Debido a que el cableado en memoria es usualmente corto,

los diseños pueden efectivamente ser implementados “instantáneamente”. Esto es una

distinción del convencional diseño VLSI, donde toma varias semanas desde el diseño a la

fabricación.

Reconfiguración Dinámica. Con algunas arquitecturas parte del FPGA puede ser

configurado en tiempo de ejecución. Los circuitos podrían incluso ser auto modificados.

Seguridad del Diseño. . . . La configuración de un FPGA desaparece cuando el chip es

apagado. Existe un rango de aplicaciones donde este nivel adicional de seguridad del

diseño es importante. Sin embargo, existe otra familia de FPGA’s donde la configuración

puede programarse una sola vez permaneciendo de manera fija.

1.2.1 Ventajas de los FPGA’s.1.2.1 Ventajas de los FPGA’s.1.2.1 Ventajas de los FPGA’s.1.2.1 Ventajas de los FPGA’s.

Costos de Tooling bajos. Cada diseño a ser implementado en un MPGA requiere

desarrollar una máscara de acuerdo a los patrones de cableado. El costo de cada

máscara es de alrededor de miles de dólares, costo que debe ser amortizado sobre el

número total de unidades fabricadas. Entre mas unidades sean construidas se reduce el

impacto del costo de desarrollo. Los FPGA’s no requieren de este proceso, por lo que no

tiene asociado el costo, además son excelentes para volúmenes relativamente pequeños

(1000 a 10000 unidades).

Rápido Desarrollo. El proceso de manufactura de MPGA’s toma varias semanas desde la

finalización del diseño hasta la liberación de las partes desarrolladas. Un FPGA puede ser

Page 23: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

20

programado en minutos por el usuario. En un FPGA, una modificación para corregir el

diseño puede realizarse rápidamente y de manera barata. El rápido desarrollo produce a

su vez que la aparición de nuevos productos sea mas rápida y reduce el tiempo para

venta de un nuevo producto FPGA.

Verificación Efectiva del Diseño. Debido a los costos de la ingeniería no recurrente (NRE)

y retardos de manufactura, los usuarios de MPGA’s deben verificar sus diseños por

simulación extensiva antes de la fabricación. Para verificar la funcionalidad del diseño en

un sistema, debe simularse durante grandes periodos de tiempo. Los FPGA’s reducen

estos problemas. En lugar de simular por grandes periodos de tiempo, los usuarios de

FPGA’s pueden elegir realizar una verificación en el circuito. Los diseñadores pueden

implementar el diseño y usar partes funcionales como un prototipo. El prototipo opera a

velocidad completa y con excelente precisión del tiempo.

Bajo Costo de Pruebas. Todos los circuitos integrados deben ser probados para verificar

la fabricación correcta y empaquetamiento. El test es diferente para cada diseño. Los

diseños implementados en un MPGA incurren en costos asociados, además que el

desarrollo de test efectivos es difícil, por lo que puede ocurrir que algunos chips

defectuosos pasen los tests y solo hasta que fallan en un sistema es como se detectan los

errores generando mas costos. En contraste, el programa test es el mismo para todos los

diseños FPGA’s. Los programas test de los fabricantes verifican que cada FPGA pueda

funcionar para cualquier posible diseño que pueda ser

implementado en él. Los usuarios solo necesitan test específicos para sus arquitecturas

programadas [2].

1.2.2 Desventajas de los FPGA’s.1.2.2 Desventajas de los FPGA’s.1.2.2 Desventajas de los FPGA’s.1.2.2 Desventajas de los FPGA’s.

FPGA’s tienen en el chip un área de programación que no puede ser usada por los

diseñadores. Los switches programables incrementan el retardo de la señal agregando

resistencia y capacitancia a las interconexiones. Como resultado, los FPGA’s son mas

grandes y lentos que sus equivalentes MPGA’s.

Tamaño del chip y costo. Algunos FPGA’s son alrededor de 10 veces más grandes para la

misma capacidad de compuertas que sus equivalentes MPGA, y son

correspondientemente mas caros. Para

Page 24: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

21

diseños mayores, los diseñadores deben particionar el diseño en varios FPGA’s o mudar

el diseño a un MPGA.

Velocidad de circuitería. Las conexiones en un FPGA se retardan por la circuitería de

programación. Los puntos de interconexión programables a lo largo de una ruta de

cableado agregan resistencia a la ruta. Todos los puntos de programación en las

interconexiones agregan capacitancia a las rutas internas. Finalmente debido a que mas

área es necesaria para el mismo monto de lógica, líneas de interconexión entre

dispositivos lógicos es mas grande. Líneas mas largas tienen mayor resistencia y

capacitancia. Los FPGA’s actuales son 2 o 3 veces más lentos que MPGAs [2].

1.2.3 Comparando arquitecturas FPGA 1.2.3 Comparando arquitecturas FPGA 1.2.3 Comparando arquitecturas FPGA 1.2.3 Comparando arquitecturas FPGA

Sobre los años varias tecnologías de arquitecturas han emergido para convenir a

diferentes requerimientos por parte de lo usuarios; los FPGA son programados por estos

para conectar los recursos del chip, de la manera mas apropiada para implementar la

función deseada. Algunos FPGA solo pueden ser programados un sola vez; estos

dispositivos emplean la tecnología llamada antifuse, también existen dispositivos basados

en tecnología flash que pueden ser programados y reprogramados una y otra vez después

de eliminar errores, algunos otros pueden ser dinámicamente programados gracias a la

tecnología basada en SRAM. Cada una de estas tecnologías de arquitecturas tienen

algunas ventajas y desventajas uno con respecto del otro como se muestran en la tabla

1.1 [1].

CaracteristicaCaracteristicaCaracteristicaCaracteristica SRAMSRAMSRAMSRAM ANTIFUSEANTIFUSEANTIFUSEANTIFUSE FLASHFLASHFLASHFLASH

Reprogramable Si (en un sistema) No Si (fuera del sistema)

Velocidad de

reprogramación

(incluyendo borrado)

Rapido No aplicable 3 ves mas que la

SRAM

Volátil Si No No (pero puede ser si

asi es requerido)

Archivo de

configuración externo Si No No

Excelente para

prototipo Si No Si

Instant-on No Si Si

Page 25: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

22

Seguridad IP Pobre Muy buena Muy buena

Tamaño de

configuración de

celda

Larga (seis

transistores) Muy pequeña

Pequeña (dos

transistores)

Consumo Alto Bajo Medio

Dureza de radiación No Si No

Tabla No 1.1. Ventajas y desventajas de varias tecnologías FPGA

Los FPGA modernos son basados en configuración de celdas SRAMceldas SRAMceldas SRAMceldas SRAM, las cuales ofrecen el

beneficio de ilimitada reprogramabilidad. Cuando son encendidos, pueden ser

configurados para realizar una tarea dada. El flip site, a través de los FPGA basados en

SRAM deben ser reconfigurado cada vez que le host del sistema sea encendido y la

circuiteria adicional necesaria para hacerlo. Además porque el archivo de programación

usado para programar el FPGA es almacenado en una memoria externa, las cuestiones

de seguridad acerca de la propiedad intelectual surgen.

Los FPGA basados en atintifuseatintifuseatintifuseatintifuse no son sistemas programables pero además son

programados fuera de línea usando un dispositivo programador. Una vez el chip es

configurado, este no puede ser alterado. Sin embargo en la tecnología antifuse, la

configuración del dispositivo no permanece sin necesidad de una memoria externa. Esto

es virtualmente imposible para un diseñador que reserva su programación; por lo regular

trabajan con reemplazos para ASIC en volúmenes más pequeños.

En un sentido, los FPGA basados en flash cumplen la promesa de los FPGA en que estos

pueden ser programados varias veces. Estos son permanentes conservando su

configuración aun cuando son apagados. La programación es hecha en cualquier sistema

o con un programador. En algunos caos la seguridad IP puede ser archivada usando una

llave multibit que cierra los datos de configuración después de la programación.

Pero los FPGA basados en tecnología flash requieren pasos de proceso extras por encima

y mas allá de la tecnología CMOS estándar, dejando al menos una generación atrás.

Además algunos resistores pull-up resultan con lato consumo estático.

Los FPGA pueden también ser caracterizados por cualquiera de las dos siguientes

arquitecturas grano fino y grano medio o grueso. La arquitectura de grano fino contiene un

Page 26: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

23

gran número de bloques lógicos relativamente sencillos. Cada bloque lógico usualmente

contiene cada uno una función lógica de dos entradas o una función de cuatro entradas a

un multiplexor y un flip flop. Los bloques solo pueden ser usados para implementar

funciones sencillas. Pero las arquitecturas de grano fino se presentan para funciones de

excursión. La arquitectura de grano grueso consiste de grandes bloques lógicos,

relativamente a menudo contiene dos o mas tablas de lookup y dos o mas flip flops. Es

mas estas arquitecturas implementan una lógica actual de una tabla lookup de cuatro

entradas (ROM de 16x1) [3].

1.2.4 El flujo de diseño en el FPGA1.2.4 El flujo de diseño en el FPGA1.2.4 El flujo de diseño en el FPGA1.2.4 El flujo de diseño en el FPGA

Después de completar todas las opciones de implementación debemos considerar el flujo

de diseño. El proceso de implementación de un diseño en un FPGA puede ser dividido

dentro de muchas etapas. Aproximadamente definido como captura o entrada del diseño,

síntesis, enrutamiento y colocación, como se muestra en la figura 1.6. De esta manera, el

diseño es simulado en varios niveles de abstracción como en un diseño ASIC. La

disponibilidad de sofisticadas y herramientas coherentes para el diseño del FPGA los hace

mas atractivos.

Figura 1.6 Los pasos del flujo de diseño de un FPGA

Page 27: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

24

En un tiempo, el ingreso al diseño fue realizado en la forma de captura esquemática. La

mayor parte de los diseñadores han cambiado a lenguajes de descripción de hardware

(HDL-Hardware Description Languaje) para el ingreso del diseño. Algunos prefieren una

combinación de las dos técnicas. Las herramientas de captura del diseño basada en

forma esquemática da a los diseñadores mucho control sobre la colocación física y la

división de la lógica en el dispositivo pero esto llega a ser manos probables que los

diseñadores tomen ese ruta mientras tanto, el diseño de entrada basada en este lenguaje

es mas rápido, pero a menudo a costo de densidad o enrutamiento. Para algunos

diseñadores, la elección de si se usa el ingreso del diseño basado en un esquema o

basado en HDL baja su concepción de su propio diseño.

Los HDL son un bien para diseños altamente complejos, especialmente cuando el

diseñador tiene una herramienta de cómo la lógica debe ser estructurada. Pueden

también ser muy útiles para el diseño de funciones mas pequeñas cuando no tienen el

tiempo o la inclinación para trabajar a través de la implementación actual del hardware.

Por otro lado los HDL representan un nivel de abstracción que pueden aislar los

diseñadores de los detalles de la implementación del hardware. El ingreso basado en un

esquema por parte de los diseñadores proporciona una mayor visibilidad en el hardware.

El inconveniente del ingreso basado en un esquema es que este hace el diseño mas difícil

para modificar o un puerto a otro FPGA.

Una tercera opción para el ingreso del diseño, es el ingreso del estado de maquina,

funciona para diseñadores quienes pueden ver su diseño lógico como una serie de etapas

a través de los pasos del sistema. A menudo en el área del control del sistema. Que

puede ser representado claramente en forma visual, la herramienta de soporte par aun

estado de maquina finita.

Algunos diseñadores enfocan el inicio de su diseño de un nivel de abstracción mas alto

que los HDL, el cual es un diseño algorítmico usando lenguajes de programación (C/C++).

Generalmente el diseño algorítmico ha sido pensado como una herramienta para

exploración arquitectónica. Pero cada vez mas como herramientas de flujo surgen para

síntesis de nivel C aceptándolo como primer paso para la implementación en hardware.

Page 28: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

25

Después del diseño de entrada, el diseño en el registro de transferencia de nivel (RTL-

Register-Transfer Level) es la primera de todas las etapas de simulación porque el diseño

ha de ser simulado en niveles sucesivos de abstracción como este movimiento caen hacia

la cadena de la implementación física en el mismo FPGA.

La simulación RTL ofrece el más alto desempeño en términos de velocidad. Como un

resultado, los diseñadores pueden realizar algunas simulaciones en un esfuerzo para

retocar la lógica. En esta etapa, el desarrollo del FPGA no es una diferencia del desarrollo

del software, variables y señales son observadas, funciones y procesamientos son

trazados y “breakpoint set”. En esta parte la simulación es muy rápida; pero porque el

diseño aun no ha sido sintetizado al nivel de compuerta las propiedades como la

temporizacion y el uso de los recursos son todavía desconocidos.

El siguiente paso de la simulación RTL es convertir la representación RTL del diseño en

un archivo “bit-stream” que puede ser leído en el FPGA. El paso provisional es la síntesis

FPGA, el cual traslada el VHDL o el código verilog dentro de un dispositivo en un formato

netlist que puede ser entendido por un convertidor bit stream.

Este proceso de síntesis puede ser divido en tres pasos. El primero, el HDL es convertido

en el dispositivo en formato netlist. Entonces el resultado del archivo es convertido dentro

de un archivo bit-stream hexadecimal o un archivo .bit. este paso es necesario para

cambiar la lista de dispositivos requeridos e interconectar en los bits hexadecimales para

cargar en el FPGA. Por ultimo el archivo .bit es leído en el FPGA físico. Este paso final

completa el procedimiento de la síntesis de un FPGA para programar el diseño sobre el

FPGA físico.

Esto es importante para la limitación del diseño completamente después de la síntesis

(figura 1.7). Un archivo de limitación es una entrada del proceso de síntesis solo con el

mismo código RTL. Las limitaciones pueden ser aplicadas globalmente para porciones

especificas del diseño. El “engine” usa estas limitaciones para optimizar el netlist. Sin

embargo esto es igualmente importante para no “over-constrain” del diseño, el cual

generalmente resulta en menos de resultados óptimos del siguiente paso en el proceso de

implementación, la colocación del dispositivo físico y el enrutamiento a interconectar las

limitaciones de la síntesis también llegan a ser limitaciones de lugar y enrutamiento.

Page 29: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

26

Figura 1.7 Herramientas que desempeñan la optimización antes de la creación del netlist

que pasara por la herramientas de enrutamiento y colocación.

Este flujo tradicional trabajara, pero esto puede conducir a numerosas interacciones antes

de llevar a cabo el cierre de la temporizacion. Algunos vendedores de EDA ha incorporado

más técnicas de síntesis físicas modernas las cuales el dispositivo automiza la re-

temporizacion moviendo las tablas lookup, a través de los registros para balancear el

stack de tiempo. La síntesis física también anticipa el enrutamiento y el lugar para detener

el retraso de la información.

La siguiente síntesis, comienza en la implementación del dispositivo. Después el netlist de

la síntesis, el diseño es convertido automáticamente en un formato soportado

internamente por el vendedor de las herramientas de FPGA de enrutamiento y lugar. La

regla de diseño de comprobación y optimización es realizada en el netlist entrante y el

software que particiona el diseño en los recursos lógicos disponibles. La buena partición

es requerida para archivar la conclusión del enrutamiento alto y el rendimiento alto.

Cada vez mas, los diseñadores de FPGA recurren al floorplanning después de la síntesis y

el diseño particionado. Los floorplanner de FPGA trabajan desde la jerarquía del netlist

como definido por el código RTL. El floorplaning, puede ayudar si el área es ajustada,

cuando es posible esto es una buena idea para la colocación de la lógica crítica en

bloques separados.

Page 30: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

27

La simulación funcional es realizada después de la síntesis y antes de la implementación

física. Este paso asegura la correcta funcionalidad lógica. Después de la implementación

hay un paso final de verificación con la información de tiempo completa. Después de la

colocación y el enrutamiento la lógica y los retrasos de enrutamiento son colocados en el

netlist a nivel de compuerta para la simulación. En este punto la simulación es un proceso

muy largo, porque el tiempo es también un factor (figura 1.8). A menudo los diseñadores

sustituyen el análisis de tiempo estático por el tiempo de las trayectorias combinacionales

entre los registros y los compara en contra del tiempo del diseñador.

Una vez que diseño es verificado satisfactoriamente y hallado la temporizacion deseada,

el paso final es para programar realmente el mismo FPGA. En la culminación de

colocación y enrutamiento, un archivo de programación binaria es creado. No importa que

tecnología sea subyacente al dispositivo, el FPGA interconecta la estructura teniendo

celdas que configuran al dispositivo para conectar las entradas y las salidas de los

bloques lógicos. Por su parte, las celdas configuran esos bloques lógicos el uno a otro.

Las tecnologías de lógica programable incluyendo las PROM para FPGA basadas en

SRAM, requieren alguna clase de un dispositivo programador. Los dispositivos también

pueden ser programados a través de la configuración de sus puertos usando un conjunto

de terminales dedicadas.

Figura 1.8 Etapas de la simulación del FPGA durante el proceso del diseño.

Los FPGA modernos también incorporan un puerto “JTAG” que puede ser usado para más

que pruebas de boundary-scan. El puerto JTAG puede ser conectado para el registro de

desplazamiento de la configuración de la celda interna del dispositivo SRAM, el cual por

su parte puede ser orientado para conectar una cadena de chips de exploración JTAG.

Page 31: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo I Tecnología FPGA

28

Para la terminación del FPGA, hay mas de un paso para el proceso, como el unir el

dispositivo a un tarjeta de circuito impresa (PCB-Printed circuit board) en un sistema.

Más que nunca, los diseñadores deben considerar fuertemente un flujo integrado que

toma de la concepción del FPGA a través del diseño de una tarjeta. Algunos flujos

mantienen completo la conectividad entre el diseño a nivel de sistema y el FPGA, esto

también se hace entre las interacciones del diseño. No solo hoy en día el flujo crea el

esquema de conectividad necesaria para la verificación y el layout de la tarjeta integrada

de un FPGA, pero también documentan las señales de conexión las cuales son hechas a

las terminales del dispositivo y con esto estructurar el mapa original del bus del nivel de la

tarjeta. El flujo integrado para los FPGA hace en un sentido general, que distribuidores de

FPGA consideren continuar a introducir mas dispositivos complejo, poderosos y

económicos.

Page 32: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CAPÍTULO II

Page 33: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

29

CAPÌTULO II. Elementos Digitales.CAPÌTULO II. Elementos Digitales.CAPÌTULO II. Elementos Digitales.CAPÌTULO II. Elementos Digitales.

ResumenResumenResumenResumen....

En este capitulo se presentan de forma individual todos los elementos que se encuentran

a nuestro alcance para el diseño de nuestros sistemas mejor conocidos como Flip-flops,

así como las características de cada uno, como lo son comportamiento y desempeño de

estos. También se muestra la configuración de los registros de corrimiento donde cada

registro consta de una cadena de flip-flops conectados en cascada, ya que estos son el

principio del diseño de nuestro proyecto.

2.1 2.1 2.1 2.1 Elementos biestablesElementos biestablesElementos biestablesElementos biestables

El circuito lógico secuencial es aquel cuyas salidas dependen no solo de sus entradas

actuales, sino también de la secuencia pasada de entradas, el más sencillo consiste de un

par de inversores que forman un lazo de retroalimentación, como se muestra en la figura

2.1. No tiene entradas y tiene dos salidas Q y Q_L.

Figura 2.1. un par de inversores formando un elemento biestable.

Análisis digital. El circuito de la figura 2.1 se denomina con frecuencia un biestable, puesto

que un análisis estrictamente digital muestra que tiene dos estados estables. Si Q es

ALTO, entonces el inversor inferior tienen una entrada en ALTO y una salida en BAJO, lo

que fuerza al nivel ALTO la salida del inversor superior, pero si Q esta en BAJO, entonces

el inversor inferior tienen una entrada en BAJO y una salida en ALTO, lo que fuerza Q a

BAJO, en situación estable. Podríamos utilizar una variante de estado simple, el estado de

la señal A, para describir el estado del circuito; existen dos estados posibles, Q=0 y Q=1.

Page 34: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

30

El elemento biestable es tan simple que no tiene entradas y por consiguiente no hay

manera de controlar o modificar su estado, cuando se aplica inicialmente la energía al

circuito, llega aleatoriamente a un estado al otro y se mantiene ahí permanentemente.

2.1.1 Latchs y Flip2.1.1 Latchs y Flip2.1.1 Latchs y Flip2.1.1 Latchs y Flip----FlopsFlopsFlopsFlops

Los latchs y flip-flop son los bloques de construcción básicos de la mayoría de los circuitos

secuénciales. Los sistemas digitales típicos hacen uso de latchs y flip-flops que son

dispositivos preencapsulados, específicos funcionalmente en un circuito integrado

estándar. En ambientes de diseño ASIC, los latchs y flip-flops son por lo regular celdas

predefinidas especificadas por el vendedor de ASIC. Sin embargo, dentro de un CI o ASIC

estándar, cada latch o flip-flop se diseña típicamente como si fuera un circuito secuencial

de retroalimentación (utiliza compuertas lógicas individuales y lazos de retroalimentación

para obtener memoria en un circuito lógico).

Los diseñadores digitales utilizan el nombre de flip-flop (elemento biestable) para un

dispositivo secuencial que normalmente muestra sus entradas y cambia sus salidas

solamente en ocasiones determinadas por una señal de reloj. Por otra parte, la mayoría de

los diseñadores utilizan el nombre de latch para un dispositivo secuencial que monitorea

todas sus entradas continuamente y modifica sus salidas en cualquier momento, de

manera independiente de una señal de reloj.

Debido a los comportamientos funcionales de los latchs y filp-flops estos son bastante

diferentes es importante saber cual tipo esta siendo empleado en un diseño como a

continuación se describen los tipos de latchs y flip-flops: [4]

• Latch S-R

• Latch S-R con habilitacion

• Latch D

• Flip-flop D con disparo de flanco

• Flip-flop D con disparo de flanco con habilitación

• Flip-flop de exploracion

• Flip-flop S/R (maestro/esclavo)

• Flip-flop J/K maestro/esclavo

Page 35: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

31

• Flip-flop J/K con disparo de flanco

• Flip-flop tipo T (toggle – Conmutación)

2.1.2 Latch S2.1.2 Latch S2.1.2 Latch S2.1.2 Latch S----R.R.R.R.

Un latch S-R (set-reset, establecimiento-restablecimiento) basado en compuertas NOR se

ilustra en la figura 2.2(a). El circuito tiene dos entradas, S y R, y dos salidas, etiquetadas

como Q y QN, donde QN es normalmente el complemento de Q. La señal QN se

representa en ocasiones como Q o Q_L.

(a) (b) (c)

Figura 2.2 Latch S-R (a) Diseño del circuito, (b) Tabla de funcion del circuito y (c)

funcionamiento tipico del match S-R

Si tanto R como R son 0, el circuito se comporta como el elemento biestable: tendremos

un lazoo de retroalimentación que retiene uno o dos estados lógicos, Q=0 o Q=1, como se

muestra en la figura 2.2(b), tanto S como R pueden ser asertivas para forzar al alzo de

retroalimentación a un estado deseado. S establece o preestablece la salida Q a 1; R

restablece o limpia la salida Q a 0. Después de que la entrada S o R es negada, el latch

permanece en el estado al cual fue forzado. La figura 2.2 (c) ilustra el comportamiento

funcional de un latch S-R para una secuencia típica de entradas.

La figura 2.3 define los parámetros de temporizacion para un latch S-R. El retardo de

propagación es el tiempo que le toma a una transición en una señal de entrada producir

una transición en una señal de salida. Un latch o flip-flop dados pueden tener varias

especificaciones de retardo de propagación diferentes, una para cada par de señales de

entrada y salida. Tambien el retardo de propagación puede ser diferente dependiendo si la

salida implica una transición BAJO a ALTO en S puede ocasionar una transición BAJO a

ALTO en Q, de modo que se presenta un retardo de propagación ( )SQpLHt , como se

Page 36: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

32

muestra en la transición 1 de la figura 2.3. De manera semejante, una transición de BAJO

a ALTO en R puede provocar una transición ALTO a BAJO en Q, con un retardo de

propagación ( )RQpHLt como se muestra en la transición 2. En la figura 2.3 no se muestran

las transiciones correspondientes a QN, que tendrían retardos de propagación ( )SQNpHLt y

( )RQNpHLt [4].

Figura 2.3 Parámetros de temporizacion para un match S-R (resultados realizados en el

software de Max plus II – Altera)

2.1.2 Latch 2.1.2 Latch 2.1.2 Latch 2.1.2 Latch RS − ....

Un latch con entradas de establecimiento y restablecimiento de nivel activo bajo puede

construirse a partir de compuertas NAND como se ilustra en la figura 2.4(a). Como se

muestra en la tabla de función, en la figura 2.4(b). El funcionamiento del latch RS − es

semejante al del S-R, con dos principales diferencias. La primera, RyS son de nivel

Page 37: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

33

activo bajo, de modo que el latch recuerda su estado anterior cuando 1== RS . En

segundo lugar, cuando S como R son afirmadas de manera simultanea, ambas salidas

del latch se van a 1 no a 0 como en el latch RS − .exceptuando estas diferencias, el

funcionamiento del S-R es el mismo del RS − , incluyendo las consideraciones de

temporizacion [4].

(a) (b) (c)

Figura 2.4 Latch RS − : (a) Circuito diseñado con compuerta NAND, (b) Tabla de

funcionamiento y (c) símbolo lógico

2.1.4 Latch S2.1.4 Latch S2.1.4 Latch S2.1.4 Latch S----R con habilitación.R con habilitación.R con habilitación.R con habilitación.

Un latch S- R o un latch RS − es sensible a sus entradas S y R en todo momento. Sin

embargo, puede ser fácilmente modificado para crear un dispositivo que sea sensible a

estas entradas solamente cuando una entrada C de habilitación sea afirmada. Un latch S-

R con habilitación de esta clase se muestra en la figura 2.5 (a); misma que presenta la

tabla de funciona mediante la cual, el circuito se comporta como un latch S-R cuando C es

1, retiene su estado anterior cuando C es 0. El comportamiento del latch para un conjunto

típico de entradas se muestra en la figura 2.6. Si tanto S como R son 1 cuando C cambia

de 1 a 0, el circuito se comporta como un latch S-R en el cual S y R son negadas

simultáneamente y por tanto la salida es impredecible [4].

Figura 2.5 Latch S-R con habilitación: (a) diseño del circuito (b) tabla de funcionamiento y

(c) símbolo lógico.

Page 38: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

34

Figura 2.6 Funcionamiento típico de un match S-R con habilitación.

2.1.5 Latch D.2.1.5 Latch D.2.1.5 Latch D.2.1.5 Latch D.

Con frecuencia necesitamos latchs simplemente para almacenar bits de información: cada

bit es presentado en un alinea de señal, y nos gustaría almacenarlo en alguna parte; para

este tipo de aplicación esta el latch tipo D como se puede observar en la figura 2.7(a), su

diagrama lógico se reconoce como el de un latch S-R con habilitacion, con un inversor

agrgado para generar entradas S y R a partir de la entrada simple (de datos) D. Esto

elimina la situación en los latch S-R, donde S y R pueden afirmarse de manera

simultanea. Al entada de control de un latch D, etiquetada como C en el inciso c de la

figura 2.7, se llama en ocasiones ENABLE o CLK y es de nivel activo bajo en algunos

diseños del uso del latch D [4].

(a) (b) (c)

Figura 2.7. Latch D: (a) Diseño del circuito, (b) tabla de funcionamiento y (c) símbolo

logico.

El comportamiento funcional del latch D se muestra en la figura 2.8. Cuando la entrada C

es afirmativa (valor 1 logico), la salida Q sigue la entrada D; en esta situación se dice que

el latch esta “abierto” y la trayectoria desde la entrada D hasta la salida Q es

“transparente”; el circuito se denomina con frecuencia un latch transparente por esta

Page 39: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

35

razón, cuando la entrada C es negada, el latch se “cierra”; la salida Q retiene su ultimo

valor y ya no cambia en respuesta a D, mientras que C permanece negada.

Figura 2.8.- Comportamiento funcional de un match D

El comportamiento de temporizacion mas detallado se muestra en la figura 2.9. Cuatro

diferentes parámetros de retardo se ilustra para señales que se propagan desde la

entrada C o D hasta la salida Q. Por ejemplo, para las transiciones 1 y 4 el latch se

encuentra inicialmente “cerrado” y la entrada D es la opuesta de la salida Q, de modo que

cuando C tiende a 1 el latch “se abre” y la salida Q cambia después del retardo ( )CQpLHt o

( )CQpHLt . Para las transiciones 2 y 3 la entrada C ya es 1 y el latch se encuentra ya abierto,

de modo que Q sigue de manera transparente las transciones en D con retardo ( )DQpHLt y

( )DQpLHt [4].

Figura 2.9. Parámetros de temporizacion para un match tipo D

2.1.5.1 Flip2.1.5.1 Flip2.1.5.1 Flip2.1.5.1 Flip----flop D con disparo de flanco flop D con disparo de flanco flop D con disparo de flanco flop D con disparo de flanco

Un flipflipflipflip----flop disparado con flanco positivoflop disparado con flanco positivoflop disparado con flanco positivoflop disparado con flanco positivo combina un par de latchs D como se ilustra en la

figura 2.10(a) para crear un circuito que muestrea su entrada D y cambia sus salidas Q y

QN solo para el flanco ascendente de una señal de reloj (CLK) de control. El primer latch

se conoce como el maestro; se abre y sigue la entrada cuando CLK es 0, cuando CLK

Page 40: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

36

sube a 1, el latch maestro se cierra y su salida se transfiere al segundo latch conocido

como el esclavo. El match esclavo se encuentra abierto todo el tiempo que CLK es 1, que

solamente cambia al principio de este intervalo, porque el maestro esta cerrado y sin

modificaciones durante el resto del intervalo [4].

(a) (b) (c)

Figura 2.10 Flip-flop tipo D disparado con flanco positivo: (a) diseño del circuito, (b) tabla

de funcionamiento y (c) Símbolo logico.

El inversor en la entrada del reloj de los flip-flop D indica un comportamiento de disparo de

flanco y se denomina indicador de entrada dinámica. En la figura No 2.11 se muestra el

comportamiento funcional del flip-flop para diversas transiciones de entrada, donde la

señal QM es la salida del match maestro. Nótese que QM cambia solamente cuando el

reloj es 0, cuando se va a 1, el valor actual de QM se transfiere a Q y se evita que QM

cambie hasta que el reloj regresa de nuevo al valor de 0.

Figura 2.11 Comportamiento funcional de un flip-flop D disparado con flanco positivo.

Page 41: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

37

En la figura No 2.12 se muestra un comportamiento de temporizacion mas detallado para

el flip-flop D. todos los retardos de propagación se miden desde el flanco ascendente del

reloj puesto que se es el único evento que ocasiona un cambio en la salida. Los diferentes

retardos pueden especificarse para cambios de salida BAJO a ALTO y ALTO a BAJO.

Figura 2.12 comportamiento de temporizacion de un flip-flop tipo D disparado por flanco

positivo

Como un latch tipo D, el flip-flop D disparado por flanco tiene una ventana de tiempos de

establecimiento y de retención durante los cuales las entradas D no deben cambiar. Esta

ventana se presenta en torno del flanco de disparo del reloj, y se indica mediante un

sombreado en la figura 2.12. Si los tiempos de establecimiento y retención no se

satisfacen, la salida del flip-flop por lo regular se ira a un estado estable, aunque

impredecible, de 0 a 1.

Un flip-flop D disparado con flanco negativo simplemente invierte la entrada de reloj, de

modo que toda la acción se desarrolla sobre el flanco descendente del reloj (CLK_L) por

convención, un disparador de flanco descendente se considera como de nivel activo bajo.

La tabla de función y el símbolo lógico de flip-flop se muestran en la figura 2.13. Algunos

flip-flops D tienen entradas asincrónicas que se pueden utilizar para llevar al fli-flop a un

estado particular, independiente de las entradas del reloj y de la entrada del flip-flop (D).

Estas entradas, generalmente se identifican como PR (present-preestablecido) y CLR

(clear-borrado), se comportan como las entradas de establecimiento y restablecimiento en

un latch S-R.

Page 42: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

38

(a) (b) (c)

Figura 2.13 Flip-flop tipo D disparado con flanco positivo: (a) diseño del circuito, (b) tabla

de funcionamiento y (c) Símbolo logico.

El símbolo lógico y el circuito NAND para un flip-flop D disparado por flanco con entradas

como se ilustra en la figura anterior. aunque la entradas asincrónicas son utilizadas por

algunos diseñadores lógicos para realizar funciones secuenciales difíciles, se reservan

mejor para propósitos de inicialización y prueba, para forzar un circuito secuencial a un

estado de inicio conocido [4].

2.1.5.2 Flip2.1.5.2 Flip2.1.5.2 Flip2.1.5.2 Flip----flop D con dispara de flanco con de habilitación.flop D con dispara de flanco con de habilitación.flop D con dispara de flanco con de habilitación.flop D con dispara de flanco con de habilitación.

Una función comúnmente deseada, en los flip-flops D es la habilidad para mantener el

ultimo valor almacenado, mas que cargar un nuevo valor, durante el flanco de reloj. Esto

se cumple al agregar una entrada de habilitación, llamada EN o CE (clock enable-

habilitación de reloj). Mientras que el nombre de “habilitación de reloj” es descriptivo, la

función de entrada extra extra es obtenida en lo absoluto controlando el reloj de aluna

manera. En vez de ello, como se muestra en la figura 2.14(a), un multiplexor de 2 entradas

controla el valor aplicado a la entrada D del flip-flop interno. Si EN es afirmada, la entrada

D externa se selecciona; si EN es negada, se utiliza la salida actual del flip-flop. La tabla

de función resultante se muestra en la figura 2.14(b). El símbolo del flip-flop se ilustra en la

figura 2.14(c); en algunos flip-flops, la entrada de habilitación es de nivel activo bajo,

denotada mediante una burbuja de inversión en esta entrada [4].

Page 43: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

39

(a) (b) (c)

Figura 2.14: Flip-flop tipo D disparado con flanco de habilitación: (a) diseño del circuito, (b)

tabla de funcionamiento y (c) Símbolo lógico.

2.2 Registros de corrimiento 2.2 Registros de corrimiento 2.2 Registros de corrimiento 2.2 Registros de corrimiento

Un registro de corrimiento es un registro de n bits con una disposición para recorrer

información binaria ya sea a la derecha o a la izquierda. La configuración lógica de un

registro con corrimiento consta de una cadena de flip-flops conectados en cascada, con la

salida de un flip-flop conectada a la entrada del siguiente flip-flop. Todos los flip-flops

reciben un pulso común de reloj que causa el corrimiento de una etapa a la siguiente.

La figura 2.15(a) muestra la estructura de un registro de corrimiento de cuatro bits que es

usado para desplazar el contenido de un bit una posición a la derecha. Los bits de los

datos son cargados en el registro de corrimiento usando la entrada (IN) que

posteriormente aparecerá en la salida (OUT), por lo que se denomina a este tipo de

registro de corrimiento registro de entrada serie y salida serie. El contenido de cada flip-

flop es transferido al siguiente flip-flop con cada filo positivo del reloj. Una manera de

observar la transferencia de información se encuentra en la figura 2.15b, el cual muestra

que pasa cuando los valores de las señales de entrada durante ocho consecutivos ciclos

de reloj son 1,0,1,1,1,0,0,0 asumiendo que el estado inicial de todos los flip-flop es cero.

(a)

Page 44: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

40

(b)

Figura 2.15 Registro de corrimiento simple: (a) Estructura de un registro de corrimiento de

cuatro bits y (b) Tabla de funcionamiento

Un registro de corrimiento de entrada serie y salida paralelo, es mostrado en la figura

2.16, tiene salidas para todos sus bits almacenados, haciéndolos quedar disponibles para

todos los circuitos. A la inversa, es posible construir un registro de corrimiento de entrada

en paralelo y salida serie. La figura 2.17 ilustra la estructura general de un dispositivo de

esta naturaleza. Para cada filo de reloj el registro carga nuevos datos de las entradas 1D

hasta ND o recorre su contenido actual, dependiendo del valor de la entrada de control

Load/Shift. Internamente, el dispositivo utiliza un multiplexor de dos entradas en cada

entrada D del Flip-flop para seleccionar entre los dos casos. Un registro de corrimiento de

entrada en paralelo y salida serie puede ser empleado para realizar conversión paralelo a

serie. Caso contrario el registro de corrimiento de entrada serie y salida paralelo pueden

ser empleados para efectuar conversión serie a paralelo.

En los sistemas de computación es necesario a menudo la transferencia de artículos n-bits

de datos. Esto es posible hacerlo transmitiendo todos los bits inmediatamente usando n

uniones separadas, en cuyo caso decimos que se trata de una transferencia en paralelo.

Pero también es posible transferir todos los bits usando una simple unión, para realizar la

transferencia de un bit a la vez, en n consecutivos ciclos de reloj; nosotros nos referimos a

este esquema con transferencia serial. Para transferir serialmente un articulo de n-bits de

datos, usamos un registro de corrimiento que pueda ser cargado con todos los n bits en

paralelo (en un ciclo de reloj). Así que durante el siguiente n ciclo de reloj, el contenido del

registro puede ser desplazado para la transferencia serial. Si los bits son recibidos

serialmente, después del n ciclo de reloj el contenido del registro puede ser consultado en

paralelo como un articulo de n-bits.

Page 45: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

41

Figura 2.16. Registro de corrimiento de entrada serie, salida paralelo

Figura 2.17. Regisitro de corrimiento en entrada paralelo, salida serie

En la figura 2.18 muestra un registro de corrimiento de cuatro bits que permite el acceso

en paralelo. En cambio de usar una conexión de un registro de corrimiento normal, la

entrada de D de cada flip-flop es conectado en dos diferentes fuentes. Una de las cuales

es el flip-flop precedente, el cual es necesario para la operación de corrimiento del

registro. La otra fuente es la entrada externa que corresponde al bit que será cargado en

el flip-flop como una parte de la operación de carga en paralelo. La señal de control

Load/Shift es usada para seleccionar el modo de operación. Si Load/Shift = 0, el circuito

opera como un registro de corrimiento. Si Load/Shift = 1, la entrada paralela de datos es

cargada en el registro. En ambos casos la acción es tomada con el filo positivo del ciclo de

reloj.

Page 46: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

42

Figura 2.18. Registro de corrimiento acceso paralelo

2.2.2.2.2.1 2.1 2.1 2.1 Aplicaciones de los registros de corrimiento.Aplicaciones de los registros de corrimiento.Aplicaciones de los registros de corrimiento.Aplicaciones de los registros de corrimiento.

Son múltiples las aplicaciones de los registros de corrimiento que no terminaríamos de

explicar todos en esta tesis, esto depende de la aplicación que deseé el diseñador en

cuanto a la implementación de sus diseños; por lo cual solo explicaremos unas cuantas

aplicaciones recordando que no es el objetivo de esta tesis explicarlos.

Conversión serie/paralelo

La aplicación más común de los registros de corrimiento es convertir datos en paralelo al

formato serie para transmisión o almacenamiento, así como la conversión de datos serie

de vuelta al formato en paralelo para procesamiento o exhibición. El más común en la

transmisión de datos en serie entre dos módulos (equipos de conmutación), es en la

telefonía digital (figura 2.19). Normalmente se conectan tres señales entre un modulo

fuente y un modulo de destino para llevar acabo la transferencia.

• Reloj: La señal de reloj proporciona la referencia de temporizacion para

transferencias, definiendo el tiempo para transferir un bit. Este reloj en sistemas de

dos módulos puede ser parte de los circuitos de control.

Page 47: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

43

• Datos en serie. Loas datos mismos se transmiten en una sola línea.

• Sincronización. Un pulso de sincronización (pulso de sincronía) proporciona un

punto de referencia para definir el formato de los datos, tal como el principio de un

byte o palabra en el flujo de datos serie. Algunos sistemas omiten esta señal y en

su lugar utilizan un patrón único sobre la línea de datos en serie para la

sincronización.

Figura 2.19. Un sistema que transmite datos de forma serial entre módulos.

La señal de reloj tiene un frecuencia de 2.408 MHz para permitir la transferencia de

32x8000 bytes de 8 bits por segundo. El pulso de 1 bit de ancho en la señal de

sincronización identifica el comienzo de un intervalo de 125µs llamado un cuadro. Un total

de 256 bits son transmitidos en los datos en serie durante este intervalo, el cual divide en

32 segmentos de tiempo conteniendo cada uno ocho bits. Cada segmento de tiempo

como las posiciones de bit dentro de un segmento de tiempo se localizan en relación al

pulso de sincronía.

2.2.2 Contadores de registro de corrimiento.2.2.2 Contadores de registro de corrimiento.2.2.2 Contadores de registro de corrimiento.2.2.2 Contadores de registro de corrimiento.

Un registro de corrimiento puede ser empleado con lógica combinacional para formar una

maquina de estado cuyo diagrama de estado sea cíclico. Un circuito de esta índole se

denomina contador de registro de corrimiento.

Page 48: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

44

2.2.2.1 2.2.2.1 2.2.2.1 2.2.2.1 Contador en anillo.Contador en anillo.Contador en anillo.Contador en anillo.

Un contador de registro de corrimiento mas sencillo utiliza un registro de corrimiento de n

bits para obtener un contador con n etapas, como indica la figura 2.20. La salida de Q de

la última etapa en el registro de corrimiento es retroalimentado como la entrada de la

primera etapa, el cual crea una estructura parecida a un anillo. Si un simple “1” es

introducido en el anillo, este será desplazado a través del anillo en sucesivos ciclos de

reloj. Por ejemplo, en una estructura de 4 bits, los posibles códigos serian 1000, 0100,

0010, 0001(Q0, Q1, Q2, Q3). Por lo que el circuito en la figura 2.20 es llamado así un

contador de anillo. Esta operación tiene que ser inicializada introduciendo un “1” en la

primera etapa. Se logra usando un señal de control de inicio. La cual preestablece el flip-

flop más a la izquierda a “1” y limpia los otros a cero. Asumimos que los cambios en el

valor de la señal de inicio ocurren cortamente después de activar un filo de reloj, así que

los parámetros de temporizacion del flip-flop no son violados.

Figura 2.20. Contador anillo de n-bits.

2.2.2.2 2.2.2.2 2.2.2.2 2.2.2.2 Contador JohnsonContador JohnsonContador JohnsonContador Johnson

Una interesante variación del contador de anillo es obtenida si en vez de la salida Q,

tomamos la salida Q de la ultima etapa y se retroalimenta a la primera etapa, como se

muestra en la figura 2.21, este circuito es conocido como un contador Jonson. Un

contador de n bits de este tipo genera una secuencia que cuenta una tamaño de 2n. Por

ejemplo, un contador de 4 bits produce la secuencia 0000, 1000, 1100, 1110, 1111,

0111,0001, 0000. Observe que en esta secuencia, solo un simple bit tiene un valor

diferente para dos códigos consecutivos. Para inicializar la operación del contador Jonson,

es necesario resetear todos los flip-flops, como se muestra en la figura. Observe que ni el

Page 49: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

45

contador de anillo ni el Johnson generaran la secuencia de conteo deseada si no se

inicializa apropiadamente.

Figura 2.21 Contador Johnson.

2.3 Registro de Corrimiento Retroalimentado (FSR 2.3 Registro de Corrimiento Retroalimentado (FSR 2.3 Registro de Corrimiento Retroalimentado (FSR 2.3 Registro de Corrimiento Retroalimentado (FSR ---- FEEDBACK FEEDBACK FEEDBACK FEEDBACK

SHIFT REGISTER).SHIFT REGISTER).SHIFT REGISTER).SHIFT REGISTER).

Las secuencias de los registros de corrimiento se usan tanto en criptografía como en

teoría de codificación. Un registro de corrimiento retroalimentado FSR (feeback shift

register) está constituido por dos partes: un registro de corrimiento y una función de

retroalimentación [19]. El registro de corrimiento está constituido de unidades de

almacenamiento de un bit, por lo que puede decirse que un registro de corrimiento es una

secuencia de bits. La longitud del registro depende de la cantidad de unidades de

almacenamiento o etapas que éste contenga, un registro que tiene longitud L consiste en

L etapas numeradas desde 0 hasta L-1. El registro de corrimiento retroalimentado, tiene

una entrada, una salida y una entrada de reloj que controla el flujo de datos. Durante cada

unidad de tiempo se realizan las siguientes operaciones:

1) El bit de la etapa cero es la salida del registro y forma parte de la secuencia de

salida.

2) El contenido de la etapa iiii se traslada a la etapa 1-i , 1Li1 −−−−≤≤≤≤≤≤≤≤ ; y

3) El nuevo contenido de la etapa L-1 es el bit de retroalimentación

)s..,,.........s,s(fS Lj2j1jj −−−−−−−−−−−−==== , donde la función de retroalimentación f es una

función booleana y ijs −−−− es el contenido de la etapa anterior denominado como

i-L , Li1 ≤≤≤≤≤≤≤≤ .

Si el contenido inicial de la etapa i es {{{{ }}}}1,0s i ∈∈∈∈ para cada 1Li0 −−−−≤≤≤≤≤≤≤≤ , entonces

Page 50: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

46

[ 011L s,s..,,.........s −−−− ] es llamado el estado inicial del FSR.

En la figura 2.22 se muestra un FSR, si la función f es una función lineal, entonces el

FSR es un LFSR (Linear Feeback Shift Register). De otra forma da lugar a un NLFSR

(NonLinear Feeback Shift Register) [17].

Si la función de retroalimentación f de un FSR puede ser escrito como:

)SC..........SC()s..,,.........s,s(f LjL1j1Lj2j1j −−−−−−−−−−−−−−−−−−−− ⊕⊕⊕⊕⊕⊕⊕⊕==== en cada unidad de tiempo,

entonces el FSR se dice que es lineal, donde L21 C,..........C,C son los coeficientes de

retroalimentación, y ⊕⊕⊕⊕ denota la suma modulo 2 [19].

)S.....,,.........S,S(f Lj2j1j −−−−−−−−−−−−

Etapa

L-1

Etapa

L-2

Etapa

1

Etapa

0

1jS −−−− 2jS −−−− 1LjS ++++−−−− L j S −−−−jS

salida

)S.....,,.........S,S(f Lj2j1j −−−−−−−−−−−−

Etapa

L-1

Etapa

L-2

Etapa

1

Etapa

0

1jS −−−− 2jS −−−− 1LjS ++++−−−− L j S −−−−jS

salida

Figura 2.22 FSR (Registro de Corrimiento con Retroalimentación).

2.4 LFSR (Registro de Desplazamiento con2.4 LFSR (Registro de Desplazamiento con2.4 LFSR (Registro de Desplazamiento con2.4 LFSR (Registro de Desplazamiento con Retroalimentación Lineal). Retroalimentación Lineal). Retroalimentación Lineal). Retroalimentación Lineal).

Los registros de retroalimentación lineal producen una secuencia de 2n-1, donde n es el

número de etapas en el LFSR. El contenido del registro es recorrido a la derecha una

posición, por cada transición positiva en el reloj. Existe una retroalimentación producida

por una operación XOR o XNOR entre ciertas etapas; el resultado de esta operación es un

bit que se inserta a la izquierda del registro. Un registro que sea inicializado con solo

valores “1” no será conveniente debido a que si la función de retroalimentación es una

XNOR, el valor de este registro no cambiara y permanecerá en el mismo estado. Del

mismo modo no es conveniente que un registro sea inicializado con solo ceros cuando su

función de retroalimentación sea una XOR, debido a que el registro no cambiara de

estado. En estos dos casos los estados son ilegales debido a que el contador

permanecería en un solo estado (locked-up) [6][7].

Page 51: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

47

Por ejemplo, un LFSR de 4 bits produce una secuencia de 24 - 1 = 15 (el estado 1111 es

un estado ilegal, utilizando una función de retroalimentación XNOR). Por otra parte, un

contador binario ascendente de 4 bits produciría una secuencia de 24 = 16 con estados no

ilegales. Los contadores LFSR son muy rápidos ya que no usan señales de acarreo. Los

LFSR pueden remplazar a los contadores binarios convencionales en la realización de

aplicaciones críticas donde el contador de secuencia no es importante [7]. Los LFSR son

usados como generadores de seudosecuencias de flujo de bits. Además constituyen

importantes bloques en la implementación de algoritmos de cifrado y descifrado. Tomando

en consideración lo anterior denominamos lo siguiente [5]:

• La longitud del registro de corrimiento (N). Se refiere al grado y en general a la

longitud del registro de corrimiento, la duración más grande de la secuencia de

seudoruido antes de que esta se repita. Para un registro de corrimiento de

longuitud fija N, el número y la duración de las secuencias que pueden ser

generadas, son determinadas por el número y la posición de las etapas usadas

para generar el bit de retroalimentación.

• Etapas del registro de corrimiento. La combinación de etapas y su localización es

regularmente referido como un polinomio y expresado como:

( ) 731 xxxP ++=

Donde el primer “1” representa x0, el cual es la salida de la XOR y representa la ultima

etapa del registro. X3 es la salida del registro de la etapa 3 y x7 es la primera etapa de

registro y la salida del LFSR.

Un par de puntos se hacen notar acerca de los LFSR y el polinomio usado para

describirlos son:

• La última etapa del registro de corrimiento es el “1” y siempre es usado en

la trayectoria de retroalimentación del registro de corrimiento.

• El tamaño del registro de corrimiento puede ser deducido con el grado

mayor del polinomio.

• El grado mayor del polinomio es la salida del registro de corrimiento (etapa

0). Y se utiliza en el cálculo del bit de retroalimentación.

Page 52: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

48

• Secuencia de longitud máxima (L). La secuencia de longitud máxima para un

registro de longitud N se refiere a una m-secuencia y es definida como:

L = 2N-1

Los LFSR también tienen muchas variables a considerar como:

• El numero de etapas en el registro de corrimiento

• El numero de etapas en la trayectoria de retroalimentación

• La posición de cada etapa en el registro de corrimiento

• La condición inicial de inicio del registro de corrimiento.

2.5 2.5 2.5 2.5 Implementación de los LFSRImplementación de los LFSRImplementación de los LFSRImplementación de los LFSR

Hay dos estilos de implementaciones de los LFSR, la implementación de Galois y la

implementación de Fibonacci.

2.5.1 2.5.1 2.5.1 2.5.1 Implementación de Galois Implementación de Galois Implementación de Galois Implementación de Galois

Como se muestra en la figura No 2.23, el flujo de datos es de izquierda a derecha y la

trayectoria de retroalimentación es de derecha a izquierda. El incremento del polinomio es

de izquierda a derecha con el termino x0 (“1” en el polinomio) como el primer termino en el

polinomio. Este polinomio indica que etapas del registro de corrimiento son

retroalimentadas. La compuerta XOR esta en la trayectoria del registro de corrimiento, por

tanto, la implementación de Galois es también conocida como en línea, tipo modular o

LFSR tipo M [6].

Figura 2.23. Implementación de Galois

2.5.2 2.5.2 2.5.2 2.5.2 Implementación de FibonacciImplementación de FibonacciImplementación de FibonacciImplementación de Fibonacci

En la figura No 2.24 el flujo de los datos es de la izquierda a la derecha y la trayectoria de

retroalimentación es de derecha a izquierda, similar a la implementación de Galois. Sin

Page 53: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo II Elementos Biestables

49

embargo, la implementación de Fibonacci el polinomio decrementa de izquierda a derecha

con X0 como el último termino en el polinomio. Este polinomio es mencionado como un

polinomio de etapa reciproca y las etapas de retroalimentación son incrementados de la

derecha a al izquierda a lo largo del registro de corrimiento. La compuerta XOR es la

trayectoria de retroalimentación, por tanto, la implementación de Fibonacci es también

conocida como fuera de línea, tipo simple o LFSR tipo S [6].

Figura 2.24. Implementación de Fibonacci

Page 54: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CAPÍTULO III

Page 55: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

50

CAPÌTULO III. Sistemas criptográficos.CAPÌTULO III. Sistemas criptográficos.CAPÌTULO III. Sistemas criptográficos.CAPÌTULO III. Sistemas criptográficos.

ResumenResumenResumenResumen

Este capitulo nos brinda una introducción a los sistemas de encriptación, así como sus

características que determinan porque se denominan así y que elementos los pueden

componen como son los generadores de secuencias pseudoaleatorias esto con base para

la realización del cifrado de información, donde también estos deben cumplir con ciertas

propiedades para su desempeño optimo.

3.1 Cifrado de Flujo3.1 Cifrado de Flujo3.1 Cifrado de Flujo3.1 Cifrado de Flujo

Con el ingreso a la era de la información, el problema de la seguridad y autenticación de

datos ha comenzado a ser un aspecto inseparable de los sistemas de comunicación. Cada

vez una mayor cantidad de información es almacenada y transmitida por medios

electrónicos y por consiguiente están expuestas a ataques. La privacidad individual así

como también de las organizaciones depende de la posibilidad de proteger la información

de accesos no autorizados y modificación.

Los sistemas criptográficos proporcionan privacidad en la información por medio del uso

de transformaciones. En el transmisor el texto claro es transformado en el texto cifrado

bajo el control de una llave de cifrado, lo que provoca que esta información sea

incomprensible a otras personas. Solo el correcto receptor bajo el control de una llave de

descifrado, retransforma el texto cifrado en el texto claro.

Los sistemas criptográficos se dividen en aquellos que son de llave secreta o simétrica y

los de llave pública o asimétrica. En criptografía de llave pública o asimétrica, el transmisor

usa una llave públicamente conocida para enviar un mensaje al receptor. El receptor usa

una llave secreta para recobrar el texto claro. En criptografía de llave secreta, el

transmisor y receptor previamente acuerdan utilizar una llave privada que servirá para

cifrar y descifrar el texto claro. Esta llave debe permanecer en secreto para proteger el

texto claro en contra de posibles criptoanalistas [9][8].

Page 56: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

51

3.1.1 Estructura General.3.1.1 Estructura General.3.1.1 Estructura General.3.1.1 Estructura General.

Los sistemas criptográficos de llave simétrica se pueden dividir en cifrado de bloque y

cifrado de flujo. Cuando el cifrado opera en cada entidad del texto claro

independientemente, entonces estamos hablando de cifrado de bloque. El cifrado de

bloque es un cifrado de sustitución simple y debe hacerse a grandes porciones del texto

claro para prevenir ataques por fuerza bruta. El nombre de bloque es usado para limitar el

tamaño de la entidad de texto claro a cifrar. El cifrado de flujo, en contraste cifra cada

entidad de texto claro por medio de una función booleana, donde la frecuencia de reloj

gobierna los estados internos del cifrador de flujo. Para este principio de cifrado, la entidad

de texto claro no necesita ser grande, ya que se cifra bit a bit los datos de éste. Después

de que cada bit es cifrado el cifrador de flujo cambia de estado de acuerdo a algún tipo de

regla. Por consiguiente, dos ocurrencias del mismo carácter del texto claro usualmente no

resultan en el mismo carácter del texto cifrado.

Para obtener una clara distinción entre cifrado de bloque y cifrado de flujo, se puede usar

el criterio de memoria que se presenta a continuación [10].

c1

cn

Dispositivo

sin

memoria

K

m1

mn

Dispositivo

sin

memoria

K

m1

mn

Cifrado Descifrado

c1

cn

Dispositivo

sin

memoria

K

m1

mn

Dispositivo

sin

memoria

K

m1

mn

Cifrado Descifrado

Figura 3.1 Cifrado de Bloque.

Generador

de

secuencias

pseudoaleatorias

K

mj cj

sj

Generador

de

secuencias

pseudoaleatorias

K

mj

sj

Cifrado Descifrado

Generador

de

secuencias

pseudoaleatorias

K

mj cj

sj

Generador

de

secuencias

pseudoaleatorias

K

mj

sj

Cifrado Descifrado

Figura 3.2 Cifrado de Flujo.

Page 57: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

52

Un cifrador de bloque (figura 3.1) es un dispositivo sin memoria, que transforma un bloque

del texto claro [[[[ ]]]]n1 m,........,mm ==== bajo el control de una llave K K K K en un bloque de texto

cifrado [[[[ ]]]]n1 c,........,cc ==== , donde el alfabeto del texto en claro y el alfabeto del texto cifrado

usualmente es el mismo. Un cifrador de flujo (figura 3.2) es un dispositivo con memoria

interna, que transforma el ésimo-j dígito de jm de la cadena del texto claro en el

ésimo-j dígito jc de la cadena del texto cifrado, por medio de una función que depende

de la llave secreta KKKK y del estado interno del cifrador de flujo en el tiempo jjjj.

El cifrado de flujo como se muestra en la figura 3.2 puede realizarse por medio de

generadores de secuencias pseudoaleatorias, los cuales usan una función f y una llave,

que es generalmente la semilla usada en el conjunto inicial de estados del generador. Por

medio de esta secuencia pseudoaleatoria cada bit del texto claro se cifra usando una

función booleana, por ejemplo una XOR [8].

3.1.2 V3.1.2 V3.1.2 V3.1.2 Ventajas del cifrado de flujo sobre el cifrado de bloque.entajas del cifrado de flujo sobre el cifrado de bloque.entajas del cifrado de flujo sobre el cifrado de bloque.entajas del cifrado de flujo sobre el cifrado de bloque.

Muchos servicios de transmisión de datos manejan grandes cantidades de información.

Por eso se necesita de mecanismos de cifrado que operen en comunicaciones de alta

velocidad. Con la tecnología actual las realizaciones de cifradores de flujo en hardware

parecen ser la mejor opción para cifrar grandes cantidades de información, y son

compatibles con redes de alta velocidad.

Los Criptosistemas de cifrado de flujo pueden operar a frecuencias muy altas, y son

mucho más rápidos que los criptosistemas de cifrado de bloque. Ya que la secuencia

pseudoaleatoria puede generarse independientemente del texto claro y del texto cifrado,

estos generadores tienen la ventaja de que la secuencia cifrante (pseudoaleatoria) puede

generarse casi al mismo instante del cifrado o el descifrado, con solo una sencilla

combinación de estados del generador mientras el texto claro o el texto cifrado se

procesan [9].

Para una llave KKKK fija, el cifrado de bloque puede transformar bloques idénticos de mensaje

en bloques idénticos de texto cifrado. Esto permite a un observador activo, en la

transmisión insertar, borrar o retransmitir bloques del texto cifrado previamente grabados,

a menos que sea empleado un protocolo adicional que controle la secuencia de bloques

Page 58: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

53

del mensaje. De la misma forma el cifrado en bloque permite a un observador pasivo

buscar marcas en el texto cifrado, es decir que bajo el control de una llave fija, diferentes

ocurrencias de un mismo bloque de texto claro, siempre resultarán en el mismo texto

cifrado. Esta es una amenaza seria cuando entidades de información fija (tales como

registros de sueldos) son considerados como bloques de texto claro, por eso la llave debe

ser lo más grande posible para evitar ocurrencias en el texto cifrado.

En cambio ya que el cifrado de flujo cifra bit a bit por medio de una función que depende

de la llave secreta y del estado interno del cifrador de flujo en un instante dado, previene

borrado, inserción o retransmisión del texto cifrado, además de búsquedas de marcas en

el texto cifrado.

El uso del cifrado de flujo es la mejor opción cuando el espacio de almacenamiento es

limitado debido a que no se necesita guardar la secuencia cifrante ya que se genera en el

instante que se va a procesar (cifrar o descifrar) la información. Además la semilla, que es

el conjunto de estados inicial del generador, es mucho más pequeña que la secuencia

cifrante generada. Debido a que el cifrado de flujo cifra bit a bit se considera un método

adecuado cuando los caracteres deben procesarse individualmente y recibirse de la

misma forma. También debido a su memoria interna y a que utiliza transformaciones no

lineales son en general difíciles de analizar.

También es adecuado el método de cifrado de flujo cuando el error de transmisión tiene

una probabilidad alta. Como el cifrado se ejecuta bit a bit, lo cual lo hace independiente de

cada elemento, el cambio de un solo bit no afecta al descifrado de forma relevante.

3.2 Generadores de secuencias pseudoaleatorias.3.2 Generadores de secuencias pseudoaleatorias.3.2 Generadores de secuencias pseudoaleatorias.3.2 Generadores de secuencias pseudoaleatorias.

En 1917, G. Vernam diseñó un criptosistema perfecto, según el criterio de Shannon

denominado one-time pad, en el cual la llave secreta es una secuencia de bits generada

de forma aleatoria. El mensaje de longitud n se cifra por medio de una operación XOR del

mismo mensaje con la llave secreta de la misma longitud, para formar el texto cifrado.

Posteriormente se descifra por medio de la función XOR entre el texto cifrado y la llave

secreta.

Page 59: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

54

Si la llave K se produce por una fuente binaria simétrica, tal que la probabilidad de que se

genere un cero o un uno sea 21

, independientemente de los bits anteriores, entonces se

dice que el one-time pad es perfectamente seguro ante un ataque al texto cifrado, en

donde el criptoanalista no tiene conocimiento del texto en claro. Este método de cifrado

presenta el inconveniente de que la llave tiene que ser tan grande como el propio

mensaje. Evidentemente, un sistema de este tipo carece de utilidad práctica en la mayoría

de los casos, por eso muchos sistemas de cifrado operan como una versión aproximada

del one-time pad, usando grandes secuencias de bits pseudoaleatorios generados a partir

de una llave secreta corta. Los bits parecen ser aleatorios, pero ellos son reproducibles, e

incluso tienen una longitud de periodo limitado [11].

3.2.1 Seguridad en los generadores de secuencias pseudoaleatorias.3.2.1 Seguridad en los generadores de secuencias pseudoaleatorias.3.2.1 Seguridad en los generadores de secuencias pseudoaleatorias.3.2.1 Seguridad en los generadores de secuencias pseudoaleatorias.

En general se pueden formular tres requerimientos para los generadores de secuencias

criptográficamente e idealmente seguros [11] [12].

1) El periodo de la secuencia pseudoaleatoria debe ser lo suficientemente grande para

cifrar el texto claro.

2) Los bits de salida deben ser fáciles de generar.

3) Que la secuencia sea impredecible. Debe ser computacionalmente irrealizable

predecir cual será el siguiente bit aleatorio conociendo de antemano el algoritmo o el

hardware que genera la secuencia y todos los bits previos.

Una secuencia criptográficamente segura no podrá ser comprensible a menos que se

conozca la llave. La llave es generalmente la semilla usada en el conjunto inicial de

estados del generador.

3.2.2 Tipos de generadores de secuencias pseudoaleatorias.3.2.2 Tipos de generadores de secuencias pseudoaleatorias.3.2.2 Tipos de generadores de secuencias pseudoaleatorias.3.2.2 Tipos de generadores de secuencias pseudoaleatorias.

Dependiendo de los parámetros que se empleen para calcular el valor de cada porción de

la secuencia [13] [14], los generadores que se emplean como cifrado de flujo pueden

dividirse en dos grandes grupos:

Page 60: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

55

• Generadores Sincrónicos. Un generador sincrónico es aquel en el cual la

secuencia pseudoaleatoria se genera independientemente del texto claro y el

texto cifrado [8].

• Generadores Asincrónicos. Un generador asincrónico es aquel en el cual la

secuencia pseudoaleatoria de salida se genera como una función de la llave y un

número t fijo de dígitos previos del texto cifrado [13] [14].

3.3 Propiedades de las secuencias pseudoaleatorias.3.3 Propiedades de las secuencias pseudoaleatorias.3.3 Propiedades de las secuencias pseudoaleatorias.3.3 Propiedades de las secuencias pseudoaleatorias.

Se han hecho grandes esfuerzos para producir buenas secuencias pseudoaleatorias en

computadora [12]. También se han hecho discusiones acerca de muchos generadores

existentes en la literatura académica, junto con muchas pruebas de aleatoriedad. Todos

estos generadores tienen periodicidad, pero con periodos de más de 2256 bits pueden

usarse para diversas aplicaciones.

El problema de producir buenas secuencias pseudoaleatorias es que no se tiene una

función de autocorrelación ideal, lo que implica deficientes propiedades estadísticas para

uso criptográfico. Bajo ciertas condiciones estos generadores de secuencias

pseudoaleatorias van a provocar una vulnerabilidad en el sistema que se está soportando.

Los cifradores de flujo juegan un papel muy importante en la protección de

comunicaciones a muy altas frecuencias, como transmisión de información a través de

Internet de banda ancha, transmisiones satelitales, transmisiones por fibra óptica,

transmisiones por microondas, etc. El problema central de los cifradores de flujo es la

dificultad de generar a partir de una llave corta secuencias cifrantes binarias de periodo

grande y que sean aleatorias. Un generador produce una secuencia pseudoaleatoria si

esta tiene la siguiente propiedad:

Ser impredecible. Debe ser computacionalmente irrealizable predecir cuál será el

siguiente bit aleatorio conociendo de antemano el algoritmo que genera la secuencia y

todos los bits previos [12].

Page 61: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

56

Una secuencia criptográficamente segura no podrá ser comprensible a menos que se

conozca la llave. La llave es generalmente la semilla usada en el conjunto inicial de

estados del generador.

3.3.1 Postulados de Golomb.3.3.1 Postulados de Golomb.3.3.1 Postulados de Golomb.3.3.1 Postulados de Golomb.

Una de las primeras formulaciones de las reglas básicas de las secuencias

pseudoaleatorias periódicas fueron proporcionadas por Golomb y estas tres reglas se

conocen como los postulados de Golomb [9] [10] [13].

La diferencia en el número de unos y ceros dentro de cada periodo de la secuencia no

debe exceder a la unidad.

En todo el periodo, )(1/2i es el número de i-gramas (del total de gramas en todo el

periodo) de longitud i. Es decir el número de gramas de longitud 1 en todo el periodo debe

ser la mitad del total de gramas, un cuarto del total de gramas debe tener longitud 2, un

octavo debe tener longitud 3 etc.

La función de autocorrelación AC(k) fuera de fase es constante para todo valor k. La

condición es que para que una secuencia sea aleatoria la función de autocorrelación sea

una delta de Dirac [14].

Una secuencia que satisfaga los tres postulados de Golomb puede definirse como una

secuencia-pn, donde pn se entiende por pseudoruido (pseudo-noise). Sin embargo, es

claro que estas reglas no son suficientes para cubrir el término de secuencia aleatoria.

Otra medida necesaria para el análisis de secuencias pseudoaleatorias es la complejidad

lineal y se menciona a continuación.

3.3.2 Complejidad lineal.3.3.2 Complejidad lineal.3.3.2 Complejidad lineal.3.3.2 Complejidad lineal.

La técnica más popular para medir la robustez de una secuencia pseudoaleatoria es la

complejidad lineal, esto es, para que una secuencia sea impredecible, es necesario que

su complejidad lineal sea grande. Esta propiedad es cuantificable y está definida por la

longitud del registro de desplazamiento con retroalimentación lineal más pequeño que

puede generar la secuencia particular que se analiza. Una complejidad lineal grande es

Page 62: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

57

una condición necesaria pero no suficiente para asegurar que una secuencia es

impredecible. Por ejemplo, la secuencia (0……01)∞, la cual se repite periódicamente, tiene

una complejidad lineal máxima, solo el registro de desplazamiento de grado ∞ puede

producirla. Pero claramente se puede observar que esta secuencia es fácilmente

predecible porque es una secuencia de solo ceros y así es poco útil en el campo

criptográfico. Finalmente, ser impredecible requiere que independientemente del bit

anterior el próximo dígito parezca tener una distribución uniforme. Por consiguiente, la

secuencia necesariamente debe ser estadísticamente uniforme, por ejemplo, que exista

una distribución igual entre cadenas de longitud uno de dígitos, de pares de dígitos, de

cadenas de tres dígitos, etc. El parámetro fundamental, ya mencionado para estimar que

tan impredecible es una secuencia es la complejidad lineal [14].

Ya que el periodo de una secuencia siempre es al menos tan grande como su complejidad

lineal, una complejidad lineal grande implica un periodo grande. Las secuencias aleatorias

típicas exhiben un crecimiento típico de la complejidad lineal con un incremento del

número de dígitos de la secuencia que se consideran. Dicho de otra forma, si se analiza

una secuencia aleatoria, la complejidad lineal de ésta se irá incrementando conforme al

número de dígitos analizados se incremente, y si se grafica el perfil de esta complejidad

lineal será cercano a una recta 2

n

, donde n es el número de bits analizados. De esta

forma, cuando una secuencia tiene un perfil típico de complejidad lineal, es probable que

sea estadísticamente uniforme. En contraste, una distribución uniforme en una secuencia

periódica no implica que esta secuencia tenga una complejidad lineal grande. Por

ejemplo, las secuencias de longitud máxima 1-2L que son generadas por LFSR

(Registro De Desplazamiento Con Retroalimentación Lineal), también se llaman

secuencias de pseudoruido (pseudonoise sequences), por sus excelentes propiedades de

distribución, tienen complejidad lineal mínima con respecto a la longitud de su periodo.

Esto es, si lanzamos una moneda legal 31 veces y graficamos el resultado de esos

lanzamientos obtendremos que el perfil de la complejidad lineal es cercano a una recta 2

n

y por lo tanto su complejidad lineal será de 31. En cambio la secuencia de máxima

longitud que tenga periodo igual a 31 tendrá una complejidad lineal de solo 5, que es el

valor de L . Secuencias binarias de longitud máxima de periodo 1-2L son

completamente determinadas conociendo solo 2L bits de la secuencia [14].

Page 63: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

58

Por consiguiente, el criterio de un perfil típico de complejidad lineal con un valor final

grande, acompañado por los requerimientos de uniformidad estadística, son útiles para

estimar lo impredecible de una secuencia así como también su calidad [14].

3.4 Cifrado de flu3.4 Cifrado de flu3.4 Cifrado de flu3.4 Cifrado de flujo basado en LFSR.jo basado en LFSR.jo basado en LFSR.jo basado en LFSR.

El cifrado de flujo cifra bit a bit los datos de un texto claro, utilizando una secuencia

cifrante y una función booleana. Este cifrado puede realizarse utilizando LFSR (Registro

de Desplazamiento con Retroalimentación Lineal), los cuales generan la llave (secuencia

pseudoaleatoria) para cifrar un texto claro. Este cifrado, realizado con LFSR, posee las

siguientes propiedades importantes:

1. Los LFSR se pueden realizar fácilmente en hardware.

2. Pueden generar secuencias de periodo TTTT grande, con T = 2T = 2T = 2T = 2LLLL----1111 y donde LLLL es la longitud

del LFSR.

3. Producen secuencias con buenas propiedades estadísticas, que pueden evaluarse

con los postulados de Golomb:

a. La diferencia en el número de unos y ceros dentro de cada periodo de la secuencia no

debe exceder a la unidad.

b. En todo el periodo, ( i1/2 ) es el número de iiii-gramas (del total de gramas en todo el

periodo) de longitud iiii.

c. La función de autocorrelación AC(k) fuera de fase es constante para todo valor k.

4. Debido a su estructura, pueden analizarse usando técnicas algebraicas, una de éstas

es la complejidad lineal.

En telecomunicaciones el cifrado de flujo es muy utilizado bajo las siguientes condiciones:

• El espacio de almacenamiento es limitado.

• Los caracteres de un mensaje deben procesarse individualmente y recibirse de la

misma forma.

• El error de transmisión tiene una probabilidad alta.

• El retardo de extremo a extremo no debe incrementarse considerablemente (afecta a

las aplicaciones interactivas).

• El flujo de datos a cifrar es generado en forma continua y posee un volumen

considerable.

Page 64: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo III Sistemas criptográficos

59

3.4.1 Esquema general del LFSR con configuración de Galois3.4.1 Esquema general del LFSR con configuración de Galois3.4.1 Esquema general del LFSR con configuración de Galois3.4.1 Esquema general del LFSR con configuración de Galois

Un LFSR de longitud L consiste en L etapas (o unidades de almacenamiento) numeradas

desde 0 hasta L-1, cada una capaz de almacenar un bit; tiene una entrada, una salida y un

reloj que controla el flujo de datos entre las distintas etapas [13] [16].

Durante cada unidad de tiempo se realizan las siguientes operaciones [13]:

1. El contenido de la etapa 0 es la que otorga el flujo de salida.

2. El contenido de la etapa iiii se traslada a la etapa 1- i considerando que, 1Li1 −−−−≤≤≤≤≤≤≤≤ ;

3. El nuevo contenido de la etapa 1-L es el bit de retroalimentación js , que se calcula

por medio de una función booleana que depende de la combinación de los contenidos

de ciertas etapas predefinidas.

La figura 3.3 muestra la estructura general de un LFSR de longitud L. Cada iC es 0 ó 1;

el bit js es la suma módulo 2 del contenido de las etapas L, según sea el valor del vector

{C} .

Etapa

L-1

Etapa

L-2

Etapa

1

Etapa

0

salida

1C 2C 1LC −−−− LC

jS

Etapa

L-1

Etapa

L-2

Etapa

1

Etapa

0

salida

1C 2C 1LC −−−− LC

jS

Figura 3.3 LFSR de longitud L.

Un LFSR puede generar secuencias pseudoaleatorias de tamaño máximo 12L −−−− (no L2

porque un registro de desplazamiento que se llena con ceros causará que la secuencia de

salida del LFSR sea una secuencia infinita de ceros). La secuencia resultante se

denomina m-secuencia. Para que un LFSR tenga el periodo máximo ( 12L −−−− ), el polinomio

formado por {C} más 1 debe ser un polinomio primitivo módulo 2 [8]. A continuación se

dan algunas definiciones para conocer las características que deben cumplir los

polinomios primitivos.

Page 65: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CAPÍTULO IV

Page 66: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

61

CAPITULO IV. Detección de ErroresCAPITULO IV. Detección de ErroresCAPITULO IV. Detección de ErroresCAPITULO IV. Detección de Errores por CRC. por CRC. por CRC. por CRC.

Resumen.Resumen.Resumen.Resumen.

Este capitulo muestra uno de tantos métodos existentes para la detección de errores,

como en nuestro caso lo es el CRC, así también se presenta sus características para

llevar acabo dicha detección de errores en la transmisión de datos entre terminales.

Además de sus diferentes formas de detección que presenta este dispositivo.

4.1 Métodos de detección de errores4.1 Métodos de detección de errores4.1 Métodos de detección de errores4.1 Métodos de detección de errores

Durante la transmisión de datos es muy común, en especial si las líneas de transmisión

están en un entorno eléctricamente ruidoso, las señales eléctricas que presentan el flujo

de bits transmitido sufran cambios a causa de la interferencia electromagnética que los

dispositivos eléctricos cercanos inducen en las líneas. Esto significa que el receptor podría

interpretar señales que representan un 1 binario como señales de 0 binario, o viceversa.

Para asegurar que la información recibida por un equipo terminal de datos (DTE – Data

Terminal Equipament) de destino tenga una alta probabilidad de ser idéntica a la que

envió el DTE transmisor, el receptor debe contar con algún mecanismo para obtener una

copia de la información correcta. Para lograr esto se emplean dos estrategias [17]:

• Control de errores hacia delante:Control de errores hacia delante:Control de errores hacia delante:Control de errores hacia delante: cada trama o carácter transmitido contiene

información adicional (redundante) que permite al receptor no solo detectar la

presencia de errores, sino además determinar en que punto del flujo de bits recibido

están dichos errores. Así los datos correctos se obtienen invirtiendo lo bits en

cuestión.

• Control de errores por rControl de errores por rControl de errores por rControl de errores por retroalimentación (retrospectivo)etroalimentación (retrospectivo)etroalimentación (retrospectivo)etroalimentación (retrospectivo): cada trama o carácter

incluye solo suficiente información adicional para que el receptor pueda saber si se

presentan errores, pero no si ubicación exacta. Se emplea un esquema de control

de retransmisión para solicitar el envió de otra copia de la información que, se

espera, será correcta.

En la práctica, el número de bits requeridos para lograr un control de errores hacia

adelante confiable crece rápidamente conforme aumenta el número de bits de

información. Para esto el control de errores por retroalimentación es el método

Page 67: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

62

predominante en los sistemas de comunicación de datos y redes; este método se puede

dividir dos partes:

• Las técnicas que se usan para lograr una detección de errores confiable

• Los algoritmos de control con que se realizan los esquemas de control de

retransmisión asociados.

Los dos factores que determinan el tipo de esquema para la detección de errores son la

tasa de errores de bittasa de errores de bittasa de errores de bittasa de errores de bit (BERBERBERBER – Bit Error Rate) de la línea o circuito y el tipo de errores, es

decir, si los errores ocurren aleatoriamente en bits aislados o en grupos continuos de bits

erróneos, conocidos comúnmente como ráfagas de erroresráfagas de erroresráfagas de erroresráfagas de errores.

Tiene su importancia el tipo de errores presentes porque los distintos tipos de esquemas

para detectarlos identifican diferentes tipos de errores, además el número de bits

empleados en algunos esquemas determinan la longitud de las ráfagas que se detectan.

Los tres esquemas mas utilizados son los de paridad, verificación de suma de bloque y

verificación de redundancia cíclica [17].

4.1.1 Paridad4.1.1 Paridad4.1.1 Paridad4.1.1 Paridad

El método de bit de paridad es el más común para detectar errores de bit con transmisión

sincronía y transmisión asíncrona orientada a caracteres. Este esquema, el transmisor

agrega un bit adicional (el de paridad) a cada carácter antes de transmitirlo. El bit de

paridad empleado depende de los bits que constituyen el carácter transmitido. Al recibir

cada carácter, el receptor realiza la misma función con el y compara el resultado con el bit

de paridad recibido. Si son iguales, se supone que no hubo ningún error; si son distintos

se supone que hubo un error de transmisión [17].

Para calcular el bit de paridad de un carácter, utilizando aritmética de modulo 2 se suman

todos los bits “1” lógico del código correspondiente al carácter, y se escoge el bit de

paridad de paridad de modo que el numero total de bits “1” lógico (incluyendo el bit de

paridad mismo) sea par o impar como se ilustra a continuación.

Page 68: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

63

( )( )InparParidad

ParParidad

paridaddeBit

01001001

11001001

El método de bit de paridad solo detecta errores de bit individuales (o un número impar de

errores) y que si son dos los errores de bit (o un número par de errores) estos pasan

inadvertidos.

El diseño en hardware del método de paridad consiste en un conjunto de puertas XOR

conectadas como se ilustra en la figura No 4.1 (a). A la compuerta XOR también es

conocida como sumador de modulo 2 porque como se indica en su tabla de

funcionamiento de la figura 4.1 (b), salida de la operación XOR entre dos dígitos binarios

equivalente a la suma de esos dígitos sin el bit de acarreo. Primero se aplica una XOR al

par de bits menos significativos, a continuación se aplica otra XOR a la salida de la

operación anterior y el siguiente bit (mas significativo) y así sucesivamente. La salida de la

última puerta es el bit de paridad requerido, el cual se carga en el registro del transmisor

antes de enviar el carácter. De manera similar, en el extremo receptor, el bit de paridad

recalculado se compara con el recibido; sin son distintos, se habrá detectado un error de

transmisión.

(a)

(b)

Figura No 4.1. Diseño de en hardware del método de paridad: (a) Circuito generador del

bit de paridad, (b) Tabla de funcionamiento.

Page 69: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

64

En la teoría de codificación, el término con que se describe la unidad de mensaje

combinada, compuesta por los bits de datos útiles y los bits adicionales para la detección

de errores, es el de la palabra del código. El número mínimo de posiciones de bit que

distingue dos palabras de código validas es la distancia Hamming del código. Si

consideramos un esquema de codificación que tiene siete bits de datos y un solo bit de

paridad en cada palabra de código además utilizando paridad par, las siguientes serán

palabras de código consecutivas en dicho esquema, a partir de esto podemos deducir que

el esquema tiene una distancia de Hamming de 2, ya que cualquiera de las dos palabras

de código validas consecutivas difieren en por lo menos dos posiciones. Por lo que

significa que este no detecta errores de dos bits, pues el patrón de bits resultantes

(alterado) será una palabra de código distinta pero valida. Sin embargo, si detecta todos

los errores de un solo bit, ya que si solo se altera un bit de una palabra de código se

obtendrá una palabra no valida [17].

4.1.2 Verificación de suma de bloque4.1.2 Verificación de suma de bloque4.1.2 Verificación de suma de bloque4.1.2 Verificación de suma de bloque....

Cuando se transmiten bloques de caracteres, es mayor la probabilidad de que un carácter

contenga un error de bit. La probabilidad de que un bloque contenga un error se denomina

tasa detasa detasa detasa de errores de bloerrores de bloerrores de bloerrores de bloquequequeque. Al estar transmitiendo bloques de caracteres (tramas)

podemos lograr una extensión en la capacidad de detección de errores obtenida con un

solo bit de paridad por carácter (byte) mediante un conjunto adicional de bits de paridad

calculado a partir del bloque completo de caracteres (bytes) de la trama. Con este método

a cada uno de los caracteres (bytes) de la trama se le asigna un bit de paridad

denominada paridad transversal o de fila; además se calcula un bit adicional por cada

posición de bit llamada paridad longitudinal o de columna de la trama completa. El

conjunto resultante de bits de paridad por cada columna recibe el nombre de carácter de

verificación (de suma) de bloque porque cada bit que compone este carácter es la suma

en modulo de todos los bits de la columna correspondiente. Para el ejemplo mostrado en

la figura No 4.2 se puede observar como se emplea paridad impar para los bits de paridad

de fila y paridad par para los bits de paridad de columna, y supone que la trama contiene

caracteres imprimibles [17].

Page 70: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

65

Figura No 4.2. Ejemplo de verificación de suma de bloque

A partir de esto podemos deducir, que dos errores de bit en un carácter no serán

detectados por la verificación de paridad de fila, si serian detectados por la verificación de

paridad de columna correspondiente. Esto se cumple solo si ocurren dos errores de bit en

la misma columna simultáneamente, por supuesto la probabilidad de que esto suceda es

mucho menor que la probabilidad de que haya dos errores de bit en un solo carácter. Con

la verificación de suma el bloque mejora de manera significativa la capacidad de detección

de errores del esquema.

Una variante de este esquema consiste en utilizar la suma de complemento a 1 como

base para la verificación de la suma de bloque, en lugar de la suma de módulo 2 como se

muestra en la figura 4.3. Los caracteres (bytes) del bloque por transmitir se tratan como

numeros binarios sin signo, y el primer paso consiste en sumarlos mediante aritmética de

complemento a1 luego se invierten todos los dígitos de la suma obtenida y el resultado

sirve como carácter de verificación de bloque (BCC – Block Check Character). En el

receptor se calcula la suma de complemento a1 de todos los caracteres del bloque

(incluso el de verificación del bloque) y si no hay errores, el resultado deberá ser 0.

Page 71: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

66

Figura No 4.3. Suma complemento a uno

4.1.3 Comprobación de redundancia cíclica (CRC)4.1.3 Comprobación de redundancia cíclica (CRC)4.1.3 Comprobación de redundancia cíclica (CRC)4.1.3 Comprobación de redundancia cíclica (CRC)....

La comprobación de redundancia cíclica (CRC – Cyclic Redundancy Check) es un código

de detección de errores que generalmente usado en los sistemas de comunicación de

datos y en otros sistemas de transmisión serial de datos. En los sistemas de interconexión

de redes una regla importante de la capa de enlace de datos es para convertir un enlace

físico no confiable potencialmente entre dos maquinas en un enlace aparentemente muy

fiable. Esto es llevado acabo por incluir información redundante en cada trama trasmitida.

Dependiendo de la naturaleza del enlace y el dato, cada uno solo incluye suficiente

redundancia para hacer esto posible para detectar errores y posteriormente para colocar

en orden para la retransmisión de las tramas dañadas. La comprobación de redundancia

cíclica o CRC es un bit de paridad usado generalmente en un esquema basado en la

detección de errores en aplicaciones de transmisión serial de datos [19].

La codificación redundante es un método de detección de error que difunde información

de más bits que los datos originales mientras mas bits redundantes se usen mayor va

hacer la oportunidad de detectar errores de la transmisión. Por ejemplo, un incremento de

16 bits en la longitud del registro de datos pierde un error en 65,536, mientras que un

incremento de 32 bits pierde un error en 4 billones.

Aunque esas probabilidades son favorables, errores indectables aun pueden ocurrir. La

naturaleza de errores comunes varía dependiendo de la transmisión y del medio de

almacenamiento pero errores indetectables pueden ser causados por bits cambiados

ocasionalmente asilados o por pequeñas ráfagas de múltiples bits cambiados. Para

minimizar los errores indetectables, se puede distribuir los datos así que esto es

Page 72: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

67

probablemente menor que los errores de transmisión que resultaran en una codificación

valida de un conjunto alternado de datos [18].

Este método de detección de errores funciona en aplicaciones en las que se presentan

ráfagas de errores debemos contar con un método que no solo calcule errores aleatorios

de un solo bit. Una ráfaga de errores comienza y termina con un bit erróneo, aunque los

bits intermedios pueden estar o no alterados. Por lo tanto, una ráfaga de errores se define

como el número de bits entre dos bits erróneos sucesivos comprendidos los dos bits

incorrectos. Además, al determinar la longitud de una ráfaga de errores, el último bit

erróneo de una ráfaga y el primer bit erroneo de la siguiente ráfaga deben estar separados

por B o más bits correctos, donde B es la longitud de la ráfaga de errores. El CRC esta

basado en manipulaciones de códigos polinomiales, que se aplican a esquemas de

transmisión de tramas (bloques). Por cada trama transmitida se genera (calcula) un

conjunto único de dígitos de verificación, con base en el contenido de la trama, y el

transmisor lo añaden al final de la trama. El receptor a su vez hace un cálculo similar a la

trama completa y los dígitos de verificación.

Los códigos de redundancia cíclica son un tipo favorable de codificación redundante.

Estos revisan las diferencias entre el trasmisor de datos y el dato original. Las

aplicaciones de la transmisión de datos usan extensamente CRC. Por ejemplo, la

especificación del Modo de Transmisión Asíncrono (ATM – Asynchronous Transfer Mode)

requiere un CRCC que es implementado a través de la carga entera para asegurar la

integridad del dato [18].

Los CRC son particularmente efectivos para dos razones:

• Estos proporcionan excelente protección en contra de errores comunes, como

ráfagas de errores donde bits consecutivos en un flujo de datos son corrompidos

durante la transmisión.

• El dato original es la primer parte de la transmisión, el cual hace el sistema que usa

CRC fácil para entender e implementar.

Page 73: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

68

4.2 Creando CRC.4.2 Creando CRC.4.2 Creando CRC.4.2 Creando CRC.

En general, la lógica digital no implementa la división de números eficientemente muy

largos. Consecuentemente, la información binaria debe ser convertida de la manera más

apropiada antes de usar el CRC [18]. La alternativa más común se basa en los códigos

polinomiales que se aplican a esquemas de transmisión de tramas (bloques). Por cada

trama transmitida se genera (calcula) un conjunto único de dígitos de verificación, con

base en el contenido de la trama, y el transmisor lo añaden al final de la trama. El

receptor, a su vez, realiza un cálculo similar con la trama completa y los dígitos de

verificación. Si no se han inducido errores, siempre se obtendrá un resultado conocido; si

no se obtiene una respuesta distinta, se habrá de detectado un error.

El CRC es usado generalmente en un esquema basado en la detección de errores en

aplicaciones de transmisión serial de datos. Este código esta basado en un polinomio

aritmético. Por lo que los bits de datos para ser transmitidos son representados como los

coeficientes de un polinomio largo, más que como un número binario largo, como un

ejemplo el bit de flujo 1101011011 tiene 10 bits, representando un polinomio en termino 10

[19]:

M(x) = (1)(X9)+(1)(X8)+(0)(X7)+(1)(X6)+(0)(X5)+(1)(X4)+(1)(X3)+(0)(X2)+(1)(X1)+ (1)(X0)

M(x) = X9 + X8 + X6 + X4 + X3 + X1 + 1

Donde M(x) es el mensaje a transmitir

Para calcular el CRC de un mensaje, se aplica aritmética de modulo 2 sin acarreo donde

el modulo de aritmética da el mismo resultado para suma y resta. Por lo tanto es necesario

solo considerar tres operaciones involucrando polinomios a saber, suma, multiplicación, y

división [19].

• La suma de dos polinomios (x8 + x7 + x5 + x4 + x2 + x + 1) y (x5 + x4 + x3 + x2) dan: x8

+ x7+ x3 + x + 1.

x8 + x7 + x5 + x4 + 0 + x2 + x + 1 = 110110111

0 + 0 + x5 + x4 + x3 + x2 + 0 + 0 = 000111100

x8 + x7 + 0 + 0 + x3 + 0 + x + 1 = 110001011

Page 74: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

69

• La multiplicación de dos polinomios (x7 + x6 + x5 + x2 + 1) y (x + 1) resulta en: x8 +

x5 + x3 + x2 + x + 1

(x7 + x6 + x5 + x2 + 1) (x + 1) = (11100101) (11)

x8 + x7 + x6 + 0 + 0 + x3 + 0 + x + 0 = 111001010

0 + x7 + x6 + x5 + 0 + 0 + x2 + 0 + 1 = 011100101

x8 + 0 + 0 + x5 + 0 + x3 + x2 + x + 1 = 100101111

Nótese que la aplicación de un polinomio por un xm resulta en un patrón bit desplazado

con ceros en la “m” posición mas baja. Por ejemplo:

x5 (x11 + x10 + x8 + x4 + x3 + x + 1) = x16 + x15 + x13 + x9 + x8 + x6 + x5

• La división de dos polinomios (x13 + x11 + x10 + x7 + x4 + x3 + x + 1) y (x6 + x5 + x4 +

x3 + 1) resulta en un cociente de (x7 + x6 + x5 + x2 + x + 1) y un residuo de (x4 + x2)

como se muestra a continuación.

x13 + x11 + x10 + x7 + x4 + x3 + x + 1 = 10110010011011

x6 + x5 + x4 + x3 = 1111001

11100111 = x7 + x6 + x5 + x2 + x + 1 (cociente)

10100 =x4 + x2 (residuo)

Además si se aplica aritmética de modulo 2, el método se sustenta en la siguiente

propiedad de los números binarios sea [17]:

- M(x) un numero de k bits (mensaje a transmitir);

- G(x) un numero de (n + 1) bits (el divisor o el generador);

- R(x) un numero de n bits tal que K>n (residuo)

Page 75: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

70

Entonces si:

( )[ ]( )

( ) ( )( )xG

xRxQ

xG

xM n

+=2

, donde Q(x) es el cociente

( )[ ] ( )( )

( )xQxG

xRxM n

=+2

, suponiendo aritmética modulo 2.

Es fácil confirma este resultado sustituyendo la expresión correspondiente ( )[ ]( )xG

xM n2

en la segunda ecuación, lo que no da:

( )[ ] ( )( )

( ) ( )( )

( )( )xG

xR

xG

xRxQ

xG

xRxM n

++=+2

Lo que es igual Q(x), ya que en aritmética modulo 2 cualquier numero sumado a si mismo

produce cero; es decir, el residuo es cero.

Para aprovechar esto, el contenido total de la trama, M(x), junto con un conjunto

concatenado de tantos ceros como dígitos de secuencia de verificación de trama (FCS –

Frama Check Sequence) o mejor conocida como dígitos de CRC, que se van a generar

(lo que es equivalente a multiplicar el mensaje por 2n, donde n es el numero de dígitos de

la FCS), se divide modulo 2 por un segundo numero binario, G(x), el polinomio generador,

que contiene un digito mas que la FCS. La división equivale a realizar la operación de

XOR bit por bit en paralelo conforme se procesa cada bit de la trama. El residuo R(x) será

entonces al FCS que será transmitida al final de los dígitos de información. De manera

similar, en el receptor, el flujo de bits de llegada, entre ellos los dígitos de la FCS, se divide

otra vez entre el mismo polinomio generador –esto es, ( )[ ]( )xG

xRxM n )(2 + - y si no se

presentan errores, el residuo solo contendrá ceros. En cambio, si se presenta un error, el

residuo será distinto se cero [17].

4.2.1 Detección de errores.4.2.1 Detección de errores.4.2.1 Detección de errores.4.2.1 Detección de errores.

Generalmente, los CRCC detectan los siguientes tipos de errores:

• Errores de un solo bit

• Errores de dos bits

Page 76: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

71

• Errores de tres bits y otros bits de números impares

• Ráfagas de errores que son menos que o igual a la longitud del CRC

• Ráfagas de errores que son mas grandes que la longitud del CRC

Los tipos de errores que un CRCC detecta depende del polinomio generador en la tabla

4.1 muestran varios de los polinomios generadores mas comunes para diferentes

aplicaciones [18].

Polinomios generadores comunes

Nombre del generador Polinomio

SDLC (CCITT) X16 + x12 + x5 + x0

SDLC reversa x16 + x11 + x4 + x0

CRC -16 x16 + x15 + x2 + x0

CRC – 16 reversa x16 + x14 + x1 + x0

CRC – 12 x12 + x11 + x3 + x2 + x1 + x0

Ethernet x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 +

x0

Tabla No 4.1 Polinomios generadores comunes

Diferentes polinomios generadores tienen diferentes habilidades de detección de errores.

Para conseguir óptimos resultados, debes usar un polinomio generador que efectivamente

detecte y corrija los errores en la transmisión esperados. Alternamente, puedes usar un

generador polinomio estándar que sea apropiado para una transmisión peculiar media

[18]. Algunos de los más comunes CRC estándar son el CRC-8, CRC-12, CRC-16 y CRC-

32.

El CRC-16 es un estándar que usa el polinomio generador: G(x) = X16 + X15 + X2 + 1. Este

detecta todos los errores simples y dobles, todos los errores con un numero impar de bits,

todas las ráfagas de errores de longitud 16 o menos y mas los errores para ráfagas mas

largas. Además como este polinomio generador se añadirán 16 ceros al contenido de la

trama antes de la generación de la secuencia de verificación de trama, esta ultima seria el

residuo de 16 bits. Este CRC es muy utilizado en la redes WAN a diferencia del CRC-32

que es la más usada en redes LAN; teniendo un polinomio generador:

Page 77: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

72

G(x) = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1

4.2.2 Calculo de CRC serial4.2.2 Calculo de CRC serial4.2.2 Calculo de CRC serial4.2.2 Calculo de CRC serial

Típicamente, los cálculos del CRC son implementados con un Registro de

Desplazamiento con Retroalimentación Lineal (LFSR) mencionados anteriormente. Los

LFSR usan un método que dan los mismos resultados como restar y el proceso de

desplazamiento de división cuando la resta es efectuada sin acarreo por la función XOR.

Para afectar la resta y el desplazamiento de división de un solo bit a la vez, puedes

desplazarlo y examinar cada bit en la trama original de datos (por ejemplo el dividendo).

Para el primer bit de valor 1, el bit divisor de orden alto es obtenido del dividendo. El bit

dividendo, el cual es innecesario y no es generado, es asignado al cero para la resta. Los

bits de orden mas bajo del divisor aun no pueden ser obtenidos, porque los bits del divisor

correspondiente no han sido desplazados.

La figura 4.4 muestra el generador CRC-16 calculado serialmente del Comité Consultivo

Internacional de Telefonía y Telegrafía (CCITT - Consultative Committee International

Telegraph y Telephone). El bit coeficiente “1” (XOR16) es retroalimentado y obtenido de

las taps apropiadas en el registro de desplazamiento (XOR12, XOR5, XOR0). Esos bits

son desplazados hacia delante para aparecer al final y ser obtenidos del siguiente bit del

dato, si no son eliminados por un segundo bit coincidente de una anterior o de una

posterior resta que es retroalimentada [18].

Figura No 4.4 Configuración del LFSR para el CCITT CRC-16 (X16 + X15 + X2 + 1).

Page 78: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo IV Deteccion de errores por CRC

73

4.2.3 Calculo del CRC en paralelo.4.2.3 Calculo del CRC en paralelo.4.2.3 Calculo del CRC en paralelo.4.2.3 Calculo del CRC en paralelo.

El método serial trabaja bien cuando un dato es disponible en forma bit serial. Sin

embargo, hoy en día los sistemas de procesamiento de señal a alta velocidad procesan un

dato en un byte, palabra, y doble palabra (32 bits), o más anchos que la forma serial.

Incluso en sistemas de telecomunicaciones, los cuales transmiten datos serialmente, los

datos recibidos son encapsulados dentro de un dispositivo VLSI responsable de recuperar

el reloj y la “trama byte”. El dato es presentado al diseñador de la tarjeta en tramas de 8

bits en una velocidad manejable. Posteriormente, los diseños para dispositivos de alta

velocidad requerirán que el CRC sea calculado a 8 bits a la vez.

Se puede desarrollar un algoritmo del CRC en paralelo propuesto con un LFSR. Así como

expresar el contenido de un registro de desplazamiento después de 8 desplazamientos

como una función de condición inicial del registro de desplazamiento y los 8 bits de datos

desplazados. Esta función puede ser creada usando solo operadores XOR [18].

Page 79: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CAPÍTULO V

Page 80: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

74

CAPITULO V. Diseño pruebas y resultadoCAPITULO V. Diseño pruebas y resultadoCAPITULO V. Diseño pruebas y resultadoCAPITULO V. Diseño pruebas y resultado

ResumenResumenResumenResumen

En este capitulo se muestran los diseños, simulaciones y resultados de cada dispositivo

que usaremos para la realización de un ciclo de comunicaron (transmisor-receptor), que a

su vez se diseñara y simulara, esto con la ayuda de nuestra herramienta AlteraTM

MAX+PLUS II versión 10.1

5.1 Lenguaje de Descripción de Hardware (VHDL)5.1 Lenguaje de Descripción de Hardware (VHDL)5.1 Lenguaje de Descripción de Hardware (VHDL)5.1 Lenguaje de Descripción de Hardware (VHDL)

5.1.1 5.1.1 5.1.1 5.1.1 Antecedentes.Antecedentes.Antecedentes.Antecedentes.

Debido a la creciente necesidad de integrar una gran cantidad de dispositivos en un

circuito integrado se han desarrollado diversas herramientas que auxilian en el diseño de

estructuras digitales. Esto permitió que en la década de los cincuenta aparecieran los

lenguajes de descripción de hardware (HDL). Estos lenguajes alcanzaron su mayor

desarrollo en la década de los sesentas, en la cual se desarrollaron varios de estos, tales

como IDL de IBM, TI-HDL de Texas Instruments, etc., todos ellos orientados al área

industrial; y para el ámbito universitario surgieron lenguajes como AHPL, DDL, CDL, ISP,

etc. Los primeros solo estaban disponibles para un número reducido de empresas y los

lenguajes de ámbito universitario carecían de soporte y mantenimiento adecuados que

permitieran su utilización industrial.

Debido a que no existía un estándar para este tipo de lenguajes en 1983 el departamento

de defensa de Estados Unidos contrató a tres compañías (IBM, Texas Instruments e

Intermetrics), para desarrollar un lenguaje de descripción de hardware estándar para

diseño, documentación y verificación de sistemas digitales, el cual lleva el nombre de

VHDL. Antes de este esfuerzo de normalización los diferentes diseñadores usaban

diferentes lenguajes de descripción de hardware, y por ello no podían intercambiar sus

diseños. Además las distintas empresas y diseñadores proporcionaban al Departamento

de Defensa descripciones de sus chips en diferentes lenguajes y también representaba un

problema. La reutilización fue también un problema con los diseños en estos lenguajes.

La versión 7.2 de VHDL que fue desarrollada y liberada al público en 1985 tuvo una gran

aceptación en la industria para el desarrollo de procesos, especialmente de compañías

Page 81: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

75

que diseñaban chips VHSIC (Very High Speed Integrated Circuits). En 1986 el lenguaje

fue enviado a la IEEE para su estandarización, después de mejoras sustanciales al

lenguaje hechas por un equipo universitario, industrial y representantes del Departamento

de Defensa, el lenguaje fue estandarizado por la IEEE en diciembre de 1987, esta versión

fue conocida como la IEEE Std 1076-1987.

De acuerdo a las reglas de la IEEE, un estándar IEEE tiene que ser revisado cada cinco

años para que continúe siendo un estándar. Consecuentemente el lenguaje fue

modernizado con nuevas aplicaciones, la sintaxis de muchas estructuras se hizo más

uniforme y muchas ambigüedades presentadas en la versión de 1987 se resolvieron. Esta

nueva versión se conoce como el estándar IEEE Std 1076-1993 [20].

Hoy en día VHDL se considera como un estándar para la descripción, modelado y síntesis

de circuitos digitales y sistemas complejos. Este lenguaje presenta diversas

características que lo hacen uno de los HDL (lenguajes de descripción de hardware) mas

utilizados en la actualidad.

5.1.2 Definición5.1.2 Definición5.1.2 Definición5.1.2 Definición

VHDL es un acrónimo para VHSIC (Very High Speed Integrated Circuits) Hardware

Description Language. VHDL como su nombre lo dice es un lenguaje de descripción de

hardware que puede usarse para modelar un sistema digital a muchos niveles de

abstracción, desde el nivel algorítmico hasta el nivel de compuertas lógicas. La

complejidad de un sistema digital puede variar desde una simple compuerta hasta un

sistema electrónico digital completo o cualquier otro nivel entre estos [20] [21].

El lenguaje VHDL puede considerarse como una mezcla de los siguientes lenguajes:

• Lenguaje secuencial

• Lenguaje Concurrente (donde todos las entidades de un circuito trabajan en

paralelo)

• Especificaciones de tiempo.

• Lenguaje de lista de conexiones (Netlist).

• Lenguaje de generación de formas de onda.

Page 82: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

76

VHDL cubre todos estos tipos de lenguajes de programación. Por consiguiente este

lenguaje fue concebido para mostrar el comportamiento concurrente o secuencial de un

sistema digital con o sin especificaciones de tiempo. También permite modelar un sistema

como una interconexión de componentes. La prueba usando formas de ondas también se

puede generar usando la misma construcción. Todos estos tipos de construcciones

pueden combinarse para proporcionar en un solo modelo una descripción comprensiva del

sistema. El lenguaje no solo define la sintaxis, también define una clara simulación

semántica para cada construcción. Por consiguiente, los modelos escritos en este

lenguaje pueden verificarse usando un simulador de VHDL como AlteraTM, Xilinx, FPGA

Advantage, etc. [20],[21],[22].

En MAX+PLUS II (AlteraTM) se pueden crear proyectos jerárquicos completos en VHDL, o

combinar archivos de diseño en VHDL con otro tipo de diseños en proyectos jerárquicos.

Con su editor de texto se pueden crear símbolos automáticamente que representen un

diseño en VHDL, e incorporarlo en un diseño gráfico (.gdf). Además, se pueden incorporar

funciones a la medida, es decir, funciones que fueron diseñadas para cubrir un aspecto

específico de nuestro proyecto. También AlteraTM proporciona funciones lógicas dentro

de cualquier diseño VHDL y paquetes de componentes que pueden usarse en cualquier

diseño en VHDL.

.vhd

.edf.gdf.tdf .tdf

.sch .xnf . .sym.adfo.smf

.wdf

MAX+PLUS IICompilador

(incluyendo lectorde listas de conexiones)

.cnf

.hif

Al modulo constructor

de base de datos del

compilador

Archivo de

diseño en

VHDL

Uno o más

CNF creados

por diseño

Archivo Símbolo

con el símbolo que

representa un archivo

de diseño lógico

.vhd

.edf.gdf.tdf .tdf

.sch .xnf . .sym.adfo.smf

.wdf

MAX+PLUS IICompilador

(incluyendo lectorde listas de conexiones)

.cnf

.hif

Al modulo constructor

de base de datos del

compilador

Archivo de

diseño en

VHDL

Uno o más

CNF creados

por diseño

Archivo Símbolo

con el símbolo que

representa un archivo

de diseño lógico

Figura 5.1 Archivos de diseño que están integrados dentro del sistema MAX+PLUS II.

La figura 5.1 muestra como los archivos de un diseño VHDL pueden integrarse dentro del

sistema MAX-PLUS II. Un proyecto jerárquico puede contener archivos de diseño VHDL,

archivos de texto para diseño en el lenguaje de descripción de hardware de Altera (AHDL)

Page 83: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

77

(.tdf), archivos de diseño gráfico (.sch) en cualquier nivel de jerarquía de proyecto. En

contraste, archivos de diseño de formas de onda (.wdf), archivos de diseño de Altera

(.adf), archivos de máquinas de estado (.smf) y archivos en formato de lista de conexiones

Xilinx (.xnf) pueden ser usados solo en bajos niveles de un proyecto jerárquico, a menos

que el proyecto entero consista de un solo archivo WDF, ADF, SMF o XNF. El archivo .cnf

es un archivo binario de listas de conexiones del compilador y el archivo .hif es un archivo

de interconexiones jerárquicas que documenta las conexiones jerárquicas entre los

archivos del proyecto y proporciona la información necesaria para mostrar el árbol de

jerarquías del proyecto [21].

5.2 Construcción de LFS5.2 Construcción de LFS5.2 Construcción de LFS5.2 Construcción de LFSRsRsRsRs

5555.2.1 C.2.1 C.2.1 C.2.1 Condiciones de los LFSRondiciones de los LFSRondiciones de los LFSRondiciones de los LFSR para la generación de secuencias para la generación de secuencias para la generación de secuencias para la generación de secuencias

pseudoaleatorias.pseudoaleatorias.pseudoaleatorias.pseudoaleatorias.

La principal condición que debe de cumplir un LFSR para que genere una secuencia

pseudoaleatoria de periodo máximo, y con buenas propiedades estadísticas, es que los

puntos de retroalimentación estén dados por un polinomio primitivo. Si no se cumple con

esta condición entonces, no se garantiza ni que éste genere una secuencia de máxima

longitud 1-2L y tampoco la secuencia generada tenga buenas propiedades estadísticas.

En la construcción de generadores de secuencias pseudoaleatorias basados en LFSR se

deben de tomar las siguientes condiciones.

• Que los LFSR utilizados deben estar construidos con base en un polinomio primitivo.

• Que las longitudes de los LFSR sean primos relativos, es decir, que el máximo común

divisor de las longitudes de los LFSR sea 1.

• Que las longitudes de todos los LFSR sean diferentes (con excepción del generador

de Gollman y bilateral de control de paso).

La semilla con que se inicializan los LFSR no afecta en la complejidad lineal de la

secuencia generada, y tampoco en su longitud de periodo, siempre y cuando el LFSR

haya sido construido con base en un polinomio primitivo. Si se utilizan otros polinomios no

se cumplirá con la complejidad lineal ni con el periodo máximo de la secuencia generada.

Page 84: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

78

En el caso de los generadores de secuencias basados en LFSR, si se cumplen con las

condiciones de construcción arriba mencionadas, la semilla de inicialización tampoco

afectará en la complejidad lineal y periodo de la secuencia. Cabe precisar que, para

diferentes semillas existen diferentes secuencias de salida, pero la complejidad lineal y

periodo serán constantes.

Los generadores de secuencias pseudoaleatorias utilizan una combinación particular de

LFSR con el fin de destruir la linealidad de éstos. La razón por la cual se diseñan

generadores de secuencias pseudoaleatorias basados en LFSR, es porque

desafortunadamente la secuencia de salida de un solo LFSR es fácil de predecir por

medio del algoritmo de Berlekamp-Massey que hace uso de una subsecuencia que

contenga 2L2L2L2L bits de la secuencia total generada por el LFSR. Y una vez obtenido el

polinomio, el cifrado hecho con esta secuencia se puede romper ya que conocemos el

LFSR con el cual se hizo el cifrado [8].

Para el diseño de estos generadores de secuencias pseudoaleatorias basados en los

LFSR, se hicieron modificaciones al funcionamiento del LFSR de máxima longitud, estas

modificaciones se realizaron para que los generadores de secuencias operen de forma

correcta. El LFSR de máxima longitud y sus modificaciones se mencionan a continuación:

1. LFSR que genera una secuencia de longitud máxima 1-2L , donde L es la longitud

del LFSR.

2. LFSR que depende del reloj y una señal de habilitación.

3. LFSR que genera una secuencia de De Bruijn. [8]

5.2.15.2.15.2.15.2.1.1.1.1.1 LFSR que genera una secuencia de longitud 2 LFSR que genera una secuencia de longitud 2 LFSR que genera una secuencia de longitud 2 LFSR que genera una secuencia de longitud 2LLLL----1.1.1.1.

El esquema general de un LFSR como se muestra en la figura 3.3 consta de un registro de

desplazamiento, compuertas AND y XOR, tiene una entrada y una salida. Todo esto

controlado por un reloj. A continuación, en la tabla 5.1, se presenta la función en VHDL

para un LFSR.

Page 85: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

79

library IEEE;use IEEE.STD_LOGIC_1164.all;

USE ieee.std_logic_arith.all;

entity lfsr is

generic(ancho:integer:=4; polinomio:integer:=9; inicializacion:integer:=11);

--ancho = longitud del LFSR, polinomio = polinomio del LFSR--

--Inicialización = estado inicial del LFSR---

port(

clk: in std_logic; -- Reloj del sistema--

sel: in std_logic; -- carga la semilla en el LFSR e inicia el proceso--

tap: out std_logic_vector(ancho-1 downto 0); -- Estados del LFSR--

salida: out std_logic); -- Puerto de salida de los bits generados--

end lfsr;

Architecture comportamental of lfsr is

signal D: std_logic_vector(ancho-1 downto 0);

signal load,x: std_logic_vector(ancho-1 downto 0);

signal auxreg,aux:std_logic;

begin

process(clk,sel)

variable orexsignal: std_logic;

variable Q: std_logic_vector(ancho-1 downto 0);

begin

------------------------------------------------------

D<=conv_std_logic_vector(polinomio,ancho);

load<=conv_std_logic_vector(inicializacion,ancho);

------------------------------------------------------

if clk'event and clk='1' then

if sel='0' then

Q:=auxreg&Q(ancho-1 downto 1);

else

Q:=load;

end if;

end if;

Tap<=Q;

salida<=Q(0);

x<=Q and D;

----------------------xor----------------------------

orexsignal:=x(0);

for k in ancho-1 downto 1 loop

orexsignal:=x(k) xor orexsignal;

end loop;

auxreg<=orexsignal;

end process;

end comportamental;

Tabla 5.1 LFSR en código VHDL

Este código y el de los otros LFSR, así como también el de los generadores de secuencias

pseudoaleatorias que se mencionan más adelante son flexibles, ya que permite definir

distintas propiedades en los circuitos. Por ejemplo, se pueden definir diferentes LFSR

cambiando su longitud, polinomio de retroalimentación y semilla o conjunto de estados

Page 86: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

80

iniciales. Para construir diferentes configuraciones, simplemente es necesario cambiar los

parámetros que se encuentran en la función generic generic generic generic [8].

generic(ancho:integer:=4; polinomio:integer:=9; inicializacion:integer:=11);generic(ancho:integer:=4; polinomio:integer:=9; inicializacion:integer:=11);generic(ancho:integer:=4; polinomio:integer:=9; inicializacion:integer:=11);generic(ancho:integer:=4; polinomio:integer:=9; inicializacion:integer:=11);

Por ejemplo, los valores que se encuentran actualmente indican que el LFSR:

• Tendrá longitud 4,

• Estará construido con un polinomio primitivo 4xx1 ++++++++ , de grado 4. La figura 5.2

muestra la correspondencia del valor 9 en el código VHDL y el polinomio 4xx1 ++++++++ .

• La semilla será 1011 y de acuerdo a la figura 3.2 el valor será de 11 en el código

VHDL.

xx4

8 4 2 1

1 1 10 Semilla=8+2+1=11

Polinomio= 8+1=9

Bit más significativo

xx4

8 4 2 1

1 1 10 Semilla=8+2+1=11

Polinomio= 8+1=9

Bit más significativo

Figura 5.2 LFSR con polinomio primitivo de grado 4

5.2.5.2.5.2.5.2.1.1.1.1.2222 LFSR controlado por el reloj y una señal de habilitación.LFSR controlado por el reloj y una señal de habilitación.LFSR controlado por el reloj y una señal de habilitación.LFSR controlado por el reloj y una señal de habilitación.

El funcionamiento de este LFSR es el siguiente. Si existe una señal de reloj, en cada

transición (positiva o negativa dependiendo de las necesidades) de esta señal, y si existe

un 1 lógico a la entrada el LFSR, este cambiará su estado, en caso contrario permanecerá

sin cambios.

Este tipo de LFSR es útil para el diseño de los generadores de Beth-Piper, Gollman,

Bilateral de Control de Paso, de Pasos Alternados y Multivelocidad de Massey-Rueppel. El

diseño en VHDL se muestra en la tabla 5.2.

Page 87: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

81

library IEEE;use IEEE.STD_LOGIC_1164.all;

USE ieee.std_logic_arith.all;

entity lfsr_hab is

generic(ancho:integer:=4; polinomio:integer:=9;inicializacion:integer:=11);

--ancho = longitud del LFSR, polinomio = polinomio del LFSR--

--Inicialización = estado inicial del LFSR---

port(

hab: in std_logic; -- Señal de Habilitación --

clk: in std_logic; -- Reloj del sistema--

sel: in std_logic; -- carga la semilla en el LFSR e inicia el proceso--

tap: out std_logic_vector(ancho-1 downto 0); -- Estados del LFSR--

salida: out std_logic); -- Puerto de salida de los bits generados--

end lfsr_hab;

Architecture estructural of lfsr_hab is

signal Qaux: std_logic_vector(ancho-1 downto 0);

signal D: std_logic_vector(ancho-1 downto 0);

signal load,x: std_logic_vector(ancho-1 downto 0);

signal auxreg,aux:std_logic;

begin

process(clk,sel)

variable orexsignal: std_logic;

variable Q: std_logic_vector(ancho-1 downto 0);

begin

------------------------------------------------------

D<=conv_std_logic_vector(polinomio,ancho);

load<=conv_std_logic_vector(inicializacion,ancho);

------------------------------------------------------

if clk'event and clk='1' then

if sel = '1' then

Q := load;

ELSIF hab = '0' THEN

Q := Q;

ELSE

Q:=auxreg&Q(ancho-1 downto 1);

end if;

end if;

tap<=Q;

salida<=Q(0);

x<=Q and D;

----------------------xor----------------------------

orexsignal:=x(0);

for k in ancho-1 downto 1 loop

orexsignal:=x(k) xor orexsignal;

end loop;

auxreg<=orexsignal;

end process;

end estructural;

Tabla 5.2 LFSR controlado por el reloj y una señal de habilitación.

Page 88: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

82

Existen diferentes tipos de configuraciones [11], [23] para la construcción de generadores

de secuencias pseudoaleatorias, las cuales son:

• Generadores basados en la combinación no lineal de varios LFSR. [véase bibliografía

8]

• Generadores multireloj. [véase bibliografía 8]

• Generadores basados en el control de Reloj.

En este trabajo se diseñaron en VHDL diferentes generadores de secuencias

pseudoaleatorias, los diseños que aquí se presentan consideran todas las configuraciones

que se mencionan arriba. Además de presentar su código en VHDL, también se presentan

simulaciones y la comprobación de que los diseños realizados cumplen con la complejidad

lineal descrita en la teoría. Las diferentes configuraciones de generadores de secuencias

pseudoaleatorias se presentan a continuación.

5.3 5.3 5.3 5.3 Generadores basados en el control de reloj.Generadores basados en el control de reloj.Generadores basados en el control de reloj.Generadores basados en el control de reloj.

En los generadores con combinación no lineal el movimiento de los datos en todos los

LFSR es controlado por el mismo reloj. La característica principal de la configuración del

generador con control de reloj es introducir no linealidad en los generadores de

secuencias pseudoaleatorias basados en LFSR. Esta no linealidad se introduce teniendo

bajo control la salida de un LFSR por medio de un segundo LFSR. Entre los generadores

que utilizan esta configuración se encuentran el generador de Beth-Piper, el generador de

Gollman, el generador Bilateral de control de paso y el generador de Pasos Alternados

[24], los cuales se describen a continuación.

5.3.1 Generador bilateral de control de paso (5.3.1 Generador bilateral de control de paso (5.3.1 Generador bilateral de control de paso (5.3.1 Generador bilateral de control de paso (Bilateral StopBilateral StopBilateral StopBilateral Stop----andandandand----Go GeneratorGo GeneratorGo GeneratorGo Generator).).).).

Este generador utiliza dos LFSR ambos con la misma longitud L . La salida del generador

es la operación XOR entre las salidas de cada uno de los LFSR [11]. El control de paso se

realiza de la siguiente forma:

1) Si )1,0())2Lt(a),1Lt(a( ====−−−−++++−−−−++++ , entonces se bloquea el pulso de reloj del LFSR-B.

2) Si )1,0())2Lt(b),1Lt(b( ====−−−−++++−−−−++++ , pero )1,0())2Lt(a),1Lt(a( ≠≠≠≠−−−−++++−−−−++++ , entonces se

bloquea el pulso de reloj del LFSR-A.

Page 89: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

83

a(t+L-1) a(t+L-2) …….. a(t)

b(t+L-1) b(t+L-2) …….. b(t)

L-stages LFSR-2

L-stages LFSR-1

Ф(t)

Ф(t)

ФA(t)

ФB(t)

b(t)

a(t+L-1) a(t+L-2) …….. a(t)

b(t+L-1) b(t+L-2) …….. b(t)

L-stages LFSR-2

L-stages LFSR-1

Ф(t)

Ф(t)

ФA(t)

ФB(t)

b(t)

Figura 5.3. Generador Bilateral de Control de Paso.

El periodo de la secuencia de salida es:

1)25(T 2L −−−−••••==== −−−−

si L L L L se elige de tal manera que T sea primo. Dependiendo del estado inicial, el generador

considerado puede producir hasta 1)23( 2L −−−−•••• −−−− secuencias distintas, todas ellas con el

mismo periodo. La complejidad lineal de la secuencia de salida puede ser de magnitud

aproximada al periodo [11][12].

5.3.1.1 Diseño en VHDL del generador bilateral de control de paso.5.3.1.1 Diseño en VHDL del generador bilateral de control de paso.5.3.1.1 Diseño en VHDL del generador bilateral de control de paso.5.3.1.1 Diseño en VHDL del generador bilateral de control de paso.

En esta parte se mostrará el diseño en VHDL del generador bilateral de control de paso

ya que este, fue el mejor sistema obtenido del trabajo realizado véase referencia

bibliográfica [8]. A su vez se recomienda dirigirse a esta bibliografía para la comparación

con los demás generadores como son: los generadores de Geffe, Beth-Piper, de pasos

alternados, de Gollman y el generador Multivelocidad de Massey-Rueppel. Todos los

dispositivos que se necesitan para el diseño de estos generadores se encuentran en la len

un archivo o librería, entre los dispositivos que se encuentran en esta librería están las

diferentes variaciones de LFSR que se vieron en la sección 5.2.

Page 90: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

84

El funcionamiento de este generador se realiza de la siguiente forma (figura 5.3). Utiliza

dos LFSR ambos con la misma longitud L. La salida del generador es la operación XOR

entre las salidas de cada uno de los LFSR. Este generador hace uso de un LFSR con el

nombre lfsr_bsclfsr_bsclfsr_bsclfsr_bsc, el cual necesita un puerto de habilitación que provocará el cambio de

estado en el lfsr_bsc lfsr_bsc lfsr_bsc lfsr_bsc cada vez que exista una transición positiva en el reloj y exista un 1

en este puerto de habilitación. Además, tiene un puerto de salida que entrega la operación

[not(t+L[not(t+L[not(t+L[not(t+L----1)] nand (t+L1)] nand (t+L1)] nand (t+L1)] nand (t+L----2)2)2)2), de acuerdo al esquema del generador en la figura 5.3. El código

en VHDL que representa al diseño de este generador se muestra en la tabla 5.3.

library ieee;

use ieee.std_logic_1164.all;

library lib_gsp;

use lib_gsp.comps_gsp.all;

entity bilateralstepctrl is

generic(ancho:integer:=4; polinomio:integer:=9; semilla1:integer:=1; semilla2:integer:=1);

-------------ancho = longitud de los LFSR, polinomio = polinomio de los LFSR----------------

--ini# = estado inicial de los LFSR---

port ( clk: in std_logic; --Reloj del sistema--

tap1,tap2: OUT std_logic_vector(ancho-1 downto 0); --Estados del LFSR-1 y LFSR-2--

carga:in std_logic; -- carga la semilla en los LFSR e inicia el proceso--

salida:out std_logic); -- Puerto de salida de los bits generados--

end bilateralstepctrl;

Architecture vhdl of bilateralstepctrl is

signal CTRL_A,salida_a,salida_b,control_A,control_B: std_logic;

begin

L1:lfsr_bsc generic map(ancho=>ancho, polinomio=>polinomio,inicializacion=>semilla1)

port map(ctrl_a,clk,carga,TAP1,control_A,salida_a);

L2:lfsr_bsc generic map(ancho=>ancho, polinomio=>polinomio,inicializacion=>semilla2)

port map(control_a,clk,carga,TAP2,control_B,salida_b);

CTRL_A<= control_A nand (NOT control_B);

SALIDA<=salida_a XOR salida_b;

End vhdl;

Tabla 5.3 Generador Bilateral de control de paso.

5555.3.1.2 Resultados del generador bilateral de control de paso .3.1.2 Resultados del generador bilateral de control de paso .3.1.2 Resultados del generador bilateral de control de paso .3.1.2 Resultados del generador bilateral de control de paso ((((BILATERAL STOPBILATERAL STOPBILATERAL STOPBILATERAL STOP----

ANDANDANDAND----GO GENERATORGO GENERATORGO GENERATORGO GENERATOR).).).).

Los LFSR que se usan en este generador deben tener el mismo grado y la semilla puede

ser la que se desee con excepción de cero ya que si utilizamos esta semilla solo se

generara una secuencia de solo ceros y eso no tiene aplicación práctica. En este caso se

usa LFSR con polinomio primitivo de grado 15:

Page 91: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

85

• LFSR

Polinomio: 15xx1 ++++++++ . Valor en decimal: 16385.

Semilla del LFSR1: 100000000000001. Valor en decimal: 16385.

Semilla del LFSR2: 100000000000011. Valor en decimal: 16387.

El periodo de la secuencia de salida es:

bits 409591)25(1)25(T 2152L ====−−−−••••====−−−−••••==== −−−−−−−−

La complejidad lineal de la secuencia de salida puede ser de magnitud aproximada al

periodo. La simulación de este generador la podemos encontrar en las figuras 5.4 y 5.5.

Figura 5.4 Inicio de la secuencia entregada por el Generador Bilateral de control de Paso

en ns 17.9 t ==== .

Figura 5.5 Final de la secuencia entregada por el Generador Bilateral de control de Paso

en s 819.1979 t µµµµ==== .

Page 92: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

86

Como se muestra en las figuras 5.4 y 5.5, los estados de los LFSR de este generador que

son representados por los puertos tap1 y tap2, permanecen constantes durante 20 ns,

entonces si multiplicamos (en este caso en particular) este tiempo por 40959 bits que es el

periodo teórico del generador y al resultado le sumamos 17.9 ns que es cuando inicia la

secuencia, obtendremos que a los 819.1979 µs se entrega el último bit de la secuencia

generada. Después de este tiempo la secuencia vuelve a repetirse.

5.4 Construcción de CRC5.4 Construcción de CRC5.4 Construcción de CRC5.4 Construcción de CRC---- 32. 32. 32. 32.

Para el diseño del CRC o detector de errores como se vio en el capitulo 3 nosotros

debemos tener en cuenta el polinomio que se usara para este fin, de cuales los mas

usados son el CRC-16 (x16 + x15 + x2 + x0) y CRC-32 (x32 + x26 + x23 + x22 + x16 + x12 + x11 +

x10 + x8 + x7 + x5 + x4 + x2 + x1 + x0) [19], para este diseño nosotros no tenemos limitantes

en cuanto necesitar una semilla de inicialización ya que estos dispositivos se diseñaron

justamente para no depender de esta señal, cave mencionar que como en el sistema

anterior es necesario una señal de reloj que este nos habilitara el funcionamiento de este

elemento.

Hay dos maneras de realizar dicho dispositivo la primera de ellas es mediante el diseño

grafico de este CRC tomando en cuenta la figura 4.4 donde muestra la implementación de

un CRC-16 calculado serialmente, en el cual se muestra donde serán asignados de

manera binaria los coeficientes del polinomio (bits) a usar esto de una forma digital donde

los coeficientes son representados por un compuerta digital XOR estos bits son

desplazados hacia delante para aparecer al final y ser obtenidos del siguiente bit del dato,

si no son eliminados por un segundo bit coincidente de una anterior o de una posterior

resta que es retroalimentada [18]. Para nuestro proyecto se tuvo que diseñar dicho cálculo

serial, ya que el polinomio (CRC-32) que aplicaremos la asignación de los coeficientes es

diferente, quedando como se muestra en la figura 5.6. El cual se realizo por medio de la

herramienta brindada por MAX PLUS Altera donde se muestra la interpretación del

polinomio de grado 32 en forma digital.

Page 93: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

87

Figura 5.6. CRC-32 Presentación grafica en AlteraTM MAX+PLUS II versión 10.1

5.4.1 5.4.1 5.4.1 5.4.1 Diseño VHDL del CRCDiseño VHDL del CRCDiseño VHDL del CRCDiseño VHDL del CRC----32323232

Como se menciono anteriormente hay dos maneras de construir un CRC-32 y la segunda

es por medio del leguaje VDHL, a partir del diseño grafico se puede extraer dicho VHDL,

como se puede observar todas las operaciones se llevan acabo a partir de un conjunto de

dispositivos lógicos como se puede ver en la figura 5.7. A este conjunto se le denomino

como basicobasicobasicobasico por lo que primero se procede a diseñar el VHDL de dicho conjunto ya este

nos proporcionara la creación de nuestros TAPS donde son asignados los coeficientes de

nuestro polinomio, esto es necesario ya que nuestro VHDL principal llamara a este

dispositivo para dicha creación.

Figura No 5.7. Conjunto básico para la contracción del CRC

Page 94: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

88

Tomando en cuenta también el tamaño de nuestro polinomio que este será de grado 32,

que en nuestro lenguaje determina el ancho de los TAPS que creara el VHDL y también

poder construir diferentes tipos de CRC, simplemente es necesario cambiar los

parámetros que se encuentran en la función generic generic generic generic [8].

generic(ancho : integer := 32)generic(ancho : integer := 32)generic(ancho : integer := 32)generic(ancho : integer := 32)

Donde: integer= al grado del polinomio a usar

Esta es una ventaja de usar un lenguaje VHDL sobre un grafico ya que al necesitar hacer

una modificación al polinomio a usar para la construcción de diferentes CRC véase tabla

No 4.1. El modo grafico como se muestra en la figura 5.6, esta diseñado solamente para

un CRC-32 el cual si se necesita cambiar a un polimonio menor por mencionar CRC-16 se

tiene que modificar dicho diseño ya que se usan menos elementos y como se observa de

la figura 4.4 es completamente diferente la asignación de los bits del polinomio donde se

llevan acabo las operaciones para la detección de errores. Por lo tanto nos presenta una

perdida de tiempo.

Caso contrario en el lenguaje VHDL solo se necesita modificar la asignación del polinomio

ubicado en el lenguaje VHDL en la función CONSTANT DCONSTANT DCONSTANT DCONSTANT D, ya que la interpretación en

dicho lenguaje de este es completamente diferente en otras palabras de forma aritmética,

si recordaran al CRC-16 mostrado en este se representa de la siguiente manera x16 + x15 +

x2 + x0 [9] por lo que los bits de los datos para ser transmitidos son representados como

los coeficientes de un número binario largo esto es 10001000000100001 que representa

un polinomio de termino 16. Por lo tanto en nuestro proyecto el numero binario que

representa a un CRC-32 es 100000100110000010001110110110111 que equivale al

polinomio x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + x0 de

termino 32, por lo tanto se encontrara como un valor default del lenguaje, esto es si se

desea usar un polinomio menor, solamente se modificaría la función CONSTANT D CONSTANT D CONSTANT D CONSTANT D y

agregar polinomio menor como los que se indican en la tabla No 4.1 ahorrando tiempo de

de volver a diseñar otro dispositivo. Como se observa en la tabla 5.4 que representa un

CRC-32 en lenguaje VDHL.

Page 95: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

89

library IEEE;use IEEE.STD_LOGIC_1164.all;

USE ieee.std_logic_arith.all;

entity final is

generic(ancho : integer := 32);

port (clk: in std_logic;

crc: out std_logic;

sel: in std_logic;

data: in std_logic);

end final;

architecture fantasy of final is

component basico is port (A,B,C: in std_logic;

CLK: in std_logic;

sel: in std_logic;

Q: out std_logic);

end component;

CONSTANT D : std_logic_vector(ancho downto 0) := "111011011011100010000011001000001" ; -

-"100000100110000010001110110110111";

signal reg: std_logic_vector(ancho-1 downto 0);

signal retro: std_logic;

signal saland: std_logic;

signal intercon: std_logic_vector(ancho-1 downto 0);

signal a: std_logic_vector(ancho-1 downto 0);

signal b: std_logic_vector(ancho-1 downto 0);

signal c: std_logic_vector(ancho-1 downto 0);

begin

-------------Converción de los valores enteros del polinomio y de la semilla a estados logicos----

--D<=conv_std_logic_vector(polinomio,ancho);

----------------------inicio de bloques--------------------------------------------

ffi: for k in ancho-1 downto 0 generate

first: if k=ancho-1 generate

primero: basico port map (a(k),b(k),c(k),CLK,sel,intercon(k));

reg(k)<=intercon(k);

a(k)<=D(k+1);

b(k)<=retro;

c(k)<= '0';

end generate first;

middle: if k < ancho-1 generate

medios: basico port map (a(k),b(k),c(k),CLK,sel,intercon(k));

reg(k)<=intercon(k);

a(k)<=D(k+1);

b(k)<=retro;

c(k)<=intercon(k+1);

end generate middle;

ultimo: if k=0 generate

saland<= D(k) and data;

retro<= saland xor intercon(k);

crc<=reg(k);

end generate ultimo;

end generate ffi;

end fantasy;

Tabla 5.4 Diseño en lenguaje VHDL del CRC-32

Page 96: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

90

5.4.2 Resultados del CRC5.4.2 Resultados del CRC5.4.2 Resultados del CRC5.4.2 Resultados del CRC----32323232

En las figuras 5.8 y 5.9 se pueden observar los resultados obtenidos a partir del diseño

grafico y del lenguaje VHDL del CRC-32, teniendo en cuenta que debido a que no

contamos un tren de datos específicos se procedió a solo introducir datos aleatorios como

prueba, en otras palabras colocar 1’s lógicos en la entrada de datos teniendo por ejemplo

como características que el tren de bits puede iniciar ya sea casi inmediatamente o con un

tiempo mayor después de encender el dispositivo, que cada uno cuenta con una duración

de 20ns 20ns 20ns 20ns y una duración de 60ns60ns60ns60ns entre cada pulso lógico o mas esto depende directamente

del usuario. Teniendo como resultado después de 15ns15ns15ns15ns esta medida es tomada a partir de

que el último dato haya sido enviado hasta que el primer bit de nuestra cadena haya sido

entregado en la salida de este dispositivo notando así que los mismos bits son de la

misma duración, como se pude observar el resultado es el mismo en ambos diseños. La

diferencia entre estas dos ilustraciones radica en que el modo grafico nos presenta la

entrada de los datos del polinomio a usar, caso contrario el VHDL no lo hace ya que este

se introduce como un valor de default.

Figura 5.8 Resultados CRC-32 diseño grafico con inicio del tren t=40nst=40nst=40nst=40ns....

Figura 5.9 Resultados CRC-32 lenguaje VHDL con inicio del tren t=40nst=40nst=40nst=40ns

Page 97: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

91

5.5 Construcción de los dispositivos para transmisión y recepción de 5.5 Construcción de los dispositivos para transmisión y recepción de 5.5 Construcción de los dispositivos para transmisión y recepción de 5.5 Construcción de los dispositivos para transmisión y recepción de

datos.datos.datos.datos.

En esta parte del capitulo se muestra el objetivo de este trabajo que es el diseño de

dispositivos para la transmisión y recepción de datos de una manera eficiente y segura,

esto es posible a partir de la interacción de todos los elementos anteriormente expuestos

dados su comportamiento y resultados. Ya que por medio de la interactividad que nos

brinda nuestra herramienta de simulación AlteraTM MAX+PLUS II versión 10.1 podemos

crear símbolos de nuestros programas (lenguajes VHDL), en otras palabras a estos

dispositivos se les conocen como “cajas negras” en las cuales nosotros no sabemos nada

de su comportamiento interno solamente podemos observar de acuerdo a su

configuración externa entradas y salidas de los dispositivos, para esto utilizaremos el

diseño grafico para crear de una manera clara la construcción de estos dispositivos.

Debemos tomar en cuenta que este diseño contendrá las dos partes que engloban a ciclo

de comunicación con el cual podremos observar la velocidad de generación de las

secuencias de datos durante la transmisión en cada uno de las partes del sistema, así

como también la frecuencia de reloj del FPGA que se escoja. En este caso, todos los

dispositivos se han simulado en un FPGA de la familia MAX9000S (EPM9320LC84-15)

con las herramientas que proporciona ALTERA y no ocupando ninguna directriz especial

de síntesis para la optimización el diseño.

En la figura 5.10 se muestra el diseño grafico del ciclo de comunicación, en el cual

tenemos en cuenta que tanto en la transmisión y la recepción tendrán presentes que el

generador bilateral de control de paso contiene las configuraciones antes expuestas en la

sección 5.3.1.1, así como los polinomios primitivos usados en los LFSR para la generación

de las secuencias pseudoalatorias, cabe aclara que en estos últimos se puede cambiar el

valor del polinomio primitivo con el cual iniciaran los LFSR como se ha dicho

anteriormente ya que entre mas grande sea el polinomio primitivo a usar para cifrar será

mas robusto nuestro sistema, teniendo en cuenta así que para nuestras pruebas se esta

usando un polinomio primitivo de grado 15 esto en ambos lados de la comunicación. Así

como un CRC de 32 bits donde se llevara el proceso de detección de errores dependiendo

la ráfaga de datos que este reciba.

Page 98: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

92

Figura 5.10. Ciclo de comunicación presentación grafica en AlteraTM MAX+PLUS II versión

10.1

En la figura 5.11 se muestra la simulación en la parte de transmisión en un FPGA con un

reloj de 50MHz donde se puede observar que contamos con múltiples entradas o puertos

de los cuales los principales por mencionar son el puerto clockclockclockclock que nos proporcionara los

pulsos de reloj para la habilitación de nuestro dispositivos, mientras tanto cuando en el

puerto carga carga carga carga existe un pulso positivo se cargan en los LFSR que conforman al generador

bilateral de control de paso el valor de la semilla o conjunto de estados iniciales, que en

este caso el LFSR-1 tiene el valor inicial o semilla de 16385, el LFSR-2 tiene una semilla

con el valor de 16387; cuando existe un pulso negativo en el puerto carga, los LFSR

comienzan a realizar las operaciones con sus respectivas semillas. Los puertos de salida

que tienen el nombre de TAP1TAP1TAP1TAP1 y TAP2TAP2TAP2TAP2 muestran cada uno de los estados que los LFSR-1

y LFSR-2 respectivamente, tendrán en cada ciclo de reloj. A su vez el puerto selectselectselectselect

brindara la activación de nuestro CRC esto es si este se encuentra en estado negativo,

trabajara desde el inicio de la carga si este es activado con pulso positivo dependiendo

donde transcurre ese pulso es donde el CRC empezara a trabajar en otras palabras que

ese tiempo en que tarda en trabajar el CRC es el mismo que se presentara a la entrega de

los datos en el receptor y por ultimo el puerto que es la entrada de los datosdatosdatosdatos a transmitir ya

que estos pasaran por nuestros dispositivos tanto para encriptar la información y

detección de errores, cabe aclarar que para pruebas de este dispositivo se crearon

diferentes pulsos que representan dichos datos y el tiempo de duración de estos puede

variar de acuerdo a la información que nosotros introduzcamos por este puerto.

Page 99: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

93

Figura 5.11. Resultados de dispositivo de comunicación

También podemos encontrar las salidas que nos brindaran estos dispositivos, tanto la

cadena cifrante que nos entrega el generador bilateral de paso que se representa en el

puerto salidasalidasalidasalida,,,, así como las salidas TAP1 y TAP2 y puertos de salida LFSR1 y LFSR2

antes mencionados y por ultimo tenemos el puerto de salida CRCCRCCRCCRC que es justamente la

salida de este dispositivo. Las salidas de ambos dispositivos son entregadas a las

entradas de una compuerta lógica XOR ya que esta hará la función de unir las dos

cadenas de bits de los dispositivos tanto la cifrante como la de datos y la salida de esta

compuerta se obtendrá la cadena con la información ya cifrada, la cual será trasmitida por

cualquier medio hacia el receptor. Esto gracias a las propiedades de la compuerta como lo

es la propiedad involutiva donde (X’)’= X.

Lo anterior se puede observar en ambas partes del sistema ya que son las mismas

entradas y salidas tanto en transmisor como el receptor cabe aclarar que este ultimo

también dependerá de las mismas señales de habilitación con las mismas características

que los dispositivos en el transmisor en esta parte es donde se llevara acabo la detección

de errores por medio del CRC-32 y la desencritacion de la información para obtener

nuestros datos originales antes de ser enviados por estos medios.

La información cifrada dada por el transmisor es recibida por otra compuerta XOR en uno

de sus puertos de entrada en un tiempo de 150ns150ns150ns150ns [véase figura 5.11] y el otro puerto de

entrada será alimentada nuevamente por el puerto de salidasalidasalidasalida de otro generador bilateral de

control de paso con los mismos estados iniciales de los LFSR que el del transmisor ya que

esto será la llave para desencriptar nuestra información, como se menciono anteriormente

esto es posible debido a esta compuerta lógica por medio de la propiedad involutiva. Por

lo tanto el puerto de salida de la compuerta XOR será la información original antes de ser

transmitida pero esta no es con certeza dicha información; por lo que se lleva acabo una

Page 100: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

Capitulo V Diseño, pruebas y resultados

94

detección de errores por medio del CRC-32 ya que en esta información pueden

presentarse errores en la transmisión ya sea por el medio de transmisión o si alguien ha

intentado robar dicha información u otras situaciones. Al final este dispositivo entregara la

información original o si se presento un error durante la transmisión como se muestra en el

puerto de salida CRCCRCCRCCRC....

Page 101: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

CONCLUSIONES Y

TRABAJO A FUTURO

Page 102: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

95

CCCConclusionesonclusionesonclusionesonclusiones....

Para encriptar información nosotros podemos usar un solo LFSR pero esto tiene un

periodo menor en la generación de secuencias cifrantes y por ende su robustez es muy

pequeña y esto lleva a que se descubra la llave con la que trabajan dichos LFSR, por eso

la creación de generadores que nos produzcan una mayor robustez y un periodo mayor de

secuencias cifrantes que tienen estos LFSR, siendo así la base de su construcción, donde

estos deben ser diseñados con polinomios primitivos y que esto generan una secuencias

de longitud 1-2L, donde L es el grado del polinomio. El generador bilateral de control de

paso es uno de los mejores generadores ya que este presenta una complejidad (robustez)

alta esto es con el polinomio de grado 15 que usamos en las pruebas se pueden generar

40959 bits para cifrar, generando así una secuencia el orden a una velocidad 50Mb/s,

cabe aclarar que nosotros podemos utilizar polinomios primitivos mas grandes los cuales

nos brindaran mas robustez en nuestros sistemas cifradores. Estos valores podemos

encontrar los valores de otros generadores los cuales se estudian más a fondo en la tesis

“Diseño de arquitecturas digitales para criptografía”.

Hay muchos métodos de detección de errores, el mostrado en este trabajo es uno de los

mejores para detectar errores durante la transmisión de datos entre dos terminales, ya que

es muy común que se presenten por ruido ya sea por dispositivos o medios de transmisión

entre estas, esto significa que en el receptor nosotros podamos interpretar señales que

representan un 1 binario como señales de 0 binario y viceversa. El CRC mas utilizado es

el CRC-16 por lo que se encuentran muchos diseños de este, creando así un diseño único

del CRC-32 en este trabajo que es una interpretación en base al CRC-16, asignando de

forma correcta el polinomio generador correspondiente a este. El CRC-16 detecta errores

en una ráfaga de estos con menos de 16 bits, así que nuestro diseño da más eficiencia en

cuanto a la detección de errores entre los sistemas de datos y redes.

Todos los dispositivos de este proyecto fueron diseñados en VHDL ya que este lenguaje

nos brinda una descripción de cómo funciona el hardware. Dados los resultados obtenidos

Page 103: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

96

podemos decir que tanto el cifrador de flujo y el CRC-32 utilizando un FPGA es una

excelente alternativa ya que las celdas lógicas que componen a este dispositivo solo se

utilizo el 70% de su capacidad, esto debido a que el diseño completo del ciclo que simula

la comunicaron se introdujo completamente en el FPGA EPM9320LC84-15 así como

todos los elementos que con llevan a la creación del generador de secuencias cifrantes y

el CRC. Para pruebas físicas nosotros podemos utilizar un FPGA con menos capacidad de

celdas lógicas por ejemplo el EPM7128SLC84-7 ya que cada uno de estos cubrirá el 50%

del diseño completo por ejemplo en uno solo se cargara con el diseño de transmisor y otro

con la del receptor.

Trabajo a futuro.Trabajo a futuro.Trabajo a futuro.Trabajo a futuro.

Tomando en cuenta que este proyecto el cual esta simulado en AlteraTM MAX+PLUS II

versión 10.1, lo que resta hacer es la adquisición de los FPGA’s, así como el traslado de

nuestro sistema en dos partes, ya que una fungirá como transmisor y una como receptor

por medio de una interfase (incluida en el FPGA), para realizar la pruebas

correspondientes del desempeño de este. A su vez la investigación de cómo convertir un

archivo de cualquier extensión ya se un texto, una imagen, video, audio etc., a un código

binario que pueda ser enviado por un puerto por ejemplo un puerto paralelo de una PC o

de cualquier otro equipo, y esta cadena de bits resultantes sea la que utilizaremos para

poder enviar a través de nuestro sistema, ya sea por medio de la creación de un programa

en cualquier lenguaje de programación orientada a objetos u otro medio. Además se

podrían hacer pruebas del sistema en diferentes medios de transmisión, ya este sistema

esta orientado a el campo de intercomunicación de las redes de datos. Otro trabajo a

realizar seria el diseño de otros detectores de errores dependiendo el modo en que se

transmitirá nuestra información.

Page 104: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

ACRONIMOS

Page 105: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

97

ÍNDICE DE ACRÓNIMOSÍNDICE DE ACRÓNIMOSÍNDICE DE ACRÓNIMOSÍNDICE DE ACRÓNIMOS

ABM Algoritmo de Berlekamp-Massey

ADF Altera Design Files

ASIC Application Specific Integrated Circuit

CDL Computer Design Language

CL Complejidad Lineal

CPLD Complex Programable Logic Device

CRC Cyclic Redundancy Check

DDL Data Description Language

DTE Data Terminal Equipament

FPLD Field Programmable Logic Devices

FPGA Field Programmable Gate Array

FSR Feedback Shift Register

HDL Hardware Description Language

ISPS Instruction Set Processor Specifications

MPGA Mask-Programable Gate Arrays

LFSR Linear Feedback Shift Register

MPLD Mask-Programmable Logic Device

NLFSR NonLinear Feedback Shift Register

PLD Field-Programmable Logic Array

1SC Sphere Complexity

SLFSR Shortest Linear Feedback Shift Register

SMF State Machine Files

VHDL VHSIC Hardware Description Language

VHSIC Very High Speed Integradted Circuits

WDF Waveform Design Files

WC Weight Complexity

XNF Xilinx Netlist Format Files

Page 106: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

BIBLIOGRAFIA

Page 107: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

98

BIBLIOGRAFÍABIBLIOGRAFÍABIBLIOGRAFÍABIBLIOGRAFÍA

[1] Stephen Brown and Jonathan Rose, “Architecture of FPGAs and CPLDs: A Tutorial”.

University of Toronto, Department of Electrical and Computer Engineering.

[2] Oldfield John V., Dorf Richard C., Field Programmable Gate Arrays, John Wiley & Sons

Inc., USA, 1995.

[3] Trimberger Stephen M., Field-Programmable Gate Array Technology, Kluwer Academic

Publishers, USA, 1994.

[4] Wakerly, Jhon F. Diseño digital: Principios y Prácticas, Tercera Edición Pearson Pretice

Hall, México 2001.

[5] Miller Andy, Gulotta Michael; PN Generator Using SRL Macro; Article XILINX XAPP211

June 14, 2004.

[6] Lirn Stephen, Miller Andy; LFSRs as Funtional Blocks in Wireless Aplications; Article

XILINX XAPP220 January 11, 2001.

[7] George Maria, ALfke Peter; Linear Feedback Shift Registers in Virtex Devices; Article

XILINX XAPP210 January 9, 2001.

[8] M en C. Francisco Iván Peralta Constancio., “Diseño de arquitecturas digitales para

criptografía”; Tesis de Maestría; SEPI ESIME Culhuacan, IPN; 2005.

[9] M.J.B. Robshaw, Stream Ciphers, RSA Laboratories Technical Report TR-701, Version

2.0, July 25, 1995.

[10] Rainer A. Rueppel, Analysis and Desing of Stream Ciphers, Springer-Verlag, 1986.

[11] K. Zeng, C. Yang, D. Wei and T. R.N. Rao, “Pseudo-random bit generators in stream-

cipher cryptography”, Computer, 1991.

[12] Bruce Schneier, Applied Cryptography: Protocols Algorithms and Source Code in C,

Second Edition, John Wiley & Sons, INC, 1996.

Page 108: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES

99

[13] A. Menezes P. Van, Oorschot, and S. Vanstone, Handbook of Applied Cyptography,

CRC Press, 1996.

[14] C. Ding, G. Xiao, W. Shan; The Stability Theory of Stream Ciphers; Springer-Verlag

Berlin Heidelberg, 1991.

[15] A. A. Kanso, “The Alternating Step (r,s) Generator”, Sécurite des Communications sur

Internet- SECI02, pp 29-38, September 2002.

[16] J.L. Massey, “Shift register synthesis and BCH decoding”, IEEE Trans. Inform. Theory,

vol 122–127, 1969.

[17] Fred Halsall, Comunicaciones de datos, redes de computadores y sistemas abiertos,

Cuarta Edición, Addison Wesley, EUA 1998

[18] Altera, MAX+PLUS II Corporation, 1997 Article Implementing CRCC in Altera Devices,

Application Note 49, July 1995 ver 1.

[19] Chris Borrelli, IEEE 802.3 Cyclic Redundancy Check Article XILINX XAPP209 March

23, 2001.

[20] J. Bhasker; A VHDL Primer, Third Edition, Prentice Hall, 1999.

[21] Altera, MAX+PLUS II Getting Started, Altera Corporation, 1997.

[22] Z. Salcic, A. Smailagic; Digital System Design and Prototyping Using Field

Programmable Logic; Kluwer Academic Plublishers, Boston/Dordecht/London, 1997.

[23] M. Serra and L. Chen, “Pseudorandom Pattern Generation and Fault Coverage of

Delay Faults with Non Linear Finite State Machine whit High Entropy”, 1998.

[24] D. Gollman, W. G. Chambers, “Clock-Controlled Shift Registers: A review”, IEEE,

vol. 7, pp. 525-533, May 1989.