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

📄 0303830.txt

📁 音乐小程序
💻 TXT
字号:
library ieee;
use ieee.std_logic_1164.all;

entity songer is
port(
     CLK12MHZ : in std_logic;
       CLK8HZ : in std_logic;
        code1 :out integer range 0 to 15;
        HIGH1 :out std_logic;
       SPKOUT :out std_logic);
end ;

architecture one of songer is
  component notetabs
   port( clk:in std_logic;
         toneindex:out integer range 0 to 15);
  end component;
  component tonetaba

   port( index:in integer range 0 to 15;
         code:out integer range 0 to 15;
         high:out std_logic;        
         tone:out integer range 0 to 16#7ff#);
  end component;
  component speaker
   port( clk  : in std_logic;
         tone : in integer range 0 to 16#7ff#;   --"2047";
         spks : out std_logic);
  end component;
signal tone : integer range 0 to 16#7ff#;
signal toneindex : integer range 0 to 15;
begin
u1:notetabs port map (clk=>CLK8HZ,toneindex=>toneindex);
u2:tonetaba port map (index=>toneindex,tone=>tone,             
                           code=>code1,high=>HIGH1);
u3:speaker port map (clk=>CLK12MHZ,tone=>tone,spks=>SPKOUT);
end;

library ieee;
use ieee.std_logic_1164.all;

entity tonetaba is
port(
     index :  in integer range 0 to 15;
     code  : out integer range 0 to 15;
     high  : out std_logic;
     tone  : out integer range 0 to 16#7ff#);  --"2047";
end ;

architecture one of tonetaba is
begin
search:process(index)
begin
case index is
when 0=>tone<=2047;  code<=0; high<='0';
when 1=>tone<=773;   code<=1; high<='0';
when 2=>tone<=912;   code<=2; high<='0';
when 3=>tone<=1036;  code<=3; high<='0';
when 5=>tone<=1197;  code<=5; high<='0';
when 6=>tone<=1290;  code<=6; high<='0';
when 7=>tone<=1372;  code<=7; high<='0';
when 8=>tone<=1410;  code<=1; high<='1';
when 9=>tone<=1480;  code<=2; high<='1';
when 10=>tone<=1542; code<=3; high<='1';
when 12=>tone<=1622; code<=5; high<='1';
when 13=>tone<=1668; code<=6; high<='1';
when 15=>tone<=1728; code<=1; high<='1';
when others=>null;
end case;
end process;
end ;


library ieee;
use ieee.std_logic_1164.all;

entity speaker is
port( 
     clk  : in std_logic;
     tone : in integer range 0 to 16#7ff#;   --"2047";
     spks : out std_logic);
end ;

architecture one of speaker is
signal preclk : std_logic;
signal fullspks : std_logic;
begin
divideclk: process(clk)
variable count4 : integer range 0 to 15;
begin
preclk<='0';
if count4>11 then
preclk<='1';
count4:=0;
elsif clk'event and clk='1' then
count4:=count4+1;
end if;
end process;
genspks : process(preclk,tone)     --"preclk=1MHZ";
variable count11 : integer range 0 to 16#7ff#;   --"2047";
begin
if preclk'event and preclk='1' then
if count11=16#7ff# then   --b"111,1111,1111";
count11:=tone;
fullspks<='1';
else count11:=count11+1;
fullspks<='0';
end if;
end if;
end process;
delay: process(fullspks)     --"fullspks=488.2815HZ";
variable count2 : std_logic;
begin
if fullspks'event and fullspks='1' then
count2:=not count2;
if count2='1' then
spks<='1';
else
spks<='0';                  --"spks=244.14075HZ";
end if;
end if;
end process;
end ;


library ieee;
use ieee.std_logic_1164.all;

entity notetabs is
port(
     clk : in std_logic;
     toneindex : out integer range 0 to 15);
end ;

architecture one of notetabs is
signal counter : integer range 0 to 135;
begin
cnt8: process(clk)
begin
if counter=135 then
counter<=0;
elsif clk'event and clk='1' then
counter<=counter+1;
end if;
end process;
search : process(counter)
begin
case counter is
when 00=>toneindex<=5;
when 01=>toneindex<=10;
when 02=>toneindex<=9;
when 03=>toneindex<=9;
when 04=>toneindex<=9;
when 05=>toneindex<=10;
when 06=>toneindex<=9;
when 07=>toneindex<=10;
when 08=>toneindex<=9;
when 09=>toneindex<=10;
when 10=>toneindex<=9;
when 11=>toneindex<=9;
when 12=>toneindex<=10;
when 13=>toneindex<=10;
when 14=>toneindex<=12;
when 15=>toneindex<=8;
when 16=>toneindex<=8;
when 17=>toneindex<=8;
when 18=>toneindex<=5;
when 19=>toneindex<=6;
when 20=>toneindex<=7;
when 21=>toneindex<=8;
when 22=>toneindex<=7;
when 23=>toneindex<=8;
when 24=>toneindex<=7;
when 25=>toneindex<=8;
when 26=>toneindex<=7;
when 27=>toneindex<=8;
when 28=>toneindex<=7;
when 29=>toneindex<=8;
when 30=>toneindex<=10;
when 31=>toneindex<=10;
when 32=>toneindex<=6;
when 33=>toneindex<=6;
when 34=>toneindex<=6;
when 35=>toneindex<=6;
when 36=>toneindex<=5;
when 37=>toneindex<=6;
when 38=>toneindex<=7;
when 39=>toneindex<=8;
when 40=>toneindex<=7;
when 41=>toneindex<=9;
when 42=>toneindex<=8;
when 43=>toneindex<=8;
when 44=>toneindex<=5;
when 45=>toneindex<=5;
when 46=>toneindex<=6;
when 47=>toneindex<=7;
when 48=>toneindex<=8;
when 49=>toneindex<=9;
when 50=>toneindex<=8;
when 51=>toneindex<=8;
when 52=>toneindex<=8;
when 53=>toneindex<=6;
when 54=>toneindex<=7;
when 55=>toneindex<=8;
when 56=>toneindex<=5;
when 57=>toneindex<=8;
when 58=>toneindex<=6;
when 59=>toneindex<=6;
when 60=>toneindex<=10;
when 61=>toneindex<=10;
when 62=>toneindex<=11;
when 63=>toneindex<=11;
when 64=>toneindex<=10;
when 65=>toneindex<=10;
when 66=>toneindex<=9;
when 67=>toneindex<=9;
when 68=>toneindex<=9;
when 69=>toneindex<=10;
when 70=>toneindex<=9;
when 71=>toneindex<=10;
when 72=>toneindex<=9;
when 73=>toneindex<=10;
when 74=>toneindex<=9;
when 75=>toneindex<=9;
when 76=>toneindex<=10;
when 77=>toneindex<=10;
when 78=>toneindex<=12;
when 79=>toneindex<=8;
when 80=>toneindex<=8;
when 81=>toneindex<=8;
when 82=>toneindex<=5;
when 83=>toneindex<=6;
when 84=>toneindex<=7;
when 85=>toneindex<=8;
when 86=>toneindex<=7;
when 87=>toneindex<=8;
when 88=>toneindex<=7;
when 89=>toneindex<=8;
when 90=>toneindex<=7;
when 91=>toneindex<=8;
when 92=>toneindex<=7;
when 93=>toneindex<=8;
when 94=>toneindex<=10;
when 95=>toneindex<=10;
when 96=>toneindex<=6;
when 97=>toneindex<=6;
when 98=>toneindex<=6;
when 99=>toneindex<=6;
when 100=>toneindex<=5;
when 101=>toneindex<=6;
when 102=>toneindex<=7;
when 103=>toneindex<=8;
when 104=>toneindex<=7;
when 105=>toneindex<=9;
when 106=>toneindex<=8;
when 107=>toneindex<=8;
when 108=>toneindex<=5;
when 109=>toneindex<=5;
when 110=>toneindex<=6;
when 111=>toneindex<=7;
when 112=>toneindex<=10;
when 113=>toneindex<=9;
when 114=>toneindex<=8;
when 115=>toneindex<=8;
when 116=>toneindex<=8;
when 117=>toneindex<=6;
when 118=>toneindex<=7;
when 119=>toneindex<=8;
when 120=>toneindex<=6;
when 121=>toneindex<=10;
when 122=>toneindex<=10;
when 123=>toneindex<=10;
when 124=>toneindex<=11;
when 125=>toneindex<=10;
when 126=>toneindex<=9;
when 127=>toneindex<=9;
when 128=>toneindex<=9;
when 129=>toneindex<=9;
when 130=>toneindex<=9;
when 131=>toneindex<=9;
when 132=>toneindex<=9;
when 133=>toneindex<=9;
when 134=>toneindex<=9;
when 135=>toneindex<=9;
when 136=>toneindex<=9;
when 137=>toneindex<=5;
when 138=>toneindex<=9;
when 139=>toneindex<=9;
when 140=>toneindex<=7;
when 141=>toneindex<=7;
when 142=>toneindex<=8;
when 143=>toneindex<=8;
when 144=>toneindex<=8;
when others=>null;
end case;
end process;
end ;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -