UniPHY IP 在表明和分解 UniPHY IP 的global_reset_n或soft_reset_n信号低后,无法完成校准。EMIF 调试工具套件无法连接到该接口(将项目链接到设备)。即使稍后发布多个重置,此条件也不会更改。 此状况只能通过重新配置设备来恢复。
这些症状可能是由 EMIF UniPHY IP 的内部重置结构引起的。 对 M20K RAM 地址总线的逻辑进行异步重置,可能会导致异步逻辑传播。 这可能会影响 M20K 地址行/列解码器的功能,打开多个词行,可能导致比特蜂窝之间的充电共享,损坏 M20K 的内容。 请注意,由于异步重置,M20K 损坏的概率非常低。
M20k 读写操作期间的 PLL 重置也会导致嵌入式 RAM/ROM 损坏,因为 PLL 锁损可能会在重置过程中导致时钟故障,这可能会影响 M20K 地址行/列解码器的功能。
这种损坏会影响 UniPHY IP,因为它包含一个用于校准的Nios ® II 处理器,处理器的程序代码存储在 M20K RAM 中。 如果Nios ® II 程序内存中发生损坏,这可能会导致Nios ® II 定序器锁定,从而导致不完整的校准。 只有重新编程设备,才能从这种情况中恢复,因为 M20K 的内容仅在设备编程过程中加载。
请务必注意,下面列出的常见 EMIF 故障 不一定意味着 M20K RAM 已损坏或Nios ® II 排序器被锁定
- 如果校准从未通过(即校准总是失败)。
- 如果校准空间非常小,而且偶尔校准失败。
- 如果设计通过校准,在运行设计时偶尔会出现数据错误。
- 如果 Design 表示已通过校准,但设计无法按预期进行。
UniPHY IP 内核有两个重置输入
Global_reset_n:连接 UniPHY IP 中的所有内容,包括 PLL。
Soft_reset_n:除了 PLL,它都连接到 UniPHY IP 中的所有事物。
1. Altera强烈建议您时刻仅使用soft_reset_n。 仅使用global_reset_n进行重置电源。
要在开机过程中重置 PLL,请使用以下顺序
a. 表明Global_reset_n(PLL 重置)
B。 启动电源并重新配置芯片
c. De-assert Global_reset_n
2. 该修复程序更改 UNIPHY IP 内核的内部重置控制器和重置结构,以使用同步重置,并在复位状态下先发制人地拆解 M20K clock_enable端口。 这会阻止任何亚稳定迁移传播到 M20K 地址解码器。
此修复程序将作为 13.0dp1、13.0sp1 和 Quartus 的所有后续版本提供。 用户需要重新生成 UnipHY IP 并重新编译设计。 Altera建议转到这些版本中的 Quartus 之一。
如果更紧急地需要修复,或者 Quartus 版本 12.1sp1 需要修复,则可以手动更新 UniPHY IP 内核。 必须遵循以下程序:
在设计中找到Altera UniPHY IP 的源文件。
有 5 个文件需要修改。
altera_reset_synchronizer.v
altera_reset_controller.v
altera_mem_if_sequencer_mem_no_ifdef_params.sv
_if0_p0_reset.v
_if0_s0.v
步骤
1. 从以下链接下载 altera-reset-synchronizer.v,并放置在与 UniPHY IP 源文件相同的目录中:Altera_reset_synchronizer.v
2. 从以下链接下载 altera-reset-controller.v ,并放置在与 UniPHY IP 源文件相同的目录中:Altera_reset_controller.v
3. 在 altera_mem_if_sequencer_mem_no_ifdef_params.sv 中 - 确保输入“s1_clken”连接到“the_altsyncram”的“clocken0”输入
4. 在实例中_if0_p0_reset.v – 修改“dut_if0_p0_reset_sync”实例的定义陈述,以便根据附加的示例文件 (dut_if0_p0_reset.v) 设置参数“RESET_SYNC_STAGES”和“NUM_RESET_OUTPUT”。(请勿在 UniPHY IP 源文件目录中下载示例文件)
5. In_if0_s0.v
(请勿在 UniPHY IP 源文件目录中dut_if0_s0.v 下载示例文件)
dut-if0-s0.v (_if0_s0.v 的示例文件)
– 将以下端口添加到最高级别:
电线early_rst_controller_reset_out_reset;
- 将“rst_controller”模块上的输出端口“m20k_gate”连接到“sequencer_mem”模块的“s1_clken”输入。 由于 M20k_gate 输出处于活动低位,因此需要反转输出,如下所示:
.s1_clken (~early_rst_controller_reset_out_reset),//在 sequencer_mem上,连接的示例文件 (dut_if0_s0.v) 第 785 行
.m20k_gate (early_rst_controller_reset_out_reset),//在rst_controller上,连接的样本文件第 2572 行
6. 完成这些更改后,需要重新编译您的设计。