名稱:基于FPGA的電子琴設(shè)計Verilog代碼VIVADO? 硬木課堂開發(fā)板
軟件:VIVADO
語言:Verilog
代碼功能:
1.鍵盤按鍵作為琴鍵,由于按鍵有限,根據(jù)你要演奏的曲目,設(shè)計每個按鍵代表的音符。
2.用數(shù)碼管顯示當(dāng)前按下的音符,自定義顯示方式。
3.蜂鳴器作為輸出,參考音符頻率對照表。
4.選擇一個拔碼開關(guān)作為電子琴的開關(guān),信號有效時才產(chǎn)生音樂輸出,無效時不輸出音樂。
5.能自動播放一首樂曲。
6.LED燈點亮情況能根據(jù)樂曲變化而變化。
7.具有暫停和繼續(xù)播放功能。
8.具有倍速播放功能。
9.具有循環(huán)播放功能。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在硬木課堂開發(fā)板驗證,硬木課堂開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計文檔:
1、工程文件
2、程序文件
3、程序編譯
4、RTL圖
5、管腳分配
6、Testbench
7、仿真圖
整體仿真圖
按鍵輸入模塊
分頻模塊
琴鍵控制
數(shù)碼管顯示
部分代碼展示:
//琴鍵控制模塊 module?control(clk,reset,code,speed_key,start_stop_key,add_step,auto_key,LED); input????????clk;//50MHz input????????reset;//低電平--SW0 input??start_stop_key;//暫停繼續(xù)--SW2 input????????[4:0]code;//琴鍵編碼 output???????[11:0]add_step;? output???????[11:0]LED;? input??speed_key;//加速--SW3 input??auto_key;//自動播放開關(guān),1自動播放,0按鍵模式 reg?[11:0]LED;? reg?[7:0]????tone_num=8'd0; reg?[11:0]???add_step=12'd0;? //定義數(shù)組,用于存儲1首歌曲 reg?[7:0]?music_1[0:495]; //初始化歌曲,存入數(shù)組 initial?begin $readmemh("music1.list",?music_1);//music_1.list存儲的簡譜 end reg?[31:0]?div_cnt=32'd0; reg??play_enable=0; reg?[9:0]?address=10'd0;//簡譜地址 wire?[31:0]?speed_para; assign?speed_para=?(speed_key==0)???32'd3597122?:?32'd1798561; always?@(posedge?clk)????? ??????begin