Professional Documents
Culture Documents
Práctica 5 Electrónica Horandy
Práctica 5 Electrónica Horandy
Tema:
Nombre
Horandy Isaac
ID:1104559
1- Se necesita un circuito que indique si la cantidad de bits suministrados es par o impar. Los bits son
suministrados serialmente (1 a la vez) y la cantidad de bits es variable. Diseñe una máquina de estado
(Moore) que indica si la cadena de bits suministrados es par o impar. Dibuje el diagrama de estados e
implemente el código en VHDL(solo existe una entrada A y una salida llamada PAR, que indica que la
cantidad de bits recibidos son par).
-- testbench
library IEEE;
use IEEE.STD_LOGIC_1164.all;
USE IEEE.STD_LOGIC_ARITH.ALL;
use ieee.std_logic_unsigned.all;
ENTITY testbench IS
END ENTITY testbench;
component stateM IS
PORT (clock: IN std_logic;
Reset: IN std_logic;
A: IN std_logic;
cant_bits: OUT integer;
PAR: OUT std_logic);
end component;
BEGIN
----------------------------------------
-- CLOCK GENERATOR
Clock_gen: process
begin
while not Stop loop
clock_in <= '0';
wait for Period/2;
clock_in <= '1';
wait for Period/2;
end loop;
wait;
end process Clock_gen;
----------------------------------------
Stimulus: process
VARIABLE bits: integer:= -1;
begin
Reset_in <= '1';
A_in <= '1';
wait for Period;
-- Design
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
use ieee.std_logic_unsigned.all;
ENTITY stateM IS
PORT (clock: IN std_logic; --Señal de Reloj.
Reset: IN std_logic; -- Señal de Reset.
A: IN std_logic; --Señal de Carga
cant_bits: OUT integer;
PAR: OUT std_logic);--Señal Salida
END stateM;
END IF;
END PROCESS;
END Behavioral;
2- Analice el siguiente diagrama de estados e indique que función secuencial está realizando (los valores de
salida están mostrados dentro de cada estado).
El diagrama de estado es una maquina de estado moore. Y su funcionamiento es desplazar los valores entre
3 bits, por la izquierda entra el valor de la entrada desplazando los demás valores hacia la derecha y el
valor que queda más a la derecha queda eliminado.
3- Diseñe una máquina de estado (Moore) para un contador de 0 a 9 (del 9 pasa al 0). Dibuje el diagrama de
estados e implemente el código en VHDL.
-- testbench
library IEEE;
use IEEE.STD_LOGIC_1164.all;
ENTITY testbench IS
END ENTITY testbench;
component stateM IS
PORT (clock: IN std_logic;
Reset: IN std_logic;
X: IN std_logic;
S: OUT integer);
end component;
BEGIN
----------------------------------------
-- CLOCK GENERATOR
Clock_gen: process
begin
while not Stop loop
clock_in <= '0';
wait for Period/2;
clock_in <= '1';
wait for Period/2;
end loop;
wait;
end process Clock_gen;
----------------------------------------
Stimulus: process
begin
Reset_in <= '1';
X_in <= '1';
wait for Period;
-- Design
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY stateM IS
PORT (clock: IN std_logic; --Señal de Reloj.
Reset: IN std_logic; -- Señal de Reset.
X: IN std_logic; --Señales de Carga
S: OUT integer); --Señal Salida
END stateM;
ARCHITECTURE Behavioral OF stateM IS
TYPE state_type is (I0,I1,I2,I3,I4,I5,I6,I7,I8,I9);
SIGNAL state: state_type;
BEGIN
END IF;
END PROCESS;
4- Implemente la máquina de estado del slide 30 de la presentación 6 que se encuentra en el aula virtual
e implemente su testbenchy analizar las señales de salida. Explicar cada parte del código.
4-
-- testbench
library IEEE;
use IEEE.STD_LOGIC_1164.all;
ENTITY testbench IS
END ENTITY testbench;
component stateM IS
PORT (clock: IN std_logic;
Reset: IN std_logic;
A, B, C: IN std_logic;
E, S: OUT std_logic);
end component;
BEGIN
----------------------------------------
-- CLOCK GENERATOR
Clock_gen: process
begin
while not Stop loop
clock_in <= '0';
wait for Period/2;
clock_in <= '1';
wait for Period/2;
end loop;
wait;
end process Clock_gen;
----------------------------------------
Stimulus: process
begin
Reset_in <= '1';
A_in <= '1';
B_in <= '1';
C_in <= '1';
wait for Period;
-- Design
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY stateM IS
PORT (clock: IN std_logic; --Señal de Reloj.
Reset: IN std_logic; -- Señal de Reset.
A, B, C: IN std_logic; --Señales de Carga
E, S: OUT std_logic); --Señales de Salida
END stateM;
END Behavioral;
Si analizamos el EPWave podemos darnos cuenta de que el circuito está simulando correctamente la máquina de estado, este
ejercicio se basó básicamente en crear el testbench para la máquina de estado del slide 30 de la ppt #6. Aunque no copie al detalle
el diseño de la ppt, al revisar mi diseño podrá darse cuenta de que es el mismo circuito, sólo que adapté una máquina de estado que
había hecho anteriormente al diagrama de estado de la ppt, para así poder manejar mejor el concepto.