notetabs.vhd

来自「VHDL实现唱歌的功能」· VHDL 代码 · 共 40 行

VHD
40
字号
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY NoteTabs IS
	PORT(clk :IN STD_LOGIC;
		 sel :in std_logic;   --歌曲选择 1选择 music,0选择 music1
		 ToneIndex :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END;
ARCHITECTURE one OF NoteTabs IS
	COMPONENT MUSIC
		PORT(address :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
			 clock :IN STD_LOGIC;
			 q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
	END COMPONENT;
	COMPONENT MUSIC1
		PORT(address :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
			 clock :IN STD_LOGIC;
			 q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
	END COMPONENT;
		SIGNAL Counter :STD_LOGIC_VECTOR(7 DOWNTO 0);
		signal toneindex1:std_logic_vector(3 downto 0);
		signal toneindex2:std_logic_vector(3 downto 0);
		BEGIN
			process(sel)
			begin
				if(sel='1') then			--选择使用那个rom
					toneindex<=toneindex1;
				else
					toneindex<=toneindex2;
				end if;
			end process;
			CNT8 :PROCESS(clk,Counter)
				BEGIN
					IF Counter=138 THEN Counter<="00000000";
					ELSIF(clk'EVENT AND clk='1')THEN Counter<=Counter+1;
					END IF;
				END PROCESS;
u1 :MUSIC PORT MAP(address=>Counter,q=>toneindex1,clock=>clk);		--例化两个rom
u2 :MUSIC1 PORT MAP(address=>Counter,q=>toneindex2,clock=>clk);
END;

⌨️ 快捷键说明

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