放弃当拍握手策略

This commit is contained in:
RuigeLee
2024-11-01 16:01:21 +08:00
parent db5fe252d7
commit 9c953d8963
3 changed files with 47 additions and 21 deletions

View File

@@ -191,7 +191,7 @@ trait TLCDRRx{ this: TLCDRBase =>
rxFifo.reset := reset.asBool | isTLWriteSoftReset
rxFifo.io.deq.ready := isTLReadRxFifo
// rxFifo.io.deq.ready := isTLReadRxFifo
when( isTLWriteSoftReset ){
@@ -217,9 +217,37 @@ class TLCDR()(implicit p: Parameters) extends TLCDRBase() with TLCDRTx with TLCD
dirSel := io.mem.wdata
}
io.mem.ready :=
( io.mem.wstrb =/= 0.U & txFifo.io.enq.ready) |
( io.mem.wstrb === 0.U & Mux( io.mem.addr(4,0) === "h1c".U, rxFifo.io.deq.valid, true.B ) )
val isAck = RegInit(false.B)
val rdata = Reg(UInt(32.W))
when( io.mem.fire ){
isAck := false.B
} .elsewhen( io.mem.valid & ~isAck ){
when( io.mem.wstrb =/= 0.U & txFifo.io.enq.ready ){
isAck := true.B
} .otherwise{
when( io.mem.addr(4,0) === "h1c".U & rxFifo.io.deq.valid ){
isAck := true.B
rdata := rxFifo.io.deq.bits
} .elsewhen( io.mem.addr(4,0) === "h18".U ){
isAck := true.B
rdata := rxLen
} .elsewhen( io.mem.addr(4,0) === "h0".U ){
isAck := true.B
rdata := Cat( isRxValid, isRxError, isTxBusy, isTxFull, isTxError)
}
}
}
rxFifo.io.deq.ready := io.mem.valid & ~isAck & io.mem.addr(4,0) === "h1c".U & rxFifo.io.deq.valid
io.mem.ready := isAck
// ( io.mem.wstrb =/= 0.U & txFifo.io.enq.ready) |
// ( io.mem.wstrb === 0.U & Mux( io.mem.addr(4,0) === "h1c".U, rxFifo.io.deq.valid, true.B ) )
@@ -229,12 +257,12 @@ class TLCDR()(implicit p: Parameters) extends TLCDRBase() with TLCDRTx with TLCD
io.interrupt(3) := intRxEnd
io.mem.rdata :=
Mux1H(Seq(
isTLReadStatus -> Cat( isRxValid, isRxError, isTxBusy, isTxFull, isTxError),
isTLReadRxLen -> rxLen,
isTLReadRxFifo -> rxFifo.io.deq.bits
))
io.mem.rdata := rdata
// Mux1H(Seq(
// isTLReadStatus -> ,
// isTLReadRxLen -> rxLen,
// isTLReadRxFifo -> rxFifo.io.deq.bits
// ))