FSMC跑测试
This commit is contained in:
@@ -109,13 +109,13 @@ class BackBoardMstBase extends Module{ //10M
|
||||
|
||||
trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
|
||||
val isRegRefleshFlip = withClockAndReset( io.ides_pclk.asClock, reset ){ RegInit(false.B) }
|
||||
val wrRegAddr = withClockAndReset( io.ides_pclk.asClock, reset ){ Reg(UInt(10.W)) }
|
||||
val wrRegData = withClockAndReset( io.ides_pclk.asClock, reset ){ Reg(UInt(16.W)) }
|
||||
val isRegRefleshFlip = withClockAndReset( io.ides_pclk.asClock, reset ){ RegInit(false.B) } //100M
|
||||
val wrRegAddr = withClockAndReset( io.ides_pclk.asClock, reset ){ Reg(UInt(10.W)) } //100M
|
||||
val wrRegData = withClockAndReset( io.ides_pclk.asClock, reset ){ Reg(UInt(16.W)) } //100M
|
||||
|
||||
withClockAndReset( io.ides_pclk.asClock, reset ){//100M
|
||||
mirrorDown.io.clockw := io.ides_pclk.asBool
|
||||
mirrorUp.io.clockr := io.ides_pclk.asBool
|
||||
mirrorDown.io.clockw := io.ides_pclk.asBool //100M
|
||||
mirrorUp.io.clockr := io.ides_pclk.asBool //100M
|
||||
|
||||
val fsmcCSSync = ShiftRegisters( io.FSMC.cs, 3, false.B, true.B )
|
||||
val fsmcRDSync = ShiftRegisters( io.FSMC.rd, 3, false.B, true.B )
|
||||
@@ -137,6 +137,7 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
|
||||
|
||||
|
||||
|
||||
mirrorDown.io.enw := isAccessSRAM & ~fsmcCSWRSync(2) & fsmcCSWRSync(1)
|
||||
mirrorDown.io.addrw := activeAddr
|
||||
mirrorDown.io.dataw := io.FSMC.ADIn
|
||||
@@ -188,9 +189,9 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
val isChkRegReflesh = RegInit(false.B)
|
||||
|
||||
when( isChkRegReflesh =/= isRegRefleshFlip ){
|
||||
when( wrRegAddr === 1.U ){
|
||||
ctrlTransmit := wrRegData.extract(5)
|
||||
isChkRegReflesh := ~isChkRegReflesh
|
||||
|
||||
when( wrRegAddr === 0.U ){
|
||||
when( wrRegData.extract(4) ){
|
||||
statusCDRErr := false.B
|
||||
}
|
||||
@@ -200,9 +201,22 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
when( wrRegData.extract(2) ){
|
||||
statusLinkErr := false.B
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
when( wrRegAddr === 1.U ){
|
||||
ctrlTransmit := wrRegData.extract(5)
|
||||
|
||||
|
||||
|
||||
ctrlSynch := wrRegData.extract(1)
|
||||
ctrlInit := wrRegData.extract(0)
|
||||
|
||||
when( wrRegData.extract(0) ){
|
||||
ctrlInit := true.B
|
||||
statusSynch := false.B
|
||||
statusInit := false.B
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,18 +490,14 @@ trait BackBoardMstLVDSError{ this: BackBoardMstLVDSBase =>
|
||||
when( lvdsMst.io.closed_loop_err ){
|
||||
slvOffLine := lvdsMst.io.link_err_location(5,0)
|
||||
statusLinkErr := true.B
|
||||
statusSynch := false.B
|
||||
statusInit := false.B
|
||||
}
|
||||
|
||||
when( lvdsMst.io.upstream_cdr_err ){
|
||||
statusCDRErr := true.B
|
||||
ctrlTransmit := false.B
|
||||
}
|
||||
|
||||
when( lvdsMst.io.upstream_crc_valid & lvdsMst.io.upstream_crc_err ){
|
||||
statusCRCErr := true.B
|
||||
ctrlTransmit := false.B
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user