📄 yuequ.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
entity yuequ is
port(clk:in std_logic;
selected:in std_logic_vector(0 to 1);
reset:in std_logic;
q:out integer range 0 to 5102);
end;
architecture yuequb of yuequ is
begin
process(clk,selected,reset)
variable cn1:integer range 0 to 2000000:=0 ;
variable cn2:integer range 0 to 15;
variable m:integer range 0 to 55;
variable n:integer range 0 to 1:=0 ;
variable k:integer range 0 to 37;
variable j:integer range 0 to 48;
variable h:integer range 0 to 48;
begin
--yuequ1:城里的月光(1)
if clk'event and clk='1' then
if reset='1' and selected="00" then
if cn1<1500000 then
cn1:=cn1+1;
else
cn1:=0;
case m is
when 0=>q<=0;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=1;
end if;
when 1=>q<=2545;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=2;
end if;
when 2=>q<=2545;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=3;
end if;
when 3=>q<=2545;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=4;
end if;
when 4=>q<=2545;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
m:=5;
end if;
when 5=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=6;
end if;
when 6=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=7;
end if;
when 7=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=8;
end if;
when 8=>q<=3030;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
m:=9;
end if;
when 9=>q<=3817;
if cn2<9 then
cn2:=cn2+1;
else
cn2:=0;
m:=10;
end if;
when 10=>q<=0;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=11;
end if;
when 11=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=12;
end if;
when 12=>q<=4525;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=13;
end if;
when 13=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=14;
end if;
when 14=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=15;
end if;
when 15=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=16;
end if;
when 16=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=17;
end if;
when 17=>q<=4525;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
if n=0 then
m:=18;
n:=n+1;
else
m:=19;
end if;
end if;
when 18=>q<=5102;
if cn2<13 then
cn2:=cn2+1;
else
cn2:=0;
m:=19;
end if;
when 19=>q<=3401;
if cn2<13 then
cn2:=cn2+1;
else
cn2:=0;
m:=20;
end if;
-- di er bu feng
when 20=>q<=0;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=21;
end if;
when 21=>q<=4525;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=22;
end if;
when 22=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=23;
end if;
when 23=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=24;
end if;
when 24=>q<=3817;
if cn2<5 then
cn2:=cn2+1;
else
cn2:=0;
m:=25;
end if;
when 25=>q<=3401;
if cn2<2 then
cn2:=cn2+1;
else
cn2:=0;
m:=26;
end if;
when 26=>q<=3030;
if cn2<2 then
cn2:=cn2+1;
else
cn2:=0;
m:=27;
end if;
when 27=>q<=3030;
if cn2<5 then
cn2:=cn2+1;
else
cn2:=0;
m:=28;
end if;
when 28=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=29;
end if;
when 29=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=30;
end if;
when 30=>q<=2857;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=31;
end if;
when 31=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=32;
end if;
when 32=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=33;
end if;
when 33=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=34;
end if;
when 34=>q<=3817;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
m:=35;
end if;
when 35=>q<=4525;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
m:=36;
end if;
when 36=>q<=3030;
if cn2<15 then
cn2:=cn2+1;
else
cn2:=0;
m:=37;
end if;
when 37=>q<=0;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=38;
end if;
when 38=>q<=4525;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=39;
end if;
when 39=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=40;
end if;
when 40=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=41;
end if;
when 41=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=42;
end if;
when 42=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=43;
end if;
when 43=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=44;
end if;
when 44=>q<=3401;
if cn2<2 then
cn2:=cn2+1;
else
cn2:=0;
m:=45;
end if;
when 45=>q<=3030;
if cn2<2 then
cn2:=cn2+1;
else
cn2:=0;
m:=46;
end if;
when 46=>q<=3030;
if cn2<5 then
cn2:=cn2+1;
else
cn2:=0;
m:=47;
end if;
when 47=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=48;
end if;
when 48=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=49;
end if;
when 49=>q<=2857;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=50;
end if;
when 50=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=51;
end if;
when 51=>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=52;
end if;
when 52=>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
m:=53;
end if;
when 53=>q<=3817;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
m:=54;
end if;
when 54=>q<=4525;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
m:=55;
end if;
when 55=>q<=2545;
if cn2<13 then
cn2:=cn2+1;
else
cn2:=0;
m:=0;
end if;
end case;
end if;
--yuequ2:莫斯科郊外的晚上
elsif reset='1' and selected="01" then
if cn1<2000000 then
cn1:=cn1+1;
else
cn1:=0;
case k is
when 0=>q<=4525;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=1;
end if;
when 1 => q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=2;
end if;
when 2 =>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=3;
end if;
when 3 =>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=4;
end if;
when 4 =>q<=3401;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=5;
end if;
when 5 =>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=6;
end if;
when 6 =>q<=4032;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=7;
end if;
when 7 =>q<=3030;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=8;
end if;
when 8 =>q<=3401;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=9;
end if;
when 9 =>q<=4525;
if cn2<7 then
cn2:=cn2+1;
else
cn2:=0;
k:=10;
end if;
when 10 =>q<=3817;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=11;
end if;
when 11 =>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=12;
end if;
when 12 =>q<=2545;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=13;
end if;
when 13 =>q<=2268;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=14;
end if;
when 14 =>q<=2545;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=15;
end if;
when 15 =>q<=2857;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=16;
end if;
when 16 =>q<=3030;
if cn2<7 then
cn2:=cn2+1;
else
cn2:=0;
k:=17;
end if;
when 17 =>q<=2857;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=18;
end if;
when 18 =>q<=2545;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=19;
end if;
when 19 =>q<=2016;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=20;
end if;
when 20 =>q<=2268;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=21;
end if;
when 21 =>q<=3030;
if cn2<5 then
cn2:=cn2+1;
else
cn2:=0;
k:=22;
end if;
when 22 =>q<=4032;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=23;
end if;
when 23 =>q<=4525;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=24;
end if;
when 24 =>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=25;
end if;
when 25 =>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=26;
end if;
when 26 =>q<=2857;
if cn2<5 then
cn2:=cn2+1;
else
cn2:=0;
k:=27;
end if;
when 27 =>q<=0;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=28;
end if;
when 28 =>q<=2545;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=29;
end if;
when 29 =>q<=2857;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=30;
end if;
when 30
=>q<=3030;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=31;
end if;
when 31 =>q<=3401;
if cn2<1 then
cn2:=cn2+1;
else
cn2:=0;
k:=32;
end if;
when 32 =>q<=3030;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=33;
end if;
when 33 =>q<=3401;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=34;
end if;
when 34 =>q<=4525;
if cn2<7 then
cn2:=cn2+1;
else
cn2:=0;
k:=35;
end if;
when 35 =>q<=4525;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
k:=36;
end if;
when 36 =>q<=0;
if cn2<3 then
cn2:=cn2+1;
else
cn2:=0;
if n=0 then
n:=1;
k:=17;
else
k:=37;
end if;
end if;
when 37 =>q<=2268;
if cn2<17 then
cn2:=cn2+1;
else
cn2:=0;
k:=0;
end if;
end case;
end if;
--yuequ3:站在高岗上
elsif reset='1' and selected="10" then
if cn1<1500000 then
cn1:=cn1+1;
else
cn1:=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -