This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
module send_command_tb;
|
||||
|
||||
bit clk;
|
||||
// The crc should be clocked way faster than the sender
|
||||
bit crc_clk;
|
||||
logic reset;
|
||||
logic start;
|
||||
logic [5:0] command;
|
||||
logic [31:0] arguments;
|
||||
wire ready;
|
||||
wire sd_cmd;
|
||||
|
||||
logic [47:0] fill_me;
|
||||
int counter;
|
||||
|
||||
logic sd_cmd_real;
|
||||
|
||||
assign sd_cmd_real = (sd_cmd === 'z) ? 1 : 0;
|
||||
|
||||
send_command dut(.*);
|
||||
|
||||
initial forever #100 clk = ~clk;
|
||||
initial forever #20 crc_clk = ~crc_clk;
|
||||
|
||||
|
||||
|
||||
initial begin
|
||||
reset = 1;
|
||||
start = 0;
|
||||
|
||||
repeat (2) @(posedge clk);
|
||||
|
||||
reset = 0;
|
||||
@(posedge clk);
|
||||
|
||||
start = 1;
|
||||
command = 8;
|
||||
arguments = 'h1AA;
|
||||
|
||||
counter = 48;
|
||||
|
||||
@(posedge clk);
|
||||
|
||||
// Try receiving the CMD8
|
||||
while (counter != 0) begin
|
||||
// Check for the start bit, or that we're receiving a message
|
||||
if (sd_cmd_real != 1 || counter != 48) begin
|
||||
fill_me = {fill_me[46:0], sd_cmd_real};
|
||||
counter--;
|
||||
end
|
||||
@(posedge clk);
|
||||
end
|
||||
|
||||
assert (fill_me === {2'b01, 6'd8, 32'h1AA, 8'h87})
|
||||
else $error("Received wrong command, got 0x%x",fill_me);
|
||||
|
||||
assert (ready)
|
||||
else $error("SD command sender not ready");
|
||||
|
||||
|
||||
$finish;
|
||||
end
|
||||
endmodule
|
||||
Reference in New Issue
Block a user