Tema 2. Lenguajes de Descripcin de Hardware (VHDL)
http://www.unoweb-s.uji.es/IS36
Germn Len Navarro
Octubre, 2003
VHDL
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 2
VHDL: VHSIC Hardware Descripcin Language
VHSIC: Very High Speed Integrated Circuit
Desarrollado a mediados de los 80 por el Departamento de Defensa
USA. (subset de ADA).
Usado para modelado, simulacin y sistemas de sistemas digitales.
Slo un subconjunto del lenguaje es sintetizable.
Flujo de Diseo
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 3
Flujo de Diseo CPLD
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 4
Flujo de Diseo- Herramientas
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 5
Ejemplo: Sumador Completo
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 6
Ejemplo: Sumador Completo(VHDL)
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 7
ent i ty FULL_ADDER is
Port ( A ,B, CIN : in BIT ;
SUM,COUT: out BIT ) ;
end FULL_ADDER;
archi tecture FA_MIXED of FULL_ADDER is
component XOR2
port (P1 , P2 : in BIT ; PZ : out b i t ) ;
end component ;
signal S1 : BIT ;
begin
Ejemplo: Sumador Completo(VHDL)
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 8
X1 : XOR2 port map ( A,B, S1 ) ; e s t r u c t u r a lprocess ( A,B, CIN ) a l g o r i t m i c o
var iable T1 , T2 , T3 : BIT ;
begin
T1:=A and B; T2 : = B and CIN ;
T3 : = A and CIN ;
COUT
Tipos
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 9
Tipos Elementales.
Boolean,Character,Integer,Reat
bit
Definidos por el usuario
Array (bit_vector),subtipo (Natural)
Enumeracin.
Estndar lgico (std_logic,std_ulogic)
Constantes
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 10
constant CONST_NAME: < type_spec > := < value >;
Examples :constant CONST_NAME: BOOLEAN : = TRUE;
constant CONST_NAME: INTEGER : = 3 1 ;
constant CONST_NAME: BIT_VECTOR ( 3 downto 0 ) : = " 0000 " ;
constant CONST_NAME: STD_LOGIC : = Z ;
constant CONST:STD_LOGIC_VECTOR( 3 downto 0 ) : = "00" ;
Arrays
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 11
signal A_BUS,Z_BUS : b i t _ v e c t o r ( 3 downto 0 ) ;
signal B_BUS : b i t _ v e c t o r ( 0 to 3 ) ;
Z_BUS
Agregar y concatenar arrays
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 12
signal A_BUS,B_BUS,Z_BUS : b i t _ v e c t o r ( 3 downto 0 ) ;
signal A_BIT , B_BIT , C_BIT , D_BIT : b i t ;
signal BYTE: b i t _ v e c t o r ( 7 downto 0 ) ; AgregarZ_BUS 1 ,6= >B_BIT , others = > 0 ) ; ConcatenarZ_BUS
Particionar arrays
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 13
BYTE ( 5 downto 2 ) < = A_BUS;
Z_BUS ( 1 downto 0 ) < = 0 & B_BIT ;
B_BIT
Estndar lgico
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 14
type STD_ULOGIC is ( U , N o i n i c i a l i z a d o
X , O o 1 1 , 1 dominante 0 , O dominanteZ , A l ta impendanciaW , L , O d e b i lH , 1 d e b i l no importa ) ;
std_logic: Es correcto Res
Librera
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 15
Definicin : Una librera es un conjunto de elementos de VHDL.
Dentro de las librerias se incluyen package que es un conjunto de
funciones y tipos.
Se utilizan:l i l b a r y LIB_NAME ;
use LIB_NAME .PACKAGE_NAME. a l l ; Para trabajar con el tipo std_logic se utiliza el siguiente package
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
STD_LOGIC_1164
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 16
CONSTANT r e s o l u t i o n _ t a b l e : s t d l o g i c _ t a b l e : = (
| U X 0 1 Z W L H | |
( U , U , U , U , U , U , U , U , U ) , | U |( U , X , X , X , X , X , X , X , X ) , | X |( U , X , 0 , X , 0 , 0 , 0 , 0 , X ) , | 0 |( U , X , X , 1 , 1 , 1 , 1 , 1 , X ) , | 1 |( U , X , 0 , 1 , Z , W , L , H , X ) , | Z |( U , X , 0 , 1 , W , W , W , W , X ) , | W |( U , X , 0 , 1 , L , W , L , W , X ) , | L |( U , X , 0 , 1 , H , W , W , H , X ) , | H |( U , X , X , X , X , X , X , X , X ) | |
) ;
CONV_INTEGER: STD_LOGIC_VECTOR INTEGER.
CONV_STD_LOGIC_VECTOR (INTEGER,SIZE):
INTEGER STD_LOGIC_VECTOR.
Descripcin estructural
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 17
component COMPONENT_NAME port ( < po r t_dec la ra t i on > ) ;
end component ;
LABEL1 : COMPONENT_NAME port map
( PORT_NAME = > SIG_NAME,PORT_NAME = > SIG_NAME ) ;
for I in < l o w e r _ l i m i t > to < upper_ l im i t > generate
end generate ;
i f < cond i t i on > generate
end generate ;
Ejemplo sumador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 18
G0 : for I in 0 to 3 generate
G1 : i f I = 0 generate
HA : HALF_ADDER port map (
A = > X( I ) , B = > Y( I ) ,
S = > Z( I ) , Co = > TMP( I + 1 ) ) ;
end generate ;
G2 : i f I >= 1 and I X( I ) , B = > Y( I ) , C = > TMP( I ) ,
S = > Z( I ) , Co = > TMP( I + 1 ) ) ;
end generate ; end generate ;
Genericidad
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 19
ent i ty ENTITY_NAME is
generic ( parametro : t i p o := va lo rporde fec to , . . . )
port ( < po r t_dec la ra t i ons > ) ;
end ENTITY_NAME;
component COMPONENT_NAME generic ( < gener i c_dec la ra t ion >)
port ( < po r t_dec la ra t i on > ) ;
end component ;
LABEL1 : COMPONENT_NAME generic map ( parametro = > va lor , . . . )
port map ( PORT_NAME = > SIG_NAME,PORT_NAME = > SIG_NAME ) ;
Descripcin Dataflow
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 20
SIG_NAME ;
LABEL1 : o p t i o n a l l a b e lSIG_NAME when < cond i t i on > else
when < cond i t i on > else
;
LABEL1 : o p t i o n a l l a b e lwith < choice_expression > select
SIG_NAME when < choices > ,
when < choices > ,
when others ;
Ejemplos: Triestado y Multiplexor
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 21
Driver Triestado.
Sa l ida Z ) ;
Multiplexor 4:1
with se l select
s1
Expresiones RTL
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 22
Expesiones normales: and ,or,xor,not
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
use IEEE . s t d _ l o g i c _ a r i t h . a l l ;
use IEEE . s td_ log ic_uns igned . a l l ;
Tipos: Signed,Unsigned Nuevos operaciones:+,-,=,>,
Tipos: Signed, Unsigned
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 23
l i b r a r y IEEE ;
use IEEE . STD_LOGIC_1164 .ALL ;
use IEEE . STD_LOGIC_ARITH .ALL ;
ent i ty vadd is
Port ( A ,B : in UNSIGNED( 7 downto 0 ) ;
C : in SIGNED( 7 downto 0 ) ;
D : in s td _ l o g i c _ v ec t o r ( 7 downto 0 ) ;
S : out UNSIGNED( 8 downto 0 ) ;
T : out SIGNED( 8 downto 0 ) ;
U : out SIGNED( 7 downto 0 ) ;
V : out s td _ l o g i c _ v e c t o r ( 8 downto 0 ) ) ;
end vadd ;
archi tecture Behav iora l of vadd is
begin
S< = ( 0 & A) + ( 0 & B ) ;
T
Descripcin algoritmica
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 24
Process: Especifica el comportamiento
siguiendo de un algoritmo secuencial.
Lista de sensibilidad: Cuando cambia uno
elemento de la lista se evualar el process.
Sern las entradas del circuito especificado.
[ label ] : process ( l i s t a de s e n s i b i l i d a d )
begin process [ l a b e l ]end process [ label ] ;
if y case
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 25
case < expression > is
when < choices > =>
when < choices > =>
when others = >
end case ;
i f < cond i t i on > then
e l s i f < cond i t i on > then
else
end i f ;
for
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 26
LABEL1 :
for I in < l o w e r _ l i m i t > to < upper_ l im i t > loop
end loop ;
Variables vs signals
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 27
Variables: Slo se pueden referencia dentro
del process. Las modificaciones son
inmediata.
Signal: Slo puede cambiar el valor al final
del process. Se puede referenciar en toda la
arquitectura.
Variables vs signals (cont)
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 28
signal A, B,C,Y, Z :UNSIGNED( 7 downto 0 ) ;
begin
process ( A, B,C)
var iable M,N:UNSIGNED( 7 downto 0 ) ;
begin
M:=A;
N:=B;
Z
Inferir memoria
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 29
process ( GATE, DIN )
begin
i f GATE= 1 then
DOUT
Ejemplo propuestos
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 30
Decodificador 1x2.
Decodificador 2x4 (estructural).
Codificador 4:2.
Codificador Gray 4:2 (estructural).
Codificador genrico.
Comparador genrico.
Decodificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 31
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty dec1x2 is
port (
I : in STD_LOGIC ;E : in STD_LOGIC ;
s0 : out STD_LOGIC ; s1 : out STD_LOGIC ) ;
end dec1x2 ;
archi tecture dec1x2_arch of dec1x2 is
begin
s0
Decodificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 32
archi tecture dec1x2_beh of dec1x2 is
begin
s0 < = 0 when ( e = 0 ) else not ( I ) ;
s1 < = 0 when ( e = 0 ) else I ;
end dec1x2_beh ;
archi tecture dec1x2_beh2 of dec1x2 is
begin
pro : process ( i , e )
begin
s1
Decodificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 33
i f ( i = 0 ) then s0 < = 0 ;
else s1
Decodificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 34
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty dec2x4 is
port (
A : in STD_LOGIC_VECTOR ( 1 downto 0 ) ;
S : out STD_LOGIC_VECTOR ( 3 downto 0 ) ; E : in STD_LOGIC
) ;
end dec2x4 ;
archi tecture dec2x4_arch of dec2x4 is
signal h a b i l i t a c i o n : s t d _ l og i c _v e c t o r ( 1 downto 0 ) ;
component dec1x2 port ( a , e : in s t d _ l o g i c ; s0 , s1 : out s t d _ l o g i c ) ;
Decodificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 35
end component ;
begin
DecEnt : dec1x2 port map
(A( 1 ) ,E, h a b i l i t a c i o n ( 0 ) , h a b i l i t a c i o n ( 1 ) ) ;
S a l i : for I in 0 to 1 generate
DecSal : dec1x2 port map
(A( 0 ) , h a b i l i t a c i o n ( I ) ,S(2 I ) ,S(2 I + 1 ) ) ;end generate ;
end dec2x4_arch ;
Codificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 36
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty code4a2 is
port (
pe t i c i ones : in STD_LOGIC_VECTOR ( 3 downto 0 ) ;
codigo : out STD_LOGIC_VECTOR ( 1 downto 0 ) ;
enable : in STD_LOGIC ; alguno : out STD_LOGIC
) ;
end code4a2 ;
archi tecture code4a2_arch of code4a2 is
begin
x : process ( pe t i c iones , enable )
begin
Codificador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 37
alguno < = 0 ;
codigo
Codificador Gray
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 38
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty codegray is
port (
pe t i c i ones : in STD_LOGIC_VECTOR ( 3 downto 0 ) ;
codigo : out STD_LOGIC_VECTOR ( 1 downto 0 ) ;
alguno : out STD_LOGIC
) ;
end codegray ;
archi tecture codegray_arch of codegray is
signal uno : s t d _ l o g i c ;
signal code_tmp : s td _ l og i c _ v e c t o r ( 1 downto 0 ) ;
component code4a2 port (
Codificador Gray
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 39
pe t i c i ones : in STD_LOGIC_VECTOR ( 3 downto 0 ) ;
codigo : out STD_LOGIC_VECTOR ( 1 downto 0 ) ;
enable : in STD_LOGIC ;
alguno : out STD_LOGIC
) ; end component ;
begin
uno < = 1 ;
cd : code4a2 port map( pe t i c iones , code_tmp , uno , alguno ) ;
with code_tmp select
codigo
Codificador Genrico
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 40
l i b r a r y IEEE ;
use IEEE . STD_LOGIC_1164 .ALL ;
use IEEE . STD_LOGIC_ARITH .ALL ;
use IEEE .STD_LOGIC_UNSIGNED.ALL ;
ent i ty coden is
generic (ANCHO: i n t e g e r : = 4 ) ;
Port (
s o l i c i t u d : in s td _ l o g i c _ v e c t o r ( (2ANCHO)1 downto 0 ) ;codigo : out s td _ l o g i c _ v e c t o r (ANCHO downto 0 ) ) ;
end coden ;
archi tecture Behav iora l of coden is
begin
ab : process ( s o l i c i t u d )
Codificador Genrico
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 41
begin
codigo 0 ) ;
for i in 0 to ( ( 2ANCHO)1) loopi f ( s o l i c i t u d ( i ) = 1 ) then
codigo
Latchs y Biestables
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 42
l a t c h : process ( GATE, DIN )
begin
i f GATE= 1 then
DOUT
Biestable
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 43
< label > : process ( < clock > , < reset >)
begin process < labe l >i f < reset > = 0 then asynchronous rese t
( a c t i v e low )
e l s i f < clock > event and < clock > = 1 then
i f < enable > = 1 then synchronous load
end i f ;
end i f ;
end process < label >;
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 44
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty regds l is
port (
Entrada : in STD_LOGIC ;
r e l o j : in STD_LOGIC ;
Sa l ida : out STD_LOGIC
) ;
end regds l ;
archi tecture regds l_arch of regds l is
signal estado , f u t u r o : s t d _ l o g i c _ v e c to r ( 1 5 downto 0 ) ;
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 45
begin
>s a l i d a
DECodificador BCD a 7 segmentos
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 46
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 47
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty regdesf is
port (
c l k : in STD_LOGIC ;
D i r : in STD_LOGIC ;
ent : in STD_LOGIC ;
s a l i d a : out STD_LOGIC_VECTOR ( 1 2 downto 0 )
) ;
end regdesf ;
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 48
archi tecture regdesbid_arch of regdesf is
signal i n fo , in fo_tmp : s td _ l o g i c_ v e c t o r (12 downto 0 ) ;
begin
>ddcc : process ( d i r , ent )
begin
i f ( d i r = 1 ) then in fo_tmp
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 49
dd : process ( c l k )
begin
i f ( c lk event and c l k = 1 )
then
i n fo
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 50
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty regdslpa is
port (
Entrada : in STD_LOGIC ;
r e l o j : in STD_LOGIC ;
pa ra l e l a : in s td _ l o g i c_ v ec t o r ( 1 5 downto 0 ) ;
load : in s t d _ l o g i c ;
Sa l ida : out STD_LOGIC ) ;
end regdslpa ;
Registro de desplazamiento
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 51
archi tecture regds l_arch of regdslpa is
signal estado , f u t u r o : s t d _ l o g i c _ ve c to r ( 1 5 downto 0 ) ;
begin
>s a l i d a
Contador hasta 5
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 52
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty c5 is
port (
c lk , rese t : in STD_LOGIC ;
Q: out STD_LOGIC_VECTOR ( 2 downto 0 )
) ;
end c5 ;
archi tecture c5_arch of c5 is
signal cuenta , masuno : s t d _ l o g i c _ ve c t o r ( 2 downto 0 ) ;
begin
q
Contador hasta 5
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 53
process ( cuenta )
begin
masuno masuno masuno masuno masuno masuno masuno NULL ;
end case ;
end process ;
Contador hasta 5
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 54
process ( c lk , rese t )
begin
i f ( rese t = 1 ) then cuenta 0 ) ;
e l s i f ( c lk event and c l k = 1 ) then
cuenta
Contador gnerico
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 55
l i b r a r y IEEE ;
use IEEE . STD_LOGIC_1164 .ALL ;
use IEEE . STD_LOGIC_ARITH .ALL ;
use IEEE .STD_LOGIC_UNSIGNED.ALL ;
ent i ty contador is
generic (ANCHO: n a t u r a l : = 8 ) ;
Port ( enable : in s t d _ l o g i c ;
c l k : in s t d _ l o g i c ;
rese tz : in s t d _ l o g i c ;
rese ts : in s t d _ l o g i c ;
q : out s td _ l o g i c _ v ec t o r (ANCHO1 downto 0 ) ) ;end contador ;
archi tecture Behav iora l of contador is
Contador gnerico
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 56
signal cuenta , masuno : s t d _ l o g i c _ v e c t o r (ANCHO1 downto 0 ) ;begin
masuno
Comparador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 57
l i b r a r y IEEE ;
use IEEE . STD_LOGIC_1164 .ALL ;
use IEEE . STD_LOGIC_ARITH .ALL ;
use IEEE .STD_LOGIC_UNSIGNED.ALL ;
ent i ty comparador is
generic (ANCHO: i n t e g e r : = 8 ;EOS: i n t e g e r :=200;
SOB: i n t e g e r :=210;EOB: i n t e g e r :=220;EOL: i n t e g e r :=230
) ;
Port ( data : in s td _ l o g i c_ v ec t o r (ANCHO1 downto 0 ) ;c l k : in s t d _ l o g i c ;
rese tz : in s t d _ l o g i c ;
o : out s td _ l o g i c _ v e c t o r ( 1 to 3 ) ) ;
end comparador ;
Comparador
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 58
archi tecture Behav iora l of comparador is
signal f_o : s t d_ l og i c_ v ec t o r ( 1 to 3 ) ;
begin
f_o ( 1 ) < = 1 when ( data > EOS) else 0 ;
f_o ( 2 ) < = 1 when ( data > SOB) and ( data < EOB) else 0 ;
f_o ( 3 ) < = 1 when ( data=EOL ) else 0 ;
reg : process ( c lk , resetz , f_o )
begin
i f ( rese tz = 1 ) then o 0 ) ;
e l s i f ( c lk event and c l k = 1 ) then o
Mquina de estados
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 59
type STATE_TYPE is ( S1 , S2 , S3 , S4 ) ;
Borrar estas dos lneas para p e r m i t i r a l Expressdeterminar l a c o d i f i c a c i o na t t r i b u t e ENUM_ENCODING: STRING;
a t t r i b u t e ENUM_ENCODING of STATE_TYPE: type is " 0001 0010 0100 1000 " ;
signal CS, NS : STATE_TYPE;
Otra opcion elimando los comentar ios se r i a . s i g n a l CS, NS : STD_LOGIC_VECTOR ( 1 downto 0 ) ; constant S1 : s t d_ l og i c_ v ec t o r ( 1 downto 0 ) : = " 0 0 " I n s e r t a r l os s i g u i e n t e despues de l a palabra c lave begin
SYNC_PROC: process (CLOCK, RESET)
begin
i f ( RESET= 1 ) then
Mquina de estados
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 60
CS
i f ( < condic iones > ) then
end i f ;
Mquina de estados
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 61
r e p e t i r para todos los estados .end case ;
end process ;
Sumador serie
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 62
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty SS is
port (
A : in STD_LOGIC ;
B : in STD_LOGIC ;
s : out STD_LOGIC ;
rese t : in s t d _ l o g i c ;
c l k : in STD_LOGIC
) ;
end SS;
archi tecture SS_arch of SS is
constant SINACARREO : STD_LOGIC : = 0 ;
Sumador serie
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 63
constant CONACARREO: STD_LOGIC : = 1 ;s i g n a l estado , sgte_estado : s t d _ l o g i c ;type t ipodeestado is ( SINACARREO,CONACARREO) ;
signal estado , sgte_estado : t ipodeestado ;
signal clock , clock_tmp , d_s , tmp_S : s t d _ l o g i c ;
component i b u f port ( I : in s t d _ l o g i c ; O: out s t d _ l o g i c ) ; end component ;
component bufg port ( I : in s t d _ l o g i c ; O: out s t d _ l o g i c ) ; end component ;
begin
u0 : i b u f port map ( c lk , clock_tmp ) ;
u1 : bufg port map ( clock_tmp , c lock ) ;
CC: process ( estado ,A,B)
begin
case estado is
Sumador serie
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 64
when SINACARREO=>
sgte_estado
Sumador serie
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 65
end i f ;
when others = > NULL ;
end case ;
end process cc ;
r e l o j : process ( c lock , rese t )
begin
i f ( rese t = 1 ) then
estado
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 66
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty ram1x1 is
port (
Enable : in STD_LOGIC ; Read : in STD_LOGIC ;
c l k : in STD_LOGIC ;
Reset : in STD_LOGIC ; Dato : in STD_LOGIC ;
Sal : out STD_LOGIC
) ;
end ram1x1 ;
archi tecture ram1x1_arch of ram1x1 is
signal estado , sig_estado , s_temp :STD_LOGIC ;
begin
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 67
op : process ( Enable , Read , Dato )
begin
i f ( Enable = 0 ) then
s_temp
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 68
estado
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 69
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty ram1x1 is
port (
Enable : in STD_LOGIC ;
Read : in STD_LOGIC ;
c l k : in STD_LOGIC ;
Reset : in STD_LOGIC ;
Dato : in STD_LOGIC ;
Sal : out STD_LOGIC
) ;
end ram1x1 ;
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 70
archi tecture ram1x1_arch of ram1x1 is
signal estado , sig_estado , s_temp :STD_LOGIC ;
begin
op : process ( Enable , Read , Dato , estado )
begin
sig_estado
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 71
s_temp
RAM 1x1
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 72
s_temp
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 73
l i b r a r y IEEE ;
use IEEE . std_ log ic_1164 . a l l ;
ent i ty ram16x2 is
port (
D i r : in STD_LOGIC_VECTOR( 3 downto 0 ) ;
Read : in STD_LOGIC ;
c l k : in STD_LOGIC ;
Reset : in STD_LOGIC ;
Dato : in STD_LOGIC_VECTOR( 0 to 1 ) ;
Sal : out STD_LOGIC_VECTOR( 0 to 1 )
) ;
end ram16x2 ;
archi tecture ram16x2_arch of ram16x2 is
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 74
component ram1x1 port ( Enable : in STD_LOGIC ;R: in STD_LOGIC ; c lock : in STD_LOGIC ;
Res : in STD_LOGIC ; Dat : in STD_LOGIC ;S : out STD_LOGIC ) ;
end component ;
component dec4x16 port (E : in STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ; S : out STD_LOGIC_VECTOR ( 0 to 1 5 ) ) ;
end component ;
signal v e c t o r _ d i r :STD_LOGIC_VECTOR ( 0 to 1 5 ) ;
begin
u0 : dec4x16 port map( d i r , v e c t o r _ d i r ) ;
l abe l1 : for a in 0 to 1 5 generate
wa: ram1x1 port map ( v e c t o r _ d i r ( a ) , Read , c lk , Reset , Dato ( 0 ) , Sal ( 0 ) ) ;
va : ram1x1 port map ( v e c t o r _ d i r ( a ) , Read , c lk , Reset , Dato ( 1 ) , Sal ( 1 ) ) ;
end generate ;
Tema 2. Lenguajes de Descripcin de Hardware (VHDL) 75
end ram16x2_arch ;
The End
Copyright c 2003 Germn Len Navarro
Made with the ujislides document class c 2002-3 Sergio Barrachina ([email protected])