Professional Documents
Culture Documents
LDD 2004-05
NDICE.
1. Introduccin. 2. Conceptos bsicos del lenguaje y Aplicaciones. 3. Tipos de datos y Seales. 4. Sentencias concurrentes y secuenciales. 5. Registros y mquinas de estados finitos.
LDD 2004-05
Bibliografa:
- VHDL Lenguaje estndar de diseo electrnico. Llus Ters, Yago Torroja, Serafn Olcoz, Eugenio Villar. Ed, Mc Graw-Hill, 1998 - VHDL Modeling for Digital Design Synthesis Yu-Chin Hsu, Kevin F. Tsai, Jessie T. Liu, Eric S.Lin. Ed, Kluwer Academic Publishers, 1995 - Hardware Design and Simulation in VAL / VHDL. Larry M. Augustin, David C. Luckham, beniot A. Gennart, Youmth Huh, Alec G. Stanculescu. Ed, Kluwer Academic Publishers, 1991. - VHDL Designers Reference. Jean Michel Berg, Alain Fonkova, Serge Maginot, Jacques Rovillard. Kluwer Academic Publishers, 1992
LDD 2004-05
INTRODUCCIN.
Circuitos integrados. Evolucin del diseo electrnico El lenguaje VHDL
LDD 2004-05
CIRCUITOS INTEGRADOS
Un Circuito Integrado (C.I.) es un circuito electrnico donde tanto los componentes como su conexionado se construyen en un mismo dado de material semiconductor (Si)
chip
1958 J. Kilby (Texas Instr.) primer C.I.
eman ta zabal zazu
LDD 2004-05
Rpida evolucin:
Componentes SSI Procesador VLSI
Circuitos ms complejos Metodologas nuevas de diseo Herramientas nuevas de diseo Desarrollo paralelo Microelectrnica Informtica
LDD 2004-05
Altera
Diseo modelo VHDL
Modelado y Sntesis
Simulacin
Diseo Lgico
(puertas)
Anlisis de Timing
Diseo Fsico
(transistores-layout)
Estas etapas son funcin de las distintas alternativas de diseo. Por analoga PROGRAMACIN se busca
LDD 2004-05
Sntesis de hardware
descripcin funcional
process begin for I in 0 to 10 loop ::: end loop; end process;
descripcin estructural
Sntesis
Funcin Objetivo
Restricciones
Sntesis
Funcin Objetivo: Una funcin de : Estimacin del rea. Retardos del Circuito Restricciones: Condiciones que debe cumplir el circuito. (p.e. Area estimada < X. Retardo < Y...)
eman ta zabal zazu
LDD 2004-05
10
LDD 2004-05
11
What is VHDL?
LDD 2004-05
12
Limitations
LDD 2004-05
13
LDD 2004-05
14
VHDL Styles
LDD 2004-05
15
LDD 2004-05
16
LDD 2004-05
17
LDD 2004-05
18
LDD 2004-05
19
Entity
LDD 2004-05
20
Architecture
LDD 2004-05
21
LDD 2004-05
22
LDD 2004-05
23
LDD 2004-05
24
LDD 2004-05
25
LDD 2004-05
26
LDD 2004-05
27
LDD 2004-05
28
Processes
LDD 2004-05
29
LDD 2004-05
30
Types
LDD 2004-05
31
The package
LDD 2004-05
32
LDD 2004-05
33
LDD 2004-05
34
Type definition
eman ta zabal zazu
LDD 2004-05
35
Type definition
LDD 2004-05
36
LDD 2004-05
37
LDD 2004-05
38
LDD 2004-05
39
LDD 2004-05
40
LDD 2004-05
41
Uninitiliced Unknown Logic 0 logic 1 high Unknown logic 0 logic 1 Dont care Weak drive Strong drive
LDD 2004-05
42
LDD 2004-05
43
LDD 2004-05
44
LDD 2004-05
45
OPERADORES EN VHDL
Existen 3 tipos predefinidos: Operadores lgicos Operadores matemticos Operadores relacionales Por defecto, cada operador puede usarse con cierto tipo de datos. El usuario puede definir funciones si precisa usar otros tipos.
eman ta zabal zazu
LDD 2004-05
46
OPERADORES LGICOS
Son los siguientes: AND, NAND, OR, NOR XOR, XNOR NOT Adems de desplazamientos lgicos/aritmticos izda/dcha y rotaciones: SLL, SRL, SLA, SRA, ROL, ROR. Todos misma prioridad (de izda a dcha) salvo NOT que es siempre prioritaria.
eman ta zabal zazu
LDD 2004-05
47
OPERADORES LGICOS
Tipos para los que estn definidos:
LDD 2004-05
48
library IEEE; use IEEE.Std_logic_1164.all; entity MULS is port ( A, B, : in std_logic ; Z : out std_logic ); end MULS; architecture EX of MULS is begin z <= A and not (B or C ); end EX;
eman ta zabal zazu
LDD 2004-05
49
Signal A_BUS, B_BUS, Z_BUS: std_logic_vector ( 3 downto 0 ); Z_BUS <= A_BUS and B_BUS; Equivalente a ZBUS(3) <= A_BUS(3) and B_BUS(3); ZBUS(2) <= A_BUS(2) and B_BUS(2); ZBUS(1) <= A_BUS(1) and B_BUS(1); ZBUS(0) <= A_BUS(0) and B_BUS(0);
eman ta zabal zazu
LDD 2004-05
50
OPERADORES RELACIONALES
Son los siguientes: igual (=) , distinto (/=) mayor(>), mayor o igual (>=) menor(>), menor o igual (>=) Los operandos pueden ser de cualquier tipo. El resultado es de tipo boolean.
LDD 2004-05
51
LDD 2004-05
52
LDD 2004-05
53
OPERADORES ARITMTICOS
Son los siguientes y para los tipos de datos indicados: suma (+), resta (-) --- cualquier tipo numrico producto (*), divisin (/) --- entero/real potencias (**) --- entero/real (exponente entero) mdulo (mod), resto (rem) --- enteros valor absoluto (abs) --- entero/real
LDD 2004-05
54
CONSTANTES
Es un objeto que almacena un nico valor durante toda la simulacin Ejemplos: constant E:real:=2.7172; constant V37:bit_vector (7 downto 0):= 0100110; constant delay:time:=2ns;
LDD 2004-05
55
Arrays...
eman ta zabal zazu
LDD 2004-05
56
LDD 2004-05
57
LDD 2004-05
58
c z
1 2 3 4 3 2 1 0
LDD 2004-05
59
LDD 2004-05
60
LDD 2004-05
61
LDD 2004-05
62
LDD 2004-05
63
LDD 2004-05
64
LDD 2004-05
65
LDD 2004-05
66
LDD 2004-05
67
LDD 2004-05
68
LDD 2004-05
69
LDD 2004-05
70
LDD 2004-05
71
LDD 2004-05
72
LDD 2004-05
73
LDD 2004-05
74
LDD 2004-05
75
LDD 2004-05
76
LDD 2004-05
77
LDD 2004-05
78
LDD 2004-05
79
LDD 2004-05
80
LDD 2004-05
81
Process execution
LDD 2004-05
82
LDD 2004-05
83
Sensitivity Lists
LDD 2004-05
84
LDD 2004-05
85
LDD 2004-05
86
LDD 2004-05
87
The If Statement
LDD 2004-05
88
'GWG ZE V U
eman ta zabal zazu
H UVWDC E KTV T G T PJ
LDD 2004-05 89
LDD 2004-05
90
LDD 2004-05
91
LDD 2004-05
92
LDD 2004-05
93
Variable usage
LDD 2004-05
94
4 A ( 3 downto 0 )
ODD
Process (A) variable TMP : std_logic; begin TMP:= 0; for I in Alow to Ahigh loop TMP := TMP xor A(I); end loop; ODD <= TMP; end process;
eman ta zabal zazu
LDD 2004-05
95
LDD 2004-05
96
LDD 2004-05
97
LDD 2004-05
98
LDD 2004-05
99
LDD 2004-05
100
LDD 2004-05
101
Entiti Flop is port (D, Clk : in std_logic; Q end Flop; architecture A of Flop is begin process begin wait until Clkevent and Clk = 1; Q <= D; end process;
eman ta zabal zazu
: out st_logic);
end A;
LDD 2004-05 102
LDD 2004-05
103
LDD 2004-05
104
LDD 2004-05
105
end incomp_if; architecture A of incomp_if is begin process (EN, D ) begin if ( EN = 1 ) then ; Q <= D; end if ; end process; end A;
eman ta zabal zazu
LDD 2004-05
106
LDD 2004-05
107
LDD 2004-05
108
LDD 2004-05
109
LDD 2004-05
110
LDD 2004-05
111
EJEMPLO
E0 Reset*
E2 S2 1 X 0 S1
E1
E3 0 Y 1 S1,S0
eman ta zabal zazu
X 1
LDD 2004-05
112
LDD 2004-05
113
LDD 2004-05
114
SEC: process (EST_PRES, X,Y) --- inicializacin case EST_PRES is when 0 => if X= 0 then EST_SIG<=1; else EST_SIG <=2; end if; when 1 => EST_SIG<=3; when 2 => if Y= 1 then EST_SIG<=3; else EST_SIG <=2; end if; when 3 => if X= 0 then EST_SIG<=1; else EST_SIG <=0; end if; end case; end process SEC;
eman ta zabal zazu
LDD 2004-05
115
REG: process (clk, Reset) begin if Reset= 0 then EST_PRES <= 0; if clk event and clk= 1 then EST_PRES <= EST_SIG; end if; end process REG;
eman ta zabal zazu
LDD 2004-05
116
outputs
else 0;
S1 <= 1 when (EST_PRES=1 or (EST_PRES=2 AND Y= 1)) else 0; S0 <= 1 when (EST_PRES=2 AND Y= 1) else 0; ESTADO <= EST_PRES;
LDD 2004-05
117
DESCRIPCIN COMPLETA:
architecture una of UC is signal EST_PRES,EST_SIG: integer range 0 to 3; begin SEC: process (EST_PRES, X,Y) --- inicializacin case EST_PRES is when 0 => if X= 0 then EST_SIG<=1; else EST_SIG <=2; end if; when 1 => EST_SIG<=3; when 2 => if Y= 1 then EST_SIG<=3; else EST_SIG <=2; end if; when 3 => if X= 0 then EST_SIG<=1; else EST_SIG <=0; end if; end case; end process SEC; REG: process (clk, Reset) begin if Reset= 0 then EST_PRES <= 0; if clk event and clk= 1 then EST_PRES <= EST_SIG; end if; end process REG; S2 <= 1 when EST_PRE S1 <= 1 when (EST_PRES=1 or (EST_PRES=2 AND Y= 1)) S0 <= 1 when (EST_PRES=2 AND Y= 1) ESTADO <= EST_PRES;
eman ta zabal zazu
end una;
LDD 2004-05
118
Lgica combinacional Generar estado siguiente Generar seales de salida Seale s salida Estado Registro Estado siguiente presente Clk
Entradas
LDD 2004-05
119
EJEMPLO:
E0 (00)
0
(borrar registro y overflow) borrar sumar
RESET*
OVF<--0 CLR
INIC
SUM
1
E3(11)
E1(01)
(cargar el registro)
LDR
1 0
SUM + INIC
Cout
1
OVF<--1
(activar overflow)
E2(10)
(borrar registro y overflow)
OVF<--0 CLR
INIC
LDD 2004-05
120
Descripcin en VHDL:
library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all;
entity p1_ucV is port( CLK ,RESETL INIC, SUM, COUT : in : in std_logic; std_logic; std_logic;
LDD 2004-05
121
Descripcin en VHDL:
architecture UC of p1_ucV is signal EST_PRES, EST_SIG_EST integer range 0 to 3;
begin ES: process (EST_PRES, INIC,SUM,COUT) begin EST_SIG <= EST_PRES; case EST_PRES is
LDD 2004-05
122
Descripcin en VHDL:
case EST_PRES is when E0 => if INIC=' 1' then elsif SUM=' 1' then else end if; when E1 => if COUT=' 1' then else end if; when E2 => if INIC=' 0' then else end if; when E3 => if (INIC or SUM) = ' 1' then EST_SIG <= E3; else end if; end case; end process ES; EST_SIG <= E0; EST_SIG <= E2; EST_SIG <= E3; EST_SIG <= E2; EST_SIG <= E3; EST_SIG <= E3; EST_SIG <= E1; EST_SIG <= E0;
LDD 2004-05
123
Descripcin en VHDL:
REG: process (clk, resetL) begin if (resetL=' 0' ) then EST_PRES<=E0; elsif (clk' event) and (clk=' 1' ) then EST_PRES<=EST_SIG; end if; end process REG;
LDD 2004-05
124
Descripcin en VHDL:
LDRL CLRL OVF1 OVF0L <= ' 0' when EST_PRES=E1 else ' 1' ; else ' 1' ; <= ' 0' when (EST_PRES=E1 OR EST_PRES =E0) AND INIC=' 1' <= ' 1' when EST_PRES=E1 AND COUT=' 1' else ' 0' ; else 1' ;
end UC;
LDD 2004-05
125