Beruflich Dokumente
Kultur Dokumente
Nivel lógico
Especific. sistema / algoritmo
Registros, ALU, MUX, ... Nivel de circuito RT / FSM, bloques funcionales
Puerta, flip-flop, switch Ecuación booleana
Transistores Ecuación diferencial
Layout de celdas
Layout de bloques
entity SUMADOR1 is
entity SUMADOR is port( A,B,C: in BIT;
port( A,B: in INTEGER; S, CO: out BIT);
SUM: out INTEGER); end SUMADOR1;
end SUMADOR;
architecture BEH of SUMADOR1 is
architecture BEH of SUMADOR is begin
begin S <= (A and (not B) and (not C)) or
SUM <= A + B; ((not A) and (not B) and C) or
end BEH; ((not A) and B and (not C));
CO <= (A and B) or (A and C) or (B and C);
end BEH;
entity SUMADOR4 is
port( A,B:in BIT_VECTOR(3 downto 0);
SUM: out BIT_VECTOR(3 downto 0));
end SUMADOR4;
entity SUMADOR4 is
port( A,B:in BIT_VECTOR(3 downto 0); FA FA FA FA
SUM: out BIT_VECTOR(3 downto 0) );
end SUMADOR4;
D S
U1
U3 Q
NAND2
U0
DN
U4 QN
INVER U2
L R
Librería 2
D Q
LATCHD D Q
LATCHD
L QN L QN
QN [1,14]
[1,20]
[1,11]
DN
t (nS) 10 11 12 13 14 15 16 17 18 19 20 21
Q
[0,12]
[1,13]
QN
t (nS) 10 11 12 13 14 15 16 17 18
E LATCHD
A FUNCIONAL A SECUENCIAL
A ESTRUCTURAL
E GINVER E GNAND2
A F A F
package ID_PAQUETE is
end ID_PAQUETE;
-- definiciones de funciones
-- definiciones de procedimientos
end ID_PAQUETE;
● Ejemplos:
• SOBRECARGA de un operador:
function "+"(L: BIT_VECTOR; R: BIT_VECTOR) return BIT_VECTOR;
Simulación
D
L
Q
QN
DN
R Tema 2: Lenguajes de Descripción Hardware
S
0 10 ns 20 ns 30 ns 40 ns 50 ns
Resultado de la simulación de la configuración CONF1
D
L
Q
QN
DN
0 10 ns 20 ns 30 ns 40 ns 50 ns
Resultado de la simulación de la configuración CONF2
Cuso: 2006-2007
D
L
Q
Microelectrónica 1
QN
0 10 ns 20 ns 30 ns 40 ns 50 ns
Resultado de la simulación de la configuración CONF3
Unidades de Diseño: Denominación y Análisis
● ANALISIS: Proceso de chequeo, tanto sintáctico como semántico, del código VHDL, y posterior
generación y almacenamiento del objeto en la librería seleccionada para su posterior simulación y
reutilización.
● Una UNIDAD de DISEÑO es toda construcción VHDL que puede ser analizada por separado.
● En VHDL existen cinco (5) tipos de unidades de diseño:
• Unidades primarias entity package
• Unidades secundarias architecture package body
• Configuraciones configuration
● PROPIEDADES:
• El identificador del package body debe ser el mismo que el de su package correspondiente.
• Sólo puede haber un único package body por cada package.
• El identificador de la architecture puede ser distinto que el de su entity correspondiente.
• Puede haber múltiples architecture por cada entity.
• En una misma librería NO pueden haber dos unidades primarias con el mismo identificador.
• Las unidades secundarias tienen que ser analizadas dentro de la misma librería que contiene la
unidad primaria correspondiente.
package P is ...
use WORK.P.all;
package B is ...
use WORK.D.all;
package body D is ...
architecture T of A is ...
ENUMERADOS DISCRETOS
ENTEROS
TIPOS ESCALARES
REALES
FISICOS NUMÉRICOS
ARRAYS
TIPOS COMPUESTOS
REGISTROS
TIPOS FICHERO
TIPOS ACCESO
● BIT_VECTOR
● Grupo o array de BIT
● El valor binario de un BIT_VECTOR está definido entre "comillas dobles".
● La dimensión del vector se define a la hora de declarar la señal/variable/constante.
...
signal A: BIT_VECTOR (7 downto 0);
begin
A <= "01011010"; -- equivalente a: A <= X"5A"
...
● Hay que tener muy en cuenta que un vector no tiene significado numérico
architecture A of FSM is
-- parte declarativa de la arquitectura
type ESTADOS is ( S0, S1, S2, S3 );
signal ESTADO_ACTUAL, ESTADO_SIGUIENTE: ESTADOS;
begin
-- sentencias
● Alguno de los tipos predefinidos comentados hasta ahora, realmente han sido definidos como
enumeraciones:
● SEÑALES
S’EVENT TRUE si ha habido un evento en el tiempo delta actual
S’STABLE TRUE si NO ha habido un evento en el tiempo delta actual
S’LAST_EVENT Tiempo transcurrido desde el último evento
S’LAST_VALUE Valor previo antes del último evento
SECUENCIALES CONCURRENTES
• WAIT • Asignación de señal simple *
• Asignación de variable • Asignación de señal selectiva
• Asignación de señal simple* • Asignación de señal condicional
• IF • Procesos
• CASE • Instancia de componentes
• NULL
wait on A until B;
Evento en A mientras B es TRUE.
• Está permitido el uso de IF’s anidados, pero es recomendable utilizar las clausulas ELSIF pues
tienen una interpretación más simple.
if (C = '1') then
if (A = '1' or B = '1') then
S <= '1';
else A
S <= '0'; B
S
end if; C
else
S <= '0';
end if;
if (C = '1') then
if (A = '1' or B = '1') then
S <= '1'; A
D Q S
B
else
C L
S <= '0';
end if;
end if;
case EXPRESION is
end case;
• Las distintas opciones que aparecen deben cubrir todos los posibles valores que puede generar la
evaluación de la expresión.
begin
end FUNCIONAL;
Operadores
OPERADORES OPERANDOS
and AND lógico
or OR lógico
Operadores nand complemento de AND mismo
Lógicos nor complemento de OR tipo
xor OR exclusivo
not complemento Tema 2: Lenguajes de Descripción Hardware
= igual
/= distinto
Operadores < menor que mismo
Relacionales <= menor o igual que tipo
> mayor que
>= mayor o igual que
+ incremento
Operadores - decremento
Aritméticos
abs valor absoluto
+ suma mismo
- resta tipo
Cuso: 2006-2007
* multiplicación
Operadores / división
Aritméticos
mod módulo mismo
rem resto tipo
Microelectrónica 1
** exponenciación
Operador de concatenación
Concatenación
página 36 de 42
Cuso: 2006-2007
-- funcion que devuelve el instante actual de simulacion
function NOW return TIME;
-- Subtipos numericos predefinidos
subtype NATURAL is INTEGER range 0 to INTEGER'HIGH;
subtype POSITIVE is INTEGER range 1 to INTEGER'HIGH;
-- Tipos array predefinidos
type STRING is array (POSITIVE range <>) of CHARACTER;
Microelectrónica 1
type BIT_VECTOR is array (NATURAL range <>) of BIT;
end STANDARD;
Anexo B: palabras clave
abs case generate nand range units
access component generic new record until
after configuration guarded next register use
alias constant nor rem
all if not report variable
and disconnect in null return
architecture downto inout wait
array of select when
assert else label on severity while
attribute elsif library open signal with
end linkage or subtype
begin entity loop others xor
block exit out then
body map to
buffer file package transport
bus for port type
function procedure
process
● Es lo primero que hay que hacer antes de poder compilar ningún diseño.
ModelSim> vlib dir1
ModelSim> vmap work dir1
● Una vez creadas las librerías no hay volver a hacerlo en siguientes sesiones de trabajo.