merge mirror read/write
This commit is contained in:
@@ -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 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
|
||||
|
||||
|
||||
|
||||
23
src/main/scala/backBoard/Readme.md
Normal file
23
src/main/scala/backBoard/Readme.md
Normal 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个从站
|
||||
|
||||
Reference in New Issue
Block a user