merge mirror read/write

This commit is contained in:
RuigeLee
2023-09-08 18:47:13 +08:00
parent bf835014bc
commit 05a905ac39
2 changed files with 29 additions and 7 deletions

View File

@@ -8,7 +8,7 @@ import chisel3.util._
class FSMC_Port_Bundle extends Bundle{ 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 dataIn = Input(UInt(16.W))
val dataOut = Output(UInt(16.W)) val dataOut = Output(UInt(16.W))
val dataOEn = Output(Bool()) val dataOEn = Output(Bool())
@@ -71,18 +71,17 @@ trait BackBoardMstFSMC{ this: BackBoardMstBase =>
io.FSMC.dataOEn := io.FSMC.oen io.FSMC.dataOEn := io.FSMC.oen
val isWriteSRAM = ~fsmcAddrSync.extract(10) & fsmcAddrSync.extract(9) val isAccessSRAM = ~fsmcAddrSync.extract(9)
val isReadSRAM = ~fsmcAddrSync.extract(10) & ~fsmcAddrSync.extract(9) val isAccessReg = fsmcAddrSync.extract(9)
val isAccessReg = fsmcAddrSync.extract(10) val activeAddr = fsmcAddrSync(8,0)
val activeAddr = fsmcAddrSync(8,0)
val regOut = Wire(UInt(16.W)) val regOut = Wire(UInt(16.W))
mirrorDown.io.enw := (~fsmcCEnSync & isWriteSRAM & (~fsmcWEnSync) ) mirrorDown.io.enw := (~fsmcCEnSync & isAccessSRAM & (~fsmcWEnSync) )
mirrorDown.io.addrw := activeAddr mirrorDown.io.addrw := activeAddr
mirrorDown.io.dataw := fsmcdataInSync mirrorDown.io.dataw := fsmcdataInSync
mirrorUp.io.enr := (~fsmcCEnSync & isReadSRAM & (~fsmcOEnSync) ) mirrorUp.io.enr := (~fsmcCEnSync & isAccessSRAM & (~fsmcOEnSync) )
mirrorUp.io.addrr := activeAddr mirrorUp.io.addrr := activeAddr

View File

@@ -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个从站