为什么即使多次执行EDERROR_INJECT JTAG指令,CRC_ERROR引脚也只在Cyclone V和Stratix V器件中输出一个脉冲?-Altera-Intel社区-FPGA CPLD-ChipDebug

为什么即使多次执行EDERROR_INJECT JTAG指令,CRC_ERROR引脚也只在Cyclone V和Stratix V器件中输出一个脉冲?

当满足以下所有条件时,您将在Cyclone®V和Stratix®V中看到此行为。

– 启用内部清理功能

– 每个EDERROR_INJECT JTAG指令使用相同的JTAG故障注入寄存器内容。

使用EDERROR_INJECT JTAG指令将错误信息转移到JTAG故障注入寄存器时,会修改第一帧的回读位。因此检测到CRC错误,CRC_ERROR引脚输出一个脉冲。

但是这个错误是假错误,操作只修改第一帧的回读位,而不是修改存储在配置RAM(CRAM)中的第一帧的内容。

在第一次CRC错误检测之后,如果启用了内部清理功能,则根据假错误修改CRAM中第一帧的内容。结果,修改的第一帧的内容与故障注入寄存器的内容匹配。因此,没有检测到CRC错误,CRC_ERROR引脚不再切换为高电平。

即使再次执行EDERROR_INJECT JTAG指令,只要使用相同的JTAG故障注入寄存器内容,就不会检测到错误,CRC_ERROR引脚也不会再次切换。

要再次切换CRC_ERROR引脚,可以发送JTAG故障注入寄存器的不同内容。但它进一步修改了CRAM中第一帧的内容。为避免此类进一步修改,建议将全零发送到JTAG故障注入寄存器,以便恢复CRAM中第一帧的内容。

当您在AN 539中使用示例.jam文件:在英特尔 ®FPGA 器件中使用CRC进行错误检测和恢复的测试方法时 ,您可以在[46]中看到BOOLEAN = $ 040600004000;在脚本中。示例.jam文件将$ 040600004000发送到JTAG故障注入寄存器。

将全零发送到JTAG故障注入寄存器时,请在[46] = $ 000000000000中使用BOOLEAN;

请登录后发表评论

    没有回复内容