改变读写操作方式,从单次跳变变为持续操作
增加4号测试寄存器,实际地址为4<<1
This commit is contained in:
@@ -77,6 +77,7 @@ class BackBoardMstBase extends Module{ //10M
|
||||
|
||||
val slvNum = RegInit(0.U(6.W))
|
||||
val slvOffLine = RegInit(0.U(6.W))
|
||||
val testReg = RegInit("haa55".U(16.W))
|
||||
|
||||
lvdsMst.io.rst_n := ~reset.asBool
|
||||
lvdsMst.io.reset_calib := io.reset_calib
|
||||
@@ -135,17 +136,17 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
val regOut = Wire(UInt(16.W))
|
||||
|
||||
|
||||
val fsmcCSWRSync = ShiftRegisters( ~io.FSMC.csn & ~io.FSMC.wrn, 3, false.B, true.B )
|
||||
val fsmcCSRDSync = ShiftRegisters( ~io.FSMC.csn & ~io.FSMC.rdn, 3, false.B, true.B )
|
||||
// val fsmcCSWRSync = ShiftRegisters( ~io.FSMC.csn & ~io.FSMC.wrn, 3, false.B, true.B )
|
||||
// val fsmcCSRDSync = ShiftRegisters( ~io.FSMC.csn & ~io.FSMC.rdn, 3, false.B, true.B )
|
||||
|
||||
|
||||
|
||||
|
||||
mirrorDown.io.enw := isAccessSRAM & ~fsmcCSWRSync(2) & fsmcCSWRSync(1)
|
||||
mirrorDown.io.enw := isAccessSRAM & fsmcCSSync(1) & fsmcWRSync(1) //~fsmcCSWRSync(2) & fsmcCSWRSync(1)
|
||||
mirrorDown.io.addrw := activeAddr
|
||||
mirrorDown.io.dataw := io.FSMC.ADIn
|
||||
|
||||
mirrorUp.io.enr := isAccessSRAM & ~fsmcCSRDSync(2) & fsmcCSRDSync(1)
|
||||
mirrorUp.io.enr := isAccessSRAM & fsmcCSSync(1) & fsmcRDSync(1) // ~fsmcCSRDSync(2) & fsmcCSRDSync(1)
|
||||
mirrorUp.io.addrr := activeAddr
|
||||
|
||||
|
||||
@@ -171,12 +172,13 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
),
|
||||
( activeAddr === 2.U) -> slvNum,
|
||||
( activeAddr === 3.U) -> slvOffLine,
|
||||
( activeAddr === 4.U) -> testReg,
|
||||
))
|
||||
|
||||
|
||||
|
||||
|
||||
when( isAccessReg & ~fsmcCSWRSync(2) & fsmcCSWRSync(1) ){
|
||||
when( isAccessReg & fsmcCSSync(1) & fsmcWRSync(1) ){ //~fsmcCSWRSync(2) & fsmcCSWRSync(1) ){
|
||||
|
||||
isRegRefleshFlip := ~isRegRefleshFlip
|
||||
wrRegAddr := activeAddr
|
||||
@@ -210,8 +212,6 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
when( wrRegAddr === 1.U ){
|
||||
ctrlTransmit := wrRegData.extract(5)
|
||||
|
||||
|
||||
|
||||
ctrlSynch := wrRegData.extract(1)
|
||||
|
||||
when( wrRegData.extract(0) ){
|
||||
@@ -221,6 +221,11 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
when( wrRegAddr === 4.U ){
|
||||
testReg := wrRegData
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
|
||||
* 数据地址线 AD 16比特位宽
|
||||
|
||||
* 地址锁存 ADV 正逻辑
|
||||
* 读使能 WR 正逻辑
|
||||
* 写使能 WR 正逻辑
|
||||
* 片选 CS 正逻辑
|
||||
* 地址锁存 ADVn 负逻辑
|
||||
* 读使能 RDn 负逻辑
|
||||
* 写使能 WRn 负逻辑
|
||||
* 片选 CSn 负逻辑
|
||||
|
||||
|
||||
使用要求:地址锁存时ADV保持高至少30ns, 写入时CS,WR保持高至少30ns,读出时CS,RD保持高至少30ns方可读取数据线上数据
|
||||
|
||||
Reference in New Issue
Block a user