【精品博文】coresight(八)soc-400套件

因为coresight属于ARM制定的标准,因此ARM针对coresight,设计出来soc-400套件。设计人员可以利用这个套件,快速的生成coresight系统,并且生成相应的case,对coresight系统进行验证。

coresight soc-400系统框图:

这个套件中,可以利用AMBA-designer来自动生成coresight的组件,只需要更改一些配置信息即可自动生成。

1、DAP组件

DAP的一般结构:

SWJ-DP和外部的sw或jtag通信,然后和DAPBUS通信。实现对各个AP的访问。然后各个AP再对片内内部资源进行访问。

SWJ-DP包括两个DP,一个是SW-DP,一个是JTAG-DP。SW-DP负责和外部的sw通信,JTAG-DP负责与外部的jtag通信。

下图是DAP的内部结构,包含一个DP,5个AP。

DAP将外部接口数据(external interface format),也就是SW协议数据或者JTAG协议数据,转化为内部的接口数据(internal interface),也就是AP访问数据。

1.1、 SWJ-DP

将jtag或sw总线协议,转化为dap总线。

接收jtag或sw数据,如果是对DP访问,直接在内部对DP的寄存器进行访问。如果是对AP的访问,转化为dap总线,对后级所接的AP进行访问。

组件,还提供了两个power域的上电请求(system power和debug power),以及debug域的复位请求。

对于两个power域的信号,每个信号都是1bit信号。

信号

作用

cdbgpwrupreq

DAP向power控制器发送的debug power域的上电请求以及时钟使能信号

cdbgpwrupack

power控制器向DAP回应的debug power域的上电请求以及时钟使能响应信号

csyspwrupreq

DAP向power控制器发送的system power域的上电请求以及时钟使能信号

csyspwrupack

power控制器向DAP回应的system power域的上电请求以及时钟使能响应信号

debugger通过控制这些信号,来实现对debug power域和system power域的上电以及时钟使能请求操作。而控制这些信号,是通过写DA的CRTL/STAT寄存器来实现。

该寄存器的31-28bit。

在实际中,可能power域是断电,或者时钟是关掉的。此时debugger要对这个power域中的组件进行访问,就需要将该power域给开启以及将时钟给开启。此时就需要这些信号。

两个power域的请求信号是独立的,因为两个power域都是独立的,互不干扰。

当REQ信号变高后,表示要power up,power控制器应该将ACK信号拉高,表示响应该请求。而REQ信号变低后,表示要power down,power控制器应该将ACK信号拉低。

对于debugger,可以访问该寄存器,读取ACK的值,即可知道该power域是否有上电。

reset也是一样的。DAP可以请求复位debug域的寄存器。也是通过CTRL/STAT寄存器来控制。

时序如下:会驱动PRESETDBGn信号为低,从而实现debug复位。

1.2、 DAPBUS互联

连接DP和后续的所有AP。组件会根据DP的select寄存器,决定是对哪一个AP进行访问,从而生成对该AP访问的总线。

对于地址dapcaddrs[15:2]:

  • dapcaddrs[15:8]:是select寄存器的最高8位的值,也就是AP的选择

  • dapcaddrs[7:2]: 访问AP寄存器的地址

1.3、 AXI-AP

AXI的master,访问该AP,可以发起AXI访问。输入DAP总线,输出AXI总线。

1.4、 APB-AP

APB的master,访问该AP,可以发起APB访问。输入DAP总线,输出APB总线。

2、APB互联组件

APB互联组件,连接了众多的coresight组件,外部可以通过APB互联,实现对连接到APB互联上的coresight组件的访问。

以下是APB互联组件框图:

APB互联组件包括以下的一些互联组件。

2.1、 rom table

每个APB互联组件,至少连接一个rom table组件,并且该组件的地址为0x0000_0000,这样外部通过rom table,在能知道连接到该APB互联组件上的所有coresight组件信息。

2.2、 APB异步桥

coresight组件,和APB互联的时钟,可能是异步的,因此需要一个异步桥,进行转换。

2.3、 APB同步桥

coresight组件,和APB互联的时钟,可能是同步,但是不是同频,因此需要一个同步桥,进行转换。

3、ATB互联组件

ATB互联组件包括以下的一些互联组件

3.1、 replicator

replicator用来将上级的master发送的ATB数据,传输给下级的两个ATB slave组件。

结构如下图所示:

总共有4个port:

  • ATB slave port:接收上一级的ATB master的ATB数据

  • optional APB port:配置replicator的APB总线端口,外部通过该APB总线设置replicator。

  • ATB master port0:输出给master0的ATB总线

  • ATB master port1:输出给master1的ATB总线

3.2、 funnel

将多个ATB输入,合并成一个ATB输出。

结构如下图所示:

3个port:

  • ATB slave port:接收上级的ATB总线,至少有两组

  • optional APB port:配置funnel的APB总线端口,外部通过该APB总线设置funnel。

  • ATB master port:输出给master的ATB总线

3.3、 upsizer

将输入的数据位宽为SBW+1的ATB总线,转换为数据为数据位宽为MDW+1的ATB总线。MDW >= SBW。

ATB_DATA_WIDTH_SLAVE:     8,16,32,64

ATB_DATA_WIDTH_MASTER:   8,16,32,64

3.4、 downsizer

将输入的数据位宽为SBW+1的ATB总线,转换为数据为数据位宽为MDW+1的ATB总线。MDW <= SBW。

ATB_DATA_WIDTH_SLAVE:     8,16,32,64

ATB_DATA_WIDTH_MASTER:   8,16,32,64

3.5、 asynchronous bridge

跨时钟域(异步时钟)的数据转换桥。

将时钟为clks的ATB总线,转换为时钟为clkm的ATB总线。

3.6、 synchronous bridge

跨时钟域(同步时钟)的数据转换桥。

将时钟为clks的ATB总线,转换为时钟为clknm的ATB总线。

4、timestamp组件

timestamp组件,用来生成时间信息的。

组件,根据SCLK,产生计数值,然后发送给各个coresight组件,这样各个组件就有了时间信息。

5、ECT组件

ECT包括CTI和CTM。

5.1、 CTI

CTI用来接收和发送trigger,channel信号用。

  • trigger interface:连接需要发送trigger,接收trigger的组件

  • channel interface:连接CTM,接收CTM发送的channel,以及发送channel到CTM上

  • APB interface: 配置CTI的APB总线,外部通过该APB总线,设置CTI

5.2、 CTM

CTM,连接各个CTI。

6、trace sink组件

6.1、 TPIU

trace port interface ,接收trace信息,发送trace信息到片外。

  • debug apb port:配置TPIU的APB接口,外部通过APB总线,设置TPIU。

  • ATB slave port: 接收trace source或trace link的trace数据

  • trace port:芯片的输出管教,输出信息给外界

  • trigger port: 连接CTI。

内部结构如下图:

接收ATB发送的trace信息,通过formatter,将数据转化,得到真正的数据信息,保存在FIFO中。

因为有2个时钟域,一个是片内的时钟域,一个是片外的时钟域,因此该FIFO是异步FIFO,写是在atclk时钟域写入,读是在traceclkin时钟域读取。读取之后,通过trace out,将数据以串行方式,从接口发送出去。

APB接口,是TPIU向外部提供了配置TPIU寄存器的APB接口。

6.2、 ETB

embedded trace buffer。存储trace信息的buffer。

内部结构如下:

接收ATB发送的trace信息,通过formatter,将数据转化,得到真正的数据信息,然后通过trace RAM interface,将数据,保存到trace RAM中。

APB接口,是ETB向外部提供了配置ETB寄存器的APB接口。

7、power requestor

power requestor可以让外部通过APB总线控制指定power domain的上电和断电。从而控制指定的coresight组件的power。

8、总结

coresight-400,其实就是ARM实现coresight系统的套件,包含了coresight的各个组件,我们利用这个套件,就不再需要自己单独去设计以及验证这些coresight组件,直接拿过来,搭建soc环境。并且coresight-400组件,还提供了一些测试case,可以用来验证搭建的coresight系统,是否正确。

更多的信息,查看ARM提供的coresight-400组件文档。

(0)

相关推荐