这按键部分有错误码?
module key(clk_k,reset,key_mode,key_freq,key_out_mode,key_out_amp,key_amp,key_out_freq,key_ok);
input reset;
input clk_k;
input key_mode,key_freq,key_amp,key_ok;
output reg [1:0] key_out_mode;
output reg [7:0] key_out_freq;
output reg [3:0] key_out_amp;
reg key_new_ok;
reg key_flag_mode1; //按键去抖动标志位
reg key_flag_old_mode1; //前一拍为0,后一拍为1上升沿触发按键功能选择
reg [1:0] key_flag_ctrl_mode1; //MOD标志位
reg [3:0] key_shift_mode1; //移位寄存器,用于按键区抖动
reg key_flag_mode2; //按键去抖动标志位
reg key_flag_old_mode2; //前一拍为0,后一拍为1上升沿触发按键功能选择
reg [7:0] key_flag_ctrl_mode2; //MOD标志位
reg [9:0] key_shift_mode2; //移位寄存器,用于按键区抖动
reg key_flag_mode3; //按键去抖动标志位
reg key_flag_old_mode3; //前一拍为0,后一拍为1上升沿触发按键功能选择
reg [3:0] key_flag_ctrl_mode3; //MOD标志位
reg [5:0] key_shift_mode3; //移位寄存器,用于按键区抖动
reg key_flag_mode4; //按键去抖动标志位
reg key_flag_old_mode4; //前一拍为0,后一拍为1上升沿触发按键功能选择
reg key_flag_ctrl_mode4; //MOD标志位
reg [1:0] key_shift_mode4; //移位寄存器,用于按键区抖动
always @ (posedge clk_k or negedge reset)
begin
if(!reset)
begin
key_flag_mode1<= 1;
key_shift_mode1<= 3'b111;
key_flag_old_mode1<= 1;
key_flag_ctrl_mode1<= 0;
end
else
begin
key_shift_mode1 <= {key_shift_mode1[2:0],key_mode};
key_flag_mode1 <= &key_shift_mode1;
key_flag_old_mode1<= key_flag_mode1;
if(key_flag_old_mode1 == 0 && key_flag_mode1 == 1)
key_flag_ctrl_mode1 <= key_flag_ctrl_mode1 + 1'b1;
if(key_flag_ctrl_mode4)
key_out_mode<=key_flag_ctrl_mode1;
end
end
always @ (posedge clk_k or negedge reset)
begin
if(!reset)
begin
key_flag_mode2<= 1;
key_shift_mode2<= 9'b111111111;
key_flag_old_mode2<= 1;
key_flag_ctrl_mode2<= 0;
end
else
begin
key_shift_mode2 <= {key_shift_mode2[8:0],key_freq};
key_flag_mode2 <= &key_shift_mode2;
key_flag_old_mode2<= key_flag_mode2;
if(key_flag_old_mode2== 0 && key_flag_mode2 == 1)
begin
if(key_flag_ctrl_mode2[3:0]==9)
begin
key_flag_ctrl_mode2[3:0]<=0;
key_flag_ctrl_mode2[7:4]<=key_flag_ctrl_mode2[7:4]+ 1'b1;
end
else
key_flag_ctrl_mode2[3:0]<= key_flag_ctrl_mode2[3:0] + 1'b1;
end
if(key_flag_ctrl_mode4)
begin
key_out_freq[3:0]<=key_flag_ctrl_mode2[3:0];
key_out_freq[7:4]<=key_flag_ctrl_mode2[7:4];
end
end
end
always @ (posedge clk_k or negedge reset)
begin
if(!reset)
begin
key_flag_mode3<= 1;
key_shift_mode3<= 5'b11111;
key_flag_old_mode3<= 1;
key_flag_ctrl_mode3<= 0;
end
else
begin
key_shift_mode3 <= {key_shift_mode3[4:0],key_amp};
key_flag_mode3 <= &key_shift_mode3;
key_flag_old_mode3<= key_flag_mode3;
if(key_flag_old_mode3== 0 && key_flag_mode3 == 1)
begin
if(key_flag_ctrl_mode3==9)
key_flag_ctrl_mode3<=0;
else
key_flag_ctrl_mode3<= key_flag_ctrl_mode3 + 1'b1;
end
end
key_out_amp<=key_flag_ctrl_mode3;
end
always @ (posedge clk_k or negedge reset)
begin
if(!reset)
begin
key_flag_mode4<= 1;
key_shift_mode4<=2'b11;
key_flag_old_mode4<= 1;
key_flag_ctrl_mode4<= 0;
end
else
begin
key_shift_mode4 <= {key_shift_mode4,key_ok};
key_flag_mode4 <= &key_shift_mode4;
key_flag_old_mode4<= key_flag_mode4;
if(key_flag_old_mode4 == 0 && key_flag_mode4 == 1)
begin
key_flag_ctrl_mode4<=1;
end
end
end
endmodule |