Sistemas Digitales VHDL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 70

SISTEMAS DIGITALES VHDL

Fredy Hernán Riascos Campiño

Sistemas Digitales
SD
Practica 1a:
Implementación de un incrementador:
• Se he de implementar un modulo incrementador
(INC), Este modulo no es mas que un sumador
y un registro y un sumador.
INC

A
A ++
1

SD Sistemas Digitales
Practica 1b:
Implementación de un registro:
• El registro carga con flanco de subida y debe
tener las siguientes señalas:

– asynResetn: Raset activo bajo.


– load: Señal de carga activa alta.
– ckl: Señal de reloj
– datain: Dato de entrada
– dataout: dato de salida

SD Sistemas Digitales
Practica 1c:
Implementación de unidad aritmético lógica ALU:
• La ALU debe hacer las operaciones que aparecen
en la tabla.
• Debe tener un registro de estado de 3 bits, que
indique si el resultado de la operación es cero (z),
negativo (N) o hay un desborde (C)

SD Sistemas Digitales
Practica 1c:
Implementación de unidad aritmético lógica ALU:

Operaci Operacion
ón (Sel)
000 C<=B A
C
001 C<=A+B

+
B
010 C<=A+B Lógica
SEL Banderas
011 C<=B&FF
100 C<=B+1 CLK CZN
101 C<=A>>1
110 C<=A<<1
Diagrama de bloques ALU

SD Sistemas Digitales
Practica 1d:
Implementación de un IRcoder:
• Es un circuito combinacional cuya función lógica
esta dada por la siguiente tabla de verdad:

opcode initAddress
0000 "001000"
0001 "001101"
0010 "010010"
0011 "010101"
0100 "011001"
0101 "011100"
Otro caso "XXXXXX"

SD Sistemas Digitales
Introducción al VHDL
• VHDL es el acrónimo que representa la
combinación de VHSIC y HDL

• VHSIC es el acrónimo de Very High Speed


Integrated Circuit y HDL es a su vez el acrónimo
de Hardware Description Language.

• En términos generales VHDL es un lenguaje de


descripción de hardware (Circuitos digitales)

SD Sistemas Digitales
Introducción al VHDL
• VHDL Inicial mente fue impulsado por el
departamento de defensa de los estados
unidos en la década de los 80s
• Mas tarde se convirtió en un estándar y
periódicamente se ha actualizado
– IEEE VHDL-87
– IEEE VHDL-93
– IEEE VHDL-2001

SD Sistemas Digitales
Introducción al VHDL
• El lenguaje VHDL se utiliza para describir
hardware.
• VHDL permite Implementar un diseño hardware
a través de la descripción de su estructura.
• VHDL permite Implementar un diseño hardware
a través de la descripción de su
comportamiento.
• Su semántica permite describir aspectos como:
entidad, conexiones, concurrencia, tiempos.
• No todo el código escrito en VHDL es
sintetizable.

SD Sistemas Digitales
Entidades y Arquitecturas
• Entidad
• Arquitectura

UNIDAD MAC

CLK

S
B

SD Sistemas Digitales
Entidades
ENTITY mac IS
GENERIC (ancho_bits :integer:=8 );

PORT(
clk :IN STD_LOGIC;
a: IN STD_LOGIC_VECTOR(ancho_bits-1 downto 0);
b: IN STD_LOGIC_VECTOR(ancho_bits-1 downto 0);
s: OUT STD_LOGIC_VECTOR(ancho_bits*2-1 downto 0)
);
END mac;

CLK
A S
B

SD Sistemas Digitales
Arquitectura
Hay dos tipos de descripción para la arquitectura:

• Estructural : la descripción se basa en la


interconexión de los elementos que componen el
dispositivo. Se utilizan componentes y/o paquetes

• Funcional (o de comportamiento): La descripción se


basa en la tarea o funcionamiento del dispositivo. Se
utilizan procedimientos

SD Sistemas Digitales
Arquitectura

• Sea cual sea el tipo de descripción el código se escribe


en medio de las palabras Architecture y end, como se
muestra abajo.

ARCHITECTURE a OF mac IS
BEGIN
-- Descripción del dispositivo

END a;

SD Sistemas Digitales
Unidad MAC
EJEMPLO:
Implemente la arquitectura en VHDL para una unidad MAC:
1. Enfoque funcional (proyecto mac1)
2. Enfoque estructural (proyecto mac2)

UNIDAD MAC

CLK

S
B

SD Sistemas Digitales
Arquitectura funcional unidad
MAC1-VHDL

SD Sistemas Digitales
Arquitectura funcional unidad
MAC1-RTL síntesis

SD Sistemas Digitales
Arquitectura estructural unidad
MAC2-VHDL

SD Sistemas Digitales
Arquitectura estructural unidad
MAC2-VHDL

SD Sistemas Digitales
Simulaciones MAC1 y MAC2

SD Sistemas Digitales
1. Objetos y tipos

SD Sistemas Digitales
Objetos y tipos
• Objeto: Un objeto en VHDL es un elemento
que guarda el valor de un tipo de dato
determinado.
– Constantes
– Variables
– Señales
– Archivo (No sintetizable)

SD Sistemas Digitales
Objetos y tipos
• Un tipo de dato es definido por:
– Un conjunto de valores que pueden ser asignados
al objeto
– Un conjunto de operaciones que pueden realizadas
con el objeto.
• Existen tipos predefinidos
• Se puede crear nuevos tipos
• Se puede crear subconjuntos de tipos.

SD Sistemas Digitales
Tipos predefinidos en VHDL
• integer: números -(2^31 - 1) a 2^31 - 1
• boolean: definido como (false, true).
• bit: (‘1’ , ‘0’)
• bit_vector: es un arreglo unidimensional
de tipos bit

SD Sistemas Digitales
Crear nuevos tipos VHDL
• Para crear un nuevo tipo hay que realizar una declaración

• La declaración está formada por la palabra reservada type, un


identificador para el nuevo tipo de dato y la descripción del
conjunto de valores del tipo

• Los tipos pueden ser clasificados según las características de


lo que van a determinar, (descripción del conjunto de valores):
– Tipos enteros/reales
– Tipos enumerados
– Tipos array

SD Sistemas Digitales
library ieee;
use ieee.std_logic_1164.all;
• En este paquete se define nuevos tipos de
datos. Mejora la descripción hardware
– std_logic
– std_logic_vector

• Toman los valores: (‘1’,’0’,’U’, ’X’, ’Z’, ’W’, ’L’, ’H’, ’ - ’ )

SD Sistemas Digitales
library ieee;
use ieee.numeric_std.all;
• En este paquete se define dos nuevos tipos
– signed
– Unsigned
• Estos nuevos tipos soportan los operadores aritméticos +,-,*,/ .

• Para usar estos operadores con tipos std_logic_vector, se debe


convertir estos tipos a signed o unsigned a traves de las
funciones unsigned() y signed().

• De esta forma se tiene control sobre la longitud de palabra de


las operaciones.

SD Sistemas Digitales
Tipos de datos aplicables a las diferentes
operaciones

SD Sistemas Digitales
Tipos de datos aplicables a las diferentes
operaciones

SD Sistemas Digitales
OBJETOS: SEÑALES
• Las señales se utilizan como buses que interconectan
diferentes módulos VHDL, sobretodo en el esquema
estructural.

• También funcionan como registros, sobretodo cuando se


utiliza el esquema funcional y en procedimientos secuénciales.

• Dentro de un procedimiento las señales sólo se actualizan al


terminar el proceso en el que se usan

• Las señales deben declararse entre architecture y begin.


También pueden declararse en un paquete.

SD Sistemas Digitales
OBJETOS: SEÑALES

ARCHITECTURE a OF __entity_name IS
signal operando1 : int8:=0;
signal operando2 : std_logic_vector(7 downto 0);

BEGIN
-- Definicion de la arquitectura

END a;

SD Sistemas Digitales
OBJETOS: VARIABLES

• Las variables se utilizan en los procedimientos almacenar


valores, contadores, temporales.

• Las variables se actualizan instantáneamente, es decir, su


valor cambia en el momento de la asignación.

• Las variables deben declararse entre process y begin.

SD Sistemas Digitales
OBJETOS: VARIABLES

process_label:
PROCESS (signal_name, signal_name)
variable contador : int8 := 0;
variable vector :arreglo_int8;
BEGIN

-- Definición del procedimiento

END PROCESS process_label;

SD Sistemas Digitales
OBJETOS
Diferencias entre variables y señales se profundisara en c3-
vhdl

• Ejemplo: sig_var
• Ejemplo: constantes

SD Sistemas Digitales
2. Asignación concurrente y
Circuitos Combinacionales

SD Sistemas Digitales
Asignación concurrente
• Hay tres formas para realizar la
asignación concurrente de señales.
– Simple
– Condicional
– Selectiva
• En general este tipo de instrucciones se
utiliza en circuitos puramente
combinacionales.

SD Sistemas Digitales
Asignación simple
Se utiliza el operador asignación:

status <= '1';


even <= (pl and p2) or (p3 and p4);
arithout <= a + b + c - 1;

SD Sistemas Digitales
Asignación simple
• No debe permitirse retroalimentaciones de
señales, pues el circuito deja de ser
combinacional.

q <= (q and (not en)) or ( d and en);

SD Sistemas Digitales
Asignación simple
• La salida Sa depende del estado anterior
q~0

SD Sistemas Digitales
Asignación simple
q <= ( ( not q) and (not en)) or ( d and en);

Si en = ‘0’ la señal de salida es inestable.

SD Sistemas Digitales
Asignación condicional
WHEN-ELSE
Signal <= expresión WHEN expresion_booleana ELSE
expresión WHEN expresion_booleana ELSE
expresión;

Expresión 1

Expresión 2 Señal

Expresión 3

Condición

SD Sistemas Digitales
Asignación WHEN-ELSE
Un multiplexor de 4 entradas a una salida

x <= a when ( S ="00") else


b when ( S ="01") else
c when ( S ="10") else
d;

SD Sistemas Digitales
Asignación WHEN-ELSE

SD Sistemas Digitales
Asignación WHEN-ELSE
Una unidad aritmético lógica ALU, con: +, -
, incremento, and, or, xor:

?
SD Sistemas Digitales
Asignación WITH-SELECT
WITH expresión SELECT
Señal <= expresión WHEN valor_constante,
expresión1 WHEN valor_constante,
expresión2 WHEN valor_constante,
expresión3 WHEN valor_constante;

Expresión 1

Expresión 2 Señal

Expresión 3

Valor 1,2,3

SD Sistemas Digitales
Asignación WITH-SELECT
withs s select
x <= a when “00" ,
b when “01" ,
c when “10",
d when others;

SD Sistemas Digitales
Asignación WITH-SELECT

SD Sistemas Digitales
Asignación WITH-SELECT
Una unidad aritmético lógica ALU, con: +, -
, incremento, and, or, xor:

?
SD Sistemas Digitales
Consideraciones generales
• Evite lasos cerrados en la asignación
concurrente de señales

• Piense en las asignaciones como


conexiones.

• Asignación WHEN-ELSE: Prioridad


• Asignación WITH-SELECT: Multiplexor

SD Sistemas Digitales
3. Sentencias secuenciales en
VHDL

SD Sistemas Digitales
Sentencias secuenciales en VHDL
• Este tipo de sentencias son similares a las
instrucciones de un lenguaje de software.
• El principal objetivo de este tipo de
sentencias es modelar un circuito a través
de su comportamiento.
• Las instrucciones secuenciales se
agrupan en un bloque de código llamado
process.

SD Sistemas Digitales
Process en VHDL
• Un process contiene un conjunto de
instrucciones que se ejecutan en forma
secuencial.
• Sin embargo varios process se ejecutan
en forma concurrente.
• Hay diferentes sentencias que se pueden
utilizar dentro del proces.

SD Sistemas Digitales
Sentencia ejecutables en process

Sentencia if-else-elsif
Sentencia Case
Sentencia ciclo for
Otros….

SD Sistemas Digitales
Process en VHDL
• Un process tiene una lista de sensibilidad compuesta
por un conjunto de señales.

• Cuando una de las señales de la lista de sensibilidad


cambia, las instrucciones dentro del process se ejecuta
en forma secuencial.

• Un process no es como una función que se invoca,


simplemente se activa o desactiva según la lista de
sensibilidad.

• Las sentencias de asignación concurrente no tiene


sentido dentro del process. (when-else y with-select)

SD Sistemas Digitales
ESQUEMA PROCESS
Declaración Lista de
de variables sensibilidad

process ( a , b , c )
-- Definición de variables
begin
y <= a and b and c ;
end process;
SD Sistemas Digitales
Asignación de señales en un
process
• En un process la asignacion de una señales es
tratada en forma diferente.

• Dentro de un process a una señal se le pueden


asignar múltiples ítems. Solo la ultima
asignación tiene efecto.

• En un process, si a una señal se le asigna una


expresión, esta solo tiene efecto hasta que el
process se active nuevamente.

SD Sistemas Digitales
EJEMPLO PROCESS
• Dentro de un process a una señal se le pueden
asignar múltiples ítems. Solo la ultima asignación
tiene efecto.

process ( a , b , c )
-- Definición de variables
begin
y <= a and b;
y <= c or s;
end process;
SD Sistemas Digitales
Sentencia if-else-elseif
• Funciona como las
sentencia
condicional
tradicional del
lenguaje software

SD Sistemas Digitales
Sentencia if-else-elseif

SD Sistemas Digitales
Sentencia if incompleta
Incompleto Retroalimentación Correcto

process (a ,b) process (a ,b) process (a ,b)


begin begin begin
If ( a = b ) then If ( a = b ) then If ( a = b ) then
eq <=‘1’; eq <=‘1’; eq <=‘1’;
end if; else else
end process; eq<=eq; eq<=‘0’;
end if; end if;
end process; end process;

SD Sistemas Digitales
Asignación de señales en un process

La asignación de una señal


en una descripción sincrona
infiere la síntesis de un
registro. Por lo que el valor
solo estará disponible en el
siguiente ciclo de reloj.

SD Sistemas Digitales
Asignación de señales en un process

Si se utilizan variables,
se elimina la posibilidad
de incluir registros

SD Sistemas Digitales
PROCESS VARIABLES-SEÑALES
• Para un process que describe un circuito
combinacional el compilador trata variables y señales
de igual forma.

SD Sistemas Digitales
Sentencia case-when

• Funciona como la
sentencia switch-
case del lenguaje C

SD Sistemas Digitales
Sentencia case-when

SD Sistemas Digitales
CICLO FOR
• Hay que ser cuidadoso en la manipulación de
esta sentencia, su utilidad se restringe a la
reproducción genérica de hardware.

• No se puede pretender utilizar un ciclo for de


VHDL como si se tratara de un ciclo
tradicional de un lenguaje software.

SD Sistemas Digitales
CICLO- FOR
• Modelado genérico de una compuerta and
(hace lo mismo que y<= a and b)

SD Sistemas Digitales
EJEMPLO: CICLO- FOR
Constantes genéricas,
favorece el modelamiento
parametrizado

Variable de control,
No hay que declararla

La cuenta es ascendente,
si fuera descendente
se utiliza downto

SD Sistemas Digitales
Circuitos secuénciales

4. DEFINICIÓN DE TIEMPOS

SD Sistemas Digitales
Tiempo en: Circuitos
combinacionales
• EL TIEMPO TPD (pin-to-pin delay)
– Es el tiempo de propagación de un pin a otro
en un circuito combinacional. El peor caso, se
conoce generalmente como ruta critica.

SD Sistemas Digitales
Circuitos secuénciales

Tiempo: circuitos secueanciales


• Tcq = Tco (clock to output delay)
– Tiempo en que tarda una señal en propagarse a la salida,
después de que ha ocurrido el flanco de reloj
• Tsetup = Tsu (clock setup time)
– Tiempo que debe estar una señal a la entrada del registro antes
del flanco de reloj.
• Thold = Th (clock hold time )
– Tiempo que debe estar una señal a la entrada del registro
después del flanco de reloj.

SD Sistemas Digitales

También podría gustarte