📄 can_testbench.v
字号:
send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 6 send_bit(0); // CRC send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC 0 send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 5 send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC send_bit(0); // CRC b send_bit(1); // CRC DELIM send_bit(0); // ACK send_bit(1); // ACK DELIM send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // INTER send_bit(1); // INTER send_bit(1); // INTER end // repeat end join read_receive_buffer; release_rx_buffer_command; #1000 read_register(8'd3, tmp_data); read_receive_buffer; release_rx_buffer_command; read_receive_buffer;// First we receive a msg send_bit(0); // SOF send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(1); // ID send_bit(1); // RTR send_bit(0); // IDE send_bit(0); // r0 send_bit(0); // DLC send_bit(1); // DLC send_bit(1); // DLC send_bit(1); // DLC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 6 send_bit(0); // CRC send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC 0 send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 5 send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC send_bit(0); // CRC b send_bit(1); // CRC DELIM send_bit(0); // ACK send_bit(1); // ACK DELIM send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // INTER send_bit(1); // INTER send_bit(1); // INTER fork begin tx_request_command;// self_reception_request_command; end begin #931; repeat (1) begin send_bit(0); // SOF send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID arbi lost send_bit(1); // RTR send_bit(0); // IDE send_bit(0); // r0 send_bit(0); // DLC send_bit(1); // DLC send_bit(1); // DLC send_bit(1); // DLC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 6 send_bit(0); // CRC send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC 0 send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 5 send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC send_bit(0); // CRC b send_bit(1); // CRC DELIM send_bit(0); // ACK send_bit(1); // ACK DELIM send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // INTER send_bit(1); // INTER send_bit(1); // INTER#6000; send_bit(0); // SOF send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(1); // ID send_bit(1); // RTR send_bit(0); // IDE send_bit(0); // r0 send_bit(0); // DLC send_bit(1); // DLC send_bit(1); // DLC send_bit(1); // DLC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 6 send_bit(0); // CRC send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC 0 send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC 5 send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC send_bit(0); // CRC b send_bit(1); // CRC DELIM send_bit(0); // ACK send_bit(1); // ACK DELIM send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // INTER send_bit(1); // INTER send_bit(1); // INTER end // repeat end join read_receive_buffer; release_rx_buffer_command; #1000 read_register(8'd3, tmp_data); read_receive_buffer; release_rx_buffer_command; read_receive_buffer; #4000000; endendtask // manual_frame_basictask manual_frame_ext; // Testbench sends an extended format frame begin // Switch-on reset mode write_register(8'd0, {7'h0, (`CAN_MODE_RESET)}); // Set Clock Divider register extended_mode = 1'b1; write_register(8'd31, {extended_mode, 7'h0}); // Setting the extended mode // Set Acceptance Code and Acceptance Mask registers write_register(8'd16, 8'ha6); // acceptance code 0 write_register(8'd17, 8'h00); // acceptance code 1 write_register(8'd18, 8'h5a); // acceptance code 2 write_register(8'd19, 8'hac); // acceptance code 3 write_register(8'd20, 8'h00); // acceptance mask 0 write_register(8'd21, 8'h00); // acceptance mask 1 write_register(8'd22, 8'h00); // acceptance mask 2 write_register(8'd23, 8'h00); // acceptance mask 3 //write_register(8'd14, 8'h7a); // rx err cnt//write_register(8'd15, 8'h7a); // tx err cnt//read_register(8'd14, tmp_data); // rx err cnt//read_register(8'd15, tmp_data); // tx err cnt repeat (100) @ (posedge clk); // Switch-off reset mode write_register(8'd0, {7'h0, ~(`CAN_MODE_RESET)}); // After exiting the reset mode sending bus free repeat (11) send_bit(1); // Extended frame format // Writing TX frame information + identifier + data write_register(8'd16, 8'hc5); // Frame format = 1, Remote transmision request = 1, DLC = 5 write_register(8'd17, 8'ha6); // ID[28:21] = a6 write_register(8'd18, 8'h00); // ID[20:13] = 00 write_register(8'd19, 8'h5a); // ID[12:5] = 5a write_register(8'd20, 8'ha8); // ID[4:0] = 15 // write_register(8'd21, 8'h78); RTR does not send any data // write_register(8'd22, 8'h9a); // write_register(8'd23, 8'hbc); // write_register(8'd24, 8'hde); // write_register(8'd25, 8'hf0); // write_register(8'd26, 8'h0f); // write_register(8'd27, 8'hed); // write_register(8'd28, 8'hcb); // Enabling IRQ's (extended mode) write_register(8'd4, 8'hff); // tx_bypassed = 1; // When this signal is on, tx is not looped back to the rx. fork begin tx_request_command;// self_reception_request_command; end begin #771; repeat (1) begin send_bit(0); // SOF send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID a send_bit(0); // ID send_bit(1); // ID send_bit(1); // ID send_bit(0); // ID 6 send_bit(0); // ID send_bit(0); // ID send_bit(0); // ID send_bit(1); // RTR send_bit(1); // IDE send_bit(0); // ID 0 send_bit(0); // ID send_bit(0); // ID send_bit(0); // ID send_bit(0); // ID 0 send_bit(1); // ID stuff send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID 6 send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID a send_bit(1); // ID 1 send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(0); // ID 5 // Force arbitration lost send_bit(1); // RTR send_bit(0); // r1 send_bit(0); // r0 send_bit(0); // DLC send_bit(1); // DLC send_bit(0); // DLC send_bit(1); // DLC send_bit(1); // CRC send_bit(1); // CRC send_bit(0); // CRC 6 send_bit(1); // CRC send_bit(1); // CRC send_bit(1); // CRC send_bit(1); // CRC f send_bit(0); // CRC send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC 2 send_bit(1); // CRC send_bit(0); // CRC send_bit(1); // CRC send_bit(0); // CRC a send_bit(1); // CRC DELIM send_bit(0); // ACK send_bit(1); // ACK DELIM send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // INTER send_bit(1); // INTER send_bit(1); // INTER#80; send_bit(0); // SOF send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID a send_bit(0); // ID send_bit(1); // ID send_bit(1); // ID send_bit(0); // ID 6 send_bit(0); // ID send_bit(0); // ID send_bit(0); // ID send_bit(1); // RTR send_bit(1); // IDE send_bit(0); // ID 0 send_bit(0); // ID send_bit(0); // ID send_bit(0); // ID send_bit(0); // ID 0 send_bit(1); // ID stuff send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID 6 send_bit(1); // ID send_bit(0); // ID send_bit(1); // ID send_bit(0); // ID a send_bit(1); // ID 1 send_bit(0); // ID send_bit(0); // ID // Force arbitration lost send_bit(0); // ID send_bit(1); // ID 5 send_bit(1); // RTR send_bit(0); // r1 send_bit(0); // r0 send_bit(0); // DLC send_bit(1); // DLC send_bit(0); // DLC send_bit(1); // DLC send_bit(0); // CRC send_bit(0); // CRC send_bit(0); // CRC 0 send_bit(0); // CRC send_bit(0); // CRC send_bit(1); // CRC stuff send_bit(0); // CRC send_bit(0); // CRC 0 send_bit(1); // CRC send_bit(1); // CRC send_bit(1); // CRC send_bit(0); // CRC e send_bit(1); // CRC send_bit(1); // CRC send_bit(0); // CRC send_bit(0); // CRC c send_bit(1); // CRC DELIM send_bit(0); // ACK send_bit(1); // ACK DELIM send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // EOF send_bit(1); // INTER
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -