Anda di halaman 1dari 11

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS FACULTAD DE INGENIERA ELECTRNICA ESCUELA DE INGENIERA ELECTRNICA

DISEO DIGITAL
LABORATORIO No2 ESTILO ALGORTMICO PARA EL DISEO E IMPLEMENTACIN DE CIRCUITOS COMBINACIONALES Y SECUENCIALES

Ing. Alfredo Granados Ly.

UNMSM FIEE

Diseo Digital

ESTILO ALGORITMICO El estilo algortmico describe el diseo del circuito o sistema digital de acuerdo a su comportamiento. Se basa en una sentencia concurrente llamada Process. La sentencia process permite describir secuencialmente el modo en que se calculan un conjunto de seales. Tiene las siguientes caractersticas: El cdigo de un proceso se ejecuta en tiempo de simulacin 0. Es el mtodo de descripcin de conductas ms verstil. Es el mtodo de descripcin ms cercano al modelo de simulacin y ms lejano del modelo de hardware. Conceptualmente es muy importante ya que el proceso de anlisis convierte el resto de sentencias concurrentes a un conjunto de procesos equivalentes. El nmero de procesos es fijo, slo cambia su estado: activo o suspendido. Inicialmente todos los procesos estn activos, conforme su cdigo se ejecuta se suspende, conforme la simulacin avanza alterna su estado entre activo o suspendido. Sintcticamente existen dos tipos: Procesos con lista de sensibilidad (cuyo cuerpo no puede contener sentencias wait) - Cada vez que hay un evento EN CUALQUIERA DE LAS SEALES de la lista, el proceso se activa. - Se ejecuta (en tiempo de simulacin 0) todo el cdigo contenido en el cuerpo del proceso. - El proceso se suspende. Sintaxis: [etiqueta:] process (lista de sensibilidad) [declaraciones] begin [sentencias secuenciales;] end process [etiqueta]; Procesos sin lista de sensibilidad (cuyo cuerpo puede contener sentencias wait). Se ejecuta (en tiempo de simulacin 0) hasta que se encuentre una sentencia wait El proceso se suspende. El proceso se vuelve a activar cuando la condicin de espera se satisfaga. Cuando la ejecucin alcanza el final del cuerpo del proceso, se contina ejecutando el cdigo por el principio.
Laboratorio No2

Ctedra: Ing. Alfredo Granados Ly

UNMSM FIEE

Diseo Digital

Un proceso sin lista de sensibilidad que no contenga sentencias wait, bloquea el simulador. Sintaxis: [etiqueta:] process [declaraciones] begin [sentencias secuenciales;] wait on lista de sensibilidad; end process [etiqueta];

Los procesos con lista de sensibilidad se usan comnmente para modelar HW a nivel de RT y lgico: - Con listas de sensibilidad completas para modelar hardware combinacional. - Con listas de sensibilidad parciales para modelar hardware secuencial. Los procesos sin listas de sensibilidad se usan comnmente para crear procesos de estmulo y de anlisis de respuesta de otras sentencias que si modelan HW. - Si se restringe el tipo de sentencias wait usadas, pueden utilizarse para modelar hardware a nivel algortmico . Para todo proceso con lista de sensibilidad existe un proceso sin ella equivalente Lo contrario no siempre es cierto. IMPLEMENTACION DE CIRCUITOS SECUENCIALES

Los elementos de memoria se implementan con la sentencia if, aprovechando el efecto memoria que tiene debido al no uso de la condicin else. Analicemos el siguiente cdigo VHDL: Process(A,B) begin If A=1 then Q <= B; else Q <= 0; end if; end process; Es la implementacin de una compuerta AND, se aprecia que si no se cumple la condicin de todas maneras debe haber una asignacin a la seal de salida.

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE

Diseo Digital

Ahora, volvamos a analizar el siguiente cdigo VHDL: Process(A,B) begin if A=1 then Q <= B; End if; End process; Es la implementacin correspondiente a un latch donde A realiza la funcin del habilitador y cuando se encuentre en nivel alto cualquier cambio de B har que se refleje directamente a la salida. Ahora, que pasa si A=0 y B cambia de valor, el Process se dispara pero como la condicin no se cumple no afecta a Q, memorizando de esta manera el valor que tena Q. Es importante notar que las dos entradas del circuito estn presentes en la lista sensible, esto har que cualquier cambio en A B har que todo el proceso se dispare. Ahora, analicemos el siguiente cdigo VHDL: Process(A) begin if A=1 then Q <= B; End if; End process; Es la implementacin de un Flip Flop que dispara por flanco de subida, donde la entrada A hace la funcin de la seal de reloj y cada vez que A cambie de valor slo en el flanco de subida har que Q tome el valor de B, memorizando el valor de Q bajo cualquier otra condicin. Note que las sentencias del proceso es igual a la implementacin anterior (latch), la diferencia est en las seales que aparecen en la lista sensible, que en el ltimo caso es sensible slo a la seal A. Implementacin de un 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 ff_d is Port (D: in std_logic; Clk: in std_logic; Q: out std_logic); End ff_d;

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE

Diseo Digital

Architecture algoritmo of ff_d is Begin Process(clk) Begin If clk=1 Q <= End if; End process; End algoritmo; Implementacin de un contador binario de 4 bits. Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all;

then D;

Entity contador is Port ( clk: in std_logic; q: buffer std_logic_vector (3 downto 0)); End contador; Architecture of algoritmo of contador is Begin Process(clk) begin if clk=1 and clkevent then q <= q + 1; end if; end process; end algoritmo; Implementacin de un contador binario de 4 bits con una seal clear asncrona y una seal up sncrona. Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity contador is Port ( clk: in std_logic; q: buffer std_logic_vector (3 downto 0); clear: in atd_logic; up: in std_logic); End contador; Architecture of algoritmo of contador Begin Process(clk,clear)

is

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE

Diseo Digital

Begin If clear = 1 then q <= 0000; elsif clk=1 and clkevent then if up=1 then q <= q + 1; else q <= q 1; end if; end if; end process; end algoritmo; Implemente, simule y explique el comportamiento de los siguientes circuitos en el Max-Plus II (con cuenta a presentar en el informe final).

1. Latch
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity flip_flop is Port ( d : in std_logic; clk : in std_logic; q : out std_logic); end flip_flop; architecture Behavioral of flip_flop is begin process(clk) begin if clk='1' then q <= d; end if; end process; end Behavioral;

2. Flip-Flop
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity flip_flop is Port ( d : in std_logic;

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE
clk : in std_logic; q : out std_logic); end flip_flop; architecture Behavioral of flip_flop is begin process(clk) begin if clk='1' and clk'event then q <= d; end if; end process; end Behavioral;

Diseo Digital

3. Flip-Flop con clear y preset asncronas.


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity flip_flop_cp is Port ( clear : in std_logic; preset : in std_logic; clk : in std_logic; d : in std_logic; q : out std_logic); end flip_flop_cp; architecture Behavioral of flip_flop_cp is begin process(clk,clear,preset) begin if clear='1' then q <='0'; elsif preset='1' then q <='1'; elsif clk='1' and clk'event then q <= d; end if; end process; end Behavioral;

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE

Diseo Digital

4. Registro de entrada/paralela-salida/paralela, carga y habilitador.


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity registro_pipo is Port ( data : in std_logic_vector(7 downto 0); load : in std_logic; clk : in std_logic; q : out std_logic_vector(7 downto 0)); end registro_pipo; architecture Behavioral of registro_pipo is begin process(clk,load) begin if clk='1' and clk'event then if load='1' then q <= data; end if; end if; end process; end Behavioral;

5. Contador binario con seal


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity contador is Port ( clk : in std_logic; q : buffer std_logic_vector(3 downto 0)); end contador;

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE

Diseo Digital

architecture Behavioral of contador is begin process(clk) begin if clk='1' and clk'event then q <= q + 1; end if; end process; end Behavioral;

Contador binario con variable


process(clk) variable contador: std_logic_vector(3 downto 0); begin if clk='1' and clk'event then contador := contador + 1; q <= contador; end if; end process;

6. Contador binario con clear y carga de datos en paralelo.


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity contador_clear_load is Port ( data : in std_logic_vector(3 downto 0); load : in std_logic; clear : in std_logic; clk : in std_logic; q : out std_logic_vector(3 downto 0)); end contador_clear_load; architecture Behavioral of contador_clear_load is begin process(data,load,clear,clk) variable contador: std_logic_vector(3 downto 0); begin

Ctedra: Ing. Alfredo Granados Ly

Laboratorio No2

UNMSM FIEE
if clear='1' then contador := "0000"; elsif load ='1' then contador := data; elsif clk='1' and clk'event then contador := contador + 1; end if; q <= contador; end process; end Behavioral;

Diseo Digital

7. Divisor de frecuencia de 50MHz a 1Hz


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity DIV_1HZ is Port ( clk : in std_logic; reloj : buffer std_logic); end DIV_1HZ; architecture Behavioral of DIV_1HZ is begin process(clk) variable cuenta: std_logic_vector(24 downto 0); begin if clk='1' and clk'event then cuenta:= cuenta+1; if cuenta = 25000000 then reloj <= not reloj; end if; end if; end process; end Behavioral;

Prolemas propuestos:
8. Implemente un contador con ENABLE y CLEAR que cuente de 0 a 5. 9. Implemente un contador con ENABLE y CLEAR que cuente de 4,7,0,1,5, 4,7,0,1,5, . 10. Implemente un divisor de frecuencia programable: Selector Fo 00 Fi / 2 01 Fi / 4 10 Fi / 8 11 Fi / 32 Donde: Fi: frecuencia de entrada. Fo: frecuencia de salida. 11. Implemente un contador con control de cuenta UP/DOWN de mdulo 8.

Ctedra: Ing. Alfredo Granados Ly

10

Laboratorio No2

UNMSM FIEE

Diseo Digital

12. Implemente el siguiente circuito:

Donde: f Donde la seal Y varia de frecuencia de manera peridica. As tenemos que durante 100ms genera una seal de 100KHz y durante el otro 100ms genera otra frecuencia de 300KHz, repitindose de esta manera. Se debe presentar el cdigo y las simulaciones correspondientes a los problemas propuestos.

Ctedra: Ing. Alfredo Granados Ly

11

Laboratorio No2

Anda mungkin juga menyukai