放弃当拍握手策略
This commit is contained in:
@@ -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
|
||||
// ))
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user