名稱(chēng):Quartus簡(jiǎn)易樂(lè)曲發(fā)生器VHDL代碼AX301開(kāi)發(fā)板
軟件:Quartus
語(yǔ)言:VHDL
代碼功能:
12、簡(jiǎn)易樂(lè)曲發(fā)生器
利用音名與頻率的關(guān)系制作簡(jiǎn)易樂(lè)曲發(fā)生器,要求能循環(huán)播放一首樂(lè)曲,并顯示樂(lè)曲演奏時(shí)對(duì)應(yīng)的音符。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在AX301開(kāi)發(fā)板驗(yàn)證,開(kāi)發(fā)板如下,其他開(kāi)發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 管腳分配
5. RTL圖
6. Testbench
7. 仿真圖
整體仿真圖
頻率控制字產(chǎn)生模塊
音樂(lè)控制模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --音樂(lè)播放器 ENTITY?music?IS ???PORT?( ??????sysclk??????:?IN?STD_LOGIC;--50M晶振 ??????stop_key????:?IN?STD_LOGIC;--reset ??????start_key???:?IN?STD_LOGIC;--開(kāi)始 ??????led?????????:?OUT?STD_LOGIC;--指示燈 ??????spkout??????:?OUT?STD_LOGIC;--蜂鳴器輸出 ??????bit_select??:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0);--數(shù)碼管位選 ??????seg_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選 ???); END?music; ARCHITECTURE?trans?OF?music?IS ???COMPONENT?music_ctrl?IS ??????PORT?( ?????????sysclk??????:?IN?STD_LOGIC; ?????????stop_key????:?IN?STD_LOGIC; ?????????start_key???:?IN?STD_LOGIC; ?????????tonecode????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????tonestep????:?IN?STD_LOGIC_VECTOR(9?DOWNTO?0); ?????????led?????????:?OUT?STD_LOGIC; ?????????spkout??????:?OUT?STD_LOGIC ??????); ???END?COMPONENT; ??? ???COMPONENT?display?IS ??????PORT?( ?????????clk?????????:?IN?STD_LOGIC; ?????????tonecode????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????bit_select??:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0); ?????????seg_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???COMPONENT?musicdec?IS ??????PORT?( ?????????tonecode????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????tonestep????:?OUT?STD_LOGIC_VECTOR(9?DOWNTO?0) ??????); ???END?COMPONENT; ??? ??? ???SIGNAL?tonestep?????????:?STD_LOGIC_VECTOR(9?DOWNTO?0); ???SIGNAL?tonecode?????????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?music_num????????:?STD_LOGIC_VECTOR(3?DOWNTO?0); ??? ???SIGNAL?clk_valid????????:?STD_LOGIC; ??? ???SIGNAL?led_buf????????:?STD_LOGIC; BEGIN ???clk_valid?<=?sysclk; ???? ?--頻率控制字產(chǎn)生模塊 ???u_musicdec?:?musicdec ??????PORT?MAP?( ?????????tonecode??=>?tonecode,--輸入簡(jiǎn)譜 ?????????tonestep??=>?tonestep--輸出頻率控制字 ??????); ??? ??? ???--音樂(lè)控制模塊 ???i_music_ctrl?:?music_ctrl ??????PORT?MAP?( ?????????sysclk?????=>?sysclk, ?????????start_key??=>?start_key, ?????????stop_key???=>?stop_key, ?????????tonecode???=>?tonecode,--簡(jiǎn)譜 ?????????tonestep???=>?tonestep,--頻率控制字 ?????????spkout?????=>?spkout, ?????????led????????=>?led ??????); ??? ??? ???--顯示模塊 ???i_display?:?display ??????PORT?MAP?( ?????????clk?????????=>?sysclk, ?????????tonecode????=>?tonecode, ?????????bit_select??=>?bit_select,--數(shù)碼管位選 ?????????seg_select??=>?seg_select--數(shù)碼管段選 ??????); ??? END?trans;
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=340