Sistemas Digitales VHDL
Sistemas Digitales VHDL
Sistemas Digitales VHDL
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:
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
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:
SD Sistemas Digitales
Arquitectura
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
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
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 +,-,*,/ .
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.
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
SD Sistemas Digitales
OBJETOS: VARIABLES
process_label:
PROCESS (signal_name, signal_name)
variable contador : int8 := 0;
variable vector :arreglo_int8;
BEGIN
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:
SD Sistemas Digitales
Asignación simple
• No debe permitirse retroalimentaciones de
señales, pues el circuito deja de ser
combinacional.
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);
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
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
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.
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.
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
SD Sistemas Digitales
Asignación de señales en un process
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.
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
SD Sistemas Digitales