From f1d32655fd690b9cf9b9f8e431f2c58cef4216a0 Mon Sep 17 00:00:00 2001 From: bacon Date: Thu, 22 May 2025 23:47:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0qspi->lvds=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 62 ++++++++++++++++++++++++++++++++++++-- tb/shinTest/gen_pkt.py | 17 +++++++++++ 2 files changed, 77 insertions(+), 2 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index f7584d2..8328ba1 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -769,11 +769,69 @@ initial begin spi_trans( (16'h1800), (`SPI_READ), (64), (`IF_IDX(1)) ); spi_trans( (16'h0800), (`SPI_READ), (64), (`IF_IDX(2)) ); - //spi_trans( (16'h0800), (`SPI_READ), (64), (`IF_IDX(2)) ); - //spi_trans( (16'h0800), (`SPI_READ), (64), (`IF_IDX(2)) ); spi_trans( (16'h2800), (`SPI_READ), (64), (`IF_IDX(3)) ); spi_trans( (16'h3800), (`SPI_READ), (64), (`IF_IDX(4)) ); + + #1000 + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + begin + $fdisplay(spidata_file, "\n--->>>交换数据读dev1_sm1/dev2_sm3/dev3_sm5/dev4_sm7"); + + txBuf[3] = 8'h80; + txBuf[4] = 8'h00; + spi_trans((16'h0306), (`SPI_WRITE), (2), (`IF_IDX(1)) );//dev1_sm1 + + txBuf[3] = 8'h98; + txBuf[4] = 8'h00; + spi_trans((16'h030e), (`SPI_WRITE), (2), (`IF_IDX(2)) );//dev2_sm3 + + txBuf[3] = 8'h81; + txBuf[4] = 8'h00; + spi_trans((16'h0316), (`SPI_WRITE), (2), (`IF_IDX(2)) );//dev2_sm3 + + txBuf[3] = 8'h8c; + txBuf[4] = 8'h00; + spi_trans((16'h031e), (`SPI_WRITE), (2), (`IF_IDX(2)) );//dev2_sm3 + + + for (integer i=0; i < 128; i++) begin + txBuf[i + 3] = i + 1; + end + spi_trans( (16'h1000), (`SPI_WRITE), (128), (`IF_IDX(1)) ); + + for (integer i=0; i < 152; i++) begin + txBuf[i + 3] = i + 2; + end + spi_trans( (16'h2000), (`SPI_WRITE), (152), (`IF_IDX(2)) ); + + for (integer i=0; i < 129; i++) begin + txBuf[i + 3] = i + 3; + end + spi_trans( (16'h3000), (`SPI_WRITE), (129), (`IF_IDX(3)) ); + + for (integer i=0; i < 140; i++) begin + txBuf[i + 3] = i + 4; + end + spi_trans( (16'h4000), (`SPI_WRITE), (140), (`IF_IDX(4)) ); + + `include "seq_2_pkt.vh" + + `DEF_seq_2_pkt_sm(txBuf); + spi_trans( (`MST_TX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) ); + spi_trans( (`MST_RX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) ); + + `DEF_seq_2_pkt(txBuf); + spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_seq_2_pkt_len), (`IF_IDX(0)) ); //写入SM1 + //发布请求 + txBuf[0+3] = `MST_TX_TRG; + spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );//发送SM0 接收SM0, 请求发送 + @(posedge isResp) #5 begin end + + $fdisplay(spidata_file, ">>回包:"); + spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_seq_2_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出 + end + #1000 $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); begin diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 7bd38b8..498d1d6 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -218,6 +218,20 @@ if __name__ == '__main__': genPkt.addSubPkt(0x04, 0, 0x3800, 0x1, 64, data) genPkt.gen("./generated/shin/seq_1_pkt.vh", 1) + + #------------------------------------------------------------------------- + #>>>>>>读 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + genPkt.addSubPkt(3, 0, 0x3000, 0x0, 129, b"\0"*129) + genPkt.addSubPkt(4, 0, 0x4000, 0x0, 140, b"\0"*140) + genPkt.addSubPkt(1, 0, 0x1000, 0x0, 128, b"\0"*128) + genPkt.addSubPkt(2, 0, 0x2000, 0x0, 152, b"\0"*152) + + genPkt.gen("./generated/shin/seq_2_pkt.vh", 1) + #------------------------------------------------------------------------- #>>>>>>同步数据包 @@ -289,5 +303,8 @@ if __name__ == '__main__': genPkt.addSubPkt(random.randint(0, 2048), 0, 0xc0, 0xd, 4, b"\0"*4) genPkt.gen("./generated/shin/bc_r_pkt.vh", 1) + + +