Download - Tema4VHDL[1]
-
1VHDL 1
VHDL VHDL VHDL
IngenieraIngeniera dede TelecomunicacinTelecomunicacinSusana Borromeo Lpez
Electrnica Digital IIElectrnica Digital II
Ingeniera de Telecomunicacin
Introduccin al VHDL 2Electrnica Digital II
Indice1. Conceptos bsicos2. VHDL para sntesis3. VHDL para simulacin4. VHDL estructural
-
2Introduccin al VHDL 3Electrnica Digital II
199519951995 199819981998 200120012001 200420042004 200720072007 201020102010Tamao de
las pistas (m)Tamao deTamao de
las pistas (las pistas (m)m) 0.350.35 0.250.25 0.180.18 0.130.13 0.100.10 0.070.07Tamao de
los dados (cm2)Tamao deTamao de
los dados (cmlos dados (cm22)) 2.52.5 3.03.0 3.63.6 4.34.3 5.25.2 6.36.3
Memorias(#bits)
MemoriasMemorias(#bits)(#bits) 64M64M 256M256M 1G1G 4G4G 16G16G 64G64G
Circuitos lgicos(#transistores)
Circuitos lgicosCircuitos lgicos(#transistores)(#transistores) 10M10M 21M21M 46M46M 110M110M 260M260M 570M570M
Frecuencia(MHz)
FrecuenciaFrecuencia((MHzMHz)) 300300 450450 600600 800800 10001000 11001100
N entradas ysalidas
N entradas yN entradas ysalidassalidas 512512 512512 512512 512512 800800 10241024
Interconexiones(m)
InterconexionesInterconexiones(m)(m) 380380 840840 21002100 41004100 63006300 1000010000
El futuro de los CIs (SIA Roadmap)
Aumento en la complejidad de los circuitos Hay que disminuir los tiempos de desarrollo Hay que disminuir los costes Facilitar la gestin de equipos de diseo
Lenguajes deDescripcin De Hardware
Lenguajes deDescripcin De Hardware
Introduccin al VHDL 4Electrnica Digital II
VHDL: Caractersticas generales
VHDL = VHSIC Hardware Description Language(VHSIC = Very High Speed Integrated Circuits)
En diciembre de 1984 se acepta por el IEEE Standards Board y se publica su primera versin en 1987 (VHDL-87). Revisado en 1993 y 2000 (ms informacin en http://www.vhdl.org )
Al ser un estndar es portable No es un lenguaje de programacin: con el VHDL no se programa
sino que se codifica Independiente del dispositivo Permiten representar tanto el comportamiento como la estructura de
los circuitos Cada diseo tiene que tener definida una interfaz (para conectarse
con el resto de elementos) y una especificacin comportamentalprecisa (para simularlo)
Ejecucin CONCURRENTE y SECUENCIAL
-
3Introduccin al VHDL 5Electrnica Digital II
Las sentencias concurrentes se
ejecutan todas en paralelo.
...A
-
4Introduccin al VHDL 7Electrnica Digital II
Proceso de traduccin de una descripcin comportamental a unadescripcin lgica, para una tecnologa objetivo y bajo unas
determinadas restricciones
SntesisSntesis
Sntesis RT
Mapeo tecnolgico
Optimizacin
Descripcin VHDL
AND
XORFF
NOT
MUX
Modelo lgico genrico Circuito lgico mapeado
Circuito lgico optimizado
TECTmax
RestriccionesBiblioteca
del fabricante
Introduccin al VHDL 8Electrnica Digital II
Opc
iona
l
entity
architecture
configuration
package
package body
describe el interfaz con el exterior y las caractersticas comunes de todas las posibles realizaciones de un componente
describe la operacin del dispositivo, la funcionalidad o su estructura interna. Est asociada a una entity
selecciona los componentes a utilizar dentro de la biblioteca dediseo
contiene un conjunto de declaraciones de tipos y subprogramas comunes a varias unidades de diseo
define los cuerpos de los subprogramas que se han declarado en el package al que est asociado
Qu tiene un modelo VHDL?Qu tiene un modelo VHDL?
-
5Introduccin al VHDL 9Electrnica Digital II
Qu tiene un modelo VHDL?Qu tiene un modelo VHDL?
A1
M1
M2M3
A2 A3
function SUMA (A,B: bit) return bit;constant N : integer = 16;...
function SUMA (A,B: bit) return bit;constant N : integer = 16;......
function SUMA (A,B: bit_vector) return bit_vector isbeginreturn CONV_BIT_VECTOR (A + B); ...
function SUMA (A,B: bit_vector) return bit_vector isbeginreturn CONV_BIT_VECTOR (A + B); ...
Opc
iona
l
entity
architecture
configuration
package
package body
!!
!!
Introduccin al VHDL 10Electrnica Digital II
library use ..all
Estructura bsica de un archivo fuente VHDLEstructura bsica de un archivo fuente VHDL
entity is
-- Declaracin de pinesend ;
architecture of is-- Declaracin de seales internas-- Declaracin de tipos de datos definidos por el usuario-- Declaracin de componentes en caso de instanciacinbegin-- Cuerpo de la arquitectura-- Se define la funcionalidad del diseo con:-- Asignaciones concurrentes-- Procesos-- Instanciacin de componentesend ;
Encabezamiento
Entidad
Arquitectura
!!
!!
!!
-
6Introduccin al VHDL 11Electrnica Digital II
Estructura bsica de un archivo fuente VHDLEstructura bsica de un archivo fuente VHDLconfiguration of isfor
end for;end ;
Configuracin
Una librera (library) es una asociacin de packages que contienen a su vez definiciones de tipos de datos, componentes, etc
Tipo de datos y procedimientos de lectura y escritura para std_logic y std_logic_vectorstd_logic_textioieee
Operaciones aritmticas con signo y de comparacin y conversin con std_logic_vectorstd_logic_unsignedieee
Operaciones aritmticas con signo y de comparacin y conversin con std_logic_vectorstd_logic_signedieee
Tipos signed y unsigned y operacionesstd_logic_arithieee
Tipos std_logic y std_logic_vectorstd_logic_1164ieee
Librera por defectowork
Tipos de dato como line y texttextiostd
Tipos bsicos de VHDL: bit, bit_vector, booleanstandardstd
DescripcinPackageLibrera
Packagespredefinidos
Introduccin al VHDL 12Electrnica Digital II
entity isport ( : ;
... : );
end ;
entity isport ( : ;
... : );
end ;
VHDL. Entidad y arquitecturaVHDL. Entidad y arquitectura
Para cada puerto se especifica el modo y el tipoEl modo define la direccin del flujo de datos del puerto visto desde la entidad.
INOUTINOUTBUFFER
IN
IN
OUT
INOUT
BUFFER
entity MUX isport( E0,E1 : in bit;
SEL: in bit;Z : out bit);
end MUX;
entity MUX isport( E0,E1 : in bit;
SEL: in bit;Z : out bit);
end MUX;
E0
E1
SEL
Z0
1
-
7Introduccin al VHDL 13Electrnica Digital II
VHDL. Entidad y arquitecturaVHDL. Entidad y arquitectura
entity DECOD2a4 isport( E0,E1,ENABLE : in bit;
S0,S1,S2,S3 : out bit);end DECOD2a4;
entity DECOD2a4 isport( E0,E1,ENABLE : in bit;
S0,S1,S2,S3 : out bit);end DECOD2a4;
DECODIFICADOR2a4
E0
E1
ENABLE
S0S1S2S3
entity isport ( : ;
... : );
end ;
entity isport ( : ;
... : );
end ;
Introduccin al VHDL 14Electrnica Digital II
entity isport ( : ;
... : );
end ;
entity isport ( : ;
... : );
end ;
VHDL. Entidad y arquitecturaVHDL. Entidad y arquitectura
sumador binario de8 bits
SUMA8
B(7:0) A(7:0)
Sum(7:0)
Cout
entity SUMA8 isport( A : in bit_vector(7 downto 0);
B : in bit_vector(7 downto 0);SUM : out bit_vector(7 downto 0);COUT : out bit);
end SUMA8;
entity SUMA8 isport( A : in bit_vector(7 downto 0);
B : in bit_vector(7 downto 0);SUM : out bit_vector(7 downto 0);COUT : out bit);
end SUMA8;
-
8Introduccin al VHDL 15Electrnica Digital II
architecture DF of MUX isbeginZ
-
9Introduccin al VHDL 17Electrnica Digital II
configuration MUX_conf of MUX isfor estructuralfor U1: INV use work.entity INV ( comportamental); end for;for U2,U3: AND2 use work.entity AND2 ( comportamental); end for;for U4: OR2 use work.entity OR2 ( comportamental); end for;
end for;end MUX_conf ;
architecture estructural of MUX2 is-- declaracin de componentescomponent AND2 port (I0,I1:in std_logic; o:out std_logic);
end component;component OR2port (I0,I1:in std_logic; o:out std_logic);
end component;component INVERSOR port (I:in std_logic; o:out std_logic);
end component;-- declaracin de sealessignal S1,S2,S3: std_logic;begin--Instanciacin de componentes U1: INVERSOR port map (SEL,S1);U2: AND2 port map (A,S1,S2);U3: AND2 port map (SEL,B,S3);U4: OR2 port map (S2,S3,Z);end estructural;
VHDL. Descripcin estructuralVHDL. Descripcin estructural
entity MUX isport( A,B : in bit;
SEL : in bit;Z : out bit);
end MUX;
entity MUX isport( A,B : in bit;
SEL : in bit;Z : out bit);
end MUX;
Describe la entidad como un conjunto de componentes
conectados entre s por seales
Describe la entidad como un conjunto de componentes
conectados entre s por sealesE0
E1
SEL
Z0
1
S2
S3
S1
A
SEL
B
Z
AB
Introduccin al VHDL 18Electrnica Digital II
configuration identificador of identificador_entidad isfor identificador arquitectura
for ref_componente: identificador_componenteuse librera.identificador_entidad(identificador_arquitectura)
end for;..end for;end identificadir_configuracion ;
VHDL. Descripcin estructuralVHDL. Descripcin estructural
-
10
Introduccin al VHDL 19Electrnica Digital II
VHDL. Sumador completo para dos nmeros de 1 VHDL. Sumador completo para dos nmeros de 1 bitbit
entity SUMA isport( A,B : in bit;
Cin : in bit;SUM : out bit;COUT : out bit);
end SUMA;
entity SUMA isport( A,B : in bit;
Cin : in bit;SUM : out bit;COUT : out bit);
end SUMA;Full Adder
A B
Sum
Cout Cin
Ejemplo tpico de VHDL ESTRUCTURAL!!!!
Ejemplo tpico de VHDL ESTRUCTURAL!!!!
00001111
00110011
01010101
Cin A B
00010111
Cout
01101001
Sum
Cout = Cin (A + B) + A BSum = Cin + (A + B)
Introduccin al VHDL 20Electrnica Digital II
OR2AND2
OR2
AND2
XOR2XOR2
A
B
Cin
Cout
Sum
S1
S2
S3
S4
VHDL. Sumador completo para dos nmeros de 1 VHDL. Sumador completo para dos nmeros de 1 bitbit
-
11
Introduccin al VHDL 21Electrnica Digital II
OR2AND2
OR2
AND2
XOR2XOR2
A
B
Cin
Cout
Sum
S1
S2
S3
S4
architecture ESTRUC of FA iscomponent AND2port( A, B: in bit; S: out bit);end component;component OR2port( A, B: in bit; S: out bit);end component;component XOR2port( A, B: in bit; S: out bit);end component;signal S1, S2, S3, S4: bit;
beginC1: OR2 port map (A, B, S1);C2: AND2 port map (A, B, S2);C3: AND2 port map (S1, Cin, S3);C4: OR2 port map (S3, S2, Cout);C5: XOR2 port map (A, B, S4);C6: XOR2 port map (S4, Cin, Sum);
end ESTRUC;
configuration CFG_EST of FA isfor ESTRUCfor C1, C4: OR2use entity WORK.OR2(RETR);
end for;for C2, C3: AND2use entity WORK.AND2(RETR);
end for;for C5, C6: XOR2use entity WORK.XOR2(RETR);
end for;end for;
end CFG_EST;paso de parmetros por posicin
conf
igur
aci
n ex
tern
a
VHDL. Sumador completo para dos nmeros de 1 VHDL. Sumador completo para dos nmeros de 1 bitbit
Introduccin al VHDL 22Electrnica Digital II
Modelar un divisor de 10 y basndose en ese mdulo realizar un divisor por 1000
VHDL. Descripcin estructuralVHDL. Descripcin estructural
DIV10 DIV10 DIV10CE CE CE
reset reset reset
reset
Clk1000
CE Clk100_enable Clk10_enable myClk1
-
12
Introduccin al VHDL 23Electrnica Digital II
Descripcin estructuralDescripcin estructural
entity divisor1000 isPort ( clk1000 : in std_logic;
reset : in std_logic;CE : in std_logic; -- Seal de habilitacion de cuentamyclk1 : out std_logic);
end divisor1000;
architecture Behavioral of divisor1000 is-- Declaracin componenteCOMPONENT divisor10
PORT(reset : IN std_logic;clk10 : IN std_logic;CE : IN std_logic; clk1 : OUT std_logic);
END COMPONENT;-- Declaracin de sealessignal clk10_enable: std_logic;signal clk100_enable: std_logic;begin-- Instanciacin del componente
Inst_divisor10: divisor10 PORT MAP(reset => reset ,clk10 => clk1000,CE => '1',clk1 => clk100_enable
);-- Instanciacin del componente
Inst_divisor100: divisor10 PORT MAP(reset => reset,clk10 => clk1000,CE => clk100_enable,clk1 => clk10_enable
);-- Instanciacin del componente
Inst_divisor1000: divisor10 PORT MAP(reset => reset ,clk10 => clk1000,CE => clk10_enable,clk1 => myclk1
);end Behavioral;
Introduccin al VHDL 24Electrnica Digital II
ndice general de la sintaxisndice general de la sintaxisUnidades de diseoUnidades de diseo
Entidades
Arquitecturas
Configuraciones
Paquetes
Body packages
1 DeclaracionesDeclaraciones4
Tipos
Constantes
Seales
Variables
Ficheros
Alias
Componentes
Manejo bibliotecasManejo bibliotecas
Library
Use
2 OperadoresOperadores7
Sent. concurrentesSent. concurrentes5 Sent. secuencialesSent. secuenciales6
SubprogramasSubprogramas
Procedimientos
Funciones
3
Subtipos
Bloques
Asig. concurrentes
Ref. componentes
Generate
Procesos
Asig. variables
case
Bucles loop y while
If, elsif, else
Assert
wait
AtributosAtributos8
Atrib. rango
Atrib. tipos
Atr. seales
-
13
Introduccin al VHDL 25Electrnica Digital II
ndice general de la sintaxisndice general de la sintaxisUnidades de diseoUnidades de diseo
Entidades
Arquitecturas
Configuraciones
Paquetes
Body packages
1 DeclaracionesDeclaraciones4
Tipos
Constantes
Seales
Variables
Ficheros
Alias
Componentes
Manejo bibliotecasManejo bibliotecas
Library
Use
2 OperadoresOperadores7
Sent. concurrentesSent. concurrentes5 Sent. secuencialesSent. secuenciales6
SubprogramasSubprogramas
Procedimientos
Funciones
3
Subtipos
Bloques
Asig. concurrentes
Ref. componentes
Generate
Procesos
Asig. variables
case
Bucles loop y while
If, elsif, else
Assert
wait
AtributosAtributos8
Atrib. rango
Atrib. tipos
Atr. seales
Introduccin al VHDL 26Electrnica Digital II
aparecen en entornos concurrentes o secuenciales
son visibles en toda la arquitectura
los puertos de E/S deben ser seales
llevan informacin del valor y el tiempo en el que tomarn ese valor
asignacin
-
14
Introduccin al VHDL 27Electrnica Digital II
La asignacin de las seales se realiza de forma concurrenteSentencias:asignacin simpleasignacin condicionalasignacin selectiva
Asignacin de sealesAsignacin de seales
entity WAVEFORMS isport( SAL1 : out bit_vector(1 downto 0);
SAL2 : out bit_vector(1 downto 0));
end WAVEFORMS;
architecture DF of WAVEFORMS isSAL1
-
15
Introduccin al VHDL 29Electrnica Digital II
Asignacin de sealesAsignacin de seales
Se deben cubrir todos los casos posibles de la seal SEL podr ser una salida o una seal interna (no una entrada)Las salidas de la entidad no pueden aparecer en ni en ...
entity MUX8 isport( E : in bit_vector(7 downto 0);
SEL: in bit_vector(2 downto 0);Y : out bit);
end MUX8;
architecture DF1 of MUX8 isbeginwith SEL selectY
-
16
Introduccin al VHDL 31Electrnica Digital II
VHDL. Tipos de datosVHDL. Tipos de datosTipos Enumerados
Datos que pueden tomar cualquier valor especificado en un conjunto finito o lista Boolean. Pueden tomar dos valores: True o False Bit. Pueden tomar dos valores 0 1 Std_logic. Definido en el estndar IEEE 1164. Pueden tomar como valores
U -- Sin inicializar X -- Desconocido Fuerte, cortocircuito en simulacin 0 -- 0 lgico fuerte, equivale a Vss 1 -- 1 lgico fuerte, equivale a Vdd Z -- Alta impedancia W -- Desconocido L -- 0 lgico dbil, resistencia de pull-down H -- 1 lgico dbil, resistencia de pull-up - -- No importa se sintetiza en 0 1
Definido por el usuario. Se suelen usar en la descripcin de mquinas de estado:type is ();type ESTADO is (VERDE, AMARILLO, ROJO); !!
Introduccin al VHDL 32Electrnica Digital II
VHDL. Tipos de datosVHDL. Tipos de datosTipos numricosIncluyen los tipos: natural, entero, real
type is range literal {to| downto} literal; Integer. Los enteros se representan en VHDL con 32 bits en complemento a 2. Si no
se acota el rango en la declaracin, las herramientas de sntesis sintetizan 32 bitssignal CONT: integer range 0 to 7
Vectores Bit_vector. Vector de elementos tipo bit.
signal A,B: bit_vector (0 to 7)signal C,D: bit_vector (7 downto 0)
Se puede asignar un valor a un elemento o a un segmento del vectorC(3)
-
17
Introduccin al VHDL 33Electrnica Digital II
VHDL. Tipos de datosVHDL. Tipos de datosMatricesDefinidos por el usuario:
type is array () of ;type matriz3por4 is array (1 to 3, 1 to 4) of integer;
Ejemplo: Modelado de una memoria de 128 posiciones de 8 bitstype DATA_WORD is array (7 downto 0) of std_logic;type ROM is array (0 to 127) of DATA_WORD;
RegistrosFormados por un conjunto de elementos de distinto tipo.
type is record : ; : ;end record;
Ejemplo: type VECTORTEST is record A,B : std_logic_vector (3 downto 0);C,D: std_logic;
end record;
Introduccin al VHDL 34Electrnica Digital II
Operadores Operadores OpOp DescripcinDescripcin OperandosOperandos ResultadoResultado
** potencia entero op enteroreal op enteroenteroreal
abs abs numrico idem operandonot negacin bit, booleano, vector bits idem operando
* multiplicacin
entero op enteroreal op realfsico op enterofsico op realentero op fsicoreal op fsico
enterorealfsicofsicofsicofsico
/ divisin
entero op enteroreal op realfsico op enterofsico op realfsico op fsico
enterorealfsicofsicoentero
mod mdulo entero op entero enterorem resto entero op entero entero
+ suma numrico op numrico idem operando- resta numrico op numrico idem operando
& concatenacin
vector op vectorvector op elementoelemento op vectorelemento op elemento
vectorvectorvectorvector
Men
or p
rece
den
cia
May
or p
rece
den
cia
-
18
Introduccin al VHDL 35Electrnica Digital II
Operadores Operadores
& concatenacin
vector op vectorvector op elementoelemento op vectorelemento op elemento
vectorvectorvectorvector
OpOp DescripcinDescripcin OperandosOperandos ResultadoResultado
sllsrlslasrarolror
despl.lgico izq.despl. lgico der.Despl. arit. izq.despl. arit. der.rotacin izquierdarotacin derecha
vect. bits op enterovect. bits op enterovect. bits op enterovect. bits op enterovect. bits op enterovect. bits op entero
vector bitsvector bitsvector bitsvector bitsvector bitsvector bits
=/==
igual quediferente quemenor quemayor quemenor o igual quemayor o igual que
no fichero op idemno fichero op idemno fichero op idemno fichero op idemno fichero op idemno fichero op idem
booleanobooleanobooleanobooleanobooleanobooleano
andornandnorxorxnor
y lgicao lgicay lgica negadao lgica negadao exclusivao exclusiva negada
bit,booleano,vect.bits op idembit,booleano,vect.bits op idembit,booleano,vect.bits op idembit,booleano,vect.bits op idembit,booleano,vect.bits op idembit,booleano,vect.bits op idem
booleanobooleanobooleanobooleanobooleanobooleano
Men
or p
rece
denc
ia M
ayor
pre
cede
ncia
LG
ICO
SD
e re
laci
n
Introduccin al VHDL 36Electrnica Digital II
AtributosAtributos
Los atributos se aplican a una seal para obtener informacin especfica acerca de ellaevent. Aplicado a una seal de reloj detecta los flancos del relojrange. Devuelve el rango de la seal
Atributos de seal
Los atributos se aplican a una seal para obtener informacin especfica acerca de ellaleft. Valor izquierdo del vectorright. Valor derecho del vectorlow. Valor mnimo del vectorhigh. Valor mximo del vectorlength. Nmero de elementosrange. Devuelve el rango del vector
Atributos de rango de vector
Signal V : bit_vector (15 downto 0);-- Vleft es 15, Vright es 0,-- Vlow es 0 , Vhigh es 15,-- Vrange es 15 downto 0,-- Vlength es 16
Signal V : bit_vector (15 downto 0);-- Vleft es 15, Vright es 0,-- Vlow es 0 , Vhigh es 15,-- Vrange es 15 downto 0,-- Vlength es 16
!!
-
19
Introduccin al VHDL 37Electrnica Digital II
Palabras reservadasPalabras reservadas
A
ABSACCESS AFTER ALIAS ALL AND ARCHITECTURE ARRAY ASSERT ATTRIBUTE
BBEGIN BLOCKBODY BUFFER BUS
CCASE COMPONENT CONFIGURATION CONSTANT
D DISCONNECT DOWNTO
EELSE ELSIF END ENTITY EXIT
FFILE FOR FUNCTION
GGENERATE GENERIC GUARDED
IIF IN INOUT IS
LLABEL LIBRARY LINKAGE LOOP
M MAP MOD
N
NAND NEW NEXT NOR NOT NULL
O
OF ONOPEN OR OTHERS OUT
PPACKAGE PORT PROCEDURE PROCESS
R
RANGE RECORD REGISTER REM REPORT RETURN
SSELECT SEVERITY SIGNAL SUBTYPE
TTHEN TOTRANSPORTTYPE
UUNITS UNTIL USE
V VARIABLE
WWAIT WHEN WHILE WITH
X XOR
Introduccin al VHDL 38Electrnica Digital II
VHDL. Sentencias de descripcinVHDL. Sentencias de descripcin
Sentencias ConcurrentesPROCESOSSentencias de asignacin de seales
Sentencias secuenciales (en el interior de un proceso)waitAsignacin de seales y variablesControl de flujo de ejecucinIf-then-elsecaseloop
-
20
Introduccin al VHDL 39Electrnica Digital II
Un proceso (process) es una sentencia concurrente que agrupa en su interior sentencias que se ejecutan secuencialmente
: process [()]
begin
end process ;
: process [()]
begin
end process ;
asignaciones de seal y variable control de flujo
if...then...else...case...is...when...=>...while...loop...for...loop...loop...
control de ejecucinlista de sensibilidadwait on...for...until...
llamada a procedimientos control de la simulacin: assert
ProcesosProcesos
Sentencias Secuenciales
!!
Introduccin al VHDL 40Electrnica Digital II
Contienen sentencias que se ejecutan secuencialmente
Los procesos entre s se ejecutan de forma concurrente
Un proceso comienza a ejecutarse cuando ocurre un evento en su lista de sensibilidad o se cumplen las condiciones de la sentencia wait
Tienen que tener wait o lista de sensibilidad!!!
Las asignaciones de variable tienen lugar de forma inmediata
Las asignaciones de seal tienen lugar cuando se suspende el proceso
architecture COMP of UN_EJEMPLO isbegin
P1: process(A, C)beginif A = 1 thenB
-
21
Introduccin al VHDL 41Electrnica Digital II
Contienen sentencias que se ejecutan secuencialmente
Los procesos entre s se ejecutan de forma concurrente
Un proceso comienza a ejecutarse cuando ocurre un evento en su lista de sensibilidad o se cumplen las condiciones de la sentencia wait
Tienen que tener wait o lista de sensibilidad!!!
Las asignaciones de variable tienen lugar de forma inmediata
Las asignaciones de seal tienen lugar cuando se suspende el proceso
ProcesosProcesos
!!
P1: processbeginwait on A, B;X
-
22
Introduccin al VHDL 43Electrnica Digital II
entity MUX8 isport( E : in bit_vector(7 downto 0);
SEL: in bit_vector(2 downto 0);Y : out bit);
end MUX8;
architecture BEHAV1 of MUX8 isbeginCOMB: process(E, SEL)beginif SEL = 000 thenY
-
23
Introduccin al VHDL 45Electrnica Digital II
entity SHIFTER isport( EN: in bit;
SAL: out bit_vector(7 downto 0));end SHIFTER;
architecture BEHAV of SHIFTER isbeginCOMB: process (EN)variable INT: bit_vector(7 downto 0);
beginINT(0) := EN;
for i in 7 downto 1 loopINT(i) := INT(i-1);
end loop;SAL
-
24
Introduccin al VHDL 47Electrnica Digital II
VHDL. Sntesis de circuitos digitalesVHDL. Sntesis de circuitos digitales
No todo el VHDL es SINTETIZABLE Tipos de datos no soportados: time, real, access, file De cara a la integracin con otros diseos deben utilizarse tipos
estndar: std_logic o bit
Lgica combinacional Sentencias de asignacin concurrentes PROCESOS
Lgica secuencial If CLKevent and CLK=1 Biestables con RESET asncrono y con reset sncrono
Introduccin al VHDL 48Electrnica Digital II
--asignacin condicionalS1
-
25
Introduccin al VHDL 49Electrnica Digital II
Recomendaciones sobre el modeladoRecomendaciones sobre el modelado
El modelado de lgica combinacional puede realizarse mediante sentencias de asignacin concurrente o procesos.
Usar sentencias de asignacin concurrente cuando:La lgica a modelar es simple (ej: pequeos multiplexores)Como complemento de lgica secuencial en procesosAcceso a buses triestadoNecesitamos un control preciso de la sntesis
Usar procesos cuando:La lgica a modelar es compleja (ej: decodificadores complejos
o lgica secuencial)Hay que tener cuidado con la inferencia de latches
Introduccin al VHDL 50Electrnica Digital II
CONV1: process(BDCIN)begincase BCDIN is -- abcdefgwhen 0000 => SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG
-
26
Introduccin al VHDL 51Electrnica Digital II
VHDL. DEMUX 3a8VHDL. DEMUX 3a8entity DEMUX3a8 isport( DataIn,Enable : in std_logic;
Control : in std_logic_vector (2 downto 0);DataOut : out std_logic_vector (7 downto 0));
end DEMUX3a8;
entity DEMUX3a8 isport( DataIn,Enable : in std_logic;
Control : in std_logic_vector (2 downto 0);DataOut : out std_logic_vector (7 downto 0));
end DEMUX3a8;DEMUX3a8DATAIN
CONTROL (2:0)
DATAOUT (7:0)
architecture Behavioral of demux3a8 issignal DataEnable: std_logic_vector (3 downto 0);signal Entrada: std_logic;beginDataEnable Entrada, others =>'0')when "1110",(5 => Entrada, others =>'0') when "1101",(4 => Entrada, others =>'0') when "1100",(3 => Entrada, others =>'0') when "1011",(2 => Entrada, others =>'0') when "1010",(1 => Entrada, others =>'0') when "1001",(0 => Entrada, others =>'0') when "1000",(others =>'0') when others;
end Behavioral;
architecture Behavioral of demux3a8 issignal DataEnable: std_logic_vector (3 downto 0);signal Entrada: std_logic;beginDataEnable Entrada, others =>'0')when "1110",(5 => Entrada, others =>'0') when "1101",(4 => Entrada, others =>'0') when "1100",(3 => Entrada, others =>'0') when "1011",(2 => Entrada, others =>'0') when "1010",(1 => Entrada, others =>'0') when "1001",(0 => Entrada, others =>'0') when "1000",(others =>'0') when others;
end Behavioral;
ENABLE
Introduccin al VHDL 52Electrnica Digital II
VHDL. DEMUX 3a8VHDL. DEMUX 3a8entity DEMUX3a8 isport( DataIn,Enable : in std_logic;
Control : in std_logic_vector (2 downto 0);DataOut : out std_logic_vector (7 downto 0));
end DEMUX3a8;
entity DEMUX3a8 isport( DataIn,Enable : in std_logic;
Control : in std_logic_vector (2 downto 0);DataOut : out std_logic_vector (7 downto 0));
end DEMUX3a8;DEMUX3a8DATAIN
CONTROL (2:0)
DATAOUT (7:0)
architecture Behavioral of demux3a8 issignal DataEnable: std_logic_vector (3 downto 0);signal Entrada: std_logic;beginDataEnable Entrada, others =>'0')when "1110",(5 => Entrada, others =>'0') when "1101",(4 => Entrada, others =>'0') when "1100",(3 => Entrada, others =>'0') when "1011",(2 => Entrada, others =>'0') when "1010",(1 => Entrada, others =>'0') when "1001",(0 => Entrada, others =>'0') when "1000",-- (others =>'0') when others;
end Behavioral;
architecture Behavioral of demux3a8 issignal DataEnable: std_logic_vector (3 downto 0);signal Entrada: std_logic;beginDataEnable Entrada, others =>'0')when "1110",(5 => Entrada, others =>'0') when "1101",(4 => Entrada, others =>'0') when "1100",(3 => Entrada, others =>'0') when "1011",(2 => Entrada, others =>'0') when "1010",(1 => Entrada, others =>'0') when "1001",(0 => Entrada, others =>'0') when "1000",-- (others =>'0') when others;
end Behavioral;
ENABLE
Line 49. A value is missing in case.
ERROR:HDLParsers:812 std_logic_vector
-
27
Introduccin al VHDL 53Electrnica Digital II
entity COD8a3_prior isport( DataIn : in std_logic_vector (7 downto 0);
DataOut : out std_logic_vector (2 downto 0);Activo : out std_logic);
end COD8a3_prior;
entity COD8a3_prior isport( DataIn : in std_logic_vector (7 downto 0);
DataOut : out std_logic_vector (2 downto 0);Activo : out std_logic);
end COD8a3_prior;
VHDL. Codificador de 8 a 3 con prioridad (I)VHDL. Codificador de 8 a 3 con prioridad (I)
COD8a3Con prioridad
ACTIVO
DATAIN (7:0) DATAOUT (2:0)
architecture Behavioral of COD8a3_prior isbegin
DataOut
-
28
Introduccin al VHDL 55Electrnica Digital II
entity COD8a3_prior isport( DataIn : in std_logic_vector (7 downto 0);
DataOut : out std_logic_vector (2 downto 0);Activo : out std_logic);
end COD8a3_prior;
entity COD8a3_prior isport( DataIn : in std_logic_vector (7 downto 0);
DataOut : out std_logic_vector (2 downto 0);Activo : out std_logic);
end COD8a3_prior;
VHDL. Codificador de 8 a 3 con prioridad (II)VHDL. Codificador de 8 a 3 con prioridad (II)
COD8a3Con prioridad
ACTIVO
DATAIN (7:0) DATAOUT (2:0)
architecture Behavioral of COD8a3_prior isbegin
P1: process (DataIn)beginif DataIn(7) = '1' then
DataOut
-
29
Introduccin al VHDL 57Electrnica Digital II
entity DECOD2a4 isport( DataIn : in std_logic_vector (1 downto 0);
Enable : in std_logic; DataOut : out std_logic_vector (3 downto 0));
end DECOD2a4;
entity DECOD2a4 isport( DataIn : in std_logic_vector (1 downto 0);
Enable : in std_logic; DataOut : out std_logic_vector (3 downto 0));
end DECOD2a4;
DECOD2a4
ENABLE
VHDL. Decodificador 2a4 (II)VHDL. Decodificador 2a4 (II)
DATAIN (1:0) DATAOUT (3:0)architecture Behavioral of DECOD2a4 isbeginP1: process (DataIn,Enable)beginif Enable = '1' thencase DataIn is
when "00" =>DataOutDataOutDataOutDataOut DataOut'0');
end case;else
DataOutDataOutDataOutDataOutDataOut DataOut'0');
end case;else
DataOutDataOutDataOutDataOutDataOut --DataOut'0');
end case;else
DataOutDataOutDataOutDataOutDataOut --DataOut'0');
end case;else
DataOut
-
30
Introduccin al VHDL 59Electrnica Digital II
VHDL. Comparador de dos nmeros de dos bitsVHDL. Comparador de dos nmeros de dos bits
entity comparador isport( A,B : in std_logic_vector (1 downto 0)
AigualB,AmayorB,AmenorB : out std_logic);end comparador;
entity comparador isport( A,B : in std_logic_vector (1 downto 0)
AigualB,AmayorB,AmenorB : out std_logic);end comparador;
ComparadorB(1:0)
A(1:0)AigualB
AmayorB
AmenorB
architecture comportamental of comparador isbeginAigualB
-
31
Introduccin al VHDL 61Electrnica Digital II
Toda seal asignada en entre if CLKevent.... y el end if; infiere un biestableToda variable cuyo valor es ledo en alguno de los caminos de ejecucin (entre el if CLKevent... y el end if) antes de ser asignada infiere un biestableToda seal que se no asigne en alguno de los posibles caminos de ejecucin de un proceso, infiere un latch.
Mtodo aconsejable para modelar biestables
SEQ2: process(CLK)begin
if CLKevent and CLK = 1thenQ
-
32
Introduccin al VHDL 63Electrnica Digital II
library IEEE;use IEEE.std_logic_1164.all;
entity DFFRN isport( CLK : in std_logic;
RN : in std_logic;EN : in std_logic;D : in std_logic;Q : out std_logic);
end DFFRN;
architecture A1 of DFFRN isbegin
SEQ: process(RN, CLK)beginif RN = 0 thenQ
-
33
Introduccin al VHDL 65Electrnica Digital II
architecture TRES of SHReg isbegin
P: process (Clk)variable V : bit_vector(7 downto 0);
beginif clkevent and clk = 1 thenfor i in 7 downto 1 loopV(i) := Q(i-1);
end loop;V(0) := Ent;Q
-
34
Introduccin al VHDL 67Electrnica Digital II
CODIFICACIN DE ESTADOS Enumerado:
type ESTADO is (S0,S1,S2,S3);
One Hot Encodingtype ESTADO is (VERDE, AMARILLO, ROJO);attribute ENUM_ENCODING of ESTADO: type is 0001 0010 0100 1000;
Sntesis de mquinas de estadosSntesis de mquinas de estados
!!
NO VHDL estndar
Introduccin al VHDL 68Electrnica Digital II
INIC0
DET00
DET011
1
00
1
1 0
entity DETECTA isport( CLK : in std_logic;
RN : in std_logic;DIN : in std_logic;SAL : out std_logic);
end DETECTA;
entity DETECTA isport( CLK : in std_logic;
RN : in std_logic;DIN : in std_logic;SAL : out std_logic);
end DETECTA;
La salida asociado al estado
La salida asociado al estado
Sntesis: Mquinas de Sntesis: Mquinas de MooreMoore (I)(I)
C.C.ENT F.F.
C.C.SAL
-
35
Introduccin al VHDL 69Electrnica Digital II
architecture MOORE of DETECTA is-- Declaracin tipo ESTADOtype ESTADO is (INIC, DET0, DET01);-- Declaracin seal de tipo estadosignal ACTUAL, SIGUE : ESTADO;begin-- proceso secuencial asignacin estadoSEQ: process(CLK, RN)beginif RN = 0 thenACTUAL
-
36
Introduccin al VHDL 71Electrnica Digital II
architecture MEALY of DETECTA istype ESTADO is (INIC, DET0, DET01);signal ACTUAL, SIGUE : ESTADO;
beginSEQ: process(CLK, RN)beginif RN = 0 thenACTUAL
-
37
Introduccin al VHDL 73Electrnica Digital II
architecture behaviour of contador4_carga issignal CUENTA: std_logic_vector (3 downto 0);
beginprocess (CLK, RN)
beginif RN =0 then reset asncronoCUENTA
-
38
Introduccin al VHDL 75Electrnica Digital II
architecture EJEMP of CONTA16 issignal CUENTA: integer range 0 to 2**16 - 1;
beginCOUNT
-
39
Introduccin al VHDL 77Electrnica Digital II
9 Usar SEALES siempre que vayan a tener visibilidad fuera del proceso en el que modifica su valor
9 Usar VARIABLES siempre que no vayan a tener visibilidad fuera del proceso en el que se declaran y se usan
9 Para que una variable no genere un elemento de memoria, es imprescindible que se le asigne un valor cada vez que se ejecuta el proceso.
9 Nunca se debe depender de los valores por defecto de las seales y variables.9 Nunca se deben inicializar seales y variables en la declaracin9 Todas las seales de entrada o que se leen en el proceso deben estar en la lista de
sensibilidad
9 Todas las seales y variables asignadas toman un valor en cada camino de control9 Para permitir la optimizacin lgica se puede utilizar el valor -9 Es recomendable hacer la lgica secuencial con la construccin if clkevent and clk=1
( 0), no pudiendo aparecer ninguna otra condicin en dicha construccin.
9 Slo debe aparecer un reloj en cada proceso secuencial. Si se tienen varios relojes, se deben poner en procesos separados.
9 La construccin if clkevent and clk=1 ( 0) no debe estar incluida en otra construccin (por ejemplo en un loop)
9 No introducir cdigo que genere lgica combinacional en procesos secuenciales a no ser que se utilicen variables
Recomendaciones: modelado para sntesisRecomendaciones: modelado para sntesis
Introduccin al VHDL 78Electrnica Digital II
9 Conviene separar la parte secuencial de la combinacional en dos procesos distintos: El proceso secuencial modela los registros
El proceso combinacional modela la asignacin del estado siguiente
Las asignaciones de los valores de las salidas se pueden hacer en el proceso combinacional o en unas sentencias concurrentes
9 Los estados se representarn con un tipo especfico para cada mquina 9 Las entradas y salidas de los bloques sern de tipo std_logic std_ulogic. Para
asegurar que no se hacen conexiones indeseadas, se pueden usar tipos std_ulogic (no resueltos)
9 En bloques de menor jerarqua se pueden utilizar tipos no estndar 9 Las rplicas (instances) de componentes deben tener el mismo nombre que las
entidades a las que corresponden.
9 Las seales de entrada que no se vayan a usar se deben poner a un valor fijo (por ejemplo -, para la optimizacin).
9 Las seales de salida que no se vayan a usar se dejarn desconectadas.9 El sintetizador puede hacer una optimizacin ms eficiente cuando el cdigo con una
misma funcionalidad est agrupado en funciones o procedimientos
9 No se pueden usar llamadas recursivas9 No se deben usar dentro de subprogramas seales o variables que no hayan sido
pasadas como parmetros en la llamada
Recomendaciones: modelado para sntesisRecomendaciones: modelado para sntesis
-
40
Introduccin al VHDL 79Electrnica Digital II
VHDL para simulacinVHDL VHDL parapara simulacinsimulacin
Introduccin al VHDL 80Electrnica Digital II
El VHDL fue creado para ser simulado (existe una forma estndarestndarde simular las descripciones VHDL)
se puede definir en VHDL tanto el circuito a simular como los estmulos a aplicar
SIMULADOR VHDL
MODELOESTMULOS
VHDL para simulacinVHDL para simulacin
... adems ...
-
41
Introduccin al VHDL 81Electrnica Digital II
Modelo de tiempo definido: Simulacin dirigida por eventos Hardware concurrente: los componentes de un circuito estn siempre ACTIVOS y operan a la vez. Cmo se ejecuta un modelo concurrente en una mquina secuencial?:atravs del SIMULADOR La simulacin en VHDL es dirigida por eventos: los valores de las seales NO se evaluan en cada instante, sino cuando alguna de las seales de las que depende cambia de valor.
VHDL: SimulacinVHDL: Simulacin
1. Anlisis Unidades de diseo a la biblioteca de funciones Enlaces entre las distintas unidades Anlisis sintctico y de coherencia
2. Elaboracin: se genera una red plana de procesos comunicados por seales
3. Simulacin Secuencia de procesos Proceso gestor de elaboracin (KERNEL)
Actualiza los valores de las seales Comprueba los procesos que deben ejecutarse Efecta el avance del tiempo
SIMULACIN
Introduccin al VHDL 82Electrnica Digital II
-- generamos el relojRELOJ: process
beginCLK
-
42
Introduccin al VHDL 83Electrnica Digital II
Hay que comprobar que el circuito hace lo que debe y que no hace lo que no debe
Siempre se comprueban:
9 Inicializaciones9 Cambios de modo de funcionamiento9 Cobertura de cdigo (100% aconsejable)9 Interfaz con su entorno
Simulacin: Bancos de prueba (Simulacin: Bancos de prueba (TestbenchTestbench))
Introduccin al VHDL 84Electrnica Digital II
Estmulos + modelo VHDLInspeccin visual de los resultados
Estmulos + modelo VHDL + comprobador de resultadosConocimiento de los resultados a priori
Estmulos dependientes de los resultados + modelo VHDL + comprobador de resultados
Se pueden establecer varios niveles de verificacinSe pueden establecer varios niveles de verificacinSe pueden establecer varios niveles de verificacin
ModeloVHDLEstmulos
ModeloVHDLEstmulos Comprobador
ModeloVHDLEstmulos Comprobador
Simulacin: Cmo probar un modelo VHDLSimulacin: Cmo probar un modelo VHDL
!!
-
43
Introduccin al VHDL 85Electrnica Digital II
Simulacin: EjemploSimulacin: Ejemplo
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Circuito sncrono;-- Reset asncrono activo por nivel bajo;-- Cuando Load es 1 se carga con el ParrallelData;-- Cuando Shift es 1 desplaza de los bits menos significativos-- a los mas significativos e introduce SerialData en el LSB
entity ShiftLoad isport ( clk : in std_logic;
reset : in std_logic;Shift : in std_logic;Load : in std_logic;SerialData : in std_logic;ParallelData : in std_logic_vector(7 downto 0);DataOut : out std_logic_vector(7 downto 0));
end ShiftLoad;
architecture Behavioral of ShiftLoad issignal DatosInternos: std_logic_vector (7 downto 0);
beginprocess (clk, reset)beginif reset = '0' then
DatosInternos '0');elsif clk = '1' and clk'event then
if Load = '1' thenDatosInternos Load,SerialData => SerialData,ParallelData => ParallelData,DataOut => DataOut);
-- proceso que genera el relojGenCLK: processbegin
clk
-
44
Introduccin al VHDL 87Electrnica Digital II
Simulacin: EjemploSimulacin: Ejemplo-- *** Test Bench - User Defined Section ***
tb : PROCESSBEGIN
--Inicializacinreset