GIC-600的内部结构组件

描述

接下来看看每个组件。

• 首先是distributor,一个SoC只有一个。

•它的组件只能与distributor通信。所以,可以看出,distributor是GIC-600中的核心,其作用是收集所有的中断,并转发给相应的目标core。

soc

图3 GIC-600 distributor和SPI collator

对于core来说,可以通过上图中的ACE-Lite slave接口访问GIC-600中除去GITS_TRANSLATER的所有寄存器。由于为了实现LPI,GIC-600的distributor要维护几张表,且这些表格保存在内存中,所以需要一个master接口去访存。在上图中,对应的是ACE-Lite master总线接口。Distributor还包含三组AXI4-Stream接口,分别用于redistributor,ITS和其它distributor(比如多路服务器)的通信。

SPI collator对外的接口比较简单,输入SPIs,是来自外设的中断线。在GIC-600中,SPI数目是32的整数倍,目前最多支持960。输出SPI_r,是经过时钟同步的SPI信号,如果需要,可以送给发出SPI的外设。

Wake request模块是配合SoC功耗管理用的,如果需要实现core的idle状态管理,或者powergating,在distributor把中断发给目标core之前必须唤醒该core。所以唤醒信号是每个core一个。

简单介绍完distributor,需要再讲讲AXI4-Stream总线。

soc

图4 AMBA演进

在AXI4-Stream中,去掉了地址项,允许无限制的数据突发传输规模。正如spec中所说,这个总线是用于master和slave之间交换数据用的。接口信号比较简单,如下图:

soc

图5 AXI4-Stream接口信号列表

大部分信号和AXI类似,ACLK和ARESETn信号,不必多说。TREADY和TVALID是mater和salve的握手信号,slave可以通过TREADY反压master的数据传送。

需要注意的是TDEST和TID,TDEST提供数据流的路由信息,也就是说一个master可以接几个slave设备。TID提供数据流的标识,意味着master可以给slave交叉发送不同数据流。

如果两个设备要实现双向传输,就需要互为master和slave。拿GIC-600来说,一个SoC中只有一个distributor,同时可以有若干redistributor,但是redistributor只与distributor通信,且需要双向传输。也就是说distributor能看到多个redistributor,而一个redistributor只能看到distributor。

Distributor可以通过TDEST把数据路由给相对应的redistributor,并且通过redistributor发过来的TID以区分不同的redistributor。

TDATA数据流包含三种类型:data、position、null。data是数据;position作为占位符使用,可以用来表征data的相对位置,null不包含任何有用的信息。

数据流的结构可以有很多种,比如可以只传数据;也可以将数据和null或position混合传输。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分