⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuequ.vhd

📁 乐曲发生的程序设计,正确,是我们老师给我们的,大家看看吧
💻 VHD
📖 第 1 页 / 共 2 页
字号:
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 + -