Sie sind auf Seite 1von 42

Microelectrónica 1

Dpto. de Tecnología Electrónica


E.T.S.I. de Telecomunicación
I.T. de Telecomunicación (Sistemas Electrónicos)

Tema 2: Lenguajes de Descripción Hardware

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 1 de 42


Presentación del VHDL

● VHDL = VHSIC Hardware Description Language


● VHSIC = Very High-Speed IC
● Nace directamente como un estándar desarrollado y aprobado por el IEEE (1076-1987) y es
conocido como VHDL-87
● En el propio estándar se especifica que su uso es:
● documentación
● simulación y
● verificación de ASICs
● Hoy en día su uso se ha orientado principalmente a
● captura de diseños
● simulación y
● síntesis de ASICs
● Primera revisión del estándar en 1993 (IEEE 1076-1993) conocido como VHDL-93
● Centraremos nuestro estudio en un subconjunto bastante reducido de VHDL-87

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 2 de 42


Dominios de representación de un diseño
Nivel de sistema
o algorítmico

Nivel de bloques Dominio funcional o


Dominio estructural funcionales (RT) de comportamiento

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

Máscara (rectángulo, polígono)

Layout de celdas

Layout de bloques

Floorplan del chip


Gajski & Kuhn, 1983 Dominio geométrico o físico

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 3 de 42


VHDL: dominio funcional
● Posibilidad de realizar descripciones a distintos niveles de abstracción
● No es posible hacer descripciones a nivel de ecuaciones diferenciales.

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;

architecture BEH of SUMADOR4 is


begin
SUM <= A + B;
end BEH;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 4 de 42


VHDL: dominio estructural
● La descripción de un circuito se hace en función de los componentes que lo constituyen y la
conexión entre ellos (NETLIST)
● Son descripciones inherentemente jerárquicas. SUMADOR4
● No hay información alguna sobre la funcionalidad

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;

architecture NETLIST of SUMADOR4 is


NC
component FA A(3) A CO
S S(3)
port( A,B,C:in BIT; B(3) B C

S, CO: out BIT); CI(3)


A(2) A CO
end component; S S(2)
B(2) B C
signal CI: BIT_VECTOR(3 downto 0);
CI(2)
A(1) A CO
begin S
B(1) B C S(1)
CI(0)<='0'; CI(1)
FA0: FA port map (A(0),B(0),CI(0),S(0),CI(1)); A(0) A CO
FA1: FA port map (A(1),B(1),CI(1),S(1),CI(2)); B(0) B C
S S(0)
FA2: FA port map (A(2),B(2),CI(2),S(2),CI(3)); CI(0)='0'
FA3: FA port map (A(3),B(3),CI(3),S(3),NC)
end NETLIST;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 5 de 42


Símbolos y Esquemas en VHDL
Librería 1
GINVER
GNAND2

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

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 6 de 42


Descripciones Funcionales: Modelos Concurrentes
L
entity LATCHD is
port ( D, L: in BIT; D
Q, QN: out BIT );
end LATCHD;
Q
[1,13] [0,17]

QN [1,14]
[1,20]
[1,11]
DN
t (nS) 10 11 12 13 14 15 16 17 18 19 20 21

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 7 de 42


Descripciones Funcionales: Modelos Secuenciales
entity LATCHD is
port (D, L: in BIT;
L
Q, QN: out BIT );
end LATCHD;
D

Q
[0,12]

[1,13]
QN

t (nS) 10 11 12 13 14 15 16 17 18

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 8 de 42


Selección de Arquitecturas

E LATCHD

A FUNCIONAL A SECUENCIAL

A ESTRUCTURAL

E GINVER E GNAND2

A F A F

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 9 de 42


Paquetes y Subprogramas (i)

package ID_PAQUETE is

-- declaraciones de tipos, constantes y señales


-- declaraciones de componentes
-- declaraciones de funciones
-- declaraciones de procedimientos

end ID_PAQUETE;

package body ID_PAQUETE is

-- definiciones de funciones

-- definiciones de procedimientos

end ID_PAQUETE;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 10 de 42


Paquetes y Subprogramas (ii)
function ID_FUNCION (P1: TIPO1; P2: TIPO2) return TIPO;

function ID_FUNCION (P1: TIPO1; P2: TIPO2) return TIPO is


begin
...
end ID_FUNCION;

procedure ID_PROCEDIMIENTO (P1: modo1 TIPO1; P2: modo2 TIPO2 ... );

procedure ID_PROCEDIMIENTO (P1: modo1 TIPO1; P2: modo2 TIPO2 ... ) is


begin
...
end ID_PROCEDIMIENTO;

● Ejemplos:

• function TO_INTEGER(ARG: BIT_VECTOR) return INTEGER;

• SOBRECARGA de un operador:
function "+"(L: BIT_VECTOR; R: BIT_VECTOR) return BIT_VECTOR;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 11 de 42


Aplicación de Estímulos y Verificación de Diseños

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 12 de 42


página 13 de 42

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.

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 14 de 42


Librerías de Diseño: Declaración y Acceso
● Definición (LRM): Una librería/biblioteca es una facilidad de ALMACENAMIENTO,
dependiente de la implementación, para UNIDADES de DISEÑO previamente
analizadas/compiladas.
LIBRERÍA CONTENIDO IMPLICITAMENTE
DECLARADA ACCESIBLE
WORK U.D. de usuario SI NO
STANDARD SI
STD SI
TEXTIO NO
Vendedor U.D. de vendedor NO NO
Usuario U.D. de usuario NO NO
● Declaración de una librería:
library NOM_LOG_1, NOM_LOG_2,..., NOM_LOG_3;
● Acceso a las unidades de una librería
library L; library L; library L; library L;
entity E is use L.all; use L.all; use L.P.all;
signal S: L.P.T; entity E is use P.all; entity E is
end E; signal S: P.T; entity E is signal S: T;
end E; signal S: T; end E;
end E;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 15 de 42


Relaciones de Dependencia
● Las unidades de diseño pueden ser analizadas por separado pero esto no implica que pueda
hacerse en cualquier orden.
● Una unidad de diseño sólo puede ser analizada después de que lo hayan sido todas las unidades
de diseño de las que depende.
● Una unidad de diseño A depende de una unidad de diseño B en dos casos posibles:
• Si A es una unidad secundaria correspondiente a B.
• Si A hace uso de elementos declarados en B o en otra unidad de diseño que dependa de B.

package P is ...

package body P is ...

use WORK.P.all;
package B is ...

use WORK.B.all; use WORK.D.all;


package D is ...
entity A is ... package body B is ...

use WORK.D.all;
package body D is ...
architecture T of A is ...

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 16 de 42


Objetos en VHDL: Asignación de Valores
● Definición: Un objeto es un elemento que puede almacenar VALORES de un cierto TIPO.
●CONSTANTES: Tienen un valor FIJO, determinado en tiempo de COMPILACIÓN.
constant IDENTIF: TIPO [:= EXPRESION];
Declaradas en entidades, arquitecturas, subprogramas. Las más frecuentes deberían declararse en
un paquete.

● VARIABLES: Tienen un valor VARIABLE, determinado en tiempo de SIMULACIÓN. Pueden


tener un valor inicial determinado en tiempo de compilación
variable IDENTIF: TIPO [RESTRICION][:= EXPRESION];

Sólo se pueden DECLARAR y UTILIZAR en zonas SECUENCIALES

● SEÑALES: Tienen un valor VARIABLE, determinado en tiempo de SIMULACIÓN. Pueden


tener un valor inicial determinado en tiempo de compilación
signal IDENTIF: TIPO [RESTRICION][:= EXPRESION];

NO se pueden DECLARAR en zonas SECUENCIALES, aunque si pueden ser utilizadas en


PROCESOS para comunicar valores a otros procesos.

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 17 de 42


Diferencia entre Señales y Variables
● ASIGNACIÓN DE VALORES
ID_SIGNAL <= EXPRESION [ after X NS ]; -- asignación retardada,
-- al menos un DELTA
ID_VARIABLE := EXPRESION; -- asignación inmediata

entity E is end E; SIG: process VAR: process

architecture A of E is ns delta N SUMA N SUMA


signal N, SUMA: INTEGER := 0; 0 +0 0 0 0 0
begin 10 +0 0 0 1 1
10 +1 1 0 1 1
VAR: process
20 +0 1 0 2 3
variable N, SUMA: INTEGER := 0;
20 +1 2 1 2 3
begin
30 +0 2 1 3 6
wait for 10 NS; N := N + 1;
30 +1 3 3 3 6
SUMA := SUMA + N;
40 +0 3 3 4 10
end process VAR;
40 +1 4 6 4 10
SIG: process 50 +0 4 6 5 15
begin 50 +1 5 10 5 15
wait for 10 NS; N <= N + 1; 60 +0 5 10 6 21
SUMA <= SUMA + N; 60 +1 6 15 6 21
end process SIG;
end A;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 18 de 42


Tipo de Datos en VHDL
● Los tipos no forman parte del lenguaje: han de ser declarados haciendo uso del mismo.
● Antes de declarar ninguna señal, variable o constante hay que tener declarado el tipo necesario.
type IDENTIFICADOR is DEFINICION_TIPO;
● Hay normas muy estrictas en cuanto a la mezcla de objetos de distinto tipo.
● No existe la conversión automática entre tipos distintos
● Clasificación de tipos:

ENUMERADOS DISCRETOS
ENTEROS
TIPOS ESCALARES
REALES
FISICOS NUMÉRICOS
ARRAYS
TIPOS COMPUESTOS
REGISTROS
TIPOS FICHERO
TIPOS ACCESO

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 19 de 42


Tipos de Datos: Principales Tipos Predefinidos (i)
● Los tipos no forman parte del lenguaje sino que han sido predefinidos haciendo uso del mismo.
● BOOLEAN
● Puede tomar los valores TRUE o FALSE
● INTEGER
● Valor entero codificado sobre 32 bits (desde -2.147.483.648 hasta + 2.147.483.647)
● Un objeto de tipo entero puede estar limitado en su declaración a fin de evitar su
codificación sobre 32 bits

signal VALOR: INTEGER range 0 to 255;


begin
VALOR <= 143 when INIT='1' else '3';
-- VALOR <= 256; -- incorrecto pues valor esta fuera del rango
● RESTRICCION DE RANGO: Delimita el conjunto de valores posible de un tipo base.
● Los límites y la dirección han de ser compatibles con el tipo base

INTEGER range 1 to 10 -- bien


INTEGER range 10 to 1 -- dirección NO compatible
INTEGER range 1.0 to 10.0 -- limites son reales y no enteros

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 20 de 42


Tipos de Datos: Principales Tipos Predefinidos (ii)
● TIME
● Puede tomar valores enteros seguido de una unidad (normalmente NS o PS)
● BIT
● Puede tomar el valor '0' o '1'
● El valor binario de un BIT está definido entre 'comillas simples'.

● 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"
...

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 21 de 42


Manipulación de Vectores (i)
● El orden en el cual se utiliza el vector debe ser el mismo que en la declaración de dicho vector.
● No es necesario utilizar el vector entero: se puede usar parte de ese vector.
● El tamaño del vector debe coincidir para la mayoría de las operaciones (excepto para la
comparación).
architecture A of VECTOR is
signal DIN, MSK, DOUT: BIT_VECTOR(7 downto 0);
signal Q: BIT_VECTOR(7 downto 0);
constant FIJA: BIT_VECTOR(2 downto 0):="010";
begin
DOUT <= DIN and not(MSK);
Q <= (DIN(6 downto 2)and not(MSK(7 downto 3))) & FIJA;
-- DOUT(7) <= DIN(7) and not(MSK(7));
-- DOUT(6) <= DIN(6) and not(MSK(6));
-- ...
-- DOUT(0) <= DIN(0) and not(MSK(0));
-- Q(7) <= DIN(6) and not(MSK(7));
-- Q(6) <= DIN(5) and not(MSK(6));
-- ...
-- Q(3) <= DIN(2) and not(MSK(3));
-- Q(2 downto 0) <= FIJA;
end;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 22 de 42


Manipulación de Vectores (ii)
architecture A of VECTOR is
signal DIN, MSK, DOUT: BIT_VECTOR(7 downto 0);
signal Q: BIT_VECTOR(7 downto 0);
constant FIJA: BIT_VECTOR(2 downto 0):="010";
begin
DOUT <= DIN(0 to 7) and not(MSK);
-- DOUT(7) <= DIN(0) and not(MSK(7));
-- DOUT(6) <= DIN(1) and not(MSK(6));
-- ...
-- DOUT(1) <= DIN(6) and not(MSK(1));
-- DOUT(0) <= DIN(7) and not(MSK(0));
Q <= (DIN(6 downto 2)and not(MSK(7 downto 3))) & FIJA(0 to 2);

● Hay que tener muy en cuenta que un vector no tiene significado numérico

signal A,B: BIT_VECTOR(0 to 3);


signal C,D: BIT_VECTOR(3 downto 0);
begin
A <= "1010";
C <= A; -- A(3)='0' y C(3)='1'
B <= 3; -- es un error pues no se le puede asignar un entero

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 23 de 42


Tipos de Datos: Definidos por el Usuario

● TIPOS ENUMERADOS: enumeración simple de los valores que pueden tener.


● Principalmente utilizados para definir los posibles estados de una máquina de estados.

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:

type BIT is ( '0' , '1' );

type BOOLEAN is ( FALSE , TRUE );

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 24 de 42


Atributos Predefinidos
● Permiten obtener información sobre TIPOS, ARRAYS y OBJETOS
● TIPOS
● LEFT, RIGHT, HIGH, LOW para todo tipo escalar
type POS_BIT is range 15 downto 0;
POS_BIT'LEFT = 15 POS_BIT'LOW = 0
● POS, VAL, SUCC, PRED para todo tipo DISCRETO

type OPCODE is (ADD, ADDWC, SUB, SUBWC, COMP);


OPCODE'LEFT = ADD OPCODE'HIGH = COMP
OPCODE'POS(SUB) = 2 OPCODE'VAL(3) = SUBWC
● ARRAYS
variable A: BIT_VECTOR (0 to 7);
A’LEFT = 0 A’RIGHT = 7 A’HIGH = 7 A’LOW = 0
A’LENGTH = 8 A’RANGE = 0 to 7 A’REVERSE_RANGE = 7 downto 0

● 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

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 25 de 42


Clasificación de sentencias

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

• LOOP • Llamada a Procedimientos *


• NEXT • ASSERT *
• EXIT • BLOCK
• RETURN • GENERATE
• Llamada a Procedimientos *
• ASSERT *
* Estas sentencias pueden aparecer tanto en el ámbito secuencial como en el ámbito concurrente

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 26 de 42


La Sentencia WAIT (i)
● Es una sentencia secuencial, por lo que sólo puede aparecer en el cuerpo de un PROCESO.
● Es un mecanismo de control de la ejecución de dicho proceso (suspende y reactiva la ejecución
del mismo )
● SINTAXIS:
wait [on LISTA] [until CONDICION] [for TIEMPO];

● Sin opciones, no hay condición de reactivación, el proceso queda suspendido indefinidamente:


wait;

● Con opción de reactivación simple:


wait on A;
Evento en la señal A
wait until B;
La condición B pasa a ser TRUE.
wait for X NS;
Han transcurrido X NS de tiempo simulado.

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 27 de 42


La Sentencia WAIT (ii)

● Con opción de reactivación compuesta:


• Si aparece la opción tipo on ha de hacerlo en primer lugar,
• Si aparece la opción for ha de hacerlo en último lugar:

wait on A until B;
Evento en A mientras B es TRUE.

wait on A for X NS;


Evento en A o bien han transcurrido X NS

wait until B for X NS;


B pasa a ser TRUE o bien han transcurrido X NS

wait on A until B for X NS;


Evento en A mientras B es TRUE, o bien han transcurrido X NS

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 28 de 42


La Sentencia IF (i)
• Permite la ejecución de sentencias en función del cumplimiento de ciertas condiciones.

if ... then if ... then if ... then


S1; S2; ...; SN; S1; S2; ...; SN; S1; S2; ...; SN;
end if; else elsif ... then
S1; S2; ...; SN; S1; S2; ...; SN;
end if; elsif ... then
S1; S2; ...; SN;
else
S1; S2; ...; SN;
end if;

• Está permitido el uso de IF’s anidados, pero es recomendable utilizar las clausulas ELSIF pues
tienen una interpretación más simple.

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 29 de 42


La Sentencia IF (ii)
• Hay que prestar especial atención al uso u omisión de las clausulas ELSE, pues puede dar lugar a
comportamientos imprevistos:

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;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 30 de 42


Modelado RTL
A D Q S
A D Q S B
B
A
S
B
C
C C D Q T
T D Q T D
D D
CK
CK
INIT

Proceso Combinacional Proceso Síncrono Proceso Síncrono con RESET Asíncrono

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 31 de 42


La Sentencia CASE (i)
• A partir del valor de una expresión permite seleccionar una y sólo una de un conjunto de
opciones posibles

case EXPRESION is

when VALOR => -- un valor simple


S1;S2;...;SN;
when VALOR1 | VALOR2 | VALOR3 => -- un conjunto de valores
S1;S2;...;SN;
when VALOR4 to VALOR5 => -- un rango de valores
S1;S2;...;SN;
when others => -- resto de valores no cubiertos
S1;S2;...;SN; -- en la otras opciones

end case;

• Las distintas opciones que aparecen deben cubrir todos los posibles valores que puede generar la
evaluación de la expresión.

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 32 de 42


La Sentencia CASE (ii)
entiy BCD2LED is
port ( BCD: in BIT_VECTOR(3 downto 0);
LED: out BIT_VECTOR(6 downto 0);
end BCD2LED;
architecture F of BCD2LED is
begin
process (BCD)
begin f
case BCD is
---------------------- abcdefg --
e a
when "0000" => LED <= "1111110"; g
when "0001" => LED <= "1100000";
when "0010" => LED <= "1011011";
when "0011" => LED <= "1110011"; d b
when "0100" => LED <= "1100101";
when "0101" => LED <= "0110111";
when "0110" => LED <= "0111111"; c
when "0111" => LED <= "1100010";
when "1000" => LED <= "1111111";
when "1001" => LED <= "1110111";
when others => LED <= "0000000";
end case;
end process;
end;
Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 33 de 42
Asignaciones selectiva y condicional
entity MUX41 is
port ( I0, I1, I2, I3, A, B: in BIT;
I0
Q: out BIT );
end MUX41; I1
Q
I2

architecture FUNCIONAL of MUX41 is I3

signal SEL: INTEGER; A B

begin

with SEL select


Q <= I0 when 0,
I1 when 1, A B Q
I2 when 2, 0 0 I0
I3 when 3, 0 1 I1
'0' when others; 1 0 I2
1 1 I3
SEL <= 0 when A = '0' and B = '0' else
1 when A = '0' and B = '1' else
2 when A = '1' and B = '0' else
3 when A = '1' and B = '1' else
4;

end FUNCIONAL;

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 34 de 42


página 35 de 42

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

Anexo A: Empaquetamiento estándar


package STANDARD is
-- Tipos enumerados predefinidos
type BOOLEAN is (FALSE,TRUE);
type BIT is ('0', '1');
type CHARACTER is (
NUL,SOH,STX,ETX,EOT,ENQ,ACK,BEL, BS, HT, LF, VT, FF, CR, SO, SI,
DLE,DC1,DC2,DC3,DC4,NAK,SYN,ETB,CAN, EM,SUB,ESC,FSP,GSP,RSP,USP,
' ','!','"','#','$','%','&',''','(',')','*','+',',','-','.','/',
'0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?',
'@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
Tema 2: Lenguajes de Descripción Hardware
'P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']','^','_',
'`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z','{','|','}','~',DEL);
type SEVERITY_LEVEL is (NOTE, WARNIG, ERROR, FAILURE);
-- Tipos numericos predefinidos
type INTEGER is range -2147483648 to 2147483647;
type REAL is range -1.0E308 to 1.0E308;
-- Tipo fisico predefinido
type TIME is range -2147483647 to 2147483647
units
FS;
PS = 1000 FS;
NS = 1000 PS;
US = 1000 NS;
MS = 1000 US;
SEC = 1000 MS;
MIN = 60 SEC;
HR = 60 MIN;
end units;

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

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 37 de 42


Anexo C: Simulador de VHDL ModelSim

● Workspace (ventana de la izquierda) librerías disponibles:


● librerías IEEE y STD
● Ventana de la derecha es la ventana de comandos
● IMPORTANTE: primer comando siempre cambiar al directorio de trabajo ( cd d:/tutorial )

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 38 de 42


Creación de librerías de trabajo

● 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.

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 39 de 42


Compilación de un Diseño

● Hay que seleccionar una librería de destino


● Observar que no todos los directorios son librerías

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 40 de 42


Simulación de un diseño

● Sólo se puede simular una pareja entidad-arquitectura


(configuración).
● El aspecto del Workspace ha cambiado mostrando ahora también las unidades de diseño que se
están simulando.
● La ventana de comandos también cambia mostrando el prompt del simulador ( VSIM 4> )
● Principales comandos de simulación: view, force, run

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 41 de 42


Selección de Señales y Visualización de Ondas

Microelectrónica 1 Cuso: 2006-2007 Tema 2: Lenguajes de Descripción Hardware página 42 de 42

Das könnte Ihnen auch gefallen