删除localpoint和localperoid和中断2

This commit is contained in:
RuigeLee
2025-09-02 17:18:25 +08:00
committed by bacon
parent 6cf1e21774
commit 1739cdb2a7

View File

@@ -99,10 +99,6 @@ class CommonRegisterBundle extends Bundle{
val syncPeroid = UInt(32.W) val syncPeroid = UInt(32.W)
val recoTimeStamp = UInt(64.W) //时钟补偿寄存器 val recoTimeStamp = UInt(64.W) //时钟补偿寄存器
val localPeroid = UInt(32.W)
val localPoint = UInt(64.W)
val custom = Vec( 128, UInt(8.W) ) val custom = Vec( 128, UInt(8.W) )
val smUsedDepth = Vec(8, UInt(8.W)) val smUsedDepth = Vec(8, UInt(8.W))
@@ -482,19 +478,14 @@ abstract class InterfaceBase extends Module with RequireAsyncReset{
(addr === "h146".U ) -> cReg.syncOffset(3)(23,16), (addr === "h146".U ) -> cReg.syncOffset(3)(23,16),
(addr === "h147".U ) -> cReg.syncOffset(3)(31,24), (addr === "h147".U ) -> cReg.syncOffset(3)(31,24),
(addr === "h148".U ) -> cReg.localPoint(7,0), // (addr === "h148".U ) -> 0.U,//cReg.localPoint(7,0),
(addr === "h149".U ) -> cReg.localPoint(15,8), // (addr === "h149".U ) -> 0.U,//cReg.localPoint(15,8),
(addr === "h14a".U ) -> cReg.localPoint(23,16), // (addr === "h14a".U ) -> 0.U,//cReg.localPoint(23,16),
(addr === "h14b".U ) -> cReg.localPoint(31,24), // (addr === "h14b".U ) -> 0.U,//cReg.localPoint(31,24),
(addr === "h14c".U ) -> cReg.localPoint(39,32), // (addr === "h14c".U ) -> 0.U,//cReg.localPoint(39,32),
(addr === "h14d".U ) -> cReg.localPoint(47,40), // (addr === "h14d".U ) -> 0.U,//cReg.localPoint(47,40),
(addr === "h14e".U ) -> cReg.localPoint(55,48), // (addr === "h14e".U ) -> 0.U,//cReg.localPoint(55,48),
(addr === "h14f".U ) -> cReg.localPoint(63,56), // (addr === "h14f".U ) -> 0.U,//cReg.localPoint(63,56),
(addr === "h150".U ) -> cReg.localPeroid(7,0),
(addr === "h151".U ) -> cReg.localPeroid(15,8),
(addr === "h152".U ) -> cReg.localPeroid(23,16),
(addr === "h153".U ) -> cReg.localPeroid(31,24),
) ++ ) ++
( 0 until 128 ).map{ i => ( 0 until 128 ).map{ i =>
@@ -799,8 +790,6 @@ trait InterfaceSync{ this: InterfaceBase =>
val syncPoint = RegInit(0.U(64.W)); cReg.syncPoint := syncPoint val syncPoint = RegInit(0.U(64.W)); cReg.syncPoint := syncPoint
val syncPeroid = RegInit(0.U(32.W)); cReg.syncPeroid := syncPeroid val syncPeroid = RegInit(0.U(32.W)); cReg.syncPeroid := syncPeroid
val localPoint = RegInit(0.U(64.W)); cReg.localPoint := localPoint
val localPeroid = RegInit(0.U(32.W)); cReg.localPeroid := localPeroid
val syncOffset = for( i <- 0 until 4 ) yield { RegInit(0.U(32.W)) } //空开0 val syncOffset = for( i <- 0 until 4 ) yield { RegInit(0.U(32.W)) } //空开0
for( i <- 0 until 4 ) { for( i <- 0 until 4 ) {
@@ -848,34 +837,23 @@ trait InterfaceSync{ this: InterfaceBase =>
syncPeroid := Cat( dataw, syncPeroid(23,0) ) syncPeroid := Cat( dataw, syncPeroid(23,0) )
} }
.elsewhen( addrw === "h148".U ){ // .elsewhen( addrw === "h148".U ){
localPoint := Cat( localPoint(63,8), dataw ) // localPoint := Cat( localPoint(63,8), dataw )
} .elsewhen( addrw === "h149".U ){ // } .elsewhen( addrw === "h149".U ){
localPoint := Cat( localPoint(63,16), dataw, localPoint(7,0) ) // localPoint := Cat( localPoint(63,16), dataw, localPoint(7,0) )
} .elsewhen( addrw === "h14a".U ){ // } .elsewhen( addrw === "h14a".U ){
localPoint := Cat( localPoint(63,24), dataw, localPoint(15,0) ) // localPoint := Cat( localPoint(63,24), dataw, localPoint(15,0) )
} .elsewhen( addrw === "h14b".U ){ // } .elsewhen( addrw === "h14b".U ){
localPoint := Cat( localPoint(63,32), dataw, localPoint(23,0) ) // localPoint := Cat( localPoint(63,32), dataw, localPoint(23,0) )
} .elsewhen( addrw === "h14c".U ){ // } .elsewhen( addrw === "h14c".U ){
localPoint := Cat( localPoint(63,40), dataw, localPoint(31,0) ) // localPoint := Cat( localPoint(63,40), dataw, localPoint(31,0) )
} .elsewhen( addrw === "h14d".U ){ // } .elsewhen( addrw === "h14d".U ){
localPoint := Cat( localPoint(63,48), dataw, localPoint(39,0) ) // localPoint := Cat( localPoint(63,48), dataw, localPoint(39,0) )
} .elsewhen( addrw === "h14e".U ){ // } .elsewhen( addrw === "h14e".U ){
localPoint := Cat( localPoint(63,56), dataw, localPoint(47,0) ) // localPoint := Cat( localPoint(63,56), dataw, localPoint(47,0) )
} .elsewhen( addrw === "h14f".U ){ // } .elsewhen( addrw === "h14f".U ){
localPoint := Cat( dataw, localPoint(55,0) ) // localPoint := Cat( dataw, localPoint(55,0) )
} // }
.elsewhen( addrw === "h150".U ){
localPeroid := Cat( localPeroid(31,8), dataw )
} .elsewhen( addrw === "h151".U ){
localPeroid := Cat( localPeroid(31,16), dataw, localPeroid(7,0) )
} .elsewhen( addrw === "h152".U ){
localPeroid := Cat( localPeroid(31,24), dataw, localPeroid(15,0) )
} .elsewhen( addrw === "h153".U ){
localPeroid := Cat( dataw, localPeroid(23,0) )
}
for( i <- 1 until 4 ){ for( i <- 1 until 4 ){
@@ -935,35 +913,6 @@ trait InterfaceSync{ this: InterfaceBase =>
syncPeroid := Cat( io.lvds.dataw, syncPeroid(23,0) ) syncPeroid := Cat( io.lvds.dataw, syncPeroid(23,0) )
} }
.elsewhen( io.lvds.addrw === "h148".U ){
localPoint := Cat( localPoint(63,8), io.lvds.dataw )
} .elsewhen( io.lvds.addrw === "h149".U ){
localPoint := Cat( localPoint(63,16), io.lvds.dataw, localPoint(7,0) )
} .elsewhen( io.lvds.addrw === "h14a".U ){
localPoint := Cat( localPoint(63,24), io.lvds.dataw, localPoint(15,0) )
} .elsewhen( io.lvds.addrw === "h14b".U ){
localPoint := Cat( localPoint(63,32), io.lvds.dataw, localPoint(23,0) )
} .elsewhen( io.lvds.addrw === "h14c".U ){
localPoint := Cat( localPoint(63,40), io.lvds.dataw, localPoint(31,0) )
} .elsewhen( io.lvds.addrw === "h14d".U ){
localPoint := Cat( localPoint(63,48), io.lvds.dataw, localPoint(39,0) )
} .elsewhen( io.lvds.addrw === "h14e".U ){
localPoint := Cat( localPoint(63,56), io.lvds.dataw, localPoint(47,0) )
} .elsewhen( io.lvds.addrw === "h14f".U ){
localPoint := Cat( io.lvds.dataw, localPoint(55,0) )
}
.elsewhen( io.lvds.addrw === "h150".U ){
localPeroid := Cat( localPeroid(31,8), io.lvds.dataw )
} .elsewhen( io.lvds.addrw === "h151".U ){
localPeroid := Cat( localPeroid(31,16), io.lvds.dataw, localPeroid(7,0) )
} .elsewhen( io.lvds.addrw === "h152".U ){
localPeroid := Cat( localPeroid(31,24), io.lvds.dataw, localPeroid(15,0) )
} .elsewhen( io.lvds.addrw === "h153".U ){
localPeroid := Cat( io.lvds.dataw, localPeroid(23,0) )
}
for( i <- 1 until 4 ){ for( i <- 1 until 4 ){
when( io.lvds.addrw === ("h13c".U(16.W) + (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 )
@@ -1043,13 +992,6 @@ trait InterfaceSync{ this: InterfaceBase =>
io.sync(3) := cReg.syncCfg.extract(3) & syncSign(3) io.sync(3) := cReg.syncCfg.extract(3) & syncSign(3)
val isLocalSyncInt = cReg.localPoint === cReg.recoTimeStamp
when( isLocalSyncInt ){ //时间到达localSync时间点
localPoint := cReg.localPoint + cReg.localPeroid
}
} }
trait InterfaceWdt{ this: InterfaceBase => trait InterfaceWdt{ this: InterfaceBase =>
@@ -1176,11 +1118,6 @@ trait InterfaceInterrupt{ this: InterfaceBase =>
intStatus(1) := true.B intStatus(1) := true.B
} }
//主站发送周期到了
val isLocalSyncInt: Bool
when( isLocalSyncInt ){
intStatus(2) := true.B
}
//外部latch中断 //外部latch中断
val isLatchEvent = val isLatchEvent =
@@ -1262,7 +1199,6 @@ trait InterfaceInterrupt{ this: InterfaceBase =>
val trigIntPulse = val trigIntPulse =
(io.intMstTrig(0) & cReg.intEnable(0)) | //主站发送完成 (io.intMstTrig(0) & cReg.intEnable(0)) | //主站发送完成
(io.intMstTrig(1) & cReg.intEnable(1)) | //主站接收完成 (io.intMstTrig(1) & cReg.intEnable(1)) | //主站接收完成
(isLocalSyncInt & cReg.intEnable(2)) | //主站发送周期到了
(isLatchEvent & cReg.intEnable(3)) | //latch Event (isLatchEvent & cReg.intEnable(3)) | //latch Event
(isWdtTrigAndEnable & cReg.intEnable(4)) | //主站接收看门狗溢出 (isWdtTrigAndEnable & cReg.intEnable(4)) | //主站接收看门狗溢出
(0 until 8).map{ i => io.intSlvTrig(i) & cReg.intEnable(8+i)}.reduce(_|_) | //从站SM请求 (0 until 8).map{ i => io.intSlvTrig(i) & cReg.intEnable(8+i)}.reduce(_|_) | //从站SM请求