📄 0303830.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 + -