86
7 シリーズ FPGA メモリ リソース ユーザー ガイド UG473 (v1.11) 2014 11 12 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま す。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の 上、最新情報につきましては、必ず最新英語版をご参照ください。

7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

  • Upload
    letuyen

  • View
    295

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース

ユーザー ガイド

UG473 (v1.11) 2014 年 11 月 12 日

本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日

The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products. Tothe maximum extent permitted by applicable law: (1) Materials are made available "AS IS" and with all faults, Xilinx herebyDISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOTLIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULARPURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory ofliability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (includingyour use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including lossof data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if suchdamage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same. Xilinx assumes noobligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent. Certain products aresubject to the terms and conditions of Xilinx’s limited warranty, please refer to Xilinx’s Terms of Sale which can be viewed athttp://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and support terms contained in a license issued to youby Xilinx. Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safeperformance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’sTerms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos.

AUTOMOTIVE APPLICATIONS DISCLAIMERXILINX PRODUCTS ARE NOT DESIGNED OR INTENDED TO BE FAIL-SAFE, OR FOR USE IN ANY APPLICATIONREQUIRING FAIL-SAFE PERFORMANCE, SUCH AS APPLICATIONS RELATED TO: (I) THE DEPLOYMENT OFAIRBAGS, (II) CONTROL OF A VEHICLE, UNLESS THERE IS A FAIL-SAFE OR REDUNDANCY FEATURE (WHICHDOES NOT INCLUDE USE OF SOFTWARE IN THE XILINX DEVICE TO IMPLEMENT THE REDUNDANCY) AND AWARNING SIGNAL UPON FAILURE TO THE OPERATOR, OR (III) USES THAT COULD LEAD TO DEATH ORPERSONAL INJURY. CUSTOMER ASSUMES THE SOLE RISK AND LIABILITY OF ANY USE OF XILINX PRODUCTSIN SUCH APPLICATIONS.

© Copyright 2011–2014 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and otherdesignated brands included herein are trademarks of Xilinx in the United States and other countries.

本資料は英語版 (v1.11) を翻訳したもので、 内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあ り ます。日本語版は参考用と してご使用の上、 新情報につきましては、 必ず 新英語版をご参照ください。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] までお知らせください。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており ません。 あらかじめご了承ください。

Page 3: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

UG473 (v1.11) 2014 年 11 月 12 日 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

改訂履歴次の表に、 この文書の改訂履歴を示します。

日付 バージョ ン 内容

2011 年 3 月 1 日 1.0 初版

2011 年 3 月 28 日 1.1 2 ページの免責条項と著作権表示を更新。

表 2-1 の値、表 2-3 の記述、表 2-4 の値を更新。「ALMOST EMPTY フラグ」、「FULLフラグ」、「ALMOST FULL フラグ」の説明を変更。表 2-7 と表 2-8 の値を更新。図 2-6を変更。59 ページのクロ ッ ク イベン ト 2 と ク ロ ッ ク イベン ト 4 の説明を変更。「ケー

ス 3 : フルの FIFO からの読み出し」 を図 2-8 を含め更新。

2011 年 4 月 14 日 1.2 「7 シ リーズ FPGA と前世代の FPGA のブロッ ク RAM および FIFO の相違点」 を追

加。 表 1-2 : 「7 シ リーズ デバイスのブロ ッ ク RAM リ ソース」 を追加。 「読み出し幅

- READ_WIDTH_[A|B]」 および 「書き込み幅 - WRITE_WIDTH_[A|B]」 の有効な

値を明記。 「ブロ ッ ク RAM のロケーシ ョ ン制約」 の例を更新。 表 1-18 のパラ メー

ター名を更新。

「同期 FIFO」 の概要でフラグの動作を明記。 「FIFO ALMOST FULL/EMPTY フラグ

のオフセッ ト範囲」 の変更、 表 2-8 の注記 1 の追加、 式 2-1 の削除、 式 2-2 を変更し

て新たに式 2-1 と して更新。

「WEBWE[7:0]」 のポート接続の指示を更新。

2011 年 10 月 18 日 1.3 「スタ ッ ク ド シ リ コン インターコネク ト (SSI)」 を追加。 表 1-2 に Artix-7 および Virtex-7 ファ ミ リ を追加し、 注記を更新。

2011 年 11 月 18 日 1.4 「Virtex-6 FPGA からの変更点」 の 2 番目の箇条書きを更新。

2012 年 1 月 30 日 1.5 表 1-2 で、 XC7A8、 XC7A15、 XC7A30T、 および XC7A50T を削除、 XC7K420T および XC7VX550T のデバイスあたりの 36Kb ブロ ッ ク RAM の数を更新、 注記 1 で 「GTP/GTX クワ ッ ド」 に変更。

「Simple Dual-Port (SDP) ブロ ッ ク RAM」 を更新。

2012 年 7 月 4 日 1.6 「Virtex-6 FPGA からの変更点」 の 5 番目と 6 番目箇条書きを更新。

表 1-2 に Virtex-7 デバイスを追加。 表 1-6 の RAMB36E1、 RAMB18E1、 および FIFO18E1 の説明を更新。

表 2-3 の WREN の説明を更新。 表 2-9 の TRCCK_RST/TRCKC_RST を TRREC_RST/TRREM_RST に置き換え。

2012 年 10 月 2 日 1.7 表 1-2 から XC7A350T、 XC7V1500T、 および XC7VH290T を削除。

2013 年 8 月 7 日 1.8 表 1-2 に 3 つのデバイスを追加。

2013 年 10 月 2 日 1.9 2 ページの免責条項と著作権表示を更新。 「バイ ト ライ ト イネーブル」 を更新。

2014 年 1 月 30 日 1.10 「概要」 の 後の箇条書きを更新。 図 1-6 および図 3-2 を更新。

2014 年 5 月 9 日 1.10.1 表 1-7 および表 1-8 の誤植を訂正。

2014 年 11 月 12 日 1.11 表 1-2 に XC7A15T デバイスを追加。

Page 4: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日

Page 5: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 5UG473 (v1.11) 2014 年 11 月 12 日

改訂履歴. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

このユーザー ガイドについて内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 シ リーズ FPGA と前世代の FPGA のブロ ッ ク RAM および FIFO の相違点 . . . . . . . . . . . . . . . . 9

Virtex-6 FPGA からの変更点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9Spartan-6 FPGA からの変更点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

その他のリ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

第 1 章 : ブロック RAM リソース概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11ブロ ッ ク RAM の説明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13同期デュアル ポートおよびシングル ポート RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

データ フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15読み出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16書き込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16書き込みモード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

WRITE_FIRST または透過モード (デフォルト ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17READ_FIRST または書き込み前読み出しモード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17NO_CHANGE モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

競合の回避 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18非同期クロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18同期クロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

7 シ リーズ デバイスのブロ ッ ク RAM のその他の機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19出力レジスタ (オプシ ョ ン) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19個別に選択可能な読み出しポート と書き込みポートの幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19Simple Dual-Port (SDP) ブロ ッ ク RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19カスケード接続が可能なブロ ッ ク RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21バイ ト ライ ト イネーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21ブロ ッ ク RAM の ECC (誤り訂正符号) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22未使用ブロッ ク RAM のパワー ゲーティング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

ブロ ッ ク RAM のライブラ リ プリ ミ ティブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23ブロ ッ ク RAM のポート信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

ク ロ ッ ク - CLKARDCLK、 CLKBWRCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26イネーブル - ENARDEN、 ENBWREN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27バイ ト ライ ト イネーブル - WEA、 WEBWE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27レジスタ イネーブル - REGCEA、 REGCE、 REGCEB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27セッ ト / リセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27

RSTREGARSTREG、 RSTREGB、 RSTRAMARSTRAM、 RSTRAMB . . . . . . . . . . .27アドレス バス - ADDRARDADDR、 ADDRBWRADDR . . . . . . . . . . . . . . . . . . . . . . . . . . . .27データ入力バス - DIADI、 DIPADIP、 DIBDI、 DIPBDIP . . . . . . . . . . . . . . . . . . . . . . . . . . .29データ出力バス - DOADO、 DOPADOP、 DOBDO、 DOPBDOP . . . . . . . . . . . . . . . . . . . . .29カスケード入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

CASCADEINA、 CASCADEINB、 CASCADEOUTA、 CASCADEOUTB . . . . . . . . .30制御ピンの反転 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30GSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30未使用の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

ブロ ッ ク RAM のアドレス マップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31ブロ ッ ク RAM の属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

メモ リ内容の初期化 - INIT_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31パリティ メモ リ内容の初期化 - INITP_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

目次

Page 6: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

6 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

出力ラ ッチの初期化 - INIT (INIT_A または INIT_B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32出力ラ ッチ/レジスタの同期セッ ト / リセッ ト (SRVAL_[A|B]) . . . . . . . . . . . . . . . . . . . . . . . . .33リセッ ト または CE の優先度 - RSTREG_PRIORITY_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . .33オプシ ョ ンの出力レジスタ切り替え - DO[A|B]_REG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33拡張モード アドレス - RAM_EXTENSION_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34読み出し幅 - READ_WIDTH_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34書き込み幅 - WRITE_WIDTH_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34モード選択 - RAM_MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34書き込みモード - WRITE_MODE_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34RDADDR_COLLISION_HWCONFIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34SIM_COLLISION_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34INIT_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35SIM_DEVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

ブロ ッ ク RAM のロケーシ ョ ン制約. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35VHDL または Verilog コードでのブロ ッ ク RAM の初期化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35RAMB18E1 および RAMB36E1 プリ ミ ティブの設計上のその他の注意事項 . . . . . . . . . . . . . . . . 35

出力レジスタ (オプシ ョ ン) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35独立した読み出しポート と書き込みポートの幅を選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36RAMB18E1 および RAMB36E1 のポート マッピング設計規則 . . . . . . . . . . . . . . . . . . . . . . .36カスケード接続可能なブロ ッ ク RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36バイ ト ライ ト イネーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

ブロ ッ ク RAM のアプリ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38大規模な RAM 構造の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38レジスタ モードでのブロ ッ ク RAM の RSTREG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

ブロ ッ ク RAM のタイ ミ ング モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40ブロ ッ ク RAM のタイ ミ ング パラ メーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40ブロ ッ ク RAM のタイ ミ ング特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

ク ロ ッ ク イベン ト 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41ク ロ ッ ク イベン ト 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42ク ロ ッ ク イベン ト 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42ク ロ ッ ク イベン ト 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

ブロ ッ ク RAM のタイ ミ ング モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42スタ ッ ク ド シ リ コン インターコネク ト (SSI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

第 2 章 : ビルト イン FIFO のサポート概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45デュアル ク ロ ッ ク FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45同期 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

同期 FIFO インプリ メンテーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47FIFO アーキテクチャの概略図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48FIFO プリ ミ ティブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48FIFO ポートの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49FIFO の動作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

リセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51動作モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

標準モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51FWFT (First Word Fall Through) モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

ステータス フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51EMPTY フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52ALMOST EMPTY フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52READ ERROR フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52FULL フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53WRITE ERROR フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53ALMOST FULL フラグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

FIFO の属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53FIFO ALMOST FULL/EMPTY フラグのオフセッ ト範囲 . . . . . . . . . . . . . . . . . . . . . . . . . . . .55

Page 7: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 7UG473 (v1.11) 2014 年 11 月 12 日

VHDL および Verilog の FIFO テンプレート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56FIFO のタイ ミ ング モデルとパラ メーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

FIFO のタイ ミ ング特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58ケース 1 : 空の FIFO への書き込み. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58ケース 2 : フルまたはほぼフルの FIFO への書き込み . . . . . . . . . . . . . . . . . . . . . . . . . . .60ケース 3 : フルの FIFO からの読み出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61ケース 4 : 空またはほぼ空の FIFO からの読み出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62ケース 5 : すべてのフラグを リセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64ケース 6 : デュアル ク ロ ッ ク FIFO に対する読み出し と書き込みの同時実行 . . . . . . . .64

FIFO のアプリ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65FIFO のカスケード接続によるワード数の拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65FIFO の並列接続によるビッ ト数の拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

ブロ ッ ク RAM と FIFO の有効な組み合わせ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

第 3 章 : ビルト イン誤り訂正概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69ECC の動作モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70ブロ ッ ク RAM ECC アーキテクチャの概略図. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

ブロ ッ ク RAM および FIFO ECC プリ ミ ティブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72ブロ ッ ク RAM および FIFO ECC のポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73ブロ ッ ク RAM および FIFO ECC の属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76ECC モードの動作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

標準モードの ECC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80属性での設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80標準 ECC 書き込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80標準 ECC 読み出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80

エンコード専用 ECC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81属性での設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81エンコード専用 ECC での書き込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81エンコード専用 ECC での読み出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

デコード専用 ECC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82属性での設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82デコード専用 ECC でのシングル ビッ ト エラーの挿入 . . . . . . . . . . . . . . . . . . . . . . . . . .82デコード専用 ECC でのダブル ビッ ト エラーの挿入. . . . . . . . . . . . . . . . . . . . . . . . . . . .82

ECC タイ ミ ング特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83標準 ECC の書き込みタイ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83標準 ECC の読み出しタイ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83

DO_REG = 0 の場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83DO_REG = 1 の場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84

エンコード専用 ECC の書き込みタイ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84エンコード専用 ECC の読み出しタイ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84デコード専用 ECC の書き込みタイ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84デコード専用 ECC の読み出しタイ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84

ブロ ッ ク RAM ECC モードのタイ ミ ング パラ メーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8564 ビッ ト ワード用 8 ビッ ト パリティの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86ブロ ッ ク RAM ECC の VHDL および Verilog テンプレート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Page 8: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

8 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

Page 9: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 9UG473 (v1.11) 2014 年 11 月 12 日

このユーザー ガイドについて

ザイ リ ンクス 7 シ リーズ FPGA には、 3 つの FPGA ファ ミ リがあ り ます。 これらはすべて も低

い消費電力を達成するよ う設計されており、 適な電力、 性能、 コス トの実現に向けて、 標準デザ

インをファ ミ リ間で拡張させるこ とが可能です。 Artix®-7 ファ ミ リは、量産アプリ ケーシ ョ ン向け

に開発され、 も低いコス ト と消費電力を実現するよ う 適化されています。 Virtex®-7 ファ ミ リ

は、 高のシステム性能と容量を提供するよ うに 適化されています。 Kintex®-7 ファ ミ リは、 対

コス ト性能に も優れた新しいク ラスの FPGA です。 このユーザー ガイ ドは、 7 シ リーズ FPGAのブロ ッ ク RAM について説明した技術的な リ ファレンスです。 ブロ ッ ク RAM は、 効率的なデー

タの格納やバッファーに活用し、高性能なステート マシンまたは FIFO バッファー、大規模シフ ト

レジスタ、 大規模なルッ クアップ テーブル、 ROM などに使用されます。

この 『7 シ リーズ FPGA メモ リ リ ソース ユーザー ガイ ド』 を含む、 7 シ リーズ FPGA に関するす

べての資料は、 ザイ リ ンクスのウェブサイ ト (japan.xilinx.com/support/documentation/7_series) から入手できます。

内容

このユーザー ガイ ドは、 次の各章で構成されています。

• 第 1 章 「ブロ ッ ク RAM リ ソース」

• 第 2 章 「ビルト イン FIFO のサポート 」

• 第 3 章 「ビルト イン誤り訂正」

7 シリーズ FPGA と前世代の FPGA のブロック RAM および FIFO の相違点

Virtex-6 FPGA からの変更点

• 競合の回避とアドレスの衝突の規則が緩和されました。

• SDP モードの WRITE_FIRST モードは、消費電力を抑えるために自動的に NO_CHANGE モー

ドにマッピングされます。

• ブロ ッ ク RAM の内容の初期化およびリードバッ ク動作が、新しいパワー ゲーティング機能の

インプリ メンテーシ ョ ンに伴い変更されています。

• 新しい外部電源 VCCBRAM からブロ ッ ク RAM メモ リ セルに電力が供給されます。

• 7 シ リーズ FPGA では、FIFO リセッ トの要件が簡略化されています。FIFO リセッ トのアサー

トが、書き込みクロ ッ クおよび読み出しクロ ッ ク と同期するよ うにな り ました。ただし、リセッ

トのディアサートは非同期のままです。

Page 10: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

10 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

このユーザー ガイドについて

• FIFO フラグのレイテンシは全体的に Virtex-6 FPGA でのレイテンシと異なります (表 2-4 参照)。

• RDCLK と WRCLK が異なる場合に、7 シリーズ FPGA の ALMOST_FULL_OFFSET の式が変

更されました。この場合、すべてのケースで表 2-8 の値に従うため、ALMOST_EMPTY_OFFSETの式は削除されます。

Spartan-6 FPGA からの変更点

• Virtex-6 ファ ミ リ と同様に、 7 シ リーズ FPGA は 36Kb および 18Kb の両ブロ ッ ク RAM コン

フ ィギュレーシ ョ ンをサポート します (Spartan®-6 FPGA の 18Kb/9Kb に対して、ネイティブ

で 36Kb/18Kb)。

• Virtex-6 ファ ミ リには含まれず、 Virtex-6 ファ ミ リで利用可能となっている次の主な機能が、

7 シ リーズ FPGA のインプ リ メンテーシ ョ ンに含まれています。

• 専用の内蔵 FIFO

• 誤り訂正機能 (ECC)

• ブロ ッ ク RAM の直接カスケード接続

• 出力ラ ッチおよびレジスタの個別リセッ ト制御

• データ出力の非同期セッ ト / リセッ ト

その他のリソース

その他の資料は、 ザイ リ ンクスのウェブサイ トから入手できます。

japan.xilinx.com/support/documentation/index

シ リ コンやソフ ト ウェア、 IP に関するアンサー データベースを検索したり、 テクニカル サポート

のウェブケースを開く場合は、 次のウェブサイ トにアクセスして ください。

japan.xilinx.com/support

Page 11: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 11UG473 (v1.11) 2014 年 11 月 12 日

第 1 章

ブロック RAM リソース

概要

7 シ リーズ FPGA のブロ ッ ク RAM は 2 つの独立した 18Kb RAM または 1 つの 36Kb RAM と し

て構成可能で、 いずれも 大 36Kb のデータを格納できます。 36Kb の各ブロ ッ ク RAM は、 SDP(Simple Dual-Port) モードでは 64Kx1 (隣接する 36Kb ブロ ッ ク RAM とカスケード接続)、32Kx1、16Kx2、 8Kx4、 4Kx9、 2Kx18、 1Kx36、 512x72 と して構成できます。 18Kb の各ブロッ ク RAMは、 SDP モードでは 16Kx1、 8Kx2、 4Kx4、 2Kx9、 1Kx18、 512x36 と して構成できます。

Virtex®-6 FPGA のブロ ッ ク RAM と同様に、 書き込みと読み出しはクロ ッ クに同期して行われま

す。 また、 2 つのポートは対称でそれぞれ完全に独立しており、保存したデータのみを共有します。

各ポートは、 設定可能な幅のいずれかに指定でき、 も う一方のポートからは独立しています。 さ ら

に、 1 つのポートの読み出しポート と書き込みポートには別々の幅を設定可能です。 メモ リ内容は、

コンフ ィギュレーシ ョ ン ビッ ト ス ト リームで初期化またはク リ アできます。書き込み実行中のデー

タ出力は、 以前の出力をそのまま維持するか、 書き込まれているデータを出力するか、 上書きされ

る以前のデータを出力するかを設定できます。

7 シ リーズ FPGA のブロ ッ ク RAM には次の特長があ り ます。

• ブロ ッ クごとのメモ リ格納機能によ り、 各ブロ ッ ク RAM に 大で 36Kb のデータを格納でき

ます。

• 2 つの独立した 18Kb ブロ ッ クまたは 1 つの 36Kb ブロ ッ ク RAM をサポート します。

• 各 36Kb ブロ ッ ク RAM は SDP モードに設定でき、 データ幅を 2 倍の 72 ビッ トにできます。

18Kb ブロ ッ ク RAM も このモードに設定でき、 データ幅を 2 倍の 36 ビッ トにできます。 こ

こで、 SDP モード とは、読み出し専用ポート と書き込み専用ポートが 1 つずつあり、それぞれ

が独立したクロ ッ クで動作しているものと定義します。

• SDP モードのブロッ ク RAM では、 一方のデータ ポート を固定幅と し、 も う一方を可変幅に

できます。

• 2 つの隣接したブロッ ク RAM を組み合わせるこ とで、外部ロジッ クを使用せずに 1 つの 64Kx1メモリ を作成できます。

• 36Kb ブロ ッ ク RAM または 36Kb FIFO は 64 ビッ トの ECC (誤り訂正符号) ブロ ッ クを備え

ています。 エンコード /デコード機能が別々に使用可能です。 ECC モードでエラー挿入機能が

使用できます。

• 初期値に対する、出力の同期セッ ト / リセッ トは、ブロ ッ ク RAM 出力のラ ッチおよびレジスタ

モードの両方で使用できます。

• 同期セッ ト ピンと同期リセッ ト ピンを分離するこ とによ り、オプシ ョ ンの出力レジスタのセッ

ト / リセッ ト とブロ ッ ク RAM の出力ラ ッチ段階を個別に制御できます。

• ブロ ッ ク RAM を同期 FIFO と して構成する と、 フラグのレイテンシは安定します。

• 7 シ リーズの FPGA では、 FULL フラグにレイテンシなくアサートできます。

Page 12: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

12 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

• 18、 36、 72 ビッ ト幅のブロッ ク RAM ポートには、 バイ ト ごとに個別の書き込みイネーブル

を含めるこ とができます。 これは、 マイ クロプロセッサと インターフェイスする際に頻繁に使

用される機能です

• 各ブロッ ク RAM には、 ビルト イン デュアル クロ ッ ク FIFO メモリ と して動作するためのアド

レス シーケンス処理および制御回路がオプシ ョ ンで含まれています。 7 シ リーズ アーキテク

チャでは、 FIFO は 18Kb または 36Kb メモリ と して構成できます。

• すべての入力はポート ク ロ ッ クに同期して取り込まれ、Setup-to-Clock タイ ミ ング仕様に従い

ます。

• すべての出力は、 書き込みイネーブル (WE) ピンの状態によって、 読み出しまたは書き込み中

に読み出しになり ます。 これらの出力は、 Clock-to-Out 時間に有効になり ます。 書き込み中の

読み出しの出力には、 3 つの動作モード、 WRITE_FIRST、 READ_FIRST、 NO_CHANGE があ り ます。

• 書き込みには、 クロ ッ ク エッジが 1 つ必要です。

• 読み出しには、 クロ ッ ク エッジが 1 つ必要です。

• すべての出力ポートは、オプシ ョ ンでラ ッチまたはレジスタ付きです。別の読み出し /書き込み

を実行するまでは、 出力ポートの値は一定です。 デフォルトでは、 ブロ ッ ク RAM 出力はラ ッ

チ モードです。

• 出力データ パスにはオプシ ョ ンの内部パイプライン レジスタがあ り ます。 レジスタ モードの

使用を強く推奨します。 これによ り、 高ク ロ ッ ク レー ト での動作が可能にな り ますが、 1 クロ ッ ク サイクルのレイテンシが 追加されます。

7 シ リーズのブロ ッ ク RAM には次のよ うな使用規則があ り ます。

• ECC デコーダーの有効時 (EN_ECC_READ = TRUE)、同期セッ ト / リセッ ト (RSTRAM) ポー

トは使用できません。

• ブロ ッ ク RAM の同期出力レジスタ (オプシ ョ ン) は、DO_REG = 1 のと きに RSTREG を使用

してセッ ト またはリセッ ト (SRVAL) されます。RSTREG と REGCE のどちらが優先されるか

は、 RSTREG_PRIORITY 属性で指定します。 同期出力ラ ッチは DO_REG = 0 または 1 のと

きに RSTRAM を使用してセッ ト またはリセッ ト (SRVAL) されます。

• ブロ ッ ク RAM のアドレス ピンおよび書き込みイネーブル ピンのセッ ト アップ タイムは違反

しないよ うにします。アドレス セッ ト アップ タイムに違反する と、書き込みイネーブルが Lowであっても、 ブロ ッ ク RAM のデータ内容が破損します。

• ブロ ッ ク RAM のレジスタ モードが RSTREG で、 RSTREG_PRIORITY = REGCE の場合、

出力 DO レジスタ値を リセッ トするには、 REGCE = 1 とする必要があ り ます。 このモードで

は、ブロ ッ ク RAM アレイ データ出力ラ ッチはリセッ ト されません。ブロ ッ ク RAM のラ ッチ

モード SRTRAM の場合、出力 DO ラ ッチ値を リセッ トするにはブロ ッ ク RAM はイネーブル

(EN = 1) になっている必要があ り ます。

• ブロ ッ ク RAM プリ ミ ティブには RAMB36E1 と RAMB18E1 の 2 つがあ り ます。 ブロ ッ ク RAM のモードは、RAM_MODE 属性で SDP モードまたは TDP (True Dual-Port) モードのい

ずれかに設定します。

• 特定のブロ ッ ク RAM プリ ミ ティブを使用する と、 読み出しおよび書き込みポートに異なる幅

が選択可能です。 パリティ ビッ トはポート幅が x9、 x18、 x36 の場合のみ利用できます。 読み

出し幅が x1、 x2、 x4 のと きは使用しないでください。 読み出し幅が x1、 x2、 または x4 の場

合、 有効な書き込み幅は x1、 x2、 x4、 x8、 x16、 x32 です。 同様に、 書き込み幅が x1、 x2、 ま

たは x4 の場合、 プ リ ミ ティブの属性は 1、 2、 4、 9、 18、 あるいは 36 に設定されますが、 実

際に使用可能な読み出し幅はそれぞれ x1、 x2、 x4、 x8、 x16、 または x32 とな り ます。 表 1-1に、 ポート幅の組み合わせを示します。

Page 13: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 13UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM の説明

• RAMB36E1 の A15 ピンは、カスケード接続にのみ使用してください。それ以外では、A15 ピンは接続しないか、 High に固定してください。

• 非同期リセッ トによって EN 信号が非同期にアサート またはディアサート される と、 EN 信号

のセッ ト アップ/ホールド タイム違反となる こ とがあ り ます。 その場合、 初の読み出しまた

は書き込み動作の結果が想定した値にな り ません。 EN の非同期のアサート またはディアサー

ト が回避できない場合、 非同期の RESET のアサートおよびディ アサー ト中は EN のディ ア

サート を維持するか、 EN がアサート されてから有効なデータ サイクルが発生するまで読み出

しサイクルまたは書き込みサイクルを挿入します。PLL 信号または MMCM LOCKED 信号が

失われるか、 フ リーランニング ク ロ ッ クが停止した場合、 直ちに EN をディアサート します。

ブロック RAM の説明

7 シ リーズ デバイスには、 分散 RAM メモ リおよび高速 SelectIO™ メモ リ インターフェイスだけ

でなく、 多数の 36Kb ブロ ッ ク RAM が備わっています。 各 36Kb ブロ ッ ク RAM には、 独立して

制御される 2 つの 18Kb RAM があ り ます。 ブロ ッ ク RAM はカラムに配置され、 ブロ ッ ク RAMリ ソースの総数は 7 シ リーズ デバイスによって異なり ます (表 1-2 参照)。6Kb ブロ ッ クをカスケー

ド接続する と、 タイ ミ ング遅延を 小限に抑えて、 ビッ ト数と ワード数の多いメモリ をインプ リ メ

ン トできます。

表 1-1 : パリティ ビッ トの使用法

プリ ミテ ィブ設定

有効な読み出し幅 有効な書き込み幅読み出し幅 書き込み幅

RAMB18E1 1、 2、 4 9、 18 設定幅と同一 8、 16

RAMB18E1 9、 18 1、 2、 4 8、 16 設定幅と同一

RAMB18E1 1、 2、 4 1、 2、 4 設定幅と同一 設定幅と同一

RAMB18E1 9、 18 9、 18 設定幅と同一 設定幅と同一

RAMB36E1 1、 2、 4 9、 18、 36 設定幅と同一 8、 16、 32

RAMB36E1 9、 18、 36 1、 2、 4 8、 16、 32 設定幅と同一

RAMB36E1 1、 2、 4 1、 2、 4 設定幅と同一 設定幅と同一

RAMB36E1 9、 18、 36 9、 18、 36 設定幅と同一 設定幅と同一

注記 :

1. 一方のポート幅が 9 よ り小さ く、 も う一方が 9 以上の場合、 パリティ ビッ ト DIP/DOP は使用しないでください。

表 1-2 : 7 シリーズ デバイスのブロック RAM リソース

デバイスデバイスあたりの 36Kb ブロック

RAM の総数

デバイスあたりの 36Kb ブロック RAM カラム数

カラムあたりの 36Kb ブロック RAM ブロック数

XC7A15T 25 3 30(1)(2)(4)

XC7A35T 50 3 30(1)(2)(4)

XC7A50T 75 3 30(1)(2)

XC7A75T 105 4 40(1)(2)(4)

XC7A100T 135 4 40(1)(2)

XC7A200T 365 9 50(2)(3)

Page 14: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

14 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

デュアル ポート またはシングル ポートのエンベデッ ド RAM モジュール、ROM モジュール、同期

FIFO、 データ幅コンバーターは、 CORE Generator™ のブロッ ク メモ リ モジュールを使用してイ

ンプリ メン トできます。デュアル ク ロ ッ ク FIFO は、CORE Generator の FIFO Generator モジュー

ルを使用して作成できます。 同期または非同期 (デュアル ク ロ ッ ク ) FIFO のインプ リ メ ン トには、

専用のハード ウェア リ ソースが使用されるため、 FIFO 制御ロジッ クに追加の CLB リ ソースを使

用する必要はあ り ません。

XC7K70T 135 4 40(1)(2)

XC7K160T 325 7 50(1)(2)

XC7K325T 445 7 70(1)(2)

XC7K355T 715 12 60(2)

XC7K410T 795 12 70(1)(2)

XC7K420T 835 12 80(2)(4)

XC7K480T 955 12 80(2)

XC7V585T 795 9 90(2)

XC7V2000T 1,292 11 120(2)(5)(6)

XC7VX330T 750 11 70(7)

XC7VX415T 880 15 60(7)

XC7VX485T 1,030 15 70(2)

XC7VX550T 1,180 15 100(4)(7)

XC7VX690T 1,470 15 100(7)

XC7VX980T 1,500 17 90(7)

XC7VX1140T 1,880 16 120(5)(6)(7)

XC7VH580T 940 16 60(7)

XC7VH870T 1,410 16 90(7)

注記 :

1. (デバイスの) 右側のカラムには複数の GTP/GTX クワ ッ ドがあ り、 このカラムの各 GTP/GTX は 10 のブロ ッ ク RAM ブロ ッ クを占有します。

2. カラムには PCI Express® 用 Gen1/Gen2 インターフェイス ブロ ッ クが複数あ り、 各インターフェイス ブロッ クは 5 つのブロ ッ ク RAM ブロ ッ クを占有します。ブロ ッ ク RAM ブロッ クは、複数の PCI Express 用インターフェイス ブロ ッ クにまたがってカスケード接続できません。

3. 中央に位置する 4 つのブロ ッ ク RAM カラムには複数の GTP クワ ッ ドがあ り、 これらのカラムの各 GTP クワ ッ ドは 10 のブロ ッ ク RAM ブロ ッ クを占有します。

4. ブロ ッ ク RAM ブロ ッ クの総数はツールで制限されます。

5. デバイスの左側にあるブロ ッ ク RAM カラムでは、SLR (Super Logic Region) あたりのブロ ッ ク RAM ブロッ クの数が 2 つ少なくなっています。

6. 各 SLR にはカラムあたり 30 の 36Kb ブロッ ク RAM ブロ ッ クがあ り ます。

7. カラムには PCI Express 用 Gen3 インターフェイス ブロッ クが複数あり、各インターフェイス ブロッ クは 10 個のブロッ ク RAM ブロッ クを占有します。 ブロッ ク RAM ブロッ クは、 複数の PCI Express 用インターフェイス ブロッ クにまたがってカスケード接続できません。

表 1-2 : 7 シリーズ デバイスのブロック RAM リソース (続き)

デバイスデバイスあたりの 36Kb ブロック

RAM の総数

デバイスあたりの 36Kb ブロック RAM カラム数

カラムあたりの 36Kb ブロック RAM ブロック数

Page 15: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 15UG473 (v1.11) 2014 年 11 月 12 日

同期デュアル ポートおよびシングル ポート RAM

同期デュアル ポートおよびシングル ポート RAM

データ フロー

36Kb の TDP ブロ ッ ク RAM は、36Kb の記憶領域と完全に独立した 2 つのアクセス ポート (A および B) で構成されています。同様に、各 18Kb ブロ ッ ク RAM のデュアル ポート メモ リは、18Kbの記憶領域と完全に独立した 2 つのアクセス ポート (A および B) で構成されています。 構造は完

全に対称で、 両ポートは交換可能です。 図 1-1 に RAMB36 の TDP のデータ フローを示します。

表 1-3 にポートの機能とその説明を示します。

データの書き込み/読み出しは、 どちらか一方のポート または両方のポートで実行できます。書き込

みは、 それぞれク ロ ッ クに同期して行われ、 各ポート には、 アド レス、 データ入力、 データ出力、

クロ ッ ク、 ク ロ ッ ク イネーブル、書き込みイネーブルが含まれます。読み出しおよび書き込みは同

期で実行されます。 そのため、 1 つのクロ ッ ク エッジが必要です。

両方のポートで同じアドレスにアクセスした際に、 その調整を行う専用モニターはあ り ません。

2 つのクロ ッ クのタイ ミ ングは、 ユーザーの責任で調整して ください。 同じアドレスに同時に書き

込みを実行した場合、 物理的な破損はあ り ませんが、 書き込まれたデータは不確定になり ます。

X-Ref Target - Figure 1-1

図 1-1 : RAMB36 の TDP データ フロー

DOPA

DIPA

ADDRA

WEA

ENA

CASCADEOUTB

RSTRAMA

CLKA

RSTREGA

REGCEA

REGCEB

DIPB

ADDRB

WEB

ENB

RSTRAMB

RSTREGB

CLKB

36-Kbit Block RAM

UG473_c1_01_052610

DOPB

DOB

DOA

DIA

DIB

36 KbMemory

Array

Port A

32

4

32

4

16

4

32

4

164

32

4

Port B

CASCADEOUTA

CASCADEINBCASCADEINA

Page 16: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

16 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

読み出し

ラ ッチ モードの読み出しは、 ク ロ ッ ク エッジに同期して行われます。 読み出しアドレスが読み出

しポートに取り込まれてから、 RAM アクセス時間の後に、 格納されたデータが出力ラ ッチに読み

込まれます。出力レジスタを使用した場合は、読み出しのレイテンシが 1 ク ロ ッ ク サイクル増加し

ます。

書き込み

書き込みは、 ク ロ ッ ク エッジに同期して行われます。書き込みアドレスは書き込みポートに取り込

まれ、 入力データがメモ リに格納されます。

書き込みモード

書き込みクロッ ク エッジ後の出力ラッチのデータは、WRITE_FIRST、READ_FIRST、NO_CHANGEの 3 つの書き込みモードのいずれを設定するかで決定します。 このモードは、 コンフ ィギュレー

シ ョ ンで設定します。 各ポートに対して別々の書き込みモードを設定でき、 デフォルトのモードは

WRITE_FIRST です。 WRITE_FIRST では新たなデータが書き込まれる と同時に、 その新規デー

タが出力バスに送信され、 READ_FIRST ではあらかじめ保存されているデータが出力されます。

NO_CHANGE では、 前回の読み出し処理の出力がそのまま送信されます。

表 1-3 : TDP モードでのポートの機能および説明

ポート名 説明

DI[A|B] データ入力バス

DIP[A|B](1) データ入力パリティ バスで、 追加データ入力に使用できます。

ADDR[A|B] アドレス バス

WE[A|B] バイ ト ライ ト イネーブル

EN[A|B] 非アクティブの場合、ブロ ッ ク RAM にデータは書き込まれず、出

力バスが以前の状態に保持されます。

RSTREG[A|B] 出力レジスタの同期セッ ト / リセッ ト (DO_REG = 1)。REGCE よ り

も優先するかど うかは、 RSTREG_PRIORITY 属性で設定します。

RSTRAM[A|B] 出力データ ラ ッチの同期セッ ト / リセッ ト

CLK[A|B] ク ロ ッ ク入力

DO[A|B] データ出力バス

DOP[A|B](1) データ出力パリティ バスで、 追加データ出力に使用できます。

REGCE[A|B] 出力レジスタ ク ロ ッ ク イネーブル

CASCADEIN[A|B] 64Kx1 モードのカスケード入力

CASCADEOUT[A|B] 64Kx1 モードのカスケード出力

注記 :

1. データ パリティ ピンの詳細は、 「データ入力バス - DIADI、 DIPADIP、 DIBDI、 DIPBDIP」 を参照してください。

2. ブロ ッ ク RAM プリ ミ ティブのポート名とポート機能名は異なるこ とがあ り ます。

Page 17: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 17UG473 (v1.11) 2014 年 11 月 12 日

同期デュアル ポートおよびシングル ポート RAM

WRITE_FIRST または透過モード (デフォルト )

図 1-2 に示すよ うに、WRITE_FIRST モードでは入力データをメモリに書き込むと同時にデータ出

力にも格納されます (透過書き込み)。 こ こに示す波形は、オプシ ョ ンの出力パイプライン レジスタ

を使用しないラ ッチ モードの場合です。

READ_FIRST または書き込み前読み出しモード

READ_FIRST モードでは、書き込み先アドレスに格納されていたデータが出力ラ ッチに送信され、

それと同時に入力データがメモ リに格納されます (書き込み前に読み込み)。 図 1-3 の波形は、 オプ

シ ョ ンの出力パイプライン レジスタを使用しないラ ッチ モードの場合を示しています。

NO_CHANGE モード

NO_CHANGE モードでは、 書き込み中、 出力ラ ッチは変化しません。 図 1-4 に示すよ うに、 デー

タ出力には 後に読み込まれたデータがそのまま維持され、 同じポートでの書き込みに影響されま

せん。 こ こに示す波形は、 オプシ ョ ンの出力パイプライン レジスタを使用しないラ ッチ モードの

場合です。 このモードが も消費電力を削減できます。 また、 SDP モードのブロ ッ ク RAM では

WRITE_FIRST モードの動作と同じになるため使用できません。

X-Ref Target - Figure 1-2

図 1-2 : WRITE_FIRST モードでの波形

CLK

WE

DI

ADDR

DO

EN

Disabled Read

XXXX 1111 2222 XXXX

aa bb cc dd

0000 MEM(aa) 1111 2222 MEM(dd)

ReadWriteMEM(bb)=1111

WriteMEM(cc)=2222

UG473_c1_02_052610

X-Ref Target - Figure 1-3

図 1-3 : READ_FIRST モードでの波形

CLK

WE

DI

ADDR

DO

EN

Disabled Read

XXXX 1111 2222 XXXX

aa bb cc dd

0000 MEM(aa) old MEM(bb) old MEM(cc) MEM(dd)

ReadWriteMEM(bb)=1111

WriteMEM(cc)=2222

UG473_c1_03_052610

Page 18: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

18 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

競合の回避

7 シ リーズ FPGA のブロ ッ ク RAM メモ リは、両方のポートが任意のメモリ位置に随時アクセスで

きる TDP RAM です。 ただし、 2 つのポートから同じ メモリ位置へアクセスする際には制限があ り

ます。 このよ う なアクセスには基本的に、 両ポートで共通のク ロ ッ クを使用している場合 (同期ク

ロ ッ ク ) と、 両ポートのクロ ッ ク周波数または位相が異なる場合 (非同期クロ ッ ク ) という 2 つの場

合が考えられます。

非同期クロック

一般的には、 ク ロ ッ クは非同期であるこ とが多く、両クロ ッ クのアクティブ エッジが同時に発生す

るこ とはあ り ません。

• 両ポートで読み出しを実行する場合、 タイ ミ ングに制約はあ り ません。

• 1 つのポートで書き込みを実行中に、 も う 1 つのポートで同じ メモリ位置に対して読み出しま

たは書き込みは実行できません。したがって、READ_FIRST モードでは、格納されていたデー

タが読み出されるかが不確定であるため、 完全な非同期アプリ ケーシ ョ ンでは TDP、 SDP どちらのモードでも使用できません。非同期クロ ッ クによって 1 つのポート アドレスに対して同

時に読み出し /書き込み動作が発生する可能性がある場合は、 WRITE_FIRST モードを推奨し

ます。 これに違反する と、 シ ミ ュレーシ ョ ン モデルでエラーが発生します。 この制限を無視す

る と、 読み出しまたは書き込み動作の結果が予測できな くな り ます。 ただし、 デバイスが物理

的に破損するこ とはあ り ません。読み出し と書き込みを実行する と、書き込み位置に有効なデー

タが格納されます。

同期クロック

同期クロ ッ クは、 両ポートのクロ ッ クのエッジが同時にアクティブになる という特殊な状況です。

• 同期クロ ッ ク とは、 両方のクロ ッ ク入力ピンが同じクロ ッ クで駆動されるものと定義します。

• 両ポートで読み出しを実行する場合、 タイ ミ ングに制約はあ り ません。

• 1 つのポートで書き込みを実行中に、 も う 1 つのポート を使用して同じ メモリ位置に書き込み

はできません。 ただし、 両ポートで書き込むデータが同一の場合は例外です。

• 1 つのポートで書き込みを実行中、書き込みポートが READ_FIRST モードであれば、も う 1 つのポートで同じ メモ リ位置からデータを正し く読み出すこ とができます。 その場合、 両ポート

の DATA_OUT は書き込み前に格納されていたデータになり ます。

X-Ref Target - Figure 1-4

図 1-4 : NO_CHANGE モードでの波形

CLK

WE

DI

ADDR

DO

EN

Disable Read

XXXX 1111 2222 XXXX

aa bb cc dd

0000 MEM(aa) MEM(dd)

ReadWriteMEM(bb)=1111

WriteMEM(cc)=2222

UG473_c1_04_052610

Page 19: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 19UG473 (v1.11) 2014 年 11 月 12 日

7 シリーズ デバイスのブロック RAM のその他の機能

書き込みポートが WRITE_FIRST または NO_CHANGE モードの場合は、 読み出しポートの

DATA_OUT が無効 (不確定) になり ます。読み出しポートのモード設定は、 この動作には影響

を与えません。

7 シリーズ デバイスのブロック RAM のその他の機能

出力レジスタ (オプシ ョ ン)オプシ ョ ンの出力レジスタを使用する と、 パイプライン処理における CLB フ リ ップフロ ップへの

配線遅延が削減され、 デザインのパフォーマンスが向上します。 これらの出力レジスタには、 独立

したクロ ッ クおよびクロ ッ ク イネーブルの入力が供給されるため、入力レジスタの動作から独立し

た値が保持できます。 図 1-5 にオプシ ョ ンの出力レジスタを示します。

個別に選択可能な読み出しポート と書き込みポートの幅

各ブロッ ク RAM ポートでは、 データ幅とアドレス幅 (アスペク ト比) を制御できます。 7 シ リーズ

FPGA の TDP モードのブロ ッ ク RAM ではこの機能が拡張され、 各ポートでの読み出しおよび書

き込みに異なるデータ幅を設定できるよ うになっています。 たとえば、 ポート A が 36 ビッ トの読

み出し幅と 9 ビッ トの書き込み幅を持ち、 ポート B が 18 ビッ トの読み出し幅と 36 ビッ トの書き

込み幅を持つよ う設定可能です。詳細は、31 ページの「ブロ ッ ク RAM の属性」を参照してください。

読み出しポート と書き込みポートの幅が異なっていて、 WRITE_FIRST モードが設定されている場

合、有効なすべての書き込みバイ トに対して、 DO には有効な新規データが現れます。有効となって

いないすべてのバイ トに対しては、 メモ リに保存された以前のデータが DO ポートに出力されます。

読み出しポー ト と書き込みポー ト の幅を個別に設定できる こ とによ り、 ブロ ッ ク RAM に CAM(Content Addressable Memory) を効率的にインプリ メン トできます。 このオプシ ョ ンは、 7 シ リーズ

FPGA のブロッ ク RAM を TDP モード と した場合、すべてのポート サイズとモードで使用可能です。

Simple Dual-Port (SDP) ブロック RAM18Kb ブロ ッ クおよび 36Kb ブロ ッ クはそれぞれ、 SDP RAM モード と しても構成できます。 この

モードでは、ブロ ッ ク RAM のポート幅が 2 倍になり、18Kb ブロ ッ ク RAM では 36 ビッ ト 、36Kbブロ ッ ク RAM では 72 ビッ ト とな り ます。SDP モードのブロ ッ ク RAM は、ポート A を読み出し

X-Ref Target - Figure 1-5

図 1-5 : ブロック RAM の論理図 (1 ポートのみ表示)

Register

OptionalInverter

Latches Register

Address

DI

WEEN

CLK

WriteStrobe

ReadStrobe

QD QD

DO

Control Engine

Configurable OptionsUG473_c1_05_052610

MemoryArray

(common toboth ports)

LatchEnable

Page 20: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

20 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

ポート、 ポート B を書き込みポート と し、読み出し と書き込みを同時に独立して実行できます。読

み出しポート と書き込みポートが同じデータ位置に同時にアクセスする と、TDP モードのポート競

合と同様に競合が発生します。 SDP モードのブロ ッ ク RAM では、 コンフ ィギュレーシ ョ ン ポー

トからのリードバッ クがサポート されています。 7 シ リーズ FPGA はこれらのモードを SDP (READ_FIRST、 WRITE_FIRST) でサポート します。 図 1-6 に、 SDP モードにおける RAMB36の SDP データ フローを示します。

X-Ref Target - Figure 1-6

図 1-6 : RAMB36 の SDP データ フロー

表 1-4 : SDP モードでのポートの機能および説明

ポート名 説明

DO データ出力バス

DOP データ出力パリティ バス

DI データ入力バス

DIP データ入力パリティ バス

RDADDR 読み出しデータ アドレス バス

RDCLK 読み出しデータ ク ロ ッ ク

RDEN 読み出しポート イネーブル

REGCE 出力レジスタ ク ロ ッ ク イネーブル

SBITERR シングル ビッ ト エラー ステータス

DBITERR ダブル ビッ ト エラー ステータス

ECCPARITY ECC エンコーダー出力バス

SSR 出力レジスタまたはラ ッチの同期セッ ト / リセッ ト

WE バイ ト ライ ト イネーブル

WRADDR 書き込みデータ アドレス バス

WRCLK 書き込みデータ ク ロ ッ ク

WREN 書き込みポート イネーブル

注記 :

1. ブロ ッ ク RAM プリ ミ ティブのポート名とポート機能名は異なるこ とがあ り ます。

36 Kb Memory Array

DO

RDEN

RDADDR

RDCLK

REGCE

DIP

WRADDR

WE

WRCLK

WREN

DI

UG473_c1_06_011414

64

8

8

15

15

64

DOP8

SSR

Page 21: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 21UG473 (v1.11) 2014 年 11 月 12 日

7 シリーズ デバイスのブロック RAM のその他の機能

カスケード接続が可能なブロック RAM7 シ リ ーズのブロ ッ ク RAM アーキテクチャでは、 2 つの 32Kx1 RAM を組み合わせて 1 つの

64Kx1 RAM を作成できます。 この際に、 ローカル インターコネク トや追加の CLB ロジッ クの使

用は不要です。隣接する 2 つのブロ ッ ク RAM をカスケード接続する と、64Kx1 ブロ ッ ク RAM を作成できます。 ただし、 ブロ ッ ク RAM を 2 つカスケード接続して、 ブロ ッ ク RAM のワード数を

増やすこ とができるのは、 64Kx1 モードのみです。カスケード接続可能なブロ ッ ク RAM について

は、「RAMB18E1 および RAMB36E1 プリ ミ ティブの設計上のその他の注意事項」 で詳し く説明し

ています。 これ以外の方法によるビッ ト数と ワード数の拡張については、 「大規模な RAM 構造の

作成」 を参照してください。図 1-7 に、 カスケード モードでポート を接続したブロ ッ ク RAM を示

します。

バイ ト ライ ト イネーブル

ブロ ッ ク RAM にはバイ ト ラ イ ト イネーブル機能があ り、 8 ビッ ト (1 バイ ト ) 単位で入力データ

を書き込むこ とができます。TDP モードの RAMB36E1 には、4 つの独立したバイ ト ライ ト イネー

ブル入力があ り ます。 また、 SDP モードのブロ ッ ク RAM (RAMB36E1) には、 8 つの独立したバ

イ ト ライ ト イネーブル入力があ り ます。表 1-5 に、36Kb および 18Kb ブロ ッ ク RAM で利用でき

るバイ ト ライ ト イネーブルの数を示します。 各バイ ト ライ ト イネーブルは、 1 バイ トの入力デー

タ と 1 パリティ ビッ トに対応しています。データ幅のコンフ ィギュレーシ ョ ンにかかわらず、すべ

てのバイ ト ラ イ ト イネーブル入力を駆動する必要があ り ます。 この機能は、 ブロ ッ ク RAM を使

用してマイ ク ロプロセッサと通信する場合に有用です。 バイ ト ラ イ ト イネーブル機能は、 デュア

ル ク ロ ッ ク FIFO や ECC モード では使用でき ません。 バイ ト ラ イ ト イネーブルの詳細は、

「RAMB18E1 および RAMB36E1 プ リ ミ テ ィブの設計上のその他の注意事項」 を参照して くださ

い。 図 1-8 に、 RAMB36E1 のバイ ト ライ ト イネーブルのタイ ミ ング図を示します。

X-Ref Target - Figure 1-7

図 1-7 : カスケード接続可能なブロック RAM

DONot Used

DI DI

CASCADEINConnect to logic High or Low

CASCADEOUT(No Connect)

A[14:0]

WE

DO

A15A15

A[14:0]

DO

DI DI

A[14:0]

WE

DO

D Q

D Q

D Q

D Q

D Q

D Q

D Q

D Q

A15A15

A[14:0]

WE[3:0]

WE[3:0]

Interconnect Block RAM

RAM_EXTENSION = UPPER(0)

RAM_EXTENSION = LOWER(1)

01

0

1

0

1

01

UG473_c1_07_040411

CASCADEIN of Top

CASCADEOUT of Bottom

OptionalOutput FF

OptionalOutput FF

Page 22: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

22 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

RAMB36E1 で 36 ビッ ト幅または 18 ビッ ト幅のデータ パスを設定する と、 データ ワード内で指

定したバイ ト位置への書き込みを任意のポートで制御できます。READ_FIRST モードの場合、DOバスにはアドレス指定したワード全体が書き込み前の内容で現れます。 WRITE_FIRST の場合は、

DO には新たに書き込まれた有効なバイ ト と未書き込みバイ トのメモ リの初期内容の組み合わせが

出力されます。

ブロック RAM の ECC (誤り訂正符号)36Kb ブロ ッ ク RAM でのブロ ッ ク RAM および FIFO インプリ メンテーシ ョ ンでは、 64 ビッ トの

ECC (誤り訂正符号) を備えるこ とができます。この機能を使用する と、ブロ ッ ク RAM の読み出し

データのシングル ビッ トおよびダブル ビッ ト エラーが検出できます。シングル ビッ ト エラーは出

力データで修正されます。

未使用ブロック RAM のパワー ゲーティング

7 シ リーズ デバイスは、 未使用またはインスタンシエート されていないブロ ッ ク RAM の電源を

18Kb 単位で細かく切断します。 デザイン内でインスタンシエート されていないすべての 18K ブロ ッ クに対してパワー ゲーディングを有効にするこ とで、 消費電力を削減できます。 パワー ゲー

ティングを用いた 18K ブロ ッ クは、コンフ ィギュレーシ ョ ン中に初期化されず、コンフ ィギュレー

シ ョ ン インターフェイスから リードバッ クできません。 従来の FPGA ファ ミ リ とは異な り、 コン

フ ィギュレーシ ョ ンおよびリードバッ クには有効なビッ ト ス ト リームが必要です。 空白のビッ ト ス

ト リームは使用できません。 インスタンシエート されていないブロ ッ ク RAM へのアクセスは、 内

部動作を無効にするこ とによって避けるこ とができます。

表 1-5 : 使用可能なバイ ト ライ ト イネーブル

プリ ミテ ィブ 大ビッ ト幅 バイ ト ライ ト イネーブル数

RAMB36E1 TDP モード 36 4

RAMB36E1 SDP モード 72 8

RAMB18E1 TDP モード 18 2

RAMB18E1 SDP モード 36 4

X-Ref Target - Figure 1-8

図 1-8 : バイ ト ライ ト動作の波形 (x36 WRITE_FIRST)

CLK

WE

DI

ADDR

DO

EN

Disabled Read

XXXX 1111 2222

1111 0011

XXXX

aa bb bb cc

0000 MEM(aa) 1111 1122 MEM(cc)

ReadWriteMEM(bb)=1111

Byte WriteMEM(bb)=1122

UG473_c1_08_052610

Page 23: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 23UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のライブラリ プリ ミテ ィブ

ブロック RAM のライブラリ プリ ミテ ィブ

7 シ リーズ FPGA のブロ ッ ク RAM のライブラ リ プリ ミ ティブ、 RAMB18E1 および RAMB36E1はすべてのブロ ッ ク RAM コンフ ィギュレーシ ョ ンの基本構築ブロ ッ クです。 その他のブロ ッ ク

RAM のプリ ミティブおよびマクロは、 このプリ ミティブを基にしています。ブロッ ク RAM の属性

によっては、1 つのプリ ミティブでのみ設定できます (パイプライン レジスタ、カスケードなど)。詳

細は、 「ブロ ッ ク RAM の属性」 を参照してください。

9 ビッ ト幅 (8+1)、 18 ビッ ト幅 (16+2)、 36 ビッ ト幅 (32+4) のコンフ ィギュレーシ ョ ンでは、 入力

および出力データ バスは 2 つのバスで表されます。各バイ トに関連付けられている 9 番目のビッ ト

にはパリ テ ィ ビッ ト (誤り訂正ビッ ト ) を保存するか、 追加のデータ ビッ ト と して使用できます。

この 9 番目のビッ トには、特定の機能はあ り ません。パリティ ビッ ト用に別のバスを使用した方が

良いデザインもあ り ますが、 たいていの場合は、 通常のデータ バスとパリティ バスを一緒にして、

9 ビッ ト、 18 ビッ ト 、 または 36 ビッ ト バスを使用しても問題あ り ません。読み出し /書き込み、お

よび保存はパリティビッ ト を含めてすべてのビッ トで同様に行われます。

図 1-9 に、 36Kb の TDP のブロ ッ ク RAM プリ ミ ティブ (RAMB36) の I/O ポート を示します。

表 1-6 にプリ ミ ティブの一覧を示します。

X-Ref Target - Figure 1-9

図 1-9 : ブロック RAM ポート信号 (RAMB36E1)

DOPADOP

DOPBDOP

DIADI

DIPADIPADDRARDADDR

WEAENARDEN

RSTREGARSTREG

CLKARDCLK

DOADO

DOBDO

RSTRAMARSTRAM

REGCEAREGCE

DIBDIDIPBDIP

ADDRBWRADDR

WEBWEENBWREN

RSTREGBRSTRAMB

REGCEB

CLKBWRCLK

UG473_c1_09_052610

32

4

16

4

32

4

32

4

32

4

16

8

CASCADEOUTA CASCADEOUTB

CASCADEINA CASCADEINB

Page 24: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

24 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

表 1-7 と表 1-8 に、表 1-6 で示したプリ ミ ティブの各ポート名と説明を示します。ECC ポートにつ

いては、 第 3 章 「ビルト イン誤り訂正」 で説明します。

表 1-6 : 7 シリーズ FPGA のブロック RAM および FIFO プリ ミテ ィブ

プリ ミテ ィブ 説明

RAMB36E1 TDP モードでは、 x1、 x2、 x4、 x9、 x18、 x36 のポート幅をサポート します。

SDP モードでは、読み出し /書き込みポート幅は x64 または x72 で、も う一方のポート幅は x1、x2、x4、x9、 x18、 x36、 x72 です。

ECC モードでは、 64 ビッ ト ECC エンコード /デコードをサポート します。

RAMB18E1 TDP モードでは、 x1、 x2、 x4、 x9、 x18 のポート幅をサポート します。

SDP モードでは、読み出し /書き込みポート幅は x32 または x36 で、も う一方のポート幅は x1、x2、x4、x9、 x18、 x36 です。

FIFO36E1 FIFO36 モードでは、 x4、 x9、 x18、 x36 のポート幅をサポート します。

FIFO36_72 モードでは、 ポート幅は x72 です (オプシ ョ ンで ECC をサポート )。

FIFO18E1 FIFO18 モードでは、 x4、 x9、 x18 のポート幅をサポート します。

FIFO18_36 モードでは、 ポート幅は x36 です。

表 1-7 : RAMB36E1 のポート名と説明

ポート名 説明

DIADI[31:0] ポート A データ入力。 アドレスは ADDRARDADDR で指定します。 SDP モードでのポート名

マッピングは、 表 1-13 を参照してください。

DIPADIP[3:0] ポート A データ パリティ入力。 アドレスは ADDRARDADDR で指定します。 SDP モードでの

ポート名マッピングは、 表 1-13 を参照してください。

DIBDI[31:0] ポート B データ入力。 アドレスは ADDRBWRADDR で指定します。 SDP モードでのポート名

マッピングは、 表 1-13 を参照してください。

DIPBDIP[3:0] ポート B データ パリティ入力。 アドレスは ADDRBWRADDR で指定します。 SDP モードでの

ポート名マッピングは、 表 1-13 を参照してください。

ADDRARDADDR[15:0] ポート A アドレス入力バス。 RAM_MODE = SDP の場合、 RDADDR バスとな り ます。

ADDRBWRADDR[15:0] ポート B アドレス入力バス。 RAM_MODE = SDP の場合、 WRADDR バスとな り ます。

WEA[3:0] ポート A バイ ト ライ ト イネーブル。 RAM_MODE = SDP の場合は使用しません。

WEBWE[7:0] ポート B バイ ト ライ ト イネーブル。 RAM_MODE = SDP の場合、バイ ト ライ ト イネーブルと

なり ます。

ENARDEN ポート A イネーブル。 RAM_MODE = SDP の場合、 RDEN とな り ます。

ENBWREN ポート B イネーブル。 RAM_MODE = SDP の場合、 WREN とな り ます。

RSTREGARSTREG 同期出力レジスタのセッ ト / リセッ ト 。 SRVAL_A (DOA_REG = 1) で初期化します。 REGCE より も優先するかど うかは RSTREG_PRIORITY_A で設定します。RAM_MODE = SDP の場合、

RSTREG とな り ます。

RSTREGB 同期出力レジスタのセッ ト / リセッ ト 。 SRVAL_B (DOB_REG = 1) で初期化します。 REGCE より も優先するかど うかは、 RSTREG_PRIORITY_B で設定します。

Page 25: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 25UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のライブラリ プリ ミテ ィブ

RSTRAMARSTRAM 同期出力ラ ッチのセッ ト / リセッ ト 。SRVAL_A (DOA_REG = 0) で初期化します。RAM_MODE= SDP の場合、 RSTRAM とな り ます。

RSTRAMB 同期出力ラ ッチのセッ ト / リセッ ト 。 SRVAL_B (DOB_REG = 0) で初期化します。

CLKARDCLK ポート A ク ロ ッ ク入力。 RAM_MODE = SDP の場合、 RDCLK とな り ます。

CLKBWRCLK ポート B ク ロ ッ ク入力。 RAM_MODE = SDP の場合、 WRCLK とな り ます。

REGCEAREGCE ポート A 出力レジスタ ク ロ ッ ク イネーブル (DOA_REG = 1)。 RAM_MODE = SDP の場合、

REGCE とな り ます。

REGCEB ポート B 出力レジスタ ク ロ ッ ク イネーブル (DOB_REG = 1)。

CASCADEINA ポート A カスケード入力。 RAM_MODE = TDP の場合のみ使用します。

CASCADEINB ポート B カスケード入力。 RAM_MODE = TDP の場合のみ使用します。

CASCADEOUTA ポート A カスケード出力。 RAM_MODE = TDP の場合のみ使用します。

CASCADEOUTB ポート B カスケード出力。 RAM_MODE = TDP の場合のみ使用します。

DOADO[31:0] ポート A データ出力バス。 アドレスは ADDRARDADDR で指定します。 SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOPADOP[3:0] ポート A パリティ出力バス。アドレスは ADDRARDADDR で指定します。SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOBDO[31:0] ポート B データ出力バス。 アドレスは ADDRBWRADDR で指定します。 SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOPBDOP[3:0] ポート B パリティ出力バス。アドレスは ADDRBWRADDR で指定します。SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

表 1-8 : RAMB18E1 のポート名と説明

ポート名 説明

DIADI[15:0] ポート A データ入力。 アドレスは ADDRARDADDR で指定します。 SDP モードでのポート名

マッピングは、 表 1-13 を参照してください。

DIPADIP[1:0] ポート A データ パリティ入力。 アドレスは ADDRARDADDR で指定します。 SDP モードでの

ポート名マッピングは、 表 1-13 を参照してください。

DIBDI[15:0] ポート B データ入力。 アドレスは ADDRBWRADDR で指定します。 SDP モードでのポート名

マッピングは、 表 1-13 を参照してください。

DIPBDIP[1:0] ポート B データ パリティ入力。アドレスは ADDRBWRADDR で指定します。SDP モードでの

ポート名マッピングは、 表 1-13 を参照してください。

ADDRARDADDR[13:0] ポート A アドレス入力バス。 RAM_MODE = SDP の場合、 RDADDR バスとな り ます。

ADDRBWRADDR[13:0] ポート B アドレス入力バス。 RAM_MODE = SDP の場合、 WRADDR バスとな り ます。

WEA[1:0] ポート A バイ ト ライ ト イネーブル。 RAM_MODE = SDP の場合は使用しません。

WEBWE[3:0] ポート B バイ ト ライ ト イネーブル (WEBWE [1:0])。 RAM_MODE = SDP の場合、 バイ ト ライ ト イネーブルとなり ます。

ENARDEN ポート A イネーブル。 RAM_MODE = SDP の場合、 RDEN とな り ます。

表 1-7 : RAMB36E1 のポート名と説明 (続き)

ポート名 説明

Page 26: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

26 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

ブロック RAM のポート信号

ブロ ッ ク RAM の各ポートは、同じ 36Kb メモ リ セルのセッ トにアクセスしますが、動作はそれぞ

れ独立しています。

クロック - CLKARDCLK、 CLKBWRCLK各ポートは、それぞれのクロ ッ ク ピンに完全に同期します。すべてのポートの入力ピンにはセッ ト

アップ タイムがあ り、 CLK ピンを基準と します。 また、 出力データ バスの Clock-to-Out も CLKピンを基準と します。 ク ロ ッ クの極性は設定変更可能で、 デフォルトでは立ち上がりエッジとなっ

ています。 SDP モードでは、 CLKA ポートが RDCLK とな り、 CLKB ポートが WRCLK とな り

ます。

ENBWREN ポート B イネーブル。 RAM_MODE = SDP の場合、 WREN とな り ます。

RSTREGARSTREG 同期出力レジスタのセッ ト / リセッ ト 。 SRVAL_A (DOA_REG = 1) で初期化します。 REGCE より も優先するかど うかは RSTREG_PRIORITY_A で設定します。RAM_MODE = SDP の場合、

RSTREG とな り ます。

RSTREGB 同期出力レジスタのセッ ト / リセッ ト 。 SRVAL_B (DOB_REG = 1) で初期化します。 REGCE より も優先するかど うかは、 RSTREG_PRIORITY_B で設定します。

RSTRAMARSTRAM 同期出力ラ ッチのセッ ト / リセッ ト 。SRVAL_A (DOA_REG = 0) で初期化します。RAM_MODE= SDP の場合、 RSTRAM とな り ます。

RSTRAMB 同期出力ラ ッチのセッ ト / リセッ ト 。 SRVAL_B (DOB_REG = 0) で初期化します。

CLKARDCLK ポート A ク ロ ッ ク入力。 RAM_MODE = SDP の場合、 RDCLK とな り ます。

CLKBWRCLK ポート B ク ロ ッ ク入力。 RAM_MODE = SDP の場合、 WRCLK とな り ます。

REGCEAREGCE ポート A 出力レジスタ ク ロ ッ ク イネーブル (DOA_REG = 1)。 RAM_MODE = SDP の場合、

REGCE とな り ます。

REGCEB ポート B 出力レジスタ ク ロ ッ ク イネーブル (DOB_REG = 1)。

DOADO[15:0] ポート A データ出力バス。 アドレスは ADDRARDADDR で指定します。 SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOPADOP[1:0] ポート A パリティ出力バス。アドレスは ADDRARDADDR で指定します。SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOBDO[15:0] ポート B データ出力バス。 アドレスは ADDRBWRADDR で指定します。 SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOPBDOP[1:0] ポート B パリティ出力バス。アドレスは ADDRBWRADDR で指定します。SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

表 1-8 : RAMB18E1 のポート名と説明 (続き)

ポート名 説明

Page 27: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 27UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のポート信号

イネーブル - ENARDEN、 ENBWRENイネーブル ピンは、ポートの読み出し、書き込み、およびセッ ト / リセッ ト機能を制御します。ポー

トのイネーブル ピンが非アクティブのと き、 出力ピンは前の状態を維持し、 データはメモ リ セル

に書き込まれません。イネーブルの極性は設定変更可能で、デフォルトではアクティブ High となっ

ています。 SDP モードでは、 ENA ポートが RDEN とな り、 ENB ポートが WREN とな り ます。

バイ ト ライ ト イネーブル - WEA、 WEBWEデータ入力バスの内容を指定したメモ リ位置に書き込むには、 ク ロ ッ クの立ち上がりエッジ前の

セッ ト アップ タイム中に EN と WE の両方がアクティブになる必要があ り ます。データが出力ラ ッ

チに読み込まれるかど うかは、書き込みモード (WRITE_FIRST、 READ_FIRST、 NO_CHANGE)の設定によって決ま り ます。 WE が非アクティブで、 EN がアクティブの場合は読み出し処理が行

われ、 書き込みモードの設定にかかわらず、 アドレス バスで指定されたメモ リ セルの内容がデー

タ出力バスに送信されます。 書き込みイネーブル ピンの極性は変更できず、 常にアクティブ Highです。 SDP モードでは、 WEBWE[7:0] ポートがバイ ト ラ イ ト イネーブルとな り ます。 TDP モー

ドでは、WEA[3:0] と WEB[3:0] がそれぞれポート A とポート B のバイ ト ラ イ ト イネーブルとな

り ます。

レジスタ イネーブル - REGCEA、 REGCE、 REGCEBレジスタ イネーブル ピン (REGCE) は、 オプシ ョ ンの出力レジスタを制御します。 RAM がレジス

タ モードの場合、REGCE = 1 と指定する と、ク ロ ッ ク エッジで出力がレジスタに取り込まれます。

REGCE の極性は変更できず、 常にアクティブ High です。 SDP モードでは、 REGCEA ポートが

REGCE とな り ます。

セッ ト /リセッ ト

RSTREGARSTREG、 RSTREGB、 RSTRAMARSTRAM、 RSTRAMB

ラ ッチ モードでは、 RSTRAM ピンによってデータ出力ラ ッチに SRVAL の値が同期で格納されま

す。詳細は、 31 ページの 「ブロ ッ ク RAM の属性」 を参照してください。 オプシ ョ ンの出力レジス

タが有効の場合 (DO_REG = 1)、RSTREG 信号によってデータ出力レジスタに SRVAL の値が同期

的に格納されます。 RSTREG と REGCE のどちらを優先するかは、 RSTREG_PRIORITY 属性で

指定します。データ出力ラ ッチまたは出力レジスタは、パリティ ビッ ト を含め同期で 0 または 1 にアサート されます。 各ポートには、 それぞれ 36 ビッ トの SRVAL[A|B] 属性が指定されます。 この

初期化によって RAM メモ リ セルが変化するこ とはな く、も う 1 つのポートでの書き込みにも影響

を与えません。 どちらの信号も極性は設定変更可能で、 デフォル トではアクティブ High となって

います。SDP モードでは、RSTREGA ポートが RSTREG とな り、RSTRAMA ポートが RSTRAMとな り ます。

アドレス バス - ADDRARDADDR、 ADDRBWRADDRアドレス バスは、読み出しまたは書き込みを実行する メモ リ セルを選択します。SDP モードでは、

ADDRA ポートが RDADDR とな り、ADDRB ポートが WRADDR とな り ます。表 1-9、表 1-10、表 1-11、 表 1-12 に示すよ うに、 RAMB18E1 または RAMB36E1 のアドレス バス幅は、 ポートの

データ ビッ ト幅によって決ま り ます。

Page 28: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

28 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

表 1-9 : RAMB18E1 のポート比 (TDP モード )

ポートのデータ幅 ポートのアドレス幅 ワード数 ADDR バスDI バス

DO バス

DIP バス

DOP バス

1 14 16,384 [13:0] [0] NA

2 13 8,192 [13:1] [1:0] NA

4 12 4,096 [13:2] [3:0] NA

9 11 2,048 [13:3] [7:0] [0]

18 10 1,024 [13:4] [15:0] [1:0]

表 1-10 : RAMB18E1 のポート比 (SDP モード )

ポートの

データ幅(1)も う一方の

ポート幅

ポートの

アドレス幅ワード数 ADDR バス

DI バス

DO バス

DIP バス

DOP バス

32 1 14 16,384 [13:0] [0] NA

32 2 13 8,192 [13:1] [1:0] NA

32 4 12 4,096 [13:2] [3:0] NA

36 9 11 2,048 [13:3] [7:0] [0]

36 18 10 1,024 [13:4] [15:0] [1:0]

36 36 9 512 [13:5] [31:0] [3:0]

注記 :

1. 読み出しまたは書き込みポートの幅は x32 または x36 で固定です。

表 1-11 : RAMB36E1 のポート比 (TDP モード )

ポートのデータ幅 ポートのアドレス幅 ワード数 ADDR バスDI バス

DO バス

DIP バス

DOP バス

1 15 32,768 [14:0] [0] NA

2 14 16,384 [14:1] [1:0] NA

4 13 8,192 [14:2] [3:0] NA

9 12 4,096 [14:3] [7:0] [0]

18 11 2,048 [14:4] [15:0] [1:0]

36 10 1,024 [14:5] [31:0] [3:0]

1 (カスケード ) 16 65536 [15:0] [0] NA

表 1-12 : RAMB36E1 のポート比 (SDP モード )

ポートの

データ幅(1)も う一方の

ポート幅

ポートの

アドレス幅ワード数 ADDR バス

DI バス

DO バス

DIP バス

DOP バス

64 1 15 32,768 [14:0] [0] NA

64 2 14 16,384 [14:1] [1:0] NA

64 4 13 8,192 [14:2] [3:0] NA

72 9 12 4,096 [14:3] [7:0] [0]

72 18 11 2,048 [14:4] [15:0] [1:0]

Page 29: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 29UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のポート信号

RAMB36E1 を使用するカスケード接続可能なブロ ッ ク RAM の場合、 データ幅は 1 ビッ トで、 ア

ドレス バス幅は 16 ビッ ト [15:0] になり ます。アドレス ビッ ト 15 は、カスケード接続可能なブロ ッ

ク RAM でのみ使用されます。 それ以外のブロ ッ ク RAM では High に接続してください。

データおよびアドレス ピンのマッピングについては、「RAMB18E1 および RAMB36E1 プリ ミ ティ

ブの設計上のその他の注意事項」 で詳し く説明します。

表 1-13 に SDP モードにおけるポート名のマッピングを示します。 SDP モードにおけるデータ フローについては、 20 ページの図 1-6 に示しています。

データ入力バス - DIADI、 DIPADIP、 DIBDI、 DIPBDIPデータ入力バスは、 RAM に書き込むデータ値を供給します。 通常のデータ入力バス (DI) とパ リ

テ ィ データ入力バス (DIP) (使用可能な場合) の幅を合計したものがポート幅にな り ます。 たとえ

ば、 表 1-9 ~表 1-12 に示すよ うに、 36 ビッ トのポート データ幅は DI[31:0] と DIP[3:0] で表され

ます。 SDP モードでのポート名マッピングは、 表 1-13 を参照してください。

データ出力バス - DOADO、 DOPADOP、 DOBDO、 DOPBDOP読み出しでは、 後のアクティブなクロ ッ ク エッジでアドレス バスによ り指定されたメモ リ セル

の内容が、データ出力バスに送信されます。WRITE_FIRST または READ_FIRST モードの書き込

みでは、 書き込み中の値または書き込み前に保存されていた値がデータ出力バスに送信されます。

NO_CHANGE モードの書き込みでは、 データ出力バスは変化しません。 表 1-9 ~表 1-12 に示す

よ うに、 通常のデータ出力バス (DO) とパリ ティ データ出力バス (DOP) (使用可能な場合) の幅を

合計したものがポート幅になり ます。 SDP モードでのポート名マッピングは、 表 1-13 を参照して

ください。

72 36 10 1,024 [14:5] [31:0] [3:0]

72 72 9 512 [14:6] [63:0] [7:0]

注記 :

1. 読み出しまたは書き込みポートの幅は x64 または x72 で固定です。

表 1-12 : RAMB36E1 のポート比 (SDP モード ) (続き)

ポートの

データ幅(1)も う一方の

ポート幅

ポートの

アドレス幅ワード数 ADDR バス

DI バス

DO バス

DIP バス

DOP バス

表 1-13 : SDP モードにおけるポート名のマッピング

SDP モード時の RAMB18E1 SDP モード時の RAMB36E1

X36 モード (幅 = 36) X18 モード (幅 18) X72 モード (幅 = 72) X36 モード (幅 36)

DI[15:0] = DIADI[15:0] DI[15:0] = DIBDI[15:0] DI[31:0] = DIADI[31:0] DI[31:0] = DIBDI[31:0]

DIP[1:0] = DIPADI[1:0] DIP[1:0] = DIPBDIP[1:0] DIP[3:0] = DIPADI[3:0] DIP[3:0] = DIPBDIP[3:0]

DI[31:16] = DIBDI[15:0] DI[63:32] = DIBDI[31:0]

DIP[3:2] = DIPBDIP[1:0] DIP[7:4] = DIPBDIP[3:0]

DO[15:0] = DOADO[15:0] DO[15:0] = DOADO[15:0] DO[31:0] = DOADO[31:0] DO[31:0] = DOADO[31:0]

DOP[1:0] = DOPADOP[1:0] DOP[1:0] = DOPADOP[1:0] DOP[3:0] = DOPADOP[3:0] DOP[3:0] = DOPADOP[3:0]

DO[31:16] = DOBDO[15:0] DO[63:32] = DOBDO[31:0]

DOP[3:2] = DOPBDOP[1:0] DOP[7:4] = DOPBDOP[3:0]

Page 30: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

30 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

カスケード入力

CASCADEINA、 CASCADEINB、 CASCADEOUTA、 CASCADEOUTB

CASCADEIN/CASCADEOUT ピンは 2 つのブロ ッ ク RAM を接続して 64Kx1 モード とする場合

に使用します (図 1-10 参照)。 UPPER に設定したブロッ ク RAM の CASCADEIN ピンは、対応す

るポートの LOWER ブロ ッ クの CASCADEOUT ピンに接続されます。 カスケード モードを使用

しない場合、 このピンを接続する必要はあ り ません。 詳細は、 「カスケード接続が可能なブロ ッ ク

RAM」 を参照してください。 カスケード接続を利用できるのは、 TDP モードの場合のみです。

制御ピンの反転

各ポー ト の 8 つの制御ピン (CLK、 EN、 RSTREG、 RSTRAM) は個別に反転でき ます。 EN、

RSTREG、RSTRAM 制御信号はアクティブ High またはアクティブ Low のどちらにでも設定でき

(デフォルトはアクティブ High)、アクティブ ク ロ ッ クは立ち上がりエッジにも立ち下がりエッジに

も設定できます (デフォルトは立ち上がりエッジ)。反転に、追加のロジッ ク リ ソースは必要あ り ま

せん。

GSR

7 シ リーズ デバイスのグローバル セッ ト / リ セッ ト (GSR) 信号は、 デバイスのコンフ ィギュレー

シ ョ ン完了時にアクティブになる非同期のグローバル信号です。GSR を使用する と、7 シ リーズ デバイスの初期状態をいつでも復元できます。 GSR によ り、出力ラ ッチは INIT (SDP モードの場合)または INIT_A および INIT_B の値 (TDP モードの場合) に初期化されます。 詳細は、 「ブロ ッ ク

RAM の属性」 を参照してください。 内部メモ リの内容には影響しません。 GSR はグローバル信号

なので、 ファンクシ ョ ン レベル (ブロ ッ ク RAM プリ ミ ティブ) の入力ピンはあ り ません。 GSR をアサート している間は、 書き込みが正し く実行されないこ とがあ り ます。

未使用の入力

未使用のデータ入力は Low に接続してください。 また、未使用のアドレス入力は High に接続して

ください。

X-Ref Target - Figure 1-10

図 1-10 : カスケード接続した 2 つの RAMB36E1

UG473_c1_10_040411

UpperRAMB36E1

LowerRAMB36E1

CASCADEINA CASCADEINB

CASCADEOUTA CASCADEOUTB

1 1

Page 31: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 31UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のアドレス マップ

ブロック RAM のアドレス マップ

各ポー ト は、 RAMB18E1 か RAMB36E1 かによ って異なるア ド レ ス指定方法を使用し、 同じ

18,432 個または 36,864 個のメモ リ セルにアクセスします。特定のポート幅での物理的な RAM の位置は、 次の式によって決定されます (2 つのポートが異なる比率の場合のみ参照)。

END = ((ADDR + 1) Width) -1

START = ADDR Width

表 1-14 に、 各ポート幅の下位のアドレス マッピングを示します。

ブロック RAM の属性

すべての属性のコード例は、 「VHDL または Verilog コードでのブロ ッ ク RAM の初期化」 に記載

されています。 これらの属性の使用については、「RAMB18E1 および RAMB36E1 プリ ミ ティブの

設計上のその他の注意事項」 で詳細に説明しています。

メモリ内容の初期化 - INIT_xxメモ リ内容は、 コンフ ィギュレーシ ョ ン ビッ ト ス ト リームで初期化またはク リ アできます。旧世代

の Virtex デバイスでは、空白のビッ ト ス ト リームを使用してメモリ内容の初期化またはリードバッ

クが可能でした。 7 シ リーズ デバイスは、 パワー ゲーティング機能のため、 標準でブロ ッ ク RAMの初期化またはリードバッ クに有効なビッ ト ス ト リームが必要です。 インスタンシエート されてい

ないパワー ゲーティングされたブロ ッ ク RAM の初期化またはリードバッ クは、 22 ページの 「未

使用ブロ ッ ク RAM のパワー ゲーティング」 を参照して ください。

INIT_xx 属性では、 初のメモ リ内容を定義します。 ブロ ッ ク RAM メモ リは、 デフォルトでは、

デバイスのコンフ ィギュレーシ ョ ン シーケンス中にすべて 0 に初期化されます。RAMB18E1 では

INIT_00 ~ INIT_3F の 64 個の初期化属性を使用し、RAMB36E1 では INIT_00 ~ INIT_7F の 128個の初期化属性を使用して、 通常のメモ リ内容を指定します。 各 INIT_xx は、 16 進数で表した 64桁のビッ ト ベクターです。一部の内容だけを初期化するこ と も可能です。 この場合、初期値を指定

した部分以外は自動的に 0 になり ます。

各 INIT_xx 属性のビッ ト位置は、 次の式で決ま り ます。 16 進数 (xx) を 10 進数に変換した値を yyとする と、 INIT_xx は次のメモ リ セルに対応します。

• 開始セル [(yy + 1) 256] – 1

• 終了セル (yy) 256

表 1-14 : ポートのアドレス マッピング

ポート

パリテ ィ

位置データ位置

1 N.A. 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

4 7 6 5 4 3 2 1 0

8 + 1 3 2 1 0 3 2 1 0

16 + 2 1 0 1 0

32 + 4 0 0

Page 32: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

32 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

たとえば、 INIT_1F 属性は次のよ うに変換されます。

• yy = 16 進数 (xx) 1F を 10 進数に変換した値 = 31

• 開始セル [(31+1) 256] – 1 = 8191

• 終了セル 31 256 = 7936

表 1-15 に例を示します。

パリテ ィ メモリ内容の初期化 - INITP_xxINITP_xx 属性は、DIP/DOP バス (パリティ ビッ ト ) に対応する メモ リ セルの内容を初期化します。

デフォルトでは、 これらのメモ リ セルもすべて 0 に初期化されます。初期化属性で、パリティ ビッ

トのメモ リ内容を指定します。 RAMB18E1 では、 INITP_00 ~ INITP_07 の 8 つの初期化属性を

使用し ます。 RAMB36E1 では、 INITP_00 ~ INITP_0F の 16 の初期化属性を使用し ます。 各

INITP_xx は、 16 進数で表した 64 桁のビッ ト ベクターで、 INIT_xx 属性と同様に機能します。 特

定の INITP_xx 属性で初期化するビッ ト位置も、 同じ式で計算されます。

出力ラッチの初期化 - INIT (INIT_A または INIT_B)INIT (シングル ポート ) または INIT_A および INIT_B (デュアル ポート ) 属性は、 コンフ ィギュ

レーシ ョ ン後の出力ラ ッチまたは出力レジスタの値を指定します。表 1-16 に示すよ うに、 INIT (または INIT_A と INIT_B) 属性の幅は、 ポート幅に等し くなっています。 これらの属性は 16 進数の

ビッ ト ベクターで、 デフォルト値は 0 です。 カスケード モードの場合、 上部および下部のブロ ッ

ク RAM は同じ値で初期化する必要があ り ます。

表 1-15 : ブロック RAM の初期化属性

属性メモリ位置

開始位置 終了位置

INIT_00 255 0

INIT_01 511 256

INIT_02 767 512

… … …

INIT_0E 3839 3584

INIT_0F 4095 3840

INIT_10 4351 4096

… … …

INIT_1F 8191 7936

INIT_20 8447 8192

… … …

INIT_2F 12287 12032

INIT_30 12543 12288

… … …

INIT_3F 16383 16128

… … …

INIT_7F 32767 32512

Page 33: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 33UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM の属性

出力ラッチ/レジスタの同期セッ ト /リセッ ト (SRVAL_[A|B])SRVAL (シングル ポート ) または SRVAL_A および SRVAL_B (デュアル ポート ) 属性は、

RSTRAM/RSTREG 入力をアサート した際の出力ラ ッチの値を定義します。表 1-16 に示すよ うに、

SRVAL (または SRVAL_A と SRVAL_B) 属性の幅は、 ポート幅に等し くなっています。 これらの

属性は 16 進数のビッ ト ベクターで、 デフォルト値は 0 です。 オプシ ョ ンの出力レジスタ属性が指

定されている場合は、 この属性によって出力レジスタの値が設定されます。 レジスタを使用しない

場合は、 ラ ッチの値が SRVAL に指定されます。表 1-16 と表 1-17 に、SRVAL および INIT のビッ

ト位置と、 ブロ ッ ク RAM プリ ミ ティブおよび SDP マクロの DO 出力とのマッピング関係を示し

ます。

リセッ トまたは CE の優先度 - RSTREG_PRIORITY_[A|B]この属性は、 DO_REG = 1 の場合に RSTREZG をアサート したと きに RSTREG と REGCE のど

ちらが優先されるかを指定します。 有効な値は RSTREG または REGCE です。

オプシ ョ ンの出力レジスタ切り替え - DO[A|B]_REGブロ ッ ク RAM の A/B 出力でのパイプライン レジスタ数を設定します。指定可能な値は 0 (デフォ

ルト ) か 1 です。

表 1-16 : RAMB18E1 および RAMB36E1 の SRVAL および INIT のマッピング (ポート A およびポート B)

ポート幅SRVAL/INIT_(A/B)

の幅

SRVAL/INIT_(A/B) と DO のマッピング SRVAL/INIT_(A/B) と DOP のマッピング

DOADO/DOBDO (SRVAL/INIT)_(A/B) DOP(A/B)/DOP SRVAL/INIT_(A/B)

1 [0] [0] [0] N/A N/A

2 [1:0] [1:0] [1:0] N/A N/A

4 [3:0] [3:0] [3:0] N/A N/A

9 [8:0] [7:0] [7:0] [0] [8]

18 [17:0] [15:0] [15:0] [1:0] [17:16]

36 (RAMB36E1 の場合のみ)

[35:0] [31:0] [31:0] [3:0] [35:32]

表 1-17 : RAMB18E1 および RAMB36E1 の SDP マクロ

ポート幅 SRVAL/INIT の幅SRVAL/INIT と DO のマッピング SRVAL/INIT と DOP のマッピング

DO SRVAL/INIT DOP SRVAL/INIT

36 RAMB18E1 SDP マクロ

[35:0] [31:0] [33:18]/[15:0] [3:0] [35:34]/[17:16]

72 RAMB36E1 SDP マクロ

[71:0] [63:0] [67:36]/[31:0] [7:0] [71:68]/[35:32]

Page 34: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

34 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

拡張モード アドレス - RAM_EXTENSION_[A|B]カスケード モード を使用する場合に、 ブロ ッ ク RAM の A ポー ト と B ポー ト を上位ア ド レス

(UPPER) にするか、 下位アドレス (LOWER) にするかを指定します。 詳細は、 「カスケード接続が

可能なブロ ッ ク RAM」 を参照して ください。 カスケード モードを使用しない場合、 デフォルト値

は NONE です。

読み出し幅 - READ_WIDTH_[A|B]ブロ ッ ク RAM の A/B 読み出しポートの幅を指定します。 有効な値は、 0 (デフォルト )、 1、 2、 4、9、 18、 36、 および SDP モードで RAMB36E1 ポート A を使用する場合は 72 です。

書き込み幅 - WRITE_WIDTH_[A|B]ブロ ッ ク RAM の A/B 書き込みポートの幅を指定します。 有効な値は、 0 (デフォルト )、 1、 2、 4、9、 18、 36、 および SDP モードで RAMB36E1 ポート A を使用する場合は 72 です。

モード選択 - RAM_MODETDP モードまたは SDP モードを選択します。 有効な値は、 TDP (デフォルト ) または SDP です。

書き込みモード - WRITE_MODE_[A|B]A/B 入力ポー ト の書き込みモード を指定し ます。 有効な値は、 WRITE_FIRST (デフ ォル ト )、READ_FIRST、 および NO_CHANGE です。 書き込みモードの詳細は、 「書き込みモード」 を参照

して ください。

RDADDR_COLLISION_HWCONFIG

この属性によって、SDP または TDP モードでのアドレス重複 (衝突) の可能性とパフォーマンスの

ト レードオフが可能とな り ます。アドレス重複は、 SDP ブロ ッ ク RAM が READ_FIRST に、 また

は TDP モードのブロ ッ ク RAM でいずれかのポートが READ_FIRST モードに設定された場合に、

同期または非同期のクロ ッ ク アプリ ケーシ ョ ンで発生する可能性があ り ます。RAMB36E1 の場合、

アドレス重複は、 両ポートの A14 ~ A8 が同一クロ ッ ク サイ クルで同じであ り、 かつ両ポートが

有効である場合と定義されます。 RAMB18E1 の場合、 アドレス重複は、 両ポートの A13 ~ A7 が同一クロ ッ ク サイクルで同じであ り、 かつ両ポートが有効である場合と定義されます。

アドレス重複が起こ り得ない場合、この属性を PERFORMANCE モードに設定するこ とで、ブロ ッ

ク RAM 全体のパフォーマンスを改善できます。 それ以外の場合は、 DELAYED_WRITE (デフォ

ルト ) に設定して ください。 PERFORMANCE モードでアドレスの衝突が発生した場合には、 メモ

リ セルの内容が破損するこ とがあ り ます。

注記 : アドレス重複の条件は、18 ページの「競合の回避」で説明したアドレスの衝突とは異なり ます。

SIM_COLLISION_CHECK

シ ミ ュレーシ ョ ン モデルでの動作および衝突を確認するレベルを指定します。 有効な値は、 ALL、GENERATE_X_ONLY、 NONE、 および WARNING_ONLY で、 デフォルト値は ALL です。

Page 35: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 35UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のロケーシ ョ ン制約

INIT_FILE

オプシ ョ ンの、初期内容の RAM 初期化ファイルを指します。値は、デフォルトで NONE、 または

STRING (ファ イル名) です。 ファ イル形式の詳細は、 ISE ツールの資料を参照してください。

SIM_DEVICE

シ ミ ュレーシ ョ ンでのターゲッ ト デバイスのファ ミ リ を指定します。 有効な値は、 デフォル ト で

NONE、 またはファ ミ リ名 (VIRTEX5、 VIRTEX6 (デフォル ト )、 7_SERIES) の付いた STRINGです。

ブロック RAM のロケーシ ョ ン制約

ブロ ッ ク RAM のインスタンスに LOC プロパティを指定する と、 配置を制約できます。 ブロ ッ ク

RAM の配置位置の表記方法は、 CLB 位置の表記方法とは異な り、 LOC プロパティを別のアレイ

でも使用できます。

LOC プロパティは、 次の形式で使用します。

LOC = RAMB36_X#Y#

RAMB36_X0Y0 は、 デバイ スの左下にあるブロ ッ ク RAM の位置を表します。 RAMB36E1 をRAMB36_X#Y# に制約する と、FIFO にも同じ位置が使用されるため、FIFO36_X#Y# に制約でき

な くな り ます。

2 つの RAMB18E1 は、 同じ RAMB36E1 に配置できます。

inst ”my_ramb18_2” LOC = RAMB36_X0Y0inst "my_ramb18_1" LOC = RAMB36_X0Y0

さ らに、 FIFO18 および RAMB18 を 1 つずつ、 同じ RAMB36E1 に配置できます。

inst “my_ramb18” LOC = RAMB36_X0Y0inst "my_fifo18" LOC = RAMB36_X0Y0

VHDL または Verilog コードでのブロック RAM の初期化

ブロ ッ ク RAM メ モ リ の属性および内容は、 イ ンス タ ンシエー ト されたコ ンポーネン ト 内で

genericmap (VHDL) または defparam (Verilog) を使用して、 合成およびシ ミ ュ レーシ ョ ン用に

VHDL または Verilog コードで初期化できます。 generic map または defparam の値を変更する と、

シ ミ ュ レーシ ョ ン動作と インプ リ メ ンテーシ ョ ン結果に影響を与えます。 推論されたブロ ッ ク

RAM も初期化可能です。 『7 シ リーズ FPGA ラ イブラ リ ガイ ド』 には、 RAMB36E1 プ リ ミ テ ィ

ブをインスタンシエートするためのコードが記載されています。

RAMB18E1 および RAMB36E1 プリ ミティブの設計上のその他の注意事項

7 シ リーズ FPGA のブロ ッ ク RAM ソ リ ューシ ョ ンに、 RAMB18E1 および RAMB36E1 プ リ ミ

ティブは不可欠です。

出力レジスタ (オプシ ョ ン)オプシ ョ ンの出力レジスタは、 RAMB18E1 および RAMB36E1 の A|B 出力ポートのいずれか、 ま

たは両方に使用できます。使用ポートは DO[A|B]_REG 属性を使用して指定します。独立した 2 つのクロ ッ ク イネーブル ピンは REGCE[A|B] です。ポート [A|B] でオプシ ョ ンの出力レジスタを使

Page 36: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

36 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

用する場合、 ポート [A|B] の同期セッ ト / リセッ ト (RSTREG および RSTRAM) ピンをアサートす

る と、 属性 SRVAL で指定された値がレジスタを介して出力されます。 図 1-5 にオプシ ョ ンの出力

レジスタを示します。

独立した読み出しポート と書き込みポートの幅を選択

デュアル ポート モードで使用しているブロッ ク RAM でポート幅を指定するには、READ_WIDTH_[A|B] および WRITE_WIDTH_[A|B] 属性を使用する必要があ り ます。 この場合、 次の規則に従っ

てください。

• シングル ポート ブロ ッ ク RAM を設計する場合、 ペアになっている書き込みポート と読み出

しポート それぞれの幅を設定する必要があ り ます (READ_WIDTH_A と WRITE_WIDTH_Aなど)。

• デュアル ポート ブロッ ク RAM の場合、 すべてのポート幅を設定する必要があ り ます。

• これらの属性を使用する場合、両方の書き込みポート または両方の読み出しポートが 0 に設定さ

れていると、 ISE でデザインがインプリ メン ト されません。 SDP モードでは、 ポートの一方は固

定幅で、 も う一方が可変幅となり ます。 RAMB18E1 のデータ ポート幅は 大 36、 RAMB36E1のデータ ポート幅は 大 72 です。

RAMB18E1 および RAMB36E1 のポート マッピング設計規則

7 シ リーズ FPGA のブロ ッ ク RAM は、 さまざまなポート幅とサイズに構成できます。構成によっ

ては、一部のデータ ピンとアドレス ピンが未使用となり ます。表 1-9 ~ 表 1-12 に、各構成で使用

するピンを示しています。 これらの表の情報とあわせ、 次の規則にも基づく RAMB のポート接続

を決定して ください。

• RAMB36E1 を使用していて、DI[A|B] ピンの幅が 32 ビッ ト未満の場合、(32 – DI_BIT_WIDTH)の数のロジッ ク 0 を DI[A|B] の上位ビッ トに連結します。

• DIP[A|B] ピンの幅が 4 ビッ ト未満の場合、 (4 – DIP_BIT_WIDTH) の数のロジッ ク 0 を DI[A|B]の上位ビッ トに連結します。 DIP[A|B] を使用していない場合は、 未接続のままにできます。

• DO[A|B] ピンの幅は 32 ビッ トの必要があ り ます。 ただし、 (DO_BIT_WIDTH – 1) から 0 までのピンでのみデータが有効です。

• DOP[A|B] ピンの幅は 4 ビッ トの必要があ り ます。ただし、(DOP_BIT_WIDTH – 1) から 0 までのピンでのみデータが有効です。 DOP[A|B] を使用していない場合は、 未接続のままにでき

ます。

• ADDR[A|B] ピンの幅は 16 ビッ トの必要があ り ます。ただし、カスケード接続できないブロ ッ

ク RAM では、 ピン 14 から (15 – アドレス幅) までのみアドレスが有効です。 ピン 15 を含む

残りのピンは、 High に接続する必要があ り ます。 アドレス幅は、 28 ページの表 1-9 に記載さ

れています。

カスケード接続可能なブロック RAMカスケード接続可能なブロ ッ ク RAM の機能を使用する場合は、 次の規則に従います。

• RAMB36E1 プリ ミ ティブを 2 つインスタンシエート します。

• RAM_EXTENSION_A および RAM_EXTENSION_B 属性を使用して、 1 つの RAMB36E1を UPPER に、 も う 1 つの RAMB36E1 を LOWER に設定します。

Page 37: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 37UG473 (v1.11) 2014 年 11 月 12 日

RAMB18E1 および RAMB36E1 プリ ミテ ィブの設計上のその他の注意事項

• UPPER に設定した RAMB36E1 の CASCADEINA および CASCADEINB ポート を、LOWERに設定した RAMB36E1 の CASCADEOUTA および CASCADEOUTB ポート に接続します。

UPPER に設定した RAMB36E1 の CASCADEOUT ポートは接続する必要はあり ません。

LOWER に設定した RAMB36E1 の CASCADEIN ポートは、 ロジッ ク High または Low のい

ずれかに接続します。

• LOWER に設定した RAMB36E1 のデータ出力ポートは使用しません。これらのピンは未接続

と します。

• 2 つの RAMB36E1 にロケーシ ョ ン制約を適用する場合は、 これらを隣接して配置します。 ロ

ケーシ ョ ン制約を適用しない場合は、 ISE によ り RAMB36E1 が自動的に配置されます。

• アドレス ピン ADDR[A|B] の幅は 16 ビッ トの必要があ り ます。 読み出しポート と書き込み

ポートの幅は、 いずれも 1 ビッ トにします。

• 属性 DO_REG = 1 と設定する と、 オプシ ョ ンの出力レジスタが使用できます。

カスケード可能なブロ ッ ク RAM は、 21 ページの図 1-7 に示してあ り ます。

バイ ト ライ ト イネーブル

バイ ト ライ ト イネーブル機能を使用する場合は、 次の規則に従います。

• RAMB36E1 の場合

• x72 SDP モードでは、 書き込みポート用に WEBWE<7:0> を使用して 8 つの WE 入力を

接続します。 WEA<3:0> は使用しません。

• x36 モードでは、 ポート A 用に WEA[3:0] を使用して 4 つの WE 入力を接続し、 ポート

B 用に WEBWE<3:0> を使用して 4 つの WE 入力を接続します。 WEBWE<7:4> は使用

しません。

• x18 モードでは、ポート A 用に WEA[1:0] を使用して 2 つのユーザー WE 入力を接続し、

ポート B 用に WEBWE<1:0> を使用して 2 つの WE 入力を接続します。WEA<3:2> およ

び WEBWE<7:2> は使用しません。

• x9 またはそれ以下のポート幅モードでは、ポート A 用に WEA[0] を使用して 1 つのユー

ザー WE 入力を接続し、ポート B 用に WEBWE<0> を使用して 1 つの WE 入力を接続し

ます。 WEA<3:1> および WEBWE<7:1> は使用しません。

• RAMB18E1 の場合

• x36 SDP モードでは、 書き込みポート用に WEBWE<3:0> を使用して 4 つの WE 入力を

接続します。 WEA<1:0> は使用しません。

• x18 モードでは、 ポート A 用に WEA[1:0] を使用して 2 つの WE 入力を接続し、 ポート

B 用に WEBWE<1:0> を使用して 2 つの WE 入力を接続します。 WEBWE<3:4> は使用

しません。

• x9 またはそれ以下のポート幅モードでは、ポート A 用に WEA[0] を使用して 1 つのユー

ザー WE 入力を接続し、ポート B 用に WEBWE<0> を使用して 1 つの WE 入力を接続し

ます。 WEA<1> および WEBWE<3:1> は使用しません。

Page 38: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

38 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

ブロック RAM のアプリケーシ ョ ン

大規模な RAM 構造の作成

ブロ ッ ク RAM のカラムは (64Kx1 のカスケード接続だけでな く ) 特別な方法で配線されており 、36Kb ブロ ッ ク RAM を使用して 小の配線遅延でビッ ト数と ワード数を拡張したブロ ッ クを作成

できます。 また、 通常の配線リ ソースを使用した場合よ り も少ないタイ ミ ング遅延で、 ビッ ト数お

よびワード数の多い RAM 構造を実現できます。

合成推論、 または CORE Generator では、 複数のブロ ッ ク RAM インスタンスを使用して、 ビッ ト

数およびワード数の多いメモ リ構造を簡単に生成できます。 このツールは、 VHDL または Verilogのインスタンシエーシ ョ ン テンプレート、 シ ミ ュレーシ ョ ン モデル、 およびデザインに含まれる

EDIF ファ イルを出力します。

レジスタ モードでのブロック RAM の RSTREGブロ ッ ク RAM の RSTREG をレジスタ モードで使用する と、出力レジスタをブロ ッ ク RAM から

完全に独立したパイプライン レジスタ と して制御できます。 図 1-11 では、 ブロ ッ ク RAM の読み

出しおよび書き込みは、レジスタ イネーブルまたはセッ ト / リセッ ト とは独立して実行されます。レ

ジスタ モードでは、 RSTREG によって DO が SRVAL に設定され、 ブロ ッ ク RAM から DBRAMへのデータ読み出しが可能です。 DBRAM のデータは、 次のクロ ッ ク サイ クルで DO に出力でき

ます。 図 1-12 ~図 1-14 のタイ ミ ング図は、 その他のモードでの RSTREG の例を示しています。

X-Ref Target - Figure 1-11

図 1-11 : レジスタ モードでのブロック RAM の RSTREG

Block RAM

OutputRegister

RSTRAM

DO

RAMENEN

REGCE

RSTREG

RSTRAM

DIDBRAM

UG473_c1_11_040411

Page 39: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 39UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のアプリケーシ ョ ン

X-Ref Target - Figure 1-12

図 1-12 : RSTREG モードでのブロック RAM のリセッ ト動作

X-Ref Target - Figure 1-13

図 1-13 : REGCE モードでのブロック RAM のリセッ ト動作

X-Ref Target - Figure 1-14

図 1-14 : ラッチ モードでのブロック RAM のリセッ ト動作

DBRAM

CLK REGCLK

RAMEN

REGCE

RSTRAM

RSTREG

DO D0 SRVAL(1REG) D1 SRVAL(2REG) SRVAL(1LAT)

D1 D3D0 SRVAL(1LAT)

UG473_c1_12_040411

DBRAM

CLK REGCLK

RAMEN

REGCE

RSTRAM

RSTREG

DO D0 SRVAL(1REG) D1 SRVAL(1LAT)

D1 D3D0 SRVAL(1LAT)

UG473_c1_13_040411

DBRAM = DO

CLK

RAMEN

RSTLAT

D1 D3D0 SRVAL(1LAT)

UG473_c1_14_040411

RSTLAT needs RAMEN = 1to reset the output of the latch

Page 40: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

40 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

ブロック RAM のタイ ミング モデル

こ こでは、7 シ リーズ デバイスのブロ ッ ク RAM に関連するタイ ミ ング パラ メーターについて説明

します (図 1-15 参照)。 『7 シ リーズ FPGA データシート 』 のスイ ッチ特性のセクシ ョ ンや、 ザイ リ

ンクス ツールの Timing Analyzer (TRCE) から出力されるレポート も参考にしてください。

ブロック RAM のタイ ミング パラメーター

表 1-18 に、 7 シ リーズ FPGA のブロ ッ ク RAM のタイ ミ ング パラ メーターを示します。

表 1-18 : ブロック RAM のタイ ミング パラメーター

パラメーター 機能 制御信号 説明

ク ロ ッ ク (CLK) に対するセッ ト アップとホールド

TRxCK_x = セッ ト アップ タイム (ク ロ ッ ク エッジ前) および TRCKx_x = ホールド タイム (ク ロ ッ ク エッジ後)

TRCCK_ADDR

アドレス入力 ADDR

ク ロ ッ ク前に、ブロ ッ ク RAM の ADDR 入力でアドレス信号が安定し

ていなければならない時間(1)

TRCKC_ADDRク ロ ッ ク後に、ブロ ッ ク RAM の ADDR 入力でアドレス信号が安定し

ていなければならない時間(1)

TRDCK_DI

データ入力 DI

ク ロ ッ ク前に、ブロ ッ ク RAM の DI 入力でデータが安定していなけれ

ばならない時間

TRCKD_DIク ロ ッ ク後に、ブロ ッ ク RAM の DI 入力でデータが安定していなけれ

ばならない時間

TRCCK_RDEN

イネーブル EN

ク ロ ッ ク前に、ブロ ッ ク RAM の EN 入力でイネーブル信号が安定して

いなければならない時間

TRCKC_RDENク ロ ッ ク後に、ブロ ッ ク RAM の EN 入力でイネーブル信号が安定して

いなければならない時間

TRCCK_RSTREGTRCCK_RSTRAM 同期セッ ト /

リセッ ト

RSTREGRSTRAM

ク ロ ッ ク前に、ブロ ッ ク RAM の RST 入力で同期セッ ト / リセッ ト信号

が安定していなければならない時間

TRCKC_RSTREGTRCKC_RSTRAM

ク ロ ッ ク後に、ブロ ッ ク RAM の RST 入力で同期セッ ト / リセッ ト信号

が安定していなければならない時間

TRCCK_WEA書き込み

イネーブルWE

ク ロ ッ ク前に、ブロ ッ ク RAM の WE 入力で書き込みイネーブル信号が

安定していなければならない時間

TRCKC_WEAク ロ ッ ク後に、ブロ ッ ク RAM の WE 入力で書き込みイネーブル信号が

安定していなければならない時間

TRCCK_REGCE 出力レジスタ イネーブル

(オプシ ョ ン)

REGCE

ク ロ ッ ク前に、 ブロ ッ ク RAM の REGCE 入力でレジスタ イネーブル

信号が安定していなければならない時間

TRCKC_REGCEク ロ ッ ク後に、 ブロ ッ ク RAM の REGCE 入力でレジスタ イネーブル

信号が安定していなければならない時間

Clock-to-Out 遅延

TRCKO_DO

(ラ ッチ モード )ク ロ ッ クから

出力まで

CLK to DO

ク ロ ッ ク後に、ブロ ッ ク RAM の DO 出力で出力データが安定するまで

の時間 (出力レジスタを使用しない場合)TRCKO_DO_REG

(レジスタ モード )ク ロ ッ クから

出力まで

CLK to DO

ク ロ ッ ク後に、ブロ ッ ク RAM の DO 出力で出力データが安定するまで

の時間 (出力レジスタを使用した場合)

注記 :

1. WE が非アクティブでも EN がアクティブの場合は、 セッ ト アップ/ホールド タイムの間 ADDR 入力が安定している必要があ り ます。 この要件に違反する と、 ブロ ッ ク RAM でデータが破損する可能性があ り ます。 ADDR タイ ミ ングが指定した要件を満たさない場合、 EN を非アクティブ (無効) にする必要があ り ます。

Page 41: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 41UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM のタイ ミング モデル

ブロック RAM のタイ ミング特性

図 1-15 のタイ ミ ング図は、オプシ ョ ンの出力レジスタを使用しない WRITE_FIRST モードのシン

グル ポート ブロ ッ ク RAM の場合を示しています。 READ_FIRST モード と NO_CHANGE モー

ドのタイ ミ ングは、WRITE_FIRST モード と類似しています。オプシ ョ ンの出力レジスタを使用す

る と、 DO ピンのレイテンシが 1 ク ロ ッ ク サイ クル追加されます。 こ こに示す波形は、 オプシ ョ ン

の出力パイプライン レジスタを使用しないラ ッチ モードの場合です。

0 の時点では、 ブロ ッ ク RAM は無効で EN (イネーブル) は Low です。

クロック イベン ト 1

読み出し

読み出しでは、 ADDR 入力で指定したアドレス位置のメモリ内容は変更されません。

• ク ロ ッ ク イベン ト 1 よ り TRCCK_ADDR 時間前に、 ブロ ッ ク RAM の ADDR 入力でアドレス

00 が有効になり ます。

• ク ロ ッ ク イベン ト 1 よ り TRCCK_EN 時間前に、 ブロッ ク RAM の EN 入力でイネーブルが

High になり、 メモ リからの読み出しを実行できるよ うにな り ます。

• ク ロ ッ ク イベン ト 1 よ り TRCKO_DO 時間後に、 ブロ ッ ク RAM の DO ピンでアドレス 00 のメモ リ内容が安定します。

• EN がアサート されている場合は常に、すべてのアドレス変更が指定のセッ ト アップおよびホー

ルド仕様を満たす必要があ り ます。 非同期でのアド レス変更は、 メモ リ内容およびブロ ッ ク

RAM の機能に予期しない影響を与える可能性があり ます。

X-Ref Target - Figure 1-15

図 1-15 : ブロック RAM のタイ ミング図

ADDR

DI

DO

EN

RST

WE

CLK

00

DDDD

TRCCK_ADDR

TRDCK_DI

TRCKO_DO

MEM (00)TRCCK_EN

TRCCK_WE

Disabled DisabledRead Write Read Reset

Note 1: Write Mode = WRITE_FIRST

Note 2: SRVAL = 0101

0F 7E 8F 20

CCCC BBBB AAAA 0000

CCCC(1) MEM (7E) 0101(2)

UG473_c1_15_052610

1 2 3 54

TRCCK_RST

Page 42: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

42 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 1 章 : ブロック RAM リソース

クロック イベン ト 2

書き込み

書き込みでは、 書き込みイネーブル (WE) が High になると、 ADDR 入力のアドレスで指定された位

置のメモ リ内容が DI ピンの値に置き換えられ、 すぐに出力ラ ッチに反映されます (WRITE_FIRSTモード )。

• ク ロ ッ ク イベン ト 2 よ り TRCCK_ADDR 時間前に、 ブロ ッ ク RAM の ADDR 入力でアドレス

0F が有効になり ます。

• ク ロ ッ ク イベン ト 2 よ り TRDCK_DI 時間前に、ブロ ッ ク RAM の DI 入力でデータ CCCC が有

効になり ます。

• ク ロ ッ ク イベン ト 2 よ り TRCCK_WE 時間前に、 ブロ ッ ク RAM の WE で書き込みイネーブル

が有効になり ます。

• ク ロ ッ ク イベン ト 2 よ り TRCKO_DO 時間後に、 ブロッ ク RAM の DO 出力でデータ CCCC が有効になり ます。

クロック イベン ト 4

RST (同期セッ ト /リセッ ト )

RSTRAM を実行する と、 初期化パラ メーターの値 SRVAL がブロ ッ ク RAM の出力ラ ッチに読み

込まれます。 RSTRAM はメモ リの内容を変更しません。 また、 ADDR および DI 入力の影響も受

けません。

• ク ロ ッ ク イベン ト 4 よ り TRCCK_RST 時間前に、ブロ ッ ク RAM の RSTRAM 入力で同期セッ

ト / リセッ ト信号が有効 (High) になり ます。

• ク ロ ッ ク イベン ト 4 よ り TRCKO_DO 時間後に、ブロ ッ ク RAM の DO 出力で SRVAL の 0101が有効になり ます。

クロック イベン ト 5

無効化

イネーブル信号 EN をディアサートする と、 書き込み、 読み出し、 または RST が実行できな くな

り ます。 無効にしても、 メモ リの内容および出力ラ ッチの値は変わり ません。

• ク ロ ッ ク イベン ト 5 よ り TRCCK_EN 時間前に、 ブロ ッ ク RAM の EN 入力でイネーブル信号

が無効 (Low) になり ます。

• ク ロ ッ ク イベン ト 5 以降は、 ブロ ッ ク RAM の DO 出力のデータは変化しません。

ブロック RAM のタイ ミング モデル

図 1-16 に、 ブロ ッ ク RAM のインプリ メンテーシ ョ ンに関連した遅延パスを示します。 この例は、

オンチップ/オフチップで も単純なパスです (パスはデザインによって大幅に異なる)。このタイ ミ

ング モデルは、 ブロ ッ ク RAM のタイ ミ ング パラ メーターを使用する方法と場所を示しています。

• NET = 可変インターコネク ト遅延

• TIOPI = パッ ドから IOB の I 出力までの遅延

• TIOOP = IOB の O 入力からパッ ドまでの遅延

• TBCCKO_O = BUFGCTRL 遅延

Page 43: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 43UG473 (v1.11) 2014 年 11 月 12 日

スタ ック ド シリコン インターコネク ト (SSI)

スタ ック ド シリコン インターコネク ト (SSI)ブロ ッ ク RAM ブロ ッ クは、 インターポーザー全域をまたいで (SLR 境界) カスケード接続できま

せん。 スタ ッ ク ド シ リ コン インターコネク ト (SSI) テク ノ ロジの詳細は、 『ザイ リ ンクスのスタ ッ

ク ド シ リ コン インターコネク ト テク ノ ロジで飛躍的な FPGA 容量、 帯域幅、 電力効率を実現』

(WP380) を参照してください。

X-Ref Target - Figure 1-16

図 1-16 : ブロック RAM のタイ ミング モデル

Block RAM

UG473_c1_16_052610

FPGA

[TIOPI + NET] + TRCCK_WENWrite Enable[TIOPI + NET] + TRCCK_ENEnable

[TIOPI + NET] + TRCCK_ADDRAddress

[TIOPI + NET] + TRDCK_DIData

[TBCCKO_O + NET]

Clock[TIOPI + NET]

BUFGCTRL

TRCKO_DO + [NET + TIOOP]Data

[TIOPI + NET] + TRCCK_RSTSynchronous

Set/Reset

DO

DI

ADDR

WE

EN

RSTREG

CLK

[TIOPI + NET] + TRCCK_RST RSTRAM

Page 45: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 45UG473 (v1.11) 2014 年 11 月 12 日

第 2 章

ビルト イン FIFO のサポート

概要

FPGA デザインでは多くの場合、 ブロ ッ ク RAM を使用して FIFO をインプリ メン ト します。 7 シ

リーズ アーキテクチャでは、ブロ ッ ク RAM の専用ロジッ クを使用して同期またはデュアル ク ロ ッ

ク (非同期) FIFO をインプリ メン トできます。 これによ り、 カウンター、 コンパレータ、 ステータ

ス フラグ生成などに別途 CLB ロジッ クを使用する必要がなくな り、 1 つのブロ ッ ク RAM リ ソー

スだけで FIFO を実現できます。 この FIFO では、 標準モード と FWFT (First Word Fall Through)モードがサポート されます。

7 シ リーズ アーキテクチャでは、 FIFO は 18Kb または 36Kb メモ リ と して構成できます。 18Kbモードでは、4Kx4、2Kx9、1Kx18 および 512x36 のコンフ ィギュレーシ ョ ンがサポート され、36Kbモードの FIFO では、 8Kx4、 4Kx9、 2Kx18、 1Kx36 および 512x72 のコンフ ィギュレーシ ョ ンが

サポート されます。

ブロッ ク RAM は、共通または別々の読み出し/書き込みクロッ クを使用した FIFO (First-In/First-Out)メモリ と して構成できます。ブロッ ク RAM のポート A は FIFO 読み出しポート と して、ポート B はFIFO 書き込みポート と して使用します。データは、読み出しクロッ クの立ち上がりエッジで FIFO から読み出され、 書き込みクロッ クの立ち上がりエッジで FIFO に書き込まれます。 FIFO モードでは、

外部の CLB ロジッ クを使用しない限り、 読み出しポート と書き込みポートの幅を別々に選択できま

せん。

デュアル クロック FIFOデュアル ク ロ ッ ク FIFO は、単純なユーザー インターフェイスを提供します。デザインは、 フ リー

ランニングの書き込みクロ ッ ク と読み出しクロ ッ クで動作します。これら 2 つのクロ ッ ク周波数は、

仕様の範囲内であれば同一であっても異なっていてもかまいません。 2 つの周波数の間にまったく

関係がなくても、 グ リ ッチ、 メ タステーブルなどの問題は発生しません。

書き込みはク ロ ッ クに同期して行われ、 WRCLK の立ち上がりエッジのセッ ト アップ タ イム前に

WREN がアクティブであれば、 DI のデータ ワードが FIFO に書き込まれます。

読み出し も ク ロ ッ クに同期して行われ、 RDCLK の立ち上がりエッジのセッ ト アップ タ イム前に

RDEN がアクティブであれば、 DO に次のデータ ワードが読み出されます。

データ フローは自動的に制御されるため、ブロ ッ ク RAM のアドレス指定シーケンスを考慮する必

要はあ り ません。 ただし、 アプ リ ケーシ ョ ンで必要な場合は、 WRCOUNT や RDCOUNT を取得

できます。

Page 46: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

46 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

ただし、 FULL および EMPTY フラグを確認して、 FULL が High になったら書き込みを停止し、

EMPTY が High になったら読み出しを停止する必要があ り ます。 これに違反して、 FULL が Highのと きに WREN がアクティブである と WRERR フラグがアサート され、 EMPTY が High のと き

に RDEN がアクティブである と RDERR フラグがアサート されます。 いずれの違反でも FIFO の内容は保持され、 アドレス カウンターも有効な状態に保持されます。

FIFO がフルまたは空の状態に近づく と、プログラム可能な ALMOSTFULL および ALMOSTEMPTYフラグがアサート されて事前に警告が出力されます。これらのフラグの値は、コンフ ィギュレーシ ョ

ン時に、 FIFO のアドレス範囲内の (ほぼ) 任意の位置に設定できます。

標準モード と FWFT モードでは、FIFO が空になった後の 初のワードの読み出し動作が異なり ます。

• 標準モードの場合、RDEN をアサートする と空の FIFO に書き込まれた 初のワードが DO に出力されます。 つま り、 明示的に FIFO からデータを読み出す必要があ り ます。

• FWFT モードの場合、空の FIFO に書き込まれた 初のワードは、RDEN をアサート しな くて

も自動的に DO に出力されます。 RDEN をアサートする と次のデータ ワードが DO に出力さ

れます。

• 標準モード と FWFT モードの違いは、FIFO が空になった後の 初のデータ ワードの読み出し

動作のみです。

次の場合、 EN_SYN = FALSE と設定します。

• ク ロ ッ クが非同期のと き

• 2 つのクロ ッ ク周波数が同一であるが、 位相が異なる と き

• 一方のクロ ッ クの周波数がも う一方の倍数になっている と き

同期 FIFO7 シ リーズ FPGA で同期 FIFO を使用する場合、 EN_SYN 属性を TRUE に設定するこ とでフラグ

のアサート またはディアサート時のクロ ッ ク サイクル レイテンシをなくすこ とができます。

EN_SYN 属性を TRUE に設定した非同期 FIFO と してビルト イン FIFO を使用する と、 初の書

き込み後のフラグの動作が予測できな くな り ます。 この場合、 ザイ リ ンクスではリセッ ト あるいは

リ セッ ト の立ち下がりエッジのみを RDCLK または WRCLK に同期させる こ と を推奨していま

す。 EN_SYN が FALSE に設定されている と きは、 この同期化は必要あ り ません。

FWFT (First-Word Fall-Through) モードは、 デュアル ク ロ ッ ク FIFO (EN_SYN = FALSE) でのみ

サポート されています。 表 2-1 に FIFO の容量をモード別に示します。

表 2-1 : FIFO の容量

標準モード FWFT モード

18Kb FIFO 36Kb FIFO 18Kb FIFO 36Kb FIFO

4k エン ト リ (4 ビッ ト ごと ) 8k エン ト リ (4 ビッ ト ごと ) 4k+1 エン ト リ (4 ビッ ト ごと ) 8k+1 エン ト リ (4 ビッ ト ごと )

2k エン ト リ (9 ビッ ト ごと ) 4k エン ト リ (9 ビッ ト ごと ) 2k+1 エン ト リ (9 ビッ ト ごと ) 4k+1 エン ト リ (9 ビッ ト ごと )

1k エン ト リ (18 ビッ ト ごと ) 2k エン ト リ (18 ビッ ト ごと ) 1k+1 エン ト リ (18 ビッ ト ごと ) 2k+1 エン ト リ (18 ビッ ト ごと )

512 エン ト リ (36 ビッ ト ごと ) 1k エン ト リ (36 ビッ ト ごと ) 512+1 エン ト リ (36 ビッ ト ごと ) 1k+1 エン ト リ (36 ビッ ト ごと )

512 エン ト リ (72 ビッ トごと ) 512+1 エン ト リ (72 ビッ ト ごと )

Page 47: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 47UG473 (v1.11) 2014 年 11 月 12 日

同期 FIFO

同期 FIFO インプリ メンテーシ ョ ン

表 2-2 に、 同期 FIFO の各種インプ リ メンテーシ ョ ンを示します。 また、 図 2-1 にそれぞれのタイ

ミ ングの違いを示します。

表 2-2 : 同期 FIFO インプリ メンテーシ ョ ンの比較

同期 FIFO インプリ メンテーシ ョ ン 長所 短所

EN_SYN = TRUE、 DO_REG = 0 フラグが不確定にならない。 データ出力遅延 (Clock-to-Out) が長くなる。

EN_SYN = TRUE、 DO_REG = 1 データ出力遅延 (Clock-to-Out) が短く な り、 フラグが不確定になら

ない。

データ レイテンシが 1 クロ ッ ク サイクル増

加する。 データ出力パイプライン レジスタが

1 つ追加された同期 FIFO と同じ動作となる。

EN_SYN = FALSE、 DO_REG = 1

RDCLK = WRCLK

データ出力遅延 (Clock-to-Out) が短くなる。

立ち下が りエッジのフラグが不確定になる。

FULL および EMPTY の立ち上がりエッジは

保証される。

X-Ref Target - Figure 2-1

図 2-1 : 同期 FIFO のデータ タイ ミング図

UG473_c2_01_052610

rdclk

rden

DOEN_SYN = TRUE

DO_REG = 0

DOEN_SYN = TRUE

DO_REG = 1

DOEN_SYN = FALSE

DO_REG = 1

TCKO_LAT

TCKO_REG

TCKO_REG

Page 48: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

48 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

FIFO アーキテクチャの概略図

図 2-2 に 7 シ リーズ FPGA FIFO アーキテクチャの概略図を示します。 読み出しポインター、 書き

込みポインター、 ステータス フラグ ロジッ クは FIFO 専用です。

FIFO プリ ミテ ィブ

図 2-3 に FIFO36_72 モードの FIFO36E1 を示します。

X-Ref Target - Figure 2-2

図 2-2 : ブロック RAM の FIFO の概略図

BlockRAM

WRCOUNT RDCOUNT

WRCLK

WREN

RDCLK

DO/DOPDIN/DINP

RDEN

RST

Status FlagLogic

FU

LLE

MP

TY

ALM

OS

TF

ULL

ALM

OS

TE

MP

TY

RD

ER

RW

RE

RR

waddr raddr

oe

mem

_ren

mem

_wen

Write Pointer

ReadPointer

UG473_c2_02_052610

X-Ref Target - Figure 2-3

図 2-3 : FIFO36

DOP[7:0]

DI[63:0]

DIP[7:0]

RDEN

RST

RDCLK

WRENWRCLK

DO[63:0]

RDCOUNT[12:0]WRCOUNT[12:0]

EMPTYFULL

ALMOSTEMPTY

ALMOSTFULL

WRERR

RDERR

FIFO36

UG473_c2_03_052610

RSTREG

REGCE

Page 49: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 49UG473 (v1.11) 2014 年 11 月 12 日

FIFO ポートの説明

図 2-4 に FIFO18_36 モードの FIFO18E1 を示します。

FIFO ポートの説明

表 2-3 に FIFO I/O ポートの名前と説明を示します。

X-Ref Target - Figure 2-4

図 2-4 : FIFO18

DOP[3:0]

DI[31:0]

DIP[3:0]

RDEN

RST

RDCLK

WRENWRCLK

RSTREG

REGCE

DO[31:0]

RDCOUNT[11:0]WRCOUNT[11:0]

EMPTYFULL

ALMOSTEMPTY

ALMOSTFULL

WRERR

RDERR

FIFO18

UG473_c2_04_052610

表 2-3 : FIFO I/O ポートの名前と説明

ポート名 方向 説明

DI 入力 データ入力。

DIP 入力 パリティ ビッ ト入力。

WREN 入力 書き込みイネーブル。WREN = 1 の場合、データがメモ リに書

き込まれます。WREN = 0 の場合、書き込みは無効になり ます。

WREN および RDEN は、リセッ ト サイ クル前からサイ クルが

終了するまでの間 Low に保持しておく必要があ り ます。 さ ら

に、 タイ ミ ングを保証するためにリセッ ト をディアサート した

後は、WRCLK および RDCLK の 2 サイクル間 Low に保持し

ます。

WRCLK 入力 書き込み用クロ ッ ク。

RDEN 入力 読み出しイネーブル。 RDEN = 1 の場合、 データが出力レジス

タに読み出されます。 RDEN = 0 の場合、 読み出しは無効にな

り ます。 WREN および RDEN は、 リセッ ト をアサートする前

から リセッ ト サイクルが終了するまでの間 Low に保持してお

く必要があ り ます。

RDCLK 入力 読み出し用クロ ッ ク。

RST 入力 すべての FIFO 機能、 フラグ、 ポインターの非同期リセッ ト。

RST は、 読み出しおよび書き込みの 5 ク ロ ッ ク サイ クル間ア

サートする必要があ り ます。 7 シ リーズ FPGA ブロ ッ ク RAMは、以前の FPGA アーキテクチャにはない、 リセッ ト機能を簡

略化できるシンクロナイザーを備えています。

Page 50: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

50 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

RSTREG 入力 出力レジスタの同期セッ ト / リセッ ト 。EN_SYNC = TRUE かつ

DO_REG = 1 の場合にのみ使用します。RSTREG_PRIORITYは常に RSTREG に設定されます。

REGCE 入力 出力レジスタ ク ロ ッ ク イネーブル。 EN_SYNC = TRUE かつ

DO_REG = 1 の場合にのみ使用します。 RSTREG が REGCEよ り も優先されます。

DO 出力 RDCLK に同期したデータ出力。

DOP 出力 RDCLK に同期したパリ ティ ビッ ト出力。

FULL 出力 FIFO メモ リのすべてのエン ト リがフルになったこ とを示しま

す。 これ以上書き込みは実行されません。 WRCLK に同期し

ます。

ALMOSTFULL 出力 FIFO メモ リのほぼすべてのエン ト リがフルになったこ とを示

します。FIFO で利用可能なエン ト リの数が ALMOST_FULL_OFFSET 値未満です。WRCLK に同期します。このフラグのオ

フセッ ト値はユーザーが設定できます。 フラグをディアサート

する際のクロ ッ ク レイテンシは、 表 2-4 を参照してください。

EMPTY 出力 FIFO が空であるこ とを示します。 これ以上読み出しは実行さ

れません。 RDCLK に同期します。

ALMOSTEMPTY 出力 FIFO のほぼすべての有効エン ト リが読み出されたこ とを示し

ます。FIFO のエン ト リ数が ALMOST_EMPTY_OFFSET 値未

満です。 RDCLK に同期します。 このフラグのオフセッ ト値は

ユーザーが設定できます。 フラグをディ アサー トする際のク

ロ ッ ク レイテンシは、 表 2-4 を参照してください。

RDCOUNT 出力 FIFO データ読み出しポインター。RDCLK に同期します。読み

出しポインターの値が 大値に達する と、 ラ ップアラウンド し

ます。

WRCOUNT 出力 FIFO データ書き込みポインター。 WRCLK に同期します。 書

き込みポインターの値が 大値に達する と、 ラ ップアラウンド

します。

WRERR 出力 FIFO がフルの場合に書き込みを実行する と、 エラー フラグが

生成されます。 WRCLK に同期します。

RDERR 出力 FIFO が空の場合に読み出しを実行する と、 エラー フラグが生

成されます。 RDCLK に同期します。

表 2-3 : FIFO I/O ポートの名前と説明 (続き)

ポート名 方向 説明

Page 51: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 51UG473 (v1.11) 2014 年 11 月 12 日

FIFO の動作

FIFO の動作

リセッ ト

7 シ リーズ FPGA には、 リセッ ト シンクロナイザー回路が導入されています。すべての読み出しお

よび書き込みアドレス カウンターを リセッ ト してフラグを初期化するには、 電源投入後に RST を5 サイクル間アサートする必要があ り ます。 リセッ ト では、 メモ リや出力レジスタはク リ アされま

せん。 RST を High にする と、 EMPTY と ALMOSTEMPTY が 1 にセッ ト され、 FULL と ALMOSTFULL が 0 にリセッ ト されます。すべての内部ステート を正しい値にリセッ トするには、

RST を少なく と も RDCLK/WRCLK の 5 サイ クル間 High に保持する必要があ り ます。 リセッ ト

の間は、 RDEN および WREN をディアサート し、 Low に固定する必要があ り ます。

動作モード

FIFO 機能には 2 つの動作モードがあ り ます。これら動作モードの違いは、空の FIFO に 初のワー

ドを書き込んだ直後の出力動作のみで、 それ以外は共通です。

標準モード

空の FIFO に 初のワードが書き込まれる と、RDCLK に同期して EMPTY フラグがディアサート

されます。 EMPTY が Low になり、 RDEN が High になった後、 初のワードが RDCLK の立ち

上がりエッジで DO に出力されます。

FWFT (First Word Fall Through) モード

空の FIFO に 初のワードが書き込まれる と、RDEN がアサート される前にそのワードが自動的に

DO に出力されます。 以降の読み出しでは、 EMPTY が Low かつ RDEN が High になっている必

要があ り ます。 図 2-5 に標準モード と FWFT モードの違いを示します。

ステータス フラグ

表 2-4 に、 デュアル ク ロ ッ ク FIFO の各フラグのアサート /ディアサートに要するクロ ッ ク サイク

ル数を示します。同期 FIFO の場合、 フラグのアサート またはディアサート時のクロ ッ ク サイクル

レイテンシはあ り ません。 ク ロ ッ クは非同期なので、シ ミ ュレーシ ョ ン モデルには表に記載されて

いるディアサート時のレイテンシ サイクルのみが反映されます。

X-Ref Target - Figure 2-5

図 2-5 : 読み出しサイクルのタイ ミング (標準モード と FWFT モード )

RDCLK

RDEN

EMPTY

DO (Standard)

DO (FWFT)

Previous Data

W1 W2 W3

W1 W2 W3

UG473_c2_05_052610

Page 52: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

52 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

EMPTY フラグ

EMPTY フラグは RDCLK に同期しており、 FIFO の 後のエン ト リが読み出される とアサート さ

れます。 FIFO キューに有効なエン ト リがなくなる と、読み出しポインターが停止します。 EMPTYフラグは、 FIFO に新しいデータが書き込まれてから RDCLK (標準モードの場合) の 3 サイクルま

たは RDCLK (FWFT モードの場合) の 4 サイクル後にディアサート されます。

EMPTY フラグは、 読み出し ク ロ ッ ク ド メ インで使用されます。 EMPTY の立ち上がりエッジは

RDCLK に同期しています。 空の状態は、 WRCLK によって通常 RDCLK に非同期で終了します。

したがって、 EMPTY の立ち下がりエッジは、 RDCLK タイム ド メ インに移動させる必要があ り ま

す。これら 2 つのクロ ッ クは位相関係が不明なため、複数のフ リ ップフロ ップをカスケード接続し、

移動によるグ リ ッチやメ タステーブルの問題の発生を回避する必要があ り ます。 結果、 EMPTY の立ち下がりエッジは、空の FIFO への 初の書き込みが行われてから RDCLK の数サイクル分だけ

遅れます。 この遅延によ り、 FIFO が空になった後でパフォーマンスは若干落ちますが、 あらゆる

状況下で正しい動作が保証されるよ うにな り ます。

ALMOST EMPTY フラグ

FIFO のエン ト リ数が ALMOST_EMPTY_OFFSET 値で指定された数以下になる と、 ALMOSTEMPTY フラグがセッ ト されます。 これによ り、 ALMOST EMPTY フラグがアサート されて読み

出しを停止するよ う警告します。 FIFO のエン ト リ数が ALMOST_EMPTY_OFFSET 値よ り も大

き くなる と、 このフラグがディアサート されます。アサート とディアサートは RDCLK に同期して

行われます。 フラグのレイテンシは、 表 2-4 を参照してください。

READ ERROR フラグ

EMPTY フ ラグがアサー ト された後で読み出しを実行し よ う と しても読み出しア ド レス ポイン

ターはインク リ メン トせず、READ ERROR フラグがアサート されます。 このフラグは、RDEN または EMPTY が Low になる とディアサート されます。 また、 RDCLK に同期しています。

表 2-4 : デュアルクロック FIFO フラグのアサートおよびディアサート時のレイテンシ

ステータス フラグ

クロック サイクル レイテンシ(1)

アサート ディアサート

標準 FWFT 標準 FWFT

EMPTY(2) 0 0 3 4

FULL(2) 0 0 3 3

ALMOST EMPTY(3) 1 1 4 4

ALMOST FULL(3) 1 1 4 4

READ ERROR 0 0 0 0

WRITE ERROR 0 0 0 0

注記 :

1. レイテンシは RDCLK または WRCLK を基準にした値です。

2. 読み出し クロ ッ ク エッジと書き込みクロ ッ ク エッジ間のオフセッ トによっては、EMPTY フラグと FULL フラグがディアサート されるタイ ミ ングが 1 ク ロ ッ ク サイクル遅れるこ とがあ り ます。

3. 読み出しクロッ ク エッジと書き込みクロッ ク エッジ間のオフセッ トによっては、 ALMOST EMPTY フラグと ALMOST FULL フラグがディアサート されるタイ ミ ングが 1 クロッ ク サイクル遅れるこ とがあり ます。

Page 53: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 53UG473 (v1.11) 2014 年 11 月 12 日

FIFO の属性

FULL フラグ

FULL フラグは WRCLK に同期しており、FIFO キューに空きエン ト リがなくなる とアサート され

ます。 FIFO がフルになる と、 書き込みポインターが停止します。 このフラグのアサート後に読み

出しを 1 回実行する と、 WRCLK の 3 サイクル後にディアサート されます。

WRITE ERROR フラグ

FULL フラグがアサート された後で書き込みを実行しよ う と しても書き込みアドレス ポインター

はインク リ メン トせず、 WRITE ERROR フラグがアサート されます。 このフラグは、 WREN また

は FULL が Low になる とディアサート されます。 このフラグは WRCLK に同期します。

ALMOST FULL フラグ

FIFO の空きスペース数が ALMOST_FULL_OFFSET 値で指定された数以下になる と、 ALMOSTFULL フラグがアサート されます。 これによ り、 ALMOST FULL フラグがアサート されて書き込

みを停止するよ う警告します。 FIFO の空きスペース数が ALMOST_FULL_OFFSET 値よ り も大

き くなる と、 このフラグがディアサート されます。 アサート とディアサートは WRCLK に同期し

て行われます。 フラグのレイテンシは、 表 2-4 を参照してください。

FIFO の属性

表 2-5 に FIFO18 と FIFO36 の属性を示します。デュアル クロッ ク FIFO のサイズは、DATA_WIDTH属性で設定できます。属性の設定例は、 「VHDL および Verilog の FIFO テンプレート 」 を参照してく

ださい。

表 2-5 : FIFO18E1 および FIFO36E1 の属性

属性名 タイプ 値 デフォルト 説明

ALMOST_FULL_OFFSET 13 ビッ ト

の 16 進数

表 2-8 を参照 フルの状態とほぼフルの状態の差を設定

します。 16 進数で設定します。

ALMOST_EMPTY_OFFSET 13 ビッ ト

の 16 進数

表 2-8 を参照 空の状態とほぼ空の状態の差を設定しま

す。 16 進数で設定します。

FIRST_WORD_FALL_THROUGH ブール型 FALSE、TRUE

FALSE TRUE に設定する と、 RDEN をアサート

しな くても空の FIFO に書き込まれた

初のワードが出力されます。

DO_REG 1 ビッ ト バイナリ

0、 1 1 デュアル ク ロ ッ ク (非同期) FIFO では必

ず 1 に設定します。

同期 FIFO では、 フラグとデータを標準

の同期 FIFO で動作させるために 0 に設定

する必要があ り ます。 1 に設定する と、 同

期 FIFO の出力にパイプライン レジスタ

が 1 つ追加されます。 このため、 データ

には、 1 ク ロ ッ ク サイ クルのレイテンシ

があ り ますが、 Clock-to-Out タイ ミ ング

は改善されます。

DATA_WIDTH 整数 4、 9、 18、 36、 72 4 FIFO のデータ幅を指定します。

Page 54: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

54 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

表 2-6 に、SRVAL および INIT のビッ ト位置と FIFO プリ ミ ティブの DO 出力のマッピング関係を

示します。

FIFO_MODE 文字列 FIFO36、FIFO36_72

FIFO36 FIFO36 のモードを選択します。

FIFO18、FIFO18_36

FIFO18 FIFO18 のモードを選択します。

EN_SYN ブール型 FALSE、TRUE

FALSE TRUE に設定する と、WRCLK と RDCLKが同期します。

TRUE に設定した場合は、 FWFT を FALSE に設定する必要があ り ます。

FALSE に設定した場合は、 DO_REG = 1 に設定する必要があ り ます。

SRVAL(1) 16 進数 FIFO18E1 では任

意の 36 ビッ ト値、

FIFO36E1 では任

意の 72 ビッ ト値

00h RSTREG がアサート されたと きの FIFO 出力の値を制御します。 DO_REG = 1 かつ EN_SYN = TRUE で、 RSTREG がア

クティブな信号に接続されている場合の

みサポート されます。

INIT(1) 16 進数 FIFO18E1 では任

意の 36 ビッ ト値、

FIFO36E1 では任

意の 72 ビッ ト値

00h DO_REG = 1 かつ EN_SYN = TRUE の場

合、 コンフ ィギュレーシ ョ ン後の出力の

初期値を示します。

注記 :

1. 表 2-6 に、 SRVAL および INIT のビッ ト位置と FIFO プリ ミ ティブの DO 出力のマッピング関係を示します。

表 2-5 : FIFO18E1 および FIFO36E1 の属性 (続き)

属性名 タイプ 値 デフォルト 説明

表 2-6 : FIFO18E1/FIFO36E1 における SRVAL/INIT のマッピング

ポート幅 SRVAL/INITSRVAL/INIT と DO のマッピング SRVAL/INIT と DOP のマッピング

DO SRVAL/INIT DOP SRVAL/INIT

4 [3:0] [3:0] [3:0] NA NA

9 [8:0] [7:0] [7:0] [0] [8]

18 [17:0] [15:0] [15:0] [1:0] [17:16]

36 (FIFO36E1 の場合) [35:0] [31:0] [31:0] [3:0] [35:32]

36 (FIFO18_36 の場合) [35:0] [31:0] [33:18]、 [15:0] [3:0] [35:34]、 [17:16]

72 (FIFO36_72 の場合) [71:0] [63:0] [67:36]、 [31:0] [7:0] [71:68]、 [35:32]

Page 55: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 55UG473 (v1.11) 2014 年 11 月 12 日

FIFO の属性

FIFO ALMOST FULL/EMPTY フラグのオフセッ ト範囲

表 2-7 に FIFO のデータ容量を示します。表 2-8 に ALMOST EMPTY と ALMOST FULL のオフ

セッ ト範囲を示します。

ALMOST FULL と ALMOST EMPTY のオフセッ ト値は、通常 10 未満の小さい値に設定され、FIFOの限界値に近づいているこ とを警告します。一般に FIFO の容量が問題になるこ とはほとんどないた

め、ALMOST FULL フラグは多くのアプリケーシ ョ ンで警告と してだけでなく、書き込みを停止す

るための信号と して使用されます。

表 2-7 : FIFO のデータ容量

データ幅ブロック RAM

FIFO 容量

FIFO18 モード FIFO36 モード 標準 FWFT

x4 8192 8192 8193

x4 x9 4096 4096 4097

x9 x18 2048 2048 2049

x18 x36 1024 1024 1025

x36 x72 512 512 513

注記 :

1. ALMOST_EMPTY_OFFSET および ALMOST_FULL_OFFSET の値は、 必ず FIFO 全体の深さよ り も小

さい値にする必要があ り ます。

表 2-8 : FIFO ALMOST FULL/EMPTY フラグのオフセッ ト範囲(1)

データ幅ALMOST_EMPTY_OFFSET

ALMOST_FULL_OFFSET標準 FWFT

FIFO18 モード FIFO36 モード 小 大 小 大 小 大

デュアル ク ロ ッ ク (非同期) - EN_SYN = FALSE

x4 5 8186 6 8187 4 8185

x4 x9 5 4090 6 4091 4 4089

x9 x18 5 2042 6 2043 4 2041

x18 x36 5 1018 6 1019 4 1017

x36 x72 5 506 6 507 4 505

同期モード - EN_SYN = TRUE

x4 1 8190 N/A N/A 1 8190

x4 x9 1 4094 N/A N/A 1 4094

x9 x18 1 2046 N/A N/A 1 2046

x18 x36 1 1022 N/A N/A 1 1022

x36 x72 1 510 N/A N/A 1 510

注記 :

1. この表の範囲は、 RDCLK と WRCLK が同じ周波数の場合に適用されます。

Page 56: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

56 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

同様に、 ALMOST EMPTY フラグを読み出し停止のために使用できますが、 その場合 FIFO には

後のエン ト リが読み出されないまま残り ます。 したがって、 ALMOST EMPTY 信号は無視して

EMPTY がアサート されるまで読み出しを継続できます。

ALMOST FULL と ALMOST EMPTY のオフセッ トは、 動作を中断できないブロ ッ ク転送アプリ

ケーシ ョ ンにおいて、 データ ブロ ッ ク全体を書き込み/読み出しできるかど うかを判定する目的で

も使用できます。 デザイン ツールでオフセッ ト範囲を設定する際は、 16 進数で指定してください。

RDCLK 周波数が WRCLK 周波数と異なる場合、 追加の ALMOST_FULL_OFFSET 制約値が必要で

す。 これらが大き く異なる場合は、 表 2-8 に示した 大値ではなく、 別の ALMOST_FULL_OFFSET大値が適用されます。この場合、式 2-1 の計算で ALMOST_FULL_OFFSET の 大値を決定します。

式 2-1

たとえば、容量 4K の FIFO (FIFO36x9) を使用する場合、WRCLK = 500MHz で RDCLK = 8MHzなら、 大 ALMOST_FULL_OFFSET = 4096 – (roundup(4 x 500/8)) + 6 = 3840 とな り ます。

VHDL および Verilog の FIFO テンプレート

VHDL および Verilog テンプレートは、『7 シ リーズ FPGA ライブラ リ ガイ ド』に記載されています。

FIFO のタイ ミング モデルとパラメーター

表 2-9 に FIFO のパラ メーターを示します。

Maximum ALMOST_FULL_OFFSET FIFO_DEPTH roundup 4 WRCLK_FREQRDCLK_FREQ-----------------------------------------

6+–=

表 2-9 : FIFO のタイ ミング パラメーター

パラメーター 機能 制御信号 説明

ク ロ ッ ク (CLK) に対するセッ ト アップとホールド

TRXCK = セッ ト アップ タイム (ク ロ ッ ク エッジ前)TRCKX = ホールド タイム (ク ロ ッ ク エッジ後)

TRDCK_DI/TRCKD_DI

(1)データ入力 DI WRCLK の前後で D1 が安定していなければならない時間

TRCCK_RDEN/TRCKC_RDEN

読み出しイネーブル RDEN RDCLK の前後で RDEN が安定していなければならない

時間

TRCCK_WREN/TRCKC_WREN

書き込みイネーブル WREN WRCLK の前後で WREN が安定していなければならない

時間

TRREC_RST/TRREM_RST

非同期リセッ ト RST RDCLK/WRCLK の前後で RST がディアサート されてい

なければならない時間

TRCCK_REGCE/TRCKC_REGCE

出力レジスタ イネーブル (オプシ ョ ン)

REGCE RDCLK の前後で REGCE ピンの信号が安定していなけれ

ばならない時間。同期 FIFO で DO_REG = 1 の場合のみ該

当します。

TRCCK_RSTREG/TRCKC_RSTREG

同期セッ ト または

リセッ ト

RSTREG RDCLK の前後で RSTREG ピンのセッ ト / リセッ ト信号が

安定していなければならない時間。同期 FIFO で DO_REG= 1 の場合のみ該当します。

Page 57: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 57UG473 (v1.11) 2014 年 11 月 12 日

FIFO のタイ ミング モデルとパラメーター

Clock-to-Out 遅延

TRCKO_DO(2) ク ロ ッ クからデータ出力

まで

DO RDCLK の後に FIFO の DO 出力で出力データが安定する

までの時間。 DO_REG = 0 に設定した同期 FIFO の場合と

デュアル ク ロ ッ ク モードの場合で異なり ます。

TRCKO_DO_REG(2) ク ロ ッ クからデータ出力

まで

DO RDCLK の後に FIFO の DO 出力で出力データが安定する

までの時間。 DO_REG = 1 に設定した同期 FIFO の場合と

デュアル ク ロ ッ ク モードの場合に同じです。

TRCKO_AEMPTY(3) ク ロ ッ クから ALMOST

EMPTY 出力まで

AEMPTY RDCLK の後に FIFO の ALMOSTEMPTY 出力で ALMOST EMPTY 信号が安定するまでの時間

TRCKO_AFULL(3) ク ロ ッ クから ALMOST

FULL 出力まで

AFULL WRCLK の後に FIFO の ALMOSTFULL 出力で ALMOST FULL 信号が安定するまでの時間

TRCKO_EMPTY(3) ク ロ ッ クから EMPTY

出力まで

EMPTY RDCLK の後に FIFO の EMPTY 出力で EMPTY 信号が安

定するまでの時間

TRCKO_FULL(3) ク ロ ッ クから FULL 出力

まで

FULL WRCLK の後に FIFO の FULL 出力で FULL 信号が安定

するまでの時間

TRCKO_RDERR(3) ク ロ ッ クから READ

ERROR 出力まで

RDERR RDCLK の後に FIFO の RDERR 出力で READ ERROR 信号が安定するまでの時間

TRCKO_WRERR(3) ク ロ ッ クから WRITE

ERROR 出力まで

WRERR WRCLK の後に FIFO の WRERR 出力で WRITE ERROR信号が安定するまでの時間

TRCKO_RDCOUNT(4) ク ロ ッ クから読み出し

ポインター出力まで

RDCOUNT RDCLK の後に FIFO の RDCOUNT 出力で読み出しポイ

ンター信号が安定するまでの時間

TRCKO_WRCOUNT(4) ク ロ ッ クから書き込み

ポインター出力まで

WRCOUNT WRCLK の後に FIFO の WRCOUNT 出力で書き込みポイ

ンター信号が安定するまでの時間

Reset-to-Out

TRCO_AEMPTY リセッ トから ALMOST EMPTY 出力まで

AEMPTY リセッ ト後に FIFO の ALMOSTEMPTY 出力で ALMOST EMPTY 信号が安定するまでの時間

TRCO_AFULL リセッ トから ALMOST FULL 出力まで

AFULL リセッ ト後に FIFO の ALMOSTFULL 出力で ALMOST FULL 信号が安定するまでの時間

TRCO_EMPTY リセッ トから EMPTY 出力まで

EMPTY リセッ ト後に FIFO の EMPTY 出力で EMPTY 信号が安定

するまでの時間

TRCO_FULL リセッ トから FULL 出力

まで

FULL リセッ ト後に FIFO の FULL 出力で FULL 信号が安定する

までの時間

TRCO_RDERR リセッ トから READ ERROR 出力まで

RDERR リセッ ト後に FIFO の RDERR 出力で READ ERROR 信号が安定するまでの時間

TRCO_WRERR リセッ トから WRITE ERROR 出力まで

WRERR リセッ ト後に FIFO の WRERR 出力で WRITE ERROR 信号が安定するまでの時間

TRCO_RDCOUNT リセッ トから読み出し

ポインター出力まで

RDCOUNT リセッ ト後に FIFO の RDCOUNT 出力で読み出しポイン

ター信号が安定するまでの時間

表 2-9 : FIFO のタイ ミング パラメーター (続き)

パラメーター 機能 制御信号 説明

Page 58: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

58 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

FIFO のタイ ミング特性

FIFO の各種タイ ミ ング パラ メーターについて説明します。 また、 FIFO の機能についても さ らに

詳し く説明します。 次の 6 つのケースでの動作をタイ ミ ング図で示します。

• ケース 1 : 空の FIFO への書き込み

• ケース 2 : フルまたはほぼフルの FIFO への書き込み

• ケース 3 : フルの FIFO からの読み出し

• ケース 4 : 空またはほぼ空の FIFO からの読み出し

• ケース 5 : すべてのフラグを リセッ ト

• ケース 6 : デュアル ク ロ ッ ク FIFO に対する読み出し と書き込みの同時実行

ケース 1 : 空の FIFO への書き込み

図 2-6 は、 完全に空の FIFO に対して書き込み操作を行った場合のタイ ミ ングを示しています。

TRCO_WRCOUNT リセッ トから書き込み

ポインター出力まで

WRCOUNT リセッ ト後に FIFO の WRCOUNT 出力で書き込みポイン

ター信号が安定するまでの時間

注記 :

1. TRCDCK_DI にはパリティ入力が含まれます。

2. TRCKO_DO にはパリティ出力 (TRCKO_DOP) が含まれます。

3. 7 シ リーズ FPGA では、 TRCKO_AEMPTY、 TRCKO_AFULL、 TRCKO_EMPTY、 TRCKO_FULL、 TRCKO_RDERR、 TRCKO_WRERR は TRCKO_FLAGS に含まれています。

4. 7 シ リーズ FPGA では、 TRCKO_RDCOUNT および TRCKO_WRCOUNT は TRCKO_POINTERS に含まれています。

表 2-9 : FIFO のタイ ミング パラメーター (続き)

パラメーター 機能 制御信号 説明

X-Ref Target - Figure 2-6

図 2-6 : 空の FIFO への書き込み (FWFT モード )

UG473_c2_06_031411

00

1 42 3

01 02 03 04

00

05 06

WRCLK

WREN

DI

RDCLK

RDEN

DO

EMPTY

AEMPTY

TRCCK_WREN

TRDCK_DI TRDCK_DI

TRCKO_DO

TRCKO_EMPTY

TRCKO_AEMPTY

Page 59: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 59UG473 (v1.11) 2014 年 11 月 12 日

FIFO のタイ ミング モデルとパラメーター

クロック イベン ト 1 および 3 : 書き込みと EMPTY 信号のディアサート

空の FIFO に書き込みを実行する と、 初のアドレスにある FIFO の内容が DI ピンのデータ値に置

き換わり ます。 その RDCLK の 3 サイ クル後 (FWFT モードの場合は RDCLK の 4 サイ クル後)、EMPTY ピンがディアサート され、 FIFO が空でなくなったこ とが示されます。 また、 内部読み出し

でデータが出力レジスタにプリ ロード されるたびに RDCOUNT が 1 つずつインク リ メン ト します。

図 2-6 に示したタイ ミ ング図は、FWFT モードの場合です。クロ ッ ク イベン ト 1 は書き込みクロ ッ

クを基準と しており、 ク ロ ッ ク イベン ト 3 は読み出しク ロ ッ クを基準と しています。 ク ロ ッ ク イベン ト 3 は、 クロ ッ ク イベン ト 1 から RDCLK の 4 サイ クル分後に発生します。

• ク ロ ッ ク イベン ト 1 (WRCLK) よ り TFDCK_DI 時間前に、FIFO の DI 入力でデータ 00 が有効

になり ます。

• ク ロ ッ ク イベン ト 1 (WRCLK) よ り TFCCK_WREN 時間前に、FIFO の WREN 入力で書き込み

イネーブルが有効になり ます。

• ク ロ ッ ク イベン ト 3 (RDCLK) よ り TFCKO_DO 時間後に、 FIFO の DO 出力でデータ 00 が有

効になり ます。 標準モードでは、 データ 00 は FIFO の DO 出力ピンには現れません。

• ク ロ ッ ク イベン ト 3 (RDCLK) よ り TFCKO_EMPTY 時間後に、 EMPTY がディアサート されま

す。 標準モードでは、 ク ロ ッ ク イベン ト 3 よ り RDCLK の 1 サイクル分前に EMPTY がディ

アサート されます。

WRCLK と RDCLK の立ち上がりエッジが近接している と、 EMPTY 信号が RDCLK の 1 周期後

にディアサート されるこ とがあ り ます。

クロック イベン ト 2 および 4 : 書き込みと ALMOST EMPTY 信号のディアサート

FIFO に 3 つ目のデータが書き込まれてから RDCLK の 4 サイクル後に ALMOST EMPTY 信号が

ディアサート され、 FIFO がほぼ空の状態でなくなったこ とが示されます。

図 2-6 に示したタイ ミ ング図は、FWFT モードの場合です。クロ ッ ク イベン ト 2 は書き込みクロ ッ

クを基準と しており、 ク ロ ッ ク イベン ト 4 は読み出しク ロ ッ クを基準と しています。 ク ロ ッ ク イベン ト 4 は、 クロ ッ ク イベン ト 2 から RDCLK の 4 サイ クル分後に発生します。

• ク ロ ッ ク イベン ト 2 (WRCLK) よ り TFDCK_DI 時間前に、FIFO の DI 入力でデータ 02 が有効

になり ます。

• FIFO の WREN 入力では、 書き込みイネーブルがアサート されたまま とな り ます。

• ク ロ ッ ク イベン ト 4 では読み出しが実行されていないため、FIFO の DO 出力ピンのデータは

00 のままです。標準モードの場合、データ 00 が FIFO の DO 出力ピンに現れるこ とはあ り ま

せん。

• ク ロ ッ ク イベン ト 4 (RDCLK) よ り TFCKO_AEMPTY 時間後に、 AEMPTY ピンで ALMOSTEMPTY がディアサート されます。 AEMPTY がディアサート されるタイ ミ ングは、 標準モー

ドでも FWFT モードでも同じです。

WRCLK と RDCLK の立ち上がりエッジが近接している と、 AEMPTY 信号が RDCLK の 1 周期

後にディアサート されるこ とがあ り ます。

Page 60: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

60 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

ケース 2 : フルまたはほぼフルの FIFO への書き込み

図 2-7 は、 ほぼ完全にフルの FIFO に対して書き込み操作を行った場合のタイ ミ ングを示していま

す。 このタイ ミ ング図は標準モード と FWFT モードで共通です。

クロック イベン ト 1 : 書き込みと ALMOST FULL 信号のアサート

ほぼフルの FIFO に書き込みを実行する と、 ALMOST FULL 信号がアサート されます。

• ク ロ ッ ク イベン ト 1 (WRCLK) よ り TFDCK_DI 時間前に、FIFO の DI 入力でデータ 00 が有効

になり ます。

• ク ロ ッ ク イベン ト 1 (WRCLK) よ り TFCCK_WREN 時間前に、FIFO の WREN 入力で書き込み

イネーブルが有効になり ます。

• ク ロ ッ ク イベン ト 1 (WRCLK) よ り ク ロ ッ クの 1 サイクルと TFCKO_AFULL 時間後に、 FIFOの AFULL 出力ピンで ALMOST FULL がアサート されます。

クロック イベン ト 2 : 書き込みと FULL 信号のアサート

FIFO がフルになる と、 FULL 信号ピンがアサート されます。

• ク ロ ッ ク イベン ト 2 (WRCLK) よ り TFDCK_DI 時間前に、FIFO の DI 入力でデータ 04 が有効

になり ます。

• FIFO の WREN 入力では、 書き込みイネーブルがアサート されたまま とな り ます。

• ク ロ ッ ク イベン ト 2 (WRCLK) よ り TFCKO_FULL 時間後に、FIFO の FULL 出力ピンで FULLがアサート されます。

フルの FIFO に対して読み出し と書き込みを続けて実行した場合、 読み出し と書き込みのタイ ミ ン

グによっては書き込みが行われない場合があ り ます。正確な動作はシ ミ ュレーシ ョ ン モデルを確認

して ください。

X-Ref Target - Figure 2-7

図 2-7 : フルまたはほぼフルの FIFO への書き込み

UG473_c2_07_070110

00 01 02 03 04 05 06

WRCLK

WREN

DI

RDCLK

RDEN

FULL

AFULL

WRERR

1 42 3

TRDCK_DI TRDCK_DITRDCK_DI

TRCKO_AFULL

TRCKO_WERR

TRCKO_FULL

TRCCK_WREN

TRCKO_WERR

TRCCK_WREN

Page 61: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 61UG473 (v1.11) 2014 年 11 月 12 日

FIFO のタイ ミング モデルとパラメーター

クロック イベン ト 3 : 書き込みと WRITE ERROR 信号のアサート

FIFO がフルの状態で、FIFO に送信したデータが書き込まれなかった場合、WRERR ピンがアサー

ト されます。

• ク ロ ッ ク イベン ト 3 (WRCLK) よ り TFDCK_DI 時間前に、FIFO の DI 入力でデータ 05 が有効

になり ます。

• FIFO の WREN 入力では、 書き込みイネーブルがアサート されたまま とな り ます。

• ク ロ ッ ク イベン ト 3 (WRCLK) よ り TFCKO_WRERR 時間後に、 FIFO の WRERR 出力ピンで

WRITE ERROR がアサート されます。 データ 05 は FIFO には書き込まれません。

クロック イベン ト 4 : 書き込みと WRITE ERROR 信号のディアサート

フルの状態の FIFO への書き込みを中止する と、 WRERR ピンがディアサート されます。

• ク ロ ッ ク イベン ト 4 (WRCLK) よ り TFCCK_WREN 時間前に、FIFO の WREN 入力で書き込み

イネーブルがディアサート されます。

• ク ロ ッ ク イベン ト 4 (WRCLK) よ り TFCKO_WRERR 時間後に、 FIFO の WRERR 出力ピンで

WRITE ERROR がディアサート されます。

WRITE ERROR 信号は、書き込みクロッ クの立ち上がりエッジごとにアサート /ディアサート されま

す。 WREN と FULL の両方が TRUE の間は、 WRITE ERROR はアサート されたままとなり ます。

ケース 3 : フルの FIFO からの読み出し

図 2-8 は、 完全にフルの状態の FIFO に対して読み出し操作を行った場合のタイ ミ ングを示してい

ます。

クロック イベン ト 1 および 2 : 読み出しと FULL 信号のディアサート

フルの FIFO から読み出しを実行する と、 初のアドレスにある FIFO の内容が FIFO の DO 出力

でアサート されます。 初の読み出し後、 FULL を WRCLK の 3 サイクル間ディアサート します。

これは、 Virtex-6 FPGA の機能とは異なる動作です。

図 2-8 に示したタイ ミ ング図は、 標準モード と FWFT モードで共通です。 ク ロ ッ ク イベン ト 1 は読み出しクロ ッ クを基準と しています。 ク ロ ッ ク イベン ト 2 は、 クロ ッ ク イベン ト 1 の WRCLKの 3 サイ クル分後に発生します。

X-Ref Target - Figure 2-8

図 2-8 : フルの FIFO からの読み出し

UG473_c2_08_032111

1 42

020100 03 04 05 06

3

WRCLK

WREN

RDCLK

RDEN

DO

FULL

AFULL

TRCCK_RDEN

TRCKO_DO

TRCKO_AFULLTRCKO_FULL

Page 62: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

62 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

• ク ロ ッ ク イベン ト 1 (RDCLK) よ り TFCCK_RDEN 時間前に、 FIFO の RDEN 入力で読み出し

イネーブルが有効になり ます。

• ク ロ ッ ク イベン ト 1 (RDCLK) よ り TFCKO_DO 時間後に、 FIFO の DO 出力でデータ 00 が有

効になり ます。

• ク ロ ッ ク イベン ト 2 (WRCLK) よ り TFCKO_FULL 時間後に、 FULL がディアサート されます。

RDCLK と WRCLK の立ち上がりエッジが近接している と、 FULL 信号が WRCLK の 1 周期後に

ディアサート されるこ とがあ り ます。

クロック イベン ト 3 および 4 : 読み出しと ALMOST FULL 信号のディアサート

FIFO から 4 つ目のデータを読み出してから WRCLK の 4 サイ クル分後に AFULL ピンがディア

サート され、 FIFO がほぼフルの状態でなくなったこ とが示されます。

図 2-8 に示したタイ ミ ング図は、 標準モード と FWFT モードで共通です。 ク ロ ッ ク イベン ト 3 は読み出し ク ロ ッ クを基準と しており、 ク ロ ッ ク イベン ト 4 は書き込みク ロ ッ クを基準と していま

す。 ALMOST_FULL_OFFSET は 小値 4 に設定されます。 ク ロ ッ ク イベン ト 4 は、 クロ ッ ク イベン ト 3 から WRCLK の 4 サイクル分後に発生します。

• FIFO の RDEN 入力では、 読み出しイネーブルがアサート されたまま とな り ます。

• ク ロ ッ ク イベン ト 4 (RDCLK) よ り TRCKO_AFULL 時間後に、AFULL ピンで ALMOST FULLがディアサート されます。

RDCLK の立ち上がりエッジと WRCLK の立ち上がりエッジの間には、 AFULL を確実にディア

サートするための 小時間の要件があ り ます。この要件を満たしていないと、AFULL のディアサー

トに WRCLK の 1 サイクル余分にかかるこ とがあ り ます。

ケース 4 : 空またはほぼ空の FIFO からの読み出し

図 2-9 は、ほぼ完全に空の FIFO に対して読み出し操作を行った場合のタイ ミ ングを示しています。

このタ イ ミ ング図は、 標準モードを表したものです。 FWFT モードでは、 これよ り も読み出し ク

ロ ッ クの 1 サイ クル分前に DO にデータが現れます。

X-Ref Target - Figure 2-9

図 2-9 : 空またはほぼ空の FIFO からの読み出し (標準モード )

UG473_c2_09_070110

1 42

020100 03 04

3

WRCLK

WREN

RDCLK

RDEN

DO

EMPTY

AEMPTY

RDERR

TRCCK_RDEN

TRCKO_AEMPTY

TRCKO_DO TRCKO_DO

TRCKO_EMPTY

TRCCK_RDEN

TRCKO_RDERR

TRCKO_RDERR

Page 63: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 63UG473 (v1.11) 2014 年 11 月 12 日

FIFO のタイ ミング モデルとパラメーター

クロック イベン ト 1 : 読み出しと ALMOST EMPTY 信号のアサート

ほぼ空の FIFO から読み出しを実行する と、 ALMOST EMPTY 信号がアサート されます。

• ク ロ ッ ク イベン ト 1 (RDCLK) よ り TFCCK_RDEN 時間前に、 FIFO の RDEN 入力で読み出し

イネーブルが有効になり ます。

• ク ロ ッ ク イベン ト 1 (RDCLK) よ り TFCKO_DO 時間後に、 FIFO の DO 出力でデータ 00 が有

効になり ます。

• ク ロ ッ ク イベン ト 1 (RDCLK) よ り ク ロ ッ クの 1 サイクルと TFCKO_AEMPTY 時間後に、FIFOの AEMPTY 出力ピンで ALMOST EMPTY がアサート されます。

クロック イベン ト 2 : 読み出しと EMPTY 信号のアサート

FIFO が空になる と EMPTY 信号ピンがアサート されます。

• FIFO の RDEN 入力では、 読み出しイネーブルがアサート されたまま とな り ます。

• ク ロ ッ ク イベン ト 2 (RDCLK) よ り TFCKO_DO 時間後に、FIFO の DO 出力でデータ 04 ( 後

のデータ) が有効になり ます。

• ク ロ ッ ク イベン ト 2 (RDCLK) よ り TFCKO_EMPTY 時間後に、 FIFO の EMPTY 出力ピンで

EMPTY がアサート されます。

空の FIFO に対して書き込みと読み出しを続けて実行した場合、 読み出し と書き込みのタイ ミ ング

によっては、読み出しが行われない場合があ り ます。正確な動作はシ ミ ュレーシ ョ ン モデルを確認

して ください。

クロック イベン ト 3 : 読み出しと READ ERROR 信号のアサート

FIFO が空の状態で、読み出すこ とができるデータがない場合は RDERR ピンがアサート されます。

• FIFO の RDEN 入力では、 読み出しイネーブルがアサート されたまま とな り ます。

• ク ロ ッ ク イベン ト 3 (RDCLK) よ り TFCKO_RDERR 時間後に、 FIFO の RDERR 出力ピンで

READ ERROR がアサート されます。

• FIFO の DO ピンに出力されるデータは 04 のまま変わり ません。

クロック イベン ト 4 : 読み出しと READ ERROR 信号のディアサート

空の状態の FIFO からの読み出しを中止する と、 RDERR ピンがディアサート されます。

• ク ロ ッ ク イベン ト 4 (RDCLK) よ り TFCCK_RDEN 時間前に、 FIFO の RDEN 入力で読み出し

イネーブルがディアサート されます。

• ク ロ ッ ク イベン ト 4 (RDCLK) よ り TFCKO_RDERR 時間後に、 FIFO の RDERR 出力ピンで READ ERROR がディアサート されます。

READ ERROR 信号は、 読み出し ク ロ ッ クの立ち上がりエッジごとにアサート /ディアサート され

ます。 RDEN と EMPTY の両方が TRUE の間は、 この信号はアサート されたまま とな り ます。

Page 64: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

64 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

ケース 5 : すべてのフラグをリセッ ト

図 2-10 にすべてのフラグがリセッ ト されるタイ ミ ングを示します。

リセッ ト信号がアサート される と、 すべてのフラグがリセッ ト されます。

• リセッ ト (RST) の TFCO_EMPTY 時間後に、 FIFO の EMPTY 出力ピンで EMPTY がアサート

されます。

• リセッ ト (RST) の TFCO_AEMPTY 時間後に、FIFO の AEMPTY 出力ピンで ALMOST EMPTYがアサート されます。

• リセッ ト (RST) の TFCO_FULL 時間後に、 FIFO の FULL 出力ピンで FULL がディアサート さ

れます。

• リセッ ト (RST) の TFCO_AFULL 時間後に、 FIFO の AFULL 出力ピンで ALMOST FULL がディアサート されます。

リセッ トは、 すべてのフラグを リセッ トするための非同期信号です。 すべての内部ステート とフラ

グを正しい値にリセッ トするには、リセッ ト信号を RDCLK/WRCLK の 3 サイクル間 High に保持

する必要があ り ます。

ケース 6 : デュアル クロック FIFO に対する読み出しと書き込みの同時実行

非同期 FIFO の場合、 FIFO がステータス フラグをアサート している状態で読み出し と書き込みを

同時に実行する と、 結果は不定とな り ます。 フラグをアサートするかしないかは FIFO ロジッ クが

判断しますが、 ツールのシ ミ ュレーシ ョ ン モデルにこの動作は反映されないため、不一致が起こる

可能性があ り ます。 RDCLK および WRCLK に共通のクロ ッ クを使用している場合は、 FIFO を同

期モード (EN_SYN = TRUE) で使用してください。

X-Ref Target - Figure 2-10

図 2-10 : すべてのフラグをリセッ ト

UG473_c2_10_070110

WRCLK

RST

RDCLK

EMPTY

AEMPTY

FULL

AFULL

TRCO_EMPTY

TRCO_AEMPTY

TRCO_FULL

TRCO_AFULL

Page 65: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 65UG473 (v1.11) 2014 年 11 月 12 日

FIFO のアプリケーシ ョ ン

FIFO のアプリケーシ ョ ン

7 シ リーズ FPGA の FIFO ブロ ッ ク よ り大きなサイズの FIFO を実装するには、次の 2 つの方法が

あ り ます。

• 2 つ以上の FIFO をカスケード接続してワード数の大きい FIFO を構築する

• 2 つ以上の FIFO を並列接続してビッ ト数の大きい FIFO を構築する

FIFO のカスケード接続によるワード数の拡張

図 2-11 に、 N 個の FIFO36 をカスケード接続してワード数を拡張する方法を示します。 こ こでは、

初から N – 1 番目までの FIFO をすべて FWFT モードに設定し、外部リ ソースを使用してこれら

FIFO を接続しています。 このアプリ ケーシ ョ ンのデータ レイテンシは、 各 FIFO のレイテンシの

総和とな り ます。 大周波数はフ ィードバッ ク パスの制限を受けます。また、NOR ゲートは、CLBロジッ クを使用してインプリ メン ト します。

• N は 2 以上の数と します。 N=2 の場合、 図の中央に示した FIFO は必要あ り ません。

• WRCLK が RDCLK よ り高速な場合は、 INTCLK = WRCLK です。

• WRCLK と RDCLK が同じ速度または RDCLK が高速な場合は、 INTCLK = RDCLK です。

• ALMOSTEMPTY のしきい値は N 番目の FIFO で設定し、ALMOSTFULL のしきい値は 初

の FIFO で設定します。

X-Ref Target - Figure 2-11

図 2-11 : 複数の FIFO のカスケード接続によるワード数拡張の例

UG473_c2_11_052610

DO<3:0>

ALMOSTEMPTY

EMPTY

ALMOSTEMPTY

EMPTY

ALMOSTFULL

FULLRDCLK

WRCLK

DI<3:0> DO<3:0>

RDEN

WREN

DI<3:0>

RDENRDCLK

WREN

WRCLK

RDCLKWRCLK

DI<3:0> DO<3:0>

FULLRDEN

WREN

INTCLK

N x 8K x 4 FIFO

EMPTY

FIFO 1

FWFTMode

RDCLKWRCLK

DI<3:0> DO<3:0>

RDEN

WREN EMPTY

FULL

FIFO 2 ... (N–1)

FWFTMode

FIFO N

ALMOSTFULL

FULL

Page 66: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

66 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 2 章 : ビルト イン FIFO のサポート

FIFO の並列接続によるビッ ト数の拡張

図 2-12 に示すよ うに、 7 シ リーズ FPGA の FIFO36 は並列に接続する とデザインのビッ ト数を拡

張できます。AND/OR ゲートのインプリ メン トには CLB ロジッ クが使用されます。すべての FIFOの FULL 信号を OR 接続して出力 FULL 信号を作成し、EMPTY 信号はすべての FIFO の EMPTY信号を OR 接続して出力 EMPTY 信号を作成します。 大周波数はロジッ ク ゲートのフ ィードバッ

ク パスの制限を受けます。

X-Ref Target - Figure 2-12

図 2-12 : FIFO の並列接続によるビッ ト数拡張の例

RDCLK

WRCLK

DIN[71:0]

RDEN

WREN

RDCLK

WRCLK

DIN[71:0]DOUT[71:0]

EMPTYRDEN

WREN

FULL

DOUT[71:0]

EMPTY

FULL

DIN[71:0]

DIN[143:72]

DOUT[71:0]

DOUT[143:72]

RDEN

WREN

WRCLK

RDCLK

512 x 144 FIFO

FIFO #1

FIFO #2

FULL

EMPTY

UG473_c2_12_052610

Page 67: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 67UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM と FIFO の有効な組み合わせ

ブロック RAM と FIFO の有効な組み合わせ

1 つの RAMB36 プ リ ミ テ ィブでは、 図 2-13 に示したブロ ッ ク RAM と FIFO の組み合わせがサ

ポート されます。 ブロ ッ ク RAM と FIFO プ リ ミ テ ィブを同じ位置に配置する場合は、 必ず FIFOを下位ポートに配置して ください。

X-Ref Target - Figure 2-13

図 2-13 : ブロック RAM と FIFO の有効な組み合わせ

UG473_c2_13_052610

RAMB18E1TDP or

SDP Mode

RAMB18E1TDP or

SDP Mode

RAMB18E1TDP or

SDP Mode

RAMB18E1TDP or

SDP Mode

FIFO18E1FIFO18 Mode

FIFO18E1FIFO18_36 Mode

Page 69: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 69UG473 (v1.11) 2014 年 11 月 12 日

第 3 章

ビルト イン誤り訂正

概要

SDP (シンプル デュアル ポート ) ブロ ッ ク RAM は、72 ビッ ト幅の RAM に追加の 8 ビッ ト を使用

し、ハミ ング コードの誤り訂正機能を備える 512x64 RAM と して構成できます。このエラーはユー

ザーから透過的に実行されます。

8 つの保護ビッ ト (ECCPARITY) は書き込み動作ごとに生成され、 64 ビッ トのデータ と共にメモリ

に格納されます。 この ECCPARITY ビッ トは、 読み出し中にシングル ビッ ト エラーの訂正や、 ダ

ブルビッ ト エラーの検出 (訂正は行わない) に使用されます。また、ECCPARITY ビッ トは、WRCLKの立ち上がりエッジでメモリへ書き込まれ、FPGA ロジッ クへ出力されます。ECCPARITY 出力ビッ

トに利用可能な、 オプシ ョ ンの出力レジスタはあ り ません。

1 回の読み出し動作で 72 ビッ トのデータ (64 ビッ トのデータ と 8 ビッ トのパリティ ) がメモリから

読み出され、 ECC デコーダーに入り ます。 ECC デコーダーは、 読み出しの結果 (エラーなし、 シン

グル ビッ ト エラーの訂正、ダブル ビッ ト エラーの検出) を示す 2 種類のステータス出力 (SBITERRおよび DBITERR) を生成します。 標準 ECC モードでは、 読み出し動作によって DO の出力データ

は訂正されますが、 メモ リ アレイ内のエラーは修正されません。 FMAX を向上させるため、 データ

出力 (DO)、 SBITERR および DBITERR 属性で制御されるオプシ ョ ンのレジスタが使用できます。

この ECC コンフィギュレーシ ョ ン オプシ ョ ンは、SDP モードの 36Kb ブロッ ク RAM (RAMB36E1)または 36Kb FIFO (FIFO36E1) で使用可能です。 RAMB36E1 には、 エラーを挿入する機能があ り

ます。RAMB36E1 には、現在読み出し中のデータが格納されているアドレスを読み出すリードバッ

ク機能があ り ます。 この機能を利用する と、 ビッ ト エラーを訂正したり、今後のアクセスに備えて

そのアドレスの内容を無効にするこ と も容易です。 FIFO36E1 は標準 ECC モードをサポート して

おり、 エラー挿入機能も利用できます。 FIFO36E1 は ECC エンコード専用モードをサポート して

おらず、 読み出し中のアドレス位置の出力にも対応していません。

7 シ リーズ FPGA のブロ ッ ク RAM の ECC は、 SDP モード と同じよ うに READ_FIRST および WRITE_FIRST の両モードをサポート します。

Page 70: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

70 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

ECC の動作モード

標準 ECC モード (EN_ECC_READ = TRUE、 EN_ECC_WRITE = TRUE) では、エンコーダーとデ

コーダーの両方が使用できます。 1 回の書き込みで 64 ビッ トのデータ と ECC で生成された 8 ビッ

トのパリ ティがメモ リに格納されます。 外部パリ ティ ビッ トは無視されます。 また読み出しでは、

デコード された 72 ビッ トのデータおよびパリティが読み出されます。

SDP モードの RAMB36E1 では、エンコーダーとデコーダーに別々にアクセスして外部でも使用で

きます。 エンコーダーを個別に使用するには、 DI ポートからデータを送信して ECCPARITY 出力

ポート をサンプルします。 デコーダーを個別に使用するには、 エンコーダーを無効にしてデータを

ブロ ッ ク RAM に書き込み、ブロ ッ ク RAM から訂正済みデータ とステータス ビッ ト を読み出しま

す。 詳細は、 「ブロ ッ ク RAM (RAMB36E1) の属性」 を参照して ください。

デコード専用の ECC モードでデコーダーを使用するには、EN_ECC_WRITE = FALSE、EN_ECC_READ = TRUE と設定してください。

エンコーダーは、 次の 2 つの方法で使用できます。

• 標準の ECC モードでエンコーダーを使用するには、 EN_ECC_WRITE = TRUE、 EN_ECC_READ = TRUE と設定します。 このモードは ECC パリティをサポート していません。

• エンコード専用モードで ECC を使用するには、EN_ECC_WRITE = TRUE、EN_ECC_READ= FALSE と設定します。 このモードは ECC パリティをサポート します。

ECC モードを使用する場合のブロ ッ ク RAM の機能は次のよ うにな り ます。

• ブロ ッ ク RAM ポートのアドレス、ク ロ ッ ク、イネーブル入力は独立していますが、1 つのポー

トが書き込み専用ポートに、 も う 1 つのポートが読み出し専用ポートにな り ます (SDP)。

• DO は、 誤り訂正後の読み出しデータを表します。

• DO の値は、 次のアクティブな読み出しまで有効なまま保持されます。

• 異なる読み出し /書き込みアドレスの同期デコードおよびエンコードは有効ですが、同じ読み出

し /書き込みアドレスの同期デコードおよびエンコードは無効です。

• ECC コンフ ィギュレーシ ョ ンの場合、ブロッ ク RAM は READ_FIRST または WRITE_FIRSTモードのいずれかとなり ます。 詳細は、 第 1 章の 「競合の回避」 を参照してください。

Page 71: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 71UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM ECC アーキテクチャの概略図

ブロック RAM ECC アーキテクチャの概略図

図 3-1 に、 ECC モード時における 7 シ リーズ FPGA のブロ ッ ク RAM の概略図を示します。

X-Ref Target - Figure 3-1

図 3-1 : ブロック RAM ECC の概略図

wraddr 9

Data In

EN_ECC_WRITE

EN_ECC_READ

EN_ECC_READ

DataOut

ParityOut

rdaddr 9

Block RAM512 x 72

64-bitECC

Encode64

64

64

DI[63:0]

DO[63:0]

0

1

Decodeand

Correct

64

64

RDADDR[8:0]

WRADDR[8:0]

8

DOP[7:0]

RDADDRECC[8:0]

8ECCPARITY[7:0]

1INJECTDBITERR

1INJECTSBITERR

8

8

DIP[7:0] 8

UG473_c3_01_052610

8

0

1

0

1

81

0

1

0

11

DO_REG

0

164

Q D

DBITERR

DO_REG

0

11

Q D

SBITERR

DO_REG

0

11

Q D

DO_REG

0

18

9

Q D

DO_REG

0

1 Q D

Page 72: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

72 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

ブロック RAM および FIFO ECC プリ ミテ ィブ

図 3-2 にブロッ ク RAM (RAMB36E1) ECC プリ ミ ティブを示します。SDP モードの RAMB36E1のみ、 ECC をサポート します。

X-Ref Target - Figure 3-2

図 3-2 : SDP モードの RAMB36E1 : ブロック RAM ECC

SBITERR

DI[31:0]

WRADDR[8:0]

RDADDR[8:0]

WRCLK

DIP[3:0]

DI[63:32]

DIP[7:4]

ECCPARITY[7:0]ECCPARITY

DBITERR

SBITERR

DBITERR

RDADDRECC[8:0]RDADDRECC

DO[31:0]

DOP[3:0]

DO[63:32]

DOP[7:4]

WREN

RDENREGCE

RDCLK

UG473_c3_02_011414

RAMB36E1

INJECTSBITERRINJECTDBITERR

INJECTSBITERRINJECTDBITERR

DOPADOP

DOPBDOP

DIADI

DIPADIP (Decode Only)ADDRARDADDR

WEAENARDEN

RSTREGARSTREG

CLKARDCLK

DOADO

DOBDO

RSTRAMARSTRAM

REGCEAREGCE

DIBDIDIPBDIP

ADDRBWRADDR

WEBWEENBWREN

RSTREGB

RSTRAMB

REGCEB

CLKBWRCLK

32

4

9

4

32

4

32

4

32

4

9

8

8

9

CASCADEOUTA(NC)

CASCADEOUTB(NC)

CASCADEINA(NC)

CASCADEINB(NC)

(Standard or Encode Only)

Page 73: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 73UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM および FIFO ECC のポート

図 3-3 に FIFO36E1 ECC プリ ミ ティブを示します。 FIFO36_72 は標準 ECC モードのみサポート

し、 RDADDRECC 出力はサポート されません。

ブロック RAM および FIFO ECC のポート

表 3-1 にブロッ ク RAM ECC の各 I/O ポート名を示し、 説明します。

X-Ref Target - Figure 3-3

図 3-3 : FIFO36_72 モード : FIFO ECC

SBITERR

DI[63:0]

RST

WRCLK

DIP[7:0]ECCPARITY[7:0]

DBITERR

DO[63:0]

DOP[7:0]

WREN

RDEN

RDCLK

INJECTSBITERR

INJECTDBITERR

UG473_c3_03_052610

FIFO36E1

EMPTY

FULL

ALMOSTEMPTY

ALMOSTFULL

RDERR

WRERR

RDCOUNT[8:0]

WRCOUNT[8:0]

表 3-1 : RAMB36E1 のポート (ECC ポートを含む) の名前と説明

ポート名 信号の説明

DIADI[31:0] ECC モードのポート A データ入力。 アドレスは ADDRBWRADDR で指定します。 SDP モー

ドでのポート名マッピングは、 表 1-13 を参照してください。

DIPADIP[3:0] ECC モードのポート A データ パリティ入力。 アドレスは ADDRBWRADDR で指定します。

SDP モードでのポート名マッピングは、 表 1-13 を参照して ください。

DIBDI[31:0] ポート B データ入力。 アドレスは ADDRBWRADDR で指定します。 SDP モードでのポート名

マッピングは、 表 1-13 を参照してください。

DIPBDIP[3:0] ポート B データ パリティ入力。アドレスは ADDRBWRADDR で指定します。SDP モードでの

ポート名マッピングは、 表 1-13 を参照してください。

ADDRARDADDR[15:0] ポート A アドレス入力バス。RAM_MODE = SDP の場合、RDADDR バスとな り ます。ECC モー

ドでは、 ビッ ト [14:6] が使用されます。

ADDRBWRADDR[15:0] ポート B アドレス入力バス。 RAM_MODE = SDP の場合、 WRADDR バスとな り ます。 ECC モードでは、 ビッ ト [14:6] が使用されます。

WEA[3:0] ポート A バイ ト ライ ト イネーブル。RAM_MODE = SDP の場合は使用しません。ECC モード

では、 WEA を GND に接続してください。

WEBWE[7:0] ポート B バイ ト ライ ト イネーブル (WEBWE [3:0])。 RAM_MODE = SDP の場合、バイ ト ライ

ト イネーブルとなり ます。 ECC モードでは、 このポート をロジッ ク High に接続してください。

ENARDEN ポート A イネーブル。 RAM_MODE = SDP あるいは ECC の場合、 RDEN とな り ます。

ENBWREN ポート B イネーブル。 RAM_MODE = SDP あるいは ECC の場合、 WREN とな り ます。

Page 74: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

74 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

RSTREGARSTREG 同期出力レジスタのセッ ト / リセッ ト 。SRVAL_A (DO_REG = 1) で初期化します。REGCE よ り

も優先するかど うかは RSTREG_PRIORITY_A で設定します。 RAM_MODE = SDP の場合、

RSTREG とな り ます。 ECC モードでは、 GND に接続してください。

RSTREGB 同期出力レジスタのセッ ト / リセッ ト 。SRVAL_B (DO_REG = 1) で初期化します。REGCE よ り

も優先するかど うかは、RSTREG_PRIORITY_B で設定します。SDP (ECC) モードでは、GNDに接続してください。

RSTRAMARSTRAM 同期出力ラ ッチのセッ ト / リセッ ト 。 SRVAL_A (DO_REG = 0) で初期化します。 RAM_MODE= SDP の場合、 RSTRAM とな り ます。 ECC モードでは、 GND に接続して ください。

RSTRAMB 同期出力ラ ッチのセッ ト / リセッ ト 。SRVAL_B (DO_REG = 0) で初期化します。SDP (ECC) モー

ドでは、 REGCEB を GND に接続してください。

CLKARDCLK ポート A ク ロ ッ ク入力。 RAM_MODE = SDP の場合、 RDCLK とな り ます。

CLKBWRCLK ポート B ク ロ ッ ク入力。 RAM_MODE = SDP の場合、 WRCLK とな り ます。

REGCEAREGCE ポート A 出力レジスタ ク ロ ッ ク イネーブル (DO_REG = 1)。 RAM_MODE = SDP の場合、

REGCE とな り ます。

REGCEB ポート B 出力レジスタ ク ロ ッ ク イネーブル (DO_REG = 1)。ECC モードでは、GND に接続し

てください。

CASCADEINA ポート A カスケード入力。 RAM_MODE = TDP の場合のみ使用します。

CASCADEINB ポート B カスケード入力。 RAM_MODE = TDP の場合のみ使用します。

CASCADEOUTA ポート A カスケード出力。 RAM_MODE = TDP の場合のみ使用します。

CASCADEOUTB ポート B カスケード出力。 RAM_MODE = TDP の場合のみ使用します。

DOADO[31:0] ポート A データ出力バス。 アドレスは ADDRARDADDR で指定します。 SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOPADOP[3:0] ポート A パリティ出力バス。アドレスは ADDRARDADDR で指定します。SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOBDO[31:0] ポート B データ出力バス。 アドレスは ADDRARDADDR で指定します。 SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

DOPBDOP[3:0] ポート B パリティ出力バス。アドレスは ADDRARDADDR で指定します。SDP モードでのポー

ト名マッピングは、 表 1-13 を参照してください。

ECC ポート名 (RAM_MODE = TDP の場合は使用しない)

INJECTSBERR ECC を使用する場合に、シングル ビッ ト エラーを挿入します。書き込み中にアサート される と、

ブロ ッ ク RAM の特定のビッ ト位置にシングル ビッ ト エラーが生成されます。 このビッ ト位置

を読み出すと、ブロ ッ ク RAM の ECC ロジッ クによってエラーが訂正されます。シングル ビッ

ト エラーはビッ ト位置 DI[30] に生成されます。

INJECTDBERR ECC を使用する場合に、 ダブル ビッ ト エラーを挿入します。 書き込み中にアサート される と、

ブロ ッ ク RAM の特定のビッ ト位置にダブル ビッ ト エラーが生成されます。 このビッ ト位置を

読み出すと、 ブロ ッ ク RAM の ECC ロジッ クによってダブル ビッ ト エラーが示されます。

INJECTSBERR と INJECTDBERR が同時にアサート された場合は、ダブル ビッ ト エラーが挿

入されます。 ダブル ビッ ト エラーはビッ ト位置 DI[30] と DI[62] に生成されます。

ECCPARITY[7:0] ECC エンコーダー出力バスは、 エンコード専用モードで使用されます。

SBITERR ECC シングル ビッ ト エラーの出力ステータス。

DBITERR ECC ダブル ビッ ト エラーの出力ステータス。

表 3-1 : RAMB36E1 のポート (ECC ポートを含む) の名前と説明 (続き)

ポート名 信号の説明

Page 75: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 75UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM および FIFO ECC のポート

表 3-2 に FIFO ECC I/O ポート名と説明を示します。

RDADDRECC[8:0] ECC 読み出しアドレス。 現在読み出し中のデータへのアドレス ポインター。 データ とそのアド

レスが同じ クロ ッ ク サイクルで出力されます。

注記 :

1. ブロ ッ ク RAM の ECC ロジッ クにインプ リ メン ト されたハミ ング コードは、エラー検出なし、DO でのシングル ビッ ト エラーの検出と訂正 (メモ リ内容は訂正されない)、 ダブル ビッ ト エラーの検出 (訂正はされない) とい う 3 つの状態のいずれかを検出します。 この状態は、 SBITERR および DBITERR によって示されます。

表 3-1 : RAMB36E1 のポート (ECC ポートを含む) の名前と説明 (続き)

ポート名 信号の説明

表 3-2 : FIFO ECC ポートの名前と説明

ポート名 方向 信号の説明

DI[63:0] 入力 データ入力バス。

DIP[7:0] 入力 データ入力パリティ バス。 標準モードの場合は使用しません。

WREN 入力 書き込みイネーブル。WREN = 1 の場合、データがメモリに書き込まれます。WREN = 0 の場合、 書き込みは無効になり ます。

RDEN 入力 読み出しイネーブル。RDEN = 1 の場合、データがメモ リから読み出されます。RDEN =0 の場合、 読み出しは無効になり ます。

RSTREG 入力 ブロッ ク RAM ECC プリ ミ ティブの使用時はサポート されません。常に GND に接続し

ます。

RSTRAM 入力 ブロッ ク RAM ECC プリ ミ ティブの使用時はサポート されません。常に GND に接続し

ます。

RST 入力 FIFO カウンターおよびフラグの非同期リセッ ト。ク ロ ッ クの 3 サイクル間、 リセッ ト を

アサートする必要があ り ます。 リセッ トは DO や ECC の信号には影響を与えません。

WRCLK 入力 書き込み用クロ ッ ク。

RDCLK 入力 読み出し用クロ ッ ク。

INJECTSBITERR 入力 書き込み中にアサート される と、ブロ ッ ク RAM の特定のビッ ト位置にシングル ビッ ト

エラーが生成されます。このビッ ト位置を読み出すと、ブロ ッ ク RAM の ECC ロジッ ク

によってエラーが訂正されます。 シングル ビッ ト エラーはビッ ト位置 DI[30] に生成さ

れます。

INJECTDBITERR 入力 書き込み中にアサート される と、ブロ ッ ク RAM の特定のビッ ト位置にダブル ビッ ト エラーが生成されます。このビッ ト位置を読み出すと、ブロ ッ ク RAM の ECC ロジッ クに

よってダブル ビッ ト エラーが示されます。INJECTSBERR と INJECTDBERR が同時に

アサート された場合は、 ダブル ビッ ト エラーが挿入されます。 ダブル ビッ ト エラーは

ビッ ト位置 DI[30] と DI[62] に生成されます。

DO[63:0] 出力 データ出力バス。

DOP[7:0] 出力 データ出力パリティ バス。

SBITERR(1) 出力 シングル ビッ ト エラー ステータス。

DBITERR(1) 出力 ダブル ビッ ト エラー ステータス。

ECCPARITY[7:0] 出力 サポート されていません。

FULL 出力 FIFO FULL フラグ。

ALMOSTFULL 出力 FIFO ALMOST FULL フラグ。

EMPTY 出力 FIFO EMPTY フラグ。

ALMOSTEMPTY 出力 FIFO ALMOST EMPTY フラグ。

Page 76: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

76 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

ブロック RAM および FIFO ECC の属性

RAMB36E1 プ リ ミ テ ィ ブでは、 デコードおよび訂正ロジ ッ クのビル ト イ ン レジス タに加え、

DO_REG 属性で制御されるオプシ ョ ンのパイプライン レジスタが使用できます。 このレジスタを

使用する とレイテンシがクロ ッ クの 1 サイ クル分追加されますが、 パフォーマンスは向上します。

表 3-3 と表 3-4 にブロ ッ ク RAM および FIFO ECC の属性を示します。

RDCOUNT 出力 FIFO データ読み出しポインター。

WRCOUNT 出力 FIFO データ書き込みポインター。

WRERR 出力 FIFO がフルの場合に書き込みを実行する と、 エラー フラグが生成されます。

RDERR 出力 FIFO が空の場合に読み出しを実行する と、 エラー フラグが生成されます。

注記 :

1. FIFO の ECC ロジッ クにインプ リ メン ト されたハミ ング コードは、 エラー検出なし、 DO でのシングル ビッ ト エラーの検出と訂正 (メモ リ内容は訂正されない)、 ダブル ビッ ト エラーの検出 (訂正はされない) とい う 3 つの状態のいずれかを検出します。 この状態は、SBITERR および DBITERR によって示されます。

表 3-2 : FIFO ECC ポートの名前と説明 (続き)

ポート名 方向 信号の説明

表 3-3 : ブロック RAM (RAMB36E1) の属性

属性名 タイプ 値 デフォルト 説明

EN_ECC_WRITE ブール型 TRUE、 FALSE FALSE ECC エンコーダーを有効にするには TRUEに設定します。

EN_ECC_READ ブール型 TRUE、 FALSE FALSE ECC デコーダーを有効にするには TRUE に設定します。

DO_REG 1 ビッ ト バイナリ 0、 1 0 レジスタ モードまたはラ ッチ モードを有効

にします。

表 3-4 : FIFO (FIFO36E1) の属性

属性名 タイプ 値 デフォルト 説明

EN_ECC_WRITE ブール型TRUE、FALSE

FALSE ECC エンコーダーを有効にするには TRUE に設定します。

EN_ECC_READ ブール型TRUE、FALSE

FALSE ECC デコーダーを有効にするには TRUE に設定します。

DO_REG 1 ビッ ト バイナリ

0、 1 1

レジスタ モードまたはラ ッチ モードを有

効にします。 デュアル ク ロ ッ クおよび同

期 FIFO の詳細は、 表 2-5 を参照してく

ださい。

EN_SYN ブール型TRUE、FALSE

FALSE

TRUE に設定する と、 WRCLK と RDCLK が同期します。

TRUE に設定した場合は、 FWFT を FALSE に設定する必要があ り ます。

FALSE に設定した場合は、DO_REG = 1 に設定する必要があ り ます。

ALMOST_EMPTY_OFFSET 9 ビッ ト

の 16 進数表 2-8 を参照 表 2-8 を参照

空の状態とほぼ空の状態の差を設定しま

す。 16 進数で設定します。

Page 77: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 77UG473 (v1.11) 2014 年 11 月 12 日

ECC モードの動作

ECC モードの動作

ECC の動作モードには、 標準、 エンコード専用、 デコード専用の 3 つがあ り ます。 標準 ECC モー

ドではエンコーダーとデコーダーの両方が使用されます。

図 3-4 ~図 3-9 に、 ブロッ ク RAM と FIFO の各 ECC モードの動作を示します。 ブロッ ク RAM のWRADDR および RDADDR アド レス入力はユーザーが入力します。 FIFO の WRADDR および

RDADDR アドレスは、 書き込みカウンターと読み出しカウンターによって内部で生成されます。

ALMOST_FULL_OFFSET 9 ビッ ト

の 16 進数表 2-8 を参照 表 2-8 を参照

フルの状態とほぼフルの状態の差を設定

します。 16 進数で設定します。

FIRST_WORD_FALL_THROUGH ブール型TRUE、FALSE

FALSE

TRUE に設定する と、 RDEN をアサート

しな くても空の FIFO に書き込んだ 初

のワードが FIFO36_72 モードの出力に

現れます。 EN_SYN = FALSE の場合の

み有効です。

表 3-4 : FIFO (FIFO36E1) の属性 (続き)

属性名 タイプ 値 デフォルト 説明

X-Ref Target - Figure 3-4

図 3-4 : ECC 書き込み動作

WREN

WRCLK

WRADDR[8:0]

DI[63:0]

DIP[7:0](Decode Only Mode)

ECCPARITY[7:0]

a

T1W T2W T3W T4W

b c d

A B C D

PC PDPBPA

PC PDPBPA

UG473_c3_04_071610

TRCCK_EN

TRCCK_ADDR

TRDCK_DI_ECC

TRCKO_PARITY_ECC

Page 78: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

78 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

X-Ref Target - Figure 3-5

図 3-5 : ECC 読み出し動作

RDEN

RDADDR[8:0]

RDCLK

DO[63:0] (Latch Mode)

DOP[7:0] (Latch Mode)

SBITERR(Register Mode)

DBITERR (Register Mode)

a b c d

A B C

ECCRDADDR (Latch Mode)

a b c

ECCRDADDR (Register Mode)

a b c

PBPA PC

DO[63:0] (Register Mode)

DOP[7:0] (Register Mode)

A B C

PBPA PC

TRCCK_EN

TRCCK_ADDR

TRCKO_DO (Register Mode)

TRCKO_DO (Latch Mode)

TRCKO_ECC_SBITERR (Latch Mode)

TRCKO_ECC_DBITERR (Latch Mode)

Single Bit Error

Double Bit Error

UG473_c3_05_070110

T1R T2R T3R T4R

TRCKO_RDADDR_ECC

TRCKO_ECC_SBITERR (Register Mode)

TRCKO_ECC_DBITERR (Register Mode)

TRCKO_RDADDR_ECC_REG

SBITERR(Latch Mode)

DBITERR(Latch Mode)

Single Bit Error

Double Bit Error

X-Ref Target - Figure 3-6

図 3-6 : 1 回のダブル ビッ ト エラー挿入 (レジスタ モード )

DIN

WriteCycle

ReadCycle

WRCLK

WREN

WRADDR

INJSBITERR

INJDBITERR

RDCLK

RDADDR

RDEN

DOUT

SBITERR

DBITERR

A B C D

UG473_c3_06_100610

E F

0 1 2 3 4 5

1 2 3

A Bx C

SBITERR Corrected DataDBITERR Not Corrected Data

TRCKO_RDADDR_ECC_REG

TRCKO_DO_REG

TRCKO_SBIT_ECC

TRCKO_DBIT_ECC

TRDCK_DI_ECC

TRDCK_INJERR_ECC

Page 79: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 79UG473 (v1.11) 2014 年 11 月 12 日

ECC モードの動作

図 3-8 について説明します。

1. データ (DOUT) およびその対応アドレス (ECCRDADDR) はその位相で使用できます。

X-Ref Target - Figure 3-7

図 3-7 : 1 回のダブル ビッ ト エラー挿入 (ラッチ モード )

X-Ref Target - Figure 3-8

図 3-8 : ECCRDADDR のタイ ミング (レジスタ モード )

DIN

WriteCycle

ReadCycle

WRCLK

WREN

WRADDR

INJSBITERR

INJDBITERR

RDCLK

RDADDR

RDEN

DOUT

SBITERR

DBITERR

A B C D

UG473_c3_07_070110

E F

0 1 2 3 4 5

1 2 3

A Bx C

SBITERR Corrected DataDBITERR Not Corrected Data

RDADDR

RDCLK

RDEN/REGCE

DOUT

SBITERR

DBITERR

1 2 3 4

A Bx C D

UG473_c3_08_052610

ECCRDADDR

5 6

1 2 3 4 5

E

SBITERR Corrected Data DBITERR Not Corrected Data

Page 80: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

80 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

図 3-9 について説明します。

1. データ (DOUT) およびその対応アドレス (ECCRDADDR) はその位相で使用できます。

標準モードの ECC

属性での設定

EN_ECC_READ = TRUEEN_ECC_WRITE = TRUE

標準 ECC 書き込み

この書き込みは、 図 3-4 に示しています。

T1W の時点で、 DI[63:0] = A がメモ リ位置 a に書き込まれます。 これに対応する 8 ビッ トの ECCパリ ティ PA (16 進数) が内部で生成され、 64 ビッ トのデータに追加されてメモ リに書き込まれま

す。 この書き込み直後に、 パリティ値 PA が出力 ECCPARITY[7:0] に現れます。 ECC パリ ティは

内部で生成されるため、DIP[7:0] ピンは使用しません。標準 ECC モードは ECC パリ ティをサポー

ト していません。

同様に、 T2W および T3W の時点で、 DI[63:0] = B および C がそれぞれに対応するパリ ティ ビッ

ト PB (16 進数) および PC (16 進数) と共にメモ リ位置 b と c に書き込まれます。 T2W と T3W の直後に PB および PC がそれぞれ出力 ECCPARITY[7:0] に現れます。

標準 ECC 読み出し

この書き込みは、 図 3-5 に示しています。

T1R の時点で、 メモ リ位置 a にある 64 ビッ トのデータ A と 8 ビッ トのパリティ PA (16 進数) で構成される 72 ビッ ト のメモ リ内容が読み出され、 内部でデコード されます。 エラーがなければ、

データ とパリ ティがそのまま DO[63:0] と DOP[7:0] に出力されます。 データまたはパリ ティにシ

ングル ビッ ト エラーがある場合、 このエラーが訂正されて SBITERR が High になり ます。データ

およびパリティにダブル ビッ ト エラーがある場合は、エラーは訂正されません。データ とパリティ

はそのまま出力され、 DBITERR が High とな り ます。

X-Ref Target - Figure 3-9

図 3-9 : ECCRDADDR のタイ ミング (ラッチ モード )

RDADDR

RDCLK

RDEN/REGCE

DOUT

SBITERR

DBITERR

1 2 3 4

A Bx C D

UG473_c3_09_052610

ECCRDADDR

5 6

1 2 3 4 5

E

SBITERR Corrected Data DBITERR Not Corrected Data

6

F

Page 81: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 81UG473 (v1.11) 2014 年 11 月 12 日

ECC モードの動作

属性 DO_REG を 0 に設定する と、 T1R の直後に DO[63:0] = A、 DOP[7:0] = PA とな り ます。 同

様に、 T2R および T3R の時点で、 アドレス b および c にある メモ リ内容が読み出され、 DO[63:0]と DOP[7:0] でデコード されます。 データセッ ト A でシングル ビッ ト またはダブル ビッ ト エラー

が検知される と、 SBITERR/DBITERR 出力が T1R 後に切り替わり ます。 図 3-7 は、 ラ ッチ モー

ドの場合に、クロ ッ ク エッジ T1R の後にデータ A でシングル ビッ ト エラー (SBITERR) が検出さ

れ、 ク ロ ッ ク エッジ T2R の後にデータ B でダブル ビッ ト エラー (DBITERR) が検出された様子

を示しています。

属性 DO_REG を 1 に設定する と、 T2R の直後に DO[63:0] = A、 DOP[7:0] = PA とな り ます。 同

様に、 T3R および T4R の時点で、 アドレス b および c にある メモ リ内容が読み出され、 DO[63:0]と DOP[7:0] でデコード されます。 データセッ ト A でシングル ビッ ト またはダブル ビッ ト エラー

が検知される と、SBITERR/DBITERR 出力が T2R 後に切り替わり ます。図 3-6 は、レジスタ モー

ドの場合に、クロ ッ ク エッジ T2R の後にデータ A でシングル ビッ ト エラー (SBITERR) が検出さ

れ、 ク ロ ッ ク エッジ T3R の後にデータ B でダブル ビッ ト エラー (DBITERR) が検出された様子

を示しています。

ECC モードでは、 エンコード専用ポート とデコード専用ポートが互いに独立して動作します。

エンコード専用 ECC

属性での設定

EN_ECC_READ = FALSEEN_ECC_WRITE = TRUE

エンコード専用 ECC での書き込み

T1W の時点で、 DI[63:0] = A がメモ リ位置 a に書き込まれます。 これに対応する 8 ビッ トの ECCパリ ティ PA (16 進数) が内部で生成され、 64 ビッ トのデータに追加されてメモ リに書き込まれま

す。 この書き込み直後に、 パリティ値 PA が出力 ECCPARITY[7:0] に現れます。 ECC パリ ティは

内部で生成されるため、 DIP[7:0] ピンは使用しません。

同様に、 T2W および T3W の時点で、 DI[63:0] = B および C がそれぞれに対応するパリ ティ ビッ

ト PB (16 進数) および PC (16 進数) と共にメモ リ位置 b と c に書き込まれます。 T2W と T3W の直後に PB および PC がそれぞれ出力 ECCPARITY[7:0] に現れます。

エンコード専用 ECC での読み出し

エンコード専用モード ECC の場合、 読み出しは通常のブロ ッ ク RAM と同様です。 64 ビッ ト の

データが DO[63:0] に現れ、 8 ビッ トのパリティが DOP[7:0] に現れます。 シングル ビッ ト エラー

は訂正されず、 エラー フラグの SBITERR および DBITERR がアサート されるこ とはあ り ません。

Page 82: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

82 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

デコード専用 ECC

属性での設定

EN_ECC_READ = TRUEEN_ECC_WRITE = FALSE

デコード専用の ECC では、ECC デコーダーのみが有効で、ECC エンコーダーは無効です。デコー

ド専用モードは、 ECC デコーダーの機能テス ト用にシングル ビッ ト またはダブル ビッ トのエラー

を挿入するために使用します。 ECC パリ ティ ビッ トは DIP[7:0] を使用し、 外部から与える必要が

あ り ます。

デコード専用 ECC でのシングル ビッ ト エラーの挿入

• T1W、 T2W、 T3W の時点で、 シングル ビッ ト エラーのある DI[63:0] = A、 B、 C とそれぞれ

に対応する ECC パリティ ビッ ト DIP[7:0] = PA (16 進数)、 PB (16 進数)、 PC (16 進数) がメ

モ リ位置 a、 b、 c に書き込まれます。

• T1R、T2R、T3R の時点で、アドレス a、b、c の内容が読み出され、必要に応じて訂正されます。

• ラ ッチ モードの場合 : T1R、 T2R、 T3R の直後に DO[63:0] = A、 B、 C および DOP[7:0] =PA、 PB、 PC が出力されます。

• レジスタ モードの場合 : T2R、 T3R、 T4R の直後に DO[63:0] = A、 B、 C および DOP[7:0] =PA、 PB、 PC が出力されます。

• SBITERR には、 DO/DOP データに応じたステータスが出力されます。

ECC デコーダーはパリティ ビッ トにあるシングル ビッ ト エラーも訂正します。

デコード専用 ECC でのダブル ビッ ト エラーの挿入

• T1W、 T2W、 T3W の時点で、 ダブル ビッ ト エラーのある DI[63:0] = A、 B、 C とそれぞれに

対応する ECC パリティビッ ト DIP[7:0] = PA (16 進数)、PB (16 進数)、PC (16 進数) がメモ リ

位置 a、 b、 c に書き込まれます。

• T1R、 T2R、 T3R の時点で、 アドレス a、 b、 c にあった元々の内容が読み出されて、 ダブル

ビッ ト エラーが検出されます。

• ラ ッチ モードの場合 : T1R、 T2R、 T3R の直後に DO[63:0] = A、 B、 C (ダブル ビッ ト エラー

あ り ) および DOP[7:0] = PA、 PB、 PC が出力されます。

• レジスタ モードの場合 : T2R、 T3R、 T4R の直後に DO[63:0] = A、 B、 C (ダブル ビッ ト エラーあ り ) および DOP[7:0] = PA、 PB、 PC が出力されます。

• DBITERR には、 DO/DOP データに応じたステータスが出力されます。

また、 ECC デコーダーはパリ ティ ビッ ト で発生したダブル ビッ ト エラーや、 データ ビッ ト とそ

れに対応するパリティ ビッ トの両方で発生したシングル ビッ ト エラーも検出します。

Page 83: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 83UG473 (v1.11) 2014 年 11 月 12 日

ECC タイ ミング特性

ECC タイ ミング特性

図 3-4 ~図 3-7 には、 ECC のタイ ミ ング パラ メーターも示しています。

書き込みクロ ッ ク と読み出しクロ ッ クは互いに独立しているため、 図 3-4 に示した書き込みタイ ミ

ングはすべて WRCLK を基準と しています。 同様に、 図 3-5 に示した読み出しタイ ミ ングはすべ

て RDCLK を基準と しています。

標準 ECC の書き込みタイ ミング

詳細は、 図 3-4 を参照してください。

• T1W よ り TRCCK_EN 時間前に、 ブロ ッ ク RAM の WREN 入力で書き込みイネーブルが有

効になり ます。

• T1W よ り TRCCK_ADDR 時間前に、 ブロ ッ ク RAM の WRADDR[8:0] 入力で書き込みアド

レス a が有効になり ます。 FIFO では WRADDR 入力は不要です。

• T1W よ り TRDCK_DI_ECC (標準 ECC) 時間前に、 ブロ ッ ク RAM の DI[63:0] 入力で書き込

みデータ A (16 進数) が有効になり ます。

• T1W よ り TRCKO_ECC_PARITY (標準 ECC) 時間後に、ブロッ ク RAM の ECCPARITY[7:0]出力ピンで ECC パリティ データ PA (16 進数) が有効になり ます。

標準 ECC の読み出しタイ ミング 詳細は、 図 3-5 を参照してください。

• T1R よ り TRCCK_EN 時間前に、 ブロ ッ ク RAM の RDEN 入力で読み出しイネーブルが有効

になり ます。

• T1R よ り TRCCK_ADDR 時間前に、ブロ ッ ク RAM の RDADDR[8:0] 入力で読み出しアドレ

ス a が有効になり ます。 FIFO では RDADDR 入力は不要です。

DO_REG = 0 の場合

• T1R よ り TRCKO_DO (ラ ッチ モード ) 時間後に、 ブロ ッ ク RAM の DO[63:0] 出力ピン

でデータ A (16 進数) が有効になり ます。

• T1R よ り TRCKO_DOP (ラ ッチ モード ) 時間後に、ブロ ッ ク RAM の DOP[7:0] 出力ピン

でデータ PA (16 進数) が有効になり ます。

• T1R よ り TRCKO_ECC_SBITERR (ラ ッチ モード ) 時間後に、 データセッ ト A でシング

ル ビッ ト エラーが検出および訂正される と SBITERR がアサート されます。

• T2R よ り TRCKO_ECC_DBITERR (ラ ッチ モード ) 時間後に、 データセッ ト B でダブル

ビッ ト エラーが検出される と DBITERR がアサート されます。

Page 84: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

84 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

DO_REG = 1 の場合

• T2R よ り TRCKO_DO (レジスタ モード ) 時間後に、 ブロ ッ ク RAM の DO[63:0] 出力ピ

ンでデータ A (16 進数) が有効になり ます。

• T2R よ り TRCKO_DOP (レジスタ モード ) 時間後に、ブロ ッ ク RAM の DOP[7:0] 出力ピ

ンでデータ PA (16 進数) が有効になり ます。

• T2R よ り TRCKO_ECCR_SBITERR (レジスタ モード ) 時間後に、 データセッ ト A でシ

ングル ビッ ト エラーが検出および訂正される と SBITERR がアサート されます。

• T3R よ り TRCKO_ECCR_DBITERR (レジスタ モード ) 時間後に、 データセッ ト B でダ

ブル ビッ ト エラーが検出される と DBITERR がアサート されます。

エンコード専用 ECC の書き込みタイ ミング

詳細は、 図 3-4 を参照してください。

• WREN および WRADDR のセッ ト アップ/ホールド タイムは、 標準 ECC と同様です。

• T1W よ り TRDCK_DI_ECC (エンコード専用 ECC) 時間前に、 ブロ ッ ク RAM の DI[63:0] 入力で書き込みデータ A (16 進数) が有効になり ます。

• T1W よ り TRCKO_ECC_PARITY (エンコード専用 ECC) 時間後に、 ブロ ッ ク RAM の ECCPARITY[7:0] 出力ピンで ECC パリティ データ PA (16 進数) が有効になり ます。

エンコード専用 ECC の読み出しタイ ミング

• エンコード専用 ECC の読み出しタイ ミ ングは、 通常のブロ ッ ク RAM の読み出しタイ ミ ング

と同様です。

デコード専用 ECC の書き込みタイ ミング

• デコード専用 ECC の書き込みタイ ミ ングは、 通常のブロ ッ ク RAM の書き込みタイ ミ ングと

同様です。

デコード専用 ECC の読み出しタイ ミング

• デコード専用 ECC の読み出しタイ ミ ングは、 標準 ECC の読み出しタイ ミ ングと同様です。

Page 85: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

7 シリーズ FPGA メモリ リソース japan.xilinx.com 85UG473 (v1.11) 2014 年 11 月 12 日

ブロック RAM ECC モードのタイ ミング パラメーター

ブロック RAM ECC モードのタイ ミング パラメーター

表 3-5 に、7 シ リーズ FPGA のブロ ッ ク RAM ECC モードのタイ ミ ング パラ メーターを示します。

表 3-5 : ブロック RAM ECC モードのタイ ミング パラメーター

パラメーター 機能 制御信号 説明

ク ロ ッ ク (CLK) に対するセッ ト アップとホールド

TRxCK_x = セッ ト アップ タイム (ク ロ ッ ク エッジ前) および TRCKx_x = ホールド タイム (ク ロ ッ ク エッジ後)

TRDCK_DI_ECC

(標準 ECC モード )データ入力(1) DI

ク ロ ッ ク前に、 ブロ ッ ク RAM の DI 入力でデータが安

定していなければならない時間。 標準 ECC モード。

TRCKD_DI_ECC

(標準 ECC モード )ク ロ ッ ク後に、 ブロ ッ ク RAM の DI 入力でデータが安

定していなければならない時間。 標準 ECC モード。

TRDCK_DI_ECCW

(エンコード専用 ECC モード )

データ入力(1) DI

ク ロ ッ ク前に、 ブロ ッ ク RAM の DI 入力でデータが安

定していなければならない時間。 エンコード専用 ECCモード。

TRCKD_DI_ECCW

(エンコード専用 ECC モード )

ク ロ ッ ク後に、 ブロ ッ ク RAM の DI 入力でデータが安

定していなければならない時間。 エンコード専用 ECCモード。

TRDCK_DI_ECC_FIFO ECC モードでの FIFO への

データ入力

DI

ク ロ ッ ク前に、 ECC モードの FIFO の DI 入力でデータ

が安定していなければならない時間。

TRCKD_DI_ECC_FIFOク ロ ッ ク後に、 ECC モードの FIFO の DI 入力でデータ

が安定していなければならない時間。

TRDCK_INJERR_ECCビッ ト エラー

挿入の入力

INJECTSBERRINJECTDBERR

クロッ ク前に、ECC モードの FIFO の INJECT[S/D]BERR入力でデータが安定していなければならない時間。

TRCKD_INJERR_ECCクロッ ク後に、ECC モードの FIFO の INJECT[S/D]BERR入力でデータが安定していなければならない時間。

Clock to Out 遅延

TRCKO_DO_ECC

(ラ ッチ モード )ク ロ ッ クから

出力まで(2)CLK to DO クロ ッ ク後に、 ブロッ ク RAM の DO 出力で出力データ

が安定するまでの時間 (出力レジスタを使用しない場合)

TRCKO_DO_ECC_REG

(レジスタ モード )ク ロ ッ クから

出力まで(2)CLK to DO ク ロ ッ ク後に、ブロ ッ ク RAM の DO 出力で出力データ

が安定するまでの時間 (出力レジスタを使用した場合)

Clock to ECC 遅延

TRCKO_RDADDR_ECC

(ラ ッチ モード )

ク ロ ッ クから

読み出しアドレス

出力まで

RDADDRRDCLK 後に、ブロ ッ ク RAM の RDADDR 出力で読み

出しアドレス信号が安定するまでの時間 (出力レジスタ

を使用しない場合)。

TRCKO_RDADDR_ECC_REG

(レジスタ モード )

ク ロ ッ クから

読み出しアドレス

出力まで

RDADDRRDCLK 後に、ブロ ッ ク RAM の RDADDR 出力で読み

出しアドレス信号が安定するまでの時間 (出力レジスタ

を使用した場合)。

Page 86: 7 シリーズ FPGA メモリ リソース ユーザー ガイド (UG473) · 7 シリーズ FPGA メモリ リソース japan.xilinx.com UG473 (v1.11) 2014 年 11 月 12 日 The information

86 japan.xilinx.com 7 シリーズ FPGA メモリ リソース

UG473 (v1.11) 2014 年 11 月 12 日

第 3 章 : ビルト イン誤り訂正

64 ビッ ト ワード用 8 ビッ ト パリティの作成

ブロ ッ ク RAM の外部ロジッ ク (多数の XOR 回路など) を使用する と、64 ビッ ト ワード用の 8 ビッ

ト パリ ティが作成できます。ただし、エンコード専用 ECC モードの場合は、任意の 64 ビッ ト ワー

ドを別のブロ ッ ク RAM に書き込むこ とによ り、追加ロジッ クを使用せずに 8 ビッ トのパリ ティが

自動的に作成されます。 エンコード された 8 ビッ トの ECC パリティ データはただちに使用可能と

な り、 72 ビッ ト ワード全体を読み出すこ とができます。

ブロック RAM ECC の VHDL および Verilog テンプレート

VHDL および Verilog テンプレートは、 『7 シ リーズ ライブラ リ ガイ ド』 に記載されています。

TRCKO_PARITY_ECC

(エンコード専用 ECC モード )

ク ロ ッ クから ECC パリティ出力まで

ECCPARITY WRCLK 後に、 ブロ ッ ク RAM の ECCPARITY 出力で

ECC パリティ信号が安定するまでの時間 (エンコード専

用モード )。

TRCKO_SBIT_ECC

(ラ ッチ モード )

ク ロ ッ クから ECC シングル ビッ ト エラー出力まで

SBITERR RDCLK 後に、ブロ ッ ク RAM の SBITERR 出力でシン

グル ビッ ト エラー信号が安定するまでの時間 (出力レ

ジスタを使用しない場合)。

TRCKO_SBIT_ECC_REG

(レジスタ モード )

ク ロ ッ クから ECC シングル ビッ ト エラー出力まで

SBITERR RDCLK 後に、ブロ ッ ク RAM の SBITERR 出力でシン

グル ビッ ト エラー信号が安定するまでの時間 (出力レ

ジスタを使用した場合)。

TRCKO_DBIT_ECC

(ラ ッチ モード )

ク ロ ッ クから ECC ダブル ビッ ト エラー出力まで

DBITERR RDCLK 後に、 ブロ ッ ク RAM の DBITERR 出力でダ

ブル ビッ ト エラー信号が安定するまでの時間 (出力レ

ジスタを使用しない場合)。

TRCKO_DBIT_ECC_REG

(レジスタ モード )

ク ロ ッ クから ECC ダブル ビッ ト エラー出力まで

DBITERR RDCLK 後に、 ブロ ッ ク RAM の DBITERR 出力でダ

ブル ビッ ト エラー信号が安定するまでの時間 (出力レ

ジスタを使用した場合)。

注記 :

1. TRDCK_DI_ECC/TRCKD_DI_ECC にはパリティ入力 TRDCK_DIP_ECC/TRCKD_DIP_ECC が含まれます。

2. TRCKO_DO_ECC および TRCKO_DO_ECC_REG にはパリティ出力が含まれます。

表 3-5 : ブロック RAM ECC モードのタイ ミング パラメーター (続き)

パラメーター 機能 制御信号 説明