未完成tx拆解

This commit is contained in:
RuigeLee
2023-10-12 18:37:12 +08:00
parent af4e95fa47
commit bb35dffb84
3 changed files with 58 additions and 46 deletions

View File

@@ -0,0 +1,40 @@
package MAC
import chisel3._
import chisel3.util._
class Transmit_Enq_Ctrl_Bundle extends Bundle{
}
class Transmit_Deq_Ctrl_Bundle extends Bundle{
}
class Transmit_Enq_Bundle extends Bundle{
val data = Decoupled(UInt(32.W))
val ctrl = Decoupled(new RevBuff_Enq_Ctrl_Bundle)
}
class Transmit_Deq_Bundle extends Bundle{
val data = Decoupled(UInt(32.W))
val ctrl = Decoupled(new RevBuff_Deq_Ctrl_Bundle)
}
class TxBuffIO extends Bundle{
val enq = Flipped(new Transmit_Enq_Bundle)
val deq = new Transmit_Deq_Bundle
}
class TxBuff extends Module{
val io: TxBuffIO = IO(new TxBuffIO)
}

View File

@@ -714,7 +714,6 @@ val rxethmac = withClockAndReset(io.mrx_clk_pad_i.asClock, io.asyncReset)( Modul
wishbone.io.r_TxEn := r_TxEn wishbone.io.r_TxEn := r_TxEn
wishbone.io.r_RxEn := r_RxEn wishbone.io.r_RxEn := r_RxEn
wishbone.io.r_TxBDNum := r_TxBDNum
TxB_IRQ := wishbone.io.TxB_IRQ TxB_IRQ := wishbone.io.TxB_IRQ
TxE_IRQ := wishbone.io.TxE_IRQ TxE_IRQ := wishbone.io.TxE_IRQ
RxB_IRQ := false.B RxB_IRQ := false.B

View File

@@ -46,31 +46,24 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
//Register //Register
val r_TxEn = Input(Bool()) // Transmit enable val r_TxEn = Input(Bool()) // Transmit enable
val r_RxEn = Input(Bool()) // Receive enable
val r_TxBDNum = Input(UInt(8.W)) // Receive buffer descriptor number
// Interrupts // Interrupts
val TxB_IRQ = Output(Bool()) val TxB_IRQ = Output(Bool())
val TxE_IRQ = Output(Bool()) val TxE_IRQ = Output(Bool())
// val Busy_IRQ = Output(Bool())
val BlockingTxStatusWrite = Output(Bool()) val BlockingTxStatusWrite = Output(Bool())
val ReadTxDataFromFifo_sync = Input(Bool()) val ReadTxDataFromFifo_sync = Input(Bool())
val TxData_wb = Output(UInt(32.W)) val TxData_wb = Output(UInt(32.W))
val TxValidBytesLatched = Output(UInt(2.W)) val TxValidBytesLatched = Output(UInt(2.W))
val TxStartFrm_wb = Output(Bool()) val TxStartFrm_wb = Output(Bool())
val TxStartFrm_syncb = Input(Bool()) val TxStartFrm_syncb = Input(Bool())
val TxEndFrm_wb = Output(Bool())
val TxUnderRun_wb = Output(Bool()) val TxUnderRun_wb = Output(Bool())
val TxEndFrm_wb = Output(Bool())
val TxRetrySync = Input(Bool()) val TxRetrySync = Input(Bool())
val TxAbortSync = Input(Bool()) // Transmit packet abort val TxAbortSync = Input(Bool()) // Transmit packet abort
val TxDoneSync = Input(Bool()) // Transmission ended val TxDoneSync = Input(Bool()) // Transmission ended
@@ -79,22 +72,22 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val r_RxEn = Input(Bool()) // Receive enable
val RxDataLatched2_rxclk = Input(UInt(32.W)) val RxDataLatched2_rxclk = Input(UInt(32.W))
val WriteRxDataToFifoSync = Input(Bool()) val WriteRxDataToFifoSync = Input(Bool())
val RxAbortSync = Input(Bool()) val RxAbortSync = Input(Bool())
val LatchedRxLength_rxclk = Input(UInt(16.W)) val LatchedRxLength_rxclk = Input(UInt(16.W))
val RxStatusInLatched_rxclk = Input(UInt(9.W)) val RxStatusInLatched_rxclk = Input(UInt(9.W))
val ShiftEndedSync = Input(Bool()) val ShiftEndedSync = Input(Bool())
val RxReady = Output(Bool()) val RxReady = Output(Bool())
val rxDeq = new RevBuff_Enq_Bundle val rxDeq = new RevBuff_Enq_Bundle
val txEnq = Flipped(new TxBuff_Deq_Bundle)
} }
@@ -102,12 +95,6 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val io = IO(new MacTileLinkIO) val io = IO(new MacTileLinkIO)
val ShiftEndedSyncPluse = io.ShiftEndedSync & ~RegNext(io.ShiftEndedSync, false.B) val ShiftEndedSyncPluse = io.ShiftEndedSync & ~RegNext(io.ShiftEndedSync, false.B)
val RxAbortPluse = io.RxAbortSync & ~RegNext(io.RxAbortSync, false.B) val RxAbortPluse = io.RxAbortSync & ~RegNext(io.RxAbortSync, false.B)
val WriteRxDataToFifoSyncPluse = io.WriteRxDataToFifoSync & ~RegNext(io.WriteRxDataToFifoSync, false.B) val WriteRxDataToFifoSyncPluse = io.WriteRxDataToFifoSync & ~RegNext(io.WriteRxDataToFifoSync, false.B)
@@ -162,12 +149,15 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val TxStartFrm_wb = RegInit(false.B); io.TxStartFrm_wb := TxStartFrm_wb
when( io.txEnq.ctrl.fire ){
TxStartFrm_wb := true.B
} .elsewhen(io.TxStartFrm_syncb){
TxStartFrm_wb := false.B
}
@@ -180,10 +170,13 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val TxRetryPacket = RegInit(false.B) val TxRetryPacket = RegInit(false.B)
val TxRetryPacket_NotCleared = RegInit(false.B) val TxRetryPacket_NotCleared = RegInit(false.B)
val TxDonePacket = RegInit(false.B) val TxDonePacket = RegInit(false.B)
val TxDonePacket_NotCleared = RegInit(false.B) val TxDonePacket_NotCleared = RegInit(false.B)
val TxAbortPacket = RegInit(false.B) val TxAbortPacket = RegInit(false.B)
val TxAbortPacket_NotCleared = RegInit(false.B) val TxAbortPacket_NotCleared = RegInit(false.B)
val TxBDReady = RegInit(false.B) val TxBDReady = RegInit(false.B)
val TxBDAddress = RegInit(0.U(7.W)) //[7:1] val TxBDAddress = RegInit(0.U(7.W)) //[7:1]
@@ -199,7 +192,7 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val TxStatusWrite = Wire(Bool()) val TxStatusWrite = Wire(Bool())
val TxLength = RegInit(0.U(16.W)) val TxLength = RegInit(0.U(16.W))
val TxStatus = RegInit(0.U(4.W)) //[14:11] val TxStatus = RegInit(0.U(4.W)) //[14:11]
val TxStartFrm_wb = RegInit(false.B); io.TxStartFrm_wb := TxStartFrm_wb
val TxRetryPulse = io.TxRetrySync & ~RegNext(io.TxRetrySync, false.B) val TxRetryPulse = io.TxRetrySync & ~RegNext(io.TxRetrySync, false.B)
val TxDonePulse = io.TxDoneSync & ~RegNext(io.TxDoneSync, false.B) val TxDonePulse = io.TxDoneSync & ~RegNext(io.TxDoneSync, false.B)
val TxAbortPulse = io.TxAbortSync & ~RegNext(io.TxAbortSync, false.B) val TxAbortPulse = io.TxAbortSync & ~RegNext(io.TxAbortSync, false.B)
@@ -243,11 +236,6 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val StartOccured = RegInit(false.B)
val BlockReadTxDataFromMemory = RegInit(false.B) val BlockReadTxDataFromMemory = RegInit(false.B)
@@ -527,21 +515,8 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
// Start: Generation of the TxStartFrm_wb which is then synchronized to the MTxClk
when(TxBDReady & ~StartOccured & (tx_fifo.io.full | TxLength === 0.U)){
TxStartFrm_wb := true.B
} .elsewhen(io.TxStartFrm_syncb){
TxStartFrm_wb := false.B
}
// StartOccured: TxStartFrm_wb occurs only ones at the beginning. Then it's blocked.
when(TxStartFrm_wb){
StartOccured := true.B
} .elsewhen(ResetTxBDReady){
StartOccured := false.B
}
// TxEndFrm_wb: indicator of the end of frame // TxEndFrm_wb: indicator of the end of frame
when((TxLength === 0.U) & tx_fifo.io.almost_empty & io.TxUsedData){ when((TxLength === 0.U) & tx_fifo.io.almost_empty & io.TxUsedData){
@@ -766,8 +741,6 @@ abstract class MacTileLinkBase(edgeIn: TLEdgeIn, edgeOut: TLEdgeOut) extends Mod
val tlMstDReady = RegInit(true.B) val tlMstDReady = RegInit(true.B)
dontTouch(tlMstDReady)
dontTouch(tlMstAValid_dbg)
io.tlMst.D.ready := tlMstDReady io.tlMst.D.ready := tlMstDReady