AXI jtag2axi驱动dma,stream fifo与ddr和bram之间交换数据 - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

D1 框图

image image

简化框图与完整框图

image

D2 产生bitstream后,直接用sdk的xcst控制

D3 DMA在stream fifo与bram之间读写数据

寄存器配置,注意数量差异。读写memory是u32计数,dma传输是byte计数,差了4倍。

mwr 0xC0000000 0x87654321 8
mrd 0xC0000000 8
mwr 0x41E00000 0x00010003
mwr 0x41E00030 0x00010003
mwr 0x41E00018 0xC0000000
mwr 0x41E00048 0xC0001000
mwr 0x41E00058 32
mwr 0x41E00028 32
mrd 0x41E00000 30
mrd 0xC0001000 8

image image

结果正确。 说明,mwr 0x41E00000 0x00010003和mwr 0x41E00030 0x00010003非常重要,不能省,否则触发不了dma。折腾了很久。

D4 DMA在stream fifo与ddr之间读写数据

mwr 0x10000000 0x87654321 8
mrd 0x10000000 8
mwr 0x41E00000 0x00010003
mwr 0x41E00030 0x00010003
mwr 0x41E00018 0x10000000
mwr 0x41E00048 0x10001000
mwr 0x41E00058 32
mwr 0x41E00028 32
mrd 0x41E00000 30
mrd 0x10001000 8

image image

结果正确。

D5 从ddr->fifo,然后从fifo->bram

mwr 0x10000000 0x12345678 8
mrd 0x10000000 8
mwr 0x41E00000 0x00010003
mwr 0x41E00030 0x00010003
mwr 0x41E00018 0x10000000
mwr 0x41E00048 0xc0000000
mwr 0x41E00058 32
mwr 0x41E00028 32
mrd 0x41E00000 30
mrd 0xc0000000 8

image image

结果正确。

D6 简化框图,去掉zynq,只用jtag2axi控制

image image image

D7 DMA在stream fifo与bram之间读写数据

mwr 0xC0000000 0x87654321 8
mrd 0xC0000000 8
mwr 0x41E00000 0x00010003
mwr 0x41E00030 0x00010003
mwr 0x41E00018 0xC0000000
mwr 0x41E00048 0xC0001000
mwr 0x41E00058 32
mwr 0x41E00028 32
mrd 0x41E00000 30
mrd 0xC0001000 8

image image

结果正确。

D8 总结

  • mwr 0x41E00000 0x00010003和mwr 0x41E00030 0x00010003非常重要,不能省,否则触发不了dma。折腾了很久。
  • 当使用zynq的ddr时,整个系统建议使用zynq产生的PL时钟。当时因为没有使用,出现了异常情况,jtag2axi访问不了任何内容。