Professional Documents
Culture Documents
LDD 2007-08
NDICE.
1. 2. 3. 4. Introduccin. Conceptos bsicos del lenguaje y Aplicaciones. Tipos de datos y Seales. Sentencias concurrentes y secuenciales. Registros y mquinas de estados finitos.
LDD 2007-08
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 2007-08
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 2007-08
LDD 2007-08
PROPIEDADES BSICAS.
Permite modelar, y simular sistemas desde un alto nivel de abstraccin hasta el nivel ms bajo (puertas, biestables). Bsicamente permite 3 niveles de descripcin:
Comportamental o algortmico Flujo de datos o RTL Estructural
Inicialmente desarrollado para modelado y simulacin lgica de sistemas digitales. Actualmente se usa tambin para sntesis.
LDD 2007-08
LDD 2007-08
Otras Ventajas
Reduccin del Tiempo de Diseo. Mejora de la Calidad del Diseo. Posibilidad de Explorar el Espacio de Diseo. Tecnologa VLSI/diseo electrnico abierta a un mayor nmero de usuarios con poca experiencia.
LDD 2007-08
Sntesis de hardware
descripcin funcional
process begin for I in 0 to 10 loop ::: end loop; end process;
descripcin estructural
Sntesis
Proceso de Sntesis
Ejemplo de Descripcin: function Paridad (Inp:std_logic_vector(2 downto 0)) return bit is variable Par:bit; begin Par := 1; for I in 1 to 3 loop if Inp(I) = 1 then Par := not Par; endif; end loop; return Par; end Paridad;
eman ta zabal zazu
Inp
3
Paridad
Par
LDD 2007-08 11
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 2007-08
12
LDD 2007-08
13
What is VHDL?
LDD 2007-08
14
Limitations
LDD 2007-08
15
LDD 2007-08
16
VHDL Styles
LDD 2007-08
17
LDD 2007-08
18
LDD 2007-08
19
LDD 2007-08
20
LDD 2007-08
21
Entity
LDD 2007-08
22
Architecture
LDD 2007-08
23
LDD 2007-08
24
LDD 2007-08
25
LDD 2007-08
26
LDD 2007-08
27
LDD 2007-08
28
LDD 2007-08
29
LDD 2007-08
30
Processes
LDD 2007-08
31
LDD 2007-08
32
Types
LDD 2007-08
33
The package
LDD 2007-08
34
LDD 2007-08
35
LDD 2007-08
36
Type definition
eman ta zabal zazu
LDD 2007-08
37
Type definition
LDD 2007-08
38
LDD 2007-08
39
LDD 2007-08
40
LDD 2007-08
41
LDD 2007-08
42
LDD 2007-08
43
Uninitiliced Unknown Logic 0 logic 1 high Unknown logic 0 logic 1 Dont care Weak drive Strong drive
LDD 2007-08
44
LDD 2007-08
45
LDD 2007-08
46
LDD 2007-08
47
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 2007-08
48
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 2007-08
49
OPERADORES LGICOS
Tipos para los que estn definidos:
LDD 2007-08
50
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 2007-08
51
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 2007-08
52
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 2007-08
53
LDD 2007-08
54
LDD 2007-08
55
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 2007-08
56
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 2007-08
57
Arrays...
eman ta zabal zazu
LDD 2007-08
58
LDD 2007-08
59
LDD 2007-08
60
c z
1 2 3 4 3 2 1 0
LDD 2007-08
61
LDD 2007-08
62
LDD 2007-08
63
LDD 2007-08
64
LDD 2007-08
65
LDD 2007-08
66
LDD 2007-08
67
LDD 2007-08
68
LDD 2007-08
69
LDD 2007-08
70
LDD 2007-08
71
LDD 2007-08
72
LDD 2007-08
73
LDD 2007-08
74
LDD 2007-08
75
LDD 2007-08
76
LDD 2007-08
77
LDD 2007-08
78
LDD 2007-08
79
LDD 2007-08
80
LDD 2007-08
81
LDD 2007-08
82
LDD 2007-08
83
Process execution
LDD 2007-08
84
LDD 2007-08
85
Sensitivity Lists
LDD 2007-08
86
LDD 2007-08
87
LDD 2007-08
88
LDD 2007-08
89
The If Statement
LDD 2007-08
90
LDD 2007-08
91
LDD 2007-08
92
LDD 2007-08
93
LDD 2007-08
94
LDD 2007-08
95
Variable usage
LDD 2007-08
96
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 2007-08
97
LDD 2007-08
98
LDD 2007-08
99
LDD 2007-08
100
LDD 2007-08
101
LDD 2007-08
102
LDD 2007-08
103
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 2007-08 104
LDD 2007-08
105
LDD 2007-08
106
LDD 2007-08
107
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 2007-08
108
LDD 2007-08
109
LDD 2007-08
110
LDD 2007-08
111
LDD 2007-08
112
LDD 2007-08
113
EJEMPLO
E0 Reset*
E2 S2 1 X 0 S1
E1
E3 0 Y 1 S1,S0
eman ta zabal zazu
X 1
LDD 2007-08
114
LDD 2007-08
115
LDD 2007-08
116
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 2007-08
117
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 2007-08
118
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 2007-08
119
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 2007-08
120
Lgica combinacional Generar estado siguiente Generar seales de salida Seale s salida Estado Registro Estado presente siguiente Clk
Entradas
LDD 2007-08
121
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 2007-08
122
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 2007-08
123
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 2007-08
124
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 2007-08
125
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 2007-08
126
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 2007-08
127