Sunteți pe pagina 1din 54

Objetivos del Lenguaje Descriptor de Hardware

Especificar circuitos electr


onicos
Simular el circuito previo a su construcci
on
Utilizar las ventajas que brinda un compilador en el control de errores
en la construccion del circuito.
Ejemplos :
Conectar dos salidas a un mismo nodo.

Interfaces electricas incompatibles.


1 => 2.8V < Vout < 3.5V
0 => 0V < Vout < 0.8V

Miguel Angel Sagreras ()

Vin < 1V => 0


Vin > 4V => 1

Introducci
on al VHDL

22 de abril de 2010

1 / 53

El Lenguaje Descriptor de Hardware VHDL


VHDL sigla que significa VHSIC Hardware Description Language.
VHSIC significa Very High Speed Integrated Circuit. Fue un programa
gubernamental del Departamento de Defensa de EE.UU.
Su especificacion se encuentra en la NORMA IEEE-1076.
Objetivos:
Normalizar la descripci
on de los circuitos integrados de aplicacion
especfica o A.S.I.C provistos al DoD.
Especificar el comportamiento de circuitos digitales pero no su
construcci
on.

Permite la descripcion de los circuitos en base a tres modelos


Comportamiento
Estructural
Data Flow

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

2 / 53

Entidad de diseno

La entidad de dise
no es equivalente al encapsulado de los circuitos
integrados.
Define cuales son sus puertos y los modos de dichos puertos.
Ejemplos de encapsulados:

DIP

Miguel Angel Sagreras ()

SMD

Introducci
on al VHDL

PLCC

22 de abril de 2010

3 / 53

Ejemplo de diseno

Contador de dos bits de flanco ascendente y con una entrada de reset


asincronica que cuando tenga el valor 1 las salidas deben ponerse en 0

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

4 / 53

Encapsulado y entidad de diseno

CONT2
RST

Q1

CLK

Q0

e n t i t y cont2
port (
rst :
clk :
q0
:
q1
:
end ;

in
bit
in
bit
buffer
buffer

;
;
bit ;
bit );

C
odigo VHDL

Diagrama

Miguel Angel Sagreras ()

is

Introducci
on al VHDL

22 de abril de 2010

5 / 53

Descripcion de la Entidad de diseno

Pasos a seguir
Indentificar la entidad con un nombre.
Definir parametros de construcci
on generic.
Indentificar y declarar los puertos de acceso port.
Definir los modos de los puertos in, out, inout, etc.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

6 / 53

Descripcion de modelos estructural y data flow

Las instrucciones que se utilizan en estos modelos se llaman concurrentes.


La secuencia en que se escriben no afecta el comportamiento del circuito
especificado.
Modelo estructural : se interconectan componentes por medio de las
se
nales.
Modelo data-flow : se asigna un valor a una se
nal mediante una
expresion. Tambien se la conoce como Lenguaje de Transferencia de
Registro o RTL.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

7 / 53

Diagrama en bloque

Q0

D
CLK

CK

Q1

CK

CLR

CLR

RST

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

8 / 53

Identificacion de los nodos de interconexion

D0
Q0

D
CLK

CK

Q1

CK

CLR

CLR

RST

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

9 / 53

Identificacion de los nodos de interconexion

D0

D1
Q0

D
CLK

CK

Q1

CK

CLR

CLR

RST

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

9 / 53

Identificacion de unidades de los componentes

D0

D1
Q0

FFD0
D
CLK

CK
CLR

Q1

CK
CLR

RST

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

10 / 53

Identificacion de unidades de los componentes

D0

D1
Q0

FFD0
D
CLK

CK
CLR

CK
CLR
FFD1

RST

Miguel Angel Sagreras ()

Q1

Introducci
on al VHDL

22 de abril de 2010

10 / 53

Compuertas y componentes

Las compuertas se pueden describir directamente con expresiones


logicas del propio lenguaje por medio de los operadores not, and, or,
xor, nor, nand.
Los componentes son los equivalentes de los zocalos en donde luego
se conectaran los circuitos integrados representados por la entidad de
dise
no.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

11 / 53

Zocalos

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

12 / 53

Declaracion de componentes

En el diagrama se tienen dos unidades de un flip-flop D. Se debe declarar


un componente cuyo nombre arbitrario sera ffd que luego se referira a una
entidad que cumpla con la funci
on de dicho flip-flop.
component f f d
port (
c l r : in
ck : i n
d
: in
q
: out
end component ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

bit
bit
bit
bit

;
;
;
);

22 de abril de 2010

13 / 53

Sintaxis del Cuerpo de arquitectura

a r c h i t e c t u r e nombre o f e n t i d a d i s
C o n j u n t o de d e c l a r a c i o n e s
begin
C o n j u n t o de i n s t r u c c i o n e s
end ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

14 / 53

Cuerpo de arquitectura del contador de 2 bits


a r c h i t e c t u r e mix o f c o n t 2 i s
s i g n a l d0 , d1 : b i t ;
component f f d
port (
c l r : in b i t ;
ck : i n b i t ;
d
: in b i t ;
q
: out b i t ) ;
end component ;
begin
f f d 0 : f f d p o r t map ( r s t , c l k , d0 , q0 ) ;
f f d 1 : f f d p o r t map ( r s t , c l k , d1 , q1 ) ;
d0 <= not q0 ;
d1 <= q0 xor q1 ;
end ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

15 / 53

Pasos a seguir

Realizar un diagrama en bloque.


Identificar los nodos de interconexi
on.
Declarar los componentes a utilizar.
Declarar las se
nales que representan los nodos de interconexion.
Interconectar los componentes a traves de dichas se
nales.
Realizar las asignaciones de se
nales para generar las compuertas
necesarias que acompa
nen el circuito.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

16 / 53

Especificacion completa del contador de dos bits


e n t i t y cont2
port (
rst :
clk :
q0
:
q1
:
end ;

is
in
bit
in
bit
buffer
buffer

;
;
bit ;
bit );

a r c h i t e c t u r e mix o f c o n t 2 i s
s i g n a l d0 , d1 : b i t ;
component f f d
port (
c l r : in
bit ;
ck
: in
bit ;
d
: in
bit ;
q
: ou t b i t ) ;
end component ;
begin
f f d 0 : f f d p o r t map ( r s t , c l k , d0 , q0 ) ;
f f d 1 : f f d p o r t map ( r s t , c l k , d1 , q1 ) ;
d0 <= no t q0 ;
d1 <= q0 x o r q1 ;
end ;
Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

17 / 53

Diagrama en bloque completo del contador de dos bits

Entity cont2
Architecture

mix

D0

not

Q0

D1

FFD0
D0
CLK
in

CLK

FFD

CK
CLR

RST
in

Miguel Angel Sagreras ()

Q0

Q0
xor

buffer

Q1

FFD1
Q

Q0

D1
CLK

component
instantiation

RST

FFD

Q1

Q1

buffer

CK
CLR
RST

Introducci
on al VHDL

component
instantiation

22 de abril de 2010

18 / 53

Diseno por modelo de comportamiento

El circuito se especifica en base a una secuencia de instrucciones que indica


como sus salidas se modifican en base al valor y/o cambio de sus entradas.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

19 / 53

Entidad de diseno del flip-flop D

FFD
D

Q
CK

CLR

entity ffd is
port (
c l r : in
ck
: in
d
: in
q
: ou t
end ;

;
;
;
);

C
odigo VHDL

Diagrama

Miguel Angel Sagreras ()

bit
bit
bit
bit

Introducci
on al VHDL

22 de abril de 2010

20 / 53

Descripcion por comportamiento


Cuerpo de arquitectura del flip-flop D

a r c h i t e c t u r e beh o f f f d i s
begin
p r o c e s s ( ck , c l r )
begin
i f c l r = 1 then
q <= 0 ;
e l s i f ck e v e n t and ck = 1 then
q <= d ;
end i f ;
end p r o c e s s ;
end ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

21 / 53

Entidad de simulacion
entity testbench i s
end ;
architecture simul
signal clock :
signal reset :
signal tstq0 :
signal tstq1 :

of
bit
bit
bit
bit

testbench i s
;
;
;
;

component c o n t 2
port (
rst : in bit ;
clk : in bit ;
q0
: buffer bit ;
q1
: buffer bit );
end component ;
begin
r e s e t <= 1 , 0 a f t e r 30 n s ;
c l o c k <= no t c l o c k a f t e r 50 n s ;
t e s t c o n t 2 : c o n t 2 p o r t map ( r e s e t , c l o c k , t s t q 0 , t s t q 1 ) ;
end ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

22 / 53

Diagrama de tiempos
entity testbench
/testbench/reset
/testbench/clock
/testbench/tstq0
/testbench/tstq1
component testcont2
/testbench/testcont2/rst
/testbench/testcont2/clk
/testbench/testcont2/q0
/testbench/testcont2/q1
/testbench/testcont2/d0
/testbench/testcont2/d1
component ffd0
/testbench/testcont2/ffd0/clr
/testbench/testcont2/ffd0/ck
/testbench/testcont2/ffd0/d
/testbench/testcont2/ffd0/q
component ffd1
/testbench/testcont2/ffd1/clr
/testbench/testcont2/ffd1/ck
/testbench/testcont2/ffd1/d
/testbench/testcont2/ffd1/q

100

200

300

400

500

141 ns
Entity:testbench Architecture:simul Date: Thu Aug 17 15:49:27 ART 2006 Row: 1 Page: 1

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

23 / 53

Descripcion por comportamiento

El circuito digital se describe en base a una secuencia de instrucciones


que se llaman secuenciales
Las instrucciones secuenciales solo pueden ir dentro de un bloque que
permita su uso. Dichos bloques solo permiten este tipo de
instrucciones y se encuentran en las instrucciones process, function,
procedure
Las instrucciones secuenciales son las siguientes :
if-then-else
case
loop
next
exit

Miguel Angel Sagreras ()

return
wait
asignaci
on de se
nales
asignaci
on de variables
llamadas a procedimientos

Introducci
on al VHDL

22 de abril de 2010

24 / 53

Instruccion process

Es una instruccion concurrente. Su bloque de instrucciones permite la


descripcion de circuitos en base al modelo de comportamiento.
Sintaxis :
[ etiqueta : ] process [ ( lista de sensibilidad ) ]
declaraciones
begin
instrucciones
end process ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

25 / 53

Instruccion process
Bloque de instrucciones

Pueden ir todas instrucciones secuenciales excepto por la instruccion


return.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

26 / 53

Instrucciones secuenciales
if-then-else

[ etiqueta: ] if condicion then


secuencia de instrucciones secuenciales
{ elsif condicion then
secuencia de instrucciones secuenciales }
[ else
secuencia de instrucciones secuenciales ]
end if ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

27 / 53

Instrucciones secuenciales
Ejemplo de uso de la instrucci
on if-then-else

Descripcion por medio del modelo de comportamiento el circuito logico


correspondiente al siguiente mapa de Karnaugh:
X0
X2

X1
X3
00

00

01

01

11

11
10
Miguel Angel Sagreras ()

10

1
1
Introducci
on al VHDL

1
22 de abril de 2010

28 / 53

Ejemplo de uso de la instruccion if-then-else


Entidad de dise
no

FUN
X0
X1
X2

X3

Miguel Angel Sagreras ()

e n t i t y FUN
port (
x0
x1
x2
x3
o
end ;

Introducci
on al VHDL

is
:
:
:
:
:

in
in
in
in
out

bit
bit
bit
bit
bit

;
;
;
;
);

22 de abril de 2010

29 / 53

Descripcion por comportamiento


a r c h i t e c t u r e compt o f f u n i s
begin
p r o c e s s ( x0 , x1 , x2 , x3 )
begin
o <= 0 ;
i f x0 = 0 t h e n
i f x2 = 0
i f x3 = 0 t h e n
o <= 1 ;
e l s i f x1 = 1 t h e n ;
o <= 1 ;
end i f ;
e l s i f x3 = 0 and x1 = 0 t h e n
o <= 1 ;
end i f ;
else
i f x1 = 1 t h e n
i f x2 = 0 and x3 = 1 t h e n
o <= 1 ;
e l s i f x2 = 1 and x3 = 0 t h e n
o <= 1 ;
end i f ;
e l s i f x2 = 1 and x3 = 1 t h e n
o <= 1 ;
end i f ;
end i f ;
end p r o c e s s ;
end ;

Miguel Angel Sagreras ()

X0
X2 X1 0 0
X3
00

01

01

11

1
1

11
10

Introducci
on al VHDL

10

1
1

22 de abril de 2010

30 / 53

Instrucciones secuenciales
Instrucci
on case

[ etiqueta : ] case expresi


on is
when value { value } =>
secuencia de instrucciones secuenciales
{ when value { value } =>
secuencia de instrucciones secuenciales }
end case ;
value puede ser others en referencia el resto de los casos no enumerados.
Ejemplo :
case x i s
when 00 | 11 =>
z <= 1 ;
when o t h e r s =>
z <= 0 ;
end c a s e ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

31 / 53

Declaracion de tipos

Un tipo se caracteriza por un conjunto de valores y un conjunto de


operaciones.
Por ejemplo
el tipo bit permite tener solo dos valores el 1 y el 0.
Un tipo mas concreto permitira poseer otros valores como por ejemplo
0 debil, 1 debil, etc.

Dos tipos distintos podran caracterizar dos interfaces electricas


diferentes.
Los tipos se declaran en la parte declarativa de cualquier instruccion.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

32 / 53

Tipos enumerados
Indica los valores que puede tomar un objeto : signal, variable, constant,
declarado con dicho tipo.
Sintaxis:

type identifier is ( emumeration literal {, emumeration literal } )


emumeration literal ::= identifier character literal
identifier es una de las alternativas posibles que puede tener dicho tipo
descripto como un identificador. Ej: TRUE, FALSE
character literal es otra forma de representar una alternativa como un
caracter. Ej: 1, 0.
Ejemplos :
type bit is ( 0, 1) ;
type boolean is ( FLASE, TRUE ) ;
Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

33 / 53

Declaracion de variables
Se declaran en la parte declarativa de las instrucciones cuyo bloque solo pueden
tener instrucciones secuenciales. Ejemplo : process, function, procedure.
Sintaxis :
variable declaration :==
variable idenifier list : subtype indication [ := expression ] ;
identifier list es la lista de variables a declarar. Ej : aux1, aux2.
subtype indication indica el tipo de dato que tendran las variables de datos
declaradas. Ej : bit .
:= expression inicializa la lista de variables con el valor de la expresion. Ej :
:= 1
Ejemplo :
variable aux : bit := 1;
Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

34 / 53

Asignacion de variables

variable assignment statement :==


[ label : ] target := expression ;
target es el nombre de la variable que se quiere asignar. Ej : aux.
expression es una expresi
on cuyo valor se asignara en la variable. Ej :
cols*rows
Ejemplo :
aux := cols*rows ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

35 / 53

Diagrama en bloque de un circuito de Mealy

C
O
M
B
I
N
A
C
I
O
N
A
L

n+1

M
E
M
O
R
I
A

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

36 / 53

Ejemplo de un circuito de Mealy


Entidad de dise
no y Diagrama de estados

X/O
0/1

SEQMLY
X

CLK

A
1/0
0/0
e n t i t y seqmly
port (
clk :
x
:
o
:
end ;

is
in
bit ;
in
bit ;
out b i t ) ;

1/0
C

1/0

0/0

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

37 / 53

Ejemplo de un circuito de Mealy


Cuerpo de arquitectura y tabla de transiciones
a r c h i t e c t u r e beh o f s e q m l y i s
begin
process ( clk , x )
type e s t a d o s i s ( a , b , c ) ;
variable estado : estados ;
begin
i f c l k = 1 and c l k e v e n t t h e n
i f x = 0 t h e n
case estado i s
when a =>
e s t a d o := a ;
when b =>
e s t a d o := c ;
when c =>
e s t a d o := a ;
end c a s e ;
else
e s t a d o := b ;
end i f ;
end i f ;
i f x = 0 t h e n
case estado i s
when a =>
o <= 1 ;
when o t h e r s =>
o <= 0 ;
end c a s e ;
else
o <= 0 ;
end i f ;
end p r o c e s s ;
end ;
Miguel Angel Sagreras ()
Introducci
on al VHDL

X
q

A ,1

B ,0

C ,0

B ,0

A ,0

B ,0

22 de abril de 2010

38 / 53

Diagrama en bloque de un circuito de Moore

C
O
M
B
I
N
A
C
I
O
N
A
L

Miguel Angel Sagreras ()

n+1

C
O
M
B
I
N
A
C
I
O
N
A
L

M
E
M
O
R
I
A

Introducci
on al VHDL

22 de abril de 2010

39 / 53

Ejemplo de un circuito de Moore


Entidad de dise
no y diagrama de estados

SEQ
00

Q(0)

CLK

Q(1)

11

01
0

e n t i t y seq
port (
clk
x
q
end ;

is
: in
bit ;
: in
bit ;
: out b i t v e c t o r ( 0 t o 1 ) ) ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

1
10

22 de abril de 2010

40 / 53

Ejemplo de un circuito de Moore


Cuerpo de arquitectura y tabla de transiciones
a r c h i t e c t u r e beh o f s e q i s
begin
process ( clk )
v a r i a b l e e s t a d o : b i t v e c t o r ( 1 downto 0 ) ;
begin
i f c l k = 1 and c l k e v e n t t h e n
i f x = 0 t h e n
case estado i s
when 00 =>
e s t a d o := 01 ;
when 01 =>
e s t a d o := 10 ;
when 10 =>
e s t a d o := 11 ;
when 11 =>
e s t a d o := 00 ;
end c a s e ;
else
case estado i s
when 00 =>
e s t a d o := 11 ;
when 01 =>
e s t a d o := 00 ;
when 10 =>
e s t a d o := 01 ;
when 11 =>
e s t a d o := 10 ;
end c a s e ;
end i f ;
q <= e s t a d o ;
end i f ;
end p r o c e s s ;
Miguel Angel Sagreras ()
Introducci
on al VHDL

X
q

00

01

11

01

10

00

10

11

01

11

00

10

22 de abril de 2010

41 / 53

Diagrama en bloque de un circuito asincronico

c
o
m
b
i
n
a
c
i
o
n
a
l

retardos
Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

42 / 53

Ejemplo de un circuito asincronico


Entidad de dise
no y diagrama de estados

ASINC

XY
00

01

11

10

Y
Z

entity asinc is
port (
x : in
bit ;
y : in
bit ;
z : out b i t ) ;
end ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

43 / 53

Ejemplo de un circuito asincronico


Cuerpo de arquitectura

entity asinc is
port (
x : in
bit ;
y : in
bit ;
z : out b i t ) ;
end ;

when o t h e r s =>
null ;
end c a s e ;
when 01 =>
case estado i s
when a =>
e s t a d o <= b ;
when d =>
e s t a d o <= c ;
when o t h e r s =>
null ;
end c a s e ;
when 11 =>
case estado i s
when b =>
e s t a d o <= c ;
when o t h e r s =>
null ;
end c a s e ;
when 10 =>
i f e s t a d o = d then
e s t a d o <= a ;
end i f ;
end c a s e ;
end p r o c e s s ;

a r c h i t e c t u r e beh o f a s i n c i s
type e s t a d o s i s ( a , b , c , d ) ;
si gn al estado : estados ;
begin
process (x , y , estado )
begin
case estado i s
when a | b =>
z <= 0 ;
when c | d =>
z <= 1 ;
end c a s e ;
c a s e b i t v e c t o r ( 0 t o 1 ) ( x&y ) i s
when 00 =>
case estado i s
when b =>
e s t a d o <= a ;
when c =>
e s t a d o <= d ;
Miguel Angel Sagreras ()

end ;

Introducci
on al VHDL

22 de abril de 2010

44 / 53

Instruccion loop
loop statement ::=
[ loop label : ] [ iteration scheme ] loop
sequence of statement
end loop ;

iteration scheme ::=


while condition
for identifier in discrete range
discrete range indica un rango de valores. Ej : 0 to 9. Los rangos
tambien pueden ser identificadores que representen un discrete range.
identifier es el nombre de un ndice que puede referenciarse luego
dentro del loop. Alcanza los valores especificados por discrete range.

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

45 / 53

Instruccion next

[ label : ] next [ loop label ] [ when condition ] ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

46 / 53

Instruccion next : Ejemplo I

etiqueta1: loop
etiqueta2: loop
secuencia_de_instrucciones
If ...... then
next;
end if;
secuencia_de_instrucciones
end loop;
secuencia_de_instrucciones
end loop;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

47 / 53

Instruccion next

etiqueta1: loop
etiqueta2: loop
secuencia_de_instrucciones
If ...... then
next etiqueta1;
end if;
secuencia_de_instrucciones
end loop;
secuencia_de_instrucciones
end loop;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

48 / 53

Instruccion exit

[ label : ] exit [ loop label ] [ when condition ] ;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

49 / 53

Instruccion exit : Ejemplo I

etiqueta1: loop
etiqueta2: loop
secuencia_de_instrucciones
If ...... then
exit;
end if;
secuencia_de_instrucciones
end loop;
secuencia_de_instrucciones
end loop;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

50 / 53

Instruccion exit : Ejemplo II

etiqueta1: loop
etiqueta2: loop
secuencia_de_instrucciones
If ...... then
exit etiqueta1;
end if;
secuencia_de_instrucciones
end loop;
secuencia_de_instrucciones
end loop;

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

51 / 53

Descripcion de la sintaxis
Los nombres en min
usculas se usan para indicar una categora sint
actica. Por ejemplo:
expression
Las palabras escritas en negritas simbolizan palabras claves. Por ejemplo :
array, port, entity, . . . .

Una expresi
on sint
actica consiste de un lado izquierdo, el smbolo ::= que se puede leer
como se reemplaza por, y un lado derecho. El lado izquierdo es una categora sint
actica,
el lado derecho es la regla que lo reemplaza.

La barra vertical separa alternativas a menos que ocurra inmediatamente despu


es de la
apertura de una llave {, en ese caso significa
el mismo.
letter or digit ::= letter digit
choices ::= chioce { choice }

Los corchetes [ ] encierran items opcionales. Las siguientes expresiones son equivalentes.
return statement ::= return [ expression ] ;
return statement ::= return ; return expression ;

Las llaves { } encierran items que se repiten en el lado derecho de la expresi


on. Los items
pueden aparecer cero o m
as veces. Las siguientes expresiones son equivalentes.
term ::= factor multiplying operator factor
term ::= factor { multiplying operator factor

Miguel Angel Sagreras ()

Introducci
on al VHDL

22 de abril de 2010

52 / 53

S-ar putea să vă placă și