队伍编号:CICC1893
队伍名称:夏芯
本篇分享基于hbirdv2的APB总线添加外设的过程,能力有限,希望能够互相学习。
1. APB总线介绍:
APB(Advanced Peripheral Bus),外围总线的意思。是ARM公司提出的AMBA总线结构之一,几乎已成为一种标准的片上总线结构。APB主要用于低带宽的周边外设之间的连接,例如UART、1284等。所以,设计的硬件加速器可以通过APB总线的方式实现与CPU的通信。
2. APB总线实现原理:
APB总线只支持单个主机,即APB bridge。APB bridge上可进行多个外设的挂载。
3. APB总线读写操作:
关于APB总线的读写操作在网上有很多解读,所以就不详细展开了。这里贴一下读写操作的时序图。
写操作:
读操作:
4. hbirdv2中的APB总线:
我们可以看到hbirdv2的overview中说,蜂鸟二代相较于一代增添了APB接口。这就给我们提供了可以基于APb总线添加外设的平台。
可以简单的对源码进行解读。在e203_subsys_perips.v中可以看到(以UART1为例):
SoC在ICB总线下,引入了icb2apb模块,即完成了ICB总线到APB总线的转换,然后再将APB接口对应的外设挂在了APB总线上。其余的GPIO、SPI、IIC等外设均采用了该实现方式。
再反观ICB总线上的外设地址。
其中还有很多空余的未使用的地址空间。这就给我们提供了很方便的可基于APB总线进行外设扩展的平台。
本文为简介,后续将提供详细实现过程。