Arria 10 Avalon-MM DMA接口PCIe解决方案用户指南

ID 683425
日期 10/31/2016
Public
文档目录

5.11.1. 读DMA描述符控制器寄存器

以下表格介绍内部DMA描述符控制器中的寄存器。当外部例化DMA描述符控制器后,就可通过BAR访问这些寄存器。一定要把偏移添加到读控制器基地址中。当内部例化描述符控制器后,就通过BAR0访问这些寄存器。读控制器在偏移0x0000。

地址偏移

寄存器

访问权限

说明

0x0000

RC Read Status and Descriptor Base (Low)

R/W

指定根复合存储器中读状态基址的下32位及描述符列表。此地址必须在32字节边界。在偏移0x4编程上32位后,内部软件必须编程此寄存器。更改RC Read Status and Descriptor Base (Low)基地址,就必须用完RD_TABLE_SIZE指定的所有描述符。

0x0004

RC Read Status and Descriptor Base (High)

R/W

指定根复合存储器中读状态基址上32位及描述符列表。在编程此寄存器下32位以前,软件必须编程此寄存器。

0x0008

EP Read Descriptor FIFO Base (Low)

RW

指定端点存储器中读描述符FIFO基地址的下32 bits。Read DMA从根复合存储器取回描述符。此地址一定是通过Read DMA Avalon-MM主端口看到的描述符控制器Read描述符列表中Avalon-MM从端口的Avalon-MM地址。编程偏移0x8上32 bits后就必须编程此寄存器。

0x000C

EP Read Descriptor FIFO Base (High)

RW

指定端点Avalon-MM存储器读描述符列表中指定基址的上32 bits。Read DMA从根复合存储器取回描述符,并把描述符写入此处的 FIFO。此地址必定是通过Read DMA Avalon-MM主端口看到的描述符控制器Read描述符列表中Avalon-MM从端口的Avalon-MM地址。必须先编程此寄存器再编程此寄存器的下32位。

0x0010

RD_DMA_LAST_PTR

RW

读取时,返还最后一个描述符请求的ID。如果无未处理的DMA请求或者DMA处于复位中,就返回一个值0xFF。

被写入时,指定所请求最后一个描述符的ID。读取值和写入值的不同在于待处理的描述符个数。

例如,读取值为4,所请求的最后一个描述符就为4。要多指定5个描述符,软件应该把9写入RD_DMA_LAST_PTR寄存器寄存器。DMA就多执行5个描述符。

要读DMA记录每个描述符的done位,编程此寄存器每次仅传输一个描述符。

描述符ID到达RD_TABLE_SIZE后,环回到0。例如,如果RD_TABLE_SIZE值读为126,而您想再多执行3个描述符,软件必须写127,然后把1写入RD_DMA_LAST_PTR寄存器。

0x0014 RD_TABLE_SIZE

RW

指定Read描述符列表大小。设置描述符个数- 1。默认情况下, RD_TABLE_SIZE设置为127。该值指定最后一个Descriptor ID。要更改RC Read Status and Descriptor Base (Low)基地址,必须完RD_TABLE_SIZE指定的所有描述符。
0x0018 RD_CONTROL

RW

[31:1]保留。

[0]Done。设置后,描述符控制器为状态列表里的每个描述符写Done位。在完成最后一个描述符后,描述符控制器发送单个MSI中断。如果最后一个描述符没有生成Done,就由RD_DMA_LAST_PTR指定。