blob: 68f465c9c774ffc3efa6779106d78ff1bc428f55 [file] [log] [blame]
module spi_slave_cmd_parser (
cmd,
get_addr,
get_mode,
get_data,
send_data,
enable_cont,
enable_regs,
wait_dummy,
error,
reg_sel
);
input wire [7:0] cmd;
output reg get_addr;
output reg get_mode;
output reg get_data;
output reg send_data;
output reg enable_cont;
output reg enable_regs;
output reg wait_dummy;
output reg error;
output reg [1:0] reg_sel;
always @(*) begin
get_addr = 0;
get_mode = 0;
get_data = 0;
send_data = 0;
enable_cont = 0;
enable_regs = 1'b0;
wait_dummy = 0;
reg_sel = 2'b00;
error = 1'b1;
case (cmd)
8'h01: begin
get_addr = 0;
get_mode = 0;
get_data = 1;
send_data = 0;
enable_cont = 0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 0;
reg_sel = 2'b00;
end
8'h02: begin
get_addr = 1;
get_mode = 0;
get_data = 1;
send_data = 0;
enable_cont = 1'b1;
enable_regs = 1'b0;
error = 1'b0;
wait_dummy = 0;
reg_sel = 2'b00;
end
8'h05: begin
get_addr = 0;
get_mode = 0;
get_data = 0;
send_data = 1;
enable_cont = 0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 0;
reg_sel = 2'b00;
end
8'h07: begin
get_addr = 0;
get_mode = 0;
get_data = 0;
send_data = 1;
enable_cont = 0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 0;
reg_sel = 2'b01;
end
8'h0b: begin
get_addr = 1;
get_mode = 0;
get_data = 0;
send_data = 1;
enable_cont = 1'b1;
enable_regs = 1'b0;
error = 1'b0;
wait_dummy = 1;
reg_sel = 2'b00;
end
8'h11: begin
get_addr = 1'b0;
get_mode = 1'b0;
get_data = 1'b1;
send_data = 1'b0;
enable_cont = 1'b0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 1'b0;
reg_sel = 2'b01;
end
8'h20: begin
get_addr = 1'b0;
get_mode = 1'b0;
get_data = 1'b1;
send_data = 1'b0;
enable_cont = 1'b0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 1'b0;
reg_sel = 2'b10;
end
8'h21: begin
get_addr = 1'b0;
get_mode = 1'b0;
get_data = 1'b0;
send_data = 1'b1;
enable_cont = 1'b0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 1'b0;
reg_sel = 2'b10;
end
8'h30: begin
get_addr = 1'b0;
get_mode = 1'b0;
get_data = 1'b1;
send_data = 1'b0;
enable_cont = 1'b0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 1'b0;
reg_sel = 2'b11;
end
8'h31: begin
get_addr = 1'b0;
get_mode = 1'b0;
get_data = 1'b0;
send_data = 1'b1;
enable_cont = 1'b0;
enable_regs = 1'b1;
error = 1'b0;
wait_dummy = 1'b0;
reg_sel = 2'b11;
end
endcase
end
endmodule