0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA中循环冗余校验的不同类型

YCqV_FPGA_EETre 来源:未知 作者:刘勇 2019-07-29 10:16 次阅读

注意:本博文介绍了利用POST_CRC试错的方法,但总体而言,赛灵思推荐在所有架构上使用Soft Error Mitigation (SEM)IP。

SEM IP 提供了一种可用于测试 SEU 检测与纠正能力的机制并提供了更强大的调试能力。

本博文中讨论的功能仅受 7 系列器件的支持。

功能

7系列

Kintex® UltraScale™ 和 Virtex® UltraScale™

Kintex UltraScale+™ 和 Virtex UltraScale+™

Readback CRC/POST_CRC

否,使用 SEM IP 替代

否,使用 SEM IP 替代

赛灵思 FPGA 中循环冗余校验 (CRC) 的不同类型:

1) 一般 CRC 校验在一般比特流加载过程中,CRC 校验利用 CRC 寄存器进行。该“CRC 寄存器”的描述详见《7 系列 FPGA 配置用户指南》(UG470)。

FPGA 在比特流被加载时计算 CRC 值,然后该值与在比特流加载结束时预期的 CRC 值进行比较。如果两个值匹配,则 FPGA 成功加载。

一般情况下默认启用 CRC 校验。比特流属性为 BITSTREAM.GENERAL.CRC,其中有效选项包括“ENABLE”(启用)或“DISABLE”(禁用)。

2) 回读 CRC/POST CRC 校验

POST_CRC 校验在配置 FPGA 之后,设计运行过程进行。

一般情况下,比特流 CRC 校验是一种独立功能,具有其自己的 CRC 校验寄存器。

POST_ CRC 校验具有用于存储校验值的不同以上比特流 CRC 的寄存器。

启用 POST_CRC 校验的目的是什么?

启用 POST_CRC 校验的目的是检测单粒子翻转(SEU)。SEU 导致配置存储器中的数位翻转。

POST_CRC 可与 FRAME_ECCE2 原语配合使用,以便提供针对此等错误的额外功能和更好的可见性。

可利用 FRAME_ECCE2 的输出监控错误检查和纠正(ECC)和回读 CRC 电路的状态。

如需了解更多有关 FRAME_ECCE2 原语的详细信息,请参阅《Vivado Design Suite 7 系列 FPGA 和 Zynq-7000 SoC 库指南》(UG953)。

用户通常想要测试这种崩溃发生时的实例,以便确保此等错误被成功检测到。

测试插入错误的一种方法是编辑 PRE_COMPUTED CRC 值。

测试插入错误的步骤:

将以下设置放置在设计 XDC 中:

set_property POST_CRC ENABLE [current_design]#Enables the Post CRC checkingset_property POST_CRC_SOURCE PRE_COMPUTED [current_design]#Determines an expected CRC value from the bitstreamset_property POST_CRC_ACTION CONTINUE [current_design]#Even if a CRC error is detected, continue CRC checking.#Other options include HALT, CORRECT_AND_CONTINUE and CORRECT_AND_HALTset_property POST_CRC_INIT_FLAG ENABLE [current_design]#Leaves the INIT_B pin enabled as a source of the CRC error signal. Useful especially if FRAME_ECC is not used

如需了解更多有关这些设置的详细信息,请参阅《Vivado Design Suite 属性参考指南》(UG912)。

运行设计流程并生成比特流。

在生成了比特流之后,PRE_COMPUTED CRC 的值可在 .bit 文件中校验。

该值会是非零值。

若要确定 PRE_COMPUTED CRC 值在比特流中的哪个位置,可查阅《7 系列 FPGA 配置用户指南》(UG470)中的示例 7 系列比特流。

若要测试插入错误,您就要禁用一般 CRC 校验,以便让比特流成功载入。

切记,如果对位于正常 CRC 覆盖范围内的比特流进行了任何编辑,即会标注 CRC 错误并阻止比特流加载。

若要禁用一般 CRC 校验,您应使用以下设置:

set_property BITSTREAM.GENERAL.CRC DISABLE [current_design]#Disables the general CRC checkingset_property POST_CRC ENABLE [current_design]#Enables the Post CRC checkingset_property POST_CRC_SOURCE PRE_COMPUTED [current_design]#Determines an expected CRC value from the bitstreamset_property POST_CRC_ACTION CONTINUE [current_design]#Even if a CRC error is detected, continue CRC checking.#Other options include HALT, CORRECT_AND_CONTINUE and CORRECT_AND_HALTset_property POST_CRC_INIT_FLAG ENABLE [current_design]#Leaves the INIT_B pin enabled as a source of the CRC error signal.Useful especially if FRAME_ECC is not used

再次运行设计流程并生成比特流。

在生成比特流之后,您应观察 PRE_COMPUTED CRC 的值是否为零。这是禁用 GENERAL.CRC 的结果,以便进行错误测试。

由于预计有前面的非零值,要配置器件并观察其行为。

INIT_B 引脚的监控应显示 CRC 错误。

FRAME_ECCE2 也可被用于接收连接到 ILA 上的 FRAME_ECCE2 发出的输出信号。然后它将有可能观察到 CRCERROR。

下文的例化可被用于 FRAME_ECCE2 原语的连接:

然后输出可被传输给 ILA。

当器件被编程后,通过校验 ILA 上的信号,它应有可能查看类似于以下示例的输出。

例如,由于未找到预期的非零 PRE_COMPUTED 值,标注了 CRCERROR 错误。

可以理解的是,大部分用户都想要测试错误检测,以确定在此等错误被检测到时,将会以某种形式予以报告。该测试可让用户坚信,在真实的情景中,错误会被正确检测并报告。

如上文所述,由于 SEM IP 所提供的能力,赛灵思推荐使用 SEM IP,而不是 POST_CRC。POST_CRC 的功能在较新的架构中不受支持。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593179
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29195

原文标题:如何利用 7 系列 FPGA 中的 POST_CRC 试错

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CRC循环冗余校验的算法

    想问下51单片机和所有嵌入式中一个很基本也很常见的问题,CRC循环冗余校验的算法中生成多项式为什么要那样取(有个生成多项式的表格),如果信息段中一位或多位传输错误,校验段是怎样保证唯一
    发表于 01-21 21:02

    循环冗余校验(CRC)算法入门引导

    循环冗余校验(CRC)算法入门引导
    发表于 08-17 12:40

    如何利用循环冗余校验(CRC)计算单元进行传输数据的校验

    循环冗余校验(CRC)计算单元是什么?如何利用循环冗余校验(CRC)计算单元进行传输数据的
    发表于 12-15 06:04

    循环冗余校验码的单片机及CPLD 实现

    循环冗余校验(CRC)是一种可靠性很高的串行数据校验方法。介绍循环冗余
    发表于 04-16 14:19 16次下载

    循环冗余校验码---CRC码

    循环冗余校验码---CRC码   二进制信息位串沿一条信号线逐位在部件之间或计算机之间传送称为串行传送。CRC(Cyclic Redundancy c
    发表于 10-13 16:52 6994次阅读
    <b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>码---CRC码

    基于FPGA循环冗余校验实验系统

    文章首先分析了循环冗余校验码的功能,在此基础上提出了基于FPGA的实现方法,详细阐述了CRC校验编解码的实现方法,并提出了基于现有的实验箱设
    发表于 03-26 13:52 1600次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>实验系统

    STM32L4循环冗余校验模块(CRC)介绍

    STM32L4循环冗余校验模块(CRC)介绍 有兴趣的可以参考下
    发表于 12-25 10:38 27次下载

    循环冗余校验奇偶校验累加和校验等知识分享

    CRC校验循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC
    的头像 发表于 11-08 09:31 8475次阅读
    <b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>奇偶<b class='flag-5'>校验</b>累加和<b class='flag-5'>校验</b>等知识分享

    并行循环冗余校验算法

    循环冗余校验(CRC)是一种众所周知的错误检测代码,已广泛用于以太网,PCIe和其他传输协议中。现有的基于FPGA的实现解决方案在高性能场景中会遇到资源过度利用的问题。填充零问题和可
    的头像 发表于 02-08 16:42 1605次阅读
    并行<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>算法

    使用FPGA实现循环冗余校验CRC编码器的设计资料说明

    介绍了循环冗余校验(CRC)编码器的设计及FPGA实现过程,采用原理图输入法对整个系统进行了编译和仿真,并在芯片EPlK30TCl44-3中对该设计的核心部分进行了测试验证。结果表明,
    发表于 02-05 17:00 19次下载
    使用<b class='flag-5'>FPGA</b>实现<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>CRC编码器的设计资料说明

    AN-1277: 利用ADV7850的循环冗余校验

    AN-1277: 利用ADV7850的循环冗余校验
    发表于 03-19 07:11 5次下载
    AN-1277: 利用ADV7850的<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>

    Verilog数字系统基础设计中的循环冗余校验

    CRC(循环冗余校验) CRC介绍 临时“插播”,后面有实例。 CRC(Cyclic Redundancy Check,循环冗余
    的头像 发表于 08-17 17:08 6294次阅读

    AN5507_STM32H7 系列闪存接口中的循环冗余校验

    AN5507_STM32H7 系列闪存接口中的循环冗余校验
    发表于 11-21 08:11 0次下载
    AN5507_STM32H7 系列闪存接口中的<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>

    CRC循环冗余校验简介

    CRC 是Cyclic Redundancy Check的缩写,循环冗余校验,用于校验数据传输的完整性。一般情况下在数据发送前计算CRC校验
    的头像 发表于 04-24 13:04 3870次阅读
    CRC<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>简介

    32位可编程循环冗余校验(CRC)

    电子发烧友网站提供《32位可编程循环冗余校验(CRC).pdf》资料免费下载
    发表于 09-25 11:22 0次下载
    32位可编程<b class='flag-5'>循环</b><b class='flag-5'>冗余</b><b class='flag-5'>校验</b>(CRC)