Академический Документы
Профессиональный Документы
Культура Документы
www.mvd-fpga.com
FORMACION
Sntesis y simulacion
para
componentes programables
VHDL,
muy sencillo...
Ver 7.0b, Junio 2008
P 1
www.mvd-fpga.com
MVD
Centro de diseo FPGA Xilinx
Consultora y asistencia tcnica a domicilio
Centro de formacin aprobado
Sitio WEB : www.mvd-fpga.com
FPGA Experts !
Ver 7.0b, Junio 2008
P 2
www.mvd-fpga.com
Objetivos de la formacin
Conocer las mltiples posibilidades ofrecidas por el lenguaje
VHDL.
Conocer la sintaxis y el juego de instrucciones utilizado en
sntesis lgica VHDL.
Conocer las principales ventajas y limitaciones de los
diferentes estilos de escritura.
Verificar las informaciones tericas por la practica
Aprovechar una base de ejemplos concretos, obtener una
maestra rpida del lenguaje en aplicaciones de sntesis.
P 3
www.mvd-fpga.com
P 4
www.mvd-fpga.com
VHDL
Generalidades sobre el lenguaje
y sus aplicaciones
P 5
www.mvd-fpga.com
P 6
VHDL :
Very high speed integrated circuit
Hardware
Description
Language.
www.mvd-fpga.com
P 7
www.mvd-fpga.com
Modelado
P 8
www.mvd-fpga.com
Simulacin :
Juego de instrucciones particularmente potente para:
- Generacin de estmulos
- Captura de resultados.
Los modelos de comportamiento ( especificaciones ) son
simulados con el fin de verificar su coherencia.
El conjunto de Modelos de comportamiento + ficheros de
simulacin constituyen a la vez una especificacin y un medio
de verificacin.
El comportamiento de un modelo y de su realizacin fsica
deberan ser idnticos.
P 9
Sntesis lgica:
www.mvd-fpga.com
P 10
www.mvd-fpga.com
P 11
www.mvd-fpga.com
P 12
www.mvd-fpga.com
VHDL
Las construcciones sintetisables
P 13
www.mvd-fpga.com
P 14
Presentacin general :
www.mvd-fpga.com
P 15
Presentacin general :
Informaciones previas sobre la sintaxis :
www.mvd-fpga.com
_________________________________________________________________________________________________
-- esto en un comentario
architecture ARQUI of EJEMPLO is
begin
-- esto tambin
_____________________________________________________________________________________________________
P 16
www.mvd-fpga.com
P 17
www.mvd-fpga.com
P 18
www.mvd-fpga.com
Entidad :
___________________________________________________________________________________________________
entity EJEMPLO is
port (
A,B : in bit_vector(7 downto 0);
SEL : in bit;
MUX_OR : out bit
SIMBOLO EJEMPLO
);
end EJEMPLO;
A[7:0]
MUX_OR
_______________________________________________
B[7:0]
Equivalencia esquemtica
Ver 7.0b, Junio 2008
SEL
P 19
Entidad :
www.mvd-fpga.com
Sintaxis de declaracin :
_______________________________________________________________________________________________________
entity EJEMPLO is
port (
lista de puertos de entrada / salida comprendiendo :
nombre_de_seal : modo y tipo.
);
end [EJEMPLO];
_______________________________________________________________________________________________________
P 20
Arquitectura :
P 21
Arquitectura :
www.mvd-fpga.com
Declaraciones de componentes.
Declaraciones de constantes.
Declaraciones de tipos de objetos.
Declaraciones de sub-programas.
( funciones y procedimientos ).
P 22
Arquitectura:
Informaciones complementarias(2)
CODIGO
RTL
Asignaciones secuenciales :
Procesos y/o sub programas
CODIGO
ESTRUCTURAL
Ver 7.0b, Junio 2008
Arquitectura :
Resultados de sntesis :
_______________________________________________________________________________________________________
B[7:0]
MUX_OUT[7:0]
MUX_OR
A[7:0]
SEL
Ver 7.0b, Junio 2008
P 24
www.mvd-fpga.com
entity EJEMPLO is
port (
A,B : in bit_vector(7 downto 0);
SEL : in bit;
-- El signo ";" se utiliza como separador entre
MUX_OR : out bit -- dos declaraciones de seales y no debe
);
-- aparecer despus de la ultima seal declarada
end [EJEMPLO];
architecture ARQUI of EJEMPLO is
-- parte declaratoria
signal MUX_OUT : bit_vector(7 downto 0); -- seal interna
-- parte operatoria
begin
MUX_OUT <= A when SEL='0' else B;
MUX_OR <='1' when MUX_OUT /= "00000000" else '0';
end [ARQUI];
Ver 7.0b, Junio 2008
P 25
www.mvd-fpga.com
_______________________________________________________________________________________________________
entity MUX2_1 is
port (
A_IN, B_IN : in bit;
SEL :
in bit;
SALIDA :
out bit
);
end [MUX2_1];
P 26
www.mvd-fpga.com
P 27
www.mvd-fpga.com
P 28
www.mvd-fpga.com
P 29
www.mvd-fpga.com
P 30
www.mvd-fpga.com
Los ports declarados dentro de una entidad son seales. Pueden ser
declarados como bus.
P 31
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 32
www.mvd-fpga.com
P 33
www.mvd-fpga.com
P 34
www.mvd-fpga.com
___________________________________________________________________________________________________
P 35
www.mvd-fpga.com
___________________________________________________________________________________________________
P 36
www.mvd-fpga.com
P 37
www.mvd-fpga.com
P 38
www.mvd-fpga.com
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity EJEMPLO is
port ( A, B : in STD_LOGIC_VECTOR(7 downto 0);
SEL : in STD_LOGIC;
MUX_OR : out STD_LOGIC);
end EJEMPLO;
architecture ARCHI of EJEMPLO is .........
P 39
www.mvd-fpga.com
Enumeracin
de tipo !
P 40
www.mvd-fpga.com
P 41
www.mvd-fpga.com
P 42
www.mvd-fpga.com
Q_OUT(7)
Q_OUT(6)
-Q_OUT(3)
Q_OUT(2)
Q_OUT(1)
Q_OUT(0)
<=
<=
-<=
<=
<=
<=
D_IN(6)and not(MASCAR(7));
D_IN(5)and not(MASCARA(6));
--- --;
D_IN(2)and not(MASCARA(3));
FIXE(2); -- o Q_OUT(2) <= '0';
FIXE(1); -- o Q_OUT(1) <= '1';
FIXE(0); -- o Q_OUT(0) <= '0';
P 43
www.mvd-fpga.com
D_IN(0)
D_IN(1)
-D_IN(6)
D_IN(7)
and
and
-and
and
not(MASCARA(7));
not(MASCARA(6));
--;
not(MASCARA(1));
not(MASCARA(0));
P 44
www.mvd-fpga.com
Los operadores
P 45
www.mvd-fpga.com
P 46
www.mvd-fpga.com
P 47
www.mvd-fpga.com
____________________________________________________________________________________________________
entity OPE is
port ( A, B, C : in bit;
S :
out bit);
end OPE;
architecture ARCHI of OPE is
begin
S <= (A and B) and not(C);
end ARCHI;
Ver 7.0b, Junio 2008
P 48
www.mvd-fpga.com
_______________________________________________________________________________________________________
library IEEE;
-- declaracin de la biblioteca IEEE,
-- seguida de la sentencia "use" para indicar que
-- queremos usar de esta biblioteca el package
-- "STD_LOGIC_1164", sin limitacin de las funciones
-- u otros elementos de la biblioteca disponibles ( .all; )
use IEEE.STD_LOGIC_1164.all;
entity OPERA is
port ( A, B, C : in std_logic_vector(6 downto 0);
S :
out std_logic_vector(6 downto 0));
end OPERA;
architecture ARCHI of OPERA is
begin
S <= (A and B) and not(C);
end ARCHI;
Ver 7.0b, Junio 2008
P 49
www.mvd-fpga.com
/= ( diferente de )
<= ( inferior o igual a )
>= ( superior o igual a )
bit, bit_vector
std_logic, std_logic_vector
std_ulogic, std_ulogic_vector
integer
boolean
P 50
www.mvd-fpga.com
P 51
www.mvd-fpga.com
P 52
www.mvd-fpga.com
P 53
www.mvd-fpga.com
P 54
www.mvd-fpga.com
____________________________________________________________________________________________
P 55
www.mvd-fpga.com
( resta )
( divisin )
rem
abs
P 56
www.mvd-fpga.com
P 57
www.mvd-fpga.com
Operadores frecuentemente utilizados en sntesis
:
__________________________________________________________________________________________________
library IEEE;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity ...
architecture ARCHI of ...
signal CNT : std_logic_vector(7 downto 0);
begin
TOTO <= '1' when (CNT = 143) else '0';
TITI <= '1' when (CNT >= 75) and (CNT <= 123) else '0';
Ver 7.0b, Junio 2008
P 58
www.mvd-fpga.com
Operador de concatenacin:
Permiten la creacin de vectores a partir de bit o de
vectores.
Ejemplos :
_____________________________________________________________________________________________________
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity MY_BUS is
port ( A, B, C, D : in std_logic;
STATUS : out std_logic_vector(7 downto 0));
end MY_BUS;
architecture ARCHI of MY_BUS is
begin
STATUS <= "0000" & A & B & C & D;
-- equivalente a : STATUS(7 downto 4) <= "0000";
-STATUS(3) <= A; STATUS(2) <= B;
-STATUS(1) <= C; STATUS(0) <= D;
end ARCHI;
Ver 7.0b, Junio 2008
P 59
www.mvd-fpga.com
Operadores de concatenacin :
Otro ejemplo :
_____________________________________________________________________________________________________
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity MY_BUS is
port ( A, B, C, D : in std_logic;
STATUS : out std_logic_vector(7 downto 0));
end MY_BUS;
architecture ARCHI of MY_BUS is
constant ZERO : std_logic_vector(3 downto 0) := "0000";
begin
STATUS <= ZERO & A & B & C & D;
-- equivalente : STATUS(7 downto 4) <= "0000";
-STATUS(3) <= A; STATUS(2) <= B;
-STATUS(1) <= C; STATUS(0) <= D;
end ARCHI;
Ver 7.0b, Junio 2008
P 60
_____________________________________________________________________________________________________
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity MY_BUS is
port ( A, B, C, D : in std_logic_vector(3 downto 0);
SEL :
in std_logic_vector(0 to 1);
VALOR :
in integer range 0 to 255;
IGUAL :
out boolean;
STATUS :
out std_logic_vector(7 downto 0));
end MY_BUS;
architecture ARCHI of MY_BUS is
constant DOCE : std_logic_vector(3 downto 0) := "1100";
constant TRECE : std_logic_vector(0 to 3)
:= "1101";
begin
STATUS(0 to 3) <= DOCE;
STATUS <= DOCE & A(0) & B(0 to 2);
STATUS <=
A when SEL="00"
else B when SEL="01"
else C when SEL="10"
else D;
STATUS <= TRECE & DOCE;
IGUAL <= STATUS = A & D;
IGUAL <= '1' when STATUS=VALOR;
Ver 7.0b, Junio 2008
P 61
www.mvd-fpga.com
P 62
Respuestas :
www.mvd-fpga.com
= ERROR
= CORRECTO
E STATUS <=
A when SEL="00"
else B when SEL="01"
else C when SEL="10"
else D;
-- STATUS es un vector de 8 bits, mientras que A, B, C, y D son
-- vectores de 4 bits.
C
E
E
P 63
www.mvd-fpga.com
P 64
www.mvd-fpga.com
Instrucciones concurrentes
y
secuenciales
P 65
www.mvd-fpga.com
P 66
Instrucciones concurrentes :
entity CONCURRENT is
port ( A, B, C : in bit;
S, T :
out bit);
end CONCURRENT;
architecture ARCHI of CONCURRENT is
begin
S <= (A and B) and not(C);
T <= B xor C;
-- El orden de asignacin S y de T es indiferente.
end ARCHI;
Ver 7.0b, Junio 2008
P 67
Instrucciones secuenciales :
____________________________________________________________________________________________________
P 68
Instrucciones concurrentes :
____________________________________________________________________________________________________
entity CONCURRENT is
port ( A, B, C : in bit;
S, T :
out bit);
end CONCURRENT;
architecture ARCHI of CONCURRENT is
S <= A when C='1'
else B;
T <= B xor C;
end ARCHI;
Ver 7.0b, Junio 2008
P 69
begin
Instrucciones concurrentes :
www.mvd-fpga.com
entity CONCURRENT is
port ( A, B, C : in bit;
S, T :
out bit);
end CONCURRENT;
architecture ARCHI of CONCURRENT is
S <= A when C='1'
else B;
T <= not B;
end ARCHI;
begin
________________________________________________________________________________________________________
C
Ver 7.0b, Junio 2008
P 70
Instrucciones concurrentes :
www.mvd-fpga.com
entity TRISTATE is
port ( A, B, C : in std_logic;
S
:
out std_logic);
end TRISTATE;
architecture ARCHI of TRISTATE is
begin
S <= A when C='0'
else 'Z';
S <= B when C='1'
else 'Z';
end ARCHI;
________________________________________________________________________________________________________
A
Ver 7.0b, Junio 2008
P 71
Instrucciones concurrentes :
www.mvd-fpga.com
entity TRISTATE is
port ( A, B : in std_logic_vector(15 downto 0);
C :
in std_logic;
S
: out std_logic_vector(15 downto 0));
end TRISTATE;
architecture ARCHI of TRISTATE is
begin
S <= A when C='0'
else "ZZZZZZZZZZZZZZZZ";
S <= B when C='1'
else "ZZZZZZZZZZZZZZZZ";
end ARCHI;
________________________________________________________________________________________________________
B[15:0]
S[15:0]
A[15:0]
Ver 7.0b, Junio 2008
P 72
Instrucciones concurrentes :
www.mvd-fpga.com
when
when
when
when
"00",
"01",
"10",
others;
P 73
Instrucciones concurrentes :
www.mvd-fpga.com
A
B
00
01
10
otros casos
SEL[1:0]
Ver 7.0b, Junio 2008
P 74
Instrucciones concurrentes :
P 75
Instrucciones concurrentes :
B[15:0]
S[15:0]
A[15:0]
Ver 7.0b, Junio 2008
P 76
Instrucciones concurrentes :
P 77
BUS_A[3:0]
A
A<B
BUS_B[3:0]
A_MIN
(declarado en modo OUT)
Multiplexor
tri-state
1
(seal interna)
DISPLAY[6:0]
6
5
4
3
2
1
0
Multiplexores
lgicos
(when ... else)
MAX[3:0]
A
B
C
D
E
F
G
salidas
Decodificador
7 segmentos
0
SEL_MIN
P 78
www.mvd-fpga.com
--
library ...;
use ...;
-- La biblioteca METAMOR permite incluir dentro del cdigo fuente
-- los parmetros directamente ligados a cada arquitectura
-- En el ejemplo nosotros podemos imponer una disposicin
-- ( total o parcial ) de los pines del FPGA.
library METAMOR;
use METAMOR.ATTRIBUTES.all;
entity CONCUR is
port ( BUS_A, BUS_B
-- declaracin de las
-- El atributo PINNUM
attribute PINNUM of
end CONCUR;
Ver 7.0b, Junio 2008
P 79
www.mvd-fpga.com
-- continuacin
with VAL select
-- descripcin en forma de tabla verdad
-ABCDEFG
DISPLAY <= "0000001" when ..., -- 0 | segmentos encendidos con 0
"1001111" when ..., -- 1
"0010010" when ..., -- 2
-- otros casos...
"0111110" when others;
A
B
C
D
E
F
G
<=
<=
<=
<=
<=
<=
<=
-- F
DISPLAY(6);
...;
...;
...;
...;
...;
...;
end ARCHI;
Ver 7.0b, Junio 2008
P 81
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 82
www.mvd-fpga.com
library ieee;
-----
use ieee.std_logic_1164.all;
entity CONCUR is
port ( BUS_A, BUS_B : std_logic_vector(3 downto 0);
SEL_MIN : in std_logic;
A_MIN : out boolean;
A,B,C,D,E,F,G : out std_logic);
end CONCUR;
P 83
P 85
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 86
www.mvd-fpga.com
P 87
www.mvd-fpga.com
P 88
www.mvd-fpga.com
P 89
www.mvd-fpga.com
P 90
www.mvd-fpga.com
A
B
C
D
S
T
U
A
B
C
D
S
T
A
B
D S Q
C
D
Q
R
CK
INIT
CK
process (CK, INIT)
process (A,B,C,D)
process (CK)
-- process combinatorio
begin
if (A=1 and B=0)
then ...
-- process sincronico
begin
if CKevent and CK=1
then
if (A=1 and B=0
then...
P 91
-- process sincronico
-- con initializacion
-- asinchronica
begin
if INIT=1 then
S <= 1; T <= 0;
elsif CKevent and CK=1
then
if (A=1 and B=0)
then...
VHDL, muy sencillo...
www.mvd-fpga.com
C
D
A
B
C
D
D S Q
Q
R
CK
INIT
CK
-- process sincronico
-- con initializacion
-- asinchronica
begin
if INIT=1 then
S <= 1; T <= 0;
elsif CKevent and CK=1
then
if (A=1 and B=0)
then...
-- process sincronico
begin
if CKevent and CK=1
then
if (A=1 and B=0
then...
P 92
www.mvd-fpga.com
P 93
www.mvd-fpga.com
_____________________________________________________________________________________________________
P 94
www.mvd-fpga.com
end process;
La seal COUNT ( std_logic_vector ) ser construida por
flip-flops.
Ninguna seal tratada en este process puede ser
combinatoria
Ver 7.0b, Junio 2008
P 95
www.mvd-fpga.com
process (CK)
begin
if (CK'event and CK='1') then
COUNT <= COUNT + 1; -- legal solamente la biblioteca
end if;
-- std_logic_unsigned fue declarada
end process;
La seal COUNT ( std_logic_vector ) ser construida por
flip-flops.
P 96
www.mvd-fpga.com
P 97
www.mvd-fpga.com
Las seales :
Objetos que pueden ser declarados en el
interior de una entidad ( ports ) o de una
arquitectura (seales internas).
Visibles dentro de toda la arquitectura.
La asignacin de un valor a una seal se hace
con un retardo ( infinitesimal ).
Ver 7.0b, Junio 2008
P 98
www.mvd-fpga.com
A
D
P 99
TMP
www.mvd-fpga.com
Variables :
P 100
www.mvd-fpga.com
P 101
www.mvd-fpga.com
P 102
www.mvd-fpga.com
_________________________________________________________________________________________________
<=
<=
<=
<=
P 103
A;
B;
C;
D;
www.mvd-fpga.com
Sintaxis :
Toda instruccin IF debe terminarse por END IF;
IF est en general seguida de ELSE.
Varios IF pueden estar enlazados,
La contraccin ELSIF permite simplificar la escritura :
Ejemplo 1 :
______________________________________________________________________________________________________
P 104
www.mvd-fpga.com
process (A, B,
begin
if
SEL =
elsif SEL =
elsif SEL =
else
end if;
end process;
C, D, SEL)
"00" then MUX <=
"01" then MUX <=
"10" then MUX <=
MUX <=
A;
B;
C;
D;
-- un solo "end if".
P 105
www.mvd-fpga.com
0
0
MUX
"10"
SEL[1:0]
CMP
=
"01"
SEL[1:0]
CMP
=
"00"
SEL[1:0]
P 106
CMP
=
www.mvd-fpga.com
generador
de funciones
combinatorias
F o G
(LUT de 4 entradas)
0
1
EC
CK
CK
Porcin de CLB
Flip-Flop D con Clock Enable dedicado
( FPGA Xilinx )
Ver 7.0b, Junio 2008
P 107
____________________________________________________________________________________________________
P 108
www.mvd-fpga.com
P 109
www.mvd-fpga.com
EC
CK
CK
process(CK,EC)
begin
if (CK'event and CK='1'
Q <= D;
end if;
end process;
Ver 7.0b, Junio 2008
P 110
www.mvd-fpga.com
P 111
www.mvd-fpga.com
S
1
then S <= A;
C
P 112
www.mvd-fpga.com
process (A, C)
begin
if C = '1' then S <= '1';
end if;
end process;
------
VCC
S
P 113
www.mvd-fpga.com
P 114
www.mvd-fpga.com
Ejemplo :
______________________________________________________________________________________________________
begin
<=
<=
<=
<=
A;
B;
C;
D;
P 115
www.mvd-fpga.com
OTHERS
"10"
"01"
"00"
MUX
Decodificado
de Valores
P 116
IF
Y DE
www.mvd-fpga.com
CASE . Ejemplo :
_____________________________________________________________________________________________________
ACCION = "00"
else
end if;
when others => SALIDA <= "000";
end case;
end process;
Ver 7.0b, Junio 2008
P 117
then SALIDA
STATUS <=
SALIDA <=
STATUS <=
<= "100";
"10";
"101";
"00";
www.mvd-fpga.com
P 118
www.mvd-fpga.com
VHDL
statemac.vhd
P 119
www.mvd-fpga.com
VHDL
statemac.vhd
P 120
www.mvd-fpga.com
P 121
Entrada(s)
DATA_IN
Lgica
combinatoria
Siguiente Estado
Estado Actual
(seal interna)
(seal interna)
( process
combinatorio )
VALID
CK
Registros
( process
sincrnico )
RST
Salidas(s)
Combinatorias
BINGO
Ver 7.0b, Junio 2008
P 122
P 123
www.mvd-fpga.com
www.mvd-fpga.com
NOTAS
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 124
www.mvd-fpga.com
library IEEE;
use IEEE.std_logic_1164.all;
entity STATE is
port (A: in STD_LOGIC;
B: in STD_LOGIC;
C: in STD_LOGIC;
CK: in STD_LOGIC;
RST: in STD_LOGIC;
S: out STD_LOGIC;
T: out STD_LOGIC);
end STATE;
architecture ARCHI of STATE is
type ETAT_type is (S0, S1, S2, S3, S4);
signal ETAT: ETAT_type;
begin
P 125
P 126
www.mvd-fpga.com
_______________________________________________________________________________________________
process (CNT)
variable TMP : integer range 0 to 32;
begin
TMP := 0;
for I in CNT'range loop
if CNT(I) = '1' then TMP := TMP + 1;
end if;
Variable inicializada en cada llamado al process !
end loop;
VALOR <= TMP;
end process;
-- este cdigo permite contar el nmero bits en '1' sobre un bus de
-- 32 bits. Puede segn las herramientas y sus opciones generar
-- incrementadores en cascada
Ver 7.0b, Junio 2008
P 127
www.mvd-fpga.com
Ejemplo 3 :
________________________________________________________________________________________________
P 128
www.mvd-fpga.com
________________________________________________________________________________________________
process (COUNT)
-- process combinatorio
P 129
www.mvd-fpga.com
COUNT(0)
COUNT(1)
COUNT(2)
COUNT(3)
COUNT(4)
COUNT(5)
COUNT(6)
COUNT(7)
TERM_CNT
P 130
DATA
-- SEALES INTERNAS :
signal
DBUS,
REGA,
REGB,
CNT : std_logic_vector(7 downto 0);
A_EQ_B, TERM_CT : std_logic;
-- segn estrategia utilizada
(interno )
(inout)
WR_B
RDA_B
RDB_B
DIN
(interno)
IOBs
D
WA
CK
CE
CK
D
WB
CK
CE
CK
REGB
REGISTRO
REGISTRO
A_EQ_B
REGA
-- SEALES DE CONTROL
WA, WB, WR_B : in std_logic;
RDA_B, RDB_B, READ_B : in std_logic;
LOAD, ENA : in std_logic;
ICK : in std_logic;
ENA
CK
CK
CNT
D CNT
LOAD
-- ENTRADAS Y SALIDAS
DATA : inout std_logic_vector(7 downto 0);
AEQB_R, TC_R : out std_logic;
AEQB_R
D
A=B
IOB
LD
COMPARADOR
EC
TERM_CT
TC_R
D
CK TC
CK
CONTADOR
CARGABLE
P 131
IOB
www.mvd-fpga.com
Para esto, los datos presentes sobre DATA, son transmitidos al bus
DBUS cuando la seal WR_B es activa (a '0').
Por la activacin de las seales RDA_B y RDB_B, los datos de REGA
o REGB son transmitidos sobre el bus interno DBUS, despus sobre
DATA, gracias a la seal READ_B.
El registro REGA permite cargar un contador donde la salidas son
comparadas con el valor de REGB para obtener la seal A_EQ_B.
La salidas del comparador (A_EQ_B) y la cuenta final del contador
(TERM_CT) son sincronizados antes ser enviados a las salidas
(AEQB_R y TC_R).
Ver 7.0b, Junio 2008
P 132
Para los registros : process sincrnicos con utilizacin del clock enable
dedicado de las Flip-Flops.
Para el contador :
Process sincrnico con utilizacin del clock enable dedicado, para
la parte contador;
Process combinatorio con la instruccin LOOP para la generacin
del TERM_CT ( cuenta terminal ).
Para los buffers tri-state, Instruccin GENERATE con WHEN ELSE.
Para el comparador de registros dos soluciones:
Process sincrnico ( en este caso, la declaracin de la seal
A_EQ_B no se usa ).
WHEN ELSE para generacin de A_EQ_B, + process sincrnico
para los FF de salidas.
Ver 7.0b, Junio 2008
P 133
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 134
www.mvd-fpga.com
P 135
www.mvd-fpga.com
P 136
www.mvd-fpga.com
Gestin de la jerarqua
y
VHDL estructural
P 137
www.mvd-fpga.com
P 138
www.mvd-fpga.com
P 139
www.mvd-fpga.com
P 140
www.mvd-fpga.com
P 141
www.mvd-fpga.com
P 142
www.mvd-fpga.com
Ejemplo de instancia :
______________________________________________________________________________________________
entity STRUCT is
port ( IA, IB, IC, ID : in std_logic_vector(7 downto 0);
SELECT : in std_logic_vector(0 to 1);
CLK, ENABLE, RESET : in std_logic;
QOUT : out std_logic_vector(7 downto 0));
end STRUCT;
architecture ARCHI of STRUCT is
-- declaraciones de seales internes y componentes
signal MXE, MXF, MXG : std_logic_vector(7 downto 0);
component M2_1
port (A, B : in std_logic_vector(7 downto 0);
SEL : in std_logic; MX : out std_logic_vector(7 downto 0));
end component;
component REGIS
port (DIN : in std_logic_vector(7 downto 0);
CK, ENA, RST : in std_logic;
REGOUT : out std_logic_vector(7 downto 0);
SPARE : out std_logic);
end component;
Ver 7.0b, Junio 2008
P 143
______________________________________________________________________________________________
begin
U1 : M2_1 port map
(A => IA, B => IB, -- nombre del pin, seguido del smbolo
SEL => SELECT(0), -- " => " y del nombre del seal conectada
MX => MXE);
-- Las diferentes parejas pin/seal
-- son separadas por una coma. El orden de asignacin de los pines
-- a las seales no tiene importancia.
U2 : M2_1 port map
(SEL => SELECT(0),
A => IC, B => ID,
U1
IA[7:0]
A
MX => MXF);
MXE[7:0]
SELECT(0)
U3
SEL MX
IB[7:0]
U3 : M2_1 port map
B
A
MXG[7:0]
DIN
SELECT(1)
SEL
MX
M2_1
(A => MXE, B => MXF,
B
REGOUT
IC[7:0]
SEL => SELECT(1),
A
M2_1
SELECT(0)
SEL MX
RST
MXF[7:0]
RESET
ID[7:0]
MX => MXG);
B
SPARE
U2
ENA
ENABLE
M2_1
U4 : REGIS port map
(DIN => MXG, CK => CLK,
CK
CLK
ENA => ENABLE, RST => RESET, REGOUT => QOUT,
REGIS
SPARE => open);
end ARCHI;
palabra clave !
Ver 7.0b, Junio 2008
P 144
U4
QOUT[7:0]
www.mvd-fpga.com
______________________________________________________________________________________________
begin
U1 : M2_1 port map
(IA, IB,
-- La asignacin de las seales a los pines
SELECT(0),
-- del componente, se hace en relacin a la
MXE);
-- de la posicin de cada pin en la declaracin
-- del componente
U2 : M2_1 port map
(IC, ID,
SELECT(0),
MXF);
U3 : M2_1 port map
(MXE, MXF,
SELECT(1),
MXG);
U1
IA[7:0]
SELECT(0)
IB[7:0]
A
SEL
B
MXE[7:0]
SELECT(1)
M2_1
IC[7:0]
SELECT(0)
ID[7:0]
A
SEL
B
MX
A
SEL
B
MXF[7:0]
MX
DIN
REGOUT
M2_1
RESET
RST
ENABLE
ENA
QOUT[7:0]
SPARE
CLK
P 145
U4
MXG[7:0]
U2
M2_1
U3
MX
CK
REGIS
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 146
____________________________________________________________________________________________
component RAM16x1s
port (A3, A2, A1, A0, D, WE, WCLK : in std_logic;
O : out std_logic); end component;
begin
GENE : for I in DIN'range generate
UA : RAM16x1S port map (
A3 => ADR(3), A2 => ADR(2), A1 => ADR(1), A0 => ADR(0),
D => DIN(I), WE => WR, WCLK => CK, O => INT(I));
DOUT(I) <= INT(I) when READ_B ='0' else 'Z'; -- salidas tri-state
end generate;
end ARCHI;
P 147
Ver 7.0b, Junio 2008
VHDL, muy sencillo...
www.mvd-fpga.com
______________________________________________________________________________________________
ADR(3)
ADR(2)
ADR(1)
ADR(0)
DIN(5)
WR
CK
A3
A2
A1
A0
D
WE
WCLK
GENE/UA5
ADR(3)
ADR(2)
ADR(1)
ADR(0)
DIN(4)
WR
CK
A3
A2
A1
A0
D
WE
WCLK
GENE/UA4
ADR(3)
ADR(2)
ADR(1)
ADR(0)
DIN(3)
WR
CK
A3
A2
A1
A0
D
WE
WCLK
GENE/UA3
INT(5)
DOUT(5)
RAM16x1S
INT(4)
DOUT(4)
RAM16x1S
INT(3)
RAM16x1S
DOUT(3)
ADR(3)
ADR(2)
ADR(1)
ADR(0)
DIN(2)
WR
CK
A3
A2
A1
A0
D
WE
WCLK
ADR(3)
ADR(2)
ADR(1)
ADR(0)
DIN(1)
WR
CK
A3
A2
A1
A0
D
WE
WCLK
ADR(3)
ADR(2)
ADR(1)
ADR(0)
DIN(0)
WR
CK
A3
A2
A1
A0
D
WE
WCLK
GENE/UA2
O
INT(2)
DOUT(2)
INT(1)
DOUT(1)
INT(0)
DOUT(0)
RAM16x1S
GENE/UA1
O
RAM16x1S
GENE/UA0
O
RAM16x1S
READ_B
P 148
www.mvd-fpga.com
Atributos
P 149
www.mvd-fpga.com
P 150
www.mvd-fpga.com
--------------P 151
=
=
=
=
=
=
=
=
=
=
=
=
=
=
15
8
5
2
8
15
5
2
8
4
range
range
range
range
15 downto 8
8 to 15
2 to 5
5 downto 2
VHDL, muy sencillo...
www.mvd-fpga.com
signal CK : std_logic;
CK'event
P 152
www.mvd-fpga.com
Cdigo Genrico
P 153
www.mvd-fpga.com
P 154
Cdigo Genrico :
www.mvd-fpga.com
entity CONTADOR is
generic ( M : integer := 8 );
port ( CK, ENA : in std_logic;
CNT :out std_logic_vector( M-1 downto 0));
end CONTADOR;
Ver 7.0b, Junio 2008
P 155
Cdigo genrico :
www.mvd-fpga.com
P 156
www.mvd-fpga.com
Cdigo genrico:
Instancia de un elemento genrico:
La instancia ( pareja entidad/arquitectura )
debe estar visible por la herramienta de sntesis al
momento de la compilacin.
El ancho de los bus debe estar definido por
medio de un valor declarado GENERIC" con el fin
de poder ser redefinido durante la instanciacin .
Es por supuesto posible sintetizar por separado
cada elemento de diseo. En este caso, cada
elemento ser sintetizado con sus valores por
defecto.
Ver 7.0b, Junio 2008
P 157
Cdigo genrico :
www.mvd-fpga.com
entity COUNTERS is
generic ( T : integer := 12);
port ( CK, ENA1, ENA2, RESET : in std_logic;
MAX : out std_logic_vector(T-1 downto 0));
end COUNTERS;
architecture ARCHI of COUNTERS is
signal COUNT1, COUNT2 : std_logic_vector(T-1 downto 0);
component CONTADOR
generic ( M : integer );
port ( CK, ENA, RESET : in std_logic;
CNT :out std_logic_vector(M-1 downto 0));
end component;
begin
U1 : CONTADOR generic map ( M => T) port map (
CK => CK, ENA => ENA1, RST => RESET, CNT => COUNT1 );
U2 : CONTADOR generic map ( M => T) port map (
CK => CK, ENA => ENA2, RST => RESET, CNT => COUNT2 );
MAX <= COUNT1 when COUNT1 > COUNT2
else COUNT2;
end ARCHI;
Ver 7.0b, Junio 2008
P 158
Cdigo genrico :
www.mvd-fpga.com
signal
signal
signal
signal
begin
P 159
_________________________________________________________________________________________________
SIG[2:0]
3 => '1'
VCC
A
DIV[2:0]
DIV(3)
SIG(3)
A
4 to 7 => '0'
DIV[7:4]
SIG[7:4]
______________________________________________________________________________________________________
TRI_ST[13:0]
______________________________________________________________________________________________________
TODO_ZERO[9:0]
______________________________________________________________________________________________________
VCC
TODO_UNO[33:0]
Ver 7.0b, Junio 2008
P 160
Cdigo genrico :
ARRAYS ( TABLAS )
www.mvd-fpga.com
ARCHI of TABLA is
is std_logic_vector(7 downto 0);
is array(0 to 15) of BYTE;-- 16 bytes de RAM
MEMORIA;
P 161
www.mvd-fpga.com
use IEEE.std_logic_1164.all;
entity MYRAM is
generic(DATA : integer := 6;-- Ancho bus de datos
ADR : integer := 4);-- Ancho bus de direcciones
port ( DIN : in std_logic_vector(DATA-1 downto 0);
CK : in std_logic;
ADI, ADO : in integer range 0 to (2**ADR)-1 ;
SALIDA : out std_logic_vector(DATA-1 downto 0));
end MYRAM;
P 162
www.mvd-fpga.com
P 163
www.mvd-fpga.com
P 164
www.mvd-fpga.com
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 166
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 167
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 168
www.mvd-fpga.com
Los sub-programas
Funciones y procedimientos
P 169
www.mvd-fpga.com
P 170
Funciones :
www.mvd-fpga.com
P 171
Funciones :
www.mvd-fpga.com
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity FUNCION is
port ( ENTRADA : in boolean; B : in STD_LOGIC;
C : out STD_LOGIC);
end FUNCION;
architecture ARCHI of FUNCION is
function BOOL_TO_BIT (A : in boolean) return STD_LOGIC is
begin
if A then return '1';
else return '0'; end if;
end BOOL_TO_BIT;
Declaracin
begin
C <= B and BOOL_TO_BIT(ENTRADA);
end ARCHI;
Llamado
P 172
Funciones :
www.mvd-fpga.com
P 173
Funciones :
www.mvd-fpga.com
P 174
www.mvd-fpga.com
P 175
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 176
Procedimientos :
www.mvd-fpga.com
P 177
Procedimientos : Ejemplo 1:
_______________________________________________
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity PROCED is
port ( A, B : in STD_LOGIC_VECTOR(9 downto 0);
SALIDA : out STD_LOGIC_VECTOR(9 downto 0));
end PROCED;
architecture ARCHI of PROCEDU is
procedure MIN(signal L, M : in STD_LOGIC_VECTOR;
signal S : out STD_LOGIC_VECTOR) is
begin
if L < M then S <= L;
else S <= M;
end if;
end MIN;
Especificacin de la clase de objeto
begin
(seales y constantes)
MIN(A, B, SALIDA);
end ARCHI;
Ver 7.0b, Junio 2008
Declaracin de procedimiento
Llamado
P 178
Procedimientos : Ejemplo 2 :
P 179
P 180
www.mvd-fpga.com
Packages
P 181
www.mvd-fpga.com
P 182
www.mvd-fpga.com
P 183
P 184
EJEMPLO de package :
www.mvd-fpga.com
P 185
www.mvd-fpga.com
P 186
Parmetro B (std_logic_vector)
de la funcin TO_VEC
VHDL, muy sencillo...
www.mvd-fpga.com
P 187
Notas
www.mvd-fpga.com
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
.............................................................................................................
......................... ......................... ......................... ......................... .....
P 188
www.mvd-fpga.com
Simulation y modelizacion
en VHDL
P 189
www.mvd-fpga.com
Presentacion general
Las construcciones sintetizables pueden ser
utilizadas en simulacion.
En simulacion podremos usar todavis mas
posibilidades del lenguaje.
P 190
www.mvd-fpga.com
P 191
www.mvd-fpga.com
P 192
www.mvd-fpga.com
El Testbench
P 193
www.mvd-fpga.com
Que es un Testbench ?
P 194
www.mvd-fpga.com
Que es un Testbench ?
Entidad del testbench
Architectura
Del Testbench
Patterns
de
simulacion
FPGA
simulado
P 195
captura
de
resultados
www.mvd-fpga.com
Que es un Testbench ?
Entidad del testbench
Architectura
Del Testbench
Patterns
de
simulacion
Otro
componente
FPGA
captura
de
resultados
simulado
P 196
www.mvd-fpga.com
P 197
: time
:= 25.0 ns);
P 198
www.mvd-fpga.com
Ficheros
de vectores
de test
Architectura
Del Testbench
FPGA
stimuli
simulado
P 199
captura
Ficheros
de
rsultado
www.mvd-fpga.com
Instrucciones utilizables
en simulacion
P 200
www.mvd-fpga.com
Retrasos
Esperas
Bucles
Tipos de datos
Operadores
Acceso a archivos ASCII
P 201
Retrasos
AFTER
www.mvd-fpga.com
A
B
S
25ns
Ver 7.0b, Junio 2008
25ns
P 202
Salida filtrada
Retrasos
TRANSPORT
A
B
S
25ns
25ns
P 203
www.mvd-fpga.com
Esperas
: WAIT
instruccion secuential
programas)
www.mvd-fpga.com
process
begin
wait until CKevent and CK = 1;
if ENABLE = 1 then
ACCUM <= ACCUM + DIN;
end if;
end process;
P 205
www.mvd-fpga.com
process
begin
wait until (A and B) = 1;
BUS_A <= BUS_B or BUS_C;
wait until (A xor B) = 1;
BUS_A <= BUS_B xor BUS_C;
wait;
end process;
P 206
www.mvd-fpga.com
WAIT FOR :
-- generacion de un reloj
process
begin
CK <= 1;
wait for 50 ns;
CK <= 0;
wait for 50 ns;
end process;
Ver 7.0b, Junio 2008
P 207
WAIT ON :
www.mvd-fpga.com
No hay lista de
sensibilidad
IRQ <= TIMER(15);
process
begin
CLEAR_IRQ <= 0;
wait on IRQ;
CLEAR_IRQ <= 1;
wait for 50ns;
end process;
Esperamos un cambio de
valor en la seal IRQ
P 208
WAIT ON :
www.mvd-fpga.com
Suspende
definitivamente
el process
P 209
www.mvd-fpga.com
P 210
www.mvd-fpga.com
Bucles
P 211
www.mvd-fpga.com
LOOP :
for loop
end loop;
---------------------------
while loop
end loop;
---------------------------
P 212
www.mvd-fpga.com
FOR... LOOP :
P 213
WHILE LOOP :
www.mvd-fpga.com
architecture TB of TESTBENCH is
signal DIN : std_logic_vector(7 downto 0) := (others => 0);
---
begin
process
variable I : integer range 0 to 2**DINhigh-1;
begin
I := 0;
NOM_BOUCLE : while (A < B) loop
DIN <= SOURCE + I;
I := I + 1;
wait for 20 ns; -- importante !!!
end loop;
wait;
-- suspension del process end process;
end process;
P 214
www.mvd-fpga.com
process
begin
DBUS <= (others => 0);
wait for 20 ns;
NOM_BOUCLE : loop
exit when A > B; -- esperamos esta
-- condicion para salir
DBUS <= DBUS + 1;
wait for 20 ns;
end loop;
wait;
end process;
Ver 7.0b, Junio 2008
P 215
www.mvd-fpga.com
P 216
www.mvd-fpga.com
P 217
www.mvd-fpga.com
P 218
process
file
LISTA
: TEXT;
variable
MY_LINE
: line;
variable
DATA_VAR
: std_logic_vector(31 downto 0);
variable
ADR_VAR
: std_logic_vector(31 downto 0);
begin
file_open(LISTA, "C:\ORIGEN.TXT", read_mode);
-- abre el archivo en lectura
BOUCLE : for I in 0 to 9 loop
readline(LISTA,MY_LINE); -- lee una linea completa
-- en el archivo ORIGEN
read(MY_LINE,DATA_VAR); -- assigna los 32 primeros caracteres de la
-- linea a la variable DATA_VAR
read(MY_LINE,ADR_VAR); -- assigna los 32 caracteres siguientes
-- a la variable ADR_VAR
DATA <= DATA_VAR;
ADR <= ADR_VAR;
wait for 10ns;
end loop;
file_close(LISTA);
wait;
-- cierra el archivo
end process;
Ver 7.0b, Junio 2008
P 219
process
file RESULTADO : TEXT;
variable
MY_LINE
: line;
variable
DAT
: std_logic_vector(31 downto 0);
begin
-- abre el archivo en escritura
file_open(RESULTADO , "C:\RESULTADO.TXT", write_mode);
DAT := DATA;
for I in O to 99 loop
-- escribe los resultados (justificado a la derecha en un
-- campo de 40 caracteres)
write(MY_LINE, DAT, right, 40);
writeline(RESULTADO, MY_LINE);-- escribe la linea en el archivo
wait for 100 ns;
end loop;
file_close(RESULTADO);
-- cierra el archivo
wait;
end process;
P 220
www.mvd-fpga.com
Anexo
P 221
www.mvd-fpga.com
P 222
Palabras reservadas:
abs
access
after
alias
and
architecture
array
assert
attribute
begin
block
body
buffer
bus
Ver 7.0b, Junio 2008
www.mvd-fpga.com
case
component
configuration
constant
disconnect
downto
else
elsif
end
entity
exit
generate
generic
guarded
if
in
inout
is
label
library
linkage
loop
file
for
function
P 223
map
mod
VHDL, muy sencillo...
package
port
procedure
process
then
to
transport
type
range
record
register
rem
report
return
units
until
use
select
severity
signal
subtype
P 224
variable
wait
when
while
with
xor
VHDL, muy sencillo...