インテル® Stratix® 10エンベデッド・メモリー ユーザーガイド
インテル® Stratix® 10エンベデッド・メモリーの概要
インテル Stratix 10 エンベデッド・メモリーの機能
- 47.25メガビット (Mb) eSRAMブロック
- 高速パス、低レイテンシー、高帯域幅および超高速ランダム・トランザクション・レート (RTR) オンチップ・メモリー・ブロック
- 各ブロックは8チャネルで構成され、各チャネルには42個のバンクが備えられています。
- 各バンクでコンフィグレーション可能なのは、2Kの深度と72ビットのデータ幅までです。
- サポート対象は、同時読み書きアクセスをチャネルごとに備えたシンプルなデュアルポートRAMのみです。
- 20キロビット (Kb) M20Kブロック
- 専用メモリーリソースのブロック
- 大規模なメモリーアレイに適しており、また、多数の独立ポートを提供しています。
- 640ビットMLAB
- エンハンスト・メモリー・ブロックであり、兼用ロジック・アレイ・ブロック (LAB) からコンフィグレーションされます。
- 広く浅いメモリーアレイに適しています。
- デジタル信号処理 (DSP) アプリケーション、広く浅いFIFOバッファー、およびフィルター遅延ライン用シフトレジスターの実装用に最適化されています。
- 各MLABは、10個のアダプティブ・ロジック・モジュール (ALM) で構成されています。
インテル® Stratix 10® デバイスの場合、MLAB内の各ALMを10個の32×2ブロックとしてコンフィグレーションします。 インテル® Stratix 10® デバイスでは、32×20シンプル・デュアルポートSRAMブロックを各MLABに1つ提供しています。
- シングルポート
- シンプル・デュアルポート
- トゥルー・デュアルポート
- シンプル・クアッドポート
- ROM
機能 | eSRAM | M20K | MLAB |
---|---|---|---|
最大動作周波数 | 750 MHz |
|
1 GHz |
トータルRAMビット数(パリティービットを含む) | 47.25 Mb | 20,480ビット | 640ビット |
バイトイネーブル | — | サポートあり | サポートあり |
アドレス・クロック・イネーブル | — | サポートあり (シンプル・デュアルポートRAMモード) | サポートあり |
シンプル・デュアル・ポートの混合幅 | — | サポートあり | — |
FIFOバッファーの混合データ幅 | — | サポートあり | — |
メモリー初期化ファイル(.mif) | — | サポートあり | サポートあり |
デュアル・クロック・モード | — | サポートあり (シンプル・デュアルポートRAMモード) | サポートあり |
完全同期メモリー | — | サポートあり | サポートあり |
非同期メモリー | — | – | フロースルー読み出しメモリー動作の場合のみ |
パワーアップ・ステート | — | 出力ポートはクリアされます。 |
|
非同期/同期クリア | — | 出力レジスターと出力ラッチ | 出力レジスターと出力ラッチ |
書き込み/読み出し動作のトリガー | 立ち上がりクロックエッジ | 立ち上がりクロックエッジ | 立ち上がりクロックエッジ |
同一ポートのRead-During-Write | — | 出力ポートはNew DataまたはDon't Care に設定されます。 | 出力ポートはDon't Care に設定されます。 |
混合ポートのRead-During-Write | Write-forwarding機能
|
|
出力ポートはNew Data、Old Data、またはDon't Careに設定されます。 |
誤り訂正コード (ECC) のサポート |
|
|
インテル® Quartus® Prime開発ソフトウェアを使用したソフトIP |
Force-to-Zero | — | サポートあり | — |
コヒーレント読み出しメモリー | — | サポートあり | — |
フリーズロジック | — | サポートあり | — |
トゥルー・デュアル・ポート (TDP) デュアル・クロック・エミュレーター | — | サポートあり | — |
インテル Stratix 10 エンベデッド・メモリー容量
バリアント | 製品ライン | eSRAM | M20K | MLAB | RAMビットの総数 (Mビット) | |||
---|---|---|---|---|---|---|---|---|
ブロック | RAMビット (Mビット) | ブロック | RAMビット (Mビット) | ブロック | RAMビット (Mビット) | |||
インテル® Stratix 10® GX | GX 400 | — | — | 1,537 | 30 | 3,276 | 2 | 32 |
GX 650 | — | — | 2,489 | 49 | 5,364 | 3 | 52 | |
GX 850 | — | — | 3,477 | 68 | 7,124 | 4 | 72 | |
GX 1100 | — | — | 5,461 | 107 | 11,556 | 7 | 114 | |
GX 1650 | — | — | 5,851 | 114 | 13,764 | 8 | 122 | |
GX 2100 | — | — | 6,501 | 127 | 17,316 | 11 | 138 | |
GX 2500 | — | — | 9,963 | 195 | 20,529 | 13 | 208 | |
GX 2800 | — | — | 11,721 | 229 | 23,796 | 15 | 244 | |
GX 4500 | — | — | 7,033 | 137 | 37,821 | 23 | 160 | |
GX 5500 | — | — | 7,033 | 137 | 47,700 | 29 | 166 | |
インテル® Stratix 10® MX | MX 1650 | 2 | 94.5 | 6,162 | 120 | 14,230 | 9 | 223.5 |
MX 2100 | 2 | 94.5 | 6,847 | 134 | 17,856 | 11 | 239.5 | |
インテル® Stratix 10® SX | SX 400 | — | — | 1,537 | 30 | 3,276 | 2 | 32 |
SX 650 | — | — | 2,489 | 49 | 5,364 | 3 | 52 | |
SX 850 | — | — | 3,477 | 68 | 7,124 | 4 | 72 | |
SX 1100 | — | — | 5,461 | 107 | 11,556 | 7 | 114 | |
SX 1650 | — | — | 5,851 | 114 | 13,764 | 8 | 122 | |
SX 2100 | — | — | 6,501 | 127 | 17,316 | 11 | 138 | |
SX 2500 | — | — | 9,963 | 195 | 20,529 | 13 | 208 | |
SX 2800 | — | — | 11,721 | 229 | 23,796 | 15 | 244 | |
SX 4500 | — | — | 7,033 | 137 | 37,821 | 23 | 160 | |
SX 5500 | — | — | 7,033 | 137 | 47,700 | 29 | 166 | |
インテル® Stratix 10® TX | TX 400 | — | — | 1,537 | 30 | 3,276 | 2 | 32 |
TX 650 | — | — | 2,489 | 49 | 5,364 | 3 | 52 | |
TX 800 | — | — | 3,477 | 68 | 7,124 | 4 | 72 | |
TX 1100 | — | — | 5,461 | 107 | 11,556 | 7 | 114 | |
TX 1650 | 2 | 94.5 | 6,162 | 120 | 14,230 | 9 | 223.5 | |
TX 2100 | 2 | 94.5 | 6,847 | 134 | 17,856 | 11 | 239.5 | |
TX 2500 | — | — | 9,963 | 195 | 20,529 | 13 | 208 | |
TX 2800 | — | — | 11,721 | 229 | 23,796 | 15 | 244 |
インテル Stratix 10 エンベデッド・メモリーのアーキテクチャーと機能
インテル Stratix 10 エンベデッド・メモリー・ブロックにおけるバイトイネーブル
- バイト・イネーブル・コントロールでは、入力データをマスクして、データの特定バイトのみを書き込みます。書き込まれないバイトでは、以前に書き込まれた値が保持されます。
- 書き込みイネーブル ( wren ) 信号は、バイトイネーブル ( byteena ) 信号とともにRAMブロック上の書き込み動作を制御します。デフォルトでは、 byteena 信号はHigh (イネーブル) になっており、 wren 信号だけが書き込み動作を制御します。
- バイト・イネーブル・レジスターには clear ポートがありません。
- バイトイネーブルの動作は1ホット形式です。 byteena 信号のLSBはデータバスのLSBに対応します。
- バイトイネーブルはアクティブHigh です。
バイト・イネーブル・コントロール
byteena[1:0] | 書き込まれるデータビット | |
---|---|---|
11 (デフォルト) | [9:5] | [4:0] |
10 | [9:5] | – |
01 | – | [4:0] |
00 | – | – |
byteena[1:0] | 書き込まれるデータビット | |
---|---|---|
11 (デフォルト) | [19:10] | [9:0] |
10 | [19:10] | – |
01 | – | [9:0] |
00 | – | – |
byteena[3..0] | 書き込まれるデータビット | |||
---|---|---|---|---|
1111 (デフォルト) | [39:30] | [29:20] | [19:10] | [9:0] |
1000 | [39:30] | – | – | – |
0100 | – | [29:20] | – | – |
0010 | – | – | [19:10] | – |
0001 | – | – | – | [9:0] |
0000 | – | – | – | – |
データバイト出力
M20KブロックまたはMLABでは、バイト・イネーブル・ビットを書き込みサイクルの間に0にディアサートすると、対応するデータバイト出力がDon't Care値あるいは現在のデータとしてその位置に現れます。M20KブロックまたはMLAB内のマスクされたバイトの出力値を同一ポートのRead-During-Writeモードで制御するには、 インテル® Quartus® Prime開発ソフトウェアのPlatform Designerを使用します。
バイトイネーブルの動作
アドレス・クロック・イネーブルのサポート
メモリーブロックのコンフィグレーションをデュアルポート・モードで行うと、各ポートはそれぞれ独自のアドレス・クロック・イネーブルが有効になります。
非同期クリアと同期クリア
RAMで出力レジスターを使用していない場合、RAM出力のクリアにはラッチ非同期クリア ( aclr ) を使用します。( aclr ) 信号の生成は常時行われます。内部ロジックによるクリアパルスの延長は、出力クロックの次の立ち上がりエッジまでです。 aclr 信号がアサートされると出力はクリアされ、次の読み出しサイクルまでクリアされたままになります。
同期クリア ( sclr ) 信号の場合、RAM出力のクリアは出力クロックの次の立ち上がりエッジで行われ、そのとき ( sclr ) 信号がアサートされます。出力は、次の読み出しサイクルまでクリアされたままになります。
メモリーブロックの誤り訂正コードのサポート
M20KブロックとeSRAMブロックのみでECC機能をサポートしています。
ECC機能を使用する場合、次の機能は使用できません。
- バイトイネーブル
- コヒーレンシー読み出し
M20Kブロック
M20Kブロックの場合、ECCでは、シングルエラー訂正 、ダブル隣接エラー訂正、およびトリプル隣接エラーを32ビットワードで実行しますが、2ビット以上の非隣接エラーの検出または訂正は保証されていません。
M20Kブロックに内蔵されたECCのサポートは、×32幅シンプル・デュアルポート・モードで有効です。
- ECC機能を使用すると、M20Kの動作は、ECCシンプル・デュアルポート以外のモードに比べて低速になります。ただし、オプションのECCパイプライン・レジスターを出力デコーダーの前で有効にすると、パイプラインECCモード以外のモードと比べて、より高いパフォーマンスが実現可能です。ただし、1サイクルのレイテンシーが追加されます。
- e (エラー) と ue (訂正不可エラー) の2つのECCステータスフラグ信号によって、M20K ECCステータスが表示されます。ステータスフラグは、メモリーブロックからの通常の出力の一部です。ECCを使用すると、この2つパリティービットへのアクセスはできません。これは、ECCステータスフラグによってパリティービットが置き換えられるからです。
eSRAMブロック
eSRAMブロックの場合、ECCではシングルエラー訂正とダブルエラー検出を64ビットワードで実行します。
- 2つのECCステータスフラグ信号の c{7:0}_error_correct_0 (エラー訂正済み) および c{7:0}_error_detect_0 (エラー検出済み) では、eSRAM ECCステータスを示します。
パリティービット
- パリティービットの生成は、ECCエンコーダーにより32ビットの入力データ幅に基づいて行われ、合計40ビットのデータ幅になります。
- パリティービットの注入と反転には、ECCパリティーフリップ機能を使用します。
ECCパリティーフリップ
ECC Encoder Bypass (eccencbypass) ポートがHighの場合、内蔵ECCエンコーダー値のXOR演算が、パリティーポートを介して8つのパリティービットで行われ、新しいエンコーダー値のセットが生成されます。ECC Encoder BypassポートがLowの場合、エンコーダーによるパリティービットの生成は、データ入力に従って書き込み処理中に行われます。
次の表で示すのは、パリティーポート用8ビットデータ幅の構築例です。
パリティービットのシーケンス | ECC機能 | ECC Decoderによるデータビットの認識および訂正の可否 |
---|---|---|
00000001 | シングルエラー訂正 | 可能 |
00000011 | ダブル隣接エラー訂正 | 可能 |
00000111 | トリプル隣接エラー訂正 | 可能 |
00000101 | トリプル隣接エラー訂正 | 可能 |
00010011 | 非隣接のダブル/トリプル訂正/検出 | 保証なし |
ECC Read-During-Write動作
M20Kブロックの場合、 Old DataまたはDon't Care出力モードのいずれかを選択します。デフォルトでは、混合ポートRead-During-WriteモードはDon't Careに設定されています。混合ポートRead-During-WriteがDon't Careに設定されている場合、RAMデータ出力と eccstatus は両方とも「X」になります。ただし、混合ポートRead-During-WriteモードがOld Dataに設定されている場合、RAMデータ出力は古いデータになり、ECCステータスは確定値になります。
誤り訂正コードの真理値表
Eccstatus[1]e | Eccstatus[0]ue | ステータス |
---|---|---|
0 | 0 | エラーなし。 |
0 | 1 | 無効。 |
1 | 0 | 訂正可能なエラーが発生し、エラーは出力で訂正されました。ただし、メモリーアレイは更新されていません。 |
1 | 1 | 訂正不可能なエラーが発生し、訂正不可能なデータが出力に表示されます。 |
C{7:0}_error_detect_0 |
C{7:0}_error_correct_0 |
ステータス |
---|---|---|
0 | 0 | エラーなし。 |
0 | 1 | 無効。 |
1 | 0 | エラーが検出されましたが、訂正不可能です。訂正不可能なデータが出力に現れます。 |
1 | 1 | エラーが検出され修正可能です。エラーは出力で修正されました。訂正されたデータは出力に現れますが、メモリーアレイは更新されません。 |
Force-to-Zero
たとえば、選択したRAMメモリーブロックのメモリー深度が4096の場合、M20Kブロックでは、最大メモリー深度2048のみをサポートするので、2つのRAMを多重化する必要があります。この機能を使用すると、ORゲートの多重回路による置き換えが、アドレス幅ステッチ実行時にM20Kブロックの出力で実行できます。アドレスのMSBによるリードイネーブル信号の制御はForce-to-Zeroモードで行われるので、読み出しイネーブル信号がディアサートされると、他のメモリーブロックの出力は強制的にゼロになります。これにより、データ出力の読み出しが行われるのは、選択したメモリーブロックの出力のみからです。
必要に応じて、Enable Force-to-Zero featureをRAM/ROM IPコアのパラメーター・エディターでオンにします。
コヒーレント読み出しメモリー
コヒーレント・メモリー機能により、出力データの読み出しが可能になります。このデータの書き込みは、同じメモリーコンテンツに1クロックサイクルでされます。つまり、新しいデータ (フロースルー) 動作がRead-During-Write動作中に発生します。この機能は、M20Kブロックのみに適用され、シングル・クロック・コンフィグレーションでのみサポートされています。
- シンプル・デュアルポート以外の動作モード
- ポート幅が異なるシンプル・デュアルポート
- バイトイネーブル
- ECC
- ワイド・シンプル・デュアルポート
- デュアル・クロック・コンフィグレーション
ロジック転送
コヒーレント読み出し機能と転送ロジックを使用すると、コヒーレントにデータを読み出し、演算 (算術演算または論理演算、あるいはその両方) をデータ内容に基づいて実行し、データの書き戻しを同じメモリー位置に1クロックサイクル内ですることができます。
コヒーレント読み出し機能を有効にして転送ロジックを実装すると、M20Kブロックの出力は未登録または登録済みのいずれかになります。コヒーレンシー回路のレイテンシーをM20Kブロックのハードウェア境界内で一致させるには、パイプライン・レジスターを wren パスと wraddress パスに手動で追加しなければいけない場合があります。次の表でそれについて説明します。
出力レジスター | wren および wraddress 上の追加のパイプライン・レジスター |
---|---|
未登録 | 0 |
登録済み | 1 |
フリーズロジック
- シングルポートRAM
- デュアルポートRAM
- クワッドポートRAM
必要に応じてImplement clock-enable circuitry for use in a partial reconfigurationをオンにして、パーシャル・リコンフィグレーションで使用し、フリーズロジック機能をRAM IPコアのパラメーター・エディターでイネーブルにします。
トゥルー・デュアル・ポート・デュアル・クロック・エミュレーター
この機能がサポートされるのは次の状態の場合のみです。
- 2つの読み出し/書き込みポート動作モード
- AおよびBポート・クロッキング・モード用のクロックのカスタマイズ
TDPデュアル・クロック・エミュレーターは、2つのDCFIFOと1つのRAMブロックで構成されています。 DCFIFOでは、コントロール信号に対するクロック・ドメイン・クロッシング (CDC) の問題が処理され、また、RAMブロックによる処理前後のデータ格納用の一時バッファーになります。
異なるクロック周波数によって生じる非確定レイテンシーのために、 valid 信号が導入され、出力データが有効であるかどうかを識別します。 valid 信号がアサートされると、正しい出力データに従う必要性が示されます。 valid 信号がディアサートされた場合は、出力データは破棄してください。
信号 | インテル® Arria® 10 TDPデュアル・クロック・モード | インテル® Stratix® 10でエミュレートされたTDPデュアル・クロック・モード |
---|---|---|
clocken | サポートあり | サポートあり |
rden | サポートあり | サポートあり |
wren | サポートあり | サポートあり |
aclr | サポートあり | — |
sclr | — | — |
byteena | サポートあり | — |
ポートAへのクロック接続は低速クロック (クロックA) でなければならず、ポートBへのクロック接続は高速クロック (クロックB) でなければなりません。この場合、クロックBのクロック周波数をクロックAで割ると7以上になります。
TDPデュアル・クロック・エミュレーター機能を使用すると、ポートAとポートBではレイテンシーが異なったものになります。ポートAのレイテンシーが減少するとともに、2つのクロック周波数の差は大きくなり、最小レイテンシーは5クロックサイクルです。ポートBのレイテンシーは2クロックサイクルに固定されていて、出力レジスターはこのコンフィグレーションでは常に有効になっています。
次の図で示すのは、TDPデュアル・クロック・エミュレーター機能のタイミング図です。
インテル Stratix 10 でサポートされているエンベデッド・メモリーIPコア
IPコア | サポートされているメモリーモード | M20Kサポート | MLABサポート | 詳細 |
---|---|---|---|---|
RAM: 1-PORT インテル® FPGA IP | シングルポートRAM | あり | あり | 一度に実行できる読み出しまたは書き込み動作は1つだけです。 読み出しイネーブルポートを使用して、書き込み動作中のRAM出力ポートの動作を制御します。
|
RAM: 2-PORT インテル® FPGA IP | シンプル・デュアルポートRAM | あり | あり | 読み出し動作1回と書き込み動作1回を異なる位置に対して同時に実行できます。これは、書き込み動作がポートAで起こり、読み出し動作がポートBで起こる場合です。 |
RAM: 2-PORT インテル® FPGA IP | トゥルー・デュアルポートRAM | あり | – | 2つのポート動作を任意の組み合わせ (シングル・クロッキング・モードで読み出し2回、書き込み2回、または読み出し1つと書き込み1回)で実行することができます。 |
RAM: 4-PORT インテル® FPGA IP | シンプル・クワッドポートRAM | あり | – | 読み出し動作1回と書き込み動作1回を異なる位置に対して同時に実行できます。これは、書き込みアドレスの指定が、 address_a および address_b 信号/ポートで、読み出しアドレスの指定が、 address2_a および address2_b 信号/ポートで行われる場合です。 |
ROM: 1-PORT インテル® FPGA IP | シングルポートROM | あり | あり |
1つのアドレスポートのみが読み出し動作に使用可能です。 メモリーブロックをROMとして使用できます。
|
ROM: 2 PORT インテル® FPGA IP | デュアルポートROM | あり | なし |
デュアルポートROMには、シングルポートROMとほぼ同じ機能ポートがあります。違いは、デュアルポートROMには読み出し動作のための追加のアドレスポートがあることです。 メモリーブロックをROMとして使用することができます。
|
Shift-register (RAM-based) インテル® FPGA IP | — | あり | あり |
メモリーブロックをシフトレジスター・ブロックとして使用して、ロジックセルと配線リソースを節約します。 このモードが有用なのは、ローカル・データ・ストレージを必要とするDSPアプリケーション、例えば、有限インパルス応答 (FIR) フィルター、擬似ランダム数発生器、マルチチャネル・フィルタリング、自動および相互相関関数などです。従来、ローカル・データ・ストレージの実装には標準的なフリップフロップが使用され、多数のロジックセルが大きなシフトレジスターで使い果たされていました。 入力データ幅 (w)、タップの長さ (m)、およびタップの数 (n) によってシフトレジスターの容量 (w × m × n) が決定されます。メモリーブロックをカスケード接続すると、より大きなシフトレジスターを実装できます。 |
FIFO インテル® FPGA IP | — | あり | あり |
メモリーブロックをFIFOバッファーとして使用することができます。SCFIFOおよびDCFIFOファンクションを使用して、デザイン内にシングルおよびデュアルクロック非同期FIFOバッファーをデザインに実装します。 デザインに小規模で低深度のFIFOバッファーが多数ある場合、MLABはFIFOモードに最適です。ただし、MLABでは混合幅のFIFOモードをサポートしていません。 |
FIFO2 インテル® FPGA IP |
インテル Stratix 10 エンベデッド・メモリーのクロッキング・モード
クロッキング・モード | メモリーモード | |||||
---|---|---|---|---|---|---|
シングルポート | シンプル・デュアルポート | トゥルー・デュアルポート | シンプル・クワッドポート | シングルポートROM | デュアルポートROM | |
シングル・クロック・モード | あり | あり | あり | あり | あり | あり |
読み出し/書き込みクロックモード | – | あり | - 1 | – | – | — |
入力/出力クロックモード | あり | あり | あり | - 2 | あり | あり |
シングル・クロック・モード
シングル・クロック・モードでは、シングルクロックとクロックイネーブルの併用で、エンベデッド・メモリー・ブロックのすべてのレジスターを制御します。
読み出し/書き込みクロックモード
- 読み出しクロックでは、データ出力、読み出しアドレス、および読み出しイネーブルレジスターを制御します。
- 書き込みクロックでは、データ入力、書き込みアドレス、書き込みイネーブル、およびバイト・イネーブル・レジスターを制御します。
入力/出力クロックモード
- 入力クロックでは、エンベデッド・メモリー・ブロックへのデータ入力に関係するすべてのレジスターを制御します。これには、データ、アドレス、バイトイネーブル、リードイネーブル、およびライトイネーブルを含みます。
- 出力クロックではデータ出力レジスターを制御します。
クロッキング・モードにおける非同期/同期クリア
すべてのクロッキング・モードにおいて、非同期/同期クリアは出力ラッチと出力レジスターにのみ使用可能です。
独立 (読み出し/書き込みおよび入力/出力) クロックモードでは、非同期および同期クリアは両方のポートで使用可能です。
同時読み出し/書き込みにおける出力読み出しデータ
同時読み出し/書き込みを同じアドレス位置に対して実行する際に、読み出し/書き込みクロックモードを使用する場合、出力読み出しデータは未知の値になります。出力読み出しデータを既知の値にする必要がある場合は、シングル・クロック・モードまたは入力/出力クロックモードを使用して、適切なRead-During-Write動作の選択をRAM/ROM IPコアのパラメーター・エディターで行います。
クロッキング・モードにおける独立クロックイネーブル
独立クロックイネーブルは、次のクロッキング・モードでサポートされています。
- 読み出し/書き込みクロックモードは、読み出しおよび書き込みクロックの両方でサポートされています。
- 入力/出力クロックモードは、両ポートのレジスターでサポートされています。
消費電力を節約するためには、特定のレジスターのシャットダウン制御にクロックイネーブルを使用します。
インテル Stratix 10 エンベデッド・メモリーのコンフィグレーション
エンベデッド・メモリー・ブロック | 深度 (ビット) | プログラム可能な幅 |
---|---|---|
MLAB | 32 | ×16, ×18, or ×20 |
M20K | 512 | ×32または×40 注: シンプル・デュアルポート用。
|
1024 | ×16または×20 注: シンプル・デュアルポートおよびトゥルー・デュアルポート用。
|
|
2048 | ×8または×10 注: シンプル・デュアルポート、トゥルー・デュアルポート、およびシンプル・クアッドポート用。
|
|
eSRAM | 2048×42 3 | x72 3 |
混合幅ポートのコンフィグレーション
動作モード | 混合幅比率 | |
---|---|---|
バイトイネーブルなし | バイトイネーブルあり | |
シンプル・デュアルポート |
注: 1、2、4、8、16、および328、16、および32がエミュレートされます。エミュレートされた比率には、幅の広いポートの .mif
寸法を使用します。 |
1、2および4 |
トゥルー・デュアルポート | 1 | 1 |
シンプル・クワッドポート | 1 | 1 |
読み出しアドレスレジスターおよび書き込みアドレスレジスターの初期値
インテル® Stratix® 10デバイスの場合、M20Kブロックには、ユーザーモードに入った後にアドレスレジスターをクリアするためのフリーズレジスター ( frzreg ) がハードウェアにありません。これにより、有効なアドレスを送信する前に、ハードウェアのアドレス値が確定的でなくなります。したがって、シミュレーション・モデルではアドレスレジスターは初期化されて「X」になっています。
下の図の波形で表している動作は、アドレスレジスター値のものです。アドレスレジスターは「X」に初期化され、登録済み出力を持つシンプル・デュアルポートRAM用になっています。
インテル Stratix 10 エンベデッド・メモリーのデザイン考慮事項
メモリーブロックの選択の考慮事項
メモリーの割り当てを特定のブロックサイズに対して手動で行うには、パラメーター・エディターのOn-Chip Memory IPコアを使用します。
MLABの場合、シングルポートSRAMの実装を、 インテル® Quartus® Prime開発ソフトウェアのエミュレーションで行うことができます。エミュレーションの実行により、追加で使用するロジックリソースが最小限に抑えられます。
- インテル® Stratix 10® デバイスの場合、Resource Property Editorおよびタイミング・アナライザーでは、割り当てが許可された位置がM20K_X<number>_Y<number>_N<number> であっても、M20Kブロックの位置をEC_X<number>_Y<number>_N<number> としてレポートします。Embedded Cell (EC) はM20Kブロックのサブロケーションです。
- クロック・イネーブル・ポートが接続されたAUTOメモリー・ブロック・タイプをRAM IP コアのパラメーター・エディターで選択した場合、フィッターで常に選択されるのは、MLABではなくM20Kです。
同時読み出し動作の考慮事項
インテル® Stratix® 10エンベデッド・メモリー・ブロックで提供される破壊的および非破壊的ハードウェア動作には、二重同時書き込み動作を同一アドレス上で使用します。この機能が適用されるのは、メモリーブロックをトゥルー・デュアルポートおよびシングル・クアッドポート・モードで使用する場合です。
デフォルトでは、メモリーブロックが破損するのは、同一アドレスに二重同時書き込みを行う場合です。メモリーブロックの非破損ハードウェアの動作を表示するには、ユーザー定義オプション「ENA_NON_CORRUPT=1」をシミュレーター・セットアップ・スクリプトに含めます。
二重同時書き込みが発生すると、物理エミュレーションでは時分割多重化方式を使用して、ポートAとポートBの同時多重化を同じデータ幅で行います。このシーケンスでは、ポートBの値が最初に書き込まれ、続いてポートAの値が同じアドレスに書き込まれます。これにより、ポートAの値がメモリーに書き込まれます。
Read-During-Write動作のカスタマイズ
同一ポートのRead-During-Writeモード
出力モード | メモリータイプ | 詳細 |
---|---|---|
New Data | M20K | 新しいデータは、新しいデータが書き込まれるのと同じクロックサイクルの立ち上がりエッジで使用可能です。 |
Don't Care | M20K、MLAB | RAMでは、Read-During-Write動作に対してDon't Care値を生成します。 注: QUAD_PORT動作モードの場合、 Don't Careモードは、同一ポートRead-During-Write動作に対する唯一の出力モードです。
|
混合ポートRead-During-Writeモード
出力モード | メモリータイプ | 詳細 |
---|---|---|
New Data | MLAB |
異なるポートへのRead-During-Write動作により、MLABの登録済み出力ではNew Dataが反映されます。これは、次の立ち上がりエッジで、データがMLABメモリーに書き込まれた後に行われます。 このモードが使用可能なのは、出力が登録済みの場合のみです。 |
Old Data | M20K、MLAB |
異なるポートへのRead-During-Write動作により、RAM出力では、特定のアドレスにあるOld Dataの値が反映されます。 MLABでは、このモードが使用可能なのは出力が登録済みの場合のみです。 |
Don't Care | M20K、MLAB |
RAMではDon't CareまたはUnknown値を出力します。
注: M20Kのトゥルー・デュアルポート動作では、新しいデータ値の取得を混合ポートRead-During-Writeモードのシミュレーション中にすることになります。出力モードをDon't Careに設定すると、シミュレーション値ではそれをジャンク値として扱う必要があります。
|
New_a_old_b | M20K | このモードが適用されるのは、M20Kのシンプル・クワッドポートのみです。異なるポートへのRead-During-Write動作により、RAM出力では、ポートAの新しいデータとポートBの古いデータが反映されます。 |
RAM: 2-PORT インテル® FPGA IP Settings | 出力動作 | |||
---|---|---|---|---|
パラメーター | イネーブルド・パラメーター・オプション | altera_syncramパラメーター (read_during_write_mode_mixed_ ports) |
Read-During-Write時の出力データ | MLAB Atom (Chip Plannerで表示) |
Mixed Port Read-During-Write for Single Input Clock RAM
How should the q_a and q_b outputs behave when reading a memory location that is being written from the other port? |
Old memory contents appear | old_data | Old data 4 | New Data |
New Data | new_data | New Data | New Data | |
I do not care(the outputs will be undefined) | constrained_dont_care | New Data | Constrained Don't Care | |
|
dont_care | New Data | Don't Care |
パワーアップ状態およびメモリー初期化の考慮事項
メモリータイプ | 出力レジスター | パワーアップ値 |
---|---|---|
MLAB | 使用 | ゼロ (クリア) |
バイパス | メモリーコンテンツを読み出す | |
M20K | 使用 | ゼロ (クリア) |
バイパス | ゼロ (クリア) |
インテル® Quartus® Prime開発ソフトウェアではデフォルトで、 インテル® Stratix 10® デバイスのエンベデッド・メモリー・ブロックを初期化してゼロにします。これは、 .mif でメモリーコンテンツを指定しない限り適用します。
MLABおよびM20Kエンベデッド・メモリー・ブロックでは、 .mif による初期化をサポートしています。 .mif ファイルの インテル® Quartus® Prime開発ソフトウェアでの生成と、オンチップメモリーIPコアでの使用の指定は、デザインでメモリーのインスタンス化をする際に行います。メモリーを事前に初期化する (例えば .mif を使用する) 場合でも、そのメモリーのパワーアップは、出力がクリアされた状態で行います。
消費電力の削減
- インテル® Stratix 10® のメモリー・ブロック・クロック・イネーブルを使用して、各エンベデッド・メモリー・ブロックのクロッキングを制御します。
- 読み出しイネーブル信号を使用して、読み出し動作が必要なときにだけ実行されるようにします。デザインにRead-During-Writeが不要な場合、消費電力を削減するために、リードイネーブル信号のディアサートを書き込み動作中かつメモリー動作が実行されていない間に行います。
- インテル® Quartus® Prime開発ソフトウェアを使用して、未使用のエンベデッド・メモリー・ブロックを自動的に低電力モードにし、スタティック電力を削減します。
インテル Stratix 10 エンベデッド・メモリーIPコアのリファレンス
- RAM: 1-Port Intel FPGA IP - シングルポートRAMをインスタンス化します。
- RAM: 2-Port Intel FPGA IP - デュアルポートおよび双方向ポートRAMをインスタンス化します。
- RAM: 4-Port Intel FPGA IP - クアッドポートRAMをインスタンス化します。
- ROM: 1-Port Intel FPGA IP - シングルポートROMをインスタンス化します。
- ROM: 2-Port Intel FPGA IP - デュアルポートおよび双方向ポートROMをインスタンス化します。
- eSRAM (Embedded Synchronous Random Access Memory) Intel FPGA IPe - ネイティブeSRAMブロック
- FIFO (First-In-First-Out) をインスタンス化します。 Intel FPGA IP - FIFO Intel FPGA IPコアをインスタンス化します。
- FIFO2 Intel FPGA IP - FIFO2 Intel FPGA IPコアをインスタンス化します。
On Chip Memory RAMおよびROM Intel FPGA IPコア
On Chip Memory Intel FPGA IPコア | 機能 |
---|---|
RAM: 1-PORT Intel FPGA IP |
|
RAM: 2-PORT Intel FPGA IP |
シンプル・デュアル・ポートRAM
|
トゥルー・デュアルポートRAM
|
|
RAM: 4-PORT Intel FPGA IP |
|
ROM: 1-PORT Intel FPGA IP |
|
ROM: 2-PORT Intel FPGA IP |
|
RAM: 1-PORT Intel FPGA IPのパラメーター
パラメーター | 選択可能な値 | 説明 | |
---|---|---|---|
パラメーター設定:Widths/Blk Type/Clks | |||
How wide should the ‘q’ output bus be? | — | 「q」出力バスの幅を指定します。 | |
How many words of memory? | — | ビットワードの数を指定します。 | |
What should the memory block type be | Auto、MLAB、M20K、LCs | メモリーブロックのタイプを指定します。選択可能なメモリーブロックのタイプは、ターゲットデバイスによって異なります。 | |
Set the maximum block depth to |
|
ワード内の最大ブロック深度を指定します。 | |
How should the memory be implemented? |
|
ロジックセルの実装方法を指定します。
|
|
What clocking method would you like to use? |
|
使用するクロッキング方法を指定します。
|
|
パラメーター設定:Regs/Clkens/Byte Enable/Aclrs | |||
Which ports
should be registered? The following options are
available:
|
On/Off | 入力および出力ポートを登録するかどうかを指定します。 | |
Create one clock
enable signal for each clock signal. 注: すべての登録済みポートの制御はイネーブル信号によって行われます。
|
On/Off | このオプションをオンにして、各クロック信号にクロックイネーブル信号を1つ作成するかどうかを指定します。 | |
More Options | Use clock enable for port A input registers | On/Off | クロックイネーブルをポートA入力レジスターに対して使用するかどうかを指定します。 |
Use clock enable for port A output registers | On/Off | クロックイネーブルをポートA出力レジスターに対して使用するかどうかを指定します。 | |
Create an ‘addressstall_b’ input port. | On/Off | addressstall_a 入力ポートを作成するかどうかを指定します。 このポートを作成して、それをアドレスレジスターに対するアクティブLowクロックイネーブル入力として機能させます。 | |
Create byte enable for port A | On/Off | バイトイネーブルをポートAに対して作成するかどうかを指定します。入力データをマスクする場合はこのオプションをオンにして、特定のバイト、ニブル、またはデータのビットだけが書き込まれるようにします。 バイトイネーブルをポートAとポートBに対して有効にするには、データ幅比率は、RAM: 1-PORTとRAM: 2-PORT インテル® FPGA IPコアに対して1または2にする必要があります。 |
|
What is the width of a byte for byte enables? |
|
バイト・イネーブル・ポートのバイト幅を指定します。データ入力ポートの幅はバイトサイズで割り切れるものにしてください。 | |
Create an ‘aclr’ asynchronous clear for the registered ports.
|
On/Off | オンにするのは、登録済み「data」、「wren」、「address」、 「q」、および「byteena_a」ポートが非同期クリア信号の影響を受けるようにする場合です。無効化されたポートは非同期クリア信号の影響を受けません。 | |
Create an ‘sclr’ synchronous clear for the registered port. ‘q’ port |
On/Off | オンにするのは、「q」ポートが同期クリア信号の影響を受けるようにする場合です。 | |
Create a 'rden' read enable signal | On/Off | オンにするのは、読み出しイネーブル信号を作成する場合です。 | |
パラメーター設定:Read During Write Option | |||
What should the ‘q_b’ output be when reading from a memory location being written to? | Don’t Care, New Data | Read-During-Write発生時の出力動作を指定します。
Don’t Care - RAMでRead-During-Write動作の「don't care」または「unknown」値を出力します。 New Data - 新しいデータは、データが書き込まれたのと同じクロックサイクルの立ち上がりエッジで使用可能です。 |
|
Get x’s for write masked bytes instead of old data when byte enable is used | On/Off | マスクされたバイトの「X」を取得するには、このオプションをオンにします。 M20Kメモリーブロックの場合、このオプションが使用できないのは、New Data をRDW発生時の出力動作として指定したときです。 |
|
パラメーター設定:Mem Init | |||
Do you want to specify the initial content of the memory? |
|
メモリーの初期コンテンツを指定します。 メモリーを初期化してゼロにするには、No, leave it blankを選択します。 メモリー初期化ファイル (.mif) または16進数 (Intel形式) ファイル (.hex) を使用するには、Yes, use this file for the memory content data. を選択します。 |
|
Initialize memory content data to XX..X on power-up in simulation | On/Off | — | |
Implement clock-enable circuitry for use in a partial reconfiguration region | On/Off | クロックイネーブル回路を実装して、それをパーシャル・リコンフィグレーション領域で使用するためにするかどうかを指定します。 | |
Allow In-System Memory Content Editor to capture and update content independently of the system clock | On/Off | In-System Memory Content Editorによるメモリーコンテンツのキャプチャと更新をシステムクロックに関わらず可能にするかどうかを指定します。 | |
The ‘Instance ID’ of this RAM is | NONE | RAM IDを指定します。 | |
パラメーター設定 : Performance Optimization | |||
Enable Force To Zero | On/Off | 読み出しイネーブル信号をディアサートする場合に、出力をゼロに設定するかどうかを指定します。 この機能を有効にすることでグルーロジックのパフォーマンスが向上するのは、選択したメモリー深度が単一のメモリーブロックよりも大きい場合です。 |
RAM: 2-PORT Intel FPGA IPのパラメーター
パラメーター | 選択可能な値 | 詳細 |
---|---|---|
パラメーター設定:General | ||
How will you be using the dual port RAM? |
Operation mode:
|
デュアルポートRAMの使用方法を指定します。 |
How do you want to specify the memory size? |
Type:
|
メモリー容量の指定をワードとビットのどちらでするかを決定します。 |
パラメーター設定:Widths/Blk Type | ||
How many words of memory? | — | トランシーバー数を指定します。 |
Use different data widths on different ports | On/Off | 異なるポートで異なるデータ幅を使用するかどうかを指定します。 |
When you select With one read port and one
write
port
or With two read/write
ports, the following options are
available:
|
— | 入出力ポートの幅を指定します。 |
Ram block type | Auto、MLAB、M20K、LCs | メモリーブロックのタイプを指定します。選択可能なメモリーブロックのタイプは、ターゲットのデバイスによって異なります。 |
Set the maximum block depth to |
|
最大ブロック深度をワードで指定します。
|
How should the memory be implemented? |
|
ロジックセルの実装方法を指定します。
|
パラメーター設定:Clks/Rd, Byte En | ||
What clocking method would you like to use? |
|
使用するクロッキング方法を指定します。
|
When you select With
two read/write ports and Customize clocks for A and B ports clocking method,
the following option is available: Emulate TDP dual clock mode |
— | TDPデュアル・クロック・モードをエミュレートするかどうかを指定します。ポートAへのクロック接続は低速クロックでなければなりません。ポートBへのクロック接続は高速クロックでなければなりません。 |
When you select With
one read port and one write port, the following
option is available: Create a ‘rden’ read enable signal |
— | 読み出しイネーブル信号をポートBに対して作成するかどうかを指定します。 |
When you select With
two read/write ports, the following option is
available: Create a ‘rden_a’ and ‘rden_b’ read enable signals |
読み出しイネーブル信号をポートAとポートBに対して作成するかどうかを指定します。 | |
Create byte enable for port A | — | バイトイネーブルをポートAとBに対して作成するかどうかを指定します。入力データをマスクする場合はこのオプションをオンにして、特定のバイト、ニブル、またはデータのビットだけが書き込まれるようにします。 バイトイネーブルをポートAとポートBに対して有効にするには、データ幅比率は、RAM: 1-PORTとRAM: 2-PORT インテル® FPGA IPコアに対して1または2にする必要があります。 バイトイネーブルをポートBに対して作成するオプションが使用可能なのは、With two read/write portsオプションを選択した場合のみです。 |
Create byte enable for port A | — | |
What is the width of a byte for byte enables? |
|
バイトイネーブルのバイト幅を指定します。 このオプションが使用可能なのは、 Create byte enable for port Aおよび/またはCreate byte enable for port Bを選択した場合のみです。 |
Enable Error Correction Check (ECC) | On/Off | ECC機能を有効にするかどうかを指定します。ECC機能では、シングル・ビット・エラー、ダブル隣接ビットエラーの訂正と、メモリーの出力でのトリプル隣接ビットエラーの検出を行います。 |
Enable ECC Pipeline Registers | On/Off | 非ECCモードと同じパフォーマンスを達成するために、出力デコーダーの前にECCパイプライン・レジスターを有効にするかどうかを指定します。有効にすると1サイクルのレイテンシーが犠牲になります。 |
Enable ECC Encoder Bypass | On/Off | ECCエンコーダー・バイパス機能を有効にするかどうかを指定します。この機能では、パリティービットのメモリーへの選択的挿入をccencparityポートを介して行うことができます。 |
Enable Coherent Read | On/Off | コヒーレント・メモリー読み出しを使用してコヒーレント読み出し機能を有効にするかどうかを指定します。この機能により、現在のメモリーコンテンツを読み出し、その内容に基づいた動作を実行し、同じ場所に同じサイクルで書き戻すことができます。 |
パラメーター設定:Regs/Clkens/Aclrs | ||
Which ports should be registered? When you select With one read port and one write port, the following options are available:
When you select With two read/write ports, the following options are available:
|
On/Off | 読み出しまたは書き込み入力ポートおよび出力ポートを登録するかどうかを指定します。 |
Clock Enables When you select With one read port and one write port, the following option is available:
When you select With two read /write ports, the following options are available:
|
On/Off | クロックイネーブルを読み出しおよび書き込みレジスターに対して作成するかどうかを指定します。 |
Addressstalls When you select With one read port and one write port, the following option is available:
|
On/Off | クロックイネーブルをアドレスレジスターに対して作成するかどうかを指定します。これらのポートを作成して、アドレスレジスターに対する追加のアクティブLowクロックイネーブル入力として機能させます。 |
Aclr Options When you select With one read port and one write port, the following option is available:
When you select With two read /write ports, the following options are available:
|
On/Off | 非同期クリアポートを登録済みポートに対して作成するかどうかを指定します。「q_a」および「q_b」ポートのクリアをaclrポートによって行うかどうかを指定します。 |
Sclr Options When you select With one read port and one write port, the following option is available:
When you select With two read /write ports, the following options are available:
|
On/Off | 同期クリアポートを登録済みポートに対して作成するかどうかを指定します。「q_a」および「q_b」ポートのクリアをaclrポートによって行うかどうかを指定します。 |
パラメーター設定:Output 1 (このタブが使用可能なのは、読み出しポート1つと書き込みポート1つを選択した場合のみです。) | ||
How should the q_a and q_b outputs behave when reading a memory location that is being written from the other port? |
|
Read-During-Write発生時の出力動作を指定します。
|
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. | On/Off | このオプションをオンにするのは、RAMの出力をRead-During-Write動作に対して「don't care」 または「unknown」の値にし、タイミングパスの解析を行わない場合です。このオプションが使用可能なのはLUTRAMの場合のみで、有効になるのはメモリー・ブロック・タイプをMLABに設定したときです。 |
パラメーター設定:Output 2 (このタブが使用可能なのは2つの読み出しポートと書き込みポートを選択した場合のみです。) | ||
What should the ‘q_a’ output be when reading from a memory location being written to? |
|
Read-During-Write発生時の出力動作を指定します。
|
What should the ‘q_b’ output be when reading from a memory location being written to? | ||
Get x’s for write masked bytes instead of old data when byte enable is used | On/Off | このオプションをオンにすると、マスクされたバイトで「X」が取得できます。 |
パラメーター設定 : Mem Init | ||
Do you want to specify the initial content of the memory? |
|
メモリーの初期内容を指定します。 メモリーを初期化してゼロにするには、No, leave it blank. を選択します。 メモリー初期化ファイル (.mif) または16進数 (Intel形式) ファイル(.hex) を使用するには、Yes, use this file for the memory content dataを選択します。 |
Initialize memory content data to XX..X on power-up in simulation | On/Off | — |
The initial content file should conform to which port's dimension? | PORT_A, PORT_B | 初期コンテンツファイルをメモリー・コンテンツ・データに使用することを選択した場合は、ファイルを準拠させる必要があるポートを選択します。 |
Implement clock-enable circuitry for use in a partial reconfiguration region | On/Off |
クロックイネーブル回路を実装して、それをパーシャル・リコンフィグレーション領域で使用するかどうかを指定します。クロックイネーブル回路を実装して、パーシャル・リコンフィグレーション領域で使用します。 |
パラメーター設定 : Performance Optimization | ||
Enable Force to Zero | On/Off | 読み出しイネーブル信号をディアサートする場合に、出力をゼロに設定するかどうかを指定します。 この機能を有効にすることでグルーロジックのパフォーマンスが向上するのは、選択したメモリー深度が単一のメモリーブロックよりも大きい場合です。 |
RAM: 4-PORT Intel FPGA IPのパラメーター
パラメーター | 選択可能な値 | 詳細 | |
---|---|---|---|
パラメーター設定:Widths/Blk Type | |||
How many words of memory? | — | ビットワードの数を指定します。 | |
How wide should the ‘q_b’ output bus be? | — | 入出力ポートの幅を指定します。 | |
RAM block type | Auto、M20K | メモリーブロックのタイプを指定します。選択可能なメモリーブロックのタイプは、ターゲットデバイスによって異なります。 | |
Set the maximum block depth to | M20K: Auto、512、1024、2048 | ワード内の最大ブロック深度を指定します。 | |
パラメーター設定:Clks/Rd, Byte En | |||
What clocking method would you like to use? | Single clock | 使用するクロッキング方法を指定します。 Single clock - シングルクロックおよびクロックイネーブルでは、メモリーブロックのすべてのレジスターを制御します。 |
|
Create a ‘rden_a’ and ‘rden_b’ read enable signal |
— | 読み出しイネーブル信号をポートAとポートBに対して作成するかどうかを指定します。 | |
What is the width of a byte for byte enables? | M20K: 5, 8, 9, 10 |
バイト・イネーブル・ポートのバイト幅を指定します。データ入力ポートの幅はバイトサイズで割り切れるものにしてください。 |
|
パラメーター設定:Regs/Clkens/Aclrs | |||
Which
ports should be registered? Input registers:
Output registers:
|
On/Off | 読み出しまたは書き込み入出力ポートを登録するかどうかを指定します。 | |
Use clock enable for input and output registers. | On/Off | このオプションをオンにして、1つのクロックイネーブル信号を入出力レジスターに対して作成するかどうかを指定します。 | |
Create
an ‘aclr’ asynchronous clear for the output ports.
|
On/Off | 非同期クリアポートを出力ポートに対して作成するかどうかを指定します。 | |
Create
an ‘sclr’ synchronous clear for the output ports.
|
On/Off | 非同期クリアポートを出力ポートに対して作成するかどうかを指定します。 | |
パラメーター設定:Output 1 | |||
How
should the ‘q_a’ and ‘q_b’ outputs behave when reading a memory
location that is being written from the other port? The output of port A will be ‘NEW’ while the output of port B will be ‘OLD’ |
On/Off |
Read-During-Write発生時の出力動作を指定します。 |
|
パラメーター設定:Output 2 | |||
What should the ‘q_a’ output be when reading from a memory location being written to? | Don't Care |
Read-During-Write発生時の出力動作を指定します。 |
|
What should the ‘q_b’ output be when reading from a memory location being written to? | |||
パラメーター設定 : Mem Init | |||
Do you want to specify the initial content of the memory? |
|
初期メモリーコンテンツを指定します。 メモリーを初期化してゼロにするには、No, leave it blank. を選択します。 メモリー初期化ファイル (.mif) または16進数 ( Intel® 形式) ファイル(.hex) を使用するには、Yes, use this file for the memory content dataを選択します。 |
|
Initialize memory content data to XX..X on power-up in simulation | On/Off | — | |
The initial content file should conform to which port's dimension? | PORT_A, PORT_B | 初期コンテンツファイルをメモリー・コンテンツ・データに使用することを選択した場合は、ファイルを準拠させる必要があるポートを選択します。 | |
Implement clock-enable circuitry for use in a partial reconfiguration region | On/Off |
クロックイネーブル回路を実装して、それをパーシャル・リコンフィグレーション領域で使用するかどうかを指定します。 |
|
パラメーター設定 : Performance Optimization | |||
Enable Force-to-Zero | On/Off | リードイネーブル信号をディアサートする場合に、出力をゼロに設定するかどうかを指定します。 この機能を有効にすることでグルーロジックのパフォーマンスが向上するのは、選択したメモリー深度が単一のメモリーブロックよりも大きい場合です。 |
ROM: 1-PORT Intel FPGA IPのパラメーター
パラメーター | 選択可能な値 | 詳細 | |
---|---|---|---|
パラメーター設定 : General Page | |||
How wide should the ‘q’ output bus be? | — | 「q」出力バスの幅を指定します。 | |
How many words of memory? | — | トランシーバー数を指定します。 | |
What should the memory block type be | Auto、MLAB、M20K | メモリーブロックのタイプを指定します。選択可能なメモリーブロックのタイプは、ターゲットデバイスによって異なります。 | |
Set the maximum block depth to |
|
ワード内の最大ブロック深度を指定します。 | |
What clocking method would you like to use? |
|
使用するクロッキング方法を指定します。
|
|
パラメーター設定:Regs/Clkens/Aclrs | |||
Which
ports should be registered? The following options are available:
|
On/Off | 入力および出力ポートを登録するかどうかを指定します。 | |
Use clock enable for port A input registers | On/Off | クロックイネーブルをポートA入力レジスターに対して使用するかどうかを指定します。 | |
Use clock enable for port A output registers | On/Off | クロックイネーブルをポートA出力レジスターに対して使用するかどうかを指定します。 | |
Create an ‘addressstall_b’ input port. | On/Off | addressstall_a入力ポートを作成するかどうかを指定します。このポートを作成して、それをアドレスレジスターに対するアクティブLowクロックイネーブル入力として機能させることができます。 | |
Create an ‘aclr’ asynchronous clear for the registered ports. The following option is available:
|
On/Off | 登録済みポートが非同期クリアポートの影響を受けるかどうかを指定します。 | |
Create
a ‘sclr’ asynchronous clear for the registered ports. ‘q’ port |
On/Off | qポートが同期クリアポートの影響を受けるかどうかを指定します。 | |
Create a 'rden' read enable signal | On/Off | 読み出しイネーブル信号を作成するかどうかを指定します。 | |
パラメーター設定:Mem Init | |||
Do you want to specify the initial content of the memory? |
|
初期メモリーコンテンツを指定します。 ROMモードでは、メモリー初期化ファイル (.mif) または16進数 (Intel形式) ファイル (.hex) を指定してください。Yes, use this file for the memory content dataオプションは、デフォルトでオンになっています。 |
|
The initial content file should conform to which port's dimension? | PORT_A | メモリー・コンテンツ・データの初期コンテンツファイルはポートAにのみ準拠します。 | |
Allow In-System Memory Content Editor to capture and update content independently of the system clock | On/Off | In-System Memory Content Editorでコンテンツのキャプチャと更新がシステムクロックに関わらずできるようにするかどうかを指定します。 | |
The ‘Instance ID’ of this ROM is | NONE | ROM IDを指定します。 | |
パラメーター設定 : Performance Optimization | |||
Enable Force-to-Zero | On/Off | リードイネーブル信号をディアサートする場合に、出力をゼロに設定するかどうかを指定します。 この機能を有効にすることでグルーロジックのパフォーマンスが向上するのは、選択したメモリー深度が単一のメモリーブロックよりも大きい場合です。 |
ROM: 2-PORT Intel FPGA IPのパラメーター
パラメーター | 選択可能な値 | 詳細 | |
---|---|---|---|
パラメーター設定:Widths/Blk Type | |||
How do you want to specify the memory size? |
|
メモリー容量の指定をワードかビットのどちらでするかを決定します。 | |
How many words of memory? | 32、64、128、256、512、1024、2048、4096、8192、16384、32768、および65536 | ワード数を指定します。 | |
Use different data widths on different ports | On/Off | 異なるポートで異なるデータ幅を使用するかどうかを指定します。 | |
How wide should the ‘q_a’ output bus be? | — | 「q_a」および「q_b」出力ポートの幅を指定します。 | |
How wide should the ‘q_b’ output bus be? | |||
RAM block type | Auto、M20K | メモリーブロックのタイプを指定します。選択できるメモリーブロックのタイプは、ターゲットのデバイスによって異なります。 | |
Set the maximum block depth to | M20K: Auto、512、1024、2048 | ワード内の最大ブロック深度を指定します。Autoをメモリー・ブロック・タイプとして選択する場合にのみ、このオプションが有効化されます。 | |
パラメーター設定:Clks/Rd, Byte En | |||
What clocking method would you like to use? |
|
使用するクロッキング方法を指定します。
|
|
Create a ‘rden_a’ and ‘rden_b’ read enable signal | On/Off | 読み出しイネーブル信号を作成するかどうかを指定します。 | |
パラメーター設定:Regs/Clkens/Aclrs | |||
Which ports should be registered? Read output ports |
On/Off | 読み出し出力ポートを登録するかどうかを指定します。 | |
‘q_a’ port | On/Off | 「q_a」出力ポートを登録するかどうかを指定します。 | |
‘q_b’ port | On/Off | 「q_b」出力ポートを登録するかどうかを指定します。 | |
Use clock enable for port A input registers | On/Off | クロックイネーブルをポートA入力レジスターに対して使用するかどうかを指定します。 | |
Use clock enable for port A output registers | On/Off | クロックイネーブルをポートA出力レジスターに対して使用するかどうかを指定します。 | |
Use clock enable for port A input registers | On/Off | クロックイネーブルをポートB入力レジスターに対して使用するかどうかを指定します。 | |
Use clock enable for port A output registers | On/Off | クロックイネーブルをポートB出力レジスターに対して使用するかどうかを指定します。 | |
Aclr Options
|
On/Off | 登録済みポートが非同期クリアポートによってクリアされるかどうかを指定します。 | |
Sclr Options
|
On/Off | 登録済みポートが非同期クリアポートによってクリアされるかどうかを指定します。 | |
パラメーター設定:Mem Init | |||
Do you want to specify the initial content of the memory? |
|
メモリーの初期コンテンツを指定します。 ROMモードでは、メモリー初期化ファイル (.mif) または16進数 ( Intel® 形式) ファイル (.hex) を指定してください。Yes, use this file for the memory content dataオプションは、デフォルトでオンになっています。 |
|
The initial content file should conform to which port's dimension? |
|
初期コンテンツファイルをポートAまたはポートBのどちらに準拠させるかを指定します。 | |
パラメーター設定 : Performance Optimization | |||
Enable Force-to-Zero | On/Off | 読み出しイネーブル信号をディアサートする場合に、出力をゼロに設定するかどうかを指定します。 この機能を有効にすることでグルーロジックのパフォーマンスが向上するのは、選択したメモリー深度が単一のメモリーブロックよりも大きい場合です。 |
RAM および ROM インターフェイス信号
信号 | 入力/出力 | 要/不要 | 詳細 |
---|---|---|---|
data_a | 入力 | 任意 | メモリーのポートAへのデータ入力。 data_a ポートはすべてのRAM動作モードに必要です。
|
address_a | 入力 | 要 | メモリーのポートAへのアドレス入力。 address_a 信号はすべての動作モードに必要です。 |
address2_a | 入力 | 要 (シンプル・クワッドポート用) |
メモリーのポートAの読み出しアドレス入力。 The address2_a 信号が必要なのは、 operation_mode パラメーターが QUAD_PORT に設定されている場合です。 |
wren_a | 入力 | 任意 | address_a ポートの書き込みイネーブル入力。
wren_a 信号はすべてのRAM動作モードに必要です。
|
rden_a | 入力 | 任意 | address_a ポートの読み出しイネーブル入力。 rden_a 信号のサポートは、選択したメモリーモードとメモリーブロックに応じて提供されます。 |
byteena_a | 入力 | 任意 |
ポートをマスクするためのバイトイネーブル入力。これにより、データの特定のバイト、ニブル、またはビットのみが書き込まれます。byteena_a ポートは次の条件ではサポートされません。
|
addressstall_a | 入力 | 任意 | アドレス・クロック・イネーブル入力。addressstall_a ポートがHighの間、addressstall_aポートの以前のアドレスを保持します。 |
q_a | 出力 | 要 | メモリーのポートAからのデータ出力。q_a ポートが必要なのは、 operation_mode パラメーターを次のいずれかの値に設定した場合です。
|
data_b | 入力 | 任意 |
メモリーのポートBへのデータ入力。data_b ポートが必要なのは、 operation_mode パラメーターを BIDIR_DUAL_PORT に設定した場合です。 |
address_b | 入力 | 任意 |
メモリーのポートBへのアドレス入力。 address_b ポートが必要なのは、 operation_mode パラメーターを次の値に設定した場合です。
|
address2_b | 入力 | 要 (シンプル・クワッドポート用) |
メモリーのポートBのアドレス入力を読み出します。 address2_b 信号が必要なのは、 operation_mode パラメーターを QUAD_PORT に設定した場合です。 |
wren_b | 入力 | 要 |
address_b
ポートの書き込みイネーブル入力。 wren_b ポートが必要なのは、 operation_mode を BIDIR_DUAL_PORT に設定した場合です。 |
rden_b | 入力 | 任意 | address_b ポートの読み出しイネーブル入力。 rden_b ポートのサポートは、選択したメモリーモードとメモリーブロックに応じて提供されます。 |
byteena_b | 入力 | 任意 | バイトイネーブル入力。
data_b
ポートをマスクすることによって、データの特定のバイト、ニブル、またはビットのみが書き込まれます。 byteena_b ポートは次の条件ではサポートされません。
|
q_b | 出力 | 要 | メモリーのポートBからのデータ出力。
q_b
ポートが必要なのは、
operation_mode
を次の値のいずれかに設定した場合です。
q_b ポートの幅は、 data_b ポートの幅と等しいものである必要があります。 |
clock0 | 入力 | 要 | 次の説明は、どのメモリークロックを
clock0
ポートに接続する必要があるのか、また、異なるクロッキング・モードでのポート同期についてです。
|
clock1 | 入力 | 任意 | 次の説明は、どのメモリークロックを
clock1
ポートに接続する必要があるのか、また、異なるクロッキング・モードでのポート同期についてです。
|
clocken0 | 入力 | 任意 | clock0 ポートのクロックイネーブル入力。 |
clocken1 | 入力 | 任意 | clock1 ポートのクロックイネーブル入力。 |
eccstatus | 出力 | 任意 | ビット幅のエラー訂正ステータスポート。メモリーから読み出されたデータに、訂正ありのシングルビットのエラー、訂正なしの致命的エラー、またはエラーなしビットが発生するかどうかを示します。 eccstatus ポートがサポートされるのは、次の条件がすべて満たされる場合です。
|
eccencbypass | 入力 | 任意 | このポートがアクティブなとき、 パリティービットの挿入を eccencparity ポートによって行うことができます。アクティブでないとき、パリティービットの生成には内部のeccエンコーダーが使用されます。このポートが使用できるのは、 enable_ecc_encoder_bypass が「TRUE」に設定されている場合のみです。 |
eccencparity | 入力 | 任意 | eccencbypass がアクティブなとき、8ビットパリティーの挿入を eccencparity ポートによって行うことができます。このポートが使用できるのは、 enable_ecc_encoder_bypass が「TRUE」に設定されている場合のみです。 |
data | 入力 | 要 | メモリーへのデータ入力。dataポートが必要とされ、幅は q ポートの幅と等しいものである必要があります。 |
wraddress | 入力 | 要 | メモリーへの書き込みアドレス入力。 |
wren | 入力 | 要 | wraddress ポートの書き込みイネーブル入力。 wren ポートが必要です。 |
rdaddress | 入力 | 必要 | メモリーへの読み出しアドレス入力。 |
rden | 入力 | 任意 | rdaddress ポートの読み出しイネーブル入力。 |
byteena | 入力 | 任意 | バイトイネーブル入力。データポートをマスクすることによってデータ特定のバイト、ニブル、またはビットのみが書き込まれます。 インテル® Stratix 10® デバイスでのサポートが提供されるのは、 ram_block_type パラメーターの設定がMLABのときです。 |
wraddressstall | 入力 | 任意 | ライト・アドレス・クロック・イネーブル入力。 wraddress ポートがHighの間、 wraddressstall ポートの以前のアドレスを保持します。 |
rdaddressstall | 入力 | 任意 | リード・アドレス・クロック・イネーブル入力。 rdaddress ポートがHighの間、 rdaddressstall ポートの以前のアドレスを保持します。 |
q | 出力 | 要 | メモリーからのデータ出力。 |
inclock | 入力 | 要 | 次の説明は、どのメモリークロックを
inclock
ポートに接続する必要があるのか、また異なるクロックモードでのポート同期についてです。
|
outclock | 入力 | 要 | 次の説明は、どのメモリークロックを
outclock
ポートに接続する必要があるのか、また異なるクロックモードでのポート同期についてです。
|
inclocken | 入力 | 任意 | inclock ポートのクロックイネーブル入力。 |
outclocken | 入力 | 任意 | outclock ポートのクロックイネーブル入力。 |
aclr | 入力 | 任意 | 登録済み出力ポートを非同期クリアします。非同期クリアの登録済みポートへの影響の制御は、 outdata_aclr_a や outdata_aclr_b などの対応する非同期クリア・パラメーターを介して行うことができます。 |
sclr | 入力 | 任意 | 出力ポートを同期クリアします。同期クリアの登録済みポートへの影響の制御は、 outdata_sclr_a and outdata_sclr_b などの対応する同期クリア・パラメーターを介して行うことができます。 |
手動によるパラメーター設定の変更
IPコアの生成をIP Parameter Editorを使用して行ったら、このフローを使用して、パラメーター設定の変更が指定したメモリーモード内でできます。ただし、メモリーモードを変更するには、IP Parameter Editorを使用してIPコアのコンフィグレーションと再生成を行います。
次の手順に従ってパラメーター設定を手動で変更してください。
- Verilogデザインファイルに移動します。 <project directory>/<project name_software version>/synth/<projectName_coreName_QuartusVersion_random>.vに移動します。
- デザインファイルのパラメーター設定を変更します。必ず、有効なパラメーター値のみをパラメーターと信号の項で指定されているとおりに使用してください。そうしないと、コンパイルエラーが発生します。
- デザインの合成を インテル® Quartus® Prime開発ソフトウェアで行います。
たとえば、次のコードでECC機能を有効にし、初期化ファイルを指定します。
altera_syncram_component.enable_ecc = "TRUE", altera_syncram_component.ecc_pipeline_stage_enabled = "FALSE", altera_syncram_component.init_file = "mif1.mif",
ECC機能を無効にして別の.mifファイルを指定するには、次のように変更します。
altera_syncram_component.enable_ecc = "FALSE", altera_syncram_component.ecc_pipeline_stage_enabled = "FALSE", altera_syncram_component.init_file = "mif2.mif",
RAMおよびROMのパラメーター設定
パラメーター名 | 選択可能な値 | 詳細 |
---|---|---|
operation_mode |
SINGLE_PORT DUAL_PORT BIDIR_DUAL_PORT QUAD_PORT ROM |
メモリーブロックの動作モード。 |
WIDTH_A | — | ポートAのデータ幅。 |
widthad_a | — | ポートAのアドレス幅。 |
widthad2_a | ポートAのアドレス2幅。 | |
numwords_a | — | ポートAのメモリーブロック内のデータワード数。 |
outdata_reg_a |
UNREGISTERED CLOCK1 CLOCK0 |
ポートAのデータ出力レジスター用クロック。 |
outdata_aclr_a |
NONE CLEAR1 CLEAR0 |
ポートAのデータ出力レジスターの非同期クリア。 outdata_reg_a パラメーターの設定がUNREGISTEREDの場合、このパラメーターによって出力ラッチのクリア・パラメーターが指定されます。 |
outdata_sclr_a |
NONE SCLEAR |
ポートAのデータ出力レジスターの同期クリア。 outdata_reg_a パラメーターの設定がNONEの場合、このパラメーターによって出力ラッチのクリア・パラメーターが指定されます。 |
width_byteena_a | — | ポートAのバイトイネーブル・バスの幅。この幅は、 width_a をバイトサイズで割った値に等しくなければなりません。デフォルト値の1が可能なのは、バイトイネーブルが使用されていない場合のみです。 |
WIDTH_B | — | ポートBのデータ幅。 |
widthad_b | — | ポートBのアドレス幅。 |
widthad2_b | — | ポートBのアドレス2幅。 |
numwords_b | — | ポートBのメモリーブロック内のデータワード数。 |
outdata_reg_b |
UNREGISTERED CLOCK1 CLOCK0 |
ポートBのデータ出力レジスター用クロック。 |
indata_reg_b |
CLOCK1 CLOCK0 |
ポートBのデータ入力レジスター用クロック。 |
address_reg_b |
CLOCK1 CLOCK0 |
ポートBのアドレスレジスター用クロック。 |
byteena_reg_b |
CLOCK1 CLOCK0 |
ポートBのバイトイネーブル・レジスター用クロック。 |
outdata_aclr_b |
NONE CLEAR1 CLEAR0 |
ポートBのデータ出力レジスターの同期クリア。 outdata_reg_a パラメーターの設定がUNREGISTEREDの場合、このパラメーターによって出力ラッチのクリア・パラメーターが指定されます。 |
outdata_sclr_b |
NONE SCLEAR |
ポートBのデータ出力レジスターの同期クリア。 outdata_reg_a パラメーターの設定がNONEの場合、このパラメーターによって出力ラッチのクリア・パラメーターが指定されます。 |
width_byteena_b | — | ポートBのバイトイネーブル・バスの幅。この幅は、 width_b をバイトサイズで割った値に等しくなければなりません。デフォルト値の1が可能なのは、バイトイネーブルが使用されていない場合のみです。 |
ram_block_type |
M20K MLAB AUTO |
メモリーブロックのタイプ。 |
byte_size |
5 8 9 10 |
バイトイネーブル・モードのバイトサイズ。 |
read_during_write_mode_mixed_ports |
DONT_CARE CONSTRAINT_DONT_CARE NEW_DATA OLD_DATA NEW_A_OLD_B |
Read-During-Writeモードの動作。
|
init_file |
*.mif *.hex |
初期化ファイル。 |
init_file_layout |
PORT_A PORT_B |
出力ファイルのレイアウト。 |
maximum_depth | — | メモリー・ブロック・スライスの深度。 |
clock_enable_input_a |
NORMAL BYPASS |
ポートAの入力レジスター用クロックイネーブル。 |
clock_enable_output_a |
NORMAL BYPASS |
ポートAの出力レジスター用クロックイネーブル。 |
clock_enable_input_b |
NORMAL BYPASS |
ポートBの入力レジスター用クロックイネーブル。 |
clock_enable_output_b |
NORMAL BYPASS |
ポートBの出力レジスター用クロックイネーブル。 |
read_during_write_mode_port_a |
NEW_DATA_NO_NBE_READ NEW_DATA_WITH_NBE_READ OLD_DATA DONT_CARE |
ポートAのRead-During-Write動作。 |
read_during_write_mode_port_b |
NEW_DATA_NO_NBE_READ NEW_DATA_WITH_NBE_READ OLD_DATA DONT_CARE |
ポートBのRead-During-Write動作。 |
ENABLE_ECC |
TRUE FALSE |
ECC機能を有効または無効にします。 |
ecc_pipeline_stage_enabled |
TRUE FALSE |
|
enable_coherent_read |
TRUE FALSE |
コヒーレント読み出し機能を有効または無効にします。
|
enable_force_to_zero |
TRUE FALSE |
Force-to-Zero機能を有効または無効にします。
|
width_eccencparity | 8 | Eccencparity 信号の幅。 |
eSRAM Intel FPGA IP
42個のeSRAMバンクが結合してチャネルを形成します。
8つのメモリーチャネルが結合してeSRAMシステムを形成します。
eSRAMシステムの機能
所与のeSRAMシステムでは、750 MHzの最大周波数を達成することができます。使用可能なeSRAMシステムの数は、使用中の インテル® Stratix 10® デバイスにより異なります。
eSRAMシステム内の各メモリーチャネルには書き込みポート1つと読み出しポート1つがあり、それによって同時読み出し/書き込み要求の処理がされます。各チャネルからアクセスするのはそれぞれのバンクに対してのみなので、各チャネルは隣接するチャネルから独立していることが保証されます。
eSRAMシステムの誤り訂正コード (ECC) を有効にすると、ユーザーがアクセスできるデータ容量が犠牲になります。ECCによるデータ整合性の向上には、書き込みデータのエンコードを拡張Hammingコードを使用して行い、読み出しデータのデコードをSingle-bit Error Correction, Double-bit Error Detection (SECDED) に対して行います。書き込みレイテンシーと読み出しレイテンシーは、ECCが有効か無効かにかかわらず同じです。
データ・コヒーレンシ機能はWrite Forwardingと呼ばれ、これを使用すると、同時書き込み/読み出しアクセス処理を同じeSRAMメモリー位置に対して行うことができます。書き込みポートの書き込みデータは読み出しポートに転送され、ターゲットSRAMバンクからは読み出されません。書き込みデータはターゲットのeSRAMバンクに書き込まれます。
低電力モードでは、静的電力の節約が1クロックサイクルのコストでできます。また、各チャネルによる未使用バンクのパワーダウンによって、電力をさらに節約できます。
eSRAMシステムに含まれるPLLでは、eSRAM動作に必要なクロックドメインをネイティブ駆動します。
eSRAMの仕様
機能 | 詳細 | 値 | 詳細 |
---|---|---|---|
クロック周波数5 |
-1 -2 -3 |
200 MHz - 750 MHz 200 MHz - 640 MHz 200
MHz -
500 MHz
6
|
— |
バンク容量 |
ECCなし DPAあり |
144 Kb 128 Kb |
各バンクは (2048) 2K x 72ビットです |
チャンネルあたりのバンク | — | 42 | — |
チャネル容量 |
ECCなし DPAあり |
5.90625 Mb 5.25 Mb |
— |
eSRAMあたりのチャネル | — | 8 | — |
eSRAM容量 |
ECCなし DPAあり |
47.25 Mb 42 Mb |
— |
インターフェイス・データ幅 |
ECCなし DPAあり |
x72 x64 |
最大幅 |
読み出しレイテンシー7 |
Normal Low Power |
10 +2 8 11 + 2 8 |
このレイテンシーは、ECCが有効か無効かにかかわらず固定です。 |
読み出しレイテンシー | — | 0 +1 fn_latency9 | 書き込みコマンドのゼロ・サイクル・レイテンシーがSRAMに対して発行されます。 |
電力 (eSRAMシステムあたり) |
工業用 拡張 |
1.15 W - 1.5 W 2.28 W - 3.31 W |
Low PowerモードからNormalモードへ。 |
- 466.51 MHz - 499.99 MHz
- 233.26 MHz - 249.99 MHz
eSRAM使用モデル
eSRAMコンフィグレーションは、FPGAコンフィグレーション後はスタティックと見なされます。eSRAMのリコンフィグレーションはユーザーモードに入った後はできません。
8つのメモリーチャネルすべてに備えられたインターフェイスは、共有する3つのファブリック・セクターに対するものです。フィッターでは、どのセクターでコアロジックとインターフェイス接続するかを選択します。これは、セクターすべてが各eSRAMで使用可能ではないからです。
リファレンス・クロック (refclk) ではLVDS規格のみをサポートしています。インスタンスの割り当てを設定するときは、 refclk に対して正しい規格を使用してください。インスタンスの割り当ての設定には、 refclk に対して正しい規格を使用する必要があります。
set_instance_assignment -name IO_STANDARD LVDS -to refclk
8つの各メモリーチャネルはeSRAMを構成し、未使用のバンクをパワーダウンさせることができます。ユーザー側で、eSRAM Intel FPGA IPコア内の希望の容量を選択しなければなりません。これは、未使用のバンクのコアはデフォルトでパワーダウンされているためです。
eSRAM Intel FPGA IPのパラメーター
パラメーター | 選択可能な値 | 詳細 |
---|---|---|
インターフェイス | ||
Interface
|
On/Off | eSRAMに対して有効にするチャネルを指定します。1つのeSRAMあたり8チャネルあります。
|
PLL | ||
PLL Reference Clock Frequency | — | PLL基準クロック周波数の指定をeSRAM PLLに対して行います。有効範囲はどのデバイスのスピードグレードでも10 - 325 MHzです。 |
PLL Desired Clock Frequency | — | PLLの希望出力クロック周波数を指定します。これはeSRAMに対する周波数です。有効範囲は200 - 750 MHzで、お使いのデバイスのスピードグレードによって異なります。 |
パラメーター | 選択可能な値 | 詳細 |
---|---|---|
チャネル幅と深度 | ||
How wide should the data bus be? | — | データバス幅を指定します。
|
How many words of memory? | — | 42個の使用可能なバンクの内、使用するメモリーバンクの数をeSRAMチャネルごとに指定します。バンクは2048ワード単位で指定され、各2048ワードは1バンクに相当します。指定したバンク数によってユーザーが使用できるアドレス幅が決まります。使用されていないバンクでは電源がオフになっており、パラメーター設定後のアクティベートはできません。 注: 有効になっていないバンクの処理を試みると、結果のデータはランダムになり、値なしになります。
|
チャネル機能 | ||
Enable ECC Encoder and Decoder | On/Off | ECCエンコーダーおよびデコーダーを有効にします。これは、eSRAMへの書き込みおよびeSRAMからの読み出しデータの整合性の維持に役立ちます。 注: ECCエンコーダーおよびデコーダーを有効にすると、最大データバス幅が減少し、72ビットから64ビットになります。この8ビットの差は、ECCエンコーダーおよびデコーダーによって必要とされるパリティー計算に使用されます。
|
Enable Dynamic ECC Encoder and Decoder Bypass | On/Off | ユーザーがECCエンコーダーやデコーダーを動的にバイパスすることができるように、 eccencbypass または eccdecbypass をアサートします。この機能はデバッグ目的に役立ちます。 |
Enable Write Forwarding | On/Off | 書き込み転送を有効にします。これにより、eSRAM内の同じアドレスへの書き込みおよび読み出し時のデータの一貫性が保証されます。書き込み転送では、書き込みポート上に存在するデータを取り出し、読み出しポートに読み出しデータとして転送します。 書き込み転送された読み出しデータに必要な時間は、通常の読み出しと同じです。読み出しロジックではターゲットアドレスに格納されているデータは使用しませんが、それでもそのデータはアドレスに書き込まれます。 |
Enable Low Power Mode | On/Off | Low Powerモードを有効にして消費電力を削減します。そのために、すべてのeSRAMメモリーバンクをライトスリープ状態にします。バンクがアクセスのターゲットになっている場合、その起動はアクセスの1サイクル前に行われます。バンクがスリープ状態に戻るのはアクセス完了後です。 Low Powerモードではメモリーバンクの内容は変更されません。Low Powerモードの欠点の1つは、読み出しレイテンシーが増えて、10+2から11+2になることです。 |
eSRAM Intel FPGA IPのインターフェイス信号
信号 | 入力/出力 | 幅 | 詳細 |
---|---|---|---|
refclk | 入力 | 1 | PLLリファレンス・クロックが提供されます。 |
esram2f_clk | 出力 | 1 | eSRAMからファブリックに提供されるコアクロック。このクロックを使用して、eSRAMとインターフェイス接続するコアロジックを駆動します。それ以外の場合は、適切な相互クロックドメイン回路が想定されます。 |
c<channel_number>_data_0 | 入力 | 1-72 |
|
c<channel_number>_wraddress_0 | 入力 |
17-11 の範囲 |
メモリーの書き込みアドレス。チャネル内で有効になっているバンクの数によって異なります。 注: 無効なアドレスに書き込んでも何も起こりません。ターゲットのバンクに電源が入っていないためです。
|
c<channel_number>_wren_n_0 | 入力 | 1 | wraddress ポートのアクティブLowのライトイネーブル入力。 |
c<channel_number>_rdaddress_0 | 入力 |
17-11 の範囲 |
メモリーの読み出しアドレス。チャネル内で有効になっているバンクの数によって異なります。 注: 無効なアドレスからの読み出しを試みると、返されるデータはランダムであり、値なしになります。
|
c<channel_number>_rden_n_0 | 入力 | 1 | wraddress ポートのアクティブLowリードイネーブル入力。 |
c<channel_number>_q_0 | 出力 | 72または64 |
|
ECCイネーブルド | |||
c<channel_number>_error_detect_0 | 出力 | 1 | アサートされるのは、ECCエラーがeSRAMから取得した読み出しデータで発生したときです。 |
c<channel_number>_error_correct_0 | 出力 | 1 | アサートされるのは、ECCエラーが正常に訂正されたときです。メモリーコンテンツの更新は、訂正されたデータではされません。 |
ダイナミックECCバイパス・イネーブルド | |||
c<channel_number>_eccencbypass_0 | 入力 | 1 | ECC Encoderの動的バイパスを行います。このポートは、アクティブのとき、パリティービットの挿入を8ビットMSBを通してデータポート (c<channel_number>_data_0[71:64]) から行うことができます。非アクティブの場合、パリティービットの生成は、内部ECCエンコーダーを使用して行われます。このポートが使用できるのは、c<channel_number>_ecc_byp_enable パラメーターが「TRUE」に設定されている場合のみです。 |
c<channel_number>_eccdecbypass_0 | 入力 | 1 | ECC Decoderの動的バイパスを行います。出力ポート (c<channel_number>_q_0[73:64]) からの8ビットMSBはパリティービットを表します。パリティービットはチェックされず、 c<channel_number>_error_detect_0 および c<channel_number>_error_correct_0 信号はアサートされません。このポートが使用できるのは、 c<channel_number>_ecc_byp_enable パラメーターが「TRUE」に設定されている場合のみです。 |
追加オプション | |||
c<channel_number>_sd_n_0 | 入力 | 1 | アクティブLow信号。チャネルの動的シャットダウンを行うこの信号によって、チャネル内のバンクのペリフェラル (アクティブLow) およびメモリーコアへの電力が遮断されます。このときメモリーデータは保持されません。 eSRAMシステムで使用するチャネル数を選択すると静的シャットダウンが行われるチャネルのほかに、実行時にチャネルの動的シャットダウンを行うこともできます。 注: メモリーコンテンツの保持は、チャネルのシャットダウン時は行われません。
|
iopll_lock2core | 出力 | 1 | eSRAM IOPLLロックステータス。
|
eSRAM Intel FPGA IPシミュレーション・ウォークスルー
IOPLLはeSRAM Intel FPGA IPコアに含まれており、クロックドメインを駆動して動作させます。テストベンチでは、IOPLLがロックされるのを待ってからシミュレーションを開始し、eSRAMに入るクロックが常に安定していることを確認する必要があります。IOPLLがロックされるまでの間eSRAMが正常に機能しないのは、不安定なクロック周波数のためです。ハードウェアでは、テストベンチでIOPLLロック信号をチェックする必要はありません。これは、IOPLLロック信号のアサートはコンフィグレーション・ステージで、ファームウェアによって処理されるからです。IOPLLロックの待機が必要なのは、ソフトウェア・シミュレーションで実行する場合のみです。
eSRAM IPデザインの出力ポート iopll_lock2core からのLOCK信号を確認します。シミュレーションが開始できるのは、 iopll_lock2core 信号がLOWからHIGHになった後のみです。
eSRAMタイミング図
FIFO Intel FPGA IP
- SCFIFO : シングルクロックFIFO
- DCFIFO : デュアルクロックFIFO (入力データと出力データに同じポート幅をサポート)
- DCFIFO_MIXED_WIDTHS : デュアルクロックFIFO (入力データと出力データに異なるポート幅をサポート)
FIFO Intel FPGA IPパラメーター
パラメーター | 選択可能な値 | 詳細 | ||
---|---|---|---|---|
パラメーター設定:Widths, Clk, Synchronization | ||||
How wide should the FIFO be? | — | データ幅およびqポートを指定します。 | ||
How deep should the FIFO be? Note: You could enter arbritary values for width | 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 | FIFOの深度を指定します。これは常に2の累乗です。 | ||
Do you want a common clock for reading and writing the FIFO? |
|
— | ||
パラメーター設定:SCFIFOオプション | ||||
Would you like
to disable any circuitry protection?
|
On/Off | — | ||
パラメーター設定:DCFIFO 1 | ||||
When you select No, synchronize reading and writing to 'rdclk' and 'wrclk', respectively. Create a set of full/empty control signals for for each clock., the following options are available: Total latency, clock synchronization, metastability protection, area, and fmax options must be set as a group. Total latency is the sum of two write clock rising edges and the number of read clocks selected below. Which option(s) is most important to the DCFIFO? (Read clk sync stages, metastability protection, area, fmax) Which type of optimization do you want?
|
On/Off | 合計レイテンシー、クロック同期、メタスタビリティ保護、面積、およびfmaxを指定します。
|
||
More Options | When you select
Best metastability protection, best
fmax, unsynchronized clock, the following option is
available:
|
3、4、5、6、7、8、9 | 同期ステージの数を指定します。 | |
Timing
Constraint
|
On/Off | SDCファイルを正しいタイミング制約で生成します。 エンベデッド set_false_path アサインメントは無効です。新しいタイミング制約の構成は、set_net_delay 、 set_max_skew 、 set_min_delay 、 および set_max_delay です。タイミング制約の使用方法の詳細に関しては、ユーザーガイドを参照してください。 | ||
パラメーター設定 : DCFIFO 2 | ||||
When you select No, synchronize reading and writing to 'rdclk' and 'wrclk', respectively. Create a set of full/empty control signals for for each clock., the following options are available: Which optional output control signals do you want? usedw[] is the number of words in the FIFO. |
On/Off | |||
Read-side
Note: These signals are syncronous to 'rdclk'. |
||||
Write-side
Note: These signals are syncronous to 'wrclk'. |
||||
More Options |
|
On/Off | ||
パラメーター設定 : Rdreq Option, Blk Type | ||||
Which kind of read access do you want with the rdreq signal? |
|
FIFOがLegacyモードか、Show-aheadモードかを指定します。
|
||
What should the memory block type be |
|
メモリーブロックのタイプを指定します。選択可能なメモリーブロックのタイプは、ターゲットデバイスによって異なります。 | ||
Set the maximum block depth to | Auto, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 | ワード内の最大ブロック深度を指定します。 | ||
Reduce RAM usage (decreases speed and increases number of Les). Available if data width is divisible by 9. | On/Off | |||
パラメーター設定 : Optimization, Circuitry Protection | ||||
Would you like to register the output to maximize the performance but use more area? |
|
RAM出力を登録するかどうかを指定します。 | ||
Implement FIFO storage with logic cells only, even if the device contains memory blocks. | On/Off | FIFOストレージの実装をロジックセルのみでするかどうかを指定します。 | ||
Would you like
to disable any circuitry protection (overflow checking and underflow
checking)? If not required, overflow and
underflow checking can be disabled to improve performance.
|
On/Off | オーバーフローに対する回路保護を無効にするかどうかを指定します。 | ||
Would you like
to enable ECC?
|
On/Off | エラーチェックおよび訂正機能を有効にするかどうかを指定します。 |
リセット手法
電源投入時、 インテル® Stratix® 10デバイスのレジスターは未定義の電源状態およびリセット状態です。正常な機能を保証するため、FIFOのリセットはコンフィグレーション完了時に、 Intel FPGA IP sclr または aclr のいずれかの信号をアサートして行います。リセットが不要なのは、 sclr または aclr 信号がFIFO Intel FPGA IPコアで使用されていない場合です。
FIFO2 Intel FPGA IP
FIFO2 Intel FPGA IPコアのFIFO機能が主に適用されるのは、データ・バッファリング・アプリケーションです。これは、同期または非同期クロックドメインの先入れ先出しデータフローに準拠しています。
機能 | Intel FPGA IPコア | |
---|---|---|
FIFO | FIFO2 | |
リード・レイテンシー | rdreq 信号のアサート後、0 - 1クロックサイクル。 | rdreq 信号のアサート後、3 - 4クロックサイクル。 |
読み出し有効 | r_empty 信号がLowのとき | r_valid 信号がHighのとき |
Show-aheadモード | サポートあり | サポートなし |
深度 (D) と幅 (W) のコンフィグレーション | ユーザーの要件による | ハード・メモリー・ブロックの倍数のみ (M20Kの場合は32W x 512D、MLABの場合は20W x 32D) |
出力データ初期状態 | 0 | 不明 |
フラッシング | 不要 | 最低32の低速クロックサイクルのフラッシュが必要 |
読み出し操作の前に、アプリケーション・データはまず (部分的または完全に) FIFO2 Intel FPGA IPコアに書き込まれます。データ読み出し動作は、長い連続バーストまたはシングルクロックの読み出しになります。特定の書き込みまたは読み出しの制限はありませんが、レイテンシー発生のため、帯域幅の使用率の効率は、短い書き込みや読み出しに対して低下します。
FIFO2 Intel FPGA IPコアの読み出しインターフェイスが適しているのは、バックプレッシャーを実行しないアプリケーションや、下流に「カスケード」バッファーのあるアプリケーションです。
例 :
- MAC RXユーザー・インターフェイス。通常バックプレッシャーをかけることはできず、常時読み出しと同等です。
- MAX TX内部データパスと併用してNative PHY FIFOを強化します。これにより、FIFO読み出し動作の導出はNative PHY FIFOの部分的フルステータスから実行できます。
ユーザー・アプリケーションでは、FIFO2 Intel FPGA IPコアの読み出しインターフェイスへの接続を、直接外部の小さなSCFIFO (または類似のストレージバッファー) に対して行い、読み出しからデータへのレイテンシーをゼロに変更することができますが、Fmaxとリソースが犠牲になります。
実際には、すべてのクロックの動作は数百MHzで実行されます。これは、FIFO2 Intel FPGA IPコアは高度にパイプライン化され非常に高いFmaxで動作するのと、レイテンシーが長く低速クロックには適していないからです。
コンフィグレーション方法
方法 | 詳細 |
---|---|
FIFO2パラメーター・エディターを使用する。 | インテルでは、この方法を使用したFIFO2
Intel
FPGA IPコアの構築をお勧めしています。これは、FIFO2
Intel
FPGA
IPコアのコンフィグレーションおよび構築を効率的に行う方法です。FIFO2パラメーター・エディターのオプションを使用すると、FIFO2
Intel
FPGA IPコアのコンフィグレーションを簡単に行うことができます。 FIFO2 Intel FPGA IPコアのパラメーター・エディターへのアクセスは、IPカタログのBasic Functions > On Chip Memory > FIFO2で行います。10 |
FIFO2 Intel FPGA IPコアを手動インスタンス化する。 | この方法を使用するのは、ユーザーがエキスパートである場合のみです。この方法ではIPコアの詳細仕様の知識が必要とされます。使用する入力ポートと出力ポート、および割り当てられたパラメーター値が有効で、ターゲットデバイス用にインスタンス化したFIFO2Intel FPGA IPコアに対して使用できることを確認してください。 |
Fmaxターゲット測定方法
指定されたFmaxターゲットの測定には次の条件を使用します。
- IPがスタンドアロン・コンポーネントとしてコンパイルされ、ラッパーの中にラップされる。
- ラッパーに備えられた1つのリセット不可フロップ層で、クロックを除くすべてのラッパー入力ポートと出力ポートを登録できる。
- ラッパーフロップ層の保持には合成属性を使用する。
(* altera_attribute = {"-name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON; -name ADV_NETLIST_OPT_ALLOWED NEVER_ALLOW"} *)
- クロックを除くすべてのラッパーポートが仮想ピンとして設定される。
パフォーマンスに関する考慮事項
幅の広いFIFOの実装には、ビルディング・ブロックの幅の狭いインスタンスを複数で使用するか、または幅の広いインスタンスを単一で使用します。選択は、経験的データに基づいてするか、あるいはパラメーターを通じてします。
動作 | 推定パイプステージ (レイテンシー) |
---|---|
ストレージで使用可能なデータへの書き込み | 約2読み出しクロック |
書き込みポインターのバイナリーからグレーへの変換 | 約2読み出しクロック |
書き込みポインターの読み出しロジックへのクロスオーバー | 約4読み出しクロック |
書き込みポインターのグレーからバイナリーへの変換 | 約2読み出しクロック |
読み出しポインターと書き込みの比較結果 | 約2読み出しクロック |
使用可能なデータへのユーザー読み出し | 約6読み出しクロック |
FIFO2 Intel FPGA IPの機能
FIFO2 Intel FPGA IPコアをDCFIFOまたはSCFIFOとしてコンフィグレーションするには、FIFO2 Intel FPGA IPコアのパラメーター・エディターを使用します。FIFO2 Intel FPGA IPコアのコンフィグレーションをSCFIFOとして行う場合、関連するクロック・ドメイン・クロッシング (CDC) 構造は合成されません。
次の図で示しているのは、FIFO2 Intel FPGA IPコアの読み出しおよび書き込み動作のタイミング図です。
FIFO2の仕様
機能 | ストレージタイプ | |
---|---|---|
M20K | MLAB | |
Error Checking and Correcting (ECC) | 常時11 | なし |
Read-out Interface |
Avalon ST non-zero readLatencyに類似 各r_reqがアサートされるたびに、r_validでは取得する (および取得する必要がある) 有効なデータがLクロック後にあるかどうかを示します。 L = 6 |
Avalon ST non-zero readLatencyに類似 各r_reqがアサートされるたびに、r_validでは取得する (および取得する必要がある) 有効なデータがLクロック後にあるかどうかを示します。 L = 5 |
Width (bits) |
ユーザーデータ幅にハードリミットはありませんが、内蔵RAMブロックは常に32b x Nです。ここではN > 0です。 最大= 4096b デフォルト = 1 |
ユーザーデータ幅にハードリミットはありませんが、内蔵RAMブロックは常に20b x Nです。ここではN > 0です。 最大= 4080b デフォルト = 1 |
Depth | 512 | 32 |
Depth Stitching | なし。ユーザーは複数のFIFOをカスケード接続できます。 | なし。ユーザーは複数のFIFOをカスケード接続できます。 |
Targeted Performance |
インテル® Stratix® 10 bin1プロダクション・デバイス 32bx512 : 最大850 MHz 512bx512 : 最大700 MHz |
インテル® Stratix® 10 bin1プロダクション・デバイス 20bx32 : 最大850 MHz 512bx32 : 最大700 MHz |
Almost full | なし。ユーザーは「Write Used」からこれを派生させることができます | なし。ユーザーは「Write Used」からこれを派生させることができます |
Almost empty | なし。ユーザーは「Read Used」からこれを派生させることができます | なし。ユーザーは「Read Used」からこれを派生させることができます |
Read Used | あり。インフライト・データを除く遅延RAMブロックワードの測定 | あり。インフライト・データを除く遅延RAMブロックワードの測定 |
Write Used | あり。インフライト・データを除く遅延RAMブロックワードの測定 | あり。インフライト・データを除く遅延RAMブロックワードの測定 |
RAM with registered read output | 常時 | 常時 |
Write full prevention | 常時。internal almost fullによる。 | 常時。internal almost fullによる。 |
Read empty prevention | 常時 | 常時 |
Output data initial states | 不明 | 不明 |
Reset Scheme | リセット不可のフロップが含まれています。状態フラッシュが必要です。 | リセット不可のフロップが含まれています。状態フラッシュが必要です。 |
RTL | 暗号化 | 暗号化 |
FIFO2 Intel FPGA IPパラメーター
パラメーター | 選択可能な値 | 詳細 | |
---|---|---|---|
What type of FIFO you prefer? |
|
FIFOのタイプを指定します。 | |
How wide should the FIFO be? | — | データ幅およびqポートを指定します。 | |
RAM block type |
|
FIFOに使用するRAMブロックの種類を指定します。 | |
パラメーター設定 : Reset Option | |||
Enable Asynchronous Clear (ACLR) | On/Off | 書き込みと読み出しの非同期リセットを指定します。 | |
パラメーター設定 : Performance Optimization | |||
Enable per RAM
block preserve/duplication for:
* Note: This will typically increase Fmax at the expense of resources. |
On/Off | ブロックごとの保持/重複を有効にします。
|
|
When you select
Dual-clock, the
following options are available:
|
3、4 | マルチフロップ・シンクロナイザー・チェーンの長さを書き込みおよび読み出しグレイコード・ポインターに対して指定します。 |
FIFO2パラメーターの設定
パラメーター | 詳細 |
---|---|
DATAWIDTH |
FIFO Write and Read Data
Width.
ユーザー幅の細分度はRAMブロックタイプに応じて次のようになります。
これにより、最大4096ビット幅が可能になります。これは種々のアプリケーションにとって十分です。 未使用のビット (たとえば、情報を何も運んでいないビット) はすべて固定する必要があります。たとえば、ユーザーデータ幅が20ビットでM20K RAMブロックを使用している場合、12個の未使用ビットが固定されることになります。 デフォルト値は n に対して1です。 |
SCFIFO_MODE |
SCFIFO Mode.
FIFOをSCFIFOモードで動作させるかどうかを指定します。このモードでは、書き込みクロックドメインと読み出しクロックドメインの間のクロック・クロッシング・ロジック構造は削除されます。
|
RAM_BLK_TYPE |
RAM Block Type.
メインFIFOストレージとして使用するエンベデッドRAMブロックを指定します。
|
USE_ACLR_PORT |
Use Asynchronous Clear
Port.
IPの非同期リセットポート ( w_aclr および r_aclr など) を有効にするかどうかを指定します。
|
WRPTR_GRY_SYNC_CHAIN_LEN |
Write Gray-Code Pointer
Synchronizer Chain Length.
Write Gray-Code Pointerの r_clk ドメインへの同期に使用するフロップステージの数を指定します。
|
RDPTR_GRY_SYNC_CHAIN_LEN |
Read Gray-Code Pointer
Synchronizer Chain Length.
Read Gray-Code Pointerの w_clk ドメインへの同期に使用するフロップステージの数を指定します。
|
RAM_WRPTR_DUPLICATE |
RAM Write Address
Duplication.
RAM Write Addressと関連ロジック (適切な場合) をRAMブロックごとに複製するかどうかを指定します。
|
RAM_RDPTR_DUPLICATE |
RAM Read Address
Duplication.
RAM Write Addressと関連ロジック (適切な場合) をRAMブロックごとに複製するかどうかを指定します。
|
FIFO2 Intel FPGA IPインターフェイス信号
SCFIFO信号
信号 | 入力/出力 | 要/不要 | 詳細 |
---|---|---|---|
clk | 入力 | 要 | FIFO書き込みクロックと読み出しクロック。 |
aclr | 入力 | 不要 | アクティブHighのリセット信号。clk ドメイン・フリップフロップの非同期クリアピンを供給します。 このリセットの同期化はIP内ではされていないため、ユーザーロジックの clk への同期ディアサートが、適切な場合にされるようにする必要があります。 この信号が有効なのは、USE_ACLR_PORTが有効な場合のみです。
|
sclr | 入力 | 不要 | アクティブHighのリセット信号。clk ドメイン・フリップフロップの同期クリアピンを供給します。リセットシーケンスの要件に従ってください。
|
w_req | 入力 | 要 | FIFO write request。この信号はリセット中は非アクティブになることが想定されます。
|
w_data[FIFO_WIDTH-1:0] | 入力 | 要 | FIFO Write Data。このバスで表すデータがFIFOに格納されるのは、書き込みリクエストがあるときです。この値がFIFOによって取得されるのは、 w_req がアクティブで、かつFIFOが一杯ではない (つまり、 w_full = 1) の場合のみです。 |
w_full | 出力 | 不要 | FIFO Write Full。この信号は、FIFOに残っているスペースが不足しそうかどうかを示します。この信号がアサートされると、それ以上の w_req は無視されます。 注: 内部パイプライン・ステージでのFmax改善により、実際に使用可能なスペースは、データ損失防止のためにコンフィグレーションされているスペースよりも数エントリー分少なくなります。
|
r_req | 入力 | 要 | FIFO Read Request / Read Ready。可能な限り高いFmaxを達成するため、この信号の使用モデルは、通常のデータ準備レイテンシーFIFOへのゼロ読み出しとは少し異なります。 ユーザー・アプリケーションで想定されるのは、適切なタイミングでこの信号をアサートして、今から数クロックサイクル (L) 後にデータを取り込む準備ができていることを示すことです。Lクロック後に r_valid がアサートされるのは使用可能なデータがある場合で、ディアサートされるのはr_data ポートに使用可能なデータがない場合です。 これは、Avalon STのゼロ以外の読み出しレイテンシー有効/準備完了インターフェイスのセマンティクスに類似しており、十分なバッファースペースがダウンストリーム・ユーザー・アプリケーションに割り当てられて、インフライト・データが消費されることを意味します。
|
r_data[FIFO_WIDTH-1:0] | 出力 | 要 | FIFO Read Data。このバスで表されるデータが対応する読み出しリクエストは、数クロックサイクル早く発生したものです。読み出しデータがクロックサイクルで有効なのは、 r_valid がアサートされたときのみです。 |
r_empty | 出力 | 不要 | FIFO Read Empty。データワードがFIFOにまだ残っているかどうかを示します。これは事実上 r_usedw == 0のパイプライン化されたバージョンです。 この信号がユーザー・アプリケーションによって使用されるのは、監視目的または一連の読み出しリクエストの開始のためです。
|
r_valid | 出力 | 不要 | FIFO Read Data Valid。 r_data 出力ポートのデータが有効かどうかを示します。各 r_valid アサートが対応するのは、以前の読み出しリクエスト/準備完了です。データ・レディー・レイテンシーに対する読み出しリクエストが内部パイプライン・ステージによってもたらされるため、この信号は、 r_empty がアサートされた後も数クロックの間アサートされる可能性があります。 r_valid がアサートされると、データをユーザー・アプリケーションで取得する必要があります。そうでなければ、データは失われます。 r_valid および r_req インターフェイスは、ゼロ以外の読み出しレイテンシーを持つAvalon STの有効および準備完了セマンティクスに類似しています。
|
w_ready | 出力 | 要 | アクティブLowの書き込み保護信号。書き込みポートでのデータのゲートを遅延 w_full がアサートされる前に行います。 |
DCFIFO信号
信号 | 入力/出力 | 要/不要 | 詳細 |
---|---|---|---|
w_clk | 入力 | 要 | FIFO Write Clock。 |
w_aclr | 入力 | 不要 | アクティブHighのリセット信号。w_clk ドメイン・フリップフロップの非同期クリアピンが供給されます。 このリセットの同期化はIP内ではされていないため、ユーザーロジックの w_clk への同期ディアサートが適切な場合にされるようにする必要があります。 この信号が有効なのは、USE_ACLR_PORTが有効な場合のみです。
|
w_sclr | 入力 | 不要 | アクティブHighのリセット信号。w_clk ドメイン・フリップフロップの同期クリアピンを供給します。リセットシーケンスの要件に従ってください。
|
r_clk | 入力 | 要 | FIFO Read Clock。 |
r_aclr | 入力 | 不要 |
アクティブHighのリセット信号。 r_clk ドメイン・フリップフロップの非同期クリアピンが供給されます。 このリセットはIP内では同期化されないため、ユーザーロジックの r_clk への同期ディアサートが適切なときにされるようにする必要があります。リセットシーケンスの要件に従ってください。 この信号が有効なのはUSE_ACLR_PORTが有効な場合のみです。
|
r_sclr | 入力 | 不要 | アクティブHighのリセット信号。r_clk ドメイン・フリップフロップの同期クリアピンが供給されます。リセットシーケンスの要件に従ってください。
|
w_req | 入力 | 要 | FIFO書き込みリクエスト。この信号はリセット中は非アクティブになることが想定されます。
|
w_data[FIFO_WIDTH-1:0] | 入力 | 要 | FIFO Write Data。このバスで表すデータがFIFOに格納されるのは、書き込みリクエストがあるときです。この値がFIFOによって取得されるのは、 w_req がアクティブで、かつFIFOがフルではない (つまり、 w_full = 1) の場合のみです。 |
w_full | 出力 | 不要 | FIFO Write Full。この信号では、FIFOに残っているスペースが不足しそうかどうかを示します。この信号がアサートされると、それ以上の w_req は無視されます。 注: 内部パイプライン・ステージでのFmax改善により、実際に使用可能なスペースは、データ損失防止のためにコンフィグレーションされているスペースよりも数エントリー分少なくなります。
|
r_req | 入力 | 要 | FIFO Read Request / Read Ready。可能な限り高いFmaxを達成するため、この信号の使用モデルは、通常のデータ準備レイテンシーFIFOへのゼロ読み出しとは少し異なります。 ユーザー・アプリケーションで想定されるのは、適切なタイミングでこの信号をアサートして、今から数クロックサイクル (L) 後にデータを取り込む準備ができていることを示すことです。Lクロック後に r_valid がアサートされるのは使用可能なデータがある場合で、ディアサートされるのは r_data ポートに使用可能なデータがない場合です。 これは、Avalon STのゼロ以外の読み出しレイテンシー有効/準備完了インターフェイスのセマンティクスに類似しており、十分なバッファースペースがダウンストリーム・ユーザー・アプリケーションに割り当てられて、インフライト・データが消費されることを意味します。
|
r_data[FIFO_WIDTH-1:0] | 出力 | 要 | FIFO Read Data。このバスで表されるデータが対応する読み出しリクエストは、数クロックサイクル早く発生したものです。読み出しデータがクロックサイクルで有効なのは、 r_valid がアサートされたときのみです。 |
r_empty | 出力 | 不要 | FIFO Read Empty。データワードがFIFOにまだ残っているかどうかを示します。これは事実上 r_usedw == 0のパイプライン化されたバージョンです。 このシグナルがユーザー・アプリケーションによって使用される場合は、監視目的または一連の読み出しリクエストの開始のためです。
|
r_valid | 出力 | 不要 | FIFO Read Data Valid。 r_data 出力ポートのデータが有効かどうかを示します。各 r_valid アサートが対応するのは、以前の読み出しリクエスト/準備完了です。データ・レディー・レイテンシーに対する読み出しリクエストが内部パイプライン・ステージによってもたらされるため、この信号は、 r_empty がアサートされた後も数クロックの間アサートされる可能性があります。 r_valid がアサートされると、データをユーザー・アプリケーションで取得する必要があります。そうでなければデータは失われます。 r_valid および r_req インターフェイスは、ゼロ以外の読み出しレイテンシーを持つAvalon STの有効および準備完了セマンティクスに類似しています。
|
w_ready | 出力 | 要 | アクティブLowの書き込み保護信号。書き込みポートでのデータのゲートを遅延 w_full がアサートされる前に行います。 |
リセットおよびクロックの手法
クロックドメイン
- w_clk
- r_clk
たとえばDCFIFOのデフォルトIP設定では、2つのクロックドメインは適切なクロック・クロッシング構造と非同期であると見なされます。
- 関連するクロック・クロッシング構造ロジックはすべて合成されません。
- W_CLKと R_CLK 信号は両方とも同じソースに結び付けられ、同期的にタイミングが取られます。
リセット
Fmaxを最大にするため、リセット不可能なフロップ (またはレジスター) は、未定義の初期電源およびリセット状態にあります。特定のインターフェイス信号のリセット状態が指定されていない限り、リセット不可能なフロップが電源投入時またはリセット時に特定の値にリセットされるとは仮定できません。リセットシーケンスの一環として、FIFO内部失効状態のフラッシュを、通常の動作の開始または再開の前に行う必要があります。
FIFO2 Intel FPGA IPコアでは、非同期クリアポートと同期クリアポートの両方をクロックドメインごとに公開し、ユーザー・アプリケーションでリセットの開始や終了などのリセットシーケンスがどのように機能するかを完全に制御できるようにします。 w_clk と r_clk の両方のクロックドメインのクリアイベントは同じソースから発生するため、この両方のドメインのロジックは、名目上一緒にリセットされたりリセット解除されたりされます。たとえば、ロジックのリセットは、w_clk ではなくr_clk など、1つのクロックドメインですることもできます。ただし、FIFOフィル・レベル・ステータスなど一部の信号では、正常な状態に落ち着くまでに時間がかかります。この場合、ユーザー・アプリケーションでは、これらの信号によって意図しない副作用が起こらないようにする必要があります。
FIFO2 Intel FPGA IPリセットのガイドライン
次のガイドラインに従って、FIFO Intel FPGA IPコアの適切なリセットを行ってください。
- 非同期クリアは、グローバルIPリセットイベントとして扱われ、優先順位が最も高くなります。
- 非同期クリアと同期クリアの両方が実装されている場合、
- 非同期クリアがアサートされると、関連する同期クリア (クロックドメイン用) もアサートする必要があります。
- 非同期クリアのディアサートは、同期クリア (クロックドメイン用) のディアサート前にする必要があります。同期クリアを使用して、IPのリセット解除時期を制御します。
- 非同期クリア期間は1クロックと短い可能性がありますが、同期クリアの持続時間は最低32*低速クロックサイクルの間 (クロックは必ずトグルしている状態で) 維持して、IP内部失効状態がすべて確実にフラッシュされるようにする必要があります。
- 非同期または同期クリアのみが実装されている場合、クリアアサートの持続期間は最低32*低速クロックサイクルの間 (クロックは必ずトグルしている状態で) 維持して、IP内部失効状態がすべて確実にフラッシュされるようにする必要があります。
- すべてのクロックが、非同期または同期クリアアサート解除の前に有効にトグルしている必要があります。
- 一部のリセット信号は内部でパイプライン化されているため、書き込み動作の開始は、リセットのアサート解除後8*クロック以内に行わないでください。
Stratix 10エンベデッド・メモリーのデザイン例
FIFOおよびFIFO2のデザイン例
このデザイン例は、FIFOおよびFIFO2 Intel FPGA IPコアのインスタンス化方法と想定されるシミュレーション動作に関するリファレンスとして使用できます。
デザイン例の生成
- デザイン例をDesign Storeからダウンロードする。
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアを使用してファイルを復元するには、Open Projectを選択して .par ファイルを選択します。 OKをクリックしてプロジェクトをロードします
-
プロジェクトが正常にロードされたらProject
NavigatorウィンドウのIP
componentタブに移動します。FIFO
Intel
FPGA IP
コア
(fifo1) をダブルクリックしてIP Parameter
Editorを開き、IPコンフィグレーションを調べてFIFO IPファイルを再生成します。
-
IP Parameter Editorウィンドウで、次のパラメーターの設定が正しいか確認します。
パラメーター 値 How wide should the FIFO be? 20 bits How deep should the FIFO be? 32 words Read and Write Clock Single clock Signals full, empty, usedw[] Use Asynchronous Clear Yes Use Synchronous Clear Yes Memory Block Type MLAB FIFO mode Normal - このIPコアのHDLファイルを生成するには、Generate HDLをクリックします。 Generationダイアログボックスが表示されます。
-
出力ファイルの生成オプションを指定し、Generateをクリックします。合成ファイルおよびシミュレーション・ファイルが仕様に応じて生成されます。
- FIFO2 Intel FPGA IPコア (fifo2) の場合はステップ3から6までを繰り返し、IPコンフィグレーションを調べてFIFO2 IPファイルを再生成します。
- FIFOとFIFO2 Intel FPGA IP両方のHDLファイル生成が完了したら、Tools > Generate Simulator Setup Script for IPをクリックして複合シミュレーター・セットアップ・スクリプトを生成します。このスクリプトによって、FIFOおよびFIFO2 IPシミュレーションに必要なすべてのライブラリー・ファイルを自動入手します。デフォルトのディレクトリーを使用し、OKをクリックしてファイルを生成します。
デザイン例のシミュレーション
- ModelSimを起動してシミュレーションを続行します。ModelSimでディレクトリーをこのプロジェクトを保存したパスに変更するには、<file>-<change directory> に移動します。
-
Transcripウィンドウで次のコマンドを入力してシミュレーションを開始します。
source sim_top.tcl
Tclスクリプトでは、すべてのソースファイルとライブラリー・ファイルをコンパイルし、シミュレーションを開始します。
シミュレーション結果
パート1 (0 - 100 ns)

パート2 (100 - 480 ns)


- usedw signal : 書き込み要求信号 (例えば i_wrreq ) がアサートされた後、 usedw 信号 (例えば o_usedw1 ) では、カウントが開始され、このときデータはFIFOに格納されます。FIFO2には usedw 信号が書き込み (例えば o_w_usedw2 ) と読み出し (o_r_usedw2) の両サイドにあります。書き込み usedw でのカウント開始は3サイクルの遅延後で、さらに8サイクルかけて読み出し usedw 信号が更新されます。
- Full and empty signals : FIFOフル信号 (例えば o_full1 ) がHighにアサートされるのは、FIFOのメモリーがフルになった後です。FIFO2フル信号 (例えば o_full2 ) がHighにアサートされるのは、 o_w_usedw2 信号と同じサイクルです。これによりメモリーがフルであることが示されます。注意が必要なのは、フル信号がアサートされる3サイクル前に ready 信号はすでにLowにアサートされ、これは想定されるFIFO2のパイプライン動作であるということです。FIFO空信号 (例えば o_empty1 ) は、1クロックサイクルのレイテンシーしかなく、Lowにアサートされるのは最初のデータがメモリーに書き込まれた後です。一方、FIFO2では3サイクルの遅延を取って、その空信号 (例えば o_empty2 ) が空でなくなったことを示します。これは、 o_r_usedw2 信号が1に上昇した後です。

- 読み出し動作では、FIFO o_usedw1 信号は、読み出し要求信号と同じ正のクロックエッジに反映されます。FIFO2の場合、2サイクルのレイテンシーが o_r_usedw2 信号に反映される前に観測されます。また、さらに9サイクルが o_r_usedw2 から o_w_usedw2 への伝播にかかります。

-
Ready signal : 有効なリセットスキームの後、FIFO2準備完了信号 (例えば o_ready2 ) はHighにアサートされ、これにより書き込み動作の準備ができたことが示されます。注: FIFOにはこの信号はありません。
-
Valid signal: FIFO有効信号 (例えば o_valid2 ) では、読み出されるデータが有効であることが示されます。有効な読み出し動作の場合、 o_valid2 信号がHighにアサートされるのは、2サイクルの遅延後で、読み出し要求 (例えば i_rdreq ) 信号のアサートを伴います。注: FIFOにはこの信号はありません。
パート3 (480 - 700 ns)
シミュレーションのこのセクションでは、有効なリセット条件とそれに続くread-during-write動作について紹介します。リセット後、書き込み要求信号 (例えば i_wrreq ) がHighにアサートされます。数サイクル後、 i_rdreq 信号もHighにアサートされます。FIFOの場合、使用されているワード数はデータ読み出し中は維持され、これは想定される動作に従っています。この場合注意が必要なのは、FIFO2ではデータの読み出しは行われないということです。これは、 o_empty2 信号がLowにアサートされていないためで、FIFO2の有効な読み出し動作ではありません。
パート4 (700 ns以降)
シミュレーションのこのセクションでは、FIFOとFIFO2の動作の観察を異なるシナリオで行います。FIFO2 o_r_usedw2 信号でカウントダウンが2までされると、 o_empty2 信号がHighにアサートされ、内部チェックが行われます。2サイクル後、 o_empty2 信号が空でない状態に戻るのは、ステータスの検証後です。このメカニズムは、FIFO2用に特別にデザインされており、その多重パイプライン性に従っています。
インテル Stratix 10 エンベデッド・メモリー ユーザーガイド・アーカイブ
IPコアバージョン | ユーザーガイド |
---|---|
18.0 | Intel Stratix 10 Embedded Memory User Guide |
17.1 | Intel Stratix 10 エンベデッド・メモリー・ユ ーザーガイド |
17.0 | Intel Stratix 10 Embedded Memory User Guide |
インテル Stratix 10 エンベデッド・メモリー ユーザーガイド改訂履歴
ドキュメント・バージョン | インテル® Quartus® Prime バージョン | 変更内容 |
---|---|---|
2018.12.24 | 18.1 |
|
2018.10.24 | 18.1 |
|
ドキュメント・バージョン | インテル® Quartus® Prime バージョン | 変更内容 |
---|---|---|
2018.05.07 | 18.0 |
|
|
日付 | バージョン | 変更内容 |
---|---|---|
2017年12月 | 2017.12.04 | 「インテルStratix 10デバイスのエンベデッド・メモリー容量と分布」の表を更新しました。インテルStratix 10 GX、インテルStratix 10 MX、およびインテルStratix 10 SXのバリアントの合計RAMビット (Mビット) を訂正しました。 |
2017年11月 | 2017.11.06 |
|
2017年5月 | 2017.05.08 |
|
2016年10月 | 2016.10.31 | 初版 |