FPGA ZYNQ中PS与PL交互的HP接口详解

该工程实现了PL通过HP接口(8个字节)下使用AXI协议往DDR中写数据。PS读取处理。

66cfebfe-3962-11f1-90a1-92fbcf53809c.png

这种就是不断地读那块资源。CPU资源浪费下节是DMA

当前简单的传输1.PS并不知道什么时候传输数据,需要PL给一个中断,然后PS读取中断以后,在进行读取。2PL端口要告诉PS从哪个地址写入的数据,都需要PL告诉PS 端口

GP接口是PS和PL 少量数据的接口。

但是要大数据交互需要用到高性能总线 HP接口 把数据送给DDR

67870528-3962-11f1-90a1-92fbcf53809c.png

还有一种速度较快的ACP接口 外部数据通过ACP接口通过CACHE送给CPU进行操作。 但是不好操作DMA,一般用HP接口。

1设置HP接口

6852359a-3962-11f1-90a1-92fbcf53809c.png

设置时钟和复位

68b46850-3962-11f1-90a1-92fbcf53809c.png

可以看到HP接口是axifulll协议

6910ac78-3962-11f1-90a1-92fbcf53809c.png

存入多少数据等等呢个

696b33b4-3962-11f1-90a1-92fbcf53809c.png

创建一个AXI主机接口添加到工程

69cc8f7e-3962-11f1-90a1-92fbcf53809c.png

6a2c3262-3962-11f1-90a1-92fbcf53809c.png

6a8cf49e-3962-11f1-90a1-92fbcf53809c.png

MASTER的Drive 需要互联模块。在添加复位模块

连接完成后

6ae6e328-3962-11f1-90a1-92fbcf53809c.png

6b43beae-3962-11f1-90a1-92fbcf53809c.png

分配地址。

6b9ffb1a-3962-11f1-90a1-92fbcf53809c.png

在rtl中的PARAMETER可以在 ps中进行设计

6bfd1da4-3962-11f1-90a1-92fbcf53809c.png

6c5e43ea-3962-11f1-90a1-92fbcf53809c.png

根据HP接口的位宽 设置自己写的模块

6cbf9fe6-3962-11f1-90a1-92fbcf53809c.png

2.启动SDK

建立工程

上一次工程是读BRAM的内存 DDR也是一个内存 是一样的逻辑

将头文件添加进去

6d18df3e-3962-11f1-90a1-92fbcf53809c.png

这里需要禁用cache 不知道什么时候刷新cache所以禁用 ,如果刷新了但是PL的DDR中没有数据,就会取数据错误。

在读数据的时候HP接口是64位的数据,所以用到IN64函数 ,送入的地址,可以在ps端口进行看到分配的内存,还可以6d75519c-3962-11f1-90a1-92fbcf53809c.png,在bBsP 参数中找到参数

6dce9266-3962-11f1-90a1-92fbcf53809c.png

AXIHP从机模块的基址

6e2742a8-3962-11f1-90a1-92fbcf53809c.png

因为一次写入的是64个bit 也就是8个字节 (这里需要看下PL测写入的是一次地址是8个地址)下一次取的地址就需要加8

PL(可编程逻辑)侧完成一次64字节的数据传输后,下一次写入的起始地址通常是当前基地址加上64(即十六进制的0x40)

为了让你快速把握全局,下表详细列出了在不同传输场景下,下一次写入地址的计算方式:

传输场景 本次写入起始地址 本次写入数据量 下一次写入起始地址 核心原理说明
单次突发(Burst)传输 0x0000 64字节 0x0040(0x0000 + 64) AXI协议基于字节寻址。每次突发传输结束后,主设备(PL)需要重新发起一次新的传输,并手动设置新的起始地址
连续突发传输(自动递增) 0x0000 64字节 由AXI控制器自动计算 在配置为突发模式时,AXI IP核(如Datamover)的内部逻辑会在一次事务中自动根据突发长度(Burst Length)递增地址,但整个突发事务本身只使用一个起始地址。事务结束后,若需再次传输,地址仍需手动设置为0x0040

6e8224a2-3962-11f1-90a1-92fbcf53809c.png

AXI 设置一次突发的多少个字节HP接口是8个字节 直接送到DDR是32个字节

6edf8af2-3962-11f1-90a1-92fbcf53809c.png

数组中的数据

6f402ef2-3962-11f1-90a1-92fbcf53809c.png

3.开发经验

6f9da2e4-3962-11f1-90a1-92fbcf53809c.png

在axi传输中 PS一侧的从机HP接口,如果主机给Valid拉高但是从机的ready没有反应这时候可能是在字节 突发的等等不对。

Gravatar

About 奥洁自由人

作者文章