MIG v3.6 Virtex6 DDR2 / DDR3  – 当sys_rst信号有效时,phy_init_done为高电平。-Altera-Intel论坛-FPGA CPLD-ChipDebug

MIG v3.6 Virtex6 DDR2 / DDR3 – 当sys_rst信号有效时,phy_init_done为高电平。

描述

当DDR2 / DDR3内核集成到设计中时,如果断言sys_rst,则phy_init_done信号不会为低。

phy_init_done具有同步重置功能。

如果断言sys_rst,则sys_rst之后phy_init_done不会低,因为MMCM由于sys_rst而被重置。

由于没有时钟,phy_init_done将保持高电平,直到MMCM再次输出时钟。

如果在逻辑中使用phy_init_done并在此时发送读/写命令,则该命令将被忽略。

有两种方法可以解决此问题:
解决方案1:

将dfi_init_complete更改为异步重置。

在phy_init.v中,找到以下代码:
永远@(posedge clk)
如果(rst)开始
init_complete_r <= #TCQ 1’b0;
init_complete_r1 <= #TCQ 1’b0;
init_complete_r2 <= #TCQ 1’b0;
dfi_init_complete <= #TCQ 1’b0;
结束其他开始
if(init_state_r == INIT_DONE)
init_complete_r <= #TCQ 1’b1;
init_complete_r1 <= #TCQ init_complete_r;
init_complete_r2 <= #TCQ init_complete_r1;
dfi_init_complete <= #TCQ init_complete_r2;
结束
将rst更改为异步信号:
永远@(posedge clk或posedge rst)
如果(rst)开始
init_complete_r <= #TCQ 1’b0;
init_complete_r1 <= #TCQ 1’b0;
init_complete_r2 <= #TCQ 1’b0;
dfi_init_complete <= #TCQ 1’b0;
结束其他开始
if(init_state_r == INIT_DONE)
init_complete_r <= #TCQ 1’b1;
init_complete_r1 <= #TCQ init_complete_r;
init_complete_r2 <= #TCQ init_complete_r1;
dfi_init_complete <= #TCQ init_complete_r2;
结束
解决方案2:

不要重置MMCM,并始终保持时钟切换。

在infrastructure.v中,找到MMCM的RST端口并将其连接到1’b0。

请登录后发表评论

    没有回复内容