Está en la página 1de 26

CIRCUITOS LOGICOS

DIGITALES
Lógica Programable
Un dispositivo lógico programable (PLD, Programmable Logic Device)
es un dispositivo que inicialmente no tiene una función lógica fija,
pero que puede programarse para implementar casi cualquier diseño
lógico.

Mas compleja, densidad


mucho mayor
Estructura interna
diferente (arquitectura)

Contiene varios SPLD


Aplicaciones mas complejas
Aplicaciones a Puede reemplazar CI
Pequeña Escala Implementa cualquier Función Lógica
Proceso de programación
Podemos pensar que un CPLD o un FPGA es una pizarra en blanco en
la que implementamos un circuito utilizando un proceso.
Para esto requerimos instalar en una computadora un software que
permita implementar un diseño de circuito en el chip programable.
La computadora se conecta a un dispositivo de programación que
contenga el CPLD o FPGA.
CPLD ALTERA
En nuestro caso utilizaremos los siguientes
CPLD:

MODELO: EPM240T100C5
FAMILIA: MAX II
MARCA: ALTERA

MODELO: EP4CE6E22C8
FAMILIA: CICLONE IV E
MARCA: ALTERA

SOFTWARE:
QUARTUS PRIME LITE 18.1
Introducción del Diseño
El primer paso para la programación, es
introducir el diseño del circuito o sistema
a través de un medio de entrada que
puede ser texto, gráficos o descripción de
diagramas de estado.

La introducción del diseño mediante texto


se lleva a cabo utilizando un lenguaje de
descripción de hardware (VHDL)

Un compilador es un programa que


controla el proceso del flujo de diseño y
traduce el código fuente en código
objeto, en un formato que pueda ser
probado lógicamente o descargado en el
dispositivo objeto.
Introducción VHDL
 VHDL es un acrónimo que representa la
combinación de VHSIC y HDL.
 VHSIC = Very High Speed Integrated Circuits
 HDL = Hardware Description Language.
 VHDL = VHSIC Hardware Description Language
 VHSIC: Grupo creado por el Departamento de
Defensa (DoD) de los Estados Unidos.
Introducción VHDL
 El VHDL y el VERILOG HDL son los lenguajes de
descripción de Hardware más utilizados a nivel
mundial.
 El VHDL ha sido estandarizado por la IEEE a
través del:
 IEEE 1076 (Primera versión del VHDL: VHDL 87).
 IEEE 1164 (Segunda versión del VHDL : VHDL
93).
 Básicamente el VHDL es utilizado para describir
circuitos, arquitecturas en dispositivos como
FPGAs o CPLDs.
Introducción VHDL
 Es necesario tener en cuenta que el VHDL es un
lenguaje de descripción de Hardware, es decir
que cuando usamos VHDL no estamos
programando, estamos describiendo
circuitos!!!.
Introducción VHDL
 Al contrario de un lenguaje de programación (c,
c++, visual c++, visual basic, etc) que es
secuencial, las sentencias VHDL son
inherentemente concurrentes. Es decir se
ejecutan de manera paralela.
 En VHDL, solo las sentencias ubicadas dentro de
procesos, funciones y procedimientos, son
ejecutadas de manera secuencial.
VHDL – Estructura:
Unidades Funcionales
 El lenguaje de descripción VHDL se estructura en
módulos o unidades funcionales, identificados
mediante palabras reservadas:

 Al interior de la estructura de un programa, las


unidades Entidad (Entity) y Arquitectura
(Architecture), ambas forman la columna
vertebral de este lenguaje.
VHDL – Estructura:
Entidad (entity)
 Una entidad básicamente representa la
caracterización del dispositivo físico; es decir,
exhibe las entradas y las salidas del circuito
(llamados pines) que el diseñador ha considerado
para integrar su idea o aplicación.
VHDL – Estructura:
Entidad (entity): Puertos de entrada-salida
Es la porción de código que permite definir los
puertos de entrada-salida.

Cada una de las señales de entrada y salida en


una entidad es referida como un puerto, el cual es
equivalente a un pin de un símbolo esquemático.

Todos los puertos que son declarados deben tener


un nombre, un modo y un tipo de dato.
VHDL – Estructura:
Entidad (entity): Puertos de entrada-salida
El nombre es utilizado como una forma de llamar
al puerto; el modo permite definir la dirección que
tomará la información, mientras que el tipo
precisa qué clase de información se transmitirá a
través del puerto.
VHDL – Estructura:
Entidad (entity): Modos
Modo in: Se refiere a las señales de entrada a la entidad. El modo in
es solo unidireccional y únicamente permite el flujo de datos hacia
dentro de la entidad.
Modo out: Indica las señales de salida de la entidad.
Modo inout: Permite declarar a un puerto de forma bidireccional, es
decir como de entrada/salida, además hace posible la
retroalimentación de señales dentro o 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.
VHDL – Estructura:
Entidad (entity): Tipos de Datos
Los tipos de datos son los valores que el diseñador establece para los
puertos de entrada y salida dentro de una entidad.

Algunos de los tipos más utilizados:

Bit: valores de 0 y 1 lógico

Boolean: valores de verdadero o falso en una expresión

Bit_vector (vectores de bits): representa un conjunto de bits para


cada variable de entrada y/o salida.

Integer (entero): representa a un número entero.

Conforme avancemos iremos detallando mas tipos de datos y sus usos.


VHDL – Estructura:
Declaración de Entidades
La declaración de una entidad señala los pines de
entrada y salida con los que cuenta el circuito.
En la siguiente tabla de verdad, se observa:

Tres entradas: A,B,C


Dos Salidas: F0, F1
Nombre de Entidad: Tabla
VHDL:
Consideraciones Importantes
Punto y coma (;): se utiliza para cerrar y finalizar declaraciones

Dos puntos (:): en este caso se usan como separador entre el


nombre de los puertos y los modos de entrada.

El paréntesis: después del modo de salida out bit cierra la


declaración de los puertos (port).

El uso de las mayúsculas o las minúsculas en la declaración es


irrelevante para el compilador.
VHDL:
Ejemplo
Declarar la entidad del circuito lógico mostrado:

Solución:
Modo in: clk, Reset
Modo out: Q3,Q2,Q1 y Q0
Entidad: Contador
VHDL:
Ejemplo
Declarar la entidad del circuito lógico mostrado:

Solución:
Modo in: clk, Reset
Modo out: Q3,Q2,Q1 y Q0
Entidad: Contador

1 -- Declaración de la entidad contador


2 entity Contador is
3 port( clk,Reset: in bit;
4 Q3,Q2,Q1,Q0: out bit);
5 end Contador ;
VHDL:
Ejemplo
Declarar la entidad del circuito lógico mostrado:

Solución:
Modo in: a,b,c,d,e,f,g,h
Modo out: F1
Entidad: Circuito
VHDL:
Ejemplo
Declarar la entidad del circuito lógico mostrado:

Solución:
Modo in: a,b,c,d,e,f,g,h
Modo out: F1
Entidad: Circuito

1 -- Declaración de la entidad
2 entity Circuito is
3 port( a,b,c,d,f,g,h,: in bit;
4 F1: out bit);
5 end Circuito;
VHDL:
Declarando entidades con librerías y paquetes
Un aspecto importante en la programación con VHDL radica en el uso
de librerías y paquetes que permiten declarar y almacenar
estructuras lógicas que facilitan el diseño.

Una librería (biblioteca) es un lugar al cual se accede para emplear


las unidades de diseño predeterminadas por el fabricante de la
herramienta, y que se aplican para agilizar el diseño, además que
también permiten almacenar el resultado obtenido de la compilación de
un diseño, con el fin de que este pueda ser utilizado dentro de uno o
varios programas.

Por lo general, siempre hay dos librerías:


ieee y work.
Al interior de la librería ieee se ubica el
paquete std_logic_1164, mientras que en
la librería work se localizan los paquetes
numeric_std, std_arith y gates.
VHDL: Ejemplo
Declarando entidades con librerías y paquetes
Para la entidad, realizar su declaración utilizando librerías y paquetes:

Modo in: X vector de 2 bits.


Modo in: A, B entradas individuales de un bit.
Modo out: Z salida vector de 4 bits.
Entidad: Bloque

1 library ieee;
2 use ieee.std_logic_1164.all;
3 entity Bloque is
4 port (X : in std_logic_vector(1 downto 0);
5 A,B : in std_logic);
8 Z : out std_logic_vector(0 to 3));
7 end Bloque;

Declarando vectores:
Números de varios bits
VHDL: Ejemplo
Declarando entidades con librerías y paquetes
Para la entidad Sumador, realizar su declaración utilizando
librerías y paquetes:

SUMA = A+B

1 library ieee;
2 use ieee.std_logic_1164.all;
Paquete std_arith, requerido para
3 use work.std_arith.all; la operación SUMA = A+B
4 entity Sumador is
5 port (A, B : in std_logic_vector(1 downto 0);
6 SUMA : out std_logic_vector(1 downto 0));
7 end Sumador;

No se declara librería work, por defecto se encuentra siempre habilitada.


VHDL:
Operadores Aritméticos
Como su nombre lo indica, estos permiten realizar operaciones del tipo
aritmético, tales como suma, resta, multiplicación, división, cambios de
signo, valor absoluto y concatenación.

Dichos operadores generalmente son utilizados en el diseño lógico para


la descripción de sumadores y restadores o para las operaciones de
incremento y decremento de datos.
VHDL:
Operadores Relacionales
Los operadores relacionales se utilizan para evaluar la igualdad,
desigualdad o la magnitud en una expresión.
Los operadores de igualdad o desigualdad (= y /=) son definidos en
todos los tipos de datos.
Los operadores de magnitud (<, <=, > y >=) están definidos solo
dentro del tipo escalar.
Sin embargo, en ambos casos debe considerarse que el tamaño de los
vectores en los que se aplicarán dichos operadores debe ser de igual
magnitud.

También podría gustarte