Está en la página 1de 8

Reporte Prctica 5 Flip-flops y Registros

Gonzlez Mora Yair Miranda Cornejo Josu David Alejandro Arellano Cerna Rafael
Universidad de Guanajuato Salamanca, Mxico

I. OBJETIVO Realizar la descripcin y simulacin VHDL de los principales flip-flops y registros, y probar su funcionamiento en la plataforma de sntesis Altera DE-0. II. JUSTIFICACIN Comnmente se requiere una comprobacin de la descripcin de un circuito (lgico y/o secuencial) para confirmar el funcionamiento correcto antes de implementarlo dentro del FPGA. III. MARCO TERICO

A) Flip flop tipo D Primer paso: Elaboracin de la descripcin en Active del Flip flop tipo D con RST asncrono quedando de la siguiente manera: library ieee; use ieee.std_logic_1164.all; entity Flip_flop_d_RST is port( D : in std_logic; CLK : in std_logic; RST : in std_logic; Q : out std_logic ); end Flip_flop_d_RST; architecture Simple of Flip_flop_d_RST is begin process(CLK,RST) begin if (RST = '0') then Q <= '0'; elsif(CLK'event and CLK='1')then Q <= D; end if; end process; end Simple; Segundo paso: Simulacin de la descripcin anterior ingresando valores de seal para la entrada D de 8 MHz, la entraba CLK de 10

Un circuito flip-flop puede mantener un estado binario indefinidamente (Siempre y cuando se le est suministrando potencia al circuito) hasta que se cambie por una seal de entrada para cambiar estados. La principal diferencia entre varios tipos de flip-flops es el nmero de entradas que poseen y la manera en la cual las entradas afecten el estado binario.
III. MATERIAL Y EQUIPO Tabla I
CANTIDAD 1 1 1 1 DESCRIPCIN Computadora Software Active HDL Software Quartus II FPGA altera DE-0

IV. DESARROLLO Para desarrollar la prctica se siguieron los siguientes pasos:

MHz y la entrada RST de 6 MHz durante 1000 ns:

Figura 1. Simulacin Flip flop tipo D con RST asncrono. Obteniendo el correcto funcionamiento de la descripcin en VHDL de dicha compuerta. Tercer paso: Procedimos a realizar la sntesis en quartus II, asignando las entradas como se muestra en el mapa de fusibles:

Figura 3. Imgenes del Flip flop tipo D con RST asncrono implementado en el FPGA. B) Registro Paralelo Incondicional Elaboracin de la descripcin en Active del registro paralelo incondicional asncrono quedando de la siguiente manera: library IEEE; use ieee.std_logic_1164.all; -- registro paralelo incondicional entity registro_incondicional is generic(n: integer := 4 ); port( RST : in std_logic; CLK : in std_logic; D : in std_logic_vector(n-1 downto 0); Q : out std_logic_vector(n-1 downto 0)

Figura 2. Mapa de fusibles del Flip flop tipo D con RST asncrono.

); end registro_incondicional; architecture Simple of registro_incondicional is begin process(RST,CLK) begin if (RST = '0') then Q <= (others => '0'); elsif (CLK'event and CLK = '1')then Q <= D; end if; end process; end Simple;

entity Registro_nivel_n is generic( n : integer := 4 ); port( RST : in std_logic; CLK : in std_logic; H : in std_logic; D : in std_logic_vector(n-1 downto 0); Q : out std_logic_vector(n-1 downto 0) ); end Registro_nivel_n; architecture Simple of Registro_nivel_n is signal Qp,Qn : std_logic_vector(n-1 downto 0); begin process(Qp,H,D) begin if (H = '1') then Qn <= D; else Qn <= Qp; end if; Q <= Qp; end process; process(RST,CLK) begin if(RST = '0') then Qp <= (others => '0'); elsif(CLK'event and CLK ='1') then Qp <= Qn; end if; end process; end Simple; Segundo paso: Simulacin de la descripcin anterior ingresando valores de seal para la entrada RST de 3 MHz y la entraba CLK de 10 MHz, la entrada H de 20 MHz y la entrada D de 28 MHz durante 1000 ns:

Segundo paso: Simulacin de la descripcin anterior ingresando valores de seal para la entrada D de 30 MHz, la entraba CLK de 16 MHz y la entrada D de 30 MHz durante 400 ns obteniendo:

Figura 4. Simulacin Registro paralelo incondicional C) Registro Paralelo Condicional Primer paso: Elaboracin de la descripcin en Active del registro paralelo condicional quedando de la siguiente manera: library IEEE; use ieee.std_logic_1164.all; - registro paralelo condicional

Figura 5. Simulacin del Registro Paralelo Condicional Obteniendo el correcto funcionamiento de la descripcin en VHDL de dicha compuerta. Tercer paso: Procedimos a realizar la sntesis en quartus II, asignando las entradas como se muestra en el mapa de fusibles:

Figura 7. Imgenes del Registro Paralelo Condicional. D) Registro Serie-Paralelo desplazamiento a la izquierda condicional. Primer paso: Elaboracin de la descripcin en Active del registro quedando de la siguiente manera: library IEEE; use ieee.std_logic_1164.all; -- registro serie paralelo con desplazamiento de izq a derecha entity Registro_borde_n is port( RST : in std_logic; CLK : in std_logic; H : in std_logic; L : in std_logic; D : out std_logic_vector(3 downto 0) ); end Registro_borde_n; architecture Simple of Registro_borde_n is signal Qp,Qn : std_logic_vector(3 downto 0); begin D <= Qp; process(L,Qp,H)

Figura 6. Mapa de fusibles del Registro Paralelo Condicional.

begin if(H = '1') then Qn <= Qp; else Qn <= Qp(2 downto 0) & L; end if; end process; process(RST,CLK) begin if (RST = '1') then Qp <= "0000"; elsif (CLK'event and CLK = '1')then Qp <= Qn; end if; end process; end Simple; Segundo paso: Simulacin de la descripcin anterior ingresando valores de seal para la entrada RST de 1 MHz y la entraba CLK de 100 MHz, la entrada H de 50 MHz y la entrada D de 25 MHz durante 2000 ns::

Flip Flop tipo JK (disparo por flanco negativo) Flip flop tipo D (disparo por flanco negativo) Flip flop tipo T (disparo por flanco negativo/positivo). 2. Realice la descripcin y simulacin de un registro con desplazamiento a la derecha condicional de 4 bits. library IEEE; use IEEE.std_logic_1164.all; entity reg_cond_der is generic ( n: integer := 4 ); port ( RST, CLK, H: in std_logic; D: in std_logic; Q: out std_logic ); end reg_cond_der; architecture mat1 of reg_cond_der is signal Qp, Qn : std_logic_vector (n-1 downto 0); begin comb: process (Qp, D) begin Qn(n-1) <= D; Qn <= D & Qp(n-1 downto 1); Q <= Qp(0); end process comb; sec1: process (RST, CLK) begin if (RST='0') then Qp<= (others => '0'); elsif (CLK'event AND CLK='1') then Qp <= Qn; end if; end process sec1; sec2: process (H, CLK) begin if (H='1') then Qn(0) <= D; else Qn <= Qp; end if;

Figura 8. Simulacin del registro serieparalelo desplazamiento a la izquierda condicional Obteniendo el correcto funcionamiento de la descripcin de dicha compuerta. V. CUESTIONARIO. 1. Investigar los diferentes tipos de flip-flops, cuales son los ms utilizados y los diferentes tipos de disparo que manejan. Flip flop tipo RS (disparo por flanco negativo)

end process sec2; end mat1;

end Simple; Segundo paso: Simulacin de la descripcin anterior ingresando valores de seal para la entrada RST de 10 MHz y la entraba CLK de 100 MHz, la entrada R de 50 MHz y la entrada L de 25 MHz durante 200 ns:

3. Repita el problema 2 del cuestionario para un registro serie-paralelo con desplazamiento a la derecha condicional de 4 bits. Elaboracin de la descripcin en Active del registro serie-paralelo con desplazamiento a la derecha condicional quedando de la siguiente manera: library IEEE; use ieee.std_logic_1164.all; -- registro serie paralelo con desplazamiento de der a izq entity registro_sp_der is port( RST : in std_logic; CLK : in std_logic; R : in std_logic; L : in std_logic; D : out std_logic_vector(3 downto 0) ); end registro_sp_der; architecture Simple of registro_sp_der is signal Qp,Qn : std_logic_vector(3 downto 0); begin D <= Qp; process(L,Qp,R) begin if(R = '0') then Qn <= Qp; else Qn <= R & Qp(3 downto 1); end if; end process; process(RST,CLK) begin if (RST = '1') then Qp <= "0000"; elsif (CLK'event and CLK = '1')then Qp <= Qn; end if; end process;

Figura 9. Simulacin del registro serieparalelo con desplazamiento a la derecha condicional 4. Investigue cuales son las instrucciones de desplazamiento con registros dentro de un microprocesador. SAL/SHL (desplazamiento aritmtico a la izquierda) SAR (desplazamiento aritmtico a la derecha) SHR (desplazamiento lgico a la derecha) SHLD / SHRD: Desplazamiento de doble precisin a la izquierda/derecha ADD EAX,OFFSET gdt ; desplazamiento de GDT CX = Contador. Se utiliza comnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. En las instrucciones de desplazamiento y rotacin se utiliza como contador de 8 bits. SI = ndice fuente (source index). Utilizado como registro de ndice en ciertos modos de direccionamiento indirecto, tambin se emplea para guardar un valor de desplazamiento en operaciones de cadenas. DI = ndice destino (destination index). Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas. 5. Repita el problema 2 del cuestionario para un registro universal de 4 bits.

Primer paso: Elaboracin de la descripcin en Active del registro universal quedando de la siguiente manera: library ieee; use ieee.std_logic_1164.all; entity Registro_universal_n is generic( n: integer := 4 ); port( RST : in std_logic; CLK : in std_logic; R : in std_logic; L : in std_logic; D : in std_logic_vector(n-1 downto 0); OPC : in std_logic_vector(1 downto 0); QR : out std_logic; QL : out std_logic; Q : out std_logic_vector(n-1 downto 0) ); end Registro_universal_n; architecture Seleccion of Registro_universal_n is signal Qp,Qn : std_logic_vector(n-1 downto 0); begin Combinacional: process(Qp,OPC,R,L,D) begin case OPC is when "00" => Qn <= Qp; when "01" => Qn <= D; when "10" => Qn <= R & Qp(n-1 downto 1); when others => Qn <= Qp(n-2 downto 0) & L; end case; QR <= Qp(0); QL <= Qp(n-1); Q <= Qp; end process Combinacional;

Secuencial: process(RST,CLK) begin if(RST = '0') then Qp <= (others => '0'); elsif (CLK'event and CLK ='1') then Qp <= Qn; end if; end process Secuencial; end Seleccion; Segundo paso: Simulacin de la descripcin anterior ingresando valores de seal para la entrada RST de 10 MHz y la entraba CLK de 60 MHz, la entrada R de 30 MHz y la entrada L y D de 40 MHz, por ultimo OPC(0) de 40 MHz y OPC(1) de 15 MHz durante 340 ns:

Figura 10. Simulacin del registro universal.

VI. CONCLUSIONES: Gonzlez Mora Yair: Esta prctica se nos complico mas de la cuenta por los errores de sintaxis al realizar la descripcin de los flip flops y los registros, tambin se nos dificulto interpretar los resultados de las simulaciones, con respecto a la sintonizacin de las descripciones en la FPGA no tuvimos problema alguno.

Miranda Cornejo Josu David Alejandro: Mediante esta practica se pudo observar el comportamiento de los registros, es decir su funcionamiento dependiendo de las condiciones como habilitacin, desplazamiento y o rotacin. Arellano Cerna Rafael: En esta practica sintetizamos flips flops y registros sencillos de 4 bits aunque por ser la primera vez que trabajamos con estos circuitos en la FPGA nos cost un poco se trabajo a la hora de hacer el cdigo y corregir los tpicos errores de sintaxis que nunca faltan de all en mas todo estuvo muy bien y claramente comprendido.

También podría gustarte