vicaforAET

UG1234讲解

0
阅读(3375)

文章主要Xilinx ug1234, 同时要重点参阅其他相关文档,如1164, 1238,etc,


P18下面提到了bitstream, 这里值得注意的是,一旦当bitstream loaded into the DDR, DDR4自然就被清空了。

 

 

As previously described in Expanded Partial Reconfiguration, recall that although only the Programmable Region is replaced with user-defined kernel content during the SDAccel System Compiler flow(尽管确实在SDAccel System Compiler编译流程中,programmable region 是被user-defined kernel替换了), the generated partial bitstream corresponds to the entirety of the expanded region level of hierarchy(生成的部分bitstream是和整个expanded region相关的。 这一点相当重要,也就是说, 这个IP core不仅仅是kernel部分搞定,它产生的bitstream还要包含全部的expanded的level信息). Since the expanded region is a superset of the Programmable Region and other platform logic(expanded region是由Programmable region(programmable region只是expanded region里的一部分)与其他logic共同组成的), each SDAccel System Compiler run places and routes the entirety of that expanded region(SDA环境会对整个expanded的区域进行布局布线), allowing the user kernels to be flexibly placed and routed together with the remainder of the expanded region logic(这样user kernel就可以在expanded region中剩下的区域灵活的place and routed), thereby providing higher fabric capacity to the user kernel content than if only the Programmable Region were contained in the partial bitstream.

而不是仅仅使partial bitstream 中包括programmable region

所以总结来说,这个IP只是为了产生一个占位符,这个并不重要,重要的是,它指定了一个level of hierarchy in the DSA. 这样后面的Compiler可以将user defined kernel 放在platfrom中。

这样的处理方式比bitstream中只包含有Programmable Region要好的多

翻译page 19 / 50

SDAccel OpenCL programmable region IP上的M00_AXI与M03_AXI是直接与DDR4 controller相连接的。

Kernel的输入与输出设备必须要和DATA_CLK与DATA_RESET同步。

如果是RTL自己开发的kernel, 那么就必须要将control_CLK转化到Kernel_CLK, 之后在输出端将KERNEL_CLK2转化为CONTROL_CLK. 

 

 

那么在图3-9中,表达的意思是1*4 AXI是在control_CLK与DATA_CLK两个clock domain之间做转换。CONTROL_CLK是由整个progrmmable IP外面进来的,而DATA_CLK是kernel自己要用的clock.  可以很明显的从图中看出,DATA_CLK与interconnect 相连,同时也与四个kernel相连。

每个kernel的输出都有一个AXI interconnect接着。

所以总的说来,SDA在编译的时候,会首先初始化kernel, 接着,在kernel的上下端部署AXI interconnect。所以说,尽管我们中间的部分还不确定,但是数据的接口其实是已经准备好了的。

 

 

AXI Interconnectivity   page 22/50

做为AXI interconnectivity部分,主要的数据传输线路包括两部分:

一个是从主机到所有的global memory, 另一个主要的data path is从user kernel to global memory中的用户定义部分。这些是由5个AXI smartconnect IP来完成的。

它为主机与kernel提供了通向DDR的数据通路。

在图3-12中,interconnect_aximm_host提供了一个slave接口,5个master接口来面向后端。(后端是另外4个interconnect, and DDRs)每个接口都是256bit width. S00_AXI是与主机的那个XDMA连在一起。它是与PCIe提供的时钟信号同步的。而同时,四个master interface, 也是和XDMA clock(from PCIe)同步的。还有一个M04_AXI,它是与AXI performance Monitor连在一起,是为了profiling用的。

Page23/50

对于后面的那四个来说,它们每个都是2*1,即两个slave, 1个master.

对于每一个个体而言,它们的S00_AXI 是与interconnect_aximm_host相连的,是为了主机去访问global memory, 所以这里的时钟是从PCIe那边来的。对应aclk1

 

而对于4个interconnect中的每一个,它们的2*1中的2中的第二个信号,是从SDAccel programmable region区域的master interface过来的。所以说,它们的clock是与kernel clock同步的。对应aclk2

 

这四个interconnect 的M00_AXI interface是直接面向DDR的,所以它们的主clock,也就图3-12的aclk,当然是连接着DDR4 IP的AXI interface clock.

Host经过XDAM IP只是一个单纯的single control path master.  低速度的AXI-lite 32位数据通道control interface 分为两个部分:分别与static区域与reconfigurable region有关。

如图3-13所示,static region 包含一个1*7的AXI interconnect IP, 它使得XDMA IP能够通过图片右侧的M00_AXI through M05_AXI这六个Master interface 来控制6个peripherals, 同时包含一个connection (M00_AXI) 到reconfigurable expanded region的AXI IP instance.而这个M00_AXI则是通过AXI Register Slice IP到达reconfigurable 那边的。(具体请参见partial reconfiguration isolation)

 

而在reconfigurable expanded region也包含一个1*7的AXI interconnect IP instance, 它的S00_AXI slave interface是与static区域相连接的。这个是通过连接上一段提到的AXI Register Slice IP实现的。

 

 

 

 

 

 

 

这时我们再看一看partial reconfiguration isolatino技术

我个人觉得它是怕下载程序时改变static region部分。

在static部分有一个Memory Mapped GPIO IP core, 它里面有一个寄存器。当新的partial bitstream 下载时,它会往这个ip inst里的gate_pr寄存器中写东西,导致以下一系列的reset结果:

1.      让static region中的reset controller中的psreset_regslice_data_pr in reset, 它产生一个同步reset信号到regslie_data_ AXI Register Slice IP, 同时holds XDMA data path

还有几点,就不一一赘述了。

 

 

 

 

 

 

 

 

在硬件部分的最后,让我们来看一看Applicatin Profiling and other features,

Profiling 是通过trace offload hardware infrastructure来实现的。

Expanded region的apm_sys sub-hierarchy可以monitor and characterize AXI transactions.

应该是大致将它的特点描述出来。

看图中3-16,中心模块AXI Performance Monitor包含5个输入信号,分别来自四个内核与主机(主机的这个是从AXI Register Slice IP过来的)。一一旦开始运行,这些信号就会直接进入到AXI-Stream FIFO中,提供给SDx环境来进行profiling feature. 

 

 

 

 

 

 

在软件层面上,Hardware Abstraction Layer将SDA runtime 与xcldma driver的具体实现隔离开来。

主机与板子是通过:   PCIe host connectivity

而这个连接是通过学习一个kernel mode DMA driver

Xcldma driver 与硬件之间的互动是根据Address map来进行的。具体见30/50   ug1234

如果没有错的话,这些是可以在硬件中指定的,即reference design中。Xlcdma driver在头文件(header files)中定义了这些。

The xcldma driver is developed for the speciied address mapping and MM IP functionality.

他说,当你了解了address map, DMA and host interface, 你可以自己去定制自己的driver.

 

 

 

 

在page35/50

Implementation中,用vivado去construct IP diagram, synthesize the design, implement the design, and finally produce a DSA file. 这个file是为了在SDAccel环境中使用而创建的。