Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseño Digital Con VHDL PDF
Diseño Digital Con VHDL PDF
Soy un SPLD
Sustituye a 50 SPLD’s
Soy un CPLD
PAL’s y GAL’s
Clasificación de los PLD’s
Productos comerciales
Fabricante SPLD
Altera Clásicos,FLASHLogic
SPLD’s Atmel
Cypress
PAL
PAL
Lattice GAL
Philips PLA,PAL
Vantis PAL
Fabricante CPLD
Altera MAX 5000,7000 Y 9000
Atmel ATF, ATV
CPLD’s Cypress FLASH370, ULTRA37000
PLD’s Lattice
Philips
IspLSI 1000 a 8000
XPLA
Vantis MACH 1 a 5
Xilinx XC9500, CoolRunner
Fabricante FPGA
Actel ACT 1 a 3 , MX, SX
Altera FLEX 6000,8000 Y 10K
FPGA’s Atmel
Lucent
AT6000, AT40K
ORCA 1 a 3
QuickLogic pASIC1 a 3
Vantis VF1
Xilinx XC4000,Virtex, Spartan
Xilinx vs. Altera
CPLD’s
FPGA’s
Software
Estructura VHDL
VHDL su estructura
El lenguaje de descripción en hardware VHDL se estructura en módulos o unidades
funcionales identificados mediante una palabra reservada y particular de este
lenguaje.
Library = Bibliotecas
Entity = Entidad
Architecture = Arquitectura
Package = Paquete
Component = Componente
Entidad
Representa la caracterización del dispositivo físico; es decir,
exhibe las entradas y salidas del circuito (llamados pins) que el
diseñador ha considerado pertinentes para integrar su idea o
aplicación.
Cada una de las señales de entrada y salida en una entidad es
referida como un puerto, el cual es equivalente a una terminal
(pin) de un símbolo esquemático. Todos los puertos que son
declarados deben de tener un nombre, un modo y un tipo de
dato.
Entidad - Modos
Modo in. Señales de entrada a la entidad.
Unidireccional
Modo out. Señales de salida.
Modo inout. Señales de entrada/salida.
Bidireccional, retroalimentación de señales
dentro y fuera de la entidad.
Modo buffer. Permite realizar
retroalimentaciones dentro de la entidad;
pero a diferencia del modo inout, el puerto
declarado se comporta como una terminal
exclusiva de salida.
Entidad – Tipos de datos
Algunos de los tipos de valores mas utilizados son:
Bit : 0’s y 1’s lógicos.
Boolean: Valores de verdadero o falso en una expresión.
Bit_vector: Un conjunto de bit´s.
Integer: Un numero entero.
Objetos y Tipos de Datos
DOWNTO Descendente
TO Ascendente
Entidad
entity Control is
port (Q: in bit_vector(3 downto 0);
F: out bit_vector(0 to 7) );
end Control;
DOWNTO Descendente
TO Ascendente
Ejercicio 1
Describir la entidad del siguiente
Bloque.
Identificadores
Nombres o etiquetas que se usan para referirse a: Variables,
Constantes, Señales, Procesos, Entidades, etc.
Están formados por números, letras (mayúsculas o minúsculas) y
guión bajo “_” con las reglas especificadas en la tabla siguiente.
Longitud (Número de Caracteres): Sin restricciones
Palabras reservadas por VHDL no pueden ser identificadores
En VHDL, un identificador en mayúsculas es igual a su contraparte
en minúsculas
Paquetes
Bibliotecas
Librerías y paquetes
Para llamar un paquete es necesario llamar a la
librería/biblioteca que lo contiene (donde ha sido compilado)
Sintaxis: use
nombre_librería.nombre_paquete.all;
Ejemplo: use ieee.std_logic_1164.all;
X0 Z0
X1 Circuito Z1
Y0 Multiplicador Z2
Y1 Z3
Estilo de descripción o
Niveles de Descripción utilizados Modelización
A B F0 F1
0 0 1 1
0 1 1 1
1 0 0 1
1 1 0 0
Flujo de datos – sentencia when … else
EJEMPLO TABLA
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Tabla is A
end Behavioral; 1 0 0 1
1 1 0 0
Ejercicio 01
Un jurado está formado por tres jueces A, B, C, cada juez emite su voto a favor
oprimiendo un botón enfrente de él. Se desea construir un circuito que encienda una
luz e indique si la mayor parte del jurado votó a favor y no la encienda en cualquier
otro caso.
Resolver por descripción de flujo de datos con when-else y por operadores lógicos
Ejercicio 02
BCD a Decimal (Display 7 segmentos ánodo común )
Conversión
Sentencia básica de asignación concurrente
(WITH … SELECT)
with variable_de_selección select
salida <= valor1 when valor_variable1,
valor2 when valor_variable2,
valor3 when others; A0 A1 F
with A select
0 0 1
F <= ‘1’ when “00”,
‘0’ when “01”, 0 1 0
B[3:0]
0 1 B
1 0 MAYOR
1 1 MENOR
S[1:0]
Sol. Ejercicio 3
Ejercicio 4
Diseñe un comparador de dos números A y B, cada uno formado por dos bits, la salida
del comparador también es de dos bits y está representada por la variable Z de tal
forma que sí:
A=B entonces Z=11
A<B entonces Z=01
A>B entonces Z=10
Ejercicio 5
Diseñe un circuito combinacional que detecte números primos de 4 bits. Realice la
tabla de verdad y elabore un programa que describa su función. Utilice instrucciones
del tipo withselect- when.
Process
Un Process en VHDL se debe de considerar como parte de una seria de declaraciones
concurrentes; sin embargo, su comportamiento interno debe ser analizado de forma
secuencial para su síntesis o evaluación.
Los procesos se definen con la etiqueta process, la cual incluye el nombre del proceso
y la lista de sensibilidad (sensitivity list) de señales que disparan el proceso. De tal
forma que cada vez que cambia el valor de alguna de las señales incluida en la lista, se
ejecutan las instrucciones del proceso.
Los procesos se componen de una parte declarativa y de otra procedimental. En la
primera se incluyen las señales y variables de ámbito local. En la segunda las
operaciones secuenciales.
Procesos (process)
• Enunciados de Asignación de
Variables
Proceso (process)
• Enunciados de Asignación de
Señales
• Enunciados if
• Enunciados case
Enunciados Secuenciales
• Enunciados loop
• Enunciados next
• Enunciados exit
Nota importante:
• Enunciados de Subprogramas
Una señal que se vea involucrada dentro de un
proceso no recibe inmediatamente el valor asignado, • Enunciados return
sólo hasta el final del mismo. Una variable que sea
utilizada dentro de un proceso sí recibe el valor de • Enunciados wait
forma inmediata. • Enunciados null
Programación de Estructuras Básicas
SEÑALES Y VARIABLES
VARIABLES:
Es similar al concepto de variable en otros lenguajes. Su valor puede ser
alterado en cualquier instante y se le puede asignar un valor inicial. Las
variables sólo se declaran en los procesos o subprogramas.
Utilizadas en ejecuciones en serie.
SEÑALES:
Se declaran igual que las constantes y variables. La diferencia es que pueden
ser normal, register y bus. Si no se especifica nada en la declaración el
compilador entenderá que es del tipo normal. Se puede decir que la señal
tiene dos partes una donde se escribe y otra donde se lee. Las señales pueden
ser declaradas sólo en las arquitecturas, paquetes (PACKAGE) o en bloques
concurrentes (BLOCK).
Utilizadas en ejecuciones concurrentes.
Programación de Estructuras Básicas
SEÑALES Y VARIABLES
Enunciados CASE:
SINTAXIS
case expression is
when choices => { sequential_statement }
when choices => { sequential_statement }
end case;
DESCRIPCION
expression: evalúa a un entero, o tipo enumerado.
sequential_statement: uno o mas enunciados secuenciales.
choices: opciones.
La última opción puede ser others (valor por omisión del resto de
las opciones).
Operadores Relacionales
Operadores Relacionales
Características.
•Uso: Para fines de comparación de datos.
•Operadores incluidos en los paquetes: std_numeric y std_logic_arith
•Los operadores de Igualdad y Desigualdad (= , /=) utilizan todos los tipos
de datos.
•Los operadores (<, <=, >, >=) son definidos para los tipos escalar y
arreglos unidimensionales de tipos de datos enumerados o enteros.
Operador Significado
= Igual
/= Diferente
< Menor
<= Menor o Igual
> Mayor
>= Mayor o Igual
Estilo de Modelización - Funcional
Ejemplo
a
c
b Comparador
Uso de if-then-else
(construcción secuencial)
si a = b entonces c = 1
si a b entonces c = 0
Procesos (process)
F6
0 0 1 B
A1 F5
A0 F4 0 1 0 MAYOR
B1 F3
B0 F2 0 1 1 MENOR
F0
1 0 0 IGUAL
1 0 1 A+B
S0 S1 S2
1 1 0 A*B
1 1 1 0
- - - -
Solución
MODIFICAR