请问这FPGA代码是哪首歌曲

可以帮忙看看这是哪首歌吗


module sysong(clk,beep,key1,r,duan,wei); //模块名称song  
input    key1;
input    clk;     //系统时钟50MHz 
output beep;     //蜂鸣器输出端
reg  beep_r;    //寄存器
reg[7:0] state;    //乐谱状态机
reg[16:0]count,count_end;
reg[23:0]count1;

input r;
output [7:0] duan;
output [3:0] wei;
reg [7:0] duan;
reg [3:0] wei;
integer count2;
integer count3;
reg clk_1hz;

reg [3:0]ge;
reg [3:0]shi;
reg [3:0]bai;
reg [3:0]qian;


reg clk_scan;
reg [3:0]select;

//乐谱参数:D=F/2K  (D:参数,F:时钟频率,K:音高频率)
parameter   D_2 = 16'd95671,            //低音2
            D_3 = 16'd85130,            //低音3
            D_5 = 16'd63776,            //低音5
            D_6 = 16'd56818,                //低音6
            D_7 = 16'd50618,            //低音7
            M_1 = 16'd47774,            //中音1
            M_2 = 16'd42568,            //中音2
            M_3 = 16'd37919,            //中音3
            M_5 = 16'd31888,            //中音5
            M_6 = 16'd28409,            //中音6
            H_1 = 16'd23912;                //高音1            
parameter    TIME = 12000000;            //控制每一个音的长短(250ms)
                                    
assign beep = beep_r;                    //输出音乐

always@(posedge clk)
begin
if(key1)
    begin count<=0;end
    else begin
    count <= count + 1'b1;end                 //计数器加1
    if(count == count_end)
    begin
        count <= 16'h0;                    //计数器清零
        beep_r <= !beep_r;                //输出取反
    end
end

always @(posedge clk)
begin
    if(count1 < TIME)                    //一个节拍250mS
        count1 = count1 + 1'b1;
    else
    begin
        count1 = 24'd0;
        if(state == 8'd52)
            state = 8'd0;
        else
            state = state + 1'b1;
        case(state)
            8'd0,8'd1,8'd2,8'd3:                 count_end = D_3;//低音"3",持续4个节拍
            8'd4,8'd5,8'd6:                     count_end = D_5;//低音"5",持续3个节拍
            8'd7:                                count_end = D_6;//低音"6",持续1个节拍
            8'd8,8'd9,8'd10:                     count_end = M_1;//中音"1",持续3个节拍
            8'd11:                                 count_end = M_2;//中音"2",持续1个节拍    
            8'd12:                                 count_end = D_6;//低音"6",持续1个节拍    
            8'd13:                                 count_end = M_1;//中音"1",持续1个节拍    
            8'd14,8'd15:                         count_end = D_5;//低音"5",持续2个节拍
            8'd16:                                 count_end = M_1;//中音"1",持续1个节拍    
            8'd17,8'd18:                         count_end = D_5;//低音"5",持续2个节拍
            8'd19,8'd20,8'd21:                    count_end = M_5;//中音"5",持续3个节拍    
            8'd22:                                 count_end = H_1;//高音"1",持续1个节拍
            8'd23:                                 count_end = M_6;//中音"6",持续1个节拍    
            8'd24:                                 count_end = M_5;//中音"5",持续1个节拍    
            8'd25:                                 count_end = M_3;//中音"3",持续1个节拍    
            8'd26:                                 count_end = M_5;//中音"5",持续1个节拍            
            8'd27,8'd28,8'd29,8'd30,8'd31,
            8'd32,8'd33,8'd34,8'd35,8'd36,8'd37:count_end = M_2;//中音"2",持续11个节拍                
            8'd38:                                 count_end = M_3;//中音"3",持续1个节拍    
            8'd39,8'd40:                        count_end = D_7;//低音"7",持续2个节拍
            8'd41,8'd42:                         count_end = D_6;//低音"6",持续2个节拍
            8'd43,8'd44,8'd45:                     count_end = D_5;//低音"5",持续3个节拍
            8'd46:                                 count_end = D_6;//低音"6",持续1个节拍
            8'd47,8'd48:                        count_end = M_1;//中音"1",持续2个节拍    
            8'd49,8'd50:                         count_end = M_2;//中音"2",持续2个节拍                    
            8'd51,8'd52:                         count_end = D_3;//低音"3",持续2个节拍
        endcase
    end
end
always @(posedge clk)
 begin
    if(count2==1000000)
      begin
        clk_1hz<=~clk_1hz;
        count2<=0;
      end
    else
        count2<=count2+1'b1;
 end
always @(posedge clk_1hz)
    begin 
        if(!r)
    begin 
        qian<=4'b0010;
        bai<=4'b0100;
        shi<=4'b0111;
        ge<=4'b0011;
    end
    else 
    begin 
        qian<=4'b0010;
        bai<=4'b0100;
        shi<=4'b0111;
        ge<=4'b0011;
    end
end
always @(posedge clk)
  begin
    if(count3==10000)
      begin
      count3<=0;
      clk_scan<=~clk_scan;
      end
    else
      count3<=count3+1;
  end

always @( posedge clk_scan)
  begin
    if(select==3'b100)
     select<=3'b000;
    else 
     select<=select+1'b1;
  end
always @(ge or shi or bai or qian  or select)
  begin
    if(select==3'b001)
    begin
    wei<=4'b1110;
    case(ge)
        4'b0000:begin duan<=8'b1100_0000;end
        4'b0001:begin duan<=8'b1111_1001;end
        4'b0010:begin duan<=8'b1010_0100;end
        4'b0011:begin duan<=8'b1011_0000;end
        4'b0100:begin duan<=8'b1001_1001;end
        4'b0101:begin duan<=8'b1001_0010;end
        4'b0110:begin duan<=8'b1000_0011;end
        4'b0111:begin duan<=8'b1111_1000;end
        4'b1000:begin duan<=8'b1000_0000;end
        4'b1001:begin duan<=8'b1001_1000;end
        default duan<=8'bx;
    endcase
    end

    else if(select==3'b010)
    begin
    wei<=4'b1101;
    case(shi)
        4'b0000: duan<=8'b1100_0000;
        4'b0001: duan<=8'b1111_1001;
        4'b0010: duan<=8'b1010_0100;
        4'b0011: duan<=8'b1011_0000;
        4'b0100: duan<=8'b1001_1001;
        4'b0101: duan<=8'b1001_0010;
        4'b0110: duan<=8'b1000_0011;
        4'b0111: duan<=8'b1111_1000;
        4'b1000: duan<=8'b1000_0000;
        4'b1001: duan<=8'b1001_1000;
        4'b1010: duan<=8'b1010_0001;
        default duan<=8'bx;
    endcase
    end
    else if(select==3'b011)
    begin
    wei<=4'b1011;
    case(bai)
        4'b0000:begin duan<=8'b1100_0000;end
        4'b0001:begin duan<=8'b1111_1001;end
        4'b0010:begin duan<=8'b1010_0100;end
        4'b0011:begin duan<=8'b1011_0000;end
        4'b0100:begin duan<=8'b1001_1001;end
        4'b0101:begin duan<=8'b1001_0010;end
        4'b0110:begin duan<=8'b1000_0011;end
        4'b0111:begin duan<=8'b1111_1000;end
        4'b1000:begin duan<=8'b1000_0000;end
        4'b1001:begin duan<=8'b1001_1000;end
        4'b1010:begin duan<=8'b1011_0111;end
        default duan<=8'bx;
    endcase
    end
    else if(select==3'b100)
    begin
    wei<=4'b0111;
    case(qian)
        4'b0000: duan<=8'b1100_0000;
        4'b0001: duan<=8'b1111_1001;
        4'b0010: duan<=8'b1010_0100;
        4'b0011: duan<=8'b1011_0000;
        4'b0100: duan<=8'b1001_1001;
        4'b0101: duan<=8'b1001_0010;
        4'b0110: duan<=8'b1000_0011;
        4'b0111: duan<=8'b1111_1000;
        4'b1000: duan<=8'b1000_0000;
        4'b1001: duan<=8'b1001_1000;
        default duan<=8'bx;
    endcase
    end
  end

endmodule

这曲子是《梁山伯与祝英台》