資源描述:
《數(shù)電EDA簡易電子琴Verilog 設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、數(shù)字電子技術(shù)課程設(shè)計(jì)--簡易電子琴設(shè)計(jì)專業(yè)班級(jí):電子姓名:學(xué)號(hào):日期:2015.6.5一、設(shè)計(jì)任務(wù)用VerilogHDL語言設(shè)計(jì)簡易電子琴。(1)單獨(dú)從左至右按下S1-S7每個(gè)按鍵后能夠各自對(duì)應(yīng)發(fā)出“哆來咪發(fā)唆啦西”的音樂聲;(2)按下最右邊按鍵(S8),同時(shí)再配合按下S1-S7鍵后,發(fā)高八度的對(duì)應(yīng)音;(3)按鍵需要進(jìn)行“消抖”處理;(4)外部輸入脈沖信號(hào)頻率為1mhz;(5)擴(kuò)展要求:自主設(shè)計(jì)(增加低8度功能)。二、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)verilogHDL語言的基本運(yùn)用,能夠利用其進(jìn)行簡單編程;2、學(xué)習(xí)使用Qua
2、rtusⅡ7.0的基本操作,能夠利用其進(jìn)行簡單的設(shè)計(jì);3、結(jié)合實(shí)踐加深對(duì)理論知識(shí)的理解。三、設(shè)計(jì)原理1)喇叭的振動(dòng)頻率不同,導(dǎo)致產(chǎn)生不同的聲音;振動(dòng)頻率越低,聲音越低沉,振動(dòng)頻率越高,聲音越尖銳。題目中音樂基本音的“哆”對(duì)應(yīng)頻率為523Hz、“來”對(duì)應(yīng)頻率為587Hz、“咪”對(duì)應(yīng)頻率為659Hz、“發(fā)”對(duì)應(yīng)頻率為698Hz、“唆”對(duì)應(yīng)頻率為784Hz、“啦”對(duì)應(yīng)頻率為880Hz、“西”對(duì)應(yīng)頻率為998Hz。低8度音:基本音頻率/2,例如低音1的頻率為523/2=261.5Hz。高8度音:基本音頻率×2,例如高音
3、1的頻率為523×2=1046Hz.。不同的頻率產(chǎn)生利用給定的時(shí)鐘脈沖來進(jìn)行分頻實(shí)現(xiàn)。(2)消抖的原理:按鍵默認(rèn)輸入邏輯‘1’,當(dāng)有按鍵按下時(shí)對(duì)應(yīng)的輸入為邏輯‘0’(但會(huì)存在抖動(dòng)),當(dāng)FPGA開始檢測到該引腳從‘1’變?yōu)椤?’后開始定時(shí)(按鍵抖動(dòng)時(shí)間大約10ms),定時(shí)時(shí)間結(jié)束后若該引腳仍然為‘0’則表示確實(shí)發(fā)生按鍵按下,否則視為抖動(dòng)而不予以理會(huì);按鍵松開過程的消抖處理和按下時(shí)原理一樣。(3)原理框圖四、程序設(shè)計(jì)消抖模塊modulexiaodou(key_in,key_out,clk);inputkey_in;
4、inputclk;outputkey_out;regkey_out;reg[2:0]presta;integerq;parameters0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101,s6=3'b110,s7=3'b111;always@(posedgeclk)begincase(presta)s0:beginkey_out<=0;q<=0;if(key_in==1)presta<=s0;elsepresta<=s1;ends1:begink
5、ey_out<=0;if(q>9999)presta<=s2;elseq<=q+1;ends2:beginkey_out<=0;q<=0;if(key_in==1)presta<=s0;elsepresta<=s3;ends3:beginkey_out<=1;q<=0;if(key_in==0)presta<=s3;elsepresta<=s4;ends4:beginkey_out<=1;if(q>44444)presta<=s5;elseq<=q+1;ends5:beginq<=0;if(key_in==1)
6、presta<=s0;elsepresta<=s3;ends6:beginpresta<=s0;ends7:beginpresta<=s0;endendcaseendendmodule按鍵模塊moduleanjian(a,b,c,d,e,f,g,h,i,qout);inputa,b,c,d,e,f,g,h,i;output[10:0]qout;reg[8:0]q;reg[10:0]qout;always@(aorborcordoreorforgorhori)beginq[0]=i;q[1]=h;q[2]=g;q
7、[3]=f;q[4]=e;q[5]=d;q[6]=c;q[7]=b;q[8]=a;endalways@(q)begincase(q)9'b100000000:qout<=11'b01110111100;9'b010000000:qout<=11'b01101010011;9'b001000000:qout<=11'b01011110111;9'b000100000:qout<=11'b01011001100;9'b000010000:qout<=11'b01001111110;9'b000001000:qout
8、<=11'b01000111000;9'b000000100:qout<=11'b00111110101;9'b100000010:qout<=11'b00111011110;9'b010000010:qout<=11'b00110101010;9'b001000010:qout<=11'b00101111011;9'b000100010:qout<=11'b00101100110;9