Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
この翻訳版ドキュメントのメンテナンスは終了しております。
この文書には、古いコンテンツや商標が含まれている場合があります。
最新情報につきましては、次のリンクから英語版の最新資料をご確認ください。
https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html
Please take note that this document is no longer being maintained. It may contain legacy content and trademarks which may be outdated.
Please refer to English version for latest update at https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html
Altera Corporation - Preliminary 4–12007年 3月 暫定サポート
この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用ください。設計の際には、最新の英語版で内容をご確認ください。
4. Cyclone IIIデバイスのメモリ・ブロック
はじめに Cyclone® IIIデバイスは、アルテラの Cyclone IIIデバイス・デザインのオンチップ・メモリの要件に対応するエンベデッド・メモリ構造を特長としています。エンベデッド・メモリ構造は、M9Kメモリ・ブロックのカラムで構成され、RAM、シフト・レジスタ、ROM、FIFO(First-InFirst-Out)バッファなど、様々なメモリ機能を提供するようにコンフィギュレーションできます。M9Kメモリ・ブロックは、最大 260 MHzの同期動作で最大 3.98 Mビットの RAMを提供します(集積度別のトータル RAMビット数については、表 4–2を参照)。
概要 M9Kブロックは、以下の機能をサポートしています。■ 利用可能なロジックを減らすことなく、最大 3.98 Mビットの RAMを
使用可能■ 1ブロックあたり 8,192メモリ・ビット(パリティを含め 1ブロックあたり 9,216ビット)
■ 各ポートに対する独立したリード・イネーブルおよびライト・イネーブル信号
■ パック・モードにおいて、M9Kメモリ・ブロックを 2つの 4.5 Kシングル・ポート RAMに分割
■ 可変ポート・コンフィギュレーション■ すべてのポート幅に対するシングル・ポートおよびシンプル・デュアル・モードのサポート
■ トゥルー・デュアル・ポート(1リードおよび 1ライト、2リード、または 2ライト)動作
■ ライト中のデータ入力マスキング用のバイト・イネーブル■ 各ポート(ポート Aおよび B)に対する 2つのクロック・イネーブル・
コントロール信号■ RAM および ROM モードでメモリの内容をプリロードするための初
期化ファイル■ 最大 260 MHz同期動作
表 4–1に、M9Kメモリでサポートされる機能をまとめます。
表 4–1. M9Kメモリ機能の要約(1 /2)
機能 M9Kブロック
最大性能 260 MHz
CIII51005-1.0
4–2 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
トータル RAMビット数(パリティ・ビットを含む)
9,216
コンフィギュレーション(深さ ×幅) 8192 × 14096 × 22048 × 41024 × 81024 × 9512 × 16512 × 18256 × 32256 × 36
パリティ・ビット √
バイト・イネーブル √
パック・モード √
アドレス・クロック・イネーブル √
シングル・ポート・モード √
シンプル・デュアル・ポート・モード √
トゥルー・デュアル・ポート・モード √
エンベデッド・シフト・レジスタ・モード (1)
√
ROMモード √
FIFOバッファ (1) √
シンプル・デュアル・ポートの異なるデータ幅のサポート
√
トゥルー・デュアル・ポートの異なるデータ幅のサポート (2)
√
メモリ初期化ファイル(.mif) √
混合クロック・モード √
パワーアップ条件 出力はクリア
レジスタ非同期クリア 出力レジスタのみ
ラッチ非同期クリア 出力ラッチのみ
同一ポートに対するライト中リード 出力は “Old Data”または “New Data”に設定
混在ポートに対するライト中リード 出力は“Old Data”または“Don’t Care”に設定
表 4–1の注 :(1) FIFOバッファおよびエンベデッド・シフト・レジスタは、コントロール・
ロジックの実装に外部ロジック・エレメント(LE)を必要とします。(2) × 32および × 36ビット幅モードは使用できません。
表 4–1. M9Kメモリ機能の要約(2 /2)
Altera Corporation - Preliminary 4–32007年 3月 Cyclone III デバイス・ハンドブック Volume 1
概要
表 4–2に、Cyclone IIIファミリの各デバイスの M9Kメモリ・ブロックの数とトータル・ビット数を示します。
コントロール信号
図 4-1 に、レジスタ・クロック、クリア、およびコントロール信号がCyclone IIIメモリ・ブロックにどのように実装されるかを示します。
クロック・イネーブル・コントロール信号は、入力レジスタおよび出力レジスタだけでなく、メモリ・ブロック全体に入力されるクロックを制御します。この信号はクロックをディセーブルするため、メモリ・ブロックがクロック・エッジを認識したり、何らかの動作を実行したりすることはありません。
リード・イネーブル(rden)およびライト・イネーブル(wren)コントロール信号は、メモリ・ブロックの各ポートに対するリードおよびライト動作を制御します。リード・イネーブルまたはライト・イネーブル信号を個別にディセーブルにして、動作が不要なときにはいつでも電力を節約することができます。
表 4–2. Cyclone IIIデバイスのM9Kブロックの数
デバイス M9Kブロック数 トータル RAMビット数EP3C5 46 423,936
EP3C10 46 423,936
EP3C16 56 516,096
EP3C25 66 608,256
EP3C40 126 1,161,216
EP3C55 260 2,396,160
EP3C80 305 2,810,880
EP3C120 432 3,981,312
4–4 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
図 4-1. M9Kコントロール信号の選択
パリティ・ビットのサポート
パリティ・ビットを内部ロジック・ソースと併せて使用して、エラー検出のためのパリティ・チェックを行うことができます。Cyclone III M9Kメモリ・ブロックは各ストレージ・バイトに対するパリティ・ビットをサポートします。このビットは、パリティ・ビットまたは追加データ・ビットとしてオプションで使用できます。このビットに対してはいかなるパリティ機能も実行されません。
バイト・イネーブルのサポート
Cyclone III M9K メモリ・ブロックは、入力データをマスクしてデータの特定のバイトだけが書き込まれるようにするバイト・イネーブルをサポートしています。書き込まれなかったバイトは、前に書き込まれた値を保持します。ライト・イネーブル(wren)信号は、バイト・イネーブ
clock_b
clocken_aclock_a
clocken_b aclr_b
aclr_a
DedicatedRow LABClocks
LocalInterconnect
LocalInterconnect
LocalInterconnect
LocalInterconnect
LocalInterconnect
LocalInterconnect
LocalInterconnect
LocalInterconnect
rden_b
rden_a
6
LocalInterconnect
LocalInterconnect
LocalInterconnect
LocalInterconnect
byteena_b
byteena_a
addressstall_b
addressstall_awren_a
wren_b
LocalInterconnect
LocalInterconnect
Altera Corporation - Preliminary 4–52007年 3月 Cyclone III デバイス・ハンドブック Volume 1
概要
ル(byteena)信号と共に RAM ブロックのライト動作を制御します。バイト・イネーブル信号のデフォルト値はHigh(イネーブル)であり、この場合、ライト動作はライト・イネーブル信号でのみコントロールされます。バイト・イネーブル・レジスタへのクリア・ポートはありません。M9Kブロックは、ライト・ポートのデータ幅が ×16、×18、×32、または ×36ビットのときにはバイト・ライトをサポートします。
バイト・イネーブルは one-hot 方式で動作し、byteena 信号の最下位ビット(LSB)がデータ・バスの最下位バイトに対応します。例えば、byteena = 01 で RAM ブロックを ×18 モードで使用する場合、data[8..0]がイネーブルされ、data[17..9]がディセーブルされます。同様に、byteena = 11の場合、data[8..0]および data[17..9]の両方がイネーブルされます。バイト・イネーブルはアクティブ Highです。表 4–3にバイトの選択をまとめます。
表 4–3. Cyclone III M9Kブロックに対するバイト・イネーブル (1)
byteena[3..0] 影響を受けるバイト
datain×16 datain×18 datain×32 datain×36[0] = 1 [7..0] [8..0] [7..0] [8..0]
[1] = 1 [15..8] [17..9] [15..8] [17..9]
[2] = 1 - - [23..16] [26..18]
[3] = 1 - - [31..24] [35..27]
表 4–3の注 :(1) どのバイト・イネーブルの組み合わせでも可能です。
4–6 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
図 4-2に、wren信号と byteena信号が RAMの動作を制御する方法を示します。
図 4-2. Cyclone IIIバイト・イネーブル機能の波形 (1)
図 4-2の注 :(1) この機能の波形については、“New Data”モードが選択されています。
ライト・サイクルの間にバイト・イネーブル・ビットがデアサートされた場合、メモリの古いデータが対応するデータ・バイト出力に現れます。ライト・サイクルの間にバイト・イネーブル・ビットがアサートされた場合、対応するデータ・バイト出力は Quartus® II ソフトウェアで選択された設定によって決まります。上記のデータ・バイト出力は、その位置に新たに書き込まれたデータまたは古いデータのいずれかです。
パック・モードのサポート
Cyclone III M9K メモリ・ブロックは、パック・モードをサポートしています。以下の条件に基づいて単一ブロックに 2つのシングル・ポート・メモリ・ブロックを実装できます。
■ 2 つの独立したブロックのサイズがそれぞれ、M9K ブロック・サイズの半分以下であること。独立したブロックの最大データ幅がそれぞれ、18ビットであること。
inclock
wren
address
data
q (asynch)
an
XXXX
a0 a1 a2 a0 a1 a2
doutn ABFF FFCD ABCD ABFF FFCD
ABCD
byteena XX 10 01 11
XXXX
XX
ABCD
ABCDFFFF
FFFF
FFFF
ABFF
FFCD
contents at a0
contents at a1
contents at a2
rden
Altera Corporation - Preliminary 4–72007年 3月 Cyclone III デバイス・ハンドブック Volume 1
概要
■ シングル・ポート・メモリ・ブロックがそれぞれ、シングル・クロック・モードでコンフィギュレーションされること。
詳細については、4–10 ページの「シングル・ポート・モード」および4–26ページの「シングル・クロック・モード」を参照してください。
アドレス・クロック・イネーブル
すべての Cyclone III メモリ・ブロックは、信号がイネーブルされaddressstall がアクティブ Low(addressstall = '0')である限り、以前のアドレス値を保持するアドレス・クロック・イネーブルをサポートします。メモリ・ブロックをデュアル・ポート・モードでコンフィギュレーションすると、各ポートは専用の独立したアドレス・クロック・イネーブルを持ちます。
図 4-3 に、アドレス・クロック・イネーブルのブロック図を示します。アドレス・レジスタ出力は、マルチプレクサを介してその入力にフィード・バックされます。マルチプレクサ出力は、アドレス・クロック・イネーブル(addressstall)信号で選択されます。addressstall 信号は Lowになります。
図 4-3. Cyclone IIIアドレス・クロック・イネーブルのブロック図
アドレス・クロック・イネーブルは通常、キャッシュ・ミス時の効率を改善するために、キャッシュ・メモリ・アプリケーションに使用されます。アドレス・クロック・イネーブル信号のデフォルト値は Low(ディ
address[0]
address[N]
addressstall
clock
address[0]register
address[N]register address[N]
address[0]
4–8 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
セーブル)です。図 4-4 および 4-5 に、それぞれリード・サイクルおよびライト・サイクル中のアドレス・クロック・イネーブルの波形を示します。
図 4-4. Cyclone IIIアドレス・クロック・イネーブルのリード・サイクル時の波形
図 4-5. Cyclone IIIアドレス・クロック・イネーブルのライト・サイクル時の波形
inclock
rden
rdaddress
q (synch)
a0 a1 a2 a3 a4 a5 a6
q (asynch)
an a0 a4 a5latched address(inside memory)
dout0 dout1 dout1 dout4
dout1 dout4 dout5
addressstall
a1
doutn-1 dout1doutn
doutn dout1dout0 dout1
inclock
wren
wraddress a0 a1 a2 a3 a4 a5 a6
an a0 a4 a5latched address(inside memory)
addressstall
a1
data 00 01 02 03 04 05 06
contents at a0
contents at a1
contents at a2
contents at a3
contents at a4
contents at a5
XX
04XX
00
0301XX 02
XX
XX
XX 05
Altera Corporation - Preliminary 4–92007年 3月 Cyclone III デバイス・ハンドブック Volume 1
概要
混在するデータ幅のサポート
M9Kメモリ・ブロックは、混在するデータ幅をサポートします。シンプル・デュアル・ポート、トゥルー・デュアル・ポート、または FIFOモードを使用する場合、混在するデータ幅のサポートにより、メモリ・ブロックに対して異なるデータ幅を読み書きすることができます。メモリ・モード別にサポートされている異なるデータ幅について詳しくは、4–10ページの「メモリ・ モード」を参照してください。
非同期クリア
Cyclone IIIデバイスは、出力レジスタおよび出力ラッチの非同期クリアのみサポートしています。入力レジスタはサポートされていません。非同期クリア信号は、出力レジスタに印加すると出力レジスタをクリアします。その効果はすぐに確認できます。RAM に出力レジスタが使用されていない場合でも、出力ラッチの非同期クリアによって RAM 出力をクリアすることができます。
リード動作中に非同期クリアをリード・アドレス・レジスタにアサートすると、メモリの内容が破壊される可能性があります。
図 4-6に、この動作に対する機能波形を示します。
図 4-6.出力ラッチの非同期クリア波形
非同期クリアは、Quartus II RAM MegaWizard®によって、ロジック・メモリごとに選択的にイネーブルすることができます。
詳細については、「RAMメガファンクション・ユーザガイド」を参照してください。
M9K ブロック内のレジスタをリセットする方法は、デバイスをパワーアップする、出力レジスタにのみ aclr 信号を使用する、あるいはDEV_CLRnオプションを使用してデバイス・ワイドのリセット信号をアサートする、の 3つです。
aclr
aclr at latch
clk
q a1 a0 a1a2
4–10 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
メモリ・モード
Cyclone III M9K メモリ・ブロックでは、複数の動作モードで完全同期SRAM メモリの実装が可能です。Cyclone III M9K メモリは、非同期(ラッチされていない)メモリ入力をサポートしていません。
M9Kブロックは、以下のモードをサポートしています。
■ シングル・ポート■ シンプル・デュアル・ポート■ トゥルー・デュアル・ポート■ シフト・レジスタ■ ROM■ FIFO
メモリ・ブロック入力レジスタに対するセットアップまたはホールド・タイムに違反があると、メモリの内容が破壊される可能性があります。これはリードおよびライトの両方の動作に当てはまります。
シングル・ポート・モード
シングル・ポート・モードは、単一アドレスからの非同時のリードおよびライト動作をサポートしています。図 4-7に、Cyclone IIIメモリ・ブロックのシングル・ポート・メモリ・コンフィギュレーションを示します。
図 4-7.シングル・ポート・メモリ (1)、(2)
図 4-7の注 :(1) 2 つのシングル・ポート・メモリ・ブロックを 1 つの M9K ブロックに実装
することが可能です。(2) 詳細については、「パック・モードのサポート」を参照してください。
ライト動作時に、RAM 出力の動作をコンフィギュレーションすることができます。ライト動作時にリード・イネーブルをアクティブにすると、RAM 出力はそのアドレスに書き込まれている新しいデータまたはそのアドレスにある古いデータのいずれかを示します。リード・イネーブル
data[ ]address[ ]wrenbyteena[]addressstall inclockinclockenrdenaclr
outclock
q[]
outclocken
Altera Corporation - Preliminary 4–112007年 3月 Cyclone III デバイス・ハンドブック Volume 1
メモリ・ モード
を非アクティブにしてライト動作を実行すると、RAM 出力は最後のアクティブ・リード・イネーブル時に保持した値を保持します。目的の動作を選択するには、Quartus II ソフトウェアの RAM MegaWizard で、Read-During-Writeオプションを “New Data”または “Old Data”に設定します。ライト中リード・モードについて詳しくは、4–30ページの「ライト中リード動作」を参照してください。
シングル・ポート・モードでの M9K ブロックのポート幅コンフィギュレーションは、以下の通りです。
■ 8192 × 1■ 4096 × 2■ 2048 × 4■ 1024 × 8■ 1024 × 9■ 512 × 16■ 512 × 18■ 256 × 32■ 256 × 36
図 4-8 に、シングル・モード・ポートでのリードおよびライト動作のタイミング波形を示します。RAM の出力をラッチしても、q 出力が 1 クロック・サイクルだけ遅延するにすぎません。
図 4-8. Cyclone IIIシングル・ポート・モードのタイミング波形
clk_a
wren_a
address_a
data_a
rden_a
q_a (old data)
a0 a1
A B C D E F
a0(old data) a1(old data)A B D E
q_a (new data) A DB C E F
4–12 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
シンプル・デュアル・ポート・モード
シンプル・デュアル・ポート・モードでは、リード動作とライト動作の同時実行がサポートされます。図 4-9に、シンプル・デュアル・ポート・メモリの構成を示します。
図 4-9. Cyclone IIIシンプル・デュアル・ポート・メモリ (1)
図 4-9の注 :(1) シンプル・デュアル・ポート RAMは、ここに示すリード /ライト・クロッ
ク・モードに加えて、入力 /出力クロック・モードをサポートします。
Cyclone IIIメモリ・ブロックは、データ幅が混在する構成をサポートしており、これによって異なるリードおよびライト・ポート幅が利用できます。表 4–4に、データ幅混合の構成を示します。
data[ ]wraddress[ ]wrenbyteena[]wr_addressstallwrclockwrclockenaclr
rdaddress[ ]rden
q[ ]rd_addressstall
rdclockrdclocken
表 4–4. Cyclone III M9Kブロックのデータ幅混合の構成(シンプル・デュアル・ポート・モード)
リード・ポート
ライト・ポート8192 × 1 4096 × 2 2048 × 4 1024 × 8 512 × 16 256 × 32 1024 × 9 512 × 18 256 × 36
8192 × 1 √ √ √ √ √ √
4096 × 2 √ √ √ √ √ √
2048 × 4 √ √ √ √ √ √
1024 × 8 √ √ √ √ √ √
512 × 16 √ √ √ √ √ √
256 × 32 √ √ √ √ √ √
1024 × 9 √ √ √
512 × 18 √ √ √
256 × 36 √ √ √
Altera Corporation - Preliminary 4–132007年 3月 Cyclone III デバイス・ハンドブック Volume 1
メモリ・ モード
シンプル・デュアル・ポート・モードでは、M9Kメモリ・ブロックは個別のライト・イネーブルおよびリード・イネーブル信号をサポートします。読み出しを実行しないときは、リード・イネーブル信号を Low(非アクティブ)に保持することによって電力を節約できます。同一アドレスに対してライト中リード動作を実行すると、その位置にある “Don’tCare”データを出力するか、“Old Data”を出力できます。目的の動作を選択するには、Quartus IIソフトウェアの RAM MegaWizardで、Read-During-Writeオプションを “Don’t Care”または “Old Data”に設定します。この動作について詳しくは、4–30 ページの「ライト中リード動作」を参照してください。
図 4-10 に、出力がラッチされていないシンプル・デュアル・ポート・モードでのリードおよびライト動作のタイミング波形を示します。RAMの出力をラッチしても、q出力が 1クロック・サイクルだけ遅延するにすぎません。
図 4-10.Cyclone IIIシンプル・デュアル・ポートのタイミング波形
wrclock
wren
wraddress
rdclock
an-1 an a0 a1 a2 a3 a4 a5 a6
q (asynch)
rden
rdaddress bn b0 b1 b2 b3
doutn-1 doutn dout0
din-1 din din4 din5 din6data
4–14 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
トゥルー・デュアル・ポート・モード
トゥルー・デュアル・ポート・モードは、2 つの異なるクロック周波数で、リード /リード、ライト /ライト、またはリード /ライトのいずれかの組み合わせの 2ポート動作をサポートします。図 4-11に、Cyclone IIIトゥルー・デュアル・ポート・メモリの構成を示します。
図 4-11.Cyclone IIIトゥルー・デュアル・ポート・メモリ (1)
図 4-11の注 :(1) トゥルー・デュアル・メモリは、ここに示す独立クロック・モードに加えて、
入力 /出力クロック・モードをサポートします。
トゥルー・デュアル・ポート・モードの M9K ブロックの最大ビット幅構成は、512 × 16ビット(パリティ付きで18ビット)です。
表 4–5に、可能なM9Kブロックの混合ポート幅の構成を示します。
data_a[ ]address_a[ ]wren_abyteena_a[]addressstall_a clock_aclocken_arden_aaclr_aq_a[]
data_b[ ]address_b[]
wren_bbyteena_b[]
addressstall_bclock_b
clocken_brden_baclr_bq_b[]
表 4–5. Cyclone III M9Kブロックのデータ幅混合の構成(トゥルー・デュアル・ポート・モード)
リード・ポートライト・ポート
8192 × 1 4096 × 2 2048 × 4 1024 × 8 512 × 16 1024 × 9 512 × 18
8192 × 1 √ √ √ √ √
4096 × 2 √ √ √ √ √
2048 × 4 √ √ √ √ √
1024 × 8 √ √ √ √ √
512 × 16 √ √ √ √ √
1024 × 9 √ √
512 × 18 √ √
Altera Corporation - Preliminary 4–152007年 3月 Cyclone III デバイス・ハンドブック Volume 1
メモリ・ モード
トゥルー・デュアル・ポート・モードでは、M9Kメモリ・ブロックは個別のライト・イネーブルおよびリード・イネーブル信号をサポートします。読み出しを実行しないときは、リード・イネーブル信号を Low(非アクティブ)に保持することによって電力を節約できます。同一アドレスに対してライト中リード動作を実行すると、その位置にある “NewData”を出力するか、“Old Data”を出力します。目的の動作を選択するには、Quartus IIソフトウェアの RAM MegaWizardで、Read-During-Writeオプションを“New Data”または“Old Data”に設定します。この動作について詳しくは、4–30ページの「ライト中リード動作」を参照してください。
トゥルー・デュアル・ポート・モードでは、ポート Aまたはポート Bからいつでもどのメモリ位置にでもアクセスできます。両方のポートから同一メモリ位置にアクセスする場合は、発生する可能性がある書き込み競合を回避しなければなりません。書き込み競合は、両方のポートから同時に同一アドレス位置に書き込みを試みると発生します。これにより、そのアドレス位置に未知のデータが格納されます。Cyclone III M9K メモリ・ブロックには、競合解決回路は組み込まれていません。RAM ブロックの外部でアドレス競合に対処する必要があります。
図 4-12に、ポート Aでのライト動作とポート Bでのリード動作のタイミング波形を示します。RAMの出力をラッチしても、q出力が 1クロック・サイクルだけ遅延するにすぎません。
図 4-12.Cyclone IIIトゥルー・デュアル・ポートのタイミング波形
clk_a
wren_a
address_a
clk_b
an-1 an a0 a1 a2 a3 a4 a5 a6
q_b (asynch)
wren_b
address_b bn b0 b1 b2 b3
doutn-1 doutn dout0
q_a (asynch)
din-1 din din4 din5 din6data_a
din-1 din dout0 dout1 dout2 dout3 din4 din5
dout2dout1
rden_a
rden_b
4–16 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
シフト・レジスタ・モード
Cyclone IIIメモリ・ブロックは、有限インパルス応答(FIR)フィルタ、擬似ランダム数発生器、マルチチャネル・フィルタリング、自己相関関数および相互相関関数など、デジタル信号処理(DSP)アプリケーション用のシフト・レジスタを実装できます。これらの DSPアプリケーション、およびその他の DSPアプリケーションには、ローカル・データ・ストレージが必要です。ローカル・データ・ストレージは従来、大きなシフト・レジスタを多数のロジック・セルを消費する標準的なフリップ・フロップで実装していました。より効率的な代替方法は、エンベデッド・メモリをシフト・レジスタ・ブロックとして使用することです。これにより、ロジック・セルと配線リソースが節約されます。
シフト・レジスタのサイズ(w × m × n)は、入力データ幅(w)、タップの長さ(m)、およびタップ数(n)によって決定され、メモリ・ビットの最大数、つまり 9,216ビット以下でなければなりません。また、(w × n)のサイズは、ブロックの最大幅、つまり 36ビット以下でなければなりません。さらに大きなシフト・レジスタが必要な場合は、メモリ・ブロックをカスケード接続できます。
図 4-13 に、シフト・レジスタ・モードの Cyclone III メモリ・ブロックを示します。
Altera Corporation - Preliminary 4–172007年 3月 Cyclone III デバイス・ハンドブック Volume 1
メモリ・ モード
図 4-13.Cyclone IIIシフト・レジスタ・モードのコンフィギュレーション
ROMモード
Cyclone III メモリ・ブロックは、ROM モードをサポートしています。メモリ初期化ファイル(.mif)は、これらのブロックの ROM 内容を初期化します。ROM のアドレス・ラインがラッチされます。出力はラッチしてもしなくても構いません。ROMのリード動作は、シングル・ポート RAMコンフィギュレーションでのリード動作と同じです。
W
w ⋅ m ⋅ n Shift Register
m-Bit Shift Register
m-Bit Shift Register
m-Bit Shift Register
m-Bit Shift Register
W
W
W
W
W
W
W
n Number of Taps
4–18 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
FIFOバッファ・モード
Cyclone III メモリ・ブロックは、シングル・クロックまたはデュアル・クロック FIFOバッファをサポートしています。デュアル・クロック FIFOバッファは、クロック・ドメイン間でデータを転送する場合に役立ちます。Cyclone IIIメモリ・ブロックは、空の FIFOバッファに対するリードおよびライトの同時実行はサポートしていません。
FIFO バッファについて詳しくは、「Single- and Dual-Clock FIFOMegafunctions User Guide」を参照してください。アルテラ・ウェブサイトのhttp://www.altera.co.jp/literature/ug/ug_fifo.pdfでご覧いただけます。
クロック・モード
Cyclone III M9Kメモリ・ブロックは、以下のクロック・モードをサポートしています。
■ 独立■ 入力 /出力■ リード /ライト■ シングル・クロック
メモリ・ブロック入力レジスタに対するセットアップまたはホールド・タイムに違反があると、メモリの内容が破壊される可能性があります。これはリードおよびライトの両方の動作に当てはまります。
非同期クリアは、出力ラッチおよび出力レジスタのみで使用できます。
表 4–6に、クロック・モード対メモリ・モード・サポートのマトリックスを示します。
表 4–6. Cyclone IIIメモリ・クロック・モード
クロック・モード トゥルー・デュアル・ポート・モード
シンプル・デュアル・ポート・モード
シングル・ポート・モード
ROMモード
FIFOモード
独立 √
入力 /出力 √ √ √ √
リード /ライト √ √
シングル・クロック √ √ √ √ √
Altera Corporation - Preliminary 4–192007年 3月 Cyclone III デバイス・ハンドブック Volume 1
クロック・モード
独立クロック・モード
Cyclone III M9Kメモリ・ブロックは、トゥルー・デュアル・ポート・メモリ用の独立クロック・モードを実装できます。このモードでは、各ポート(ポート Aおよび B)で個別のクロックを使用できます。clock Aはポート A側のすべてのレジスタを制御し、clock Bはポート B側のすべてのレジスタを制御します。各ポートは、ポート Aおよび Bのレジスタに対する独立したクロック・イネーブルもサポートします。
図 4-14は、独立クロック・モードのメモリ・ブロックを示します。
4–20 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
図 4-14.独立クロック・モードの Cyclone IIIメモリ・ブロック
6
D EN
A
Q
D EN
A
Q
D EN
A
Q
data
_a[ ]
add
ress
_a[ ]
Mem
ory
Blo
ck25
6 ×
16 (2
)51
2 ×
81,
024
× 4
2,04
8 ×
24,
096
× 1
Dat
a In
Add
ress
A
Dat
a O
ut
Dat
a In
Add
ress
B
Writ
e E
nabl
e
Dat
a O
ut
enab
le_a
cloc
k_a
D EN
A
Q
wre
n_a
6 LA
B R
ow C
lock
s
q_a[
]
6
data
_b[ ]
addr
ess_
b[ ]
q_b[
]
EN
A
AB
EN
ADQ
EN
ADQ
EN
ADQ
DQ
D EN
A
Qby
teen
a_a[
]B
yte
Ena
ble
AB
yte
Ena
ble
Bby
teen
a_b[
]E
NAD
Q
wre
n_b
enab
le_b
cloc
k_b
addr
esss
tall_
aA
ddre
ss C
lock
Ena
ble
A
Add
ress
Clo
ckad
dres
ssta
ll_b
Ena
ble
B
rden
_a
D EN
A
QE
NAD
Qrd
en_b
Rea
d E
nabl
e
Rea
d E
nabl
e
Writ
e E
nabl
e
Altera Corporation - Preliminary 4–212007年 3月 Cyclone III デバイス・ハンドブック Volume 1
クロック・モード
入力 /出力クロック・モード
Cyclone III M9K メモリ・ブロックは、FIFO、シングル・ポート、トゥルーおよびシンプル・デュアル・ポート・メモリ用の入力 /出力クロック・モードを実装できます。このモードでは、入力クロックが、データ、アドレス、バイト・イネーブル、ライト・イネーブル、およびリード・イネーブル・レジスタなど、メモリ・ブロックへのすべての入力レジスタを制御します。出力クロックはデータ出力レジスタを制御します。各メモリ・ブロック・ポートは、入力および出力レジスタに対する独立したクロック・イネーブルもサポートします。
図 4-15、4-16、および 4-17 に、トゥルー・デュアル・ポート、シンプル・デュアル・ポート、およびシングル・ポート・モードに対する入力/出力クロック・モードのメモリ・ブロックを示します。
4–22 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
図 4-15.トゥルー・デュアル・ポート・モードの Cyclone III入力 /出力クロック・モード
6
D EN
A
Q
D EN
A
Q
D EN
A
Q
data
_a[ ]
add
ress
_a[ ]
Mem
ory
Blo
ck25
6 ×
16 (2
)51
2 ×
81,
024
× 4
2,04
8 ×
24,
096
× 1
Dat
a In
Add
ress
A
Writ
e E
nabl
e
Dat
a O
ut
Dat
a In
Add
ress
B
Writ
e E
nabl
e
Dat
a O
ut
incl
ocke
n
incl
ock
D EN
A
Q
wre
n_a
6 LA
B R
ow C
lock
s
q_a[
]
6
data
_b[ ]
addr
ess_
b[ ]
q_b[
]
EN
A
AB
EN
ADQ
EN
ADQ
EN
ADQ
DQ
D EN
A
Qby
teen
a_a[
]B
yte
Ena
ble
AB
yte
Ena
ble
Bby
teen
a_b[
]E
NAD
Q
wre
n_b
outc
lock
en
outc
lock
addr
esss
tall_
aA
ddre
ss C
lock
Ena
ble
AA
ddre
ss C
lock
addr
esss
tall_
bE
nabl
e B
Rea
d E
nabl
eR
ead
Ena
ble
Altera Corporation - Preliminary 4–232007年 3月 Cyclone III デバイス・ハンドブック Volume 1
クロック・モード
図 4-16.シンプル・デュアル・ポート・モードの Cyclone III入力 /出力クロック・モード
図 4-16の注 :(1) MultiTrackインタコネクトについて詳しくは、「Cyclone IIIデバイス・ハンドブックVolume 1」の「Cyclone III
のMulti Trackインタコネクト」の章を参照してください。
6
DENA
Q
D
ENA
Q
D
ENA
Q
D
ENA
Q
DENA
Q
data[ ]
DENA
Qwraddress[ ]
rdaddress[ ]
Memory Block256 ´ 16512 ´ 8
1,024 ´ 42,048 ´ 24,096 ´ 1
Data In
Read Address
Write Address
Write Enable
Read Enable
Data Out
outclocken
inclocken
inclock
outclock
wren
rden
6 LAB Row Clocks
To MultiTrackInterconnect (1)
DENA
Qbyteena[ ] Byte Enable
rd_addressstall
wr_addressstall
Read AddressClock Enable
Write AddressClock Enable
4–24 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
図 4-17.シングル・ポート・モードの Cyclone III入力 /出力クロック・モード
図 4-17の注 :(1) MultiTrackインタコネクトについて詳しくは、「Cyclone IIIデバイス・ハンドブックVolume 1」の「Cyclone III
のMulti Trackインタコネクト」の章を参照してください。
リード /ライト・クロック・モード
Cyclone III M9Kメモリ・ブロックは、シンプル・デュアル・ポート・メモリ用のリード /ライト・クロック・モードを実装できます。このモードでは、ライト・クロックが、データ入力、ライト・アドレス、およびライト・イネーブル・レジスタを制御します。同様に、リード・クロックが、データ出力、リード・アドレス、およびリード・イネーブル・レジスタを制御します。メモリ・ブロックは、リードおよびライト両方のクロックに対する独立したクロック・イネーブルをサポートします。図 4-18に、リード /ライト・クロック・モードのメモリ・ブロックを示します。
6
DENA
Q
D
ENA
Q
D
ENA
Q
DENA
Q
data[ ]
address[ ]
Memory Block256 ´ 16512 ´ 8
1,024 ´ 42,048 ´ 24,096 ´ 1
Data In
Address
Write Enable
Data Out
outclocken
inclocken
inclock
outclock
wren
6 LAB Row Clocks
To MultiTrackInterconnect (1)
DENA
Qbyteena[ ] Byte Enable
addressstallAddressClock Enable
rden
D
ENA
Q Read Enable
Altera Corporation - Preliminary 4–252007年 3月 Cyclone III デバイス・ハンドブック Volume 1
クロック・モード
図 4-18.Cyclone IIIリード /ライト・クロック・モード
図 4-18の注 :(1) MultiTrackインタコネクトについて詳しくは、「Cyclone IIIデバイス・ハンドブックVolume 1」の「Cyclone III
のMulti Trackインタコネクト」の章を参照してください。
6
DENA
Q
D
ENA
Q
D
ENA
Q
D
ENA
Q
DENA
Q
data[ ]
DENA
Qwraddress[ ]
rdaddress[ ]
Memory Block256 ´ 16512 ´ 8
1,024 ´ 42,048 ´ 24,096 ´ 1
Data In
Read Address
Write Address
Write Enable
Read Enable
Data Out
rdclocken
wrclocken
wrclock
rdclock
wren
rden
6 LAB Row Clocks
To MultiTrackInterconnect (1)
DENA
Qbyteena[ ] Byte Enable
rd_addressstall
wr_addressstall
Read AddressClock Enable
Write AddressClock Enable
4–26 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
シングル・クロック・モード
Cyclone III M9Kメモリ・ブロックは、FIFO、ROM、トゥルー・デュアル・ポート、シンプル・デュアル・ポート、およびシングル・ポート・メモリ用のシングル・クロック・モードを実装できます。このモードでは、メモリ・ブロックのすべてのレジスタを 1つのクロックとクロック・イネーブルで制御することができます。
図 4-19、4-20、および 4-21 に、それぞれトゥルー・デュアル・ポート、シンプル・デュアル・ポート、およびシングル・ポート・モードに対するシングル・クロック・モードのメモリ・ブロックを示します。
Altera Corporation - Preliminary 4–272007年 3月 Cyclone III デバイス・ハンドブック Volume 1
クロック・モード
図 4-19.トゥルー・デュアル・ポート・モードの Cyclone IIIシングル・クロック・モード (1)
図 4-19の注 :(1) MultiTrackインタコネクトについて詳しくは、「Cyclone IIIデバイス・ハンドブックVolume 1」の「Cyclone III
のMulti Trackインタコネクト」の章を参照してください。
6
D EN
A
Q
D EN
A
Q
D EN
A
Q
data
_a[ ]
add
ress
_a[ ]
Mem
ory
Blo
ck25
6 ×
16 (2
)51
2 ×
81,
024
× 4
2,04
8 ×
24,
096
× 1
Dat
a In
Add
ress
A
Rea
d E
nabl
e
Dat
a O
ut
Dat
a In
Add
ress
B
Rea
d E
nabl
e
Dat
a O
ut
enab
le
cloc
k
D EN
A
Q
wre
n_a
6 LA
B R
ow C
lock
s
q_a[
]
6
data
_b[ ]
addr
ess_
b[ ]
q_b[
]
EN
A
AB
EN
ADQ
EN
ADQ
EN
ADQ
DQ
D EN
A
Qby
teen
a_a[
]B
yte
Ena
ble
AB
yte
Ena
ble
Bby
teen
a_b[
]E
NAD
Q
wre
n_b
addr
esss
tall_
aA
ddre
ss C
lock
Ena
ble
AA
ddre
ss C
lock
addr
esss
tall_
bE
nabl
e B
D EN
A
Q
rden
_a
EN
ADQ
rden
_b
Writ
e E
nabl
eW
rite
Ena
ble
4–28 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
図 4-20.シンプル・デュアル・ポート・モードの Cyclone IIIシングル・クロック・モード
図 4-20の注 :(1) MultiTrackインタコネクトについて詳しくは、「Cyclone IIIデバイス・ハンドブックVolume 1」の「Cyclone III
のMulti Trackインタコネクト」の章を参照してください。
6
DENA
Q
D
ENA
Q
D
ENA
Q
D
ENA
Q
DENA
Q
data[ ]
DENA
Qwraddress[ ]
rdaddress[ ]
Memory Block256 ´ 16512 ´ 8
1,024 ´ 42,048 ´ 24,096 ´ 1
Data In
Read Address
Write Address
Write Enable
Read Enable
Data Out
enable
clock
wren
rden
6 LAB Row Clocks
To MultiTrackInterconnect (1)
DENA
Qbyteena[ ] Byte Enable
rd_addressstall
wr_addressstall
Read AddressClock Enable
Write AddressClock Enable
Altera Corporation - Preliminary 4–292007年 3月 Cyclone III デバイス・ハンドブック Volume 1
クロック・モード
図 4-21.シングル・ポート・モードの Cyclone IIIシングル・クロック・モード
図 4-21の注 :(1) MultiTrackインタコネクトについて詳しくは、「Cyclone IIIデバイス・ハンドブックVolume 1」の「Cyclone III
のMulti Trackインタコネクト」の章を参照してください。
6
DENA
Q
D
ENA
Q
D
ENA
Q
DENA
Q
data[ ]
address[ ]
Memory Block256 ´ 16512 ´ 8
1,024 ´ 42,048 ´ 24,096 ´ 1
Data In
Address
Write Enable
Data Out
enable
clock
wren
6 LAB Row Clocks
To MultiTrackInterconnect (1)
DENA
Qbyteena[ ] Byte Enable
addressstallAddressClock Enable
DENA
Q
rden
Read Enable
4–30 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
デザインの検討事項
ライト中リード動作
4–30 ページの「同一ポートに対するライト中リード・モード」および4–32ページの「混在ポートに対するライト中リード・モード」では、あるアドレスでのライト動作中に同一アドレスからの読み出しを実行する際の、各種 RAM コンフィギュレーションの機能について説明しています。2 つのライト中リード・データ・フロー、すなわち同一ポートおよび混在ポートに対するライト中リード・データ・フローがあります。
図 4-22に、これらのフローの違いを示します。
図 4-22.Cyclone IIIのライト中リード・データ・フロー
同一ポートに対するライト中リード・モード
このモードは、シングル・ポート RAMまたはトゥルー・デュアル・ポートRAMの同一ポートに適用されます。同一ポートに対するライト中リード・モードでは、“New Data”モード(またはフロースルー)および “OldData” モードの 2 つの出力の選択肢が用意されています。“New Data”モードでは、新しいデータが書き込まれた同一クロック・サイクルの立ち上がりエッジで、そのデータを使用することができます。“Old Data”モードでは、ライト動作が続行される前に、そのアドレスにある古いデータが RAM出力に反映されます。
New Dataモードをバイト・イネーブル(byteena)と併せて使用すると、RAMの出力を制御することができます。バイト・イネーブルがHighの場合、メモリに書き込まれたデータは、出力に送られます(フロースルー)。バイト・イネーブルが Lowのとき、マスク・オフされたデータ
Port Adata in
Port Bdata in
Port Adata out
Port Bdata out
Mixed-portdata flow
Same-portdata flow
write_a
read_aread_b
write_b
Altera Corporation - Preliminary 4–312007年 3月 Cyclone III デバイス・ハンドブック Volume 1
デザインの 検討事項
はメモリに書き込まれず、メモリの古いデータが出力に現れます。したがって、出力はバイト・イネーブルで決定される新しいデータと古いデータの組み合わせにすることができます。
図 4-23および 4-24に、それぞれ “New Data”モードおよび “Old Data”モードでの、同一ポートに対するライト中リード動作の機能波形のサンプルを示します。
図 4-23.同一ポートに対するライト中リード : New Dataモード
図 4-24.同一ポートに対するライト中リード : Old Dataモード
clk_a
wren_a
address_a
data_a
rden_a
q_a (asynch)
a0 a1
A B C D E F
A B C D E F
clk_a
wren_a
address_a
data_a
rden_a
q_a (asynch)
a0 a1
A B C D E F
a0(old data) a1(old data)A B D E
4–32 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
混在ポートに対するライト中リード・モード
このモードは、読み出しを実行する 1つのポートと、同一クロックで同一アドレス位置への書き込みを実行するもう 1つのポートを有する、シンプルまたはトゥルー・デュアル・ポート・モードの RAM に適用されます。
このモードでも、“Old Data”または “Don't Care”の 2つの出力の選択肢が用意されています。“Old Data”モードでは、異なるポートに対するライト中リード動作が実行されると、そのアドレス位置にある古いデータが RAM出力に反映されます。“Don't Care”モードでは、同じ動作によって、RAM出力に "Don't Care"値または未知の値が現れます。
目的の動作を実装する方法について詳しくは、「RAM Megafunction UserGuide」を参照してください。
図 4-25に、“Old Data”モードの場合の混在ポートに対するライト中リード動作の機能波形のサンプルを示します。“Don't Care”モードでは、図に示された古いデータが “Don't Care”に置き換えられるにすぎません。
図 4-25.混在ポートに対するライト中リード : Old Dataモード
Cyclone III M9Kメモリ・ブロックは、デュアル・ポート RAMで 2種類のクロックが使用されているときは、混在ポートに対するライト中リードをサポートしません。デュアル・クロック混在ポートに対するライト中リード動作では、出力値は不明です。
a b
a (old data) b (old data)
clk_a&b
wren_a
address_a
q_b (asynch)
rden_a
a baddress_b
data_a A B C D E F
A B D E
Altera Corporation - Preliminary 4–332007年 3月 Cyclone III デバイス・ハンドブック Volume 1
デザインの 検討事項
競合の解決
トゥルー・デュアル・ポート・モードでメモリ・ブロックを使用するときには、同一メモリ位置(アドレス)に 2つのライト動作を試みることができます。メモリ・ブロックには競合解決回路が組み込まれていないので、その位置には未知のデータが書き込まれます。したがって、メモリ・ブロックの外部に競合解決ロジックを実装する必要があります。
パワーアップ条件およびメモリ初期化
Cyclone IIIメモリ・ブロック出力は、出力レジスタが使用されるかバイパスされるかに関係なく、パワーアップ時にゼロ(クリア)になります。すべてのメモリ・ブロックで、メモリ初期化ファイル(.mif)による初期化がサポートされます。Quartus IIソフトウェアで .mifファイルを作成し、デザインでメモリをインスタンス化するときに、RAMMegaWizard によってそれらのファイルの使用を指定することができます。メモリが事前に初期化されている(例えば、.mifによって)場合でも、パワーアップ時には出力はクリアされています。パワーアップ以降の読み出しによってのみ、事前に初期化された値が出力されます。
MIF ファイルについて詳しくは、「RAM Megafunction User Guide」および「Quartus II ハンドブック」を参照してください。これらの資料はそれぞれ、アルテラ・ウェブサイトのhttp://www.altera.com/literature/ug/ug_ram.pdfおよびhttp://www.altera.com/literature/lit-qts.jspでご覧いただけます。
消費電力の管理
Cyclone IIIメモリ・ブロックのクロック・イネーブルにより、各メモリ・ブロックのクロックを制御してAC消費電力を低減することができます。リード・イネーブル信号を使用し、必要なときにのみリード動作が実行されるようにします。デザインでライト中リードが不要な場合は、ライト動作中またはメモリ動作が実行されていない期間にリード・イネーブル信号をデアサートして、消費電力を低減します。
Quartus IIソフトウェアは、未使用のメモリ・ブロックを自動的にパワーダウンして、スタティック消費電力を節約します。
4–34 Altera Corporation - PreliminaryCyclone III デバイス・ハンドブック Volume 1 暫定サポート 2007年 3月
Cyclone IIIデバイスのメモリ・ブロック
まとめ Cyclone III M9K エンベデッド・メモリ構造は、広いメモリ帯域幅を備えた柔軟性の高いメモリ・アーキテクチャを提供します。各種メモリ・モード、バイト・イネーブル、パリティ・ビット・ストレージ、アドレス・クロック・イネーブル、ミックスド・クロック・モード、および混合ポート幅のサポートなどの機能を備えた Cyclone IIIデバイス・デザインにおける各種メモリ・アプリケーションのニーズに対応します。これらのコンフィギュレーションはすべて、Quartus II MegaWizard で行うことができます。
改訂履歴 表 4–7に、本資料の改訂履歴を示します。
表 4–7.改訂履歴
日付&ドキュメント・バージョン 変更内容 概要
2007年 3月 v1.0 初版
4. Cyclone IIIデバイスのメモリ・ブロックはじめに概要コントロール信号パリティ・ビットのサポートバイト・イネーブルのサポートパック・モードのサポートアドレス・クロック・イネーブル混在するデータ幅のサポート非同期クリア
メモリ・モードシングル・ポート・モードシンプル・デュアル・ポート・モードトゥルー・デュアル・ポート・モードシフト・レジスタ・モードROMモードFIFOバッファ・モード
クロック・モード独立クロック・モード入力/出力クロック・モードリード/ライト・クロック・モードシングル・クロック・モード
デザインの検討事項ライト中リード動作競合の解決パワーアップ条件およびメモリ初期化消費電力の管理
まとめ改訂履歴