AXI总线学习

AXI总线学习
AXI总线学习

PG021

寄存器空间

全部是小端地址模式:

DMA控制寄存器:

Bit0:0当前DMA操作完成后停止DMA传输或者S/G方式下未完成的命令或传

输都被清掉。AXI4-Stream outs are potentially terminated early. Descriptors in the update queue are allowed to finish updating to remote memory before engine halt.

1启动DMA传输。

Bit2:软件复位整个DMA引擎。

Bit12:中段完成使能。

Bit13:中段完成延时使能。简单模式下无效。

Bit14:错误中断时能。

Bit23:16中断阈值。最小值为1.每发生一次中断,中断阈值计数器减一,当中断阈值寄存器为0时,DMA引擎向外产生一个中断。简单模式下无效。

Bit31:24中断延时寄存器。用来设置中断超时时间。Interrupt Delay Time Out. This value is used for setting the interrupt timeout value. The interrupt timeout is a mechanism for causing the DMA engine to generate an interrupt after the delay time period has expired. 当中断延时寄存器失效后为了保证仍然可以差生中断。

This is used for cases when the interrupt threshold is not met after a period

of time, and the CPU desires an interrupt to be generated. Timer begins

counting at the end of a packet and resets with receipt of a new packet or

a timeout event occurs. Setting thisvalue to zero disablesthe delay timer interrupt.

如果在一定的时间内,中断阈值寄存器仍然不到0,而且CPU希望产生一个中断。那么在一个数据包完成后,计数器开始计数直到接收到一个新包后或者超时事件发生后复位计数器。

DMA状态寄存器:

Bit0:停止状态位。

0=DMA运行

1=DMA通道停止。从DMA控制寄存器的停止位到状态位反映出来有一段时间。Bit1:DMA通道空闲。

Bit3:支持S/G方式否。

Bit4:DMA内部错误。

Bit5:DMA Slave错误。

Bit6:DMA译码错误。

Bit8:SG方式内部错误。

Bit9:SG方式从设备错误。

Bit12:DMA传输完成中断位。如果中断完成了并且中断阈值达到了,就会产生一个AXI DMA中断。

SG方式下才有CTRL、Status STREAM,所以才有APP0~APP5。

尾描述符里存着状态数据。

如果使用了应用层状态数据,低23位必须存储RxLength必须载入尾描述符的APP4里。如果没有使用,尾描述符的APP4存储接受到的状态数据。

数据结构式链表,头指针指向下一个指针,尾指针指向头指针。

从获得带有TXSOF的包开始,一直获取到TXEOF的包为止。

每个描述符的状态域存储了实际传输的字节数。把所有描述符的字节数累加起来就是总接收数。

描述符管理

DMA启动位置1;

尾描述符指针指向BD12;

将描述符入队直到队满;

更新当前指针指向下一个描述符;

只要尾指针不等于当前指针,并且队不满,描述符入队;队列更新;

完成位为1的描述符被释放掉用于再分配。

描述符的值域被更新(包括完成位,其他控制位,缓冲区指针,缓冲区长度等)。描述符再分配后,尾指针指向最后一个再利用的指针。

如果DMA暂停(遇到了初始TAILDESC_PTR指针指向的地方),当写了新的TAILDESC_PTR值后,重新启动。

AXI DMA向目标器件插入了一个标志表示数据类型。对于以太网,控制标签的最高字节为A。

相关主题
相关文档
最新文档