Laboratorio de Digitales # 3

26
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

Transcript of Laboratorio de Digitales # 3

Page 1: Laboratorio de Digitales # 3

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

Page 2: Laboratorio de Digitales # 3

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

Page 3: Laboratorio de Digitales # 3

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.

Page 4: Laboratorio de Digitales # 3

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

Page 5: Laboratorio de Digitales # 3

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

Page 6: Laboratorio de Digitales # 3

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.”

Page 7: Laboratorio de Digitales # 3

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

Page 8: Laboratorio de Digitales # 3

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

Page 9: Laboratorio de Digitales # 3

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

Page 10: Laboratorio de Digitales # 3

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

Page 11: Laboratorio de Digitales # 3

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;

Page 12: Laboratorio de Digitales # 3

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;

Page 13: Laboratorio de Digitales # 3

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

Page 14: Laboratorio de Digitales # 3

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:

Page 15: Laboratorio de Digitales # 3

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

Page 16: Laboratorio de Digitales # 3

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;

Page 17: Laboratorio de Digitales # 3

CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 17

Conclusiones Generales

Page 18: Laboratorio de Digitales # 3

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.

Page 19: Laboratorio de Digitales # 3

CIRCUITOS SECUENCIALES Y MAQUINAS COMBINACIONALES 19