?? songer.vhd
字號(hào):
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; --本首重來(lái)
SPKOUT: OUT STD_LOGIC; --音頻輸出
MODE : IN STD_LOGIC; --播放模式
SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --歌曲序號(hào)顯示
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; --本首重來(lái)
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; --分頻信號(hào)
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) --產(chǎn)生一個(gè)偽隨機(jī)信號(hào)
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隨機(jī)為0或1
CAT<="011111"; --之讓第一個(gè)7段數(shù)碼管顯示歌曲序號(hào)
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;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -