コンフィギュレーションおよびステータス・レジスタ・インタフェースは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プロジェクト情報が含まれています。