06_Diseño MSI con VHDL
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