我们只需关注与IP核交互的部分信号即可,IP核与DDR4交互的部分不用关心。下图框出的部分即需要关注的信号。
框起来的信号的详细用法,具体可以参考官方给的 example design,此文章主要总结用法,可能并不详细。
关于写:
c0_ddr4_app_wdf_wren= 1 时数据写入DDR, 数据写入成功必须满足的条件是:
c0_ddr4_app_cmd= 0;
c0_ddr4_app_en = 1;
c0_ddr4_app_rdy= 1;
c0_ddr4_app_wdf_rdy= 1;
c0_ddr4_app_addr 地址配置无误;
以上条件必须严格满足,否则会出现丢数甚至DDR卡死等情况。 本人测试过程中存储的数据量巨大,会一直重复覆盖读写DDR,上述条件有一个时序的错位,导致DDR在存数过程中卡死。
关于读:
c0_ddr4_app_cmd= 1 时从DDR中读取数据, 读取数据只要保证 c0_ddr4_app_addr 和 c0_ddr4_app_en 同时在 c0_ddr4_app_rdy =1 时有效即可。 读出数据与读命令之间会有接近30个时钟周期的延迟。