Está en la página 1de 10

Universidad Tecnolgica de Tulancingo.

Nombre del alumno:

Jos Alfredo Prez Duarte.

Grupo: Mec-101

Nombre del profesor: Gildardo Godnez Garrido

Flip-Flop realizados en VHDL y programados en el FPGA SPARTAN 3E

Fecha de entrega: 8 de Diciembre del 2013.

Objetivo: Realizar los programas en cdigo VHDL que muestre el comportamiento de los 4 principales tipos de flip-flop, los cuales son el flip-flop tipo RS/ D/ T/ JK, Y programar los cdigos en el FPGA spartan 3E pertenecientes al fabricante Xilinx Desarrollo: Par proceder con la implementacin de los flip-flop en un FPGA se comienza con abrir el programa destinado para este motivo, el cual es para este tipo de dispositivos es el ISE PROJECT NAVIGATOR versin 11 el cual se muestra en la ilustracin 1.

Ilustracin Pantalla de inicio de ISE PROJECT NAVIGATOR

En el programa para poder empezar con la programacin en VHDL se inicializa con configurar el proyecto con el dispositivo que se va a utilizar, para lo cual se lleva a cabo el siguiente procedimiento. 1- Dar clic en file y consecutivamente se selecciona NEW PROJECT como se muestra en la ilustracin nmero 2.

Ilustracin Opciones desplegadas al precionar "FILE"

2- Se le coloca el nombre al proyecto y se configura la ventana como se muestra en la ilustracin 3.

Ilustracin Ventana que muestra la configuracin adecuada para iniciar un proyecto

3- Inmediatamente despus se da Next y nos llevara a la ilustracin 4 en la cual se determinara las caractersticas del FPGA con el cual se trabaja, siendo indispensables la familia a la que pertenece el dispositivo, el dispositivo mismo y el empaquetado as como la velocidad.

Ilustracin Ventana en la cual se determina las caractersticas del dispositivo

4- Al determinar las caractersticas del dispositivo solo damos clic en next hasta encontrar la leyenda de finish y al termino de esto, se mostrara una ilustracin como la mostrada en la numero 5.

Se muestra el dispositivo con el cual se va a trabajar

Ilustracin ventana principal de un nuevo projecto

5- En la pantalla mostrada en la ilustracin anterior se da clic derecho sobre el dispositivo y se selecciona la opcin new module el cual llevara a la ventana mostrada en la ilustracin 6, en esta se selecciona las opciones marcadas para despus iniciar el editor en el cual se empezara a describir el cdigo de comportamiento de los flip-flop.

Ilustracin Ajustes necesarios para iniciar el editor de VHDL

Flip-flop Es un elemento de memoria utilizado indistintamente en el diseo de los sistemas sncronos o asncronos y tambin llamados celda binaria. La principal caracterstica de un flip-flop es mantener o almacenar un bit de manera indefinida hasta que a travs de un pulso o una seal cambie de estado en la ilustracin 7 se muestra la tabla de verdad que describe el comportamiento de los 4 principales flip-flop.

Ilustracin Flip flop y tabla de verdad

A continuacin se muestra el cdigo en VHDL que describe el comportamiento de los flip-flop: Cdigo en VHDL del flip flop tipo D
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity TIPOD is Port ( D : in STD_LOGIC; CLK : in STD_LOGIC; UP : IN STD_LOGIC; Q : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0); Q2 : INOUT STD_LOGIC_VECTOR (25 DOWNTO 0); Q1 : out STD_LOGIC); end TIPOD; architecture Behavioral of TIPOD is begin PROCESS (UP,CLK) BEGIN IF (CLK' EVENT AND CLK = '1') THEN IF (UP ='0') THEN Q2 <= Q2+1; ELSE

Q2 <= Q2-1; END IF; END IF; END PROCESS; PROCESS (UP,Q2(23)) BEGIN IF (Q2(23)' EVENT AND Q2(23) ='1') THEN IF (UP ='0') THEN Q <= Q+1; ELSE Q <= Q-1; END IF; END IF; END PROCESS; PROCESS (Q(3),D) BEGIN IF (Q(3)' EVENT AND Q(3)='1') THEN Q1 <= D; END IF; END PROCESS; end Behavioral;

Cdigo en VHDL del flip flop tipo J/K


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity FLIPJK is Port ( J : in STD_LOGIC; K : in STD_LOGIC; CLK : in STD_LOGIC; UP : IN STD_LOGIC; Q1 : INOUT STD_LOGIC; Q : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0); Q2 : INOUT STD_LOGIC_VECTOR (25 DOWNTO 0); QN : INOUT STD_LOGIC); end FLIPJK; architecture Behavioral of FLIPJK is begin PROCESS (UP,CLK) BEGIN IF (CLK' EVENT AND CLK = '1') THEN IF (UP ='0') THEN Q2 <= Q2+1; ELSE Q2 <= Q2-1; END IF; END IF; END PROCESS; PROCESS (UP,Q2(23)) BEGIN IF (Q2(23)' EVENT AND Q2(23) ='1') THEN IF (UP ='0') THEN Q <= Q+1; ELSE Q <= Q-1; END IF; END IF;

END PROCESS; PROCESS (Q(3),J,K) BEGIN IF (Q(3)' EVENT AND Q(3)='1') THEN IF (J = '0' AND K = '0') THEN Q1 <= Q1; QN <= QN; ELSIF (J = '0' AND K = '1') THEN Q1 <='1'; QN <='0'; ELSIF (J='1' AND K='0') THEN Q1 <= '0'; QN <= '1'; ELSIF (J='1' AND K='1') THEN Q1 <=NOT Q1; QN <=NOT QN; END IF; END IF; END PROCESS; end Behavioral;

Cdigo en VHDL del flip flop tipo R/S


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity TIPOD is Port ( S : in STD_LOGIC; R : in STD_LOGIC; CLK : in STD_LOGIC; UP : IN STD_LOGIC; Q1 : INOUT STD_LOGIC; Q : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0); Q2 : INOUT STD_LOGIC_VECTOR (25 DOWNTO 0); Q0 : INOUT STD_LOGIC); end TIPOD; architecture Behavioral of TIPOD is begin PROCESS (UP,CLK) BEGIN IF (CLK' EVENT AND CLK = '1') THEN IF (UP ='0') THEN Q2 <= Q2+1; ELSE Q2 <= Q2-1; END IF; END IF; END PROCESS; PROCESS (UP,Q2(23)) BEGIN IF (Q2(23)' EVENT AND Q2(23) ='1') THEN IF (UP ='0') THEN Q <= Q+1; ELSE Q <= Q-1; END IF; END IF; END PROCESS;

PROCESS (Q(3),S,R) BEGIN IF (Q(3)' EVENT AND Q(3)='1') THEN IF (S = '0' AND R = '1') THEN Q0 <= '0'; Q1 <= '1'; ELSIF (S = '1' AND R = '0') THEN Q0 <='1'; Q1 <='0'; ELSIF (S='0' AND R='0') THEN Q0 <= Q0; Q1 <= Q1; ELSE Q0 <= '-'; Q1 <= '-'; END IF; END IF; END PROCESS; end Behavioral;

Cdigo en VHDL del flip flop tipo T


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity TIPOT is Port ( T : in STD_LOGIC; CLK : in STD_LOGIC; UP : IN STD_LOGIC; Q1 : INOUT STD_LOGIC; Q : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0); Q2 : INOUT STD_LOGIC_VECTOR (25 DOWNTO 0); QN : INOUT STD_LOGIC); end TIPOT; architecture Behavioral of TIPOT is begin PROCESS (UP,CLK) BEGIN IF (CLK' EVENT AND CLK = '1') THEN IF (UP ='0') THEN Q2 <= Q2+1; ELSE Q2 <= Q2-1; END IF; END IF; END PROCESS; PROCESS (UP,Q2(23)) BEGIN IF (Q2(23)' EVENT AND Q2(23) ='1') THEN IF (UP ='0') THEN Q <= Q+1; ELSE Q <= Q-1; END IF; END IF; END PROCESS; PROCESS (Q(3),T) BEGIN IF (Q(3)='1' AND Q(3)'EVENT) THEN

IF (T='1') THEN Q1 <= NOT Q1; QN <= NOT Q1 AFTER 0.5ns; ELSE Q1 <= Q1; QN <= NOT Q1 AFTER 0.5ns; END IF; END IF; END PROCESS; end Behavioral;

Despus de realizar los cdigos se debe proceder a ver errores de sintaxis y direccionar las variables utilizadas para ser usadas en las salidas y entradas del FPGA, para ello se utilizan las funciones mostradas en la ilustracin 8.

Se selecciona la opcin marcada para abrir el editor de direcciones necesarias para ser implementadas en el dispositivo.
Para poder colocar las direcciones se deber seleccionar esta opcin he inmediatamente despus cerrar el programa que ser abierto automticamente e inmediatamente se deber dar clic sobre la extensin .ucf mostrado en la ilustracin 9

Ilustracin Opciones disponibles para ver errores de sintaxis, y generar las direcciones del FPGA y el programa a implementar

Ilustracin Ventana de edicin de direcciones cargadas al FPGA

En la figura 9 se muestra el editor de direcciones las cuales debern ser copiadas dela hoja de datos del dispositivo a utilizar, al termino se compilara el cdigo y direcciones, igualmente generar la extensin que ser programada. A continuacin se muestra el FPGA utilizado

Para aclara los puntos anteriores dirigirse a la hoja de datos del dispositivo Spartan-3E Starter Kit Board User Guide

D P A J

También podría gustarte