2 A10-MEMORY 署名 デバイス内のエンベデッド メモリ ブロックには柔軟性があり デザイン要件に合った最適な小規模メモリ アレイおよび大規模メモリ アレイを提供できるようデザインされています 関連情報 Arria 10 Device Handbook: Known Issues >Arria 10 Device Handbook の章にて予定される更新をリストします エンベデッド メモリのタイプ Arria 10 デバイスには以下の 2 タイプのメモリ ブロックが含まれています 20 Kb M20K ブロック 専用メモリ リソースのブロック M20K ブロックはより大きなメモリアレイに最適であると同時に 独立した多数のポートを提供 注 : > Arria 10 デバイスでは Resource Property Editor と TimeQuest Timing Analyzer は 割り当て可能な位置が >M20K_ X<number>_Y<number>_N<number> であっても M20K ブロックの位置を >EC_X<number>_Y<number>_N<number> とレポートします Embedded Cell(EC) は M20K ブロックのサブ ロケーションです 640 ビットのメモリ ロジック アレイ ブロック (MLAB) 兼用ロジック アレイ ブロック (LAB) からコンフィギュレーションされるエンハンスト メモリ ブロック MLAB は幅が広く深さがないメモリ アレイのために理想的 MLAB はデジタル信号処理 (DSP) アプリケーション 幅が広く深さがない FIFO バッファ およびフィルタのディレイ ラインに使用するシフト レジスタの実装向けに最適化されている 各 MLAB は 10 個のアダプティブ ロジック モジュール (ALM) から構成される Arria 10 デバイスではこれらの ALM を 各 MLAB につき 1 つの 32 x 20 シンプル デュアル ポート SRAM ブロックを提供する 10 個の 32 x 2 ブロックとしてコンフィギュレーションすることが可能 関連情報エンベデッド セル (EC) エンベデッド セルに関する情報 容量 2014. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. ISO 9001:2008 www.altera.com 101 Innovation Drive, San Jose, CA 95134
2-2 デザイン ガイドライン 表 2-1: 容量と分配 A10-MEMORY タイプ Arria 10 GX Arria 10 GT Arria 10 SX 製品ライン ブロック数 M20K RAM ビット数 (Kb) ブロック数 MLAB RAM ビット数 (Kb) トータル RAM ビット数 (Kb) GX 160 440 8,800 1,680 1,050 9,850 GX 220 588 11,760 2,932 1,833 13,593 GX 270 750 15,000 3,922 2,451 17,451 GX 320 891 17,820 4,582 2,864 20,684 GX 480 1,438 28,760 7,046 4,404 33,164 GX 570 1,800 36,000 8,153 5,096 41,096 GX 660 2,133 42620 9,260 5,788 48,448 GX 900 2,423 48,460 15,017 9,386 57,846 GX 1150 2,713 54,260 20,774 12,984 67,244 GT 900 2,423 48,460 15,017 9,386 57,846 GT 1150 2,713 54,260 20,774 12,984 67,244 SX 160 440 8,800 1,680 1,050 9,850 SX 220 588 11,760 2,932 1,833 13,593 SX 270 750 15,000 3,922 2,451 17,451 SX 320 891 17,820 4,582 2,864 20,684 SX 480 1,438 28,760 7,046 4,404 33,164 SX 570 1,800 36,000 8,153 5,096 41,096 SX 660 2,133 42620 9,260 5,788 48,448 デザイン ガイドライン デザインを確実に作成するには いくつか考慮すべき事項があります 特に注記のない限り これらのデザイン ガイドラインはこのデバイス ファミリのすべてのバリアントに適用されます メモリ ブロックの選択 Quartus II ソフトウェアは デザインの速度とサイズの制約を考慮して ユーザー定義のメモリを自動的にメモリ ブロック内に分割します たとえば Quartus II ソフトウェアは デザインの性能を向上させるためにメモリを複数の使用可能なメモリ ブロックに分割します メモリを手動で特定のブロック サイズに割り当てるには MegaWizard Plug-In Manager で RAM メガファンクションを使用します
A10-MEMORY ガイドライン : 外部の競合解決を実装する 2-3 MLAB では Quartus II ソフトウェアのエミュレーションを介してシングル ポート SRAM を実装することができます エミュレーションによって 追加で使用するロジック リソースが最小限に抑えられます MLAB は兼用アーキテクチャであるため ブロック内ではデータ入力レジスタ 出力レジスタ および書き込みアドレス レジスタのみが使用可能です なお MLAB は ALM から読み取りアドレス レジスタを取得します ガイドライン : 外部の競合解決を実装する トゥルー デュアル ポート RAM モードでは 同じメモリ位置に 2 つの書き込み動作を実行することができます ただし メモリ ブロックは内部に競合解決回路を有しません アドレスに未知のデータが書き込まれることを防ぐには メモリ ブロックに外部の競合解決ロジックを実装します ガイドライン :Read-During-Write 動作をカスタマイズする デザイン要件に合うよう メモリ ブロックの Read-During-Write 動作をカスタマイズします 図 2-1: Read-During-Write データ フロー 次の図は 使用可能な 2 つのタイプ ( 同一ポートと混合ポート ) の Read-During-Write 動作における違いを表しています Port A data in FPGA Device Port B data in Port A data out Port B data out Mixed-port data flow Same-port data flow 同一ポートの Read-During-Write モード 同一ポートの Read-During-Write モードは シングル ポート RAM またはトゥルー デュアル ポート RAM の同一ポートに適用します 表 2-2: 同一ポート Read-During-Write モードでのエンベデッド メモリ ブロックの出力モード 次の表は 同一ポート Read-During-Write モードのエンベデッド メモリ ブロックを選択する場合に使用可能な出力モードをリストしています 出力モードメモリ タイプ説明 "new data" ( フロースルー ) M20K 新しいデータが書き込まれるのと同じクロック サイクルの立ち上がりエッジで 新しいデータが使用可能です "don't care" M20K MLAB RAM は Read-During-Write 動作で "don't care" の 値を出力します
2-4 混合ポートの Read-During-Write モード 図 2-2: 同一ポートの Read-During-Write:New Data モード A10-MEMORY 次の図は new data モードの同一ポート Read-During-Write 動作のサンプル機能波形を表しています clk_a address rden wren 0A 0B byteena data_a q_a (asynch) A123 B456 C789 DDDD EEEE FFFF 11 A123 B456 C789 DDDD EEEE FFFF 混合ポートの Read-During-Write モード 混合ポートの Read-During-Write モードは 2 つのポートが同じクロックを使用して 同じメモリ アドレスで読み取りおよび書き込み動作を実行する ( 一方のポートがアドレスから読み取り 他方のポートがアドレスに書き込む ) シンプルおよびトゥルー デュアル ポート RAM モードに適用します 表 2-3: 混合ポート Read-During-Write モードでの RAM の出力モード 出力モードメモリ タイプ説明 "new data" MLAB 異なるポートへの Read-During-Write 動作は MLAB のレジスタ済み出力を生じさせ データが MLAB メモリに書き込まれた後 次の立ち上がりエッジで new data を反映します このモードは 出力が登録済みの場合にのみ使用可能です "old data" M20K MLAB 異なるポートへの Read-During-Write 動作により RAM 出 力は特定のアドレスにある old data の値を反映します MLAB では このモードは出力が登録済みの場合にのみ使用可能です
A10-MEMORY 混合ポートの Read-During-Write モード 2-5 出力モードメモリ タイプ説明 "don't care" M20K MLAB RAM は don t care または unknown の値を出力します M20K メモリでは Quartus II ソフトウェアは書き込み動作と読み取り動作間のタイミングを分析しません MLAB では Quartus II ソフトウェアはデフォルトで書き込み動作と読み取り動作間のタイミングを分析します この動作をディセーブルするには Do not analyze the timing between write and read operation. Metastability issues are prevented by never writing and reading at the same address at the same time オプションをオンにします "constrained don't care" MLAB RAM は don t care または unknown の値を出力します Quartus II ソフトウェアは MLAB で書き込み動作と読み取り動作間のタイミングを分析します 図 2-3: 混合ポートの Read-During-Write:New Data モード 次の図は new data モードの混合ポート Read-During-Write 動作のサンプル機能波形を表しています clk_a&b wren_a address_a A0 A1 data_a byteena_a AAAA BBBB CCCC DDDD EEEE FFFF 11 rden_b address_b q_b (synch) XXXX A0 AAAA BBBB CCCC DDDD EEEE FFFF A1
2-6 混合ポートの Read-During-Write モード 図 2-4: 混合ポートの Read-During-Write:Old Data モード A10-MEMORY 次の図は old data モードの混合ポート Read-During-Write 動作のサンプル機能波形を表しています clk_a&b wren_a address_a A0 A1 data_a byteena_a AAAA BBBB CCCC DDDD EEEE FFFF 11 rden_b address_b A0 A1 q_b (asynch) A0 (old data) AAAA BBBB A1 (old data) DDDD EEEE 図 2-5: 混合ポートの Read-During-Write:Don t Care または Constrained Don t Care モード 次の図は don t care または constrained don t care モードの混合ポート Read-During-Write 動作のサンプル機能波形を表しています clk_a&b wren_a address_a A0 A1 data_a byteena_a AAAA BBBB CCCC DDDD EEEE FFFF 11 01 10 11 rden_b address_b A0 A1 q_b (asynch) XXXX (unknown data) デュアル ポート RAM モードでは 入力レジスタが同じクロックを有する場合に混合ポートの Read-During-Write 動作がサポートされます 関連情報内部メモリ (RAM および ROM) のユーザー ガイド Read-During-Write 動作を制御する RAM メガファンクションについての詳細を提供します
A10-MEMORY ガイドライン : パワーアップ状態およびメモリの初期化 2-7 ガイドライン : パワーアップ状態およびメモリの初期化 初期パワーアップ値を評価するロジックをデザインしている場合 次の表にリストしているように 異なるタイプのメモリ ブロックのパワーアップ状態を考慮します 表 2-4: エンベデッド メモリ ブロックの初期パワーアップ値 メモリ タイプ出力レジスタパワーアップ値 MLAB M20K Used ゼロ ( クリア ) Bypassed メモリの内容を読み取る Used ゼロ ( クリア ) Bypassed ゼロ ( クリア ) デフォルトでは.mif を指定しない限り Quartus II ソフトウェアは Arria 10 デバイスの RAM セルを 0 に初期化します すべてのメモリ ブロックは.mif による初期化をサポートします デザインでメモリをインスタンス化する際 Quartus II ソフトウェアで.mif ファイルを生成し RAM メガファンクションでそれらの使用を指定することができます メモリが事前に初期化される ( たとえば.mif を使用して ) 場合でも 出力がクリアされた状態でパワーアップします 関連情報 内部メモリ (RAM および ROM) のユーザー ガイド >.mif ファイルについての詳細を提供します Quartus II ハンドブック >.mif ファイルについての詳細を提供します ガイドライン : クロッキングをコントロールして消費電力を削減する デザイン内の各メモリ ブロックの AC 消費電力を削減します Arria 10 メモリ ブロックのクロック イネーブルを使用して 各メモリ ブロックのクロッキングを制御します 読み取りイネーブル信号を使用して 必要なときにのみ読み取り動作が実行されるようにします Read-During-Write が不要なデザインの場合 書き込み動作中またはメモリ動作が実行されていない期間に読み取りイネーブル信号をディアサートすることによって消費電力を削減することができます Quartus II ソフトウェアを使用して未使用のメモリ ブロックを自動的に低消費電力モードにし スタティック消費電力を削減します
2-8 エンベデッド メモリ機能 A10-MEMORY エンベデッド メモリ機能 表 2-5: Arria 10 デバイスのメモリ機能次の表は エンベデッド メモリ ブロックでサポートされる機能を示しています 機能 M20K MLAB 最大動作周波数 730 MHz 700 MHz トータル RAM ビット数 ( パリティ ビットを含む ) 20,480 640 パリティ ビット サポートあり サポートあり バイト イネーブル サポートあり サポートあり パック モード サポートあり アドレス クロック イネーブル サポートあり サポートあり シンプル デュアル ポートの異なるデータ幅 トゥルー デュアル ポートの異なるデータ幅 サポートあり サポートあり FIFO バッファの異なるデータ幅サポートあり メモリ初期化ファイル (.mif) サポートありサポートあり 混合クロック モードサポートありサポートあり 完全同期メモリサポートありサポートあり 非同期メモリ フロースルー読み取りメモリ動 作向け パワーアップ ステート非同期クリア書き込み / 読み取り動作のトリガ同一ポートの Read-During-Write 出力ポートはクリアされます 出力レジスタと出力ラッチ 立ち上がりクロック エッジ 出力ポートは "new data" または "don't care" に設定されます 登録済みの出力ポート クリア 未登録の出力ポート メモリ内容の読み取り 出力レジスタと出力ラッチ 立ち上がりクロック エッジ 出力ポートは "don't care" に設定されます
A10-MEMORY エンベデッド メモリ コンフィギュレーション 2-9 機能 M20K MLAB 混合ポートの Read-During-Write 出力ポートは "old data" または "don't care" に設定されます 出力ポートは "old data" "new data" "don't care" または "constrained don't care" に設定されます ECC サポート Quartus II ソフトウェアを使用してソフト IP をサポートします Quartus II ソフトウェアを使用してソフト IP をサポートします x32 ビット幅シンプル デュアル ポート モードのビルトイン サポートを有します 関連情報内部メモリ (RAM および ROM) のユーザー ガイドエンベデッド メモリ機能についての詳細を提供します エンベデッド メモリ コンフィギュレーション 表 2-6: Arria 10 デバイス向けにサポートされるエンベデット メモリ ブロックのコンフィギュレーション 次の表は エンベデット メモリ ブロック向けにサポートされる最大のコンフィギュレーションをリストしています この情報はシングル ポート RAM および ROM モードのみに適用されます メモリ ブロック深度 ( ビット ) プログラム可能な幅 MLAB 32 x16 x18 または x20 64 (1) x8 x9 x10 512 x40 x32 M20K 1K x20 x16 2K x10 8 4K x5 x4 8K x2 16K x1 幅の異なるポートのコンフィギュレーション 幅の異なるポートのコンフィギュレーションは シンプル デュアル ポート RAM およびトゥルー デュアル ポート RAM のメモリ モードでサポートされます (1) ソフトウェア エミュレーションによって使用可能になり 追加の MLAB ブロックを消費します
2-10 M20K ブロックの幅の異なるコンフィギュレーション 注 : MLAB は幅の異なるポートのコンフィギュレーションをサポートしません A10-MEMORY 関連情報内部メモリ (RAM および ROM) のユーザー ガイドデュアル ポート混合幅のサポートについての詳細を提供します M20K ブロックの幅の異なるコンフィギュレーション 次の表は シンプル デュアル ポート RAM モードでの M20K ブロックの幅の異なるコンフィギュレーションをリストしています 表 2-7: M20K ブロックの幅の異なるコンフィギュレーション ( シンプル デュアル ポート RAM モード ) 読み取りポート 16K x 1 8K x 2 4K x 4 4K x 5 2K x 8 2K x 10 1K x 16 1K x 20 512 x 32 512 x 40 書き込みポート 16K x 1 8K x 2 4K x 4 4K x 5 2K x 8 2K x 10 1K x 16 1K x 20 512 x 32 512 x 40 あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり 次の表は トゥルー デュアル ポート モードでの M20K ブロックの幅の異なるコンフィギュレーションをリストしています
A10-MEMORY エンベデッド メモリ モード 2-11 表 2-8: M20K ブロックの幅の異なるコンフィギュレーション ( トゥルー デュアル ポート モード ) ポート A 16K x 1 ポート B 16K x 1 8K x 2 4K x 4 4K x 5 2K x 8 2K x 10 1K x 16 1K x 20 ありありあり あり あり 8K x 2 ありありあり あり あり 4K x 4 ありありあり あり あり 4K x 5 あり あり あり 2K x 8 ありありあり あり あり 2K x 1 0 1K x 1 6 1K x 2 0 あり あり あり ありありあり あり あり あり あり あり エンベデッド メモリ モード 注意 : メモリ内容の破損を防ぐには 読み取りまたは書き込み動作中 セットアップに違反したり メモリ ブロック入力レジスタのホールド タイムに違反しないでください これはシングル ポート RAM シンプル デュアル ポート RAM トゥルー デュアル ポート RAM または ROM モードでメモリ ブロックを使用する場合に適用できます 表 2-9: エンベデッド メモリ ブロックでサポートされるメモリ モード 次の表では Arria 10 のエンベデッド メモリ ブロックでサポートされるメモリ モードをリストし 説明しています メモリ モード シングル ポート RAM M20K サポート MLAB サポート 説明 あり あり 読み取りまたは書き込み動作は 1 度にどちらか 1 回だけ 実行することができます 書き込み動作中は 読み取りイネーブル ポートを使用して RAM の出力ポートの動作を制御します 直近のアクティブ読み取りイネーブル中に保持していた以前の値を継続して保持する 読み取りイネーブル ポートを作成し 読み取りイネーブル ポートがディアサートされた状態で書き込み動作を実行します 同じアドレス位置で Read-During-Write が実行される際 新しく書き込まれているデータ アドレスにある古いデータ または "Don't Care" の値を表示する 読み取りイネーブル信号を作成しないか あるいは書き込み動作中に読み取りイネーブルを有効にします
2-12 エンベデッド メモリ モード A10-MEMORY メモリ モード シンプル デュアル ポート RAM トゥルー デュアル ポート RAM シフト レジスタ M20K サポート MLAB サポート 説明 あり あり 書き込み動作がポート A で実行され 読み取り動作がポート B で実行される別のロケーションに 読み取りおよび書き込み動作を 1 度ずつ 同時に実行することができます あり 2 つの異なるクロック周波数で 2 つのポート動作の任意の組み合わせ (2 つの読み取り 2 つの書き込み または 1 つの読み取りと 1 つの書き込み ) を実行することができます あり あり メモリ ブロックをシフト レジスタ ブロックとして使 用して ロジック セルと配線リソースを節約することが できます これは 有限インパルス応答 (FIR) フィルタ 擬似ランダム数発生器 マルチチャネル フィルタリング 自己相関関数および相互相関関数など ローカル データ ストレージを必要とする DSP アプリケーションで有用です 従来 ローカル データ ストレージは標準的なフリップ フロップで実装されていたため 大きなシフト レジスタのために多数のロジック セルを消費していました 入力データ幅 (w) タップの長さ (m) およびタップの数 (n) によってシフト レジスタの容量 (w m n) を決定します より大きなシフト レジスタを実装するためにメモリ ブロックをカスケード接続することができます ROM あり あり ROM としてメモリ ブロックを使用することができま す.mif または.hex を使用してメモリ ブロックの ROM の内容を初期化します ROM のアドレス ラインは M20K ブロックでレジスタされますが MLAB ではレジスタされない場合があります 出力はレジスタすることも しないことも可能です 出力レジスタは非同期クリア可能です ROM の読み取り動作は シングル ポート RAM コンフィギュレーションにおける読み取り動作と同じです
A10-MEMORY エンベデッド メモリのクロッキング モード 2-13 メモリ モード M20K サポート MLAB サポート 説明 FIFO あり あり FIFO バッファとしてメモリ ブロックを使用することができます SCFIFO および DCFIFO メガファンクションを使用して デザイン内にシングル クロック非同期 FIFO バッファおよびデュアル クロック非同期 FIFO バッファを実装します 小規模で浅い FIFO バッファを多数有するデザインでは MLAB は FIFO モードに最適です ただし MLAB は混合幅の FIFO モードをサポートしません 関連情報 内部メモリ (RAM および ROM) のユーザー ガイドメモリ モードについての詳細を提供します RAM ベース シフト レジスタ (ALTSHIFT_TAPS) メガファンクションのユーザー ガイドシフト レジスタ モードの実装についての詳細を提供します SCFIFO および DCFIFO メガファンクションのユーザー ガイド FIFO バッファの実装についての詳細を提供します エンベデッド メモリのクロッキング モード この項では Arria 10 メモリ ブロックのクロッキング モードについて説明します 注意 : メモリ内容の破損を防ぐには 読み取りまたは書き込み動作中 セットアップに違反したり メモリ ブロック入力レジスタのホールド タイムに違反しないでください 各メモリ モードのクロッキング モード 表 2-10: 各メモリ モードでサポートされるメモリ ブロックのクロッキング モード クロッキング モード シングル クロック モード 読み取り / 書き込みクロック モード 入力 / 出力クロック モード シングル ポート シンプル デュアル ポート メモリ モード トゥルー デュアル ポート ROM FIFO ありありありありあり あり あり ありありありあり 独立クロック モード ありあり
2-14 シングル クロック モード 注 : MLAB ブロックの書き込みアドレス バイト イネーブル およびデータ入力レジスタではクロック イネーブル信号はサポートされません シングル クロック モード シングル クロック モードでは シングル クロックはクロック イネーブルと併用してメモリ ブロックのすべてのレジスタを制御します 読み取り / 書き込みクロック モード 読み取り / 書き込みクロック モードでは 各読み取りポートと書き込みポートに個別のクロックが使用できます 読み取りクロックはデータ出力 読み取りアドレス および読み取りイネーブル レジスタを制御します 書き込みクロックはデータ入力 書き込みアドレス 書き込みイネーブル およびバイト イネーブル レジスタを制御します 入力 / 出力クロック モード 入力 / 出力クロックモードでは 各入力ポートと出力ポートに個別のクロックが使用できます 入力クロックは データ アドレス バイト イネーブル 読み取りイネーブル および書き込みイネーブルを含むメモリ ブロックへのデータ入力に関係するすべてのレジスタを制御します 出力クロックはデータ出力レジスタを制御します 独立クロック モード 独立クロック モードでは 各ポート (A および B) に個別のクロックが使用できます クロック A はポート A 側のすべてのレジスタを制御します クロック B はポート B 側のすべてのレジスタを制御します 注 : 消費電力を節約するために 異なる入力および出力レジスタに独立クロック イネーブルを作成し 特定のレジスタのシャット ダウンを制御することができます 使用する独立クロック イネーブルを設定するには パラメータ エディタで More Options( クロック イネーブル オプションの隣 ) をクリックします クロッキング モードにおける非同期クリア 非同期クリアは すべてのクロッキング モードで出力ラッチと出力レジスタにのみ使用できます なお 独立クロック モードでは 非同期クリアは両ポートに適用可能です 同時の読み取り / 書き込みにおける出力読み取りデータ 読み取り / 書き込みクロック モードを使用して同じアドレス位置に同時に読み取り / 書き込みを実行する場合 出力読み取りデータは未知の値となります 出力読み取りデータが既知の値として必要な場合は シングル クロック モードまたは入力 / 出力クロック モードを使用して MegaWizard Plug-In Manager で適切な Read-During-Write 動作を選択します クロッキング モードにおける独立クロック イネーブル 独立クロック イネーブルは 次のクロッキング モードでサポートされます A10-MEMORY 読み取り / 書き込みクロック モード 読み取りおよび書き込みクロックの両方でサポートされます 独立クロック モード 両ポートのレジスタでサポートされます
A10-MEMORY メモリ ブロックのパリティ ビット 2-15 消費電力を節約するには クロック イネーブルを使用して特定のレジスタのシャット ダウンを制御することができます 関連情報 2-7 ページのガイドライン : クロッキングをコントロールして消費電力を削減する メモリ ブロックのパリティ ビット 表 2-11: エンベデッド メモリ ブロックにおけるパリティ ビットのサポート 次の表は メモリ ブロックのパリティ ビットのサポートについて説明しています M20K MLAB パリティ ビットは データ幅 5 10 20 40( ビット 4 9 14 19 24 29 34 および 39) の各 4 データ ビットに関連付けられた 5 番目のビットです 非パリティ データ幅では 読み取りまたは書き込み動作中 パリティ ビットはスキップされます パリティ機能はパリティ ビット上で実行されません パリティ ビットは 各バイトに関連付けられている 9 番目のビットです 9 番目のビットはパリティ ビットを格納したり 追加のビットとして機能させることができます パリティ機能はパリティ ビット上で実行されません エンベデッド メモリ ブロックにおけるバイト イネーブル エンベデッド メモリ ブロックはバイト イネーブル コントロールをサポートします バイト イネーブル コントロールは データの特定のバイトのみが書き込まれるよう入力データをマスクします 書き込まれないバイトは以前に書き込まれた値を保持します 書き込みイネーブル (wren) 信号は バイト イネーブル ( byteena) 信号と共に RAM ブロック上の書き込み動作を制御します デフォルトでは byteena 信号は High( イネーブル ) となっており 書き込み動作は wren 信号によってのみ制御されます バイト イネーブル レジスタは clear ポートを有しません パリティ ビットを使用している場合 M20K ブロックでは バイト イネーブル機能は 8 データ ビットと 2 パリティ ビットを制御します MLAB では バイト イネーブル機能は最も広いモードで 10 ビットすべてを制御します バイト イネーブルは 1 ホット形式で動作します byteena 信号の LSB はデータ バスの LSB に対応します バイト イネーブルはアクティブ High です メモリ ブロックにおけるバイト イネーブル コントロール 表 2-12: x20 データ幅の byteena コントロール byteena[1:0] 書き込まれるデータ ビット 11 ( デフォルト ) [19:10] [9:0]
2-16 データ バイト出力 A10-MEMORY byteena[1:0] 書き込まれるデータ ビット 10 [19:10] 01 [9:0] 表 2-13: x40 データ幅の byteena コントロール byteena[3:0] 書き込まれるデータ ビット 1111 ( デフォルト ) [39:30] [29:20] [19:10] [9:0] 1000 [39:30] 0100 [29:20] 0010 [19:10] 0001 [9:0] 注 : M20K ブロックで ECC 機能を使用する場合 バイト イネーブル機能を使用することはできません データ バイト出力 M20K ブロックまたは MLAB では 書き込みサイクルの間にバイト イネーブル ビットがディアサートされると 対応するデータ バイト出力が don't care 値あるいは現在のデータとしてその位置に現れます ユーザーは Quartus II ソフトウェアを使用して M20K ブロックまたは MLAB でマスクされたバイトの出力値を制御することができます
A10-MEMORY RAM ブロックの動作 2-17 RAM ブロックの動作 図 2-6: バイト イネーブル機能の波形 この図は wren 信号と byteena 信号が RAM ブロックの動作を制御する方法を図示しています inclock wren address an a0 a1 a2 a3 a4 a0 data XXXXXXXX ABCDEF12 XXXXXXXX byteena XXXX 1000 0100 0010 0001 1111 XXXX contents at a0 FFFFFFFF ABFFFFFF contents at a1 contents at a2 FFFFFFFF FFFFFFFF FFCDFFFF FFFFEFFF contents at a3 contents at a4 FFFFFFFF FFFFFFFF FFFFFF12 ABCDEF12 don t care: q (asynch) doutn ABXXXXXX XXCDXXXX XXXXEFXX XXXXXX12 ABCDEF12 ABFFFFFF current data: q (asynch) doutn ABFFFFFF FFCDFFFF FFFFEFFF FFFFFF12 ABCDEF12 ABFFFFFF メモリ ブロックのパック モード サポート M20K メモリ ブロックはパック モードをサポートします パック モード機能は 独立した 2 つのシングル ポート RAM ブロックを 1 つのメモリ ブロックにパックします Quartus II ソフトウェアは 物理 RAM ブロックをトゥルー デュアル ポート モードにし アドレスの MSB を使用して 2 つの論理 RAM ブロックを区別することによって 必要に応じてパック モードを自動的に実装します なお 独立した各シングル ポート RAM の容量は ターゲット ブロックの容量の半分以下でなければなりません メモリ ブロックのアドレス クロック イネーブル サポート エンベデッド メモリ ブロックはアドレス クロック イネーブルをサポートし 信号がイネーブルされている間 前のアドレス値を保持します (addressstall = 1) メモリ ブロックがデュアル ポート モードでコンフィギュレーションされると 各ポートは独自の独立したアドレス クロック イネーブルを有します アドレス クロック イネーブル信号のデフォルト値は Low( ディセーブル ) です
2-18 メモリ ブロックのアドレス クロック イネーブル サポート 図 2-7: アドレス クロック イネーブル A10-MEMORY この図は アドレス クロック イネーブルのブロック図を示しています アドレス クロック イネーブルは ポート名 addressstall で参照されます address[0] 1 0 address[0] register address[0] address[n] 1 0 address[n] register address[n] addressstall clock 図 2-8: 読み取りサイクル中のアドレス クロック イネーブルの波形 この図は 読み取りサイクル時のアドレス クロック イネーブルの波形を示しています inclock rdaddress rden a0 a1 a2 a3 a4 a5 a6 addressstall latched address (inside memory) q (synch) an a0 a1 a4 a5 doutn-1 doutn dout0 dout1 dout4 q (asynch) doutn dout0 dout1 dout4 dout5
A10-MEMORY メモリ ブロックの非同期クリア 2-19 図 2-9: 書き込みサイクル中のアドレス クロック イネーブルの波形 この図は 書き込みサイクル時のアドレス クロック イネーブルの波形を示しています inclock wraddress a0 a1 a2 a3 a4 a5 a6 data 00 01 02 03 04 05 06 wren addressstall latched address (inside memory) contents at a0 contents at a1 contents at a2 contents at a3 contents at a4 contents at a5 an a0 a1 a4 a5 XX XX 01 02 XX XX XX 00 03 04 XX 05 メモリ ブロックの非同期クリア M20K メモリ ブロックは 出力ラッチおよび出力レジスタの非同期クリアをサポートします RAM が出力レジスタを使用していない場合でも 出力ラッチの非同期クリアを使用して RAM 出力をクリアします このクリアは非同期信号であり 任意の時点で生成されます クリア パルスは 内部ロジックによって出力クロックの次の立ち上がりエッジまで拡張されます クリアがアサートされると 出力がクリアされ 次の読み取りサイクルまでクリアされたままです
2-20 メモリ ブロックの誤り訂正コード サポート 図 2-10: Arria 10 デバイスにおける出力ラッチのクリア ( 非 ECC モード ) A10-MEMORY clk rden aclr clr at latch out D 0 D 1 D 2 図 2-11: Arria 10 デバイスにおける出力ラッチのクリア (ECC モード ) cken clk rden aclr clr at latch out D 0 D 0 D 1 D 2 メモリ ブロックの誤り訂正コード サポート ECC は メモリの出力時にデータのエラーを検出し 訂正することを可能にします ECC は 32 ビット ワードでシングル エラー訂正 ダブル隣接エラー訂正 およびトリプル隣接エラー検出を実行することができます ただし ECC は 4 つ以上のエラーを検出することはできません x32 ビット幅シンプル デュアル ポート モードのとき M20K ブロックは ECC のビルトイン サポートを有します
A10-MEMORY 誤り訂正コードの真理値表 2-21 ECC が有効のとき M20K は非 ECC シンプル デュアル ポート モードよりも低速で実行します ただし レイテンシの 1 サイクルを犠牲にして非パイプライン ECC モードより高いパフォーマンスを達成するために 出力デコーダ前にオプションの ECC パイプライン レジスタをイネーブルすることができます M20K の ECC ステータスは 2 つの ECC ステータス フラグ信号 すなわち e( エラー ) と ue ( 訂正不可能なエラー ) と通信されます ステータス フラグはメモリ ブロックからの通常の出力の一部です ECC が有効のとき ECC ステータス フラグは 2 つのパリティ ビットを置き換えるため これらのパリティ ビットにアクセスすることはできません 誤り訂正コードの真理値表 表 2-14: ECC ステータス フラグの真理値表 e( エラー ) eccstatus[1] ue( 訂正不可能なエラー ) eccstatus[0] ステータス 0 0 エラーなし 0 1 無効 1 0 訂正可能なエラーが発生し エラーは出 力で訂正されました ただし メモリ アレイは更新されていません 1 1 訂正不可能なエラーが発生し 出力に訂 正不可能なデータが表示されます ECC を有効にする場合 バイト イネーブル機能を使用することはできません Read-During-Write の古いデータ モードはサポートされません 図 2-12: M20K メモリの ECC のブロック図 Status Flag Generation 2 40 8 Input Register 32 ECC Encoder 32 8 Memory Array 40 Optional 40 Pipeline Register 40 ECC Decoder 40 Output Register 改訂履歴
2-22 改訂履歴 A10-MEMORY 日付バージョン変更内容 2014 年 8 月 ECC モードの出力ラッチのクリアに新しいタイミング図を追加 Arria 10 デバイスでは Resource Property Editor と TimeQuest タイミング アナライザが M20K ブロックの位置を EC_X<number> _Y<number>_N<number> としてレポートすることを明確化するために注を追加 Arria 10 GX 660 および Arria 10 SX 660 の M20K ブロック内の RAM ビット値を更新 2013 年 12 月 2013.12.02 初版