diseño de sistemas electronico vhdl

6
1 VHDL: CARACTERÍSTICAS GENERALES VHDL: lenguaje orientado a la descripción o modelado de Hw similar a lenguajes de alto nivel de propósito general (ADA en especial): de ellos hereda: • Concepto de tipo de datos, con posibilidad de definir nuevos tipos → facilita la descripción de circuitos con diversos niveles de abstracción. •Sentencias de control de flujos (if, for while). Junto con la característica anterior → potencia para desarrollar algoritmos. •Capacidad de estructurar el código (subprogramas, funciones o procedimiento), permite afrontar algoritmos complejos. •Posibilidad de utilizar y desarrollar bibliotecas de diseño, Incorpora conceptos específicos para el modelado del Hw, como concurrencia y ciclo de simulación. Circuitos en VHDL y ejemplos de aplicación Interfaces Interfaz teclado matricial de 16 teclas Interfaz CAD AD7823 Interfaz CDA AD7303 Interfaz de 8 bits para visualizador LCD Interfaz CAD PMOD-AD1 Interfaz CDA PMOD-DA1 Interfaz teclado PS2 Interfaz ratón PS2 Transmisor / receptor serie asíncrono RS232 Interfaz monitor VGA Teclado y LCD virtuales a través de RS232 Menú a través de LCD Memorias Memoria FIFO basada en SRAM placa S3 Acceso a memoria SRAM placa S3 a través de módulo USB Prueba básica de placas de desarrollo Test de placas XC2XL y DIO1 de Digilent Test de placas D2SB y DIO4 de Digilent Test de placa S3 de Digilent Test de placa XUPV2PRO de Digilent

Upload: omar-ortiz

Post on 30-Jun-2015

550 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Diseño de Sistemas Electronico VHDL

1

VHDL: CARACTERÍSTICAS GENERALESVHDL: lenguaje orientado a la descripción o modelado de Hw similar a lenguajes de alto nivel de propósito general (ADA en especial): de ellos hereda:• Concepto de tipo de datos, con posibilidad de definir nuevos tipos → facilita la descripción de circuitos con diversos niveles de abstracción.•Sentencias de control de flujos (if, for while). Junto con la característica anterior → potencia para desarrollar algoritmos.•Capacidad de estructurar el código (subprogramas, funciones o procedimiento), permite afrontar algoritmos complejos.•Posibilidad de utilizar y desarrollar bibliotecas de diseño,Incorpora conceptos específicos para el modelado del Hw, como concurrencia y ciclo de simulación.

Circuitos en VHDL y ejemplos de aplicación

Interfaces

Interfaz teclado matricial de 16 teclas Interfaz CAD AD7823 Interfaz CDA AD7303 Interfaz de 8 bits para visualizador LCD Interfaz CAD PMOD-AD1 Interfaz CDA PMOD-DA1 Interfaz teclado PS2 Interfaz ratón PS2 Transmisor / receptor serie asíncrono RS232 Interfaz monitor VGA Teclado y LCD virtuales a través de RS232 Menú a través de LCD

Memorias

Memoria FIFO basada en SRAM placa S3 Acceso a memoria SRAM placa S3 a través de módulo USB

Prueba básica de placas de desarrollo

Test de placas XC2XL y DIO1 de Digilent Test de placas D2SB y DIO4 de Digilent Test de placa S3 de Digilent Test de placa XUPV2PRO de Digilent

Circuitos de sincronización básicos

Circuito antirrebotes para pulsador Circuito detector de flancos Registro de sincronización de 8 entradas Circuito antirrebotes y sincronizador para 1 y 8 entradas

Page 2: Diseño de Sistemas Electronico VHDL

2

Circuito antirrebotes y detector de flancos para 5 pulsadores

Circuitos de control de visualizadores

Control LEDs placa DIO1 con registro Control LEDs placa DIO4 con registro Control visualizador dinámico placa DIO1 sin decodificador Control visualizador dinámico placa DIO1 con decodificador Control visualizador dinámico placa DIO4 con decodificador Control visualizador dinámico placa S3 con decodificador

Divisores de reloj

Divisor de reloj múltiple a partir de 50 MHz Divisor de reloj múltiple a partir de 100 MHz Divisor de reloj por 25, 50, 100 y 1000

VerilogVerilog es un lenguaje de descripción de hardware (HDL, del Inglés Hardware Description Language) usado para modelar sistemas electrónicos. El lenguaje, algunas veces llamado Verilog HDL, soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta a diferentes niveles de abstracción.

El lenguaje tiene un preprocesador como C, y la mayoría de palabras reservadas de control como "if", "while", etc, son similares. El mecanismo de formateo en las rutinas de impresión y en los operadores del lenguaje (y su precedencia) son también similares.

A diferencia del lenguaje C, Verilog usa Begin/End en lugar de llaves para definir un bloque de código. Por otro lado la definición de constantes en Verilog requiere la longitud de bits con su base.

La ejecución de las sentencias no es estrictamente lineal. Un diseño en Verilog consiste de una jerarquía de módulos. Los módulos son definidos con conjuntos de puertos de entrada, salida y bidireccionales. Internamente un módulo contiene una lista de cables y registros. Las sentencias concurrentes y secuenciales definen el comportamiento del módulo, describiendo las relaciones entre los puertos, cables y registros. Las sentencias secuenciales son colocadas dentro de un bloque begin/end y ejecutadas en orden secuencial, pero todas las sentencias concurrentes y todos los bloques begin/end son ejecutadas en paralelo en el diseño. Un módulo puede contener una o más instancias de otro módulo para definir un sub-comportamiento.

Verilog fue inventado por Phil Moorby en 1985 mientras trabajaba en Automated Integrated Design Systems, más tarde renombrada Gateway Design Automation. El

Page 3: Diseño de Sistemas Electronico VHDL

3

objetivo de Verilog era ser un lenguaje de modelado de hardware. Gateway Design Automation fue comprada por Cadence Design Systems en 1990. Cadence ahora tiene todos los derechos sobre los simuladores lógicos de Verilog y Verilog-XL hechos por Gateway.

DEFINICIÓN DE LAS SIGLAS ABEL

ABEL es una marca registrada de Data I/O Corporation y es el acrónimo de Advanced Boolean Expression Language, permite implementar diseños lógicos en dispositivos lógicos programables. Puede ser utilizado para programar cualquier tipo de PLD y, por tanto, es un lenguaje independiente del dispositivo. El lenguaje ABEL se ejecuta en un computador conectado a un programador de dispositivos, independiente del lenguaje, en el que se inserta el PLD.

Un lenguaje de programación PLD está respaldado por un procesador de lenguaje PLD denominado compilador. La tarea del compilador es traducir un archivo de texto escrito en el lenguaje en un patrón de fusibles para el PLD físico.

ESTRUCTURA INTERNA

A continuación se presenta la estructura típica de un programa en el lenguaje ABEL y un ejemplo del mismo:

Estructura:

module nombre del módulo [title string] [deviceID device deviceType;] declaraciones de pin otras declaraciones equations ecuaciones [Test_Vectors] tested vectores end nombre de módulo

En la estructura se identifican las siguientes características:

Un archivo de programa comienza con el enunciado module, que asocia un nombre (por ejemplo: Decodificador_de_Memoria) con el módulo del programa. Los programas grandes pueden tener múltiples módulos, cada uno con su propio título local, declaraciones y ecuaciones. El nombre del módulo puede ser cualquier identificador válido.

Los identificadores deben comenzar con una letra o un guión, pueden contener hasta 31 letras, dígitos y guiones, y son distinguibles las minúsculas y mayúsculas.

El enunciado title especifica una cadena como un título que se insertará en los archivos de documentación que sean creados por el compilador.

Una cadena es una serie de caracteres encerrados entre comillas simples.

La declaración device incluye un identificador de dispositivo (por ejemplo: `P16L8' para un PAL16L8). El compilador usa el identificador del dispositivo en los nombres de los archivos de

Page 4: Diseño de Sistemas Electronico VHDL

4

documentación que genera, y usa el tipo de dispositivo para determinar si éste puede en realidad realizar las funciones lógicas requeridas en el programa.

La directiva @ALTERNATE le dice al compilador que reconozca un conjunto alterno de símbolos para denotar las operaciones lógicas; los cuales se presentan a continuación:

Operación Lógica Símbolo ABEL Notación Booleana Notación ABEL

* AND & AB A & B

+ OR # A + B A # B

/ NOT ! !A

:+: XOR $ A " B A $ B

:*: XNOR !$ A " B A !$ B

Por ejemplo, la siguiente expresión lógica:

Y= ( + B + + D) (A + B + E)

en lenguaje ABEL sería:

Y= (!A # B # !E # D) & (A # B # E)

o Los comentarios comienzan con una doble comilla y terminan con otra doble comilla o el fin de la línea, lo que ocurra primero.

o Las declaraciones de terminales le indican al compilador los nombres simbólicos asociados con las terminales externas del dispositivo. Las señales cuyos nombres tienen el prefijo NOT (/) son activas bajas en la terminal externa; las otras son activas altas.

o Otras declaraciones permiten al diseñador definir constantes y macros para simplificar el diseño del programa y mejorar su legibilidad.

o El enunciado equations indican qué ecuaciones lógicas definen señales de salida como función de las señales de entrada que correspondan.

o El enunciado end marca el fin del módulo.

CONCLUSIONES

o Es un lenguaje independiente del dispositivo, por lo que se puede utilizar para programar cualquier tipo de PLD.

o El diseño lógico puede ser descrito he introducido en tres formatos distintos, mediante ecuaciones, tablas de verdad y diagramas de estado.

o El diseño puede ser simulado para asegurarse de que no existan errores en el mismo.

o Mediante el proceso de la síntesis lógica el lenguaje optimiza y minimiza el diseño.

o Se ahorra más espacio y tiempo; ya que con la lógica MSI se utilizan mayor cantidad de compuertas y alambrado que con las aplicaciones del PLD programados con el lenguaje ABEL.

Page 5: Diseño de Sistemas Electronico VHDL

5

ABEL es la abreviatura de Advanced Boolean Expression Language. Es un lenguaje de descripción de hardware y un conjunto de herramientas de diseño para programar dispositivos lógicos programables (PLDs).

Características

ABEL permite describir un diseño concurrentemente mediante tablas de verdad o ecuaciones lógicas. Otra opción que permite es definir vectores de test (patrones de entradas y salidas) que pueden ser programados en el hardware.