在仿真中采用SPI的方式读取主站的中断,判断是否完成通讯,测试基本可用,但是需要提升
This commit is contained in:
@@ -808,6 +808,72 @@ task f_write(input [31:0] logh, input [15:0] saddress, input [7:0] scmd, input [
|
|||||||
end
|
end
|
||||||
endtask
|
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
|
initial begin
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ def genTrgTransPktCode(gen_name, sm_idx, wlog=True):
|
|||||||
def genReadAckPktCode(gen_name, sm_idx, wlog=True):
|
def genReadAckPktCode(gen_name, sm_idx, wlog=True):
|
||||||
return '''\n//等待回包\n'''\
|
return '''\n//等待回包\n'''\
|
||||||
+ '''_reset_deadline_ind = 1;\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'''\
|
+ 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,)
|
+ '''%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,)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user