修复位宽推断错误
This commit is contained in:
@@ -610,33 +610,33 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
||||
|
||||
|
||||
|
||||
cReg.mstOrSlv := RegEnable( dataw(1,0), 0.U, isEnW & addrw === "h0".U & cReg.mstOrSlv === 0.U )
|
||||
cReg.mstOrSlv := RegEnable( dataw(1,0), 0.U(2.W), isEnW & addrw === "h0".U & cReg.mstOrSlv === 0.U )
|
||||
|
||||
|
||||
cReg.busRate := RegEnable( dataw, "h55".U, isEnW & addrw === "h8".U & cReg.mstOrSlv === 0.U )
|
||||
cReg.spiSel := RegEnable( dataw(1,0), 1.U, isEnW & addrw === "h9".U & cReg.mstOrSlv === 0.U )
|
||||
cReg.busRate := RegEnable( dataw, "h55".U(8.W), isEnW & addrw === "h8".U & cReg.mstOrSlv === 0.U )
|
||||
cReg.spiSel := RegEnable( dataw(1,0), 1.U(2.W), isEnW & addrw === "h9".U & cReg.mstOrSlv === 0.U )
|
||||
|
||||
cReg.pllCtrl :=
|
||||
Cat(
|
||||
RegEnable( dataw, "b10000000".U, isEnW & addrw === "h1b".U ),
|
||||
RegEnable( dataw, "b00000000".U, isEnW & addrw === "h1a".U ),
|
||||
RegEnable( dataw, "b11000000".U, isEnW & addrw === "h19".U ),
|
||||
RegEnable( dataw, "b01011101".U, isEnW & addrw === "h18".U )
|
||||
RegEnable( dataw, "b10000000".U(8.W), isEnW & addrw === "h1b".U ),
|
||||
RegEnable( dataw, "b00000000".U(8.W), isEnW & addrw === "h1a".U ),
|
||||
RegEnable( dataw, "b11000000".U(8.W), isEnW & addrw === "h19".U ),
|
||||
RegEnable( dataw, "b01011101".U(8.W), isEnW & addrw === "h18".U )
|
||||
)
|
||||
|
||||
cReg.xtal :=
|
||||
Cat(
|
||||
0.U(16.W),
|
||||
RegEnable( dataw, "b00000101".U, isEnW & addrw === "h1d".U ),
|
||||
RegEnable( dataw, "b00010101".U, isEnW & addrw === "h1c".U )
|
||||
RegEnable( dataw, "b00000101".U(8.W), isEnW & addrw === "h1d".U ),
|
||||
RegEnable( dataw, "b00010101".U(8.W), isEnW & addrw === "h1c".U )
|
||||
)
|
||||
|
||||
mReg.txSM := RegEnable( dataw(2,1), 0.U, isEnW & addrw === "h20".U )
|
||||
mReg.rxSM := RegEnable( dataw(4,3), 0.U, isEnW & addrw === "h20".U )
|
||||
mReg.txSM := RegEnable( dataw(2,1), 0.U(2.W), isEnW & addrw === "h20".U )
|
||||
mReg.rxSM := RegEnable( dataw(4,3), 0.U(2.W), isEnW & addrw === "h20".U )
|
||||
// mReg.txLength := Cat( RegEnable( dataw, 0.U, isEnW & addrw === "h22".U ), RegEnable( dataw, 0.U, isEnW & addrw === "h21".U ) )
|
||||
|
||||
( 0 until 128 ).map{ i =>
|
||||
cReg.custom(i) := RegEnable( dataw, 0.U, isEnW & (addrw === ("h180".U(16.W) + i.U)) )
|
||||
cReg.custom(i) := RegEnable( dataw, 0.U(8.W), isEnW & (addrw === ("h180".U(16.W) + i.U)) )
|
||||
}
|
||||
|
||||
val rplTimeStampTx = RegInit(0.U(16.W))
|
||||
@@ -729,24 +729,24 @@ trait InterfaceLVDSop{ this: InterfaceBase =>
|
||||
|
||||
( 0 until 16 ).map{ i =>
|
||||
sReg.ebmmu(i).lAddr := Cat(
|
||||
RegEnable( io.lvds.dataw(5,0), 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h203".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h202".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h201".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h200".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw(5,0), 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h203".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h202".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h201".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h200".U(16.W) + (10*i).U )) ),
|
||||
)
|
||||
|
||||
sReg.ebmmu(i).pAddr := Cat(
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h205".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h204".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h205".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h204".U(16.W) + (10*i).U )) ),
|
||||
)
|
||||
|
||||
sReg.ebmmu(i).length := Cat(
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h207".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h206".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h207".U(16.W) + (10*i).U )) ),
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h206".U(16.W) + (10*i).U )) ),
|
||||
)
|
||||
|
||||
sReg.ebmmu(i).op :=
|
||||
RegEnable( io.lvds.dataw, 0.U, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h208".U(16.W) + (10*i).U )) )
|
||||
RegEnable( io.lvds.dataw, 0.U(8.W), io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h208".U(16.W) + (10*i).U )) )
|
||||
|
||||
sReg.ebmmu(i).isEnable :=
|
||||
RegEnable( io.lvds.dataw.extract(0), false.B, io.lvds.isEnW & isSlvMode & (io.lvds.addrw === ( "h209".U(16.W) + (10*i).U )) )
|
||||
@@ -1039,18 +1039,18 @@ trait InterfaceWdt{ this: InterfaceBase =>
|
||||
|
||||
cReg.wdtEnable :=
|
||||
Cat(
|
||||
RegEnable( dataw(1,0), 0.U, isEnW & addrw === "h406".U ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h405".U ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h404".U ),
|
||||
RegEnable( dataw(1,0), 0.U(2.W), isEnW & addrw === "h406".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h405".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h404".U ),
|
||||
)
|
||||
|
||||
for( i <- 0 until 18 ){
|
||||
cReg.wdtTarCnt(i) :=
|
||||
Cat(
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h40a".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h409".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h408".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h40a".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h409".U (16.W) + (4*i).U ) ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === ( "h408".U (16.W) + (4*i).U ) ),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1062,10 +1062,10 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
||||
cReg.softResetCode(2) === "h66".U &
|
||||
cReg.softResetCode(3) === "h79".U
|
||||
|
||||
cReg.softResetCode(0) := RegEnable(dataw, 0.U, isEnW & addrw === "h40".U )
|
||||
cReg.softResetCode(1) := RegEnable(dataw, 0.U, isEnW & addrw === "h41".U )
|
||||
cReg.softResetCode(2) := RegEnable(dataw, 0.U, isEnW & addrw === "h42".U )
|
||||
cReg.softResetCode(3) := RegEnable(dataw, 0.U, isEnW & addrw === "h43".U )
|
||||
cReg.softResetCode(0) := RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h40".U )
|
||||
cReg.softResetCode(1) := RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h41".U )
|
||||
cReg.softResetCode(2) := RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h42".U )
|
||||
cReg.softResetCode(3) := RegEnable(dataw, 0.U(8.W), isEnW & addrw === "h43".U )
|
||||
|
||||
|
||||
cReg.intEnable :=
|
||||
@@ -1073,10 +1073,10 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
||||
1.U(1.W), //复位中断,时钟为1 //31 上电复位
|
||||
1.U(1.W), //复位中断,时钟为1 //30 上行硬件错误
|
||||
1.U(1.W), //复位中断,时钟为1 //29 下行硬件错误
|
||||
RegEnable( dataw(4,0), 0.U, isEnW & addrw === "h73".U ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h72".U ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h71".U ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h70".U ),
|
||||
RegEnable( dataw(4,0), 0.U(5.W), isEnW & addrw === "h73".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h72".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h71".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h70".U ),
|
||||
)
|
||||
|
||||
val intStatus = for( i <- 0 until 32 ) yield {
|
||||
@@ -1087,8 +1087,8 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
||||
|
||||
cReg.intMode :=
|
||||
Cat(
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h7d".U ),
|
||||
RegEnable( dataw, 0.U, isEnW & addrw === "h7c".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h7d".U ),
|
||||
RegEnable( dataw, 0.U(8.W), isEnW & addrw === "h7c".U ),
|
||||
)
|
||||
|
||||
val isLevelInt = cReg.intMode.extract(15) === false.B
|
||||
|
||||
Reference in New Issue
Block a user