View
27
Download
3
Embed Size (px)
Citation preview
1
Electrónica digital
Laboratorio # 3
Aplicaciones con circuitos combinacionales y secuenciales en FPGA
Johan Sebastián Benjumea Penagos, Código 1020744
E-mail: [email protected]
Carlos Almanya Patiño, Código 1020479
E-mail: [email protected]
Jefferson Padierna, Código 1021115
E-mail: [email protected]
Docente: Mauricio Rivera
Universidad de San Buenaventura Seccional Medellín
Facultad de Ingenierías
Ingeniería de Sonido
Ingeniería Electrónica
Medellín
Abril 19 del 2013
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 2
Resumen.
La práctica consistió en familiarizarse con el entorno descriptivo y de simulación VHDL. En
el cual utilizamos la plataforma de síntesis FPGA de la familia Xilinx Spartan-3 donde la
descripción VHDL es convertida a un circuito integrado de cómputo reconfigurable. Algunos
circuitos básicos, secuenciales son sintetizados durante esta plataforma, buscamos
entender conceptos básicos de programación como ciclos y condicionales, para llevarlos al
diseño de las maquinas propuestas.
El primer punto consiste en una maquina secuencial con 3 flip flops, se resolvio mediante
técnicas digitales. Como mapas de estado y karnaoug para por ultimo implementarlo en
proteus.
El segundo punto consiste en familiarizarse con algunos conceptos básicos del lenguaje de
programación, en el tercero nos presentan una tabla a modo de comparador, el cual
diseñamos para pasarlo a un esquematic dentro de la plataforma trabajada.el cual después
pasamos a un código, dentro de la misma plataforma de xilinx
Por último se toma un código existente para analizar el paso a paso del mismo, generando
por ultimo un código con órdenes distintas. Que realice un conteo de números pares
comenzando desde 0
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 3
Introducción
La necesidad de construir circuitos digitales cada vez más complejos es patente día a día. Ya en la actualidad somos capaces de construir microprocesadores de muy altas prestaciones que están compuestos por millones de unidades funcionales (transistores) que realizan tareas de gran utilidad en la actualidad .por ejemplo realizar el conteo y el control de un peaje vehicular.
En la actualidad el hombre dispone de tecnologías de integración capaces de producir circuitos integrados con millones de transistores a un coste no muy elevado, Hoy en día Intel integra 1000 millones de transistores funcionando a 10GHz.
Si bien construir estos circuitos parece ya una cuestión superada, diseñarlos antes era un serio problema. Por no tener sistemas donde simularlos con anterioridad, Con la aparición de los computadores y los programas de simulación se puede verificar la funcionalidad del circuito antes de la fabricación. Este esquema funciona con circuitos digitales, y aún, con circuitos analógicos, con escaso número de elementos muy bien dimensionados para determinar fielmente su comportamiento.
La electrónica digital supone una simplificación funcional de un comportamiento analógico, pero el tamaño de los circuitos digitales es una complicación que requiere una visión del problema muy diferente.
Nace entonces el lenguaje de descripción en hardware VHDL considerado como la máxima herramienta de diseño por las industrias y universidades de todo el mundo, pues proporciona a los usuarios muchas ventajas en la planeación y diseño de los sistemas electrónicos digitales. La tecnología FPGA permite realizar diseños a medida, de bajo coste de desarrollo, incluso para la producción de pocas unidades. Estas características la hacen muy interesante para realizar prototipo rápido y confiable.
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 4
Desarrollo del tema
1) Diseñe una maquina secuencial que responda al siguiente diagrama de tiempos.Simule el circuito en Proteus.
Figura 1-Diagrama de tiempos de una maquina combinacional.
ANTES DESPUES
Q2 Q1 Q0 Q2 Q1 Q0 J2 K2 J1 K1 J0 K0
0 0 0 0 0 1 0 0 0 0 1 10 0 1 0 1 1 0 0 1 1 0 00 1 0 0 1 1 0 0 0 0 1 10 1 1 1 1 0 1 1 0 0 1 11 0 0 1 1 0 0 0 1 1 0 01 0 1 0 0 1 1 1 0 0 0 01 1 0 1 0 1 0 0 1 1 1 11 1 1 1 0 1 0 0 1 1 0 0
Tabla de verdad de la maquina combinacional del diagrama.
MAPA K - J2=K2
J2=K2 Q 2Q 1 Q 2Q1 Q2Q1 Q2Q 1Q 0 0 0 0 0
Q0 0 1 0 1
J2=K2 Q 2Q1Q0 + Q2Q 1Q0MAPA K - J1=K1
J1=K1 Q 2Q 1 Q 2Q1 Q2Q1 Q2Q 1Q 0 0 0 1 1
Q0 1 0 1 0
J1=K1 Q 2Q 1Q0 + Q2Q 0 + Q2Q1
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 5
Mapas K de J2=K2-J1=K1-J0=K0.
J
CLK
Q
Q
K
J2=K2
JKFF
J
CLK
Q
Q
K
J1=K1
JKFF
J
CLK
Q
Q
K
J0=K0
JKFF
D3LED-YELLOW
(CLK)
D1LED-YELLOWD2
LED-YELLOW
1
23
U2:A
74LS08
9
108
U3:C
74LS08
1
23
U5:A
74LS3212
1312
U1:A
74LS111
23
U4:A
74LS32
4
56
U2:B
74LS08
12
1311
U2:D
74LS08
1
23
U3:A
74LS08
4
56
U4:B
74LS32
9
108
U4:C
74LS32
345
6
U1:B
74LS11
91011
8
U1:C
74LS11
12
1311
U4:D
74LS32
Figura 2-Diagrama de tiempos de una maquina combinacional en Proteus.
Análisis de resultados.
En esta máquina secuencial me genera un conteo entre 1 3 6 5 se genera a partir del análisis de diagrama de tiempos para pasar a la construcción de un cuadro de estados, el
MAPA K - J0=K0
J0=K0 Q 2Q 1 Q 2Q1 Q2Q1 Q2Q 1Q 0 1 1 1 0
Q0 0 1 0 0
J0=K0 Q 2Q 0 + Q1Q 0 +Q 2Q1
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 6
cual mediante reducciones de Karnought nos muestra un circuitos con compuertas y flip flops JK, implementado en poteus.
2) Defina los siguientes conceptos de VHDL:
Signal: declaración de señales. Se declaran dentro de la arquitectura y no en la entidad, debido a que no representan a una terminal (pin) y sólo se utilizan para conectar bloques de manera interna a la entidad.Proces: son puertas cada uno con su proceso. “Las declaraciones secuenciales son aquellas en las que el orden que llevan puede tener un efecto significativo en la lógica descrita. A diferencia de una declaración concurrente, una secuencial debe ejecutar- se en el orden en que aparece y formar parte de un proceso”Entity: nombre de la entidad. “Una entidad (entity) es el bloque elemental de diseño en VHDL, Las entida' des son todos los elementos electrónicos (sumadores, contadores, compuertas, flip-flops, memorias, multiplexores, etc.) que forman de manera individual o en conjunto un sistema digital. La entidad puede representarse de muy di- versas maneras”Port: Nombre de la señal, modo tipo señal.” La estructura general de un programa en VHDL está formada por módulos o unidades de diseño, cada uno de ellos compuesto por un conjunto de de- claraciones e instrucciones que definen, describen, estructuran, analizan y evalúan el comportamiento de un sistema digital.”Constant: declaración de una constante.” Los identificadores son simplemente los nombres o etiquetas que se usan pa- ra referir variables, constantes, señales, procesos, etc. Pueden ser números, letras del alfabeto y guiones bajos ( _ ) que separen caracteres y no tienen una restricción en cuanto a su longitud. Todos los identificadores deben se- guir ciertas especificaciones o reglas para que se puedan compilar sin errores”Architecture: declaración de componentes a estudiar. “Una arquitectura (architecture) se define como la estructura que describe el funcionamiento de una entidad, de tal forma que permita el desarrollo de los procedimientos que se llevarán a cabo con el fin de que la entidad cumpla las condiciones de funcionamiento deseadas.”
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 7
3) Se posee el siguiente circuito combinacional
Figura 3-Diagrama de un comparador digital
Tablas de verdad del comparador digital
Realice los mapas K de la anterior tabla de verdad y simule en Proteus
# A1 A0 B1 B0 A>B A=B A<B0 0 0 0 0 0 1 01 0 0 0 1 0 0 12 0 0 1 0 0 0 13 0 0 1 1 0 0 14 0 1 0 0 1 0 05 0 1 0 1 0 1 06 0 1 1 0 0 0 17 0 1 1 1 0 0 18 1 0 0 0 1 0 09 1 0 0 1 1 0 0
10 1 0 1 0 0 1 011 1 0 1 1 0 0 112 1 1 0 0 1 0 013 1 1 0 1 1 0 014 1 1 1 0 1 0 015 1 1 1 1 0 1 0
MAPA K - A>B
A>B A 1A 0 A 1A0 A1A0 A1A 0B 1B 0 0 1 1 1
B 1B0 0 0 1 1
B1B0 0 0 0 0
B1B 0 0 0 1 0
A>B A0B 1B 0 + A1B 1 + A1A0B 0
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 8
MAPA K - A=B
A=B A 1A 0 A 1A0 A1A0 A1A 0B 1B 0 1 0 0 0
B 1B0 0 1 0 0
B1B0 0 0 1 0
B1B 0 0 0 0 1
A>BA 1A 0B 1B 0 + A 1A0B 1B0
+A1A0B1B0 + A1A 0B1B 0
MAPA K - A<B
A<B A 1A 0 A 1A0 A1A0 A1A 0B 1B 0 0 0 0 0
B 1B0 1 0 0 0
B1B0 1 1 0 1
B1B 0 1 1 0 0
A>B A 1B 1 + B 0 +A 1A 0B 0 + A 0B1B0
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 9
1 2
A0
74LS04
5V
OFFON
1234
8765
A1A0B1B0
DIPSW_4
R1
330
R2
330R3
330R4
330
U2
AND_3
4
56
U5:B
74LS32
A>B
LED-BLUE
1 2
A1
74LS04
1 2
B1
74LS04
1 2
B0
74LS04
1
23
U3:A
74LS08
12
1312
U4:A
74LS11
1
23
U5:A
74LS32
A=B
LED-BLUE
U1
AND_4
U6
AND_4
U7
AND_4
U8
AND_4
9
108
U5:C
74LS32
12
1311
U5:D
74LS32
1 23
U9:A74LS32
A<B
LED-BLUE
4
56
U3:B
74LS08 345
6
U4:B
74LS11
91011
8
U4:C
74LS114
56
U9:B
74LS32
9
108
U9:C
74LS32
Figura 4-Comparador Digital simulado en Proteus.
Implemente el circuito en FPGA programando en esquemático
A=B A<B
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 10
Imagen 1 implementado en spartan 3 Imagen 2 implementado en spartan 3
A>B
Imagen 3 Implementado en spartan 3
Implemente el circuito en FPGA programando en VHDL.
Library IEEE;use IEEE.STD_LOGIC_1164.ALL;
Uncomment the following library declaration if usingarithmetic functions with Signed or Unsigned valuesuse IEEE.NUMERIC_STD.ALL;
Uncomment the following library declaration if instantiating any Xilinx primitives in this code.library UNISIM;use UNISIM.VComponents.all;
entity Comparadordedosbits is
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 11
port(A,B:in STD_logic_vector(1 downto 0);EQ,NE,GE:out STD_logic);end Comparadordedosbits;architecture Behavioral of Comparadordedosbits isbegin process(A,B)beginEQ<='0';NE<='0';GE<='0';if A=B then EQ<='1';end if;if A<B then NE<='1';end if;if A>B then GE<='1';end if;end process;end Behavioral;
Imagen 4 implementado en xirinx
Análisis de resultados
Se implementa un contador a partir de una tabla de estados, generando una maquina combi nacional, apartir de proteus y el esquematic de xirinx, por último se toma un código con 3 condicionales para implementar el mismo, se considera el mismo de gran aplicación, sobre todo en los casos de una maquina elija determinados productos en una fábrica; En un principio se cometen errores en el diseño de las compuertas pero tras la corrección la implementación, funciona de una manera correcta.
4) El siguiente código en VHDL, pertenece a un contador binario de 4 bits que cuenta de uno en uno:
Library IEEE;
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 12
use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
Uncomment the following library declaration if usingarithmetic functions with Signed or Unsigned valuesuse IEEE.NUMERIC_STD.ALL;Uncomment the following library declaration if instantiatingany Xilinx primitives in this code.library UNISIM;use UNISIM.VComponents.all;entity cont4 is Port ( reloj : in STD_LOGIC; direccion : in STD_LOGIC; cuenta : out STD_LOGIC_VECTOR (3 downto 0));end cont4;architecture Behavioral of cont4 isSignal x: STD_LOGIC_VECTOR (3 downto 0):="0000";Signal CLK:STD_LOGIC;CONSTANT max: INTEGER := 50000000;CONSTANT half: INTEGER := max/2;signal count: integer range 0 to max;beginprocess(reloj)beginif reloj'event and reloj='1' thenifcount < max then count<= count+1;else count<=0;end if;ifcount < half then Clk<='0';else Clk<= '1';end if;end if;end process;
process (Clk,direccion)beginif Clk='1' and Clk'event thenif direccion='1' thenx<=x+1;
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 13
elsex<=x-1;end if;end if;cuenta <= x;end process;end Behavioral;
Implemente el código y verifique que compile
Tomando como referencia el código anterior, diseñe e implemente en VHDL un contador binario de 8 bits que realice una cuenta de dos en dos (0, 2, 4,6,….).
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;
entity cont4 is
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 14
Port ( reloj : in STD_LOGIC; direccion : in STD_LOGIC; cuenta : out STD_LOGIC_VECTOR (7 downto 0));end cont4;
architecture Behavioral of cont4 is
Signal x: STD_LOGIC_VECTOR (7 downto 0):="0000";Signal CLK:STD_LOGIC;CONSTANT max: INTEGER := 50000000;CONSTANT half: INTEGER := max/2;signal count: integer range 0 to max;
beginprocess(reloj)beginif reloj'event and reloj='1' thenifcount < max then count<= count+1;else count<=0;end if;ifcount < half then Clk<='0';else Clk<= '1';end if;end if;end process;
process (Clk,direccion)beginif Clk='1' and Clk'event thenif direccion='1' thenx<=x+2;elsex<=x-2;end if;end if;cuenta <= x;end process;
end Behavioral; ------------------------------------------------------------------------------------ Company: -- Engineer:
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 15
-- -- Create Date: 19:27:08 04/17/2013 -- Design Name: -- Module Name: Pares - Behavioral -- Project Name: -- Target Devices: -- Tool versions: -- Description: ---- Dependencies: ---- Revision: -- Revision 0.01 - File Created-- Additional Comments: ------------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;
entity Pares isPort ( reloj : in STD_LOGIC; direccion : in STD_LOGIC; cuenta : out STD_LOGIC_VECTOR (7 downto 0));
end Pares;
architecture Behavioral of Pares isSignal x: STD_LOGIC_VECTOR (7 downto 0):="00000000";
Signal CLK:STD_LOGIC;CONSTANT max: INTEGER := 50000000;CONSTANT half: INTEGER := max/2;signal count: integer range 0 to max;beginprocess(reloj)begin
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 16
if reloj'event and reloj='1' thenifcount < max then count<= count+2;else count<=0;end if;ifcount < half then Clk<='0';else Clk<= '1';end if;end if;end process;
process (Clk,direccion)beginif Clk='1' and Clk'event thenif direccion='1' thenx<=x+2;elsex<=x-2;end if;end if;cuenta <= x;end process;
end Behavioral;
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 17
Conclusiones Generales
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 18
REFERENCIAS
1. VHDL El arte de programar sistemas digitales David G. Maxinez Jessica Alcalá Jara
Instituto Tecnológico y de Estudios Superiores de Monterrey NJ 1997
2. Chang K. C., Digital Systems Design with VHDL and Synthesis, An integrated
approach, The IEEE Computer Society Press, NJ, 1999.
3. Romero-Troncoso R. de J., Sistemas Digitales con VHDL, Ediciones Legaria,
México, 2004.
CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 19