• 検索結果がありません。

コンフィギュレーションおよびステータス・レジスタ・インタフェースはAvalon-MM インタフェース規格を使用する32ビット幅インタフェースです。 CSRインタフェー スでタイミング・パラメータ、アドレス幅、およびコントローラの動作をコンフィ ギュレーションできます。 この機能を必要としない場合、それをディセーブルするこ とができ、そして、生成プロセスの間にすべてのプログラマブル設定がコンフィ ギュレーションされた値に固定されています。このインタフェースはコントローラ・

クロックと同期です。

レジスタ・マップの詳細は、ページ 7–21の表 7–9~表 7–23を参照してください。

誤り訂正コード(ECC)

オプションのECCロジックは、エンコーダとデコーダ・コレクタで構成されており、

シングル・ビット・エラーの検出と訂正、ダブル・ビット・エラーの検出を行いま す。 ECCロジックは2の幅で使用可能です;64/72ビットおよび32/40ビットです。

ECCロジックは以下の特長を備えています。

64または32ビットの各データを72または40ビットの符号語にエンコードする HammingコードECCです。

レイテンシはライトおよびリードの両方に対して1クロックを増加します。

すべてのシングル・ビット・エラーを検出し、訂正します。

すべてのダブル・ビット・エラーを検出します。

第 7 章 : 機能の説明 ̶ 高性能コントローラ II 7–9 ブロック説明

シングル・ビットおよびダブル・ビット・エラーの数をカウントします。

dmピンのあるメモリ・デバイスに対して、リード・モディファイ・ライト・サイ クルを開始する部分的書き込みを受け入れます。

テストおよびデバッグ用にECC訂正を開始するには、シングル・ビットおよびダ ブル・ビット・エラーをインジェクトすることができます。

エラーが発生したときに、割り込み信号を生成します。

シングル・ビットおよびダブル・ビット・エラーが発生したとき、ECCエラーが発 生したことを知らせるために、ECCロジックはecc_interrupt信号を開始します。

シングル・ビット・エラーが発生する際、ECCロジックはエラー・アドレスに内部 リードを発行して、訂正されたデータをライト・バックするのに内部ライトを実行

します。 ダブル・ビット・エラーが発生する際、ECCロジックはどんな誤り訂正もし

ませんが、データが不正であることを表すために、local_rdata_error信号をア サートします。 local_rdata_error信号はlocal_rdata_valid信号と同じタ イミングに従います。

自動訂正をイネーブルすると、訂正が完了するまで、ECCロジックはすべてのコン トローラ保留中のアクティビティを留保することができます。 コントローラはアイド ルであるとき、より良いシステム効率を確認するには、自動訂正をディセーブルお よび訂正を手動で計画するのを選択できます。 ECCエラーを手動で訂正するには、以 下のステップを実行します。

1. 割り込みが発生したとき、SBE_ERRORレジスタを読み出します。 シングル・

ビット・エラーが発生したとき、SBE_ERRORレジスタは1に相当します。

2. ERR_ADDRレジスタを読み出します。

3. 以下のいずれかを実行することにより、シングル・ビット・エラーを訂正しま す。

ERR_ADDRレジスタに格納されるメモリ・アドレスにダミー・ライトを発行し

ます。 ダミー・ライトはlocal_be信号ゼロのあるライト要求であり、効果

的なリード・モディファイ・ライト・イベントである部分書き込みを開始し

ます。 部分書き込みはそのアドレスでデータを訂正して、それを再び書き込み

ます。

または

CSRインタフェースを使用してENABLE_AUTO_CORRレジスタをイネーブル し、また、ERR_ADDRレジスタに格納されるメモリ・アドレスにリード要求 を発行します。 リード要求はERR_ADDRレジスタに格納されるメモリ・アド レスに自動誤り訂正を開始します。

部分的書き込み

ECCは部分的書き込みをサポートします。アドレス信号、データ信号、およびバー スト信号に加え、Avalon-MMインタフェースは、バイト・イネーブルのための信号ベ クタ、local_beもサポートします。この信号ベクタの各ビットは、データ・バス 上の1バイトを表します。したがって、これらの任意のビットのロジックLowは、

コントローラがその特定のバイトに書き込みを行えないように指示します(部分的 書き込み)。ECCコードはデータ・バスのすべてのバイトで計算されます。いずれか のバイトが変更された場合、ECCコードを再計算および新しいコードをメモリに書 き戻す必要があります。

部分的書き込みの場合、ECCロジックは以下のステップを実行します。

7–10 第 7 章 : 機能の説明 ̶ 高性能コントローラ II ブロック説明

1. ECCロジックはリード・コマンドを部分的書き込みアドレスに送信します。

2. 特定のアドレスに対して、メモリからリターン・データを受信すると、ECCは データをデコードし、エラーをチェックし、そして訂正されたデータワードまた は正しいデータワードと受信情報をマージします。

3. ECCロジックはアップデートされたデータとECCコードをライト・バックするの

に、書き込みを発行します。

以下のコーナー・ケースが発生する可能性があります。

リード・モディファイ・ライト・プロセスのリード・フェーズ中のシングル・

ビット・エラー。 この場合、シングル・ビット・エラーが最初に訂正され、シン グル・ビット・エラー・カウンタがインクリメントされ、この訂正済みのデコー ドされたデータ・ワードに部分的書き込みが実行されます。

リード・モディファイ・ライト・プロセスのリード・フェーズ中のダブル・ビッ ト・エラー。 この場合、ダブル・ビット・エラー・カウンタがインクリメントさ れ、割り込みが発行されます。新しいライト・ワードは、その場所に書き戻され ます。 ECCステータス・レジスタは、エラー情報を追跡します。

図 7–3および図 7–4に、HPC IIの部分書き込み動作を示します。

図 7‒3. HPC II の部分書き込み ̶ フル・レート

7–3の注:

(1) Rはリード・モディファイ・ライト・プロセス中の内部リード・バック・メモリ・データを表しま

す。

図 7‒4. HPC II の部分書き込み ̶ ハーフ・レート

7–4の注:

(1) Rはリード・モディファイ・ライト・プロセス中の内部リード・バック・メモリ・データを表しま

す。

local_address local_size local_be local_wdata mem_dm mem_dq

0 1

2

X1 XF

01234567 89ABCDEF

67 R R R EF CD AB 89

local_address local_size local_be local_wdata mem_dm mem_dq

0 1 X1 01234567

67 R R R

第 7 章 : 機能の説明 ̶ 高性能コントローラ II 7–11 トップレベル・ファイルの例

部分的バースト

DIMMにはDMピンがないため部分的バーストをサポートしません。最低4ワード

(ハーフ・レート)または8ワード(フル・レート)を同時にメモリに書き込む必要 があります。

図 7–5に、HPC IIの部分的バースト動作を示します。

トップレベル・ファイルの例

MegaWizard Plug-In Managerは、DDRまたはDDR2 SDRAM HPC IIのインスタンス化お よび接続方法を示すトップ・レベル・ファイルの例を作成します。このトップ・レ ベル・ファイルの例は、DDRまたはDDR2 SDRAM HPC II、そのコントローラにリード およびライト要求を発行するいくつかのドライバ・ロジック、必要なクロックを作

成するPLL、およびDLL(Stratixシリーズのみ)で構成されます。このトップ・レベ

ル・ファイルの例は、コンパイルしてスタティック・タイミング・チェックとボー ド・テストの両方に使用できるワーキング・システムです。

図 7–6に、 テストベンチとトップ・レベル・ファイルの例を示します。

表 7–3に、このトップ・レベル・ファイルの例とテストベンチに関連するファイル を示します。

図 7‒5. HPC II の部分的バースト

local_address local_size local_be local_wdata mem_dm mem_dq

0 1 X1 01234567

67 45 23 01

図 7‒6. テストベンチとトップ・レベル・ファイルの例

サンプル・

ドライバ

ALTMEMPHY コントロール・

ロジック clock_source

test_complete pnf

デザイン例 テストベンチ

DDR SDRAMコントローラ ウィザードが

生成した メモリ・モデル DLL

PLL

7–12 第 7 章 : 機能の説明 ̶ 高性能コントローラ II トップレベル・ファイルの例

使用可能な2つのアルテラが生成したメモリ・モデルがあります—アソシアティ ブ・アレイ・メモリ・モデルおよびフル・アレイ・メモリ・モデルです。

アソシアティブ・アレイ・メモリ・モデル (<variation name>_mem model.v)は2,048ま たは2Kのアドレス空間のデフォルト容量を備えたメモリ・アドレスの低減セットを 割り当てます。 この割り当ては、間単に副アレイの深度をリコンフィギュレーション できるより大きなメモリ・アレイ・コンパイルおよびシミュレーションが可能です。

フル・アレイ・メモリ・モデル(<variation name>_mem model_full.v)は、DDRコアで アクセスできるすべてのアドレスのためのメモリを割り当てます。この割り当ては、

大きいメモリ・デザインをシミュレートするのに不可能になります。

メモリ・モデルの両方は、同様の動作を表示して、キャリブレーション時間を持っ ています。

1 SOPC Builder デザインで使用されるメモリ・モデル、(<variation

name>_test_component.v/vhd)は、実際にフル・アレイ・メモリ・モデルの変動です。

シミュレーションがSOPC Builderで働くのを確保するには、512メガ・ビットの容量 以下と共にメモリ・モデルを使用します。

サンプル・ドライバ

このサンプル・ドライバは、メモリ・インタフェースのセルフ・チェック・テスト・

ジェネレータです。それは、インタフェースが正常に動作していることを確かめる ために、メモリから読み出しおよび書き込むのにステート・マシンを使用します。

サンプル・ドライバは、以下のテストを実行して、テストを無限にループバックし ます。

シーケンシャル・アドレッシング・リードおよびライト

ステート・マシンはリニア・フィードバック・シフト・レジスタ (LFSR)によって 生成された擬似ランダム・データをインクリメントするロウ、バンク、およびコ ラム・アドレスのセットに書き込みます。 次に、ステート・マシンはLFSRをリ セットして、アドレスの同じセットをリード・バックして、それが所期のデータ に対して受信したデータを比較します。サンプル・ドライバ・ソース・コードで 表 7‒3. トップ・レベル・ファイルの例およびテストベンチのファイル

ファイル名 説明

<variation name>_example_top_tb.vまたは.vhd トップ・レベル・ファイル例のテストベンチ。

<variation name>_example_top.vまたは.vhd トップ・レベル・ファイルの例。

<variation name>_mem_model.vまたは.vhd アソシアティブ・アレイ・メモリ・モデル。

<variation name>_full_mem_model.vまたは.vhd フル・アレイ・メモリ・モデル。

<variation name>_example_driver.vまたは.vhd サンプル・ドライバ。

<variation name> .vまたは.vhd カスタムMegaCoreファンクションのトップレベルの

記述。

<variation name>.qip MegaCoreファンクション・バリエーション用の

Quartus IIプロジェクト情報が含まれています。