AXI总线学习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

状态FIFO填满了,AXI DMA在数据流中会插入等待周期。

AXI Interconnect可以插入读/写FIFO缓冲来避免死锁。

AXI DMA *_ISSUING乘以*_BURST_SIZE<*_FIFO_DEPTH
使用EDK的时候,为MM2s和S2MM都实例化了FIFO。

中断控制器
一旦接受到EOF标志的包开始计数。

接收到SOF标志的包后复位。

当一个延时中断发生后,延时计数器清零,直到中断服务程序中DMASR.Dly_Irq位清零后才继续计数。

相关文档
最新文档