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.
Es el alcance que puede tener una variable, método, función, rutina o subrutina.
En vhdl, la información se representa por medio de objetos. Dichos objetos son señales, constantes o variables.
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)
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.
SIGNAL [nombre] : [tipo] ;
Ejemplos:
·
SIGNAL miSenal : BIT;
·
SIGNAL miSenal : STD_LOGIC;
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;
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:
Se usa para definer valores de verdadero (1) y false (0).
Ejemplo:
SIGNAL x : Bolean;
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;
Se usa para declarar constantes en el entorno.
Ejemplo:
CONSTANT miConstante : STD_LOGIC_VECTOR(3 DOWNTO 0) := “ 0101 “
· 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 –
Es un circuito o subcircuito que se quiere expresar en VHDL. Existen dos secciones dentro de una entidad, estas son:
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