在仿真中采用SPI的方式读取主站的中断,判断是否完成通讯,测试基本可用,但是需要提升

This commit is contained in:
2025-08-08 00:58:39 +08:00
parent e8fcce17d9
commit de1b353b0a
2 changed files with 67 additions and 1 deletions

View File

@@ -721,6 +721,72 @@ task f_write(input [31:0] logh, input [15:0] saddress, input [7:0] scmd, input [
end
endtask
task wait_comm_finished();
begin:WAIT_COMM_FINISHED_CODE
real st;
integer is_run;
st = $realtime;
is_run = 1;
txBuf[0] = 8'h00;
txBuf[1] = 8'h78;
txBuf[2] = `SPI_WRITE;
txBuf[3] = 8'h03;
length = 8'h04;
idx = `IF_IQSPI(0);
#5
@(negedge sck)
isReq <= 1;
@(posedge sck) #5
isReq <= 0;
@( negedge isBusy) #1000
begin
end
while (is_run == 1) begin
txBuf[0] = 8'h00;
txBuf[1] = 8'h74;
txBuf[2] = `SPI_READ;
length = 8'h07;
idx = `IF_IQSPI(0);
#5
@(negedge sck)
isReq <= 1;
@(posedge sck) #5
isReq <= 0;
@( negedge isBusy) #1000
begin
end
#2000
//$display("%x %x", rxBuf[3], rxBuf[6]);
if ((rxBuf[3] & 8'h02) == 8'h02)
begin
$display("1111111111");
is_run = 0;
end
if ((rxBuf[6] & 8'h60) != 8'h00)
begin
$display("222222222");
is_run = 0;
end
if (($realtime - st) >= 1000000.0)
begin
$display("333333333");
//is_run = 0;
end
end
end
endtask
initial begin

View File

@@ -235,7 +235,7 @@ def genTrgTransPktCode(gen_name, sm_idx, wlog=True):
def genReadAckPktCode(gen_name, sm_idx, wlog=True):
return '''\n//等待回包\n'''\
+ '''_reset_deadline_ind = 1;\n'''\
+ '''@(posedge isResp or posedge _deadline_ind) #5 begin end\n'''\
+ '''wait_comm_finished();\n'''\
+ f'''$fdisplay(spidata_file, ">>读取回包使用SM{sm_idx}");\n'''\
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,)