FPGA|CPLD|ASIC论坛
直播中

李天乐

1年用户 4经验值
擅长:可编程逻辑 嵌入式技术 处理器/DSP 接口/总线/驱动
私信 关注
[问答]

有关PL端利用AXI总线控制PS端DDR进行读写(从机wready信号一直不拉高)

image.png

5.31我在做PL控制PS DDR时遇到个问题,就是从机(DDR)的wready信号就不会拉高,只有你发出wvalid信号时才会拉高,(这是通过跑通例程抓取信号看见的)。然而awready信号是会一直拉高的。这与写数据通道好像有点区别。

我不清楚PS 端的DDR到底发生了什么,但是和MIG核就是有点不一样,通过仿真MIG核可以发现,PL端的DDR是会先一直发出wready信号的。这个问题就是我怎么判断他到底采用了这三种握手里面的哪种握手,这实在令人费解。还是PS端的DDR的机制的问题。

5.31 update:
问题找到部分:
情形一:接口的设置上,如果是设置为AXI4,如图所示,
image.png

那么,DDR就不会拉高wready信号,验证如图所示,必须你首先给wvalid信号,wready信号才会拉高
image.png

image.png

情形二:如果设置为AXI3,如图所示
image.png

经过验证发现,最后DDR会一开始就拉高wready信号
image.png

PS:先来看一下AXI Interconnect这个M_AXI接口信号,它会产生一个S_AXI接口没有的信号M_AXI_wid(AXI3信号)
image.png

在这个时候貌似这个AXI Interconnect就实现了AXI4 TO AXI3协议转换。

回到问题本身:这就十分有意思了,一个接口的定义改变会影响DDR的运行状态,这到底是为什么??

已退回10积分

回帖(1)

温暖镜头

2024-5-31 16:20:40
从您的描述来看,您在使用PL端(可编程逻辑)通过AXI总线控制PS端(处理器系统)的DDR(动态随机存取存储器)进行读写操作时遇到了一个问题,即从机(DDR)的wready信号不会一直拉高,只有在发出wvalid信号时才会拉高。而awready信号则一直拉高。您想知道如何判断采用的握手方式以及这是否与PS端DDR的机制有关。

首先,我们需要了解AXI总线的握手协议。AXI总线有三种握手协议:ACK-based、LIGHTWT和HANDSHAKE。在这些协议中,wready和awready信号的行为可能会有所不同。

1. ACK-based:在这种协议下,wready信号会在每个事务开始时拉高,表示目标设备准备好接收数据。awready信号也会在每个事务开始时拉高,表示目标设备准备好接收地址。

2. LIGHTWT:在这种协议下,wready信号不会在每个事务开始时拉高,而是在目标设备准备好接收数据时才拉高。awready信号的行为与ACK-based协议相同。

3. HANDSHAKE:在这种协议下,wready和awready信号都会在目标设备准备好接收数据或地址时拉高。

根据您的描述,从机(DDR)的wready信号在发出wvalid信号时才会拉高,而awready信号一直拉高。这种情况可能更接近LIGHTWT协议。但是,为了确定采用的握手方式,您需要检查设计中的AXI总线配置。

关于PS端DDR的机制问题,这可能与您使用的DDR控制器或MIG(Memory Interface Generator)核有关。不同的DDR控制器或MIG核可能有不同的握手协议实现。您可以通过查看文档或仿真来了解您使用的DDR控制器或MIG核的具体实现。

建议您采取以下步骤来解决问题:

1. 检查设计中的AXI总线配置,确定采用的握手协议。

2. 查阅您使用的DDR控制器或MIG核的文档,了解其握手协议的实现方式。

3. 如果可能,尝试修改设计或使用不同的DDR控制器/MIG核,以适应您的项目需求。

4. 如果问题仍然存在,您可以考虑寻求专业人士的帮助,或者在相关论坛和社区寻求建议。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分