写
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桥是APB架构中唯一的主机,同时APB也是AHB或ASB总线中的从机。
APB从机
从机WDATA可以在PSELx HIGH的时候,在1 PCLK的上升沿 或 PENABLE的上升沿被 latched。
从机RDATA要在PWRITE LOW并且PSELx 和 PENABLE 都HIGH时输出。
读
主机发起对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。