diff --git a/src/main/scala/backBoard/BackBoardMst.scala b/src/main/scala/backBoard/BackBoardMst.scala index e527fe1..44e241b 100644 --- a/src/main/scala/backBoard/BackBoardMst.scala +++ b/src/main/scala/backBoard/BackBoardMst.scala @@ -8,7 +8,7 @@ import chisel3.util._ class FSMC_Port_Bundle extends Bundle{ - val addr = Input(UInt(11.W)) + val addr = Input(UInt(10.W)) val dataIn = Input(UInt(16.W)) val dataOut = Output(UInt(16.W)) val dataOEn = Output(Bool()) @@ -71,18 +71,17 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase => io.FSMC.dataOEn := io.FSMC.oen - val isWriteSRAM = ~fsmcAddrSync.extract(10) & fsmcAddrSync.extract(9) - val isReadSRAM = ~fsmcAddrSync.extract(10) & ~fsmcAddrSync.extract(9) - val isAccessReg = fsmcAddrSync.extract(10) - val activeAddr = fsmcAddrSync(8,0) + val isAccessSRAM = ~fsmcAddrSync.extract(9) + val isAccessReg = fsmcAddrSync.extract(9) + val activeAddr = fsmcAddrSync(8,0) val regOut = Wire(UInt(16.W)) - mirrorDown.io.enw := (~fsmcCEnSync & isWriteSRAM & (~fsmcWEnSync) ) + mirrorDown.io.enw := (~fsmcCEnSync & isAccessSRAM & (~fsmcWEnSync) ) mirrorDown.io.addrw := activeAddr mirrorDown.io.dataw := fsmcdataInSync - mirrorUp.io.enr := (~fsmcCEnSync & isReadSRAM & (~fsmcOEnSync) ) + mirrorUp.io.enr := (~fsmcCEnSync & isAccessSRAM & (~fsmcOEnSync) ) mirrorUp.io.addrr := activeAddr diff --git a/src/main/scala/backBoard/Readme.md b/src/main/scala/backBoard/Readme.md new file mode 100644 index 0000000..c0378ac --- /dev/null +++ b/src/main/scala/backBoard/Readme.md @@ -0,0 +1,23 @@ +# 背板总线 + +## 用户接口 + +* 地址线 addr 10比特位宽 +* 数据线 data 16比特位宽 +* 读使能 OEN 负逻辑 +* 写使能 WEN 负逻辑 +* 片选 CEN 负逻辑 + +使用要求:在保持其它信号稳定后,最后改变CEN为低,在至少20ns以后将CEN置高,之后方可改变其它信号 +-------------------------------------- + +### 内存空间映射 + +* 总线上最多允许挂载32个从站,每个从站有8bits*16个下行寄存器(只写),8bits*16个上行寄存器(只读) +* 当地址线第10比特为低时,FSMC访问(只读或者只写)从站镜像寄存器(以8比特形式组织),理论上地址空间支持64个从站,当前要求只访问前32个从站 + - 通过16比特写用户接口 0x00 ~ 0x07, 可以将数据同步写入到从站0的16个下行寄存器(只写)中,后续从站地址按序分配 + - 通过16比特读用户接口 0x00 ~ 0x07, 可以将数据同步写入到从站0的16个上行寄存器(只读)中,后续从站地址按序分配 +* 当地址线第10比特为高时,FSMC通过地址9到0比特访问(可读可写)主站寄存器全部定义为16比特 + - 0x00 控制状态,预留 + - 0x01 配置从栈数量,允许配置(0~31)对应1~32个从站 +