您的位置:首页 > 汽车 > 新车 > 惠州排名推广_做视频的网站_种子搜索神器在线引擎_外链代发免费

惠州排名推广_做视频的网站_种子搜索神器在线引擎_外链代发免费

2024/12/23 22:48:17 来源:https://blog.csdn.net/csdn_gddf102384398/article/details/143951909  浏览:    关键词:惠州排名推广_做视频的网站_种子搜索神器在线引擎_外链代发免费
惠州排名推广_做视频的网站_种子搜索神器在线引擎_外链代发免费

在xapp1171示例中,假设Host PC将PCIE:BAR0赋值为:0x00000000_def00000

PCIEBAR2AXIBAR_0=0x81000000,即Host PC读写0x00000000_def00000就是在读写AXI地址0x81000000(BRAM在AXI总线上的基地址)

在AXI总线上,
MIG基地址=0x00000000
AXI_PCIE_DM=AXI:BAR1=0x80000000,注意不是AXIBAR2PCIEBAR_1寄存器的地址,8 MB
AXI_PCIE_SG=AXI:BAR0=0x80800000,注意不是AXIBAR2PCIEBAR_0寄存器的地址,8 MB
BRAM基地址=0x81000000,32 KB
AXI_PCIE_CTL基地址=0x81008000,16 KB
AXI_CDMA_LITE基地址=0x8100C000,16 KB

1、Host PC向地址0x00000000_def0C000写入0x0A000100,即写AXI_CDMA_LITE基地址,
即写AXI CDMA的控制寄存器,以使能AXI CDMA的SG DMA模式;
这是一个Host PC发起的32位的PCIE内存写事务。

3、Host PC向地址0x00000000_def08208写入0x00000001_00000000,这是一个Host PC发起的64位的PCIE内存写事务。即向AXI地址0x81008208写64位数;AXI地址0x81008208就是AXIBAR2PCIEBAR_0寄存器在AXI总线上的地址;即Host PC向AXIBAR2PCIEBAR_0寄存器写入0x00000001_00000000;0x00000001_00000000是Host PC系统主存的一个地址,Host PC在系统主存中分配了一段内存用于存放传输描述符链表,这段内存的起始地址就是0x00000001_00000000,即Host PC将系统主存中的SG列表的起始地址写到了AXIBAR2PCIEBAR_0寄存器中;

4、a.Host PC在地址0x00000000_def00000处写入0x0000ccc0_c0000000,这是Host PC发起的64位的PCIE内存写事务。0x00000000_def00000对应AXI地址为0x81000000,即BRAM基地址,即Host PC向BRAM的首地址写入64位数0x0000ccc0_c0000000;0x0000ccc0_c0000000是Host PC系统主存中的一个地址,DMA引擎就是从0x0000ccc0_c0000000地址处进行DMA数据传输;
b.Host PC在地址0x00000000_def00008处写入0x0000ddd0_d0000000;
在本步骤中,Host PC向BRAM写入了2个Host PC系统主存地址,这两个地址为
Host PC系统主存中的两个内存段的起始地址,DMA引擎就是读写这些位于Host PC系统主存中的内存段进行DMA数据传输;

5、Host PC在地址0x00000000_def0c008处写入0x80800000,0x00000000_def0c008对应的AXI地址为0x8100C008,即AXI CDMA中的CURDESC_PNTR寄存器在AXI总线上的地址;即Host PC向AXI CDMA中的CURDESC_PNTR寄存器写入0x80800000,此值为AXI_PCIE_SG的基地址;
对于AXI CDMA,当前描述符的地址位于AXI地址0x80800000处,于是AXI CDMA发出AXI地址0x80800000以获取传输描述符。这个AXI地址位于AXI:BAR0所描述的AXI地址区间,而AXI:BAR0对应的AXIBAR2PCIEBAR_0寄存器中的值为Host PC系统主存中的SG列表的起始地址,所以当AXI CDMA从AXI地址0x80800000处读数据时,就是读Host PC系统主存中的SG列表中的第一个传输描述符;

6、和步骤5类似,Host PC在地址0x00000000_def0c010处写入0x808000c0,0x00000000_def0c010对应的AXI地址为0x8100c010,即AXI CDMA中的TAILDESC_PNTR寄存器在AXI总线上的地址;即Host PC向AXI CDMA的TAILDESC_PNTR寄存器写入0x808000c0,以告诉AXI CDMA最后一个描述符在AXI总线上的地址,因为AXI CDMA访问Host PC系统主存中的SG列表是通过AXI总线访问的。

当AILDESC_PNTR寄存器被写后,AXI CDMA就开始读取并处理描述符,即执行DMA操作了

7、AXI CDMA将持续进行SG DMA操作,直到尾描述符被处理后结束;


下面解释这4个位于Host PC系统主存的描述符(这4个描述符在系统主存中可以不连续):

描述符中含有SA和DA,AXI CDMA执行DMA时,将地址SA中的数据拷贝至地址DA中

描述符1:
Desc1在系统主存中的地址为0x00000001_00000000;
Desc1描述的DMA行为为:从BRAM首地址处拷贝64位数据到AXIBAR2PCIEBAR_1中;
BRAM首地址存放了步骤4中由Host PC写入的用作DMA数据传输的系统主存地址;
所以描述符1描述的DMA行为不涉及PCIE设备与Host PC系统主存的数据传输;

描述符2:
Desc2在系统主存中的地址为0x00000001_00000040;
Desc2描述的DMA行为为:从AXI地址0x8000_0000处拷贝64KB数据到AXI地址0x0010_0000;
AXI地址0x8000_0000位于AXI:BAR1所描述的AXI地址区间,而AXI:BAR1对应的AXI to PCIE寄存器为AXIBAR2PCIEBAR_1,AXIBAR2PCIEBAR_1寄存器中的内容刚由Desc1描述的行为被赋值,所以,描述符2描述的行为实际是DMA引擎从Host PC系统主存中拷贝64KB数据到FPGA PCIE卡中的DDR中,拷贝数据的源地址为Host PC系统主存地址0x0000ccc0_c0000000,目的地址为AXI地址0x0010_0000(对应FPGA PCIE卡上的DDR);

描述符3:
描述符3的描述的行为和描述符1类似;

描述符4:
描述符4的描述的行为与描述符2相反,即从FPGA PCIE卡上的DDR中拷贝数据到Host PC系统主存;

总结:上述过程中,Host PC在系统主存中分配了用于数据传输的内存,也分配了SG列表;Host PC需要将用于DMA数据传输的内存段起始地址告诉PCIE设备(本例是BRAM),Host PC还需要告诉DMA引擎第一个描述符在主存中的地址和最后一个描述符在主存中的地址。SG DMA引擎在得知描述符在主存中的地址后,将逐个读取描述符,执行描述符所描述符的数据拷贝行为,直到处理完所有的描述符;AXI CDMA不要求SG列表(即传输描述符链)在Host PC系统主存中连续;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com