UNIVERSIDAD MAYOR DE SAN SIMON FACULTAD DE CIENCIAS Y TECNOLOGIA CARRERA INGENIERIA ELECTRONICA
CPLD
By: ---+/Ariel Victor Flores Balderrama/++/Boris Vicente Calle Paco/++/Francisco Antonio Camacho Mendieta/+--@2017 ver
ÍNDICE
1. 2. 3. 4. 5. 6.
Presentación…………………………………………………………….……….………………………………………………2 VHDL estructura y Organización……………………………….……….………………………………………………3
Practica 1 Lógica Simple con CP LD………………………..……………….…………..……………………………..7 Practica 2 Sistemas Combinacionales con CPLD………………….……………..……………………………..6 Practica 3 Sistemas Secuenciales con CPLD……………………….………………………………………………7
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 1. 2. 3. 4. 5.
El informe a presentar después de haber realizado la práctica debe constar de: VHDL: El código VHDL bien comentado. Simulación: Captura de pantalla de la simulación con hora y fecha. Pin Planner: Captura de pantalla de la asignación de pines del CPLD MAX II. Layout: Diagrama de la conexión física del circuito completo. 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; paso:IN STD_LOGIC_VECTOR (1 downto 0); carga:IN STD_LOGIC_VECTOR (3 downto 0); num:OUT STD_LOGIC_VECTOR (3 downto 0) ); END master;
Entradas de la entidad
master
Declaración de entradas Declaración de salidas
Salidas de la 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 arquitectura
Nombre de la 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 1 resistencia pull up No importa (don`t care)
‘H’ ‘-‘
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 valores lógicos ‘1’
‘0’
VCC
GND
Pines de propósito específico de acuerdo a su numeración (revisar la guía)
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 2 3 4 5 6 7 8 9
0001 0010 0011 0100 0101 0110 0111 1000 1001
0001 0010 0011 0100 0101 0110 0111 1000 1001
0001 0010 0011 0100 1011 1100 1101 1110 1111
0100 0101 0110 0111 1000 1001 1010 1011 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)
Dip switch
Codificador o decodificador
Interfaz de medio (diodos led)
Diagrama de bloques 2 (Multiplexor-Demultiplexor)
Dip switch (entrada del multiplexor)
Multiplexor o demultiplexor de 4 bits
Dip switch (select mux o demux)
Interfaz de medio (diodos led)
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.
enable
Display de 7 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.
enable Salto de paso
carga
Display de 7 segmentos
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 SR
C. Secundario SR
SR
SR
SR
SR
SR
SR
SR
SR
SR
SG SG SG SG 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
F borrar preset A+B A-B A'+B A+B' A+B+cn A+B-Cn A+1 A-1 A+A A+A+1 A+B A+B A*B (A+B)' A B A' B'
cn 0 1 0 0 -
descripción F="0000" F="1111" suma resta suma B más el complemento de A suma A más el complemento de B suma con acarreo suma sustraendo acarreo incrementar A decrementar A suma A+A incrementar 1 a la suma A+A xor (operación lógica) or (operación lógica) and (operación lógica) not (operación lógica) transferir A transferir B complementar A 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.
s2 s1 s0 F 0 0 0 F="0000" 0 0 1 F="1111" 0 1 0 A+B 0 1 1 A-B 1 0 0 A'+B 1 0 1 A+1 1 1 0 A 1 1 1 A+B
s2 s1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1
grupo n 1 descripción borrar preset suma resta suma B más el complemento de A incrementar A transferir A xor (operación lógica)
grupo n 2 s0 F descripción 0 F="0000" borrar 1 F="1111" preset 0 A+B suma 1 A-B resta 0 A+B' suma A más el complemento de B 1 A-1 decrementar A 0 B transferir B 1 A+B or (operación lógica)
s2 s1 s0 F 0 0 0 F="0000" 0 0 1 F="1111" 0 1 0 A+B 0 1 1 A-B 1 0 0 A+B+cn 1 0 1 A+A 1 1 0 A' 1 1 1 A*B
grupo n 3 descripción borrar preset suma resta suma con acarreo suma A+A complementar A and (operación lógica)
Guía Quartus II – CPLD-FPGA
s2 s1 s0 F 0 0 0 F="0000" 0 0 1 F="1111" 0 1 0 A+B 0 1 1 A-B 1 0 0 A+B-Cn 1 0 1 A+A+1 1 1 0 B' 1 1 1 (A+B)'
grupo n 4 descripción borrar preset suma resta suma sustraendo acarreo incrementar 1 a la suma A+A complementar B not (operación lógica)
Esquema de diagrama de bloques Armar el circuito de acuerdo a los diagramas de bloques
A Display de 7 segmentos B ALU
F
Decodificador de 7 segmentos
Cn
selec
s2 s1 s0 F 0 0 0 F="0000" 0 0 1 F="1111" 0 1 0 A+B 0 1 1 A-B 1 0 0 A+B-Cn 1 0 1 A+A+1 1 1 0 B' 1 1 1 (A+B)' s2 s1 s0 F 0 0 0 F="0000" 0 0 1 F="1111" 0 1 0 A+B
grupo n 4 descripcion s2 s1 s0 F borrar 0 0 0 F="0000" preset 0 0 1 F="1111" suma 0 1 0 A+B resta 0 1 1 A-B suma sustraendo 1 0 acarreo 0 A+B-Cn incrementar A+A 1 1 0a la 1suma A+A+1 complemertar 1 1B 0 B' not (operación 1 1logica) 1 (A+B)' grupo n 4 descripcion s2 s1 s0 F borrar 0 0 0 F="0000" preset 0 0 1 F="1111" 0 1 0 A+B
grupo n 4 descripcion borrar preset suma resta suma sustrae incrementar complemerta not (operació grupo n 4 descripcion borrar preset