📄 songer.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Songer IS
PORT
(CLK1MHZ :IN STD_LOGIC; --主频1M
CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --彩灯功能
PP : IN STD_LOGIC; --暂停或播放
SHOW : OUT STD_LOGIC; --播放模式显示
NEXTONE : IN STD_LOGIC; --下一首
PREVIOUS : IN STD_LOGIC; --本首重来
SPKOUT: OUT STD_LOGIC; --音频输出
MODE : IN STD_LOGIC; --播放模式
SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --歌曲序号显示
CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);
STOP: IN STD_LOGIC
);
END;
ARCHITECTURE one OF Songer IS
COMPONENT NoteTabs
PORT ( clk: IN STD_LOGIC;
ToneIndex: OUT INTEGER RANGE 0 TO 15;
PP : IN STD_LOGIC;
NEXTONE : IN STD_LOGIC; --下一首
PREVIOUS : IN STD_LOGIC; --本首重来
MODE : IN STD_LOGIC;
RANDOM: IN STD_LOGIC;
SHOW : OUT STD_LOGIC;
SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
);
END COMPONENT;
COMPONENT ToneTaba
PORT ( Index: IN INTEGER RANGE 0 TO 15;
CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
Tone : OUT INTEGER RANGE 0 TO 16#7FF#
);
END COMPONENT;
COMPONENT Speakera
PORT(clk:IN STD_LOGIC;
Tone:IN INTEGER RANGE 0 TO 16#7FF#;
SpkS:OUT STD_LOGIC);
END COMPONENT;
SIGNAL Tone : INTEGER RANGE 0 TO 16#7FF#;
SIGNAL ToneIndex :INTEGER RANGE 0 TO 15;
SIGNAL T:STD_LOGIC; --分频信号
CONSTANT LENGTH:POSITIVE:=8;
CONSTANT TAP1:POSITIVE:=8;
CONSTANT TAP2:POSITIVE:=4;
SIGNAL PRBS:STD_LOGIC;
SIGNAL PRREG:STD_LOGIC_VECTOR(LENGTH DOWNTO 0);
BEGIN
PROCESS(CLK1MHZ) --T分1M频为4Hz
VARIABLE C:INTEGER RANGE 0 TO 124999;
BEGIN
IF(CLK1MHZ'EVENT AND CLK1MHZ='1')THEN
IF(C=124999)THEN
C:=0;
T<=NOT T;
ELSE
C:=C+1;
END IF;
END IF;
END PROCESS;
process(T,STOP) --产生一个伪随机信号
begin
if STOP='1' then
prreg<=(others=>'0');
prreg(0)<='1';
elsif T'event and T='1' then
prreg<=(prreg((length-1)downto 0)&
(prreg(tap1)xor prreg(tap2)));
end if;
end process;
prbs<=prreg(length); --prbs随机为0或1
CAT<="011111"; --之让第一个7段数码管显示歌曲序号
u1: NoteTabs PORT MAP(clk=>T,MODE=>MODE,SHOW=>SHOW, ToneIndex => ToneIndex,
RANDOM=>PRBS,SEG=>SEG,PP=>PP,NEXTONE=>NEXTONE,PREVIOUS=>PREVIOUS);
u2: ToneTaba PORT MAP(Index=>ToneIndex, Tone=>Tone,CAIDENG=>CAIDENG);
u3: Speakera PORT MAP(clk=>CLK1MHZ,Tone=>Tone ,SpkS=>SPKOUT);
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -