Java教程

APB总线

本文主要是介绍APB总线,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

APB总线信号:

 

 

APB总线状态机与读写Timing

 

 

  •  IDIE是初始化态;
  • SETUP是从机被PSELx选中以后进入的状态,只维持一个cycle,下一个周期的上升沿到ENABLE态;
  • ENABLE要使PENABLE HIGH,同时如果没有继续transfer那么从ENABLE跳到IDIE,如果有继续transfer从ENABLE跳到SETUP(有点glitch可以接受);从SETUP到ENABLE调整期间所有信号(地址数据控制)都要保持稳定

 

 2个cycle进行一次transfer的timing;为了减低功耗,transfer结束后不会改变地址数据信号,除非下一次transfer开始。这实际上只要求clean PSELx信号(transfer结束回到LOW),但背靠背(back to back,读写交替的)传输中,PWRITE和PSEL可能会有glitch。

 

 

 APB从机读取timing和写基本一致,地址和PSEL,PENABLE无差异。PWRITE LOW表示读,并且从机要在ENABLE状态保持有效的PRDATA,该数据在ENABLE state的上升沿被采样。

 

APB bridge

APB桥是APB架构中唯一的主机,同时APB也是AHB或ASB总线中的从机。

 

 APB从机

 

 从机WDATA可以在PSELx HIGH的时候,在1 PCLK的上升沿 或 PENABLE的上升沿被 latched。

从机RDATA要在PWRITE LOW并且PSELx 和 PENABLE 都HIGH时输出。

 

APB到AHB

 

主机发起对APB从机的读,T1时候AHB主机输出了有效address;APB bridge采样到address在T2上升沿,同时立即进行解码decoding, 生成了PSELx选择信号置为HIGH,PSELx对应的APB从机进入SETUP state;在下一个周期ENABLE state时APB从机必须提供有效的RDATA。而APB的RDATA通常直接给AHB总线;在ENABLE state时,在T4上升沿AHB采样到RDATA。一次读transfer完成。

burst read

 

 AHB对APB从机进行高频读取操作。一旦接受到RDATA,AHB HREADY为HIGH就进行下一个data的address更新,APB bridge开始新的一个APB从机的读取操作。这样在高频操作中同样是2个cycle完成一次读取,APB bridge(作为AHB的从机)因此需要在第1个cycle置HREADT为LOW(插入1个 wait state),下1个cycle接受RDATA置HREADY为HIGH;但提高了AHB的工作频率。

 

 

 APB bridge要采样AHB主机输出的HWDATA(还有地址,以及解码生成PSELx),并且保持给APB从机2个cycle。

 

 在burst write中,只有AHB的第一个写transfer是zero-wait state,由于APB总线需要2个cycle进行操作,因此burst中除了第一个transfer后续每个WDATA都要插入1个wait state。APB bridge必须要有2个address reg,确保在采样更新AHB主机address的时候,同时也能把之前的address保持给APB从机。

back to back 传输,读写交替的

 

在T7-T8,显然APB总线进入了IDIE state(但实际上我认为可以到setup,开始Addr3 的APB写操作)

三态实现

APB总线推荐进行读写通道分离的机制。但允许通过三态合并读写为1路数据通道。

 

在APB总线以三态实现时,进行读操作中:,SETUP state和IDIE state要有一个整个cycle的turnaround。图中T5-6,T7-8,T10-11分别是APB的读取SETUP,IDIE,读取SETUP,PDATA都出现了turnaround。

 

这篇关于APB总线的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!