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

📄 speakera.vhd

📁 vhdl实现音乐播放,播放梁祝乐曲
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY Speakera IS
PORT ( clk : IN STD_LOGIC;
      Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);
      SpkS : OUT STD_LOGIC );
END;
ARCHITECTURE one OF Speakera IS
   SIGNAL PreCLK, FullSpkS : STD_LOGIC;
BEGIN

	DivideCLK : PROCESS(clk)
VARIABLE Count4 :integer range 0 to  16;
BEGIN
    if (clk'event and clk='1') then
    	if 	Count4>=15 then
    		Count4:=0;
    	else
    		Count4:=Count4+1;	
    	end if;
    	
    	case Count4 is
    		when 0 to 7 =>PreCLK<='0';
    		when others =>PreCLK<='1';
    	end case;    		
    end if;
  end process;



GenSpkS : PROCESS(PreCLK, Tone)-- 11位可预置计数器
VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);
BEGIN
  IF PreCLK'EVENT AND PreCLK = '1' THEN
        IF Count11 = 16#7FF# THEN 
                          Count11 := Tone ; 
                          FullSpkS <= '1';
        ELSE Count11 := Count11 + 1; 
              FullSpkS <= '0'; 
        END IF;
  END IF;
END PROCESS;

	




DelaySpkS : PROCESS(FullSpkS)--将输出再2分频,展宽脉冲,使扬声器有足够功率发音
VARIABLE Count2 : STD_LOGIC;
BEGIN
 IF FullSpkS'EVENT AND FullSpkS = '1' THEN 
                     Count2 := NOT Count2;
         IF Count2 = '1' THEN SpkS <= '1';
         ELSE SpkS <= '0'; 
         END IF;
 END IF;
END PROCESS;
END;

⌨️ 快捷键说明

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