Line 90... |
Line 90... |
for (bit_cnt = 0; bit_cnt < 11; bit_cnt = bit_cnt + 1) begin
|
for (bit_cnt = 0; bit_cnt < 11; bit_cnt = bit_cnt + 1) begin
|
ps2_data_r = frame[10 - bit_cnt];
|
ps2_data_r = frame[10 - bit_cnt];
|
ps2_clk_r = #`PS2_PERIOD 0;
|
ps2_clk_r = #`PS2_PERIOD 0;
|
ps2_clk_r = #`PS2_PERIOD 1;
|
ps2_clk_r = #`PS2_PERIOD 1;
|
end
|
end
|
|
wait (ready);
|
if ((bits != rx_data) | (error != expect_error)) begin
|
if ((bits != rx_data) | (error != expect_error)) begin
|
$display("Failed: Frame:0x%x Rx:0x%x Err:%b", frame, rx_data, error);
|
$display("Failed: Frame:0x%x Rx:0x%x Err:%b", frame, rx_data, error);
|
end
|
end
|
ps2_data_r = 1;
|
ps2_data_r = 1;
|
end endtask
|
end endtask
|
Line 104... |
Line 105... |
integer bit_cnt;
|
integer bit_cnt;
|
reg [10:0] frame;
|
reg [10:0] frame;
|
begin
|
begin
|
frame = 0;
|
frame = 0;
|
tx_data = bits;
|
tx_data = bits;
|
wait (~busy)
|
|
send_req = #(`SYS_PERIOD*2) 1;
|
send_req = #(`SYS_PERIOD*2) 1;
|
send_req = #(`SYS_PERIOD*2) 0;
|
send_req = #(`SYS_PERIOD*2) 0;
|
wait (~ps2_data);
|
wait (~ps2_data);
|
for (bit_cnt = 0; bit_cnt < 11; bit_cnt = bit_cnt + 1) begin
|
for (bit_cnt = 0; bit_cnt < 11; bit_cnt = bit_cnt + 1) begin
|
ps2_clk_r = #`PS2_PERIOD 0;
|
ps2_clk_r = #`PS2_PERIOD 0;
|
frame = {frame[9:0], ps2_data};
|
frame = {frame[9:0], ps2_data};
|
ps2_clk_r = #`PS2_PERIOD 1;
|
ps2_clk_r = #`PS2_PERIOD 1;
|
end
|
end
|
|
wait (~busy);
|
if (({bits[0],bits[1],bits[2],bits[3],bits[4],bits[5],bits[6],bits[7]} != frame[9:2]) |
|
if (({bits[0],bits[1],bits[2],bits[3],bits[4],bits[5],bits[6],bits[7]} != frame[9:2]) |
|
frame[10] | (~^frame[9:2] != frame[1]) | ~frame[0]) begin
|
frame[10] | (~^frame[9:2] != frame[1]) | ~frame[0]) begin
|
$display("Failed: Frame:0x%x Tx:0x%x", frame, bits);
|
$display("Failed: Frame:0x%x Tx:0x%x", frame, bits);
|
end
|
end
|
end endtask
|
end endtask
|
|
|
// Test runner
|
// Test runner
|
integer byte;
|
integer byte;
|
always @(negedge sys_rst) begin
|
always @(negedge sys_rst) begin
|
for (byte = 1; byte < 256; byte = byte + 1) begin
|
for (byte = 0; byte < 256; byte = byte + 1) begin
|
// Transmitter test
|
// Transmitter test
|
transmitter_test(byte);
|
transmitter_test(byte);
|
|
|
// Correct case - data ok and error low
|
// Correct case - data ok and error low
|
receiver_test(0, byte, ~^byte, 1, 0);
|
receiver_test(0, byte, ~^byte, 1, 0);
|