マイクロセミロゴ

Microsemi DG0618 DDR メモリを使用した SmartFusion2 デバイスでのエラー検出と修正

Microsemi -DG0618-SmartFusion2 のエラー検出と修正-DDR メモリを使用したデバイス-製品イメージ

マイクロセミ本社
One Enterprise、Aliso Viejo、
カリフォルニア 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は、そのような情報自体またはそのような情報によって記述されたものに関係なく、明示的または暗黙的に、特許権、ライセンス、またはその他のIP権をいかなる当事者にも付与しません。 このドキュメントで提供される情報はMicrosemiの所有物であり、Microsemiは、このドキュメントの情報または製品やサービスをいつでも予告なしに変更する権利を留保します。

Microsemiについて
Microsemi Corporation(Nasdaq:MSCC)は、航空宇宙および防衛、通信、データセンター、および産業市場向けの半導体およびシステムソリューションの包括的なポートフォリオを提供しています。 製品には、高性能で放射線硬化されたアナログミックスドシグナル集積回路、FPGA、SoC、およびASICが含まれます。 電力管理製品; タイミングおよび同期デバイスと正確な時間ソリューション。時間の世界標準を設定します。 音声処理デバイス; RFソリューション; ディスクリートコンポーネント。 エンタープライズストレージおよび通信ソリューション、セキュリティテクノロジー、スケーラブルなアンチamp製品; イーサネット ソリューション; Power-over-Ethernet IC およびミッドスパン。 カスタム設計機能とサービスと同様に。 Microsemi はカリフォルニア州アリソ ビエホに本社を置き、世界中に約 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) は、MDDR 構成とハードウェア ECC 機能に応じて、DDR2、DDR3、または LPDDR1 にすることができます。
SmartFusion2 MDDR サブシステムは、最大 4 GB のメモリ密度をサポートします。 このデモでは、DDR アドレス空間 (1xA0 ~ 0000000xDFFFFFFF) 内の 0 GB の任意のメモリ ロケーションを選択できます。
SECDED が有効な場合:

  • 書き込み操作では、SECDED コードの 8 ビットを計算して追加します (64 ビットのデータごとに)。
  • 読み取り操作は、1 ビットのエラー訂正と 2 ビットのエラー検出をサポートするために、保存されている SECDED コードに対してデータを読み取り、チェックします。

次の図は、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 and IGLOO2 FPGA Security and Reliability User Guide および UG0446: SmartFusion2 and IGLOO2 FPGA High-Speed DDR Interfaces User Guide を参照してください。

設計要件
次の表に、設計要件を示します。

表 1 • 設計要件

  • 設計要件の説明
  • ハードウェア要件
  • SmartFusion2 Advanced Development Kit ボード Rev B 以降
  • FlashPro5 プログラマ以降
  • USB A - ミニ B USB ケーブル
  • 電源アダプター12V
  • 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 クライアント

デモの設計
デモのデザイン fileは、Microsemi の次のパスからダウンロードできます。 webサイト: http://soc.microsemi.com/download/rsc/?f=m2s_dg0618_liberov11p8_df
デモのデザイン fileには次のものが含まれます。

  • DDR 構成 File
  • DDR_EDAC
  • プログラミング files
  • GUI 実行可能ファイル
  • お読みください file

次の図は、デザインの最上位構造を示しています。 file秒。 詳細については、readme.txt を参照してください。 file.

図 2 • デモ デザインの最上位構造

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion2 上のエラー検出と修正-XNUMX

デモ設計の実装
MDDR サブシステムには、専用の EDAC コントローラーがあります。 EDAC は、データがメモリから読み取られるときに 1 ビット エラーまたは 2 ビット エラーを検出します。 EDAC が 1 ビット エラーを検出すると、EDAC コントローラはエラー ビットを訂正します。 EDAC がすべての 1 ビットおよび 2 ビット エラーに対して有効になっている場合、システム レジスタ内の対応するエラー カウンターがインクリメントされ、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 ビット エラーの場合、対応する割り込みが生成され、アプリケーションはデータを修正するか、割り込みハンドラーで適切なアクションを実行する必要があります。 このデモでは、これら XNUMX つの方法を示します。

このデモには、ループ テストと手動テストの 1 つのテストが実装されており、2 ビット エラーと XNUMX ビット エラーの両方に適用できます。

ループテスト
SmartFusion2 デバイスが GUI からループ テスト コマンドを受信すると、ループ テストが実行されます。 最初に、すべてのエラー カウンターと EDAC 関連のレジスターが RESET 状態になります。
次の手順は、反復ごとに実行されます。

  1. EDAC コントローラーを有効にする
  2. 特定の DDR メモリ ロケーションにデータを書き込む
  3. EDAC コントローラーを無効にする
  4. 1 ビットまたは 2 ビットのエラーによって引き起こされたデータを同じ DDR メモリ ロケーションに書き込みます。
  5. EDAC コントローラーを有効にする
  6. 同じ DDR メモリ ロケーションからデータを読み取る
  7. 1 ビットまたは 2 ビットのエラー検出と、1 ビット エラーの場合の 1 ビット エラー訂正データを GUI に送信します。

手動テスト
この方法では、初期化を伴う DDR メモリ アドレス (1xA2 ~ 0xDFFFFFFF) の 0000000 ビット エラー検出と訂正および 0 ビット エラー検出を手動でテストできます。 1 ビット/2 ビット エラーは、選択した DDR メモリ アドレスに手動で導入されます。 指定されたデータは、EDAC が有効になっている選択された DDR メモリ ロケーションに書き込まれます。 破損した 1 ビットまたは 2 ビットのエラー データは、EDAC を無効にして同じメモリ位置に書き込まれます。 検出された 1 ビットまたは 2 ビット エラーに関する情報は、EDAC が有効な同じメモリ位置からデータが読み取られるときにログに記録されます。 高性能 DMA コントローラ
(HPDMA) は、DDR メモリからデータを読み取るために使用されます。 デュアル ビット エラー検出割り込みハンドラーは、2 ビット エラーが検出されたときに適切なアクションを実行するために実装されています。
次の図は、EDAC のデモ操作を示しています。

図 3 • デザイン フロー

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion3 上のエラー検出と修正-XNUMX

注記: 2 ビット エラーの場合、Cortex-M3 プロセッサがデータを読み取ると、コードの実行はハード フォールト ハンドラに入ります。これは、受信した割り込みがプロセッサの応答に遅れるためです。 割り込みに応答するまでに、すでにデータを渡し、誤ってコマンドを起動している可能性があります。 その結果、HRESP は不正なデータの処理を停止します。 2 ビット エラー検出では、HPDMA を使用して DDR アドレス ロケーションからデータを読み取ります。これは、読み取りデータに 2 ビット エラーがあり、システムが回復するために適切なアクションを実行する必要があることをプロセッサに指示します (ECC 割り込みハンドラー)。

デモ デザインのセットアップ
このセクションでは、SmartFusion2 Advanced Development Kit ボードのセットアップ、GUI オプション、およびデモ デザインの実行方法について説明します。
次の手順では、デモをセットアップする方法について説明します。

  1. USB mini-B ケーブルの一方の端を、SmartFusion33 Advanced Development Kit ボードにある J2 コネクタに接続します。 USB ケーブルのもう一方の端をホスト PC に接続します。 発光ダイオード (LED) DS27 が点灯し、UART リンクが確立されたことを示します。 次の図に示すように、USB to UART ブリッジ ドライバーが自動的に検出されることを確認します (デバイス マネージャーで確認できます)。
    図 4 • USB から UART へのブリッジ ドライバー
    Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion4 上のエラー検出と修正-XNUMX
    USB to UART ブリッジ ドライバーがインストールされていない場合は、次の場所からドライバーをダウンロードしてインストールします。 www.microsemi.com/soc/documents/CDM_2.08.24_WHQL_Certified.zip.
  2. 2 ページの表 4 に示すように、SmartFusion11 Advanced Development Kit ボードのジャンパを接続します。ジャンパを接続する間、電源スイッチ SW7 をオフにする必要があります。

図 5 • SmartFusion2 Advanced Development Kit ボードのセットアップ

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion5 上のエラー検出と修正-XNUMX

 グラフィカルユーザーインターフェース
このセクションでは、DDR – EDAC デモ GUI について説明します。

図 6 • DDR – EDAC デモ GUI

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion6 上のエラー検出と修正-XNUMX

GUI は次の機能をサポートしています。

  1. COM ポートとボーレートの選択
  2. 1 ビット エラー訂正タブまたは 2 ビット エラー検出の選択
  3. 指定された DDR アドレスとの間でデータを読み書きするためのアドレス フィールド
  4. 指定された DDR アドレスとの間でデータを読み書きするためのデータ フィールド
  5. アプリケーションから受信したステータス情報を印刷するためのシリアル コンソール セクション
  6. EDAC を有効にする/EDAC を無効にする: EDAC を有効または無効にします。
  7. 書き込み: 指定したアドレスにデータを書き込むことができます
  8.  読み取り: 指定したアドレスからデータを読み取ることができます
  9. ループ テストのオン/オフ: ループ メソッドで EDAC メカニズムをテストできます。
  10.  初期化: 事前定義されたメモリ位置を初期化できます (このデモでは A0000000-A000CFFF)

デモ デザインの実行
次の手順では、デザインを実行する方法について説明します。次の手順では、デザインを実行する方法について説明します。

  1. 電源スイッチ SW7 をオンにします。
  2. プログラミングで SmarFusion2 デバイスをプログラムします。 file デザインで提供 files.(\プログラミングFile\EDAC_DDR3.stp) は、次の図に示すように、FlashPro デザイン ソフトウェアを使用して作成されます。
    図 7 • FlashPro プログラミング ウィンドウ
    Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion7 上のエラー検出と修正-XNUMX
  3. プログラミングが成功したら、SW6 スイッチを押してボードをリセットします。
  4. EDAC_DDR デモ GUI 実行可能ファイルを起動します file デザインで利用可能 files (\GUI Executable\ EDAC_DDR.exe)。 8 ページの図 9 に示すように、GUI ウィンドウが表示されます。
  5. [接続] をクリックすると、COM ポートが選択され、接続が確立されます。 接続オプションが切断に変わります。
  6. 1-bit Error Correction タブまたは 2-bit Error Detection を選択します。
  7. 手動およびループ テストを実行できます。
  8. [初期化] をクリックして DDR メモリを初期化し、手動テストとループ テストを実行します。8 ページの図 9 に示すように、初期化完了メッセージがシリアル コンソールに表示されます。

図 8 • 初期化完了ウィンドウ

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion8 上のエラー検出と修正-XNUMX

ループテストを行う
ループ テスト オンをクリックします。 エラーの継続的な修正と検出が行われるループ モードで実行されます。 SmartFusion2 デバイスで実行されたすべてのアクションは、GUI のシリアル コンソール セクションに記録されます。

表 2 • ループ テストで使用される DDR3 メモリ アドレス

  • メモリDDR3
  • 1 ビット誤り訂正 0xA0008000
  • 2 ビット エラー検出 0xA000C000

手動テストの実行
この方法では、エラーは GUI を使用して手動で導入されます。 1 ビット エラー訂正または 2 ビット エラー検出を実行するには、次の手順を実行します。

表 3 • 手動テストで使用される DDR3 メモリ アドレス

入力アドレスおよびデータ フィールド (32 ビットの XNUMX 進数値を使用)。

  • メモリDDR3
  • 1ビット誤り訂正 0xA0000000~0xA0004000
  • 2 ビット エラー検出 0xA0004000 ~ 0xA0008000
  1. [EDAC を有効にする] をクリックします。
  2. [書き込み] をクリックします。
  3. [EDAC を無効にする] をクリックします。
  4. データ フィールドの 1 ビット (2 ビット エラー訂正の場合) または XNUMX ビット (XNUMX ビット エラー検出の場合) を変更します (エラーの導入)。
  5. [書き込み] をクリックします。
  6. [EDAC を有効にする] をクリックします。
  7. [読み取り] をクリックします。
  8. GUI のエラー カウント表示とデータ フィールドを確認します。 エラーカウント値が 1 増加します。

1 ビット エラー ループ修正ウィンドウを次の図に示します。

図 9 • 1 ビット エラー ループ検出ウィンドウ

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion9 上のエラー検出と修正-XNUMX

2 ビットエラー検出マニュアル画面を下図に示します。

図 10 • 2 ビット エラー検出マニュアル ウィンドウ

Microsemi -DG0618-DDR メモリ 2 を使用した SmartFusion10 上のエラー検出と修正-XNUMX

結論
このデモでは、MDDR サブシステムの SmartFusion2 SECDED 機能を示します。

付録: ジャンパー設定

次の表は、SmartFusion2 Advanced Development Kit で設定する必要があるすべてのジャンパを示しています。

表 4 • SmartFusion2 Advanced Development Kit のジャンパ設定

ジャンパー : ピン (From) : ピン (To) : コメント

  • J116、J353、J354、J54 1 2 これらは、Advanced のデフォルトのジャンパー設定です。
  • J123 2 3 開発キット ボード。 これらのジャンパが適切に設定されていることを確認してください。
  • J124、J121、J32 1 2 JTAG FTDI によるプログラミング

DG0618 デモ ガイド リビジョン 4.0

ドキュメント / リソース

Microsemi DG0618 DDR メモリを使用した SmartFusion2 デバイスでのエラー検出と修正 [pdf] ユーザーガイド
DG0618 DDR メモリを使用する SmartFusion2 デバイスでのエラー検出と訂正、DG0618、DDR メモリを使用する SmartFusion2 デバイスでのエラー検出と訂正、DDR メモリを使用する SmartFusion2 デバイス、DDR メモリ

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *