Anda di halaman 1dari 16

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA


CARRERA INGENIERIA ELECTRONICA

Guía Practicas VHDL

CPLD

By:
---+/Ariel Victor Flores Balderrama/++/Boris Vicente Calle Paco/++/Francisco Antonio Camacho Mendieta/+---

@2017 ver
ÍNDICE

1. Presentación…………………………………………………………….……….………………………………………………2
2. VHDL estructura y Organización……………………………….……….………………………………………………3
3. Practica 1 Lógica Simple con CPLD………………………..……………….…………..……………………………..7
4. Practica 2 Sistemas Combinacionales con CPLD………………….……………..……………………………..6
5. Practica 3 Sistemas Secuenciales con CPLD……………………….………………………………………………7
6. Practica 4 Sistemas Aritmético Lógicos con CPLD………………………….…………………………………10
Presentación
La presente guía de laboratorio ha sido elaborada en forma conjunta por Ariel Víctor Flores
Balderrama, Boris Vicente Calle Paco, y Francisco Antonio Camacho, el cual tuvo origen a partir de
la necesidad de mejorar las prácticas de laboratorio de electrónica digital II, haciendo énfasis en la
implantación de circuitos FPGA y CPLD haciendo uso del lenguaje de descripción VHDL.
Motivados amplio uso de dispositivos FPGA y CPLD en la electrónica digital moderna, es por
ello que esta guía pretende que el estudiante pueda comprobar el funcionamiento de la síntesis de
circuitos digitales en dispositivos FPGA y CPLD, esto permitirá tener conocimientos actualizados y
de gran proyección en el futuro.

Objetivos del laboratorio


 Introducir al estudiante en el diseño electrónico digital utilizando el lenguaje VHDL con la
plataforma de Quartus II.
 Verificar el funcionamiento de las descripciones de hardware VHDL implementados en el
CPLD MAX II.
 Familiarizar al estudiante el uso de FPGAs y CPLDs para sus proyectos.
 Formar futuros profesionales en el ámbito del “SABER HACER” complementando la teoría
con la práctica a través de la experimentación en laboratorio.

Acerca del Informe de laboratorio


El informe a presentar después de haber realizado la práctica debe constar de:
1. VHDL: El código VHDL bien comentado.
2. Simulación: Captura de pantalla de la simulación con hora y fecha.
3. Pin Planner: Captura de pantalla de la asignación de pines del CPLD MAX II.
4. Layout: Diagrama de la conexión física del circuito completo.
5. Conclusiones y recomendaciones.

Bibliografía
 VHDL el Arte de Programar Sistemas Digitales “David G. Maxinez y Jessica Alcala”
VHDL estructura y Organización
CPLDs: Extienden el concepto de un PLD (del acrónimo inglés Programmable Logic Device) a un
mayor nivel de integración ya que permite implementar sistemas más eficaces, ya que utilizan
menor espacio, mejoran la fiabilidad del diseño, y reducen costos.

VHDL: Es acrónimo proveniente de la combinación de dos acrónimos: VHSIC (Very High Speed
Integrated Circuit) y HDL (Hardware Description Language).

Fue desarrollado por el departamento de defensa de los Estados Unidos a inicios de los años 80
basado en el lenguaje de programación ADA con el fin de simular circuitos eléctricos digitales.

VHDL

Declaracion de librerias

Una parte importante en la programacion con VHDL radica en el uso de librerias y paquetes
que permiten declarar y almacenar estructuras logicas que facilitan el diseño.

library IEEE permite el uso de todos lo componentes incluidos en la libreria IEEE.


USE IEEE.STD_LOGIC_1164.ALL El estandar logico 1164 contiene todos los tipos de datos que suelen
emplearse en VHDL [std_logic_vector] [std_logic ] entre otros.
USE IEEE.STD_LOGIC_ARITH.ALL Define funciones y operadores aritmeticos, como el (=,<;>)
USE IEEE.STD_LOGIC_UNSIGNED.ALL Define operaciones aritmeticas sin considerar el signo de los
operandos. Trabaja con valores del tipo std_logic y std_logic_vector, entre otros.
DECLARACIÓN DE LA ENTIDAD
Nombre de la
entidad
entity master is
PORT(
clk: IN STD_LOGIC;
enable: IN STD_LOGIC; Declaración de
paso:IN STD_LOGIC_VECTOR (1 downto 0); entradas
carga:IN STD_LOGIC_VECTOR (3 downto 0);
num:OUT STD_LOGIC_VECTOR (3 downto 0) Declaración
); de salidas
END master;

Entradas de master Salidas de la


la entidad entidad

ARQUITECTURAS: Una arquitectura (architecture) se define como la estructura que describe el


funcionamiento de una entidad. Las arquitecturas pueden ser de tipo:
1. Estructural.
2. Funcional (comportamental).
3. Flujo de datos.

Nombre de la Nombre de la
arquitectura entidad

-Declaración de Tipos, señales, constantes


ARCHITECTURE COMPORTAMENTAL OF master is y componentes
Signal d: std_logic_vector (3 downto 0); -Definición de funciones y procedimientos
BEGIN
PROCESS (clk, paso, enable, carga)
BEGIN
if (enable='1') then --ACTIVA Y DESACTIVA EL CIRCUITO
if(clk='1'and clk'event)then --CONTADOR DE FLANCOS DE SUBIDA
d<=d+paso; --AUMENTA LOS PASOS
num<=d; --ESCRIBE EL NUMERO EN LA SALIDA
end if;
else
d<=carga; -- SI EL ENABLE ESTA EN 0 CARGA EL NUMERO EN d
end if;
END PROCESS;
END COMPORTAMENTAL;

Tipos lógicos estándares:

Tipo Significado
‘U’ Valor no inicializado
‘X’ Valor desconocido
‘0’ 0 Lógico
‘1’ 1 Lógico
‘Z’ Alta impedancia
‘W’ Valor débil no conocido
‘L’ 0 resistencia pull down
‘H’ 1 resistencia pull up
‘-‘ No importa (don`t care)

Ejemplos:

Ejm 1: En este ejemplo se muestra un comparador en una arquitectura funcional


entity Comparador is
Port ( A : in STD_LOGIC_VECTOR (1 downto 0);
B : in STD_LOGIC_VECTOR (1 downto 0);
C : out STD_LOGIC);
end Comparador;
architecture Funcional of Comparador is
begin
compara: process (A,B)
begin
if A = B then
C <= '1';
else
C <= '0';
end if;
end process compara;
end Funcional;

Ejm 2: En este ejemplo se muestra un comparador con arquitectura flujo de datos


entity Comparador is
Port ( A : in STD_LOGIC_VECTOR (1 downto 0);
B : in STD_LOGIC_VECTOR (1 downto 0);
C : out STD_LOGIC);
end Comparador;
architecture F_datos of Comparador is
begin
C <= '1' when (A =B) else '0'; --Se asigna a C el valor de 1
--cuando a=b si no será 0
end F_Datos;

Ejm 3: En este ejemplo se muestra un comparador con arquitectura estructural


entity Comparador is
Port ( A : in STD_LOGIC_VECTOR (0 to 1);
B : in STD_LOGIC_VECTOR (0 to 1);
C : out STD_LOGIC);
end Comparador;
use work.compuerta.all;
architecture Estructural of Comparador is
signal x: STD_LOGIC_VECTOR (0 to 1);
begin
U0: xnor2 port map (A(0), B(0), x(0));
U1: xnor2 port map (A(1), B(1), x(1));
U2: and2 port map (x(0), x(1), C);
end F_Datos;
Armado de circuito: Para el armado del circuito usar cables jumper hembra macho

Datos del CPLD

Máxima Corriente por Pin de Salida: 16 [mA]

Partes físicas de la placa:

Pines de entrada de Pines de propósito


valores lógicos específico de acuerdo a su
‘1’ ‘0’ numeración (revisar la guía)
VCC GND

Conexión de
grabador USB
blaster

Chip CPLD MAX II

Conector de entrada
de alimentación 5V Precaución: Voltaje Lógicos de
entrada salida es de 3,3v

Cable de conexión
USB blaster a
CPLD

Cable de
conexión usb a
USB blaster

Grabador
USB blaster
Practica 1
Lógica simple con CPLD

Objetivos
 Esta práctica tiene como objetivo la introducción al MAX II EPM240 T100C5, y el software
de programación Quartus II.
 Aprender a utilizar el programador USB Blaster.
 Implementar unos circuitos digitales simples en el CPLD MAX II.

Laboratorio
Ejercicio 1.1: try state
Diseñe e implemente en el programa Quartus II un diseño de try state.

Ejercicio 1.2: Compuertas Lógicas


Diseñe e implemente en el programa Quartus II una compuerta Xnor.

Ejercicio 1.3: Clock


Diseñe e implemente en el programa Quartus II un oscilador de pulsos.

Grupos 1, 2, 3 Periodo T=10uS Ciclo de trabajo = 70%

Grupos 4, 5, 6 Periodo T=100uS Ciclo de trabajo = 60%

Todos los Grupos Periodo T=1S Ciclo de trabajo = 50%

Nota: el oscilador interno de los CPLDs es de 50[MHz] para programar el reloj se debe integrar
divisores de frecuencia en el procedimiento.
Practica 2
Sistemas Combinacionales con CPLD

Objetivos
Esta práctica es una introducción al manejo del software Quartus II v 13.0 de Altera y a la
programación y uso del CPLD MAX II EPM240T100C5, perteneciente a la familia de dispositivos MAX
II, también de Altera.

Después de resolver e implementar los ejercicios de esta práctica, será capaz de realizar
aplicaciones sencillas con el CPLD MAX II, observando los beneficios frente a los circuitos
combinacionales de la lógica cableada. Asimismo, utilizará las herramientas básicas que ofrece el
software Quartus II de Altera para la creación de archivos en VHDL, su simulación y el grabado de
los mismos en placas mediante Pin Planner.

Introducción
- Circuitos lógicos combinacionales

Se denomina sistema combinacional o lógica combinacional a todo sistema digital en el que sus
salidas son función exclusiva del valor de sus entradas en un momento dado, sin que intervengan
en ningún caso estados anteriores de las entradas o de las salidas.

Laboratorio
Ejercicio 2.1
Diseñar e implementar un codificador de acuerdo a la tabla 1.

 Grupos (1,5,7) codificador de binario a BCD


 Grupos (2,4,8) codificador de binario a Aiken
 Grupos (3,6,9) codificador de binario a Ex3

Ejercicio 2.2
Diseñe e implemente un decodificador de 2 a 4 bits de acuerdo a la tabla 1.

 Grupos (1,5,7) decodificador de BCD a binario


 Grupos (2,4,8) decodificador de Aiken a binario
 Grupos (3,6,9) decodificador de Ex3 a binario
Tabla 1

Decimal Binario BCD Aiken EX-3


0 0000 0000 0000 0011
1 0001 0001 0001 0100
2 0010 0010 0010 0101
3 0011 0011 0011 0110
4 0100 0100 0100 0111
5 0101 0101 1011 1000
6 0110 0110 1100 1001
7 0111 0111 1101 1010
8 1000 1000 1110 1011
9 1001 1001 1111 1100

Ejercicio 2.3 (todos los grupos):


Diseñe e implemente un multiplexor de 4 bits de acuerdo a la tabla 2.

Tabla 2 (Multiplexor)

S1 S0 F
0 0 I0
0 1 I1
1 0 I2
1 1 I3

Ejercicio 2.4 (todos los grupos):


Diseñe e implemente un demultiplexor de 4 bits de acuerdo a la tabla 3

Tabla 3 (Demultiplexor)

S1 S0 F3 F2 F1 F0
0 0 0 0 0 I0
0 1 0 0 I1 0
1 0 0 I2 0 0
1 1 I3 0 0 0
Esquema de diagrama de bloques
Armar el circuito de acuerdo a los diagramas de bloques

Diagrama de bloques 1 (Codificador-Decodificador)

Codificador o Interfaz de medio


Dip switch (diodos led)
decodificador

Diagrama de bloques 2 (Multiplexor-Demultiplexor)

Dip switch
Multiplexor o Interfaz de medio
(entrada del
demultiplexor de 4 (diodos led)
multiplexor)
bits

Dip switch
(select mux o
demux)
Guía Quartus II –CPLD-FPGA

Práctica 3
Circuitos Secuenciales con CPLD
Objetivos
Después de resolver los ejercicios de la guía, podrá diseñar e implementar circuitos digitales
secuenciales mediante VHDL para su uso en CPLDs y FPGAs.

Laboratorio
Ejercicio 3.1 (Grupos pares):
Diseñe e implemente un contador hexadecimal ascendente y descendente. El contador
tiene como entradas asíncronas enable, para parar/iniciar el conteo reseteando el contador a 0; y
Asc/Des, que decide si el conteo será ascendente (…0, 1, 2,…, E, F, 0,…) cuando tenga nivel ALTO o
descendente (…, F, E, D,…, 1, 0, F,…) cuando tenga nivel BAJO. Las salidas deben estar conectadas a
un display led de 7 segmentos, en el que se deben mostrar los dígitos hexadecimales. Solo pueden
conectarse resistores de protección al display, no use el decodificador 7447 u otro integrado.

Display de 7
enable segmentos

Asc/Des

Ejercicio 3.2 (Grupos Impares):


Diseñe e implemente un contador decimal con carga y salto de paso. El contador tiene como
entradas asíncronas enable, para parar/iniciar el conteo reseteando el contador a 0; Salto de paso,
que consta de dos bits que indican de cuánto en cuánto se realizará el conteo; y carga, que consta
de 4 bits, que establece a partir de qué valor comienza el conteo. El orden de operación sería: 1)
introducir salto de paso (0, 1, 2 o 3 dependiendo de la entrada), 2) introducir carga (0 al 9, otros
valores deben tomarse como 0) y 3) activar enable para iniciar el conteo. Las salidas deben estar
conectadas a un display led de 7 segmentos, en el que se deben mostrar los dígitos decimales. Solo
pueden conectarse resistores de protección al display, no use el decodificador 7447 u otro
integrado.

Display de 7
enable segmentos

Salto de paso

carga
Guía Quartus II –CPLD-FPGA

Ejercicio 3.3 (Todos los grupos)

Diseñar e implementar un cruce de semáforos con las siguientes condiciones:

- Existen 3 semáforos (avenida principal, camino secundario y peatonal).


- El semáforo de la avenida principal tiene luz roja (HR), amarilla (HY) y verde (HG); mientras
que el del camino secundario y el peatonal sólo tienen luz roja (SR y PR) y verde (SG y PG)
respectivamente.
- El diagrama de tiempos que rige el funcionamiento de los semáforos es el siguiente:

Avenida HG HG HG HG HG HG HG HG HG HY HR HR HR HR HR HR
C. Secundario SR SR SR SR SR SR SR SR SR SR SG SG SG SG SR SR
Peatonal PR PR PR PR PR PR PR PR PR PR PR PR PR PR PG PG

- Armar el circuito correspondiente al cruce de semáforos empleando el CPLD MAX II,


resistores y diodos LED.
Guía Quartus II –CPLD-FPGA

Practica 4
Unidad de aritmética lógica con CPLD
Objetivos
 Implementación de unidades aritméticas lógicas

Introducción En computación, la unidad aritmética lógica o unidad aritmético-lógica, también


conocida como ALU (siglas en inglés de arithmetic logic unit), es un circuito digital que calcula
operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o,
no)

Laboratorio
Tabla de funciones aritméticas y lógicas

n F cn descripción
1 borrar - F="0000"
2 preset - F="1111"
3 A+B 0 suma
4 A-B 1 resta
5 A'+B 0 suma B más el complemento de A
6 A+B' 0 suma A más el complemento de B
7 A+B+cn - suma con acarreo
8 A+B-Cn - suma sustraendo acarreo
9 A+1 - incrementar A
10 A-1 - decrementar A
11 A+A - suma A+A
12 A+A+1 - incrementar 1 a la suma A+A
13 A+B - xor (operación lógica)
14 A+B - or (operación lógica)
15 A*B - and (operación lógica)
16 (A+B)' - not (operación lógica)
17 A - transferir A
18 B - transferir B
19 A' - complementar A
20 B' - complementar B
Guía Quartus II –CPLD-FPGA

Laboratorio 4.1:

Diseñe e implemente una unidad de aritmética lógica (ALU) de acuerdo con las siguientes
funciones aritméticas y lógica.

grupo n 1
s2 s1 s0 F descripción
0 0 0 F="0000" borrar
0 0 1 F="1111" preset
0 1 0 A+B suma
0 1 1 A-B resta
1 0 0 A'+B suma B más el complemento de A
1 0 1 A+1 incrementar A
1 1 0 A transferir A
1 1 1 A+B xor (operación lógica)

grupo n 2
s2 s1 s0 F descripción
0 0 0 F="0000" borrar
0 0 1 F="1111" preset
0 1 0 A+B suma
0 1 1 A-B resta
1 0 0 A+B' suma A más el complemento de B
1 0 1 A-1 decrementar A
1 1 0 B transferir B
1 1 1 A+B or (operación lógica)

grupo n 3
s2 s1 s0 F descripción
0 0 0 F="0000" borrar
0 0 1 F="1111" preset
0 1 0 A+B suma
0 1 1 A-B resta
1 0 0 A+B+cn suma con acarreo
1 0 1 A+A suma A+A
1 1 0 A' complementar A
1 1 1 A*B and (operación lógica)
Guía Quartus II –CPLD-FPGA

grupo n 4
s2 s1 s0 F descripción
0 0 0 F="0000" borrar
0 0 1 F="1111" preset
0 1 0 A+B suma
0 1 1 A-B resta
1 0 0 A+B-Cn suma sustraendo acarreo
1 0 1 A+A+1 incrementar 1 a la suma A+A
1 1 0 B' complementar B
1 1 1 (A+B)' not (operación lógica)

Esquema de diagrama de bloques

Armar el circuito de acuerdo a los diagramas de bloques

Display de 7
segmentos
B Decodificador
de 7
ALU F segmentos

Cn grupo n 4 grupo n 4
s2 s1 s0 F descripcion
s2 s1 s0 F descripcion
0 0 0 F="0000" borrar 0 0 0 F="0000" borrar
0 0 1 F="1111" preset 0 0 1 F="1111" preset
selec 0 1 0 A+B suma 0 1 0 A+B suma
0 1 1 A-B resta 0 1 1 A-B resta
1 0 0 A+B-Cn suma sustraendo
1 0 acarreo
0 A+B-Cn suma sustraen
1 0 1 A+A+1 incrementar1 1 0a la 1suma A+A
A+A+1 incrementar 1
1 1 0 B' complemertar
1 1B 0 B' complemertar
1 1 1 (A+B)' not (operación
1 1logica)1 (A+B)' not (operación
grupo n 4 grupo n 4
s2 s1 s0 F descripcion
s2 s1 s0 F descripcion
0 0 0 F="0000" borrar 0 0 0 F="0000" borrar
0 0 1 F="1111" preset 0 0 1 F="1111" preset
0 1 0 A+B suma 0 1 0 A+B suma