尝试加入cdr模块,主站上行rsp, tlast还有亚稳态
This commit is contained in:
@@ -5,19 +5,18 @@ import chisel3.util._
|
||||
|
||||
|
||||
class ShinTopIO extends Bundle{
|
||||
// val clk8x = Input(Bool())
|
||||
// val modeSel = Input(Bool())
|
||||
|
||||
// val dDatIn = Input(Bool())
|
||||
// val dDatOut = Output(Bool())
|
||||
// val uDatIn = Input(Bool())
|
||||
// val uDatOut = Output(Bool())
|
||||
val clk8x = Input(Bool())
|
||||
|
||||
val downIn = Flipped( Decoupled(new AXIS_Bundle(8)) )
|
||||
val downOut = Decoupled(new AXIS_Bundle(8))
|
||||
val dDatIn = Input(Bool())
|
||||
val dDatOut = Output(Bool())
|
||||
val uDatIn = Input(Bool())
|
||||
val uDatOut = Output(Bool())
|
||||
|
||||
val upIn = Flipped( Decoupled(new AXIS_Bundle(8)) )
|
||||
val upOut = Decoupled(new AXIS_Bundle(8))
|
||||
// val downIn = Flipped( Decoupled(new AXIS_Bundle(8)) )
|
||||
// val downOut = Decoupled(new AXIS_Bundle(8))
|
||||
|
||||
// val upIn = Flipped( Decoupled(new AXIS_Bundle(8)) )
|
||||
// val upOut = Decoupled(new AXIS_Bundle(8))
|
||||
|
||||
// val qspi =
|
||||
// val interrupt = Output(Bool())
|
||||
@@ -59,6 +58,22 @@ abstract class ShinTopBase extends Module{
|
||||
val slaveParser = Module(new SlaveParser )
|
||||
val masterParser = Module(new MasterParser)
|
||||
|
||||
val downCDRIn = Module(new CDRIn)
|
||||
val upCDRIn = Module(new CDRIn)
|
||||
val downCDROut = Module(new CDROut)
|
||||
val upCDROut = Module(new CDROut)
|
||||
|
||||
|
||||
|
||||
downCDRIn.io.serDat := io.dDatIn
|
||||
downCDRIn.io.overCLK := io.clk8x
|
||||
|
||||
upCDRIn.io.serDat := io.uDatIn
|
||||
upCDRIn.io.overCLK := io.clk8x
|
||||
|
||||
io.dDatOut := downCDROut.io.serDat
|
||||
|
||||
io.uDatOut := upCDROut.io.serDat
|
||||
|
||||
val smUnit = Seq(
|
||||
Module( new SMUnit(depth = 4) ),
|
||||
@@ -180,42 +195,36 @@ abstract class ShinTopBase extends Module{
|
||||
smUnit(7).io.deq := false.B
|
||||
|
||||
|
||||
io.downIn.ready := false.B
|
||||
downCDRIn.io.axis.ready := false.B
|
||||
slaveParser.io.downIn.valid := false.B
|
||||
slaveParser.io.downIn.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
|
||||
slaveParser.io.downOut.ready := false.B
|
||||
masterParser.io.downOut.ready := false.B
|
||||
io.downOut.valid := false.B
|
||||
io.downOut.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
downCDROut.io.axis.valid := false.B
|
||||
downCDROut.io.axis.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
|
||||
io.upIn.ready := false.B
|
||||
upCDRIn.io.axis.ready := false.B
|
||||
slaveParser.io.upIn.valid := false.B
|
||||
slaveParser.io.upIn.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
masterParser.io.upIn.valid := false.B
|
||||
masterParser.io.upIn.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
|
||||
slaveParser.io.upOut.ready := false.B
|
||||
io.upOut.valid := false.B
|
||||
io.upOut.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
upCDROut.io.axis.valid := false.B
|
||||
upCDROut.io.axis.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
trait ShinTopMaster{ this: ShinTopBase =>
|
||||
|
||||
when(io.modeSel === true.B ){
|
||||
masterParser.io.downOut <> io.downOut
|
||||
masterParser.io.upIn <> io.upIn
|
||||
masterParser.io.downOut <> downCDROut.io.axis
|
||||
masterParser.io.upIn <> upCDRIn.io.axis
|
||||
}
|
||||
|
||||
when( io.modeSel === true.B ){
|
||||
@@ -240,12 +249,11 @@ trait ShinTopMaster{ this: ShinTopBase =>
|
||||
|
||||
trait ShinTopSlave{ this: ShinTopBase =>
|
||||
|
||||
|
||||
when( io.modeSel === false.B ){
|
||||
slaveParser.io.downIn <> io.downIn
|
||||
io.downOut <> slaveParser.io.downOut
|
||||
slaveParser.io.upIn <> io.upIn
|
||||
io.upOut <> slaveParser.io.upOut
|
||||
slaveParser.io.downIn <> downCDRIn.io.axis
|
||||
downCDROut.io.axis <> slaveParser.io.downOut
|
||||
slaveParser.io.upIn <> upCDRIn.io.axis
|
||||
upCDROut.io.axis <> slaveParser.io.upOut
|
||||
}
|
||||
|
||||
slaveParser.io.timeStamp := io.timeStamp
|
||||
|
||||
Reference in New Issue
Block a user