本帖最后由 灞波儿奔 于 2019-9-10 21:56 编辑
双口RAM是常见的共享式多端口存储器,其最大特点是共享存储数据,即一个存储器配备两套***的地址线、数据线和控制线,允许两个***的CPU或控制器同时异步的访问存储单元。这种同时异步的访问存储单元需要内部仲裁控制逻辑的控制(BUSY功能输出),由于两个端口对双口RAM存取时存在以下4种情况:
1.两个端口不同时对同一地址单元存取数据;
2.两个端口同时对同一地址单元读出数据;
3.两个端口同时对同一地址单元写入数据;
4.两个端口同时对同一地址单元操作,一个写入数据,一个读出数据。
所以,内部仲裁控制逻辑相应的提供以下功能:
1.对同一地址单元访问的时序控制;
2.存储单元数据块的访问权限分配;
3.信令交换逻辑。
对同一地址单元访问的时序控制
当左右端口不对同一地址单元存取时,BUSY R=H,BUSY L=H,可正常存储;当左右端口对同一地址单元存储时,有一个端口的BUSY=L,禁止数据的存取,此时,两个端口中先出现的存储请求信号对应的BUSY=H,允许存储,后出现的存储请求信号对应的BUSY=L,禁止存储(注意:两端口间的存储请求信号出现时间差应满足仲裁最小时间间隔TAPS(IDT7132为5ns),否则仲裁逻辑无法判定哪一个端口的存储请求信号在前);在无法判定哪个端口先出现存储请求信号时,控制线BUSY L和BUSY R只有一个为低电平,不会同时为低电平,这样就避免了双端口存取出现错误。
存储单元数据块的访问权限分配
存储单元数据块的访问权限分配只允许在某一时间段内由1个CPU对自定义的某一数据块进行读写操作,这将有助于存储数据的保护,更有效地避免地址冲突。信号量(Semaphore,简称SEM)仲裁闭锁就是一种硬件电路结合软件实现访问权限分配方法。SEM单元是与存储单元无关的***标志单元,两个端口分别采用两个触发器可以实现这一功能。两个触发器在初始化时均使SEM允许输出为高电平,等待双方申请SEM,如果收到一方写入的SEM信号(通常低电平写入),仲裁电路将使其中一个触发器的SEM允许输出端为低电平,而闭锁另一个SEM允许输出端使其继续保持高电平。只有当先请求的一方撤消SEM信号,即写入高电平,才使另一SEM允许输出端的闭锁得到解除,恢复等待新的SEM申请。
信令交换逻辑(signaling logic)
为了提高数据的交换能力,有些双口RAM采用信令交换逻辑来通知对方。这类似与PC操作系统的进程同步的信箱机制。
以上是双口RAM自身提供的仲裁逻辑控制,也可采用自行设计的仲裁协议,比如FIFO。
|