美高森美-LOGO

使用 DDR 内存的 SmartFusion0618 设备上的 Microsemi DG2 错误检测和纠正

Microsemi -DG0618-SmartFusion2-Devices-using-DDR 内存错误检测和纠正-PRODUCT-IMAGE

美高森美公司总部
一个企业,Aliso Viejo,
CA 92656美国
美国境内:+1 800-713-4113
美国境外:+1 949-380-6100
传真:+1 949-215-4996
电子邮件: sales.support@microsemi.com
www.microsemi.com
© 2017 美高森美公司。 版权所有。 Microsemi 和 Microsemi 徽标是 Microsemi Corporation 的商标。 所有其他商标和服务标记均为其各自所有者的财产

Microsemi 对此处包含的信息或其产品和服务对任何特定目的的适用性不作任何保证、陈述或保证,Microsemi 也不承担因应用或使用任何产品或电路而产生的任何责任。 在此销售的产品和 Microsemi 销售的任何其他产品都经过了有限的测试,不应与任务关键型设备或应用程序一起使用。 任何性能规格都被认为是可靠的,但未经验证,买方必须单独、与任何最终产品一起或安装在任何最终产品中进行并完成产品的所有性能和其他测试。 买方不得依赖 Microsemi 提供的任何数据和性能规格或参数。 买方有责任独立确定任何产品的适用性并对其进行测试和验证。 Microsemi 在此提供的信息是“按原样、在哪里”提供的,并且存在所有错误,与此类信息相关的全部风险完全由买方承担。 Microsemi 没有明确或暗示地向任何一方授予任何专利权、许可或任何其他知识产权,无论是关于此类信息本身还是此类信息所描述的任何内容。 本文档中提供的信息是 Microsemi 的专有信息,Microsemi 保留随时对本文档中的信息或任何产品和服务进行任何更改的权利,恕不另行通知。

关于Microsemi
美高森美公司(纳斯达克代码:MSCC)为航空航天与国防、通信、数据中心和工业市场提供全面的半导体和系统解决方案组合。 产品包括高性能和抗辐射模拟混合信号集成电路、FPGA、SoC 和 ASIC; 电源管理产品; 计时和同步设备以及精确的时间解决方案,为时间设定了世界标准; 语音处理设备; 射频解决方案; 分立元件; 企业存储和通信解决方案、安全技术和可扩展的反Tamp呃产品; 以太网解决方案; 以太网供电 IC 和中跨; 以及定制设计能力和服务。 Microsemi 总部位于加利福尼亚州的 Aliso Viejo,在全球拥有约 4,800 名员工。 了解更多信息 www.microsemi.com.

修订历史

修订历史描述了文档中实施的更改。更改按修订列出,从最新发布开始。

  • 修订版 4.0
    更新了 Libero v11.8 软件版本的文档。
  • 修订版 3.0
    更新了 Libero v11.7 软件版本的文档。
  • 修订版 2.0
    更新了 Libero v11.6 软件版本的文档。
  • 修订版 1.0
    Libero SoC v11.5 软件版本的初始版本。

使用 DDR 内存的 SmartFusion2 设备上的错误检测和纠正

介绍
在单粒子翻转 (SEU) 易受影响的环境中,随机存取存储器 (RAM) 容易出现由重离子引起的瞬态错误。
本文档介绍了 SoC FPGA 的 EDAC 功能,这些功能用于内存通过微控制器子系统 (MSS) DDR (MDDR) 连接的应用。
SmartFusion2 器件中实现的 EDAC 控制器支持单错误纠正和双错误检测 (SECDED)。 SmartFusion2 MSS 设备中的所有存储器——增强型静态随机存取存储器 (eSRAM)、DDR、低功耗 DDR (LPDDR)——均受 SECDED 保护。 DDR 同步动态随机存取存储器 (SDRAM) 可以是 DDR2、DDR3 或 LPDDR1,具体取决于 MDDR 配置和硬件 ECC 功能。
SmartFusion2 MDDR 子系统支持高达 4 GB 的内存密度。 在此演示中,您可以选择 DDR 地址空间中 1 GB 的任意内存位置(0xA0000000 至 0xDFFFFFFF)。
当启用 SECDED 时:

  • 写操作计算并添加 8 位 SECDED 代码(每 64 位数据)
  • 读取操作读取数据并根据存储的 SECDED 代码检查数据,以支持 1 位纠错和 2 位错误检测

下图描述了 DDR SDRAM 上的 SmartFusion2 EDAC 的框图。

图 1 • 顶层框图

DDR 的 EDAC 功能支持以下内容:

  1.  SECDED机制
  2. 在检测到 3 位错误或 1 位错误时向 ARM Cortex-M2 处理器和 FPGA 结构提供中断
  3. 将 1 位和 2 位错误的数量存储在错误计数器寄存器中
  4. 存储最后 1 位或 2 位错误影响的内存位置的地址
  5. 将 1 位或 2 位错误数据存储在 SECDED 寄存器中
  6. 向 FPGA 架构提供错误总线信号

有关 EDAC 的更多信息,请参阅 UG0443:SmartFusion2 和 IGLOO2 FPGA 安全性和可靠性用户指南和 UG0446:SmartFusion2 和 IGLOO2 FPGA 高速 DDR 接口用户指南。

设计要求
下表列出了设计要求。

表 1 • 设计要求

  • 设计要求说明
  • 硬件要求
  • SmartFusion2 高级开发套件板 Rev B 或更高版本
  • FlashPro5 编程器或更高版本
  • USB A 转 mini-B USB 数据线
  • 电源适配器 12 V
  • DDR3 子板
  • 操作系统 任何 64 位或 32 位 Windows XP SP2
  • 任何 64 位或 32 位 Windows 7
  • 软件要求
  • Libero® 片上系统 (SoC) v11.8
  • 软件控制台 v4.0
  • FlashPro编程软件v11.8
  • 主机 PC 驱动程序 USB 到 UART 驱动程序
  • 运行演示 Microsoft .NET Framework 4 客户端的框架

演示设计
演示设计 files 可从 Microsemi 中的以下路径下载 web地点: http://soc.microsemi.com/download/rsc/?f=m2s_dg0618_liberov11p8_df
演示设计 file包括:

  • 内存配置 File
  • DDR_EDAC
  • 编程 files
  • GUI 可执行文件
  • 自述 file

下图描述了设计的顶层结构 file秒。 有关详细信息,请参阅 readme.txt file.

图 2 • 演示设计顶层结构

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-2 上的错误检测和纠正

演示设计实现
MDDR 子系统有一个专用的 EDAC 控制器。 当从内存中读取数据时,EDAC 会检测到 1 位错误或 2 位错误。 如果 EDAC 检测到 1 位错误,EDAC 控制器会纠正错误位。 如果为所有 1 位和 2 位错误启用 EDAC,则系统寄存器中相应的错误计数器会递增,并生成相应的中断和错误总线信号到 FPGA 架构。
这是实时发生的。 为了演示此 SECDED 功能,手动引入错误并观察检测和纠正。
此演示设计涉及以下步骤的实施:

  1. 启用 EDAC
  2. 将数据写入 DDR
  3. 从 DDR 读取数据
  4. 禁用 EDAC
  5. 损坏的 1 或 2 位
  6. 将数据写入 DDR
  7. 启用 EDAC
  8. 读取数据
  9. 在1位错误的情况下,EDAC控制器纠正错误,更新相应的状态寄存器,并在步骤2完成的读取操作中给出步骤8写入的数据。
  10. 如果出现 2 位错误,则会生成相应的中断,应用程序必须更正数据或在中断处理程序中采取适当的操作。 这两种方法在本演示中进行了演示。

本演示中实现了两个测试:循环测试和手动测试,它们适用于 1 位和 2 位错误。

循环测试
当 SmartFusion2 设备从 GUI 接收到环路测试命令时执行环路测试。 最初,所有错误计数器和 EDAC 相关寄存器都处于复位状态。
每次迭代都会执行以下步骤。

  1. 启用 EDAC 控制器
  2. 将数据写入特定的 DDR 内存位置
  3. 禁用 EDAC 控制器
  4. 将 1 位或 2 位错误引发的数据写入相同的 DDR 内存位置
  5. 启用 EDAC 控制器
  6. 从同一 DDR 内存位置读取数据
  7. 将 1 位或 2 位错误检测和 1 位错误纠正数据发送到 GUI

手动测试
此方法允许通过初始化手动测试 DDR 内存地址(1xA2 至 0xDFFFFFFF)的 0000000 位错误检测和纠正以及 0 位错误检测。 将 1 位/2 位错误手动引入选定的 DDR 内存地址。 在启用 EDAC 的情况下,给定数据将写入选定的 DDR 内存位置。 然后将损坏的 1 位或 2 位错误数据写入禁用 EDAC 的同一内存位置。 在启用 EDAC 的情况下从同一内存位置读取数据时,会记录有关检测到的 1 位或 2 位错误的信息。 高性能 DMA 控制器
(HPDMA) 用于从 DDR 内存中读取数据。 实现双位错误检测中断处理程序以在检测到 2 位错误时采取适当的操作。
下图描述了 EDAC 演示操作。

图 3 • 设计流程

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-3 上的错误检测和纠正

笔记: 对于 2 位错误,当 Cortex-M3 处理器读取数据时,代码执行进入硬故障处理程序,因为接收到的中断延迟了处理器的响应时间。 当它响应中断时,它可能已经传递了数据并且不小心启动了一个命令。 结果,HRESP 停止处理不正确的数据。 2 位错误检测使用 HPDMA 从 DDR 地址位置读取数据,指示处理器读取数据有 2 位错误,系统应采取适当的措施进行恢复(ECC 中断处理程序)。

设置演示设计
本节介绍 SmartFusion2 高级开发套件电路板设置、GUI 选项以及如何执行演示设计。
以下步骤描述了如何设置演示:

  1. 将 USB mini-B 电缆的一端连接到 SmartFusion33 高级开发套件板中提供的 J2 连接器。 将 USB 电缆的另一端连接到主机 PC。 发光二极管 (LED) DS27 必须点亮,表示 UART 链接已建立。 确保自动检测到 USB 到 UART 桥接器驱动程序(可以在设备管理器中验证),如下图所示。
    图 4 • USB 转 UART 桥接器驱动程序
    Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-4 上的错误检测和纠正
    如果未安装 USB 到 UART 桥接驱动程序,请从以下位置下载并安装驱动程序: www.microsemi.com/soc/documents/CDM_2.08.24_WHQL_Certified.zip.
  2. 连接 SmartFusion2 高级开发套件板上的跳线,如表 4,第 11 页所示。在进行跳线连接时,电源开关 SW7 必须关闭。

图 5 • SmartFusion2 高级开发套件电路板设置

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-5 上的错误检测和纠正

 图形用户界面
本节介绍 DDR – EDAC 演示 GUI。

图 6 • DDR – EDAC 演示 GUI

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-6 上的错误检测和纠正

GUI 支持以下功能:

  1. COM口和波特率的选择
  2. 选择 1 位纠错选项卡或 2 位错误检测
  3. 向指定 DDR 地址写入数据或从指定 DDR 地址读取数据的地址字段
  4. 向指定 DDR 地址写入数据或从指定 DDR 地址读取数据的数据字段
  5. 串行控制台部分打印从应用程序收到的状态信息
  6. Enable EDAC/Disable EDAC:启用或禁用 EDAC
  7. 写入:允许将数据写入指定地址
  8.  读取:允许从指定地址读取数据
  9. 循环测试开/关:允许在循环方法中测试 EDAC 机制
  10.  初始化:允许初始化预定义的内存位置(在本演示中为 A0000000-A000CFFF)

运行演示设计
以下步骤描述了如何运行设计:以下步骤描述了如何运行设计:

  1. 打开电源开关 SW7。
  2. 使用编程对 SmarFusion2 设备进行编程 file 在设计中提供 files.(\编程File\EDAC_DDR3.stp)使用FlashPro设计软件,如下图所示。
    图 7 • FlashPro 编程窗口
    Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-7 上的错误检测和纠正
  3. 编程成功后按SW6开关复位板子。
  4. 启动 EDAC_DDR 演示 GUI 可执行文件 file 在设计中可用 files(\GUI 可执行文件\EDAC_DDR.exe)。 将显示 GUI 窗口,如第 8 页图 9 中所示。
  5. 单击“连接”,选择COM 端口并建立连接。 连接选项更改为断开连接。
  6. 选择 1 位错误校正选项卡或 2 位错误检测。
  7. 可以执行手动和回路测试。
  8. 单击 Initialize 以初始化 DDR 内存以执行手动和循环测试,初始化完成消息将显示在串行控制台上,如图 8,第 9 页所示。

图 8 • 初始化完成窗口

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-8 上的错误检测和纠正

执行环路测试
单击环路测试打开。 它以循环模式运行,在这种模式下会不断纠正和检测错误。 在 SmartFusion2 设备中执行的所有操作都记录在 GUI 的串行控制台部分。

表 2 • 环路测试中使用的 DDR3 内存地址

  • 内存 DDR3
  • 1 位纠错 0xA0008000
  • 2 位错误检测 0xA000C000

执行手动测试
在这种方法中,错误是使用 GUI 手动引入的。 使用以下步骤执行 1 位纠错或 2 位错误检测。

表 3 • 手动测试中使用的 DDR3 内存地址

输入地址和数据字段(使用 32 位十六进制值)。

  • 内存 DDR3
  • 1位纠错0xA0000000-0xA0004000
  • 2 位错误检测 0xA0004000-0xA0008000
  1. 单击启用 EDAC。
  2. 单击写入。
  3. 单击禁用 EDAC。
  4. 在数据字段(引入错误)中更改一位(在 1 位纠错的情况下)或两位(在 2 位错误检测的情况下)。
  5. 单击写入。
  6. 单击启用 EDAC。
  7. 点击阅读。
  8. 观察 GUI 中的错误计数显示和数据字段。 错误计数值增加 1。

1 位错误环路校正窗口如下图所示。

图 9 • 1 位错误循环检测窗口

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-9 上的错误检测和纠正

2位错误检测手动窗口如下图所示。

图 10 • 2 位错误检测手动窗口

Microsemi -DG0618-SmartFusion2-Devices-using-DDR Memory-10 上的错误检测和纠正

结论
该演示展示了 MDDR 子系统的 SmartFusion2 SECDED 功能。

附录:跳线设置

下表显示了在 SmartFusion2 高级开发套件上设置所需的所有跳线。

表 4 • SmartFusion2 高级开发套件跳线设置

跳线 : Pin (From) : Pin (To) : 注释

  • J116、J353、J354、J54 1 2 这些是 Advanced 的默认跳线设置
  • J123 2 3 开发套件板。 确保相应地设置这些跳线。
  • J124, J121, J32 1 2 焦TAG 通过 FTDI 编程

DG0618 演示指南修订版 4.0

文件/资源

使用 DDR 内存的 SmartFusion0618 设备上的 Microsemi DG2 错误检测和纠正 [pdf] 用户指南
DG0618 使用 DDR 内存的 SmartFusion2 设备上的错误检测和纠正,DG0618,使用 DDR 内存的 SmartFusion2 设备上的错误检测和纠正,使用 DDR 内存的 SmartFusion2 设备,DDR 内存

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *