📄 main1.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity main1 is
port(onoff :in std_logic;--开关
crin :in std_logic_vector(2 downto 0);--100 my plane dye; 010 my plane eat bullet; 001 kill one enemy;
rest :in std_logic;--剩余的我方飞机
isfour :in std_logic;--是否躲过一个飞机
check_level1 :in std_logic_vector(1 downto 0);--00 nothing 01 level add 10 win
check_level2 :in std_logic_vector(1 downto 0);--同上
clk :in std_logic;--时钟
kill :out std_logic;--杀死一个敌人
--rst_sys :out std_logic;--系统复位
analize :out std_logic;--初始化
j_analize :out std_logic;--局初始化
bullet_add :out std_logic;--加子弹
score_add:out std_logic;--加分
bullet_jian :out std_logic;--子弹减
move_en :out std_logic;--移动
rest_jian :out std_logic;--剩余减
level_add :out std_logic;--升级
en :out std_logic_vector(1 downto 0));--显示使能00 正常; 01 被撞;10 结束; 11 胜利
end main1;
architecture behave of main1 is
signal present_state,next_state :std_logic_vector(3 downto 0);
begin
process(present_state,onoff)
begin
if(onoff='0')then--还没开始
next_state<="0000";
else
case present_state is
when "0001"=>next_state<="0010"; --analize
when "0010"=>next_state<="0011"; --mei ju analize
when "0011"=>next_state<="0111"; --move
when "0111"=>case check_level1 is--check
when "00"=>next_state<="1111";
when "01"=>next_state<="0010";
when "10"=>next_state<="1001";
when others=>next_state<="1111";
end case;
when "1111"=>
case crin is---check
when "100"=>next_state<="0100";
when"010"=>next_state<="0101";
when "001"=>next_state<="0110";
when others=>next_state<="0011";
end case; --是否 add score
when "0100"=>if(rest='0')then--bei zhuang
next_state<="1000";
else next_state<="0011";
end if;
when "0101"=>next_state<="0011";--eat bullet
when "0110"=>case check_level2 is--kill enemy
when "00"=>next_state<="0011";
when "01"=>next_state<="0010";
when "10"=>next_state<="1001";
when others=>next_state<="0011";
end case;
when others=>next_state<="0011";
end case ;
end if;
end process;
process(clk)
begin
if(rising_edge(clk))then
present_state<=next_state;
end if;
end process;
process(present_state)
begin
case present_state is
when"0001"=>kill<='0';
analize<='1';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
score_add<='0';
move_en<='0';
rest_jian<='0';
level_add<='0';
en<="00";
when"0010"=>kill<='0';--analize
analize<='0';
j_analize<='1';
bullet_add<='0';
bullet_jian<='0';
score_add<='0';
move_en<='0';
rest_jian<='0';
level_add<='0';
en<="00";
when "0011"=>kill<='0';--move
analize<='0';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='1';
score_add<='0';
rest_jian<='0';
level_add<='0';
en<="00";
when "0111"=>if(isfour='1')then
if(check_level1="10")then
level_add<='1';
else
level_add<='0';
end if;
-- else score_add<='0';
end if;
kill<='0';
analize<='0';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='0';
rest_jian<='0';
en<="00";
when "0100"=>kill<='0';
analize<='0';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='0';
rest_jian<='1';
level_add<='0';
en<="01";
when "0101"=>kill<='0';
analize<='0';
j_analize<='0';
bullet_add<='1';
bullet_jian<='0';
move_en<='0';
rest_jian<='0';
level_add<='0';
en<="00";
when "0110"=>kill<='1';
analize<='0';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='0';
rest_jian<='0';
score_add<='1';
if(check_level2="10")then
level_add<='1';
else
level_add<='0';
end if;
en<="00";
when "1000"=>kill<='0';
analize<='1';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='0';
rest_jian<='0';
score_add<='0';
level_add<='0';
en<="10";
when "1001"=>kill<='0';
analize<='1';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='0';
rest_jian<='0';
score_add<='0';
level_add<='0';
en<="11";
when others=>kill<='0';
analize<='0';
j_analize<='0';
bullet_add<='0';
bullet_jian<='0';
move_en<='0';
level_add<='0';
rest_jian<='0';
score_add<='0';
en<="00";
end case;
end process;
end behave;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -