野蜂飞舞 Verilog 一小部分 蜂鸣器

module song_liangzhu(clk, up, down, beep, fast, slow);
input clk;
output beep;
reg beep_r;
input up;
input down;
input fast, slow;
reg[8:0] state;
reg[16:0]count,count_end;
reg[24:0]count1;
reg clk50;

parameter
        L_0_0=18'd95556,
        L_0_5=18'd90193,
        L_1_0=18'd85131,
        L_1_5=18'd80353,
        L_2_0=18'd75843,
        L_3_0=18'd71586,
        L_3_5=18'd67569,
        L_4_0=18'd63776,
        L_4_5=18'd60197,
        L_5_0=18'd56805,
        L_5_5=18'd53629,
        L_6_0=18'd50619,
        M_0_0=18'd47778,
        M_0_5=18'd45097,
        M_1_0=18'd42566,
        M_1_5=18'd40177,
        M_2_0=18'd37922,
        M_3_0=18'd35793,
        M_3_5=18'd33784,
        M_4_0=18'd31888,
        M_4_5=18'd30098,
        M_5_0=18'd28409,
        M_5_5=18'd26815,
        M_6_0=18'd25310,
        H_0_0=18'd23889,
        H_0_5=18'd22548,
        H_1_0=18'd21283,
        H_1_5=18'd20088,
        H_2_0=18'd18961,
        H_3_0=18'd17897,
        H_3_5=18'd16892,
        H_4_0=18'd15944,
        H_4_5=18'd15049,
        H_5_0=18'd14205,
        H_5_5=18'd13407,
        H_6_0=18'd12655,
        X_0_0=18'd11945,
        X_0_5=18'd11274,
        X_1_0=18'd10641,
        X_1_5=18'd10044,
        X_2_0=18'd9480,
        X_3_0=18'd8948,
        X_3_5=18'd8446,
        X_4_0=18'd7972,
        X_4_5=18'd7525,
        X_5_0=18'd7102,
        X_5_5=18'd6704,
        X_6_0=18'd6327;


reg[24:0] TIME = 5000000;
always @(posedge clk) begin
    if(fast && !slow)
        TIME = 2500000;
    else if(!fast && slow)
        TIME = 10000000;
    else
        TIME = 5000000;
end 
assign beep = beep_r;
always@(posedge clk) begin
    clk50<=~clk50;
end
always@(posedge clk50) begin
    count <= count + 1'b1;
    if(count == count_end) begin
        count <= 17'h0;
        beep_r <= !beep_r;
    end
end

always @(posedge clk50) begin
    if(count1 < TIME)
        count1 = count1 + 1'b1;
    else begin
        count1 = 25'd0;
        if(state == 9'd323)
            state = 9'd0;
        else
            state = state + 1'b1;
        case(state)
        9'd0: count_end = X_2_0;
        9'd1: count_end = X_1_5;
        9'd2: count_end = X_1_0;
        9'd3: count_end = X_0_5;
        9'd4: count_end = X_1_0;
        9'd5: count_end = X_0_5;
        9'd6: count_end = X_0_0;
        9'd7: count_end = H_6_0;
        9'd8: count_end = X_0_0;
        9'd9: count_end = H_6_0;
        9'd10: count_end = H_5_5;
        9'd11: count_end = H_5_0;
        9'd12: count_end = H_4_5;
        9'd13: count_end = H_4_0;
        9'd14: count_end = H_3_5;
        9'd15: count_end = H_3_0;
        9'd16: count_end = H_2_0;
        9'd17: count_end = H_1_5;
        9'd18: count_end = H_1_0;
        9'd19: count_end = H_0_5;
        9'd20: count_end = H_1_0;
        9'd21: count_end = H_0_5;
        9'd22: count_end = H_0_0;
        9'd23: count_end = M_6_0;
        9'd24: count_end = H_0_0;
        9'd25: count_end = M_6_0;
        9'd26: count_end = M_5_5;
        9'd27: count_end = M_5_0;
        9'd28: count_end = M_4_5;
        9'd29: count_end = M_4_0;
        9'd30: count_end = M_3_5;
        9'd31: count_end = M_3_0;
        9'd32: count_end = M_2_0;
        9'd33: count_end = M_1_5;
        9'd34: count_end = M_1_0;
        9'd35: count_end = M_0_5;
        9'd36: count_end = M_1_0;
        9'd37: count_end = M_0_5;
        9'd38: count_end = M_0_0;
        9'd39: count_end = L_6_0;
        9'd40: count_end = M_2_0;
        9'd41: count_end = M_1_5;
        9'd42: count_end = M_1_0;
        9'd43: count_end = M_0_5;
        9'd44: count_end = M_1_0;
        9'd45: count_end = M_0_5;
        9'd46: count_end = M_0_0;
        9'd47: count_end = L_6_0;
        9'd48: count_end = M_2_0;
        9'd49: count_end = M_1_5;
        9'd50: count_end = M_1_0;
        9'd51: count_end = M_0_5;
        9'd52: count_end = M_1_0;
        9'd53: count_end = M_0_5;
        9'd54: count_end = M_0_0;
        9'd55: count_end = L_6_0;
        9'd56: count_end = M_2_0;
        9'd57: count_end = M_1_5;
        9'd58: count_end = M_1_0;
        9'd59: count_end = M_0_5;
        9'd60: count_end = M_1_0;
        9'd61: count_end = M_0_5;
        9'd62: count_end = M_0_0;
        9'd63: count_end = L_6_0;
        9'd64: count_end = M_2_0;
        9'd65: count_end = M_1_5;
        9'd66: count_end = M_1_0;
        9'd67: count_end = M_0_5;
        9'd68: count_end = M_0_0;
        9'd69: count_end = M_3_0;
        9'd70: count_end = M_2_0;
        9'd71: count_end = M_1_5;
        9'd72: count_end = M_2_0;
        9'd73: count_end = M_1_5;
        9'd74: count_end = M_1_0;
        9'd75: count_end = M_0_5;
        9'd76: count_end = M_0_0;
        9'd77: count_end = M_0_5;
        9'd78: count_end = M_1_0;
        9'd79: count_end = M_1_5;
        9'd80: count_end = M_2_0;
        9'd81: count_end = M_1_5;
        9'd82: count_end = M_1_0;
        9'd83: count_end = M_0_5;
        9'd84: count_end = M_0_0;
        9'd85: count_end = M_3_0;
        9'd86: count_end = M_0_0;
        9'd87: count_end = M_1_5;
        9'd88: count_end = M_2_0;
        9'd89: count_end = M_1_5;
        9'd90: count_end = M_1_0;
        9'd91: count_end = M_0_5;
        9'd92: count_end = M_0_0;
        9'd93: count_end = M_0_5;
        9'd94: count_end = M_1_0;
        9'd95: count_end = M_1_5;
        9'd96: count_end = M_2_0;
        9'd97: count_end = M_1_5;
        9'd98: count_end = M_1_0;
        9'd99: count_end = M_0_5;
        9'd100: count_end = M_1_0;
        9'd101: count_end = M_0_5;
        9'd102: count_end = M_0_0;
        9'd103: count_end = L_6_0;
        9'd104: count_end = M_0_0;
        9'd105: count_end = M_0_5;
        9'd106: count_end = M_1_0;
        9'd107: count_end = M_1_5;
        9'd108: count_end = M_2_0;
        9'd109: count_end = M_3_0;
        9'd110: count_end = M_2_0;
        9'd111: count_end = M_1_5;
        9'd112: count_end = M_2_0;
        9'd113: count_end = M_1_5;
        9'd114: count_end = M_1_0;
        9'd115: count_end = M_0_5;
        9'd116: count_end = M_1_0;
        9'd117: count_end = M_0_5;
        9'd118: count_end = M_0_0;
        9'd119: count_end = L_6_0;
        9'd120: count_end = M_0_0;
        9'd121: count_end = M_0_5;
        9'd122: count_end = M_1_0;
        9'd123: count_end = M_1_5;
        9'd124: count_end = M_2_0;
        9'd125: count_end = M_3_5;
        9'd126: count_end = M_4_0;
        9'd127: count_end = M_4_5;
        9'd128: count_end = M_5_0;
        9'd129: count_end = M_4_5;
        9'd130: count_end = M_4_0;
        9'd131: count_end = M_3_5;
        9'd132: count_end = M_3_0;
        9'd133: count_end = M_5_5;
        9'd134: count_end = M_5_0;
        9'd135: count_end = M_4_5;
        9'd136: count_end = M_5_0;
        9'd137: count_end = M_4_5;
        9'd138: count_end = M_4_0;
        9'd139: count_end = M_3_5;
        9'd140: count_end = M_3_0;
        9'd141: count_end = M_3_5;
        9'd142: count_end = M_4_0;
        9'd143: count_end = M_4_5;
        9'd144: count_end = M_5_0;
        9'd145: count_end = M_4_5;
        9'd146: count_end = M_4_0;
        9'd147: count_end = M_3_5;
        9'd148: count_end = M_3_0;
        9'd149: count_end = M_5_5;
        9'd150: count_end = M_5_0;
        9'd151: count_end = M_4_5;
        9'd152: count_end = M_5_0;
        9'd153: count_end = M_4_5;
        9'd154: count_end = M_4_0;
        9'd155: count_end = M_3_5;
        9'd156: count_end = M_3_0;
        9'd157: count_end = M_3_5;
        9'd158: count_end = M_4_0;
        9'd159: count_end = M_4_5;
        9'd160: count_end = M_5_0;
        9'd161: count_end = M_4_5;
        9'd162: count_end = M_4_0;
        9'd163: count_end = M_3_5;
        9'd164: count_end = M_4_0;
        9'd165: count_end = M_3_5;
        9'd166: count_end = M_3_0;
        9'd167: count_end = M_2_0;
        9'd168: count_end = M_3_0;
        9'd169: count_end = M_3_5;
        9'd170: count_end = M_4_0;
        9'd171: count_end = M_4_5;
        9'd172: count_end = M_5_0;
        9'd173: count_end = M_5_5;
        9'd174: count_end = M_5_0;
        9'd175: count_end = M_4_5;
        9'd176: count_end = M_5_0;
        9'd177: count_end = M_4_5;
        9'd178: count_end = M_4_0;
        9'd179: count_end = M_3_5;
        9'd180: count_end = M_4_0;
        9'd181: count_end = M_3_5;
        9'd182: count_end = M_3_0;
        9'd183: count_end = M_2_0;
        9'd184: count_end = M_3_0;
        9'd185: count_end = M_3_5;
        9'd186: count_end = M_4_0;
        9'd187: count_end = M_4_5;
        9'd188: count_end = M_5_0;
        9'd189: count_end = M_5_5;
        9'd190: count_end = M_5_0;
        9'd191: count_end = M_4_5;
        9'd192: count_end = M_5_0;
        9'd193: count_end = L_5_0;
        9'd194: count_end = L_4_5;
        9'd195: count_end = L_6_0;
        9'd196: count_end = L_4_0;
        9'd197: count_end = L_6_0;
        9'd198: count_end = L_4_0;
        9'd199: count_end = L_6_0;
        9'd200: count_end = H_3_5;
        9'd201: count_end = M_5_5;
        9'd202: count_end = H_3_5;
        9'd203: count_end = M_5_5;
        9'd204: count_end = H_3_5;
        9'd205: count_end = M_5_5;
        9'd206: count_end = H_3_5;
        9'd207: count_end = M_5_5;
        9'd208: count_end = M_5_0;
        9'd209: count_end = M_5_0;
        9'd210: count_end = M_4_5;
        9'd211: count_end = M_5_0;
        9'd212: count_end = M_4_5;
        9'd213: count_end = M_5_0;
        9'd214: count_end = M_4_5;
        9'd215: count_end = M_5_0;
        9'd216: count_end = M_5_5;
        9'd217: count_end = H_3_5;
        9'd218: count_end = M_5_5;
        9'd219: count_end = H_3_5;
        9'd220: count_end = M_5_5;
        9'd221: count_end = H_3_5;
        9'd222: count_end = M_5_5;
        9'd223: count_end = H_3_5;
        9'd224: count_end = M_5_0;
        9'd225: count_end = M_5_5;
        9'd226: count_end = M_5_0;
        9'd227: count_end = M_4_5;
        9'd228: count_end = M_5_0;
        9'd229: count_end = M_5_5;
        9'd230: count_end = M_5_0;
        9'd231: count_end = M_4_5;
        9'd232: count_end = M_5_0;
        9'd233: count_end = M_5_5;
        9'd234: count_end = M_5_0;
        9'd235: count_end = M_4_5;
        9'd236: count_end = M_5_0;
        9'd237: count_end = M_5_5;
        9'd238: count_end = M_5_0;
        9'd239: count_end = M_4_5;
        9'd240: count_end = M_5_0;
        9'd241: count_end = M_5_5;
        9'd242: count_end = M_6_0;
        9'd243: count_end = H_0_0;
        9'd244: count_end = H_0_5;
        9'd245: count_end = H_0_0;
        9'd246: count_end = M_6_0;
        9'd247: count_end = M_5_5;
        9'd248: count_end = M_5_0;
        9'd249: count_end = M_5_5;
        9'd250: count_end = M_6_0;
        9'd251: count_end = H_0_0;
        9'd252: count_end = H_0_5;
        9'd253: count_end = H_0_0;
        9'd254: count_end = M_1_0;
        9'd255: count_end = M_0_5;
        9'd256: count_end = M_5_0;
        9'd257: count_end = L_5_0;
        9'd258: count_end = L_4_5;
        9'd259: count_end = L_6_0;
        9'd260: count_end = L_4_0;
        9'd261: count_end = L_6_0;
        9'd262: count_end = L_4_0;
        9'd263: count_end = L_6_0;
        9'd264: count_end = L_1_5;
        9'd265: count_end = H_1_5;
        9'd266: count_end = L_1_5;
        9'd267: count_end = H_1_5;
        9'd268: count_end = L_1_5;
        9'd269: count_end = H_1_5;
        9'd270: count_end = L_1_5;
        9'd271: count_end = H_1_5;
        9'd272: count_end = H_1_0;
        9'd273: count_end = H_1_0;
        9'd274: count_end = H_0_5;
        9'd275: count_end = H_1_0;
        9'd276: count_end = H_0_5;
        9'd277: count_end = H_1_0;
        9'd278: count_end = H_0_5;
        9'd279: count_end = H_1_0;
        9'd280: count_end = L_1_5;
        9'd281: count_end = X_1_5;
        9'd282: count_end = L_1_5;
        9'd283: count_end = X_1_5;
        9'd284: count_end = L_1_5;
        9'd285: count_end = X_1_5;
        9'd286: count_end = L_1_5;
        9'd287: count_end = X_1_5;
        9'd288: count_end = H_1_0;
        9'd289: count_end = H_1_5;
        9'd290: count_end = H_1_0;
        9'd291: count_end = H_0_5;
        9'd292: count_end = H_1_0;
        9'd293: count_end = H_1_5;
        9'd294: count_end = H_1_0;
        9'd295: count_end = H_0_5;
        9'd296: count_end = H_1_0;
        9'd297: count_end = H_1_5;
        9'd298: count_end = H_1_0;
        9'd299: count_end = H_0_5;
        9'd300: count_end = H_1_0;
        9'd301: count_end = H_1_5;
        9'd302: count_end = H_1_0;
        9'd303: count_end = H_0_5;
        9'd304: count_end = H_1_0;
        9'd305: count_end = H_1_5;
        9'd306: count_end = H_2_0;
        9'd307: count_end = H_3_0;
        9'd308: count_end = H_3_5;
        9'd309: count_end = H_3_0;
        9'd310: count_end = H_2_0;
        9'd311: count_end = H_1_5;
        9'd312: count_end = H_1_0;
        9'd313: count_end = H_1_5;
        9'd314: count_end = H_2_0;
        9'd315: count_end = H_3_0;
        9'd316: count_end = H_3_5;
        9'd317: count_end = H_3_0;
        9'd318: count_end = H_2_0;
        9'd319: count_end = H_1_5;
        9'd320: count_end = H_1_0;
        9'd321: count_end = H_0_5;
        9'd322: count_end = H_0_0;
        9'd323: count_end = M_6_0;

        endcase
            count_end = count_end/(1+up)*(1+down);
    end
end
endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值