修正spi不能正常通讯的bug

This commit is contained in:
2026-02-14 23:46:47 +08:00
parent 809c2db297
commit 75880ab7cb

View File

@@ -13,6 +13,7 @@ module ShinTopSpiTb(
`include "dev_predef.vh"
/*这个代码不会被使用 DOWN*/
`ifdef DEFINE_SLAVE_DEVICE
`define DEV_NUM 4 //slave num
`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master
@@ -55,7 +56,8 @@ module ShinTopSpiTb(
( spi_miso[2] & ~`ESPI_CSN(2)) |\
( spi_miso[3] & ~`ESPI_CSN(3)) |\
( spi_miso[4] & ~`ESPI_CSN(4))
`endif
`endif/*这个代码不会被使用 UP*/
wire [(`DEV_NUM - 1):0] dDat_w;
wire [(`DEV_NUM - 1):0] uDat_w;
@@ -175,6 +177,7 @@ ShinTop s_ShinTop_Mst(
`include "slave_dev_def.vh"
/*这个代码不会被使用 DOWN*/
`ifdef DEFINE_SLAVE_DEVICE
ShinTop s_ShinTop_slv0(
.clock(clock),
@@ -379,7 +382,7 @@ ShinTop s_ShinTop_slv3(
.io_hwSerial(`HW_SERIAL),
.io_uniCode(0)
);
`endif
`endif/*这个代码不会被使用 UP*/
initial begin
clock = 0;
@@ -500,7 +503,9 @@ end
assign spi_mosi = exChangeRego[7];
`ifndef OLD_SPI_SUPPORT
assign qspi_mosi = (spi_1to4 & transCnt <= 4)? {3'h0, exChangeRego[7]}:exChangeRego[7:4];
assign qspi_mosi = ((spi_1to4 && transCnt < 4)
|| (spi_1to4 && transCnt == 4 && bitCnt < 7)
|| (spi_1to4 && transCnt == 4 && bitCnt == 7 && sck == 1)) ? {3'h0, exChangeRego[7]}:exChangeRego[7:4];
`else
assign qspi_mosi = exChangeRego[7:4];
`endif
@@ -1040,11 +1045,13 @@ task f_write(input [31:0] logh, input [15:0] saddress, input [7:0] scmd, input [
end
endtask
wire [31:0] temp_int_status = s_ShinTop_Mst.mstSlvSwitch.interface_.cReg_intStatus;
task wait_comm_finished(input [16:0] dev_idx);
begin:WAIT_COMM_FINISHED_CODE
real st;
integer is_run;
st = $realtime;
is_run = 1;
@@ -1081,7 +1088,7 @@ task wait_comm_finished(input [16:0] dev_idx);
end
#2000
$display("%x %x %x %x %t", rxBuf[`ARRAY_IDX_OFF], rxBuf[`ARRAY_IDX_OFF + 1], rxBuf[`ARRAY_IDX_OFF + 2], rxBuf[`ARRAY_IDX_OFF + 3], $realtime);
$display("%x %x %x %x %x %t", rxBuf[`ARRAY_IDX_OFF], rxBuf[`ARRAY_IDX_OFF + 1], rxBuf[`ARRAY_IDX_OFF + 2], rxBuf[`ARRAY_IDX_OFF + 3], temp_int_status, $realtime);
if ((rxBuf[`ARRAY_IDX_OFF] & 8'h02) == 8'h02)
begin
is_run = 0;