实践:电子琴设计
上一节
下一节
(1)简易电子琴
module piano(clk,key,speaker);
input clk; //50M
input[3:0] key;
output speaker;
reg speaker,clk5m;
reg[12:0] div,cnt2;
reg[2:0] cnt1;
parameter duo=4777,re=4256,mi=3792,fa=3581;
always@(posedge clk)
begin
if(cnt1==4) begin cnt1<=0;clk5m<=~clk5m; end
else cnt1<=cnt1+1;
end
always@(posedge clk5m)
begin
if(div==0) speaker<=1;
else if(cnt2==(div/2))
begin cnt2<=0; speaker<=~speaker; end
else cnt2<=cnt2+1;
end
always@(key)
case(key)
4'b1110: div<=duo;
4'b1101: div<=re;
4'b1011: div<=mi;
4'b0111: div<=fa;
default: div<=0;
endcase
endmodule

