cap VHDL
Transcript of cap VHDL
-
{
CIRCUITOS DIGITALES AVANZADOS
Nociones bsicas VHDL
-
VHDL no distingue entre MAYSCULAS y minsculas.
Pueden incluirse comentarios, se inician con el smbolo repetido "--" se ignora todo lo que sigue hasta final de lnea.
Cada etapa descriptiva se cierra con el smbolo ";".
Elementos bsicos de la descripcin digital son las seales (signal);
Se utiliza el tipo std_logic (standard logic):
'0' - cero '1' - uno valores booleanos tpicos
'X - desconocido
'Z - alta impedancia propio de tri-estado
'U' - sin inicializar biestables en su situacin previa.
'-' - no importa (dont care) indiferente (para simplificacin)
'L - 0 dbil 'H', -1dbil 'W', - desconocido dbil
Nociones bsicas
-
Valores de una seal se expresan entre comillas simples: '0', '1
Los valores X y L no admiten la minscula.
Los tres primeros valores (0, 1, X) son de tipo fuerte, si se encuentran dos de ellos aplicados sobre un nudo el resultado es X (desconocido).
Los valores dbiles corresponden a determinadas situaciones circuitales. Si confluyen con algn valor fuerte, dan como resultado dicho valor fuerte. Si se encuentran dos valores dbiles sobre un nudo el resultado es W.
Nociones bsicas
-
Conjunto de seales = vector, std_logic_vector.
Puede ser declarado en forma ascendente std_logic_vector (0 to 7) o descendente std_logic_vector (7downto 0).
El conjunto de valores que adopta un vector se expresa entre
comillas dobles: por ejemplo, "11010001"
Nociones bsicas
-
Cuando se trabaja con un conjuntos de seales (vectores), se utiliza
tambin el tipo integer (entero) que debe ser declarado para un rango determinado: integer range 0 to 15 (seal de 4 bits).
VHDL bsico define los tipos bit y bit_vector, admiten slo los dos valores booleanos 0 y 1.
Los tipos standard logic han sido introducidos en la normalizacin hecha por IEEE y requieren la declaracin de la librera.
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
Nociones bsicas
-
Con el paquete ieee.std_logic_unsigned las operaciones se realizan en binario natural.
Si se desea efectuarlas en complemento a2 debe utilizarse el paquete ieee.std_logic_signed.
Se dispone de dos funciones muy tiles: CONV_INTEGER(a) que convierte el std_logic_vector a en integer. CONV_STD_LOGIC_VECTOR (b,n) que convierte el integer b en vector de longitud n.
Nociones bsicas
-
Las operaciones bsicas entre seales son:
asignacin: < >=
-
La asignacin de valores a una seal puede hacerse directamente o por medio de operaciones entre seales:
signal a, b, c, Y: std_logic_vector(3 downto 0);
signal m, n: integer range 0 to 15; -- 4 bits
y '1', others => '0'); -- equivale a la anterior ("1001")
m
-
signal a, b, c, Y: std_logic_vector(3 downto 0);
signal m, n: integer range 0 to 15;
y
-
signal a, b, c, Y: std_logic_vector(3 downto 0);
signal m, n: integer range 0 to 15;
y
-
VHDL describe por un lado la caja del circuito con sus entradas y salidas o los terminales de conexin hacia el
exterior, y eso se hace en un mdulo denominado entity.
En otro mdulo denominado architecture, se describe lo que hace el circuito, es decir, su funcionamiento interno
Nociones bsicas
-
declaracin de libreras
mdulo de terminales entity nombre_de_la_entidad is port(
declaracin de entradas y salidas ); end nombre_de_la_entidad;
mdulo de funciones architecture nombre_de_la_arquitectura of nombre_de_la_entidad is signal declaracin de seales internas begin
descripcin del funcionamiento (asignaciones) end nombre_de_la_arquitectura ;
Nociones bsicas
-
Nociones bsicas
signal control : integer range 0 to 3; y
-
Nociones bsicas
entrada
-
ASIGNACIONES CONCURRENTES Son asignaciones concurrentes aquellas que se ejecutan siempre y directamente
sobre una seal; de forma que una seal no puede recibir dos asignaciones ocurrentes.
Fijas: seal
-
ASIGNACIONES SECUENCIALES
Las asignaciones secuenciales se encuentran dentro de un mdulo
denominado proceso (process) y no se ejecutan hasta que se ha terminado de leer todo el mdulo.
No corren peligro de imponer doble valor a una misma seal, pues son consideradas en el orden en que estn escritas y solamente se aplica la ltima efectiva de ellas.
nombre_del proceso (opcional): process (lista de sensibilidad)
begin
asignaciones
end process;
Nociones bsicas
-
ASIGNACIONES SECUENCIALES
La lista de sensibilidad = seales que actan en el proceso . Debe contener todas las seales que actan como entradas sobre el proceso.
Condicionales: if ....... then seal
-
ASIGNACIONES SECUENCIALES
Dentro de un proceso no pueden utilizarse asignaciones con when o con with y,
las estructuras if y case no pueden utilizarse fuera de procesos. process (control,L3,L2,L1,L0)
begin
if control = 0 then y