VHDL

Tabla de contenido

 

 

 

Escribir un comentario

Los comentarios en VHDL se definen con los caracteres ‘—‘.

           

Ejemplo: --Esto es un comentario en VHDL.

 

Importancia: La importancia de documentar los programas es que permiten una persistencia clara y el código puede ser leído por cualquier programador.

 

Scope

Es el alcance que puede tener una variable, método, función, rutina o subrutina.

 

Objetos de información

En vhdl, la información se representa por medio de objetos. Dichos objetos son señales, constantes o variables.

 

         Nombres de Objetos de información

            La nomenclatura de un objeto cumple las siguientes reglas:

1.      El nombre del objeto comienza con un carácter y éste va en minuscula.

2.      dentro del nombre se puede utilizar cualquier carácter alfanumérico.

3.      El nombre no puede ser una palabra reservada.

4.      Si se usan varias palabras para denotar una variable, la primera letra a partir de la segunda palabra va en mayúscula (ver ejemplo).

 

Ejemplos correctos

·        entrada

·        entrada1

·        entradaPuerto

·        entrada_Puerto

 

Ejemplos incorrectos

·        1entrada

·        entradapuerto (El lenguaje lo acepta pero no cumple estándar)

 

 

         Objetos de información SIGNAL

            Los objetos de tipo signal se pueden declarar en los siguientes lugares:

·        Cuando se declara la entidad (entity)

·        En la zona de declaracion de una arquitectura.

·        En la zona de declaracion de un paquete.

 

Declaración de Objetos de información Signal

                       

                                   SIGNAL [nombre] : [tipo] ;

 

            Ejemplos:

·        SIGNAL miSenal : BIT;

·        SIGNAL miSenal : STD_LOGIC;

         Declaración de Arreglos

Se hace utilizando la palabra ‘DOWNTO’ y los tipos BIT_VECTOR y STD_VECTOR.

           

Ejemplo:

Declarar un arreglo de tamaño 11

                        SIGNAL x : STD_VECTOR (10 DOWNTO 0);

                        SIGNAL x : STD_VECTOR (11 DOWNTO 1);

 

Nota: Para usar STD_LOGIC es necesario impotar la libreria correspondiente ya que este fue hecho despues del lanzamiento de la primera version de VHDL. Para hacerlo, escribir lo siguiente en la parte inicial del archivo:

 

                                   LIBRARY ieee;

                                   USE ieee.std_logic_1164.all;

 

Declaration de Enteros

Se declaran enteros para realizar operaciones aritmeticas. No es muy usado en circuitos simples. Los valores que puede tomar la variable se definen con la palabra RANGE.

 

                        Ejemplo:

                                              

SIGNAL x: INTEGER RANGE -127 to 127;

           

         Declaracion de booleanos

            Se usa para definer valores de verdadero (1) y false (0).

 

                        Ejemplo:

                                   SIGNAL x : Bolean;

 

         Definición con tipo (type)

Se usa para definir los tipos de valores que puede tener una variable. Se puede decir que es como definir una estructura de datos para la señal.

 

Ejemplo:

            TYPE posiblesEstados IS (E1, E2, E3,…,En)

            SIGNAL senal : posiblesEstados.

           

Note que esta instrucción permite generar una elevación en el nivel de programación, es decir, se incrementa el nivel de abstracción.

 

Tambien se pueden crear tipos para variables.

 

Ejemplo:

            TYPE byte IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;

            SIGNAL x : byte;

 

         Declaracion de Constantes (constant)

            Se usa para declarar constantes en el entorno.

 

            Ejemplo:

           

CONSTANT miConstante : STD_LOGIC_VECTOR(3 DOWNTO 0) := “ 0101 “

                       

 

 

         Operadores

·        Operadores logicos (precedencia 0)

o       AND

o       OR

o       NAND

o       NOR

o       XOR

o       XNOR

·        Operadores Relacionales (precedencia 1)

o       =

o       /=

o       <

o       <=

o       >

o       >=

·        Operadores Aritmeticos (precedencia 2)

o       +

o      

·        Generacion de signos (precedencia 3)

o       +

o      

 

Definición de Entidad

Es un circuito o subcircuito que se quiere expresar en VHDL. Existen dos secciones dentro de una entidad, estas son:

  • Declaraciones de entidad: Aquí se declaran todas las variables que se van a usar en la entidad. Note que el Scope de las variables es la entidad. Los posibles modos de señal para una entidad son:
    • IN = “Se una para señales de entrada”
    • OUT = “Se usa para señales de salida”
    • INOUT = “Se usa para señales de entrada-salida”
    • BUFFER = “Se usa para señales que saldrán de la entidad”.
  • Arquitectura de la entidad: Da los detalles de la entidad.

 

Ejemplo de entidad:

Implementacion de un ‘full-adder’

 

      LIBRARY errr;

      USE ieee.std_logic_1164.all;

 

      ENTITY fullAdder IS

                  PORT (cin, x, y : IN STD_LOGIC;

                             s, cout : OUT STD_LOGIC);

      END fullAdder;

 

      ARCHITECTURE funcion of fullAdder IS

                  BEGIN

                             s <= x XOR y XOR cin;

                             cout <= (x AND y) OR (x AND cin) OR (y AND cin);

      END funcion