因为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信号。
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]:
1.3、 AXI-APAXI的master,访问该AP,可以发起AXI访问。输入DAP总线,输出AXI总线。 1.4、 APB-APAPB的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、 replicatorreplicator用来将上级的master发送的ATB数据,传输给下级的两个ATB slave组件。 结构如下图所示: 总共有4个port:
3.2、 funnel将多个ATB输入,合并成一个ATB输出。 结构如下图所示: 3个port:
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、 CTICTI用来接收和发送trigger,channel信号用。
5.2、 CTM
CTM,连接各个CTI。 6、trace sink组件6.1、 TPIUtrace port interface ,接收trace信息,发送trace信息到片外。
内部结构如下图: 接收ATB发送的trace信息,通过formatter,将数据转化,得到真正的数据信息,保存在FIFO中。 因为有2个时钟域,一个是片内的时钟域,一个是片外的时钟域,因此该FIFO是异步FIFO,写是在atclk时钟域写入,读是在traceclkin时钟域读取。读取之后,通过trace out,将数据以串行方式,从接口发送出去。 APB接口,是TPIU向外部提供了配置TPIU寄存器的APB接口。 6.2、 ETBembedded trace buffer。存储trace信息的buffer。
内部结构如下:
接收ATB发送的trace信息,通过formatter,将数据转化,得到真正的数据信息,然后通过trace RAM interface,将数据,保存到trace RAM中。 APB接口,是ETB向外部提供了配置ETB寄存器的APB接口。 7、power requestorpower requestor可以让外部通过APB总线控制指定power domain的上电和断电。从而控制指定的coresight组件的power。 8、总结coresight-400,其实就是ARM实现coresight系统的套件,包含了coresight的各个组件,我们利用这个套件,就不再需要自己单独去设计以及验证这些coresight组件,直接拿过来,搭建soc环境。并且coresight-400组件,还提供了一些测试case,可以用来验证搭建的coresight系统,是否正确。 更多的信息,查看ARM提供的coresight-400组件文档。 |
|