From df175dc09927bee78868f58f0d8f69caaf7baeb5 Mon Sep 17 00:00:00 2001 From: RuigeLee Date: Mon, 4 Nov 2024 16:47:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=BB=E7=BA=BFmux=E7=9A=84bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scala/backBoard/pico/BackSystem.scala | 4 +-- tb/sw/src/SlvMain.c | 31 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/scala/backBoard/pico/BackSystem.scala b/src/main/scala/backBoard/pico/BackSystem.scala index 3c34ab3..ba169e9 100644 --- a/src/main/scala/backBoard/pico/BackSystem.scala +++ b/src/main/scala/backBoard/pico/BackSystem.scala @@ -155,8 +155,8 @@ class BackSysImp(outer: BackSys) extends LazyModuleImp(outer) with HasBackParame sram.io.mem.valid := pico.io.mem.valid & pico.io.mem.addr.extract(31) === "b1".U - cdr.io.mem.valid := pico.io.mem.valid & pico.io.mem.addr.extract(31) =/= "b1".U & pico.io.mem.addr.extract(11) === "b0".U & ~pico.io.mem.instr - gpio.io.mem.valid := pico.io.mem.valid & pico.io.mem.addr.extract(31) =/= "b1".U & pico.io.mem.addr.extract(11) === "b1".U & ~pico.io.mem.instr + cdr.io.mem.valid := pico.io.mem.valid & pico.io.mem.addr.extract(31) =/= "b1".U & pico.io.mem.addr.extract(10) === "b0".U & ~pico.io.mem.instr + gpio.io.mem.valid := pico.io.mem.valid & pico.io.mem.addr.extract(31) =/= "b1".U & pico.io.mem.addr.extract(10) === "b1".U & ~pico.io.mem.instr pico.io.mem.ready := Mux( pico.io.mem.instr | pico.io.mem.addr.extract(31) === "b1".U, sram.io.mem.ready, diff --git a/tb/sw/src/SlvMain.c b/tb/sw/src/SlvMain.c index 3938fad..b112b52 100644 --- a/tb/sw/src/SlvMain.c +++ b/tb/sw/src/SlvMain.c @@ -64,7 +64,7 @@ void main() readDat = *cdr_rxFifo; if( operator == 0 ){ - slvNum = 64 - ( downRecvLen >> 3 ); + uint32_t localLen = 8; uint32_t downSendLen = downRecvLen - 8; @@ -79,6 +79,8 @@ void main() readDat = *cdr_rxFifo; } + + if(!isLast){ // 下行转发新建包头 *cdr_txLen = downRecvLen; //downSendLen + 8 @@ -91,8 +93,8 @@ void main() "andi ra, sp, 0x08\n" "1:\n" "bnez ra, 1b\n" //error 速度不够,不再检查接收 - "lw t1, 0x01c(x0)\n" - "sw t1, 0x008(x0)\n" + "lw t2, 0x01c(x0)\n" + "sw t2, 0x008(x0)\n" ); //*cdr_0_tx_txFifo = *cdr_0_rx_rxFifo; //接收即发送 } @@ -105,7 +107,7 @@ void main() "1:\n" "bnez ra, 1b\n" //error 速度不够,不再检查接收 // "lui t0, %hi(0x40000000)\n" - "lw t1, 0x01c(x0)\n" + "lw t2, 0x01c(x0)\n" ); } } @@ -202,8 +204,8 @@ void main() "andi ra, sp, 0x80\n" "1:\n" "bnez ra, 1b\n" //error 速度不够,不再检查接收 - "lw t1, 0x01c(x0)\n" - "sw t1, 0x008(x0)\n" + "lw t2, 0x01c(x0)\n" + "sw t2, 0x008(x0)\n" ); // *cdr_1_tx_txFifo = *cdr_1_rx_rxFifo; //接收即发送 @@ -239,15 +241,16 @@ void main() } - //等待发送完成标志 - asm volatile ( - "1:\n" - "andi ra, sp, 0x01\n" - "beqz ra, 1b\n" - "andi sp, sp, 0xFE\n" - ); - + //等待发送完成标志 + asm volatile ( + "1:\n" + "andi ra, sp, 0x01\n" + "beqz ra, 1b\n" + "andi sp, sp, 0xFE\n" + ); + slvNum = 64 - ( downRecvLen >> 3 ); + *WriteGpio = 1 << slvNum; } else if ( operator == 1 ){ error();