• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于FPGA的電子琴設(shè)計(jì)Verilog代碼VIVADO 硬木課堂開發(fā)板

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

軟件:VIVADO

語言:Verilog

代碼功能:

1.鍵盤按鍵作為琴鍵,由于按鍵有限,根據(jù)你要演奏的曲目,設(shè)計(jì)每個按鍵代表的音符

2.用數(shù)碼管顯示當(dāng)前按下的音符,自定義顯示方式。

3.蜂鳴器作為輸出,參考音符頻率對照表

4.選擇一個拔碼開關(guān)作為電子琴的開關(guān),信號有效時才產(chǎn)生音樂輸出,無效時不輸出音樂。

5.能自動播放一首樂曲。

6.LED燈點(diǎn)亮情況能根據(jù)樂曲變化而變化

7.具有暫停和繼續(xù)播放功能。

8.具有倍速播放功能。

9.具有循環(huán)播放功能

本代碼已在硬木課堂開發(fā)板驗(yàn)證,硬木課堂開發(fā)板如下,其他開發(fā)板可以修改管腳適配:

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
【來源:www.hdlcode.com

相關(guān)推薦