代码逻辑优化,增强保护
This commit is contained in:
@@ -577,9 +577,13 @@ trait SlaveParserRW{ this: SlaveParserBase =>
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
when( isUpLgcAddrrAcquireTrans ){ //装填计数器
|
when( isUpLgcAddrrAcquireTrans & (
|
||||||
|
(upRecParser.io.subMsgReq.fire & (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex) |
|
||||||
|
(~isUpRecPing & (upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIRDWR ) & ( upSubMsgInfo(0).isLgcIndex )) |
|
||||||
|
( isUpRecPing & (upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIRDWR ) & ( upSubMsgInfo(1).isLgcIndex ))
|
||||||
|
)){ //装填计数器
|
||||||
upTransLenCnt := acquireUpTransLen
|
upTransLenCnt := acquireUpTransLen
|
||||||
} .elsewhen( upRecParser.io.data.fire & upTransLenCnt =/= 0.U){
|
} .elsewhen( upRecParser.io.data.fire & upTransLenCnt =/= 0.U ){
|
||||||
upTransLenCnt := upTransLenCnt - 1.U
|
upTransLenCnt := upTransLenCnt - 1.U
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -588,11 +592,15 @@ trait SlaveParserRW{ this: SlaveParserBase =>
|
|||||||
(upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex
|
(upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex
|
||||||
)){//组合逻辑
|
)){//组合逻辑
|
||||||
logicAddrrNext := Cat( upRecParser.io.subMsgReq.bits.devIndex, upRecParser.io.subMsgReq.bits.address )
|
logicAddrrNext := Cat( upRecParser.io.subMsgReq.bits.devIndex, upRecParser.io.subMsgReq.bits.address )
|
||||||
} .elsewhen( upRecParser.io.data.fire & (
|
} .elsewhen( upRecParser.io.data.fire){
|
||||||
|
when(
|
||||||
(~isUpRecPing & (upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIRDWR ) & upSubMsgInfo(0).isLgcIndex ) |
|
(~isUpRecPing & (upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIRDWR ) & upSubMsgInfo(0).isLgcIndex ) |
|
||||||
( isUpRecPing & (upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIRDWR ) & upSubMsgInfo(1).isLgcIndex )
|
( isUpRecPing & (upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIRDWR ) & upSubMsgInfo(1).isLgcIndex )
|
||||||
) ){//组合逻辑
|
){//组合逻辑
|
||||||
logicAddrrNext := logicAddrr + 1.U
|
logicAddrrNext := logicAddrr + 1.U
|
||||||
|
} .otherwise{
|
||||||
|
logicAddrrNext := 0.U
|
||||||
|
}
|
||||||
} .otherwise{//组合逻辑
|
} .otherwise{//组合逻辑
|
||||||
logicAddrrNext := logicAddrr
|
logicAddrrNext := logicAddrr
|
||||||
}
|
}
|
||||||
@@ -623,31 +631,62 @@ trait SlaveParserRW{ this: SlaveParserBase =>
|
|||||||
|
|
||||||
val isLvdsEnR = isSeqRead | isLgcRead
|
val isLvdsEnR = isSeqRead | isLgcRead
|
||||||
|
|
||||||
when( upRecParser.io.subMsgReq.fire){
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// when( upRecParser.io.subMsgReq.fire){
|
||||||
|
// when(
|
||||||
|
// ((upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR ) & (upRecParser.io.subMsgReq.bits.isSeqIndex & upRecParser.io.subMsgReq.bits.devIndex === localDevIndex)) |
|
||||||
|
// ( upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDRDWR)
|
||||||
|
// ){
|
||||||
|
// addrr := upRecParser.io.subMsgReq.bits.address
|
||||||
|
// } .elsewhen( (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex ){
|
||||||
|
// addrr := acquireUpPhyAddrr
|
||||||
|
// }
|
||||||
|
// } .elsewhen( isUpLgcAddrrAcquireTrans ){
|
||||||
|
// when( (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex ){
|
||||||
|
// addrr := acquireUpPhyAddrr
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// .elsewhen( isLvdsEnR ){
|
||||||
|
// assert(~isUpLgcAddrrAcquireTrans)
|
||||||
|
// when(
|
||||||
|
// ((upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR ) & (upRecParser.io.subMsgReq.bits.isSeqIndex & upRecParser.io.subMsgReq.bits.devIndex === localDevIndex)) |
|
||||||
|
// ( upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDRDWR)
|
||||||
|
// ){
|
||||||
|
// addrr := addrr + 1.U
|
||||||
|
// } .elsewhen( (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex ){
|
||||||
|
// addrr := Mux( upTransLenCnt === 0.U, 0.U, addrr + 1.U )
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
when(
|
when(
|
||||||
((upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR ) & (upRecParser.io.subMsgReq.bits.isSeqIndex & upRecParser.io.subMsgReq.bits.devIndex === localDevIndex)) |
|
((upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR ) & (upRecParser.io.subMsgReq.bits.isSeqIndex & upRecParser.io.subMsgReq.bits.devIndex === localDevIndex)) |
|
||||||
( upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDRDWR)
|
( upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDRDWR)
|
||||||
){
|
){
|
||||||
|
when( upRecParser.io.subMsgReq.fire){
|
||||||
addrr := upRecParser.io.subMsgReq.bits.address
|
addrr := upRecParser.io.subMsgReq.bits.address
|
||||||
} .elsewhen( (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex ){
|
} .elsewhen(isLvdsEnR){
|
||||||
addrr := acquireUpPhyAddrr
|
addrr := addrr + 1.U
|
||||||
}
|
}
|
||||||
} .elsewhen( isUpLgcAddrrAcquireTrans ){
|
} .elsewhen( isUpLgcAddrrAcquireTrans ){
|
||||||
when( (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex ){
|
when(
|
||||||
|
(upRecParser.io.subMsgReq.fire & (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex) |
|
||||||
|
(~isUpRecPing & (upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIRDWR ) & ( upSubMsgInfo(0).isLgcIndex )) |
|
||||||
|
( isUpRecPing & (upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIRDWR ) & ( upSubMsgInfo(1).isLgcIndex ))
|
||||||
|
){
|
||||||
addrr := acquireUpPhyAddrr
|
addrr := acquireUpPhyAddrr
|
||||||
}
|
}
|
||||||
}
|
} .elsewhen( isLvdsEnR & (
|
||||||
.elsewhen( isLvdsEnR ){
|
(~isUpRecPing & (upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(0).operator === SUBMSG_OPERATOR_UNIRDWR ) & ( upSubMsgInfo(0).isLgcIndex )) |
|
||||||
|
( isUpRecPing & (upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIREAD | upSubMsgInfo(1).operator === SUBMSG_OPERATOR_UNIRDWR ) & ( upSubMsgInfo(1).isLgcIndex ))
|
||||||
|
)){
|
||||||
assert(~isUpLgcAddrrAcquireTrans)
|
assert(~isUpLgcAddrrAcquireTrans)
|
||||||
when(
|
|
||||||
((upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR ) & (upRecParser.io.subMsgReq.bits.isSeqIndex & upRecParser.io.subMsgReq.bits.devIndex === localDevIndex)) |
|
|
||||||
( upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_BOARDRDWR)
|
|
||||||
){
|
|
||||||
addrr := addrr + 1.U
|
|
||||||
} .elsewhen( (upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIREAD | upRecParser.io.subMsgReq.bits.operator === SUBMSG_OPERATOR_UNIRDWR) & upRecParser.io.subMsgReq.bits.isLgcIndex ){
|
|
||||||
addrr := Mux( upTransLenCnt === 0.U, 0.U, addrr + 1.U )
|
addrr := Mux( upTransLenCnt === 0.U, 0.U, addrr + 1.U )
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
val upStreamData = Mux1H(Seq(
|
val upStreamData = Mux1H(Seq(
|
||||||
isRDReg -> io.lvds.datar,
|
isRDReg -> io.lvds.datar,
|
||||||
|
|||||||
Reference in New Issue
Block a user