Está en la página 1de 3

Práctica: Implementar Juego de Piedra, Papel y Tijera

Por:
Rahnya Negron, 1098587
Axell Baez, 1100321
.
.
Experimento 3.1:
Implemente el juego de piedra, papel y tijera en VHDL utilizando los Switch como
las entradas de cada jugador y displays para representar las partidas ganadas por
cada jugador

Objetivos:
El objetivo en esta práctica será implementar en VHDL un juego de piedra, papel y
tijera, teniendo en cuenta que: a las 3 partidas ganadas se enciende el led
ganador, si hay empate no suma puntos a ningún jugador, los puntos acumulados
se representan en el display, y tenemos, por último, un botón de reset.

Procedimiento:
Primero es revisar el diagrama dado en clases, permitiendo un mayor
entendimiento de lo que hay que hacer. Esto es haciendo el código del
sumador/restador con ayuda con lo dado en clase y videos encontrados en
internet. Luego realizar el código del display de 7 segmentos facilitado en clases. Y
también realizar el código del juego, este mostrando las reglas y cuando un
ganador va a tener 1 como resultado. Por último, es juntar todos los archivos en el
testbench de la aplicación que usemos y nos dará un diagrama de ondas y un
diagrama grafico que nos enseña que si funciono.

Resultados:
CODIGO JUEGO
-- ppt-juego design
library IEEE;
use IEEE.std_logic_1164.all;

entity ppt_juego is
port(
pi1,pa1,ti1,pi2,pa2,ti2: in std_logic;
ganar_p1, ganar_p2: out std_logic;
empate: out std_logic);
end ppt_juego;

architecture rtl of ppt_juego is


begin
process(pi1,pa1,ti1,pi2,pa2,ti2) is
begin
ganar_p1<= "1" when (pi1="1" and ti2="1") else "1" when
(ti1="1" and pa2="1") else
"1" when (pa1="1" and pi2="1");

ganar_p2<= "1" when (pi2="1" and ti1="1") else "1" when


(ti2="1" and pa1="1") else
"1" when (pa2="1" and pi1="1");

empate <= "0" when (pi1 = "1" and pi2="1") else "0" when (pa1 =
"1" and pa2="1") else (ti1 = "1" and ti2="1");

end process;
end rtl;

CODIGO SUMADOR/RESTADOR
library IEEE;
use IEEE.std_logic_1164.all;

entity sum is
generic { m: natural:= 4);

port(
a,b: in std_logic_vector(m-1 downto 0);
cout: in std_logic;
resultado: out std_logic_vector(m-1 downto 0);
end sum;

architecture concurrente of sum is


signal c: std_logic_vector(m-1 downto 0):=(others=>"0");
begin
c(0)<=a(0) and b(0);
resultado(0)<=a(0) xor b(0):

sumador:
for i in 1 to m-1 generate
c(i)<= (a(i)andb(i)) or (a(i)and c(i-1)) or (b(i) and c(i-1));
resul(i) <= c (i-1) xor a(i) xor b(i);
end generate;

cout<= c(m-1);
end concurrente;
CODIGO DISPLAY 7SEGMENTOS
library IEEE;
use IEEE.std_logic_1164.all;

entity display_seg is
port(
entrada: in std_logic_vector(3 downto 0);

salida: out std_logic_vector(6 downto 0);


end display_seg;

architecture concurrente of display_seg is


begin
with entrada select

yout<= "1111110" when "0000",


"0110000" when "0001",
"1101101" when "0010",
"1111001" when "0011",
"0110011" when "0100",
"1011011" when "0101",
"1011111" when "0110",
"1110000" when "0111",
"1111111" when "1000",
"1110011" when "1001",
"1110111" when "1010",
"0011111" when "1011",
"1001110" when "1100",
"0111101" when "1101",
"1001111" when "1110",
"1000111" when others,

end concurrente;

Análisis:
Al finalizar la practica nos damos cuenta de que grandes partes de lo que se debía
haber realizado lo teníamos hecho, como por ejemplo el sumador que indica la
acumulación de jugadas ganadas de los jugadores, el display también hecho con
anterioridad. Y algo nuevo fue realizar el código del juego y el botón de reset.

También podría gustarte