低地址位宽推断错误修复
This commit is contained in:
@@ -225,7 +225,7 @@ abstract class InterfaceBase extends Module{
|
|||||||
) ++
|
) ++
|
||||||
|
|
||||||
((0 until 6).map{ i =>
|
((0 until 6).map{ i =>
|
||||||
(addr === ("h2".U + i.U) ) -> cReg.hwSerial( 8*i+7,8*i+0 )
|
(addr === ("h2".U(16.W) + i.U) ) -> cReg.hwSerial( 8*i+7,8*i+0 )
|
||||||
}) ++
|
}) ++
|
||||||
|
|
||||||
Seq(
|
Seq(
|
||||||
@@ -250,7 +250,7 @@ abstract class InterfaceBase extends Module{
|
|||||||
|
|
||||||
|
|
||||||
((0 until 16).map{ i =>
|
((0 until 16).map{ i =>
|
||||||
(addr === ("h50".U + i.U) ) -> cReg.encryptKey( 8*i+7,8*i+0 )
|
(addr === ("h50".U(16.W) + i.U) ) -> cReg.encryptKey( 8*i+7,8*i+0 )
|
||||||
}) ++
|
}) ++
|
||||||
|
|
||||||
Seq(
|
Seq(
|
||||||
@@ -353,13 +353,13 @@ abstract class InterfaceBase extends Module{
|
|||||||
(addr === "h147".U & isSlvMode) -> sReg.syncOffset(3)(31,24),
|
(addr === "h147".U & isSlvMode) -> sReg.syncOffset(3)(31,24),
|
||||||
) ++
|
) ++
|
||||||
( 0 until 128 ).map{ i =>
|
( 0 until 128 ).map{ i =>
|
||||||
( addr === ("h180".U + i.U ) ) -> cReg.custom(i)
|
( addr === ("h180".U(16.W) + i.U ) ) -> cReg.custom(i)
|
||||||
} ++
|
} ++
|
||||||
( 0 until 8 ).map{ i =>
|
( 0 until 8 ).map{ i =>
|
||||||
( addr === ("h302".U + (i*4).U) ) -> cReg.smTrigLen(i)(7,0)
|
( addr === ("h302".U(16.W) + (i*4).U) ) -> cReg.smTrigLen(i)(7,0)
|
||||||
} ++
|
} ++
|
||||||
( 0 until 8 ).map{ i =>
|
( 0 until 8 ).map{ i =>
|
||||||
( addr === ("h303".U + (i*4).U) ) -> cReg.smTrigLen(i)(10,8)
|
( addr === ("h303".U(16.W) + (i*4).U) ) -> cReg.smTrigLen(i)(10,8)
|
||||||
} ++
|
} ++
|
||||||
Seq()
|
Seq()
|
||||||
)
|
)
|
||||||
@@ -449,7 +449,7 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
cReg.hwSerial :=
|
cReg.hwSerial :=
|
||||||
Cat(
|
Cat(
|
||||||
(0 until 6).map{ i =>
|
(0 until 6).map{ i =>
|
||||||
RegEnable( dataw, "haa".U, isEnW & addrw === ("h2".U + i.U) & cReg.mstOrSlv === 0.U )
|
RegEnable( dataw, "haa".U, isEnW & addrw === ("h2".U(16.W) + i.U) & cReg.mstOrSlv === 0.U )
|
||||||
}.reverse
|
}.reverse
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -459,7 +459,7 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
cReg.encryptKey :=
|
cReg.encryptKey :=
|
||||||
Cat(
|
Cat(
|
||||||
(0 until 16).map{ i =>
|
(0 until 16).map{ i =>
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === ("h50".U + i.U) & cReg.mstOrSlv === 0.U )
|
RegEnable( dataw, 0.U, isEnW & addrw === ("h50".U(16.W) + i.U) & cReg.mstOrSlv === 0.U )
|
||||||
}.reverse
|
}.reverse
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -470,7 +470,7 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
// mReg.txLength := Cat( RegEnable( dataw, 0.U, isEnW & addrw === "h22".U ), RegEnable( dataw, 0.U, isEnW & addrw === "h21".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 =>
|
( 0 until 128 ).map{ i =>
|
||||||
cReg.custom(i) := RegEnable( dataw, 0.U, isEnW & (addrw === ("h180".U + i.U)) )
|
cReg.custom(i) := RegEnable( dataw, 0.U, isEnW & (addrw === ("h180".U(16.W) + i.U)) )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -489,9 +489,9 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
for( i <- 0 until 4 ){
|
for( i <- 0 until 4 ){
|
||||||
when( io.lvds.addrw === ("h122".U + (2*i).U)){
|
when( io.lvds.addrw === ("h122".U(16.W) + (2*i).U)){
|
||||||
syncWidth(i) := Cat( syncWidth(i)(15,8), io.lvds.dataw )
|
syncWidth(i) := Cat( syncWidth(i)(15,8), io.lvds.dataw )
|
||||||
} .elsewhen( io.lvds.addrw === ("h123".U + (2*i).U) ){
|
} .elsewhen( io.lvds.addrw === ("h123".U(16.W) + (2*i).U) ){
|
||||||
syncWidth(i) := Cat( io.lvds.dataw, syncWidth(i)(7,0) )
|
syncWidth(i) := Cat( io.lvds.dataw, syncWidth(i)(7,0) )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -525,13 +525,13 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
for( i <- 1 until 4 ){
|
for( i <- 1 until 4 ){
|
||||||
when( addrw === ("h13c".U + (4*(i-1)).U) ){
|
when( addrw === ("h13c".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( syncOffset(i)(31,8), dataw )
|
syncOffset(i) := Cat( syncOffset(i)(31,8), dataw )
|
||||||
} .elsewhen( addrw === ("h13d".U + (4*(i-1)).U) ){
|
} .elsewhen( addrw === ("h13d".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( syncOffset(i)(31,16), dataw, syncOffset(i)(7,0) )
|
syncOffset(i) := Cat( syncOffset(i)(31,16), dataw, syncOffset(i)(7,0) )
|
||||||
} .elsewhen( addrw === ("h13e".U + (4*(i-1)).U) ){
|
} .elsewhen( addrw === ("h13e".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( syncOffset(i)(31,24), dataw, syncOffset(i)(15,0) )
|
syncOffset(i) := Cat( syncOffset(i)(31,24), dataw, syncOffset(i)(15,0) )
|
||||||
} .elsewhen( addrw === ("h13f".U + (4*(i-1)).U) ){
|
} .elsewhen( addrw === ("h13f".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( dataw, syncOffset(i)(23,0) )
|
syncOffset(i) := Cat( dataw, syncOffset(i)(23,0) )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -555,24 +555,18 @@ trait InterfaceCheckSM{ this: InterfaceBase =>
|
|||||||
for( i <- 0 until 8 ){
|
for( i <- 0 until 8 ){
|
||||||
cReg.smTrigLen(i) := Cat( smTrigLen_H(i), smTrigLen_L(i) )
|
cReg.smTrigLen(i) := Cat( smTrigLen_H(i), smTrigLen_L(i) )
|
||||||
|
|
||||||
when( isEnW & addrw === ("h303".U + (i*4).U) ){
|
when( isEnW & addrw === ("h303".U(16.W) + (i*4).U) ){
|
||||||
smTrigLen_H(i) := dataw
|
smTrigLen_H(i) := dataw
|
||||||
} .elsewhen( io.lvds.isEnW & io.lvds.addrw === ("h303".U + (i*4).U)){
|
} .elsewhen( io.lvds.isEnW & io.lvds.addrw === ("h303".U(16.W) + (i*4).U)){
|
||||||
smTrigLen_H(i) := io.lvds.dataw
|
smTrigLen_H(i) := io.lvds.dataw
|
||||||
}
|
}
|
||||||
|
|
||||||
when( isEnW & addrw === ("h302".U + (i*4).U) ){
|
when( isEnW & addrw === ("h302".U(16.W) + (i*4).U) ){
|
||||||
smTrigLen_L(i) := dataw
|
smTrigLen_L(i) := dataw
|
||||||
} .elsewhen( io.lvds.isEnW & io.lvds.addrw === ("h302".U + (i*4).U)){
|
} .elsewhen( io.lvds.isEnW & io.lvds.addrw === ("h302".U(16.W) + (i*4).U)){
|
||||||
smTrigLen_L(i) := io.lvds.dataw
|
smTrigLen_L(i) := io.lvds.dataw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Cat(
|
|
||||||
// RegEnable( dataw, 0.U, isEnW & addrw === ("h303".U + (i*4).U) ),
|
|
||||||
// RegEnable( dataw, 0.U, isEnW & addrw === ("h302".U + (i*4).U) ),
|
|
||||||
// )
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -623,9 +617,9 @@ trait InterfaceLVDSop{ this: InterfaceBase =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
for( i <- 0 until 4 ){
|
for( i <- 0 until 4 ){
|
||||||
when( io.lvds.addrw === ("h122".U + (2*i).U)){
|
when( io.lvds.addrw === ("h122".U(16.W) + (2*i).U)){
|
||||||
syncWidth(i) := Cat( syncWidth(i)(15,8), io.lvds.dataw )
|
syncWidth(i) := Cat( syncWidth(i)(15,8), io.lvds.dataw )
|
||||||
} .elsewhen( io.lvds.addrw === ("h123".U + (2*i).U) ){
|
} .elsewhen( io.lvds.addrw === ("h123".U(16.W) + (2*i).U) ){
|
||||||
syncWidth(i) := Cat( io.lvds.dataw, syncWidth(i)(7,0) )
|
syncWidth(i) := Cat( io.lvds.dataw, syncWidth(i)(7,0) )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -659,13 +653,13 @@ trait InterfaceLVDSop{ this: InterfaceBase =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
for( i <- 1 until 4 ){
|
for( i <- 1 until 4 ){
|
||||||
when( io.lvds.addrw === ("h13c".U + (4*(i-1)).U) ){
|
when( io.lvds.addrw === ("h13c".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( syncOffset(i)(31,8), io.lvds.dataw )
|
syncOffset(i) := Cat( syncOffset(i)(31,8), io.lvds.dataw )
|
||||||
} .elsewhen( io.lvds.addrw === ("h13d".U + (4*(i-1)).U) ){
|
} .elsewhen( io.lvds.addrw === ("h13d".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( syncOffset(i)(31,16), io.lvds.dataw, syncOffset(i)(7,0) )
|
syncOffset(i) := Cat( syncOffset(i)(31,16), io.lvds.dataw, syncOffset(i)(7,0) )
|
||||||
} .elsewhen( io.lvds.addrw === ("h13e".U + (4*(i-1)).U) ){
|
} .elsewhen( io.lvds.addrw === ("h13e".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( syncOffset(i)(31,24), io.lvds.dataw, syncOffset(i)(15,0) )
|
syncOffset(i) := Cat( syncOffset(i)(31,24), io.lvds.dataw, syncOffset(i)(15,0) )
|
||||||
} .elsewhen( io.lvds.addrw === ("h13f".U + (4*(i-1)).U) ){
|
} .elsewhen( io.lvds.addrw === ("h13f".U(16.W) + (4*(i-1)).U) ){
|
||||||
syncOffset(i) := Cat( io.lvds.dataw, syncOffset(i)(23,0) )
|
syncOffset(i) := Cat( io.lvds.dataw, syncOffset(i)(23,0) )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -709,7 +703,7 @@ trait InterfaceSync{ this: InterfaceBase =>
|
|||||||
syncSign(i) := true.B
|
syncSign(i) := true.B
|
||||||
} .elsewhen( ~sReg.syncCfg(4+i) & syncResetCnt(i) === sReg.syncWidth(i) ){
|
} .elsewhen( ~sReg.syncCfg(4+i) & syncResetCnt(i) === sReg.syncWidth(i) ){
|
||||||
syncSign(i) := false.B
|
syncSign(i) := false.B
|
||||||
} .elsewhen( sReg.syncCfg(4+i) & isEnW & addrw === ("h122".U + (2*i).U) ){
|
} .elsewhen( sReg.syncCfg(4+i) & isEnW & addrw === ("h122".U(16.W) + (2*i).U) ){
|
||||||
syncSign(i) := false.B
|
syncSign(i) := false.B
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user