AXI jtag2axi驱动cdma和gpio - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

D1 框图

image image

gpio0用作sw输入,gpio1用作led输出

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

产生bitstream后,可以copy到其它地方去保存。这样以后重新综合也不会冲掉结果。

D3 jtag2axi控制led

image

注意GPIO的0x4寄存器是TRI寄存器,控制输入或者输出。默认是0xff,也就是输入。需要配置成0x00才能输出。 因此第1步是配置0x4为0x00输出,第2步是配置0x0寄存器来控制灯。

D4 jtag2axi读取sw

image

由于GPIO默认是输入,因此直接读取即可,不需要做任何配置。 可以看到,改变sw读到的值是不同的。

D5 CDMA读写blockram

image

读写blockram正确。

可以直接用下面的脚本测试

mwr 0xC0000000 0x87654321 8
mrd 0xC0000000 8
mwr 0x44A00018 0xC0000000
mwr 0x44A00020 0xC0001000
mwr 0x44A00028 32
mrd 0xC0001000  8

D6 CDMA测试key hole功能(固定地址)

image image image

  1. 重新填充src-ram数据,这一回让每个数据都不同。
  2. 开启cdram为key hole功能,让wr/rd都启用key hole。
  3. 启动写传输,然后读取dest-ram确认。可以看到读/写地址都固定住了。因此只有一个地址内容发送变化,读写采用的都是同一个地址的内容,值也就是最初的0xB。

image

只固定写地址,因此只有一个地址内容发送变化,写入的是最后一个值,也就是0x12。

image

只固定读地址,可以看到写地址的内容全部发送变化,全部是相同的值,也就是0x0B。

因此整个过程是ok的。

D7 用cdma的key hole功能来写led

image

第1步填充bram,第2步设置源地址和目的地址,第3步配置为写地址固定模式,第4步执行dma传输,并读出gpio寄存器确认。第5步再次执行dma传输,并读出gpio寄存器确认。第6步再次执行dma传输,并读出gpio寄存器确认。

可以看到led灯确实在变化。

可以直接用如下脚本,直接copy后贴到xsct界面中就可以全部一条一条运行。

mwr 0xC0000000 {0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88} 8
mrd 0xC0000000 8
mwr 0x44A00018 0xC0000000
mwr 0x44A00020 0x40010000
mrd 0x44A00000 10
mwr 0x44A00000 0b100000
mwr 0x44A00028 32
mrd 0x40010000 4
mwr 0x44A00028 28
mrd 0x40010000 4
mwr 0x44A00028 24
mrd 0x40010000 4

D7 用cdma的key hole功能来读sw

image

第1轮dma读

image

改版sw位置后,第2轮dma读

可以直接用如下脚本,直接copy后贴到xsct界面中就可以全部一条一条运行。

mwr 0x44A00018 0x40000000
mwr 0x44A00020 0xC0001000
mrd 0x44A00000 10
mwr 0x44A00000 0b010000
mwr 0x44A00028 32
mrd 0xC0001000  8