📄 music.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY tone IS
PORT(clk:IN STD_LOGIC;
q:OUT INTEGER RANGE 0 TO 16#3FFF#);
--14位二进制数
END tone;
ARCHITECTURE rtl OF tone IS
CONSTANT low_6:INTEGER:=6817;
CONSTANT low_7:INTEGER:=6073;
CONSTANT mid_1:INTEGER:=5732;
CONSTANT mid_2:INTEGER:=5107;
CONSTANT mid_3:INTEGER:=4550;
CONSTANT mid_4:INTEGER:=4294;
CONSTANT mid_5:INTEGER:=3826;
CONSTANT mid_6:INTEGER:=3408;
CONSTANT mid_7:INTEGER:=3036;
CONSTANT stop:INTEGER:=0;
--休止符分频系数
SIGNAL count:INTEGER RANGE 0 to 192;
BEGIN
PROCESS(clk)
BEGIN
IF count=192 THEN count<=0;
ELSIF(clk'EVENT AND clk='1')THEN
count<=count+1;
END IF;
END PROCESS;
PROCESS(count)
BEGIN
CASE count IS
WHEN 00=>q<=mid_3; --低音3
WHEN 01=>q<=mid_3;
WHEN 02=>q<=mid_6;
WHEN 03=>q<=mid_6;
WHEN 04=>q<=mid_5;
WHEN 05=>q<=mid_5;
WHEN 06=>q<=mid_4;
WHEN 07=>q<=mid_4;
WHEN 08=>q<=mid_3;
WHEN 09=>q<=mid_3;
WHEN 10=>q<=mid_2;
WHEN 11=>q<=mid_2;
WHEN 12=>q<=mid_3;
WHEN 13=>q<=mid_3;
WHEN 14=>q<=mid_3;
WHEN 15=>q<=mid_3;
WHEN 16=>q<=mid_3;
WHEN 17=>q<=mid_3;
WHEN 18=>q<=mid_3;
WHEN 19=>q<=mid_3;
WHEN 20=>q<=stop;
WHEN 21=>q<=stop;
WHEN 22=>q<=mid_4;
WHEN 23=>q<=mid_4;
WHEN 24=>q<=mid_5;
WHEN 25=>q<=mid_5;
WHEN 26=>q<=mid_4;
WHEN 27=>q<=mid_4;
WHEN 28=>q<=mid_3;
WHEN 29=>q<=mid_3;
WHEN 30=>q<=mid_1;
WHEN 31=>q<=mid_1;
WHEN 32=>q<=mid_2;
WHEN 33=>q<=mid_2;
WHEN 34=>q<=mid_3;
WHEN 35=>q<=mid_3;
WHEN 36=>q<=low_6;
WHEN 37=>q<=low_6;
WHEN 38=>q<=low_6;
WHEN 39=>q<=low_6;
WHEN 40=>q<=low_6;
WHEN 41=>q<=low_6;
WHEN 42=>q<=low_6;
WHEN 43=>q<=low_6;
WHEN 44=>q<=stop;
WHEN 45=>q<=stop;
WHEN 46=>q<=stop;
WHEN 47=>q<=stop;
WHEN 48=>q<=mid_2;
WHEN 49=>q<=mid_2;
WHEN 50=>q<=mid_2;
WHEN 51=>q<=mid_2;
WHEN 52=>q<=mid_2;
WHEN 53=>q<=mid_2;
WHEN 54=>q<=mid_2;
WHEN 55=>q<=mid_2;
WHEN 56=>q<=mid_1;
WHEN 57=>q<=mid_1;
WHEN 58=>q<=mid_2;
WHEN 59=>q<=mid_2;
WHEN 60=>q<=mid_3;
WHEN 61=>q<=mid_3;
WHEN 62=>q<=mid_3;
WHEN 63=>q<=mid_3;
WHEN 64=>q<=mid_6;
WHEN 65=>q<=mid_6;
WHEN 66=>q<=mid_5;
WHEN 67=>q<=mid_5;
WHEN 68=>q<=mid_4;
WHEN 69=>q<=mid_4;
WHEN 70=>q<=mid_3;
WHEN 71=>q<=mid_3;
WHEN 72=>q<=mid_4;
WHEN 73=>q<=mid_4;
WHEN 74=>q<=mid_4;
WHEN 75=>q<=mid_4;
WHEN 76=>q<=mid_4;
WHEN 77=>q<=mid_4;
WHEN 78=>q<=mid_2;
WHEN 79=>q<=mid_2;
WHEN 80=>q<=mid_3;
WHEN 81=>q<=mid_3;
WHEN 82=>q<=mid_3;
WHEN 83=>q<=mid_3;
WHEN 84=>q<=mid_4;
WHEN 85=>q<=mid_4;
WHEN 86=>q<=mid_3;
WHEN 87=>q<=mid_3;
WHEN 88=>q<=mid_3;
WHEN 89=>q<=mid_3;
WHEN 90=>q<=mid_3;
WHEN 91=>q<=mid_3;
WHEN 92=>q<=mid_3;
WHEN 93=>q<=mid_3;
WHEN 94=>q<=mid_3;
WHEN 95=>q<=mid_3;
WHEN 96=>q<=mid_6;
WHEN 97=>q<=mid_6;
WHEN 98=>q<=mid_6;
WHEN 99=>q<=mid_6;
WHEN 100=>q<=mid_6;
WHEN 101=>q<=mid_6;
WHEN 102=>q<=mid_6;
WHEN 103=>q<=mid_6;
WHEN 104=>q<=mid_6;
WHEN 105=>q<=mid_6;
WHEN 106=>q<=mid_6;
WHEN 107=>q<=mid_6;
WHEN 108=>q<=mid_7;
WHEN 109=>q<=mid_7;
WHEN 110=>q<=mid_7;
WHEN 111=>q<=mid_7;
WHEN 112=>q<=mid_3;
WHEN 113=>q<=mid_3;
WHEN 114=>q<=mid_3;
WHEN 115=>q<=mid_3;
WHEN 116=>q<=mid_7;
WHEN 117=>q<=mid_7;
WHEN 118=>q<=mid_7;
WHEN 119=>q<=mid_7;
WHEN 120=>q<=mid_6;
WHEN 121=>q<=mid_6;
WHEN 122=>q<=mid_5;
WHEN 123=>q<=mid_5;
WHEN 124=>q<=mid_3;
WHEN 125=>q<=mid_3;
WHEN 126=>q<=mid_2;
WHEN 127=>q<=mid_2;
WHEN 128=>q<=mid_3;
WHEN 129=>q<=mid_3;
WHEN 130=>q<=mid_6;
WHEN 131=>q<=mid_6;
WHEN 132=>q<=mid_5;
WHEN 133=>q<=mid_5;
WHEN 134=>q<=mid_5;
WHEN 135=>q<=mid_5;
WHEN 136=>q<=mid_5;
WHEN 137=>q<=mid_5;
WHEN 138=>q<=mid_5;
WHEN 139=>q<=mid_5;
WHEN 140=>q<=mid_5;
WHEN 141=>q<=mid_5;
WHEN 142=>q<=mid_5;
WHEN 143=>q<=mid_5;
WHEN 144=>q<=mid_2;
WHEN 145=>q<=mid_2;
WHEN 146=>q<=mid_2;
WHEN 147=>q<=mid_2;
WHEN 148=>q<=mid_2;
WHEN 149=>q<=mid_2;
WHEN 150=>q<=mid_2;
WHEN 151=>q<=mid_2;
WHEN 152=>q<=mid_2;
WHEN 153=>q<=mid_2;
WHEN 154=>q<=mid_2;
WHEN 155=>q<=mid_2;
WHEN 156=>q<=mid_2;
WHEN 157=>q<=mid_3;
WHEN 158=>q<=mid_3;
WHEN 159=>q<=mid_3;
WHEN 160=>q<=mid_3;
WHEN 161=>q<=low_6;
WHEN 162=>q<=low_6;
WHEN 163=>q<=low_6;
WHEN 164=>q<=low_6;
WHEN 165=>q<=mid_3;
WHEN 166=>q<=mid_3;
WHEN 167=>q<=mid_3;
WHEN 168=>q<=mid_3;
WHEN 169=>q<=mid_2;
WHEN 170=>q<=mid_2;
WHEN 171=>q<=mid_2;
WHEN 172=>q<=mid_2;
WHEN 173=>q<=mid_2;
WHEN 174=>q<=mid_2;
WHEN 175=>q<=mid_2;
WHEN 176=>q<=low_6;
WHEN 177=>q<=mid_1;
WHEN 178=>q<=mid_1;
WHEN 179=>q<=low_6;
WHEN 180=>q<=low_6;
WHEN 181=>q<=low_7;
WHEN 182=>q<=low_7;
WHEN 183=>q<=low_7;
WHEN 184=>q<=low_7;
WHEN 185=>q<=low_7;
WHEN 186=>q<=low_7;
WHEN 187=>q<=low_7;
WHEN 188=>q<=low_7;
WHEN 189=>q<=low_7;
WHEN 190=>q<=low_7;
WHEN 191=>q<=low_7;
WHEN 192=>q<=low_7;
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
end rtl;
library ieee;
use ieee.std_logic_1164.all;
entity speak is
port(ain:in integer range 0 to 16#3FFF#;
clk:in std_logic;
q:out std_logic);
end speak;
architecture rtl of speak is
begin
process(clk)
variable b,d:std_logic;
variable c:integer range 0 to 16#3FFF#;
begin
if clk'event and clk='1' then
if b='0' then
c:=ain;b:='1';
else
if c=0 then
b:='0';d:=not d;
else
c:=c-1;
end if;
end if;
end if;
q<=d;
end process;
end rtl;
--顶层文件
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity music2 is
port(clk1,clk2:in std_logic;
CQ:out std_logic);
end music2;
architecture rtl of music2 is
component tone is
port(clk:in std_logic;
q:out integer range 0 to 16#3FFF#);
end component tone;
component speak is
port(ain:in integer range 0 to 16#3FFF#;
clk:in std_logic;
q:out std_logic);
end component speak;
signal tmp:integer range 0 to 16#3FFF#;
begin
u1:tone port map(clk=>clk1,q=>tmp);
u2:speak port map(ain=>tmp,clk=>clk2,q=>CQ);
end rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -