You are on page 1of 5

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

Circuitos de sincronización básicos

• Circuito antirrebotes para pulsador


2

• Circuito detector de flancos

• Registro de sincronización de 8 entradas

• Circuito antirrebotes y sincronizador para 1 y 8 entradas

• 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

Verilog
Verilog 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
3

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
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.
4

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
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.
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.