芯学长 | 掌握芯资讯,引领芯未来

您当前所在位置:首页 > 芯片设计 > 数字IC前端

数字IC设计_深入理解AMBA总线(APB interconnect的补充)

发布时间:2024-01-15来源:lawliet 0

之前的两篇文章给大家介绍了APB协议相关的知识点,并结合实际的代码给大家讲解了一下APB slave的设计。并说明了一下APB slave mux这个模块。

上一篇文章提到:通常而言,APB的interconnect模块只能连接一个master,多个Slave。因此继续管它叫interconnect感觉差了点意思。所以一般就叫它slave mux了。巧的是前几天有个同事碰到了需要多个APB master的情况。本人便帮忙调研APB是否真的只能是一主多从的结构。没想到还真搜到了一些公司的设计,是支持多主多从的APB Interconnect,这种情况下确实是名副其实的Interconnect了。

下面的文章主要参考Lattice 的IP文档:Access Denied下面的文章主要参考Lattice 的IP文档:

Access Denied

www.latticesemi.com/-/media/LatticeSemi/Documents/UserManuals/1D2/FPGA-IPUG-02054-1-2-APB-Interconnect-Module-Propel-Builder.ashx?document_id=52694首先解释一下什么是Interconnect,顾名思义,互联。起作用是把不同的组件连接在一起,包括但不限于:

  • 处理器和处理器

  • 处理器和Memory

  • 处理器和Cache

  • Cache和Cache

  • IO设备等

对于SoC工程师,把互联理解成一个开关即可。它用来管理并指挥所连接的设备之间的通信。

1、一主多从的APB Interconnect

这种情况下Interconnect和mux没有本质区别,所以很多情况下直接叫它APB mux或者APB slave mux。具体到实际的SoC设计中大概长下面这样子,可以看到它只有一个Master,AHB2APB的转接桥。同时有多个Slave模块。这也是我们在SoC中最常遇到的情况。

图片


我们看一下这个Interconnect的内部具体长什么样子,如下图所示,可以看到主要逻辑就是译码器+MUX。

对于Master-->Slave的信号而言,PENABLE、PWRITE、PWDATA、PADDR信号直接由Master给所有的Slave。而PSELx信号有SLave数量这么多组,其逻辑应该是PSELx = PSEL & dec[ x] & en[ x]; 译码器根据PADDR选择拉高某个SLAVE的dec信号,也就是最多选中其中的某一个Slave。此外下面这个图中有一个默认slave,当没有任何slave被选择的话,则会选中默认的slave,用来应对地址越界的错误情况。该Slave默认的PRDATA默认为0,PSLVERR默认为1。

对于Slave-->Master的信号而言,PREADY、PRDATA、PSLVERR由MUX进行选择,从指定的Slave传给Master。

图片

1.1、Decoder

译码器模块对每一笔传输进行地址译码,给每一个Slave相应的PSEL信号。Decode逻辑非常简单,就是根据当前的PADDR选中某一个Slave,如下图所示。这个模块功能更加丰富,地址映射可以静态的配置(工作的时候不能配置),实际上大部分的SoC设计中,地址映射应该是完全固定死的,无法更改的。这个是FPGA提供的IP,所以相对更灵活一点。


图片

1.2、Multiplexor

该模块基于MUX提供的PSELX信号,从多个Slave中选择合适的PRDATA、PREADY、PSLVERR信号,设计很简单,就不多讲解了,直接看图:


图片

2、多主多从的APB Interconnect

上面这套东西和我上一篇文档的APB slave mux其实没有本质区别,也非常的好理解。但是如果实际的需求真的需要多个Master怎么办呢?虽然APB官方没有提供这种设计示例,但实际上当然是可以实现的。我们只需要在一主多从的Interconnect的基础上增加一个Arbiter mux即可:


图片


当然这种情况下,只支持一对一的访问,所以实际上效率还是比较低的。仲裁方式可以使用固定优先级仲裁,也可以使用Round Robin仲裁。

2.1、Arbiter Mux

顾名思义,Arbiter+MUX。Master to Slave Multiplexor对多个PSEL进行仲裁,然后选择其中的一个PSELX,基于这个PSELX,选择合适的PADDR、PWRITE、PSELX、PENABLE给Single Master Interconnect模块。

相应的,Slave to Master Multiplexor将PRDATA、PREADY、PSLVERR路由到相对应的Master。从而完成整个传输流程。下图这些向右的箭头实际上是双向的。Master和Slave互相交互,完成传输过程。

图片
图片


这篇文章给大家讲解了APB Interconnect这个模块。除了官方说的一主多从,实际上我们也可以实现多主多从的Interconnect。当然这个模块实际用的很少很少,大家可以根据实际需求决定是否要使用该模块。

以上文章来源于芯时代青年 ,作者lawliet

相关推荐:

数字IC设计_深入理解AMBA总线(APB slave设计)

IC设计|Cadence innovus安装教程

2024年数字芯片设计什么方向最值得入行?

【免责声明】:本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。

文章评价

-   全部 0 条 我要点评

有疑惑?
在线客服帮您
029-81122100

立即咨询 >