美高森美-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 內存

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *