cap VHDL

download cap VHDL

of 18

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