📄 playandled.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY playandled IS
PORT(
clk: IN STD_LOGIC;
playr: IN STD_LOGIC;
playl: IN STD_LOGIC;
judge: IN STD_LOGIC;
led: OUT STD_LOGIC_VECTOR(9 DOWNTO 1);
playrloss:OUT STD_LOGIC;
playlloss:OUT STD_LOGIC
);
END ENTITY;
----------------------------------------------
--LB987654321RB-------------------------------
----------------------------------------------
ARCHITECTURE behave OF playandled IS
TYPE STATE IS(s9r,s8r,s7r,s6r,s5r,s4r,s3r,s2r,s1r,s9l,s8l,s7l,s6l,s5l,s4l,s3l,s2l,s1l,rloss,lloss,rb,lb,nop);
SIGNAL ps:STATE;
SIGNAL ns:STATE;
BEGIN
clock:PROCESS(clk)
BEGIN
IF(clk'EVENT AND clk='1')THEN
ps<=ns;
END IF;
END PROCESS clock;
---------------------------------
---------------------------------
statemachine:PROCESS(ps,playr,playl,judge)
BEGIN
IF(ps=lb)THEN
IF(judge='0')THEN
ns<=rb;
ELSIF(playl='0')THEN
ns<=s9r;
ELSE
ns<=ps;
END IF;
ELSIF(ps=rb)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='0')THEN
ns<=s1l;
ELSE
ns<=ps;
END IF;
ELSIF(ps=s9r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s8r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s8r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s7r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s7r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s6r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s6r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s5r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s5r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s4r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s4r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s3r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s3r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s2r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s2r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=s1r;
ELSE
ns<=rloss;
END IF;
ELSIF(ps=s1r)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playr='1')THEN
ns<=rloss;
ELSE
ns<=s2l;
END IF;
ELSIF(ps=s1l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s2l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s2l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s3l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s3l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s4l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s4l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s5l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s5l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s6l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s6l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s7l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s7l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s8l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s8l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=s9l;
ELSE
ns<=lloss;
END IF;
ELSIF(ps=s9l)THEN
IF(judge='0')THEN
ns<=lb;
ELSIF(playl='1')THEN
ns<=lloss;
ELSE
ns<=s8r;
END IF;
ELSIF(ps=rloss)THEN
IF(judge='0')THEN
ns<=lb;
ELSE
ns<=nop;
END IF;
ELSIF(ps=lloss)THEN
IF(judge='0')THEN
ns<=lb;
ELSE
ns<=nop;
END IF;
ELSIF(ps=nop)THEN
IF(judge='0')THEN
ns<=lb;
ELSE
ns<=ps;
END IF;
END IF;
END PROCESS statemachine;
-------------------------------
-------------------------------
translate:PROCESS(ps)
BEGIN
CASE ps IS
WHEN rb=>led<="111111110";playlloss<='0';playrloss<='0';
WHEN lb=>led<="011111111";playlloss<='0';playrloss<='0';
WHEN s9r=>led<="011111111";playlloss<='0';playrloss<='0';
WHEN s8r=>led<="101111111";playlloss<='0';playrloss<='0';
WHEN s7r=>led<="110111111";playlloss<='0';playrloss<='0';
WHEN s6r=>led<="111011111";playlloss<='0';playrloss<='0';
WHEN s5r=>led<="111101111";playlloss<='0';playrloss<='0';
WHEN s4r=>led<="111110111";playlloss<='0';playrloss<='0';
WHEN s3r=>led<="111111011";playlloss<='0';playrloss<='0';
WHEN s2r=>led<="111111101";playlloss<='0';playrloss<='0';
WHEN s1r=>led<="111111110";playlloss<='0';playrloss<='0';
WHEN s1l=>led<="111111110";playlloss<='0';playrloss<='0';
WHEN s2l=>led<="111111101";playlloss<='0';playrloss<='0';
WHEN s3l=>led<="111111011";playlloss<='0';playrloss<='0';
WHEN s4l=>led<="111110111";playlloss<='0';playrloss<='0';
WHEN s5l=>led<="111101111";playlloss<='0';playrloss<='0';
WHEN s6l=>led<="111011111";playlloss<='0';playrloss<='0';
WHEN s7l=>led<="110111111";playlloss<='0';playrloss<='0';
WHEN s8l=>led<="101111111";playlloss<='0';playrloss<='0';
WHEN s9l=>led<="011111111";playlloss<='0';playrloss<='0';
WHEN lloss=>playlloss<='1';led<="111111111";
WHEN rloss=>playrloss<='1';led<="111111111";
WHEN nop=>led<="111101111";playlloss<='0';playrloss<='0';
WHEN OTHERS=>NULL;
END CASE;
END PROCESS translate;
--------------------------------
--------------------------------
END behave;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -