@@ -1,8 +1,5 @@
` timescale 1 ns / 1 ps
` define ENABLE_REG_RW1_TEST " generated/log/reg_rw1_tc.log "
module ShinTopSpiTb (
) ;
@@ -12,12 +9,13 @@ module ShinTopSpiTb(
reg [ 15 : 0 ] multiCLK ;
` include " dev_predef.vh "
` ifdef DEFINE_SLAVE_DEVICE
` define DEV_NUM 4 // slave num
` define ALL_DEV_NUM ( ` DEV_NUM + 1 ) // slave + master
` define SPI_CSN_NUM ( ` ALL_DEV_NUM * 3 )
` define SPI_CSN_NUM ( ` ALL_DEV_NUM * 4 )
` define HW_SERIAL 0 // 48'h31303050584c // ( 48'h4c5850303031 )
` define IQSPI_PINS ( N ) ( ` N * 4 + 3 ) : ( ` N * 4 )
@@ -61,7 +59,7 @@ module ShinTopSpiTb(
wire qspi_sck ;
wire [ 3 : 0 ] qspi_mosi ;
// wire [ 40 - 1 : 0 ] qspi_miso ;
wire [ ( ` ALL_DEV_NUM * 4 * 2 - 1 ) : 0 ] qspi_miso ;
wire [ ( ` ALL_DEV_NUM * 4 * 3 - 1 ) : 0 ] qspi_miso ;
integer spidata_file ;
integer c_line ;
@@ -136,6 +134,12 @@ ShinTop s_ShinTop_Mst(
. io_oqspi_isDirIn () ,
. io_oqspi_csn ( ` EQSPI_CSN ( 0 ) ) ,
. io_aqspi_sck ( qspi_sck ) ,
. io_aqspi_mosi ( qspi_mosi ) ,
. io_aqspi_miso ( ` AQSPI_MISO ( 0 ) ) ,
. io_aqspi_isDirIn () ,
. io_aqspi_csn ( ` AQSPI_CSN ( 0 ) ) ,
. io_isSoftReset ( isSoftReset [ 0 ] ) ,
. io_interrupt ( io_int_sig [ 0 ] ) ,
. io_latchPin_0 ( latch0 ) ,
@@ -375,6 +379,11 @@ initial begin
# 8000000000000
# 8000000000000
` ifdef USING_OSPI
# 8000000000000
# 8000000000000
` endif
$ display ( " Time Out !!! " ) ;
$ fclose ( spidata_file ) ;
// $ stop ;
@@ -599,7 +608,23 @@ always @(posedge sck) begin
end else begin
bitCnt < = bitCnt + 1 ;
end
if ( idx > = ( ` ALL_DEV_NUM * 3 ) ) begin
if ( & bitCnt ) begin
byteCnt < = byteCnt + 1 ;
transCnt < = transCnt + 1 ;
if ( ( txBuf [ 2 ] & 8'h80 ) = = = 8'h80 & nextByteCnt > = 5 ) begin
rxBuf [ byteCnt ] < = exChangeRegi ;
// $ display ( " spi read out %x " , exChangeRegi ) ;
end
if ( ( txBuf [ 2 ] & 8'h80 ) = = = 8'h80 & nextByteCnt > = 4 ) begin
exChangeRegi < = isQspi ? { exChangeRegi [ 3 : 0 ] , qspi_mux_miso } : { exChangeRegi [ 6 : 0 ] , spi_mux_miso } ;
end else begin
exChangeRegi < = 0 ;
end
end else begin
exChangeRegi < = isQspi ? { exChangeRegi [ 3 : 0 ] , qspi_mux_miso } : { exChangeRegi [ 6 : 0 ] , spi_mux_miso } ;
end
end else begin
if ( & bitCnt ) begin
byteCnt < = byteCnt + 1 ;
transCnt < = transCnt + 1 ;
@@ -615,6 +640,7 @@ always @(posedge sck) begin
end else begin
exChangeRegi < = isQspi ? { exChangeRegi [ 3 : 0 ] , qspi_mux_miso } : { exChangeRegi [ 6 : 0 ] , spi_mux_miso } ;
end
end
end else begin
isBusy < = # 500000 1'b0 ;
spi_csn [ idx ] < = # 500000 1'b1 ;
@@ -631,9 +657,15 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength, i
begin
txBuf [ 0 ] < = saddress [ 15 : 8 ] ;
txBuf [ 1 ] < = saddress [ 7 : 0 ] ;
if ( sidx > = ( ` ALL_DEV_NUM * 3 ) ) begin
txBuf [ 2 ] < = ( scmd | slength [ 12 : 8 ] ) ;
txBuf [ 3 ] < = slength [ 7 : 0 ] ;
length < = slength + 4 ;
end else begin
txBuf [ 2 ] < = scmd ;
length < = slength + 3 ;
end
idx < = sidx ;
# 500000
@@ -645,9 +677,17 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength, i
@ ( negedge isBusy ) # 100000000
begin
// $ fwrite ( spidata_file , " ------------%5t------------\n " , $ realtime ) ;
$ fwrite ( spidata_file , " T:%t \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n " ,
$ realtime , ( ( sidx > = ` ALL_DEV_NUM ) ? ( ( sidx > = ( ` ALL_DEV_NUM * 2 ) ) ? ( sidx - ( ` ALL_DEV_NUM * 2 ) ) : ( sidx - ` ALL_DEV_NUM ) ) : sidx ) , txBuf [ 0 ] , txBuf [ 1 ] ,
( ( txBuf [ 2 ] = = 0 ) ? " Write " : " Read " ) , slength ) ;
$ fwrite ( spidata_file , " T:%t \tdev:%4d(%4d) , addr:0x%02h%02h, %s, len:%4d (0x%02h%02h) \n " ,
$ realtime ,
sidx % ( ` ALL_DEV_NUM ) , sidx ,
txBuf [ 0 ] ,
txBuf [ 1 ] ,
( ( ( txBuf [ 2 ] & 8'h80 ) = = 0 ) ? " Write " : " Read " ) ,
slength ,
txBuf [ 2 ] , txBuf [ 3 ] ) ;
if ( sidx > = ( ` ALL_DEV_NUM * 3 ) ) begin _ pos = 4 ; end
else begin _ pos = 3 ; end
if ( ( ( saddress = = 16'h0800 )
| | ( saddress = = 16'h1000 )
@@ -656,9 +696,15 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength, i
| | ( saddress = = 16'h2800 )
| | ( saddress = = 16'h3000 )
| | ( saddress = = 16'h3800 )
| | ( saddress = = 16'h4000 ) )
&& ( ( sidx = = 0 ) | | ( sidx = = ` ALL_DEV_NUM ) | | ( sidx = = ( ` ALL_DEV_NUM * 2 ) ) ) ) begin
_ pos = 3 ;
| | ( saddress = = 16'h4000 )
)
&& ( ( sidx = = 0 )
| | ( sidx = = ` ALL_DEV_NUM )
| | ( sidx = = ( ` ALL_DEV_NUM * 2 ) )
| | ( sidx = = ( ` ALL_DEV_NUM * 3 ) )
)
) begin
for ( integer _ k = 0 ; _ k < 4 ; _ k + + ) begin
if ( scmd = = 0 ) begin
$ fwrite ( spidata_file , " %02h " , txBuf [ _ k + _ pos ] ) ;
@@ -741,9 +787,9 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength, i
end else begin
for ( integer i = 0 ; i < slength ; i + + ) begin
if ( scmd = = 0 ) begin
$ fwrite ( spidata_file , " %02h " , txBuf [ i + 3 ] ) ;
$ fwrite ( spidata_file , " %02h " , txBuf [ i + _ pos ] ) ;
end else begin
$ fwrite ( spidata_file , " %02h " , rxBuf [ i + 3 ] ) ;
$ fwrite ( spidata_file , " %02h " , rxBuf [ i + _ pos ] ) ;
end
c_line = 0 ;
if ( ( i + 1 ) % 16 = = 0 ) begin
@@ -820,12 +866,35 @@ always @(negedge io_int_sig[4]) begin
$ fdisplay ( spidata_file , " **SLV3 INT CLEAR: %t " , $ realtime ) ;
end
// ` define USING_IQSPI
// ` define USING_OSPI
// ` define USING_OQSPI
// ` define USING_AQSPI
` ifdef USING_IQSPI
` define INTERFACE_IDX 0 // internal spi
` define ARRAY_IDX_OFF 3
` endif
` ifdef USING_OSPI
` define INTERFACE_IDX ( ` ALL_DEV_NUM ) // internal spi
` define ARRAY_IDX_OFF 3
` endif
` ifdef USING_OQSPI
` define INTERFACE_IDX ( ` ALL_DEV_NUM * 2 ) // internal spi
` define ARRAY_IDX_OFF 3
` endif
` ifdef USING_AQSPI
` define INTERFACE_IDX ( ` ALL_DEV_NUM * 3 ) // internal spi
` define ARRAY_IDX_OFF 4
` endif
` define INTERFACE_IDX 0 // internal spi
` define IF_IDX ( idx ) ( ( ` INTERFACE_IDX ) + ( idx ) )
` define IF_IQSPI ( idx ) ( ( idx ) )
` define IF_OQSPI ( idx ) ( ( ` ALL_DEV_NUM * 2 ) + ( idx ) )
` define IF_AQSPI ( idx ) ( ( ` ALL_DEV_NUM * 3 ) + ( idx ) )
` define IF_OSPI ( idx ) ( ( ` ALL_DEV_NUM ) + ( idx ) )
` define SPI_WRITE 8'h00
` define SPI_READ 8'h80
@@ -865,14 +934,14 @@ end
if ( cmd = = ( ` SPI_WRITE ) ) begin \
f_write ( logh , addr , cmd , len ) ; \
for ( integer _ k = 0 ; _ k < len ; _ k + + ) begin \
$ fwrite ( logh , " 8'h%02h " , txBuf [ 3 + _ k ] ) ; \
$ fwrite ( logh , " 8'h%02h " , txBuf [ ` ARRAY_IDX_OFF + _ k ] ) ; \
end \
spi_trans ( addr , cmd , len , iface ) ; \
end else begin \
spi_trans ( addr , cmd , len , iface ) ; \
f_write ( logh , addr , cmd , len ) ; \
for ( integer _ k = 0 ; _ k < len ; _ k + + ) begin \
$ fwrite ( logh , " 8'h%02h " , rxBuf [ 3 + _ k ] ) ; \
$ fwrite ( logh , " 8'h%02h " , rxBuf [ ` ARRAY_IDX_OFF + _ k ] ) ; \
end \
end \
$ fwrite ( logh , " \n " )
@@ -892,37 +961,22 @@ task wait_comm_finished(input [16:0] dev_idx);
st = $ realtime ;
is_run = 1 ;
` ifdef enable_wait_clear_int
txBuf [ 0 ] = 8'h00 ;
txBuf [ 1 ] = 8'h78 ;
txBuf [ 2 ] = ` SPI_WRITE ;
txBuf [ 3 ] = 8'h03 ;
txBuf [ 4 ] = 8'h00 ;
txBuf [ 5 ] = 8'h00 ;
txBuf [ 6 ] = 8'h00 ;
length = 8'h07 ;
idx = ` IF_IQSPI ( dev_idx ) ;
# 500000
@ ( negedge sck )
isReq < = 1 ;
@ ( posedge sck ) # 500000
isReq < = 0 ;
@ ( negedge isBusy ) # 100000000
begin
end
` endif
while ( is_run = = 1 ) begin
txBuf [ 0 ] = 8'h00 ;
txBuf [ 1 ] = 8'h74 ;
txBuf [ 2 ] = ` SPI_READ ;
if ( dev_idx > = ( ` ALL_DEV_NUM * 3 ) ) begin
txBuf [ 2 ] < = ( ` SPI_READ | 8'h0 ) ;
txBuf [ 3 ] < = 8'h04 ;
length = 8'h08 ;
// $ display ( " using AQspi " ) ;
end else begin
txBuf [ 2 ] < = ` SPI_READ ;
length = 8'h07 ;
idx = ` IF_IQSPI ( dev_idx ) ;
// $ display ( " using iqspi " ) ;
end
idx = dev_idx ;
# 500000
@ ( negedge sck )
@@ -936,11 +990,11 @@ task wait_comm_finished(input [16:0] dev_idx);
end
# 100000000
// $ display ( " %x %x " , rxBuf [ 3 ] , rxBuf [ 6 ] ) ;
if ( ( rxBuf [ 3 ] & 8'h02 ) = = 8'h02 )
if ( ( rxBuf [ ` ARRAY_IDX_OFF ] & 8'h02 ) = = 8'h02 )
begin
is_run = 0 ;
end
if ( ( rxBuf [ 6 ] & 8'h60 ) != 8'h00 )
if ( ( rxBuf [ ` ARRAY_IDX_OFF + 3 ] & 8'h60 ) != 8'h00 )
begin
$ display ( " error occur " ) ;
is_run = 0 ;
@@ -959,154 +1013,6 @@ initial begin
# 50000000
` ifdef ENABLE_REG_RW1_TEST
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
测试用例
1 . 从IP中读取寄存器 , 上电后的寄存器期望值为0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * /
begin : READ_REG_TESTCASE
` BEGIN_TESTCASE ( ` ENABLE_REG_RW1_TEST ) ;
_ t_start = $ realtime ;
$ fdisplay ( spidata_file , " 测试用例: 从IP中读取寄存器, 上电后的寄存器期望值为0 " ) ;
` SPI_TRANS ( ( 16'h00 ) , ( ` SPI_READ ) , ( 64 ) , ( ` IF_OSPI ( 0 ) ) ) ;
` SPI_TRANS ( ( 16'h00 ) , ( ` SPI_READ ) , ( 64 ) , ( ` IF_OSPI ( 1 ) ) ) ;
` SPI_TRANS ( ( 16'h00 ) , ( ` SPI_READ ) , ( 64 ) , ( ` IF_OSPI ( 2 ) ) ) ;
` SPI_TRANS ( ( 16'h00 ) , ( ` SPI_READ ) , ( 64 ) , ( ` IF_OSPI ( 3 ) ) ) ;
` SPI_TRANS ( ( 16'h00 ) , ( ` SPI_READ ) , ( 64 ) , ( ` IF_OSPI ( 4 ) ) ) ;
_ t_end = $ realtime ;
$ fdisplay ( spidata_file , " 该测试用例运行时间:%t\n " , _ t_end - _ t_start ) ;
` END_TESTCASE ( ` ENABLE_REG_RW1_TEST ) ;
end
` endif
begin : SETTING_INTERFACE
if ( ( ` INTERFACE_IDX ) = = ` ALL_DEV_NUM ) begin
$ fdisplay ( spidata_file , " \n\n从内部QSPI配置使用外部的SPI接口访问EasyBus " ) ;
txBuf [ 0 + 3 ] = 8'h01 ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 0 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 1 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 2 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 3 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 4 ) ) ) ;
end else if ( ( ` INTERFACE_IDX ) = = ( ` ALL_DEV_NUM * 2 ) ) begin
$ fdisplay ( spidata_file , " \n\n从内部QSPI配置使用外部的QSPI接口访问EasyBus " ) ;
txBuf [ 0 + 3 ] = 8'h02 ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 0 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 1 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 2 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 3 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 4 ) ) ) ;
end else begin
$ fdisplay ( spidata_file , " \n\n从内部QSPI接口访问EasyBus " ) ;
txBuf [ 0 + 3 ] = 8'h00 ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 0 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 1 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 2 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 3 ) ) ) ;
spi_trans ( ( 16'h09 ) , ( ` SPI_WRITE ) , ( 1 ) , ( ` IF_OSPI ( 4 ) ) ) ;
end
end
` ifdef ENABLE_INT_INIT_TEST
begin : CHECK_INTERRUPT_SIG
$ fdisplay ( spidata_file , " \n\n测试用例: 检查设备的INTERRUPT信号 " ) ;
@ ( posedge clock ) begin
if ( io_int_sig [ 0 ] ) $ fdisplay ( spidata_file , " **MST Interrupt. " ) ;
if ( io_int_sig [ 1 ] ) $ fdisplay ( spidata_file , " **SLV0 Interrupt. " ) ;
if ( io_int_sig [ 2 ] ) $ fdisplay ( spidata_file , " **SLV1 Interrupt. " ) ;
if ( io_int_sig [ 3 ] ) $ fdisplay ( spidata_file , " **SLV2 Interrupt. " ) ;
if ( io_int_sig [ 4 ] ) $ fdisplay ( spidata_file , " **SLV3 Interrupt. " ) ;
end
$ fdisplay ( spidata_file , " -检查中断 " ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -清中断 " ) ;
txBuf [ 0 + 3 ] = 8'h00 ;
txBuf [ 1 + 3 ] = 8'h00 ;
txBuf [ 2 + 3 ] = 8'h00 ;
txBuf [ 3 + 3 ] = 8'h80 ;
spi_trans ( ( 16'h78 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h78 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h78 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h78 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h78 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -检查中断 " ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 14 ) , ( ` IF_IDX ( 4 ) ) ) ;
end
begin : CHECK_INTERRUPT_CFG_REG
$ fdisplay ( spidata_file , " \n\n测试用例: 检查设备的INTERRUPT信号设置寄存器 " ) ;
$ fdisplay ( spidata_file , " -检查中断 " ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -设置中断 " ) ;
txBuf [ 0 + 3 ] = 8'h00 ;
txBuf [ 1 + 3 ] = 8'h00 ;
txBuf [ 2 + 3 ] = 8'h00 ;
txBuf [ 3 + 3 ] = 8'h00 ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -检查中断 " ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -设置中断 " ) ;
txBuf [ 0 + 3 ] = 8'h0F ;
txBuf [ 1 + 3 ] = 8'h00 ;
txBuf [ 2 + 3 ] = 8'h00 ;
txBuf [ 3 + 3 ] = 8'h00 ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 0 ) ) ) ;
txBuf [ 0 + 3 ] = 8'h00 ;
txBuf [ 1 + 3 ] = 8'hFF ;
txBuf [ 2 + 3 ] = 8'h00 ;
txBuf [ 3 + 3 ] = 8'h00 ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_WRITE ) , ( 4 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -检查中断 " ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h70 ) , ( ` SPI_READ ) , ( 4 ) , ( ` IF_IDX ( 4 ) ) ) ;
$ fdisplay ( spidata_file , " -中断改为脉冲模式 " ) ;
txBuf [ 3 ] = 8'h10 ;
txBuf [ 4 ] = 8'h8A ;
spi_trans ( ( 16'h7c ) , ( ` SPI_WRITE ) , ( 2 ) , ( ` IF_IDX ( 0 ) ) ) ;
spi_trans ( ( 16'h7c ) , ( ` SPI_WRITE ) , ( 2 ) , ( ` IF_IDX ( 1 ) ) ) ;
spi_trans ( ( 16'h7c ) , ( ` SPI_WRITE ) , ( 2 ) , ( ` IF_IDX ( 2 ) ) ) ;
spi_trans ( ( 16'h7c ) , ( ` SPI_WRITE ) , ( 2 ) , ( ` IF_IDX ( 3 ) ) ) ;
spi_trans ( ( 16'h7c ) , ( ` SPI_WRITE ) , ( 2 ) , ( ` IF_IDX ( 4 ) ) ) ;
end
` endif
` include " tc_runlist.vh "