Beruflich Dokumente
Kultur Dokumente
VHSIC HDL
Very High Speed Integrated Circuit
HDL = Hardware Description Language
entity
entity Inhibit is
port ( X,Y: in BIT;
X Z Z: out BIT);
Y end Inhibit;
architecture
entity-name
Nombre de entidad definido por el programador
signal-names
Nombre (o lista de nombre) de los pines
mode
in entrada
out salida, el valor no se puede leer desde el interior de la
entidad
inout bidireccional, usada para las in/out de 3E de los PLD
buffer salida, el valor SI se puede leer desde el interior de la
entidad
signal type
Un tipo ya definido o definido por el usuario (ver más adelante)
X
A
C
Y B
D Z
F
E
entity BUZZER is
port ( DOOR, IGNITION, SBELT: in std_logic;
WARNING: out std_logic);
end BUZZER;
DOOR_NOT
SBELT_NOT
begin
-- Component instantiations statements
U0: NOT1 port map (DOOR, DOOR_NOT);
U1: NOT1 port map (SBELT, SBELT_NOT);
U2: AND2 port map (IGNITION, DOOR_NOT, B1);
U3: AND2 port map (IGNITION, SBELT_NOT, B2);
U4: OR2 port map (B1, B2, WARNING);
end structural;
COMENTARIOS
-- indica linea de comentarios
SIMBOLOS ESPECIALES
+-/*().,:;&‘“<>=!#
:= /= >= <= <> --
IDENTIFICADORES
Letras, números, _
No puede empezar con número o _
No _ _
No puede terminar en _
Case Un-Sensitive
No usar keywords o símbolos especiales
‘1’
CADENAS
B“10110111 ”
Entre “ ”
0”345”
X”4AB ”
[VHDL ’93]
Constant
Tienen un valor inicial antes de la simulación
No se puede modificar durante la simulación
Variable
Tienen un valor
Se puede cambiar con sentencias de asignación
Signal
Tienen un valor actual y un conjunto de posibles valores
futuros
File
Representan archivos
Se usan para hacer “Test Benches”
Representan las
señales o conexiones
internas (alambres
internos)
signal signal names : signal type; Parecido a definicion
de port en la entidad
Pero, no se especifica
mode
Se pueden
leer/escribir dentro de
la arquitectura
Son locales
En la arquitectura se
pueden definir varias
o ninguna
Similar a signal
Fisicamente no
representan nada
variable variable names : variable type; Uso parecido a
Lenguages de
Programación
Tipo Operador
OPERADOR DESCRIPCION
+ Suma, signo positivo
- Resta, signo negativo
* Multiplicación
/ División
mod Módulo de 2 números
rem Resto de la división
entera
** Exponenciación
abs Valor absoluto
OPERADOR DESCRIPCION
and AND
or OR
nand NAND
nor NOR
xor OR Exclusiva
not Complemento
OPERATOR DESCRIPTION
= Igual a
/= Distinto de
> Mayor que
< Menor que
>= Mayor o Igual que Para
comparar
<= Menor o Igual que operandos
en una
expresión
Resultado :
True /
False
ESPE/DEEE ING. BYRON NAVAS 28/1/2018 32
Asignacion
33
OPERATOR DESCRIPTION
Para asignar el
valor de una
expresión a un
objeto
OPERATOR DESCRIPTION
integer
-2^31 + 1 hasta +2^31 – 1
boolean
true, false
character
caracteres ISO 8 bit, los 128 primeros son ASCII
….
También se
subtype subtype-name is type-name range start to end; pueden definir
subtype subtype-name is type-name range start downto end; subtipos a partir
de un tipo
Los valores del
subtype dos_val_logicos is std_logic range ´0´ to ´1´; subtipo deben
ser “parte” o ser
subtype cuatro_val_logicos is std_logic range ´X´ to ´Z´; un “rango”
contínuo de
subtype neg_int is integer range -2147483647 to -1;
valores del tipo
subtype bit_num is integer range 31 downto 0; original
NATURAL y
POSITIVO
Hay dos
subtipos muy
usados
definidos en
VHDL subtype natural is integer range 0 to highest-integer;
Facilitan la lectura,
constant constant-name: type-name := value; mantenimiento y
portabilidad de
cualquier código
(en este caso
VHDL)
constant BUS_SIZE: integer := 32; --ancho del bus
El valor puede ser
constant MSB: integer := BUS_SIZE - 1; --bit MSB
incluso una
constant Z: character := ´Z´; --sinonimo Alta Z “expresión”
Son útiles en la
definición de tipos
y subtipos
Concatenación
Operador &
Combina arrays ´0´ & ´1´ & “1Z” --equivale a “011Z”
o slices en el
orden escrito de B(6 downto 0) & B(7) --desplaza circularmente a la izq el bit 7
izquierda a
derecha
Concurrente Secuencial
Sentencias no se ejecutan Sentencias son
de acuerdo al orden en ejecutadas
que están escritas secuencialmente de
Son como aseveraciones acuerdo al orden en que
Sentencias existen
estan escritas
siempre y se activan Las sentencias o
cuando es necesario instrucciones son
Decodificadas-
Es fundamental en
Ejecutadas por la
cualquier HDL maquina sequencial de
la CPU
En lenguajes como C,
C++, Basic, Pascal …
Strong Type
El tipo de la expresión debe
ser compatible o un subtipo de
signal-name
En arrays, el tipo y la dimensión
deben ser compatibles
El rango y dirección no
necesariamente
MUX 4 -1
MUX 4 -1
U2
1 15
2 A Y0 14
3 B Y1 13
C Y2 12
6 Y3 11
4 G1 Y4 10
5 G2A Y5 9
G2B Y6 7
Y7
74LS138
5 11
1 D0 A 10
2 D1 B 9
4 D2 C 8
D3 D 6
3 E 13
BI F 12
G
74LS49
<LABEL_1>:
for <name> in <lower_limit> to <upper_limit> generate
begin
<statement>;
<statement>;
end generate;
el ejemplo
realiza una
operacion and
bit-a-bit entre los
dos nibbles de y
no es necesario
declarar
identificador ‘i’
0 y 3 son limites
estaticos
limite_sup es una
entrada (no
estatica)
produce codigo no
sintetizable
resp es asignado
varias veces
error de
compilacion “ resp
is multiple driven”
Variacion de
<LABEL_1>: for/generate
if <condition> generate
begin Puede anidarse
<statement>;
end generate; if/generate
dentro de
for/generate (o
al contrario)
block_label: block
<declarative part>
begin SIMPLE
<concurrent statements> BLOCK
end block [block_label];
PACKAGE package_name IS
END package_name;
COMPONENT component_name IS
PORT (
port_name : signal_mode signal_type;
port_name : signal_mode signal_type;
...
);
END COMPONENT;
entradas que
activan el proceso
señal modificada
en el proceso
n ≥1
S n =1
L
otras entradas al
proceso
p1 F
SL p3
p2
p3
SIGNALS VARIABLES
Declarada en ENTITY, Solo en código
PACKAGE, secuencial (PROCESS,
ARCHITECTURE FUNCTION,
PROCEDURE)
GLOBAL LOCAL
PROXIMO ESTADO
ESTADO ACTUAL
CLK
señal modificada
en el proceso
S
L señal modificada
en el proceso
S
L
ARCHITECTURE OF IS
TYPE estado IS (estadoA, estadoB,…);
SIGNAL pr_state, nx_state: estado;
BEGIN
case expression is
when choices => sequential-statements
...
when choices => sequential-statements
end case;
u2
u1
p3
u3
TOP