06_Diseño MSI con VHDL

download 06_Diseño MSI con VHDL

of 44

Transcript of 06_Diseño MSI con VHDL

  • Captulo 2. - Diseo de Circuitos Lgico con VHDL

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Desarrollo de Lenguajes para

    Descripcin de Hardware

    1970s

    IDL/IBM, HDL/TI, ZEUS/GE Desarrollo en rea Industrial

    AHPL, DDL, CDL, ISPS Desarrollo en rea Acadmica

    1970s

    IDL/IBM, HDL/TI, ZEUS/GE Desarrollo en rea Industrial

    AHPL, DDL, CDL, ISPS Desarrollo en rea Acadmica

    1980s

    AHDL, ABEL, CUPL

    VHDL y Verilog

    1980s

    AHDL, ABEL, CUPL

    VHDL y Verilog

    Departamento de la Defensa de los E.U.A.

    Departamento de la Defensa de los E.U.A.

    Programa: Very High Speed Integrated Circuits (VHSIC)Programa: Very High Speed Integrated Circuits (VHSIC)

    1983 VHDL Desarrollo: IBM, Texas Instruments e

    Intermetrics

    1983 VHDL Desarrollo: IBM, Texas Instruments e

    Intermetrics

    1987 VHDL87: Estndar IEEE -1076

    1987 VHDL87: Estndar IEEE -1076

    1993 VHDL93: Estndar IEEE -1164

    1993 VHDL93: Estndar IEEE -1164

    2003 VHDL03: Revisin2003 VHDL03: Revisin

    Historia del VHDL

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Adicin de la extensin analgica (IEEE1076.1) que permite la especificacin, simulacin y sntesis de sistemas digitales, analgicos y mixtos

    Facilitar la Verificacin/Prueba y puesta a punto del sistema a disear.

    Capacidad descriptiva del comportamiento del sistema en distintos niveles de abstraccin:

    Algortmico, RTL (Register Transfer Logic) o concurrente, estructural (Lgico), Netlist.

    Reutilizacin de Cdigo

    Independencia de la Tecnologa y Proceso de Fabricacin (CMOS, Bipolar, BiCMOS)

    Independencia de la Metodologa de Diseo (PLDs, ASICs, FPGAs)

    Independencia del Sistema de Desarrollo

    Disponibilidad al Pblico

    Notacin Estandarizada

    Ventajas del VHDL

    Ventajas del VHDL

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Palabras reservadas Son las instrucciones, rdenes y elementos que permiten definir sentencias.

    Cadenas de bits Los tipos bit y bit_vector son en realidad tipo carcter y arreglo de caracteres respectivamente, se coloca un prefijo para indicar la base : O126, XFE

    Cadenas Son un conjunto de caracteres englobados por comillas dobles: hola

    Caracteres Es cualquier letra o carcter entre comillas simples: 3, t

    Nmeros Se considera que se encuentra en base 10, se admite la notacin cientfica convencionales posible definir nmeros en otras bases utilizando el smbolo # : 2#11000100#

    Identificadores Es lo que se usa para dar nombre a los diferentes objetos del lenguaje.

    Smbolos especiales Existen caracteres especiales sencillos como (&, #, +, *, =) o dobles como ( :=,

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Clear_8Clear#8 Un identificador no puede utilizar smbolos especiales

    Resta_4_Resta__4Dos guiones bajos no son permitidos

    S4_bitsS_4bitsSegundo carcter no puede ser un guin bajo ( _ )

    Suma44SumaPrimer carcter debe ser siempre una letra mayscula o minscula

    CorrectoIncorrectoReglas para especificar un identificador

    En VHDL, un identificador en maysculas es igual a su contraparte en minsculas

    Palabras reservadas por VHDL no pueden ser identificadores

    Longitud (Nmero de Caracteres): Sin restricciones

    Estn formados por nmeros, letras (maysculas o minsculas) y guin bajo _ con las reglas especificadas en la tabla siguiente.

    Identificadores

    Nombres o etiquetas que se usan para referirse a: Variables, Constantes, Seales, Procesos, Entidades, etc.

    Identificadores del VHDL

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Lista de palabras reservadas en VHDL

    Palabras reservadas

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    = /= <

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Objetos y Tipos de Datos

    File

    Seales

    Variables

    Constantes

    Objetos VHDL

    Escalares

    Compuestos

    Access (Acceso)

    Array (Arreglos)

    Record (Registro)

    Enumerated(Enumerados)

    Integer (Enteros)

    Floating Point (Punto Flotante)

    Physical (Fsicos)

    No soportado por herramientas de Sntesis

    Tipo DatosObjetos

    Real

    Time (Tiempo)

    std_logic(U,X,0,1,Z,W,L,H,-)

    std_ulogic

    String (Cadena-Caracteres)

    Character (Carcter)

    Bit (0, 1)

    Booleano (False, True)

    Enteros [-(231-1) a (231-1)]

    Natural (No-Negativos)

    Positive (No-Cero y No-Negativos)

    Signed

    Unsigned

    Std_logic_vector

    Std_ulogic_vector

    Bit_Vector

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Objetos de Datos

    Constantes

    Una constante es un elemento que puede tomar un nico valor de un tipo dato, las constantes pueden ser declaradas dentro de entidades, arquitecturas, procesos y paquetes.

    Constantes

    Una constante es un elemento que puede tomar un nico valor de un tipo dato, las constantes pueden ser declaradas dentro de entidades, arquitecturas, procesos y paquetes.

    CONSTANT identidicador : tipo := valor;

    Ejemplo

    CONSTANT byte: integer := 8;

    CONSTANT identidicador : tipo := valor;

    Ejemplo

    CONSTANT byte: integer := 8;

    Un objeto de datos en VHDL es un elemento que toma un valor de algn tipo de dato

    determinado, segn sea el tipo de dato, y poseer un conjunto de propiedades.

    Un objeto de datos en VHDL es un elemento que toma un valor de algn tipo de dato

    determinado, segn sea el tipo de dato, y poseer un conjunto de propiedades.

    En VHDL los objetos de datos son generalmente de una de las tres clases

    siguientes:

    -CONSTANTES

    -VARIABLES

    -SEALES

    En VHDL los objetos de datos son generalmente de una de las tres clases

    siguientes:

    -CONSTANTES

    -VARIABLES

    -SEALES

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Objetos de Datos

    Variables

    Las variables pueden ser modificadas cuando sea necesario, pueden ser declaradas solamente dentro de los procesos y subprogramas.

    Variables

    Las variables pueden ser modificadas cuando sea necesario, pueden ser declaradas solamente dentro de los procesos y subprogramas.

    VARIABLE identidicador : tipo [:= valor];

    Ejemplo

    VARIABLE aux1, aux2: bit;

    VARIABLE identidicador : tipo [:= valor];

    Ejemplo

    VARIABLE aux1, aux2: bit;

    SIGNAL identidicador : tipo [:= valor];

    Ejemplo

    SIGNAL A, B : bit := 0;

    SIGNAL dato: bit_vector (7 downto 0);

    SIGNAL identidicador : tipo [:= valor];

    Ejemplo

    SIGNAL A, B : bit := 0;

    SIGNAL dato: bit_vector (7 downto 0);

    Seales

    Las seales si pueden almacenar o pasar valores lgicos, por lo tanto, representan elementos de memoria o conexiones y si pueden ser sintetizadas. Son declaradas en las arquitecturas antes del BEGIN.

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Variables y Seales

    SEALES Y VARIABLESSEALES Y VARIABLES

    SEALES:

    Se declaran igual que las constantes y variables. La diferencia es que pueden ser normal, register y bus. Si no se especifica nada en la declaracin el compilador entender que es del tipo normal. Se puede decir que la seal tiene dos partes una donde se escribe y otra donde se lee. Las seales pueden ser declaradas slo en las arquitecturas, paquetes (PACKAGE) o en bloques concurrentes (BLOCK).

    Utilizadas en ejecuciones concurrentes.

    SEALES:

    Se declaran igual que las constantes y variables. La diferencia es que pueden ser normal, register y bus. Si no se especifica nada en la declaracin el compilador entender que es del tipo normal. Se puede decir que la seal tiene dos partes una donde se escribe y otra donde se lee. Las seales pueden ser declaradas slo en las arquitecturas, paquetes (PACKAGE) o en bloques concurrentes (BLOCK).

    Utilizadas en ejecuciones concurrentes.

    VARIABLES:

    Es similar al concepto de variable en otros lenguajes. Su valor puede ser alterado en cualquier instante y se le puede asignar un valor inicial. Las variables slo se declaran en los procesos o subprogramas.

    Utilizadas en ejecuciones en serie.

    VARIABLES:

    Es similar al concepto de variable en otros lenguajes. Su valor puede ser alterado en cualquier instante y se le puede asignar un valor inicial. Las variables slo se declaran en los procesos o subprogramas.

    Utilizadas en ejecuciones en serie.

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    SEALES Y VARIABLESSEALES Y VARIABLES

    --Uso incorrecto de las seales

    ARCHITECTURE ejem1 OF entidad IS

    SIGNAL a, b, c, x, y : INTEGER;

    BEGIN

    P1: PROCESS (a,b,c)

    BEGIN

    c

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Estructura General de un Programa VHDLEstructura General de un Programa VHDL

    Unidades de Diseo (design units)Unidades de Diseo (design units)

    Declaracin de Entidad (entity declaration)

    Unidad Primaria

    Declaracin de Entidad (entity declaration)

    Unidad Primaria

    Configuracin (configuration)

    Unidad Primaria

    Configuracin (configuration)

    Unidad Primaria

    Declaracin de Paquete (package declaration)

    Unidad Primaria

    Declaracin de Paquete (package declaration)

    Unidad Primaria

    Arquitectura (architecture)

    Unidad Secundaria

    Arquitectura (architecture)

    Unidad Secundaria

    Cuerpo del Paquete (package body)

    Unidad Secundaria

    Cuerpo del Paquete (package body)

    Unidad Secundaria

    Cada uno formado por declaraciones o

    instrucciones que definen, estructuran, analizan y

    evalan el comportamiento de un sistema digital

    Unidades indispensables en la descripcin de un sistema

    Estructura de VHDL

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    entidad (entity) Bloque elemental de diseoentidad (entity) Bloque elemental de diseo

    Circuitos elementales digitales que forman de manera individual o en conjunto un sistema digitalCircuitos elementales digitales que forman de manera individual o en conjunto un sistema digital

    Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores, Contadores, Multiplicadores, ALUs, Neurona-Digital, etc.Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores, Contadores, Multiplicadores, ALUs, Neurona-Digital, etc.

    Entidad - Qu es?

    Declaracin de una entidad Consiste en la descripcin de los puertos de entrada o salida de un circuito, el cual es identificado como una entidad (entity)Declaracin de una entidad Consiste en la descripcin de los puertos de

    entrada o salida de un circuito, el cual es identificado como una entidad (entity)

    Entidad

    Sumador

    Cin

    A

    B

    Cout

    SUMAPuertos de SalidaPuertos de Entrada

    Ejemplo-1: SumadorEjemplo-1: Sumador

    Importante!

    No se describe cmo ser realizado o implementado el circuito, es decir, su Arquitectura

    Importante!

    No se describe cmo ser realizado o implementado el circuito, es decir, su Arquitectura

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Entidad - Cmo se describe a un Puerto?

    Descripcin de un Puerto

    Identificador

    Nombre

    bufferSimilar al Puerto de Salida (Escritura), pero adems puede ser ledo.

    El valor ledo (Entrada) es el mismo valor asignado (Salida) al puerto.

    inoutPuerto de Entrada (Lectura) y Salida (Escritura)

    El valor ledo (Entrada) es aqul que llega al puerto, y no el valor que se le asigna (Salida), en caso de existir.

    out = Salida

    in = Entrada

    Modo

    Ms tipos Se irn introduciendo conforme avance el curso

    Arreglos de std_logicstd_logic_vector

    (pkg.std_logic_1164)

    Valores U, X, 0, 1, Z, W, L, H, -

    std_logic(pkg.std_logic_1164)

    Nmeros enterosinteger(pkg.standard)

    Conjunto de bits que representa a un grupo de seales de ent. o sal.

    bit_vector(pkg.standard)

    Define valores de cierto o falso de acuerdo con una expresin

    boolean(pkg.standard)

    Valores de 0 o 1Lgicobit (pkg.standard)

    Conjuntos de Valores que se les ha asignado un nombre (p.ej. bit, boolean, bit_vector, etc), de tal forma que un objeto (p.ej. una Seal) de un determinado Tipo (p.ej. el tipo bit_vector) pueda tomar cualquier valor dentro del conjunto de valores que define al Tipo especificado.

    Tipo de Dato

    Paquete (pkg.) en el cual es definido el tipo. Ver: Uso de Libreras y Paquetes

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    --Declaracin de la entidad de un circuito sumador

    entity sumador is

    port (A, B, Cin: in bit;

    SUMA, Cout: out bit);

    end sumador;

    1

    2

    3

    4

    5

    Sumador-completo de dos datos con longitudes de 1-bit

    (Declaracin de Entidad)

    Lnea N.

    Entidad

    Sumador

    Cin

    A

    B

    Cout

    SUMAPuertos de SalidaPuertos de Entrada

    Entidad - Ejemplo: Sumador Completo

    (--) Indica Comentario

    (;) Finaliza declaracin o subdeclaracin

    Identificador de la entidad

    (entity) Inicia declaracin de la entidad

    (end) Finaliza declaracin de la entidad

    Nombres de los puertos

    Modo de Operacin

    Tipo de Dato

    Ejemplo-2: Sumador

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Entidad - Uso de Libreras y Paquetes

    Biblioteca (library)Lugar donde se almacenan los Paquetes definidos por el fabricante de la herramienta de desarrollo o el usuario.

    Lugar donde se permite almacenar resultados de la compilacin de diseos, con el fin de utilizarlos en otros.

    PaquetesUn paquete contiene:

    Declaraciones de Tipos y Subtipos de Datos

    Definiciones de Constantes

    Definiciones de Funciones y Procedimientos

    Declaraciones de Componentes (Sumadores, Restadores, Contadores, Multiplicadores, etc)

    Un Paquete = Macro-Unidad de Diseo

    ieee

    workuser

    Objetivo: Facilitar el diseo

    xcs

    t

    d

    _

    l

    o

    g

    i

    c

    _

    1

    1

    6

    4

    s

    t

    d

    _

    l

    o

    g

    i

    c

    _

    a

    r

    i

    t

    h

    c

    o

    m

    p

    s

    _

    d

    s

    p

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Entidad - Uso de Libreras y Paquetes

    Paquetes

    Bibliotecas

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Entidad - Uso de Libreras y Paquetes

    Para llamar un paquete es necesario llamar a la librera/biblioteca que lo contiene (donde ha sido compilado)

    Para llamar un paquete es necesario llamar a la librera/biblioteca que lo contiene (donde ha sido compilado)

    Sintaxis: use nombre_librera.nombre_paquete.all;Sintaxis: use nombre_librera.nombre_paquete.all;

    Ejemplo: use ieee.std_logic_1164.all;Ejemplo: use ieee.std_logic_1164.all;

    Permite el uso de todos los componentes almacenados en el paquete

    Uso del paquete std_logic_1164 incluido en la biblioteca ieee

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Entidad - Uso de Libreras y Paquetes

    Define tipos, subtipos, constantes y funciones complementarios para el paquete std_logic_1164.

    std_logic_misc

    Define operadores aritmticos sobre el tipo std_logic_vector y los considera como operadores signados.

    std_logic_signed

    Define operadores aritmticos sobre el tipo std_ulogic_vector y los considera como operadores no-signados.

    std_logic_unsigned

    Synopsys

    IEEE

    Contiene tipos bsicos: bit, bit_vector, integer

    Paquete incluido por omisin.standard

    Standard

    Define tipos de vectores signados y no-signados, y todos los operadores aritmticos sobre estos tipos.

    Define funciones extendidas y de conversin para dichos tipos.

    std_logic_arith

    Define tipos de vectores signados y no-signados basados en el tipo std_logic. Paquete equivalente al Paquete std_logic_arith

    numeric_std

    Define tipos de vectores signados y no-signados basados en el tipo bit y todos los operadores aritmticos sobre estos tipos.

    Define funciones extendidas y de conversin para dichos tipos.

    numeric_bit

    Define los tipos: std_logic, std_ulogic, std_logic_vector, std_ulogic_vector

    Define funciones de conversin basadas sobre estos tipos.std_logic_1164

    Paquetes predefinidos comnmente utilizados

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    ARQUITECTURA:ARQUITECTURA:

    Una arquitectura describe la estructura, el comportamiento o flujo de datos de la entidad a la que hace referencia. Para describir el funcionamiento se puede hacer mediante cualquiera de los tres estilos siguientes:

    Descripcin de flujo de datos,

    Descripcin comportamental,

    Descripcin estructural.

    Tambin es posible dividir las arquitecturas en funcin al tipo de cdigo o instrucciones que va a ejecutar:

    Cdigo concurrente: Tambin conocido como flujo de datos y es usado para describir slo circuitos combinacionales.

    Cdigo Secuencial: Se emplea para describir circuitos secuenciales. Sin embargo no se limita a dichos tipos de circuitos. Tambin pueden implementarse circuitos combinacionales con estas sentencias.

    Una arquitectura describe la estructura, el comportamiento o flujo de datos de la entidad a la que hace referencia. Para describir el funcionamiento se puede hacer mediante cualquiera de los tres estilos siguientes:

    Descripcin de flujo de datos,

    Descripcin comportamental,

    Descripcin estructural.

    Tambin es posible dividir las arquitecturas en funcin al tipo de cdigo o instrucciones que va a ejecutar:

    Cdigo concurrente: Tambin conocido como flujo de datos y es usado para describir slo circuitos combinacionales.

    Cdigo Secuencial: Se emplea para describir circuitos secuenciales. Sin embargo no se limita a dichos tipos de circuitos. Tambin pueden implementarse circuitos combinacionales con estas sentencias.

    Arquitectura - Qu es?

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Arquitectura - Qu es?

    arquitectura (architecture)

    Unidad de Diseo Secundaria que describe el comportamiento interno de una entidad.

    arquitectura (architecture)

    Unidad de Diseo Secundaria que describe el comportamiento interno de una entidad.

    Cmo? - A travs de la programacin de varios procedimientos que permitan que la entidad (entity) cumpla con las condiciones de operacin o comportamiento deseadas.Cmo? - A travs de la programacin de varios procedimientos que permitan que la entidad (entity) cumpla con las condiciones de operacin o comportamiento deseadas.

    Nivel AlgoritmoNivel Algoritmo

    Nivel LgicoNivel Lgico

    Nivel CompuertaNivel Compuerta

    Niveles de Descripcin utilizadosNiveles de Descripcin utilizados

    Nivel Transistor (Topologa / Layout)

    Nivel de Transferencia entre Registros (RTL)Nivel de Transferencia entre Registros (RTL)

    Estilo de descripcin o Modelizacin

    Estilo de descripcin o Modelizacin

    FuncionalFuncional

    Flujo de DatosFlujo de Datos

    EstructuralEstructural

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    ArquitecturaArquitectura

    Tipos de declaracionesTipos de declaraciones

    Operadores (AND, OR, XOR, etc.)

    Enunciados con WHEN-ELSE

    Enunciados con WITH-SELECT-WHEN

    Enunciado con FOR-GENERATE

    Enunciados IF-THEN-ELSE

    EnunciadosWAIT

    Enunciados FOR-LOOP

    Enunciados CASE-WHEN

    Enunciados OTROS: exit, block, return, subprogramas, etc.

    Operadores (AND, OR, XOR, etc.)

    Enunciados con WHEN-ELSE

    Enunciados con WITH-SELECT-WHEN

    Enunciado con FOR-GENERATE

    Enunciados IF-THEN-ELSE

    EnunciadosWAIT

    Enunciados FOR-LOOP

    Enunciados CASE-WHEN

    Enunciados OTROS: exit, block, return, subprogramas, etc.

    Nota importante:

    Una seal que se vea involucrada dentro de un proceso no recibe inmediatamente el valor asignado, slo hasta el final del mismo. Una variable que sea utilizada dentro de un proceso s recibe el valor de forma inmediata.

    Arquitectura - Qu es?

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Enunciados Concurrentes

    Tipos:

    Asignaciones de Seales mediante Ecuaciones Booleanas

    Asignaciones Condicionales de Seales La construccin when-else

    Asignaciones de Seales por Seleccin La construccin with-select-when

    Tipos:

    Asignaciones de Seales mediante Ecuaciones Booleanas

    Asignaciones Condicionales de Seales La construccin when-else

    Asignaciones de Seales por Seleccin La construccin with-select-when

    Asignacin de SealesAsignacin de Seales

    Nota: Se puede utilizar el trmino Estructura de Control, en lugar del trmino Construccin

    Permite asignar un valor calculado a una seal o puerto. (Operadores, When, With/When, Generate)

    Asignacin de Seal

    Llama a un algoritmo que calcula y asigna valores a Seales

    Llamada a un Procedimiento (procedure)

    Llamada a un Componente predefinido

    Grupo de enunciados concurrentes.Bloque (block)

    Permite definir un algoritmo secuencial que lee valores de Seales y calcula nuevos valores que son asignados a otras Seales. (If, Case, Loop, Wait)

    Proceso (process)

    Tipos de Enunciados Concurrentes.

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Operadores Lgicos

    Si una expresin incluye varios de estos operadores (p.ej. AND, NOT, XNOR) es necesario utilizar parntesis para evaluarla correctamente.

    Tipos de Operandos permisibles: bit, boolean y arreglos unidimensionales (del tipo bit o boolean)

    Operandos deben tener la misma longitud, excepto para el operador not, el cual se aplica por lo general a un solo operando.

    and, or, nand, xor, xnor, not

    Operadores Lgicos

    y = a or (not b and not c) or d

    q = a or (x and y)

    Expresin VHDLEcuacin Booleana

    )( yxaq +=

    dcbay ++= )(

    Ejemplos:Ejemplos:

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Operadores Relacionales

    Mayor o Igual>=

    Mayor>

    Menor o Igual

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Asignaciones de Seales mediante Ecuaciones BooleanasAsignaciones de Seales mediante Ecuaciones Booleanas

    library ieee;

    use ieee.std_logic_1164.all;

    entity logica is

    port (a,b,c, d, e, f: in std_logic;

    x1, x2, x3: out std_logic);

    end logica;

    architecture booleana of logica is

    begin

    x1

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    library ieee;

    use ieee.std_logic_1164.all;

    entity logica is

    port (A,B,C: in std_logic;

    X,Y,Z: out std_logic);

    end logica;

    architecture a_log of logica is

    begin

    X

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL WHEN-ELSE

    Asignaciones Condicionales de Seales - La construccin when-elseAsignaciones Condicionales de Seales - La construccin when-else

    1111

    1011

    0101

    0001

    1110

    0010

    0100

    fcba

    1000

    Entidad

    Tabla

    abc

    f(a,b,c)

    library ieee;

    use ieee.std_logic_1164.all;

    entity tabla is

    port (a,b,c: in std_logic;

    f: out std_logic);

    end tabla;

    architecture arq_tabla of tabla is

    begin

    f

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    1

    0

    0

    0

    0

    0

    0

    0

    0

    1

    1

    0

    0

    0

    0

    1

    F

    1111

    0111

    1011

    0011

    1101

    0101

    1001

    0001

    1110

    0110

    1010

    0010

    1100

    0100

    1000

    DCBA

    0000library ieee;

    use ieee.std_logic_1164.all;

    entity funcion is

    port (A,B,C,D: in std_logic;

    F: out std_logic);

    end funcion;

    architecture a_func of funcion is

    begin

    F

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    Asignaciones de Seales por Seleccin La construccin with-select-whenAsignaciones de Seales por Seleccin La construccin with-select-when

    library ieee;

    use ieee.std_logic_1164.all;

    entity circuito is

    port (a: in std_logic_vector (1 downto 0);

    C: out std_logic);

    end circuito;

    architecture arq_cir of circuito is

    begin

    with a select

    C

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    library ieee;

    use ieee.std_logic_1164.all;

    entity seleccion is

    port (X: in std_logic_vector (3 downto 0);

    F: out std_logic);

    end seleccion;

    architecture a_selec of seleccion is

    begin

    with X select

    F

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Ejemplo general- MUX

    LIBRARY ieee;

    USE ieee.std_logic_1164.all;

    -----------------------------------------------------------------

    ENTITY mux IS

    PORT ( a, b, c, d, so, s1: IN STD_LOGIC;

    y: OUT STD_LOGIC);

    END mux;

    ------------------------------------------------------------------

    ARCHITECTURE ecu_booleana OF mux IS

    BEGIN

    y

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Ejemplo general- MUX

    LIBRARY ieee;

    USE ieee.std_logic_1164.all;

    -----------------------------------------------------------------

    ENTITY mux IS

    PORT ( a, b, c, d: IN STD_LOGIC;

    sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0);

    y: OUT STD_LOGIC);

    END mux;

    ------------------------------------------------------------------

    ARCHITECTURE mux1 OF mux IS

    BEGIN

    y

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Ejemplo general- MUX

    LIBRARY ieee;

    USE ieee.std_logic_1164.all;

    -----------------------------------------------------------------

    ENTITY mux IS

    PORT ( a, b, c, d: IN STD_LOGIC;

    sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0);

    y: OUT STD_LOGIC);

    END mux;

    ------------------------------------------------------------------

    ARCHITECTURE mux2 OF mux IS

    BEGIN

    WITH sel SELECT

    y

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Ejemplo general- MUX

    LIBRARY ieee;

    USE ieee.std_logic_1164.all;

    -----------------------------------------------------------------

    ENTITY mux IS

    PORT ( a, b, c, d: IN STD_LOGIC;

    sel: IN INTEGER RANGE 0 TO 3;

    y: OUT STD_LOGIC);

    END mux;

    ------------------------------------------------------------------ La construccin WHEN/ELSE

    ARCHITECTURE mux1 OF mux IS

    BEGIN

    y

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Procesos (process)

    Permite asignar un valor calculado a una seal o puerto. (Operadores, When, With/When, Generate)

    Asignacin de Seal

    Llama a un algoritmo que calcula y asigna valores a Seales

    Llamada a un Procedimiento (procedure)

    Llamada a un Componente predefinido

    Grupo de enunciados concurrentes.Bloque (block)

    Permite definir un algoritmo secuencial que lee valores de Seales y calcula nuevos valores que son asignados a otras Seales. (If, Case, Loop, Wait)

    Proceso (process)

    Tipos de Enunciados Concurrentes.

    Proceso (process)Proceso (process)

    Cada proceso es conformado por un conjunto de enunciados secuenciales.

    Enunciados Secuenciales stos son interpretados por la herramienta de sntesis en forma secuencial, es decir, uno por uno; por lo que el orden en el cual son declarados tiene un efecto significativo en la lgica que se intenta describir o sintetizar.

    Cada proceso es conformado por un conjunto de enunciados secuenciales.

    Enunciados Secuenciales stos son interpretados por la herramienta de sntesis en forma secuencial, es decir, uno por uno; por lo que el orden en el cual son declarados tiene un efecto significativo en la lgica que se intenta describir o sintetizar.

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    SEALES Y VARIABLESSEALES Y VARIABLES

    --Uso incorrecto de las seales

    ARCHITECTURE ejem1 OF entidad IS

    SIGNAL a, b, c, x, y : INTEGER;

    BEGIN

    P1: PROCESS (a,b,c)

    BEGIN

    c

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Procesos (process)

    Enunciados if:

    La construccin if-then-else

    Enunciados if:

    La construccin if-then-else

    if la_condicin-1_se_cumple then

    {ejecuta grupo-1 de enunciados secuenciales};

    elsif la_condicin-2_se_cumple then

    {ejecuta grupo-2 de enunciados secuenciales};

    else

    {ejecuta grupo-3 de enunciados secuenciales};

    end if;

    Enunciados if:

    La construccin if-then-elsif-then-else

    Enunciados if:

    La construccin if-then-elsif-then-else

    if la_condicin_es_cierta then

    {ejecuta grupo-1 de enunciados secuenciales};

    else

    {ejecuta grupo-2 de enunciados secuenciales};

    end if;

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Procesos (process)

    Enunciados CASE:

    La construccin case - when ejecuta una o varias instrucciones secuenciales quedependen del valor de una sola expresin.

    Enunciados CASE:

    La construccin case - when ejecuta una o varias instrucciones secuenciales quedependen del valor de una sola expresin.

    SINTAXIScase expression is

    when choices => { sequential_statement }when choices => { sequential_statement }

    end case;

    DESCRIPCIONexpression: evala a un entero, o tipo enumerado.sequential_statement: uno o mas enunciados secuenciales.choices: opciones.

    La ltima opcin puede ser others (valor por omisin del resto de las opciones).

    DESCRIPCIONexpression: evala a un entero, o tipo enumerado.sequential_statement: uno o mas enunciados secuenciales.choices: opciones.

    La ltima opcin puede ser others (valor por omisin del resto de las opciones).

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    La construccin: if-then-elseLa construccin: if-then-else

    La construccin if-then-else sirve para seleccionar una operacin con base al anlisis (evaluacin lgica Cierto o Falso) de una condicin.

    Procesos (process)

    ENTITY mux IS

    PORT ( a, b, sel: IN bit;

    sal: OUT bit );

    END mux;

    ARCHITECTURE comportamental OF mux IS

    BEGIN

    PROCESS (a, b, sel) - - Lista sensible

    BEGIN

    IF (sel=0) THEN

    sal

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    La construccin: if-then-elseLa construccin: if-then-else

    La construccin if-then-else sirve para seleccionar una operacin con base al anlisis (evaluacin lgica Cierto o Falso) de una condicin.

    Procesos (process)

    ENTITY mux IS

    PORT ( a, b, sel: IN bit;

    sal: OUT bit );

    END mux;

    ARCHITECTURE comportamental OF mux IS

    BEGIN

    PROCESS (a, b, sel) - - Lista sensible

    BEGIN

    sal

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL

    La construccin: case-whenLa construccin: case-when

    La construccin case es similar a la instruccin with/select/when por que tiene una seal de seleccin e incluye clusulas when para diversas combinaciones de seal.

    Procesos (process)

    library ieee;

    use ieee.std_logic_1164.all;

    ENTITY mux IS

    PORT ( a, b, sel: IN STD_LOGIC;

    sal: OUT STD_LOGIC );

    END mux;

    ARCHITECTURE comportamental OF mux IS

    BEGIN

    PROCESS (a, b, sel) - - Lista sensible

    BEGIN

    CASE sel IS

    WHEN 0 =>

    sal

    sal

  • Cap. 2 Diseo de Circuitos Lgicos con VHDL Prctica 4

    Prctica 4. Mux de 2X1, de 3 canalesPrctica 4. Mux de 2X1, de 3 canales

    Objetivo: Disear un circuito multiplexor de 2 X 1, con 3 canales, para desplegar en un display de 7 segmentos una de las dos entradas del multiplexor. El diseo serrealizado mediante ecuaciones When-Else With-Select-When If-Then Case-Whendel lenguaje VHDL, a travs del IDE Galaxy.Para este circuio deber existir un bloque que determine, al recibir una de las dos entradas del multiplexor, el valor que ser desplegado en el display.

    Objetivo: Disear un circuito multiplexor de 2 X 1, con 3 canales, para desplegar en un display de 7 segmentos una de las dos entradas del multiplexor. El diseo serrealizado mediante ecuaciones When-Else With-Select-When If-Then Case-Whendel lenguaje VHDL, a travs del IDE Galaxy.Para este circuio deber existir un bloque que determine, al recibir una de las dos entradas del multiplexor, el valor que ser desplegado en el display.

    A

    B

    sel

    Cto.a 7 seg

    33

    70

    1