34
Spartan-6 FPGA ブロック RAM リソース ユーザー ガイド UG383 (v1.2) 2010 2 23

Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Embed Size (px)

Citation preview

Page 1: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロック RAM リソース

ユーザー ガイド

UG383 (v1.2) 2010 年 2 月 23 日

Page 2: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com UG383 (v1.2) 2010 年 2 月 23 日

Xilinx is disclosing this user guide, manual, release note, and/or specification (the "Documentation") to you solely for use in thedevelopment of designs to operate with Xilinx hardware devices. You may not reproduce, distribute, republish, download,display, post, or transmit the Documentation in any form or by any means including, but not limited to, electronic, mechanical,photocopying, recording, or otherwise, without the prior written consent of Xilinx. Xilinx expressly disclaims any liabilityarising out of your use of the Documentation. Xilinx reserves the right, at its sole discretion, to change the Documentationwithout notice at any time. Xilinx assumes no obligation to correct any errors contained in the Documentation, or to advise youof any corrections or updates. Xilinx expressly disclaims any liability in connection with technical support or assistance that maybe provided to you in connection with the Information.

THE DOCUMENTATION IS DISCLOSED TO YOU “AS-IS” WITH NO WARRANTY OF ANY KIND. XILINX MAKESNO OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THEDOCUMENTATION, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULARPURPOSE, OR NONINFRINGEMENT OF THIRD-PARTY RIGHTS. IN NO EVENT WILL XILINX BE LIABLE FORANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL DAMAGES, INCLUDING ANYLOSS OF DATA OR LOST PROFITS, ARISING FROM YOUR USE OF THE DOCUMENTATION.

© 2009-2010 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein aretrademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners.

改訂履歴

本書の改訂履歴は以下のとおりです。

本資料は英語版 (v1.2) を翻訳したもので、 内容に相違が生じる場合には原文を優先します。

資料によっては英語版の更新に対応していないものがあ り ます。

日本語版は参考用と してご使用の上、 新情報につきましては、 必ず 新英語版をご参照ください。

日付 バージョ ン 変更内容

2009 年 6 月 24 日 1.0 初期リ リース

2009 年 10 月 29 日 1.1 「非同期クロ ッ ク」 に項目を追加。 「未使用の入力」 の接続を Low に修正。

2010 年 2 月 23 日 1.2 「コンフ ィギュレーシ ョ ンの種類」 を変更 ( 「18Kb ブロ ッ ク RAM - シンプル デュア

ル ポート 」 セクシ ョ ンの削除を含む)。 ガイ ド全体でこの情報を削除。 表 2 ~表 3 にポート名を追加。 「非同期クロ ッ ク」 の説明をアップデート。 「データおよびアドレ

ス幅 - DATA_WIDTH_A、 DATA_WIDTH_B」 を変更。 図 14 をアップデート。

Page 3: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 3UG383 (v1.2) 2010 年 2 月 23 日

改訂履歴. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

このマニュアルについてその他の資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5その他のリ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

ブロッ ク RAM リソース概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

コンフ ィギュレーシ ョ ンの種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79Kb ブロ ッ ク RAM - シンプル デュアル ポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89Kb ブロ ッ ク RAM - 完全デュアル ポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .818Kb ブロ ッ ク RAM - 完全デュアル ポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

Spartan-6 FPGA のブロ ッ ク RAM の機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11Spartan-6 FPGA のブロ ッ ク RAM の使用規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

同期デュアル ポートおよびシンプル デュアル ポート RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12データ フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12読み出し動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13書き込み動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13書き込みモード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

WRITE_FIRST (透過) モード (デフォルト ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14READ_FIRST (書き込み前に読み出し ) モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14NO_CHANGE (変化なし ) モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15

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

出力レジスタ (オプシ ョ ン) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16シンプル デュアル ポート ブロ ッ ク RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16バイ ト幅書き込みイネーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

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

ク ロ ッ ク - CLKA、 CLKB (CLKAWRCLK、 CLKBRDCLK) . . . . . . . . . . . . . . . . . . . . . . . .20イネーブル - ENA、 ENB (ENAWREN、 ENBRDEN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20バイ ト幅書き込みイネーブル - WEA、 WEB (WEAWEL、 WEBWEU). . . . . . . . . . . . . . . . .20レジスタ イネーブル - REGCEA、 REGCEB (REGCEA、 REGCEBREGCE) . . . . . . . . . . . .21セッ ト / リセッ ト - RSTA、 RSTB (RSTA、 RSTBRST) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21アドレス バス - ADDRA、 ADDRB (ADDRAWRADDR、 ADDRBRDADDR) . . . . . . . . . .21データ入力バス - DIA、 DIB (DIADI、 DIBDI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22データ入力パリティ - DIPA、 DIPB (DIPADIP、 DIPBDIP) . . . . . . . . . . . . . . . . . . . . . . . . . .22データ出力バス - DOA、 DOB (DOADO、 DOBDO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22データ出力パリティ - DOPA、 DOPB (DOPADOP、 DOPBDOP) . . . . . . . . . . . . . . . . . . . . .22GSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22未使用の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

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

データおよびアドレス幅 - DATA_WIDTH_A、 DATA_WIDTH_B . . . . . . . . . . . . . . . . . . .23メモ リ内容の初期化 - INIT_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23パリ ティ メモ リ内容の初期化 - INITP_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24出力ラ ッチの初期化 - INIT_A、 INIT_B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24出力ラ ッチ/レジスタの同期セッ ト / リセッ ト - SRVAL_A、 SRVAL_B . . . . . . . . . . . . . . . . .25RAM モード - RAM_MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25リセッ ト と CE の優先度 - RST_PRIORITY_A、 RST_PRIORITY_B . . . . . . . . . . . . . . . . . .25

目次

Page 4: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

4 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

データ ラ ッチ リセッ ト - EN_RSTRAM_A、 EN_RSTRAM_B . . . . . . . . . . . . . . . . . . . . . . .25リセッ ト タイプ - RSTTYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25オプシ ョ ンの出力レジスタ切り替え - DO[A|B]_REG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25書き込みモード - WRITE MODE_A、 WRITE_MODE_B . . . . . . . . . . . . . . . . . . . . . . . . . . .25ブロ ッ ク RAM のロケーシ ョ ン制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26

ブロッ ク RAM の初期化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26ブロッ ク RAM プリ ミ ティブの設計上の追加注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

出力レジスタ (オプシ ョ ン) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26RAMB16BWER および RAMB8BWER ポートのマップ規則 . . . . . . . . . . . . . . . . . . . . . . . . .26リセッ トの動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27バイ ト幅書き込みイネーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27

ブロッ ク RAM のアプリ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27大型 RAM 構造の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27レジスタ モードのブロッ ク RAM の RST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

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

クロ ッ ク イベン ト 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31クロ ッ ク イベン ト 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32クロ ッ ク イベン ト 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32クロ ッ ク イベン ト 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

ブロ ッ ク RAM のタイ ミ ング モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

Page 5: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 5UG383 (v1.2) 2010 年 2 月 23 日

このマニュアルについて

このマニュアルでは、 すべての Spartan®-6 FPGA で使用可能なブロ ッ ク RAM について説明しま

す。 ブロ ッ ク RAM は、 効率的なデータ格納またはバッファ、 パフォーマンスの優れたステート マシンまたは FIFO バッファ、大型シフ ト レジスタ、大型ルッ クアップ テーブル、 ROM などに使用

されます。

その他の資料

Spartan-6 に関するその他の情報は、 http://japan.xilinx.com/support/documentation/spartan-6.htmから次を参照してください。

• 『Spartan-6 ファ ミ リ概要』

Spartan-6 ファ ミ リの機能とデバイスの概要を示します。

• 『Spartan-6 FPGA データシート : DC 特性およびスイ ッチ特性』

Spartan-6 ファ ミ リの DC 特性およびスイ ッチ特性が記載されています。

• 『Spartan-6 FPGA パッケージおよびピン配列の仕様』

デバイス/ピンの組み合わせと 大 I/O 数、 ピン定義、 ピン配置図、 機械的図面、 熱仕様が記載

されています。

• 『Spartan-6 FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』

コンフ ィギュレーシ ョ ン インターフェイス (シ リ アルおよびパラレル)、複数のビッ ト ス ト リー

ムの管理、 ビッ ト ス ト リームの暗号化、 バウンダ リ スキャンおよび JTAG コンフ ィギュレー

シ ョ ン、 リ コンフ ィギュレーシ ョ ン手法など、 コンフ ィギュレーシ ョ ンについて詳細に説明し

ます。

• 『Spartan-6 FPGA SelectIO リ ソース ユーザー ガイ ド』

すべての Spartan-6 デバイスに含まれている SelectIO™ について説明します。

• 『Spartan-6 FPGA ク ロ ッ ク リ ソース ユーザー ガイ ド』

DCM および PLL を含め、 Spartan-6 デバイスのクロ ッ ク リ ソースについて説明します。

• 『Spartan-6 FPGA コンフ ィギャブル ロジッ ク ブロ ッ ク ユーザー ガイ ド』

すべての Spartan-6 デバイスで使用可能なコンフ ィギャブル ロジッ ク ブロ ッ ク (CLB) の機能

について説明します。

• 『Spartan-6 FPGA GTP ト ランシーバ ユーザー ガイ ド』

Spartan-6 LXT FPGA で使用可能な GTP ト ランシーバについて説明します。

Page 6: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

6 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

このマニュアルについて

• 『Spartan-6 FPGA DSP48A1 Slice User Guide』

Spartan-6 FPGA の DSP48A1 スライスのアーキテクチャについて説明し、 コンフ ィギュレー

シ ョ ン例を示します。

• 『Spartan-6 FPGA Memory Controller User Guide』

Spartan-6 FPGA のメモリ コン ト ローラ ブロ ッ クについて説明します。メモ リ コン ト ローラ ブロ ッ クは、 Spartan-6 FPGA をよ く使用される メモ リ規格に接続する際のインターフェイスを

簡略化するエンベデッ ド マルチポート メモ リ コン ト ローラです。

• 『Spartan-6 FPGA PCB Design Guide』

PCB およびインターフェイス レベルでデザインを決定するためのス ト ラテジに焦点を置い

て、 Spartan-6 デバイスの PCB デザインに関する情報を示します。

その他のリソース

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

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

http://japan.xilinx.com/support

Page 7: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 7UG383 (v1.2) 2010 年 2 月 23 日

ブロッ ク RAM リソース

概要

Spartan®-6 FPGA のブロ ッ ク RAM は、 大 18K ビッ トのデータを格納でき、2 つの独立した 9KbRAM または 1 つの 18Kb RAM と してコンフ ィギュレーシ ョ ンできます。 各 RAM は 2 つのポート

を使用してアクセスできますが、 シングル ポート RAM と してもコンフ ィギュレーシ ョ ンできま

す。 ブロ ッ ク RAM リ ソースには、パイプライン パフォーマンスを向上するため出力レジスタが含

まれています。 ブロ ッ ク RAM は列に配置されます。 ブロ ッ ク RAM の合計数は、Spartan-6 デバイ

スのサイズによって異なり ます。

その他のザイ リ ンクス FPGA のブロ ッ ク RAM と同様に、書き込みと読み出しは同期動作で、 2 つのポートは対称でそれぞれ完全に独立しており、格納されたデータのみを共有します。 各ポートは、

設定可能な幅のいずれかに個別に指定できます。 メモ リの内容は、 コンフ ィギュレーシ ョ ン ビッ ト

ス ト リームで初期化またはク リ アできます。 書き込み処理中、データ出力をそのまま保持するか、書

き込まれている新規データを出力するか、 上書きされよ う と している以前のデータを出力するかを

指定できます。

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

FIFO、データ幅コンバータは、CORE Generator のブロ ッ ク メモ リ モジュールを使用する と簡単に

インプ リ メン トできます。 デュアル ク ロ ッ ク FIFO は、 CORE Generator の FIFO Generator モジュールを使用して作成できます。

コンフ ィギュレーシ ョ ンの種類

完全デュアル ポート モードの場合、両方のポート を個別に書き込みまたは読み出しポートに設定で

きます。9Kb RAM では、シンプル デュアル ポート モードの場合を除き、データの 大幅は 18 ビッ

トです。シンプル デュアル ポート モードの場合、ポート A は書き込みのみ、ポート B は読み出し

のみにしか設定できませんが、 データ幅は 36 ビッ トに拡張されます。

完全デュアル ポート モードでは、両方のブロ ッ ク RAM サイズで、2 つのポートの幅を個別に設定

できます。シンプル デュアル ポート モードでは、表 1 ~表 3 に示すよ うに、9Kb RAM で x36 デー

タ幅のコンフ ィギュレーシ ョ ンが可能です。

Page 8: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

8 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

概要

9Kb ブロッ ク RAM - シンプル デュアル ポート

9Kb ブロ ッ ク RAM にコンフ ィギュレーシ ョ ン可能なシンプル デュアル ポート モードのポート幅

の組み合わせは、 表 1 のとおりです。

9Kb ブロッ ク RAM - 完全デュアル ポート

9Kb ブロ ッ ク RAM にコンフ ィギュレーシ ョ ン可能な完全デュアル ポート モードのポート幅の組

み合わせは、 表 2 のとおりです。

表 1 : 9Kb ブロッ ク RAM にコンフ ィギュレーシ ョ ン可能なシンプル デュアル ポート モード

ポート A

パリテ ィ ビッ トなし パリテ ィ ビッ ト あり

8K x 1 4K x 2 2K x 4 1K x 8 512 x 16 256 x 32 1K x 9 512 x 18 256 x 36

ポート B

パリ

テ ィ ビッ ト

なし

8K x 1

完全デュアル ポート モードを使用 不可不可

4K x 2

2K x 4

1K x 8

512 x 16

256 x 32 不可 可能

パリ

テ ィ ビッ ト

あり

1K x 9

不可

完全デュアル ポート モードを

使用

不可 512 x 18

256 x 36 不可 可能

表 2 : 9Kb ブロック RAM にコンフ ィギュレーシ ョ ン可能な完全デュアル ポート モード

ポート A

パリテ ィ ビッ トなし パリティ ビッ トあり

8K x 1 4K x 2 2K x 4 1K x 8 512 x 16 1K x 9 512 x 18

ポート B

8K x 1

すべて可能 すべて不可

4K x 2

2K x 4

1K x 8

512 x 16

1K x 9すべて不可 すべて可能

512 x 18

Page 9: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 9UG383 (v1.2) 2010 年 2 月 23 日

概要

18Kb ブロック RAM - 完全デュアル ポート

18Kb ブロ ッ ク RAM にコンフ ィギュレーシ ョ ン可能な完全デュアル ポート モードのポート幅の

組み合わせは、 表 3 のとおりです。

表 3 : 18Kb ブロック RAM にコンフ ィギュレーシ ョ ン可能な完全デュアル ポート モード

ポート A

パリテ ィ ビッ トなし パリテ ィ ビッ トあり

16K x 1 8K x 2 4K x 4 2K x 8 1K x 16 512 x 32 2K x 9 1K x 18 512 x 36

ポート B

16K x 1

すべて可能 すべて不可

8K x 2

4K x 4

2K x 8

1K x 16

512 x 32

2K x 9

すべて不可 すべて可能1K x 18

512 x 36

Page 10: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

10 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

概要

表 4 は、 その他のブロ ッ ク RAM の組み合わせと ADDR ポート幅を示しています。

表 4 : ブロック RAM データの組み合わせと ADDR の位置

組み合わせ ワード数データ

パリ

テ ィ幅

データ入力

および出力ADDR RAM 合計

(Kb)

パリテ ィあり とパリテ ィなしの場合の 9Kb ブロック RAM

256 x 32(1) 256 32 なし [31:0] [12:5] 8

256 x 36(1) 256 32 4 [35:0] [12:5] 9

512 x16 512 16 なし [15:0] [12:4] 8

512 x18 512 16 2 [17:0] [12:4] 9

1K x 8 1024 8 なし [7:0] [12:3] 8

1K x 9 1024 8 1 [8:0] [12:3] 9

2K x 4 2048 4 なし [3:0] [12:2] 8

4K x 2 4096 2 なし [1:0] [12:1] 8

8K x 1 8192 1 なし [0:0] [12:0] 8

パリテ ィあり とパリテ ィなしの場合の 18Kb ブロック RAM

512 x 32 512 32 なし [31:0] [13:5] 16

512 x 36 512 32 4 [35:0] [13:5] 18

1K x16 1024 16 なし [15:0] [13:4] 16

1K x18 1024 16 2 [17:0] [13:4] 18

2K x 8 2045 8 なし [7:0] [13:3] 16

2K x 9 2048 8 1 [8:0] [13:3] 18

4K x 4 4096 4 なし [3:0] [13:2] 16

8K x 2 8192 2 なし [1:0] [13:1] 16

16K x 1 16384 1 なし [0:0] [13:0] 16

メモ :

1. x32 および x36 のデータ幅はシンプル デュアル ポート (SDP) モードでのみ使用可能

Page 11: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 11UG383 (v1.2) 2010 年 2 月 23 日

概要

Spartan-6 FPGA のブロック RAM の機能

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

ます。

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

• 各 9Kb ブロ ッ ク RAM をシンプル デュアル ポート モードにし、ブロ ッ ク RAM のデータ幅を

大 36 ビッ トにまで設定できます。シンプル デュアル ポート モードでは、読み出し専用ポー

ト と書き込み専用ポートが 1 つずつあり、 それぞれが独立したクロ ッ クで動作します。

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

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

Spartan-6 FPGA ブロ ッ ク RAM がその他の FPGA ファ ミ リ と さ らに一致するよ うにな り、

FPGA ロジッ ク レジスタをブロ ッ ク RAM ブロ ッ クにマップしやすくな り ます。

• 18 または 36 ビッ ト幅のポートには、 バイ ト ごとに個別の書き込みイネーブルを含めるこ とが

できます。 これは、 オンチップのマイク ロプロセッサと インターフェイスする際に頻繁に使用

される機能です。

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

ます。

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

き込み中読み出し」 にな り ます。 これらの出力は、clock-to-out タイ ミ ングの後に有効になり ま

す。 書き込み中読み出しの出力には、 WRITE_FIRST、 READ_FIRST、 NO_CHANGE という

3 つの動作モードがあ り ます。

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

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

• すべての出力ポートにはラ ッチが付いています。 出力ポートの値は、 そのポートで別の読み込

みまたは書き込みが行われない限り変化しません。 デフォルトでは、 ブロ ッ ク RAM 出力は

ラ ッチ モードです。

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

使用を強く推奨します。 これによ り、高クロ ッ ク レートでの動作が可能になり ますが、1 ク ロ ッ

ク サイクルのレイテンシが追加されます。

Spartan-6 FPGA のブロック RAM の使用規則

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

セッ ト またはリセッ ト (SRVAL) されます。 同期出力ラ ッチは EN_RSTRAM = TRUE のと き

に RST を使用してセッ ト またはリセッ ト (SRVAL) されます。 この場合、 ブロ ッ ク RAM はイ

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

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

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

Page 12: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

12 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

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

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

データ フロー

完全デュアル ポートの 18Kb ブロ ッ ク RAM デュアル ポート メモ リは、18Kb の記憶領域と、完全

に独立した 2 つのアクセス ポート (A および B) で構成されています。 同様に、 各 9Kb ブロ ッ ク

RAM デュアル ポート メモ リは、9Kb の記憶領域と、完全に独立した 2 つのアクセス ポート (A および B) で構成されています。 構造は完全に対称で、両ポートは交換可能です。 図 1 にデュアル ポー

トのデータ フローを示し、 表 5 にポート名とその説明を示します。

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

みは同期動作であ り、 各ポートにそれぞれアドレス、 データ入力、 データ出力、 ク ロ ッ ク、 ク ロ ッ

ク イネーブル、書き込みイネーブルがあ り ます。 読み出しおよび書き込みは同期動作であ り、ク ロ ッ

ク エッジが 1 つ必要です。

両方のポートで同じアドレスにアクセスした場合に、それを調整する専用モニタはあ り ません。 2 つのクロ ッ クのタイ ミ ングは、 ユーザーの責任で調整してください。 同じアドレスに同時に書き込み

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

X-Ref Target - Figure 1

図 1 : 完全デュアル ポート データ フロー

ADDRA

WEA

ENA

CLKA

RSTA

REGCEA

REGCEB

ADDRB

WEB

ENB

RSTB

CLKB

18 Kb Block RAM

ug383_c1_01_042209

DOB

DOA

DIA

DIB

18 KbMemory

Array

Port A

Port B

DIPA

DOPA

DOPBDIPB

Page 13: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 13UG383 (v1.2) 2010 年 2 月 23 日

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

読み出し動作

ラ ッチ モードの読み出しには、 1 つのクロ ッ ク エッジが使用されます。 読み出しアドレスが読み出

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

まれます。 出力レジスタを使用している場合、 出力でレイテンシが 1 サイクル追加されます。

書き込み動作

書き込み動作は、 1 つのクロ ッ ク エッジで行われます。 書き込みアドレスが書き込みポートに取り

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

書き込みモード

書き込みクロ ッ ク エッジ後に出力ラ ッチに現れるデータは、 書き込みモードを 3 つの値

(WRITE_FIRST、READ_FIRST、NO_CHANGE) のいずれかに設定するこ とで制御します。 各ポー

トで書き込みモードを個別に設定できます。 デフォルトでは、WRITE_FIRST に設定されています。

WRITE_FIRST では、出力バスに新たに書き込まれたデータが出力されます。READ_FIRST では、

新し くデータが書き込まれる前に、格納されていたデータが出力されます。 NO_CHANGE では、前

回の読み出しでの出力がそのまま保持されます。

表 5 : 完全デュアル ポートの名前と説明

ポート名 説明

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

DIP[A|B](1) データ入力パリティ バス

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

WE[A|B] バイ ト幅書き込みイネーブル

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

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

RST[A|B] 出力レジスタを同期セッ ト / リセッ ト (DO_REG = 1)

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

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

DOP[A|B](1) データ出力パリティ バス

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

メモ :

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

Page 14: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

14 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

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

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

WRITE_FIRST モードでは、図 2 に示すよ うに、入力データがメモ リに書き込まれる と同時にデー

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

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

READ_FIRST (書き込み前に読み出し ) モード

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

され、 それと同時に入力データがメモ リに格納されます (書き込み前に読み出し)。 図 3 に示す波形

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

X-Ref Target - Figure 2

図 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

ug383_c1_02_042209

X-Ref Target - Figure 3

図 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

ug383_c1_03_042209

Page 15: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 15UG383 (v1.2) 2010 年 2 月 23 日

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

NO_CHANGE (変化なし ) モード

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

には 後に読み込まれたデータがそのまま保持され、同じポートでの書き込みに影響されません。 ここに示す波形は、オプシ ョ ンの出力パイプライン レジスタを使用していないラ ッチ モードの場合の

ものです。

競合の回避

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

る完全デュアル ポート RAM です。 ただし、 2 つのポートから 1 つのメモ リ位置へアクセスする際

には、 制限があ り ます。 このよ う なアクセスには、 両ポートで共通のクロ ッ クを使用している場合 (同期クロ ッ ク ) と、 両ポートのクロ ッ ク周波数と位相が異なる場合 (非同期クロッ ク ) があ り ます。

非同期クロッ ク

非同期クロ ッ クは、 よ り一般的な状況で、 両クロ ッ クのアクティブ エッジは同時に発生しません。

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

• 1 つのポートで書き込みを実行している と きに、 も う 1 つのポートで同じ メモ リ位置への読み

出しまたは書き込みは実行できません。 これに反する と、 シ ミ ュレーシ ョ ン モデルでエラーが

発生します。 この制限を無視する と、 読み出しまたは書き込み動作の結果が予測されないもの

になり ます。 ただし、デバイスが物理的に破損するこ とはあ り ません。 読み出し と書き込みが実

行される と、 書き込み位置に有効なデータが格納されます。

• READ_FIRST モードでは、 デュアル ポート ブロ ッ ク RAM を使用する場合にポート A と Bのアドレスが競合しないよ うにする必要があ り ます。この制限は、TDP および SDP モードの両

方に適用されます。 1 つのポートでの読み出し /書き込みと、 も う 1 つのポートでの同じアドレ

スへの書き込みを同時に実行するこ とはできません。 ブロ ッ ク RAM の動作におけるこの制限

を無視するこ とはできません。

• 両方のポートが 18 ビッ ト幅以下である場合の RAMB16BWER : A13 ~ A6 および A4 を同じにするこ とはできません。

• 1 つのポートが 36 ビッ ト幅である場合の RAMB16BWER : A13 ~ A7 および A5 を同じ

にするこ とはできません。

• RAMB16BWER のすべてのコンフ ィギュレーシ ョ ン : A12 ~ A6 および A4 を同じにす

るこ とはできません。

X-Ref Target - Figure 4

図 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

ug383_c1_04_042209

Page 16: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

16 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

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

同期クロッ ク

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

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

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

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

です。

• 1 つのポートで書き込みを実行している と き、 書き込みポートが READ_FIRST モードになっ

ていれば、 も う 1 つのポートで同じ メモリ位置から正し くデータを読み出すこ とができます。

その場合、 両ポートの DATA_OUT は以前に格納されていたデータになり ます。

書き込みポートが WRITE_FIRST または NO_CHANGE モードになっている と きは、 読み出

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

作には影響を与えません。

出力レジスタ (オプシ ョ ン)オプシ ョ ンの出力レジスタは、 パイプライン処理用に CLB フ リ ップフロ ップへの配線遅延を削除

するこ とで、 デザインのパフォーマンスを向上します。 これらの出力レジスタには独立したク ロ ッ

ク イネーブル入力が供給されるため、 入力レジスタ とは別の値が保持されます。図 5 にオプシ ョ ン

の出力レジスタを示します。

シンプル デュアル ポート ブロック RAM各 9Kb ブロ ッ クは、 シンプル デュアル ポート (SDP) RAM モードにもコンフ ィギュレーシ ョ ンで

きます。 このモードでは、9Kb ブロ ッ ク RAM のポート幅が 2 倍の 36 ビッ ト とな り ます。 シンプル

デュアル ポート モードでは、 ポート A を主な書き込みポート、 ポート B を主な読み出しポート と

し、 読み出しおよび書き込み動作を同時に実行できます。 読み出しポートおよび書き込みポートで

同時に同じデータ位置にアクセスする と競合が発生し、完全デュアル ポート モードのポート競合と

同じよ うに処理されます。 コンフ ィギュレーシ ョ ン ポートからの リードバッ クはシンプル デュア

ル ポート ブロ ッ ク RAM モードではサポート されていません。 このモードでのデータ フローを図

6 に示します。 表 6 には、 SDP のポート名とその説明を示します。

X-Ref Target - Figure 5

図 5 : ブロック RAM の論理図 ( ポートは 1 つ )

Register

OptionalInverter

Latches Register

Address

DI

WEEN

CLK

WriteStrobe

ReadStrobe

QD QD

DO

Control Engine

Configurable Optionsug383_c1_05_042209

MemoryArray

(common toboth ports)

LatchEnable

Page 17: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 17UG383 (v1.2) 2010 年 2 月 23 日

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

X-Ref Target - Figure 6

図 6 : シンプル デュアル ポート モードでのデータ フロー

表 6 : シンプル デュアル ポート RAM のポート名および説明

ポート名 説明

DO データ出力バス

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

DI データ入力バス

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

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

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

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

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

RST データ出力レジスタ /ラ ッチの同期セッ ト / リセッ ト

WE バイ ト幅書き込みイネーブル

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

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

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

9 Kb Memory Array

RDEN

RDADDR

RDCLK

REGCE

WRADDR

WE

WRCLK

WREN

DODI

ug383_c1_06_022010

32

4

15

15

32

DOPDIP4 4

RST

Page 18: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

18 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

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

バイ ト幅書き込みイネーブル

ブロ ッ ク RAM にはバイ ト幅の書き込みイネーブル機能があ り、 8 ビッ ト (1 バイ ト ) 単位で入力

データを書き込むこ とができます。 完全デュアル ポート RAM へのバイ ト幅書き込みイネーブル入

力は、 高で 4 つあり ます。 各バイ ト幅書き込みイネーブルは、入力データの 1 バイ ト と 1 パリティ

ビッ トに対応しています。 この機能は、 ブロ ッ ク RAM を使用してマイク ロプロセッサと通信する

場合に有用です。 バイ ト幅書き込みイネーブルの詳細は、「ブロ ッ ク RAM プリ ミ ティブの設計上の

追加注意事項」 を参照してください。 図 7 に、 ブロ ッ ク RAM のバイ ト幅書き込みイネーブルのタ

イ ミ ング図を示します。

ブロ ッ ク RAM を 18 ビッ ト幅または 9 ビッ ト幅のデータ パス用にコンフ ィギュレーシ ョ ンする

と、 データ ワード内で指定したバイ ト位置への書き込みを任意のポートで制御できます。

READ_FIRST モードの場合、 DO バスには指定されたアドレスの以前のワード全体が出力されま

す。 WRITE_FIRST モードの場合、 DO には新し く書き込まれたイネーブルになっているバイ トの

みが出力されます。 NO_CHANGE モードの場合、 DO には前のクロ ッ ク サイクルからの値が保持

されます。

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

Spartan-6 FPGA ブロッ ク RAM のライブラ リ プリ ミティブ RAMB16BWER および RAMB8BWERは、 すべてのブロッ ク RAM コンフィギュレーシ ョ ンの基本ブロッ クです。 その他のブロッ ク RAMプリ ミティブおよびマクロは、 これらのプリ ミティブを基にしています。 ブロッ ク RAM の属性に

よっては、 これらの中の 1 つのプリ ミティブを使用するだけでコンフィギュレーシ ョ ンできます。 詳細は、 「ブロッ ク RAM の属性」 を参照してください。

図 8 に 18Kb の完全デュアル ポートの RAM プリ ミ ティブ (RAMB16BWER) の I/O ポート を、図

9 に 9Kb のデュアル ポート ブロ ッ ク RAM プリ ミ ティブ (RAMB8BWER) を示します。 表 7 には、

9Kb および 18Kb プリ ミ ティブを リ ス ト します。

X-Ref Target - Figure 7

図 7 : バイ ト書き込み動作の波形 (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 xx22 MEM(cc)

ReadWriteMEM(bb)=1111

Byte WriteMEM(bb)=1122

ug383_c1_07_052909

Page 19: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 19UG383 (v1.2) 2010 年 2 月 23 日

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

X-Ref Target - Figure 8

図 8 : ブロック RAM ポート信号 (RAMB16BWER)X-Ref Target - Figure 9

図 9 : ブロッ ク RAM ポート信号 (RAMB8BWER)

DIA

ADDRA

WEAENA

RSTA

CLKA

DOA

DOB

REGCEA

DIB

ADDRB

WEBENB

RSTBREGCEB

CLKB

ug383_c1_08_042209

32

14

4

32

32

32

14

4

DIPA4

DIPB4

DOPB4

DOPA4

DIADI

ADDRAWRADDR

WEAWELENAWREN

RSTA

CLKAWRCLK

DOADO

DOBDO

REGCEA

DIBDI

ADDRBRDADDR

WEAWEUENBRDEN

RSTBRSTREGCEBREGCE

CLKBRDCLK

ug383_c1_09_042309

16

13

2

16

16

16

13

2

DIPADIP2

DIPBDIP2

DOPBDOP2

DOPADOP2

Page 20: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

20 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のポート信号

ブロック RAM のポート信号

ブロ ッ ク RAM の各ポートは、同じ 9Kb または 18Kb メモ リ セルのセッ トにアクセスしますが、動

作はそれぞれ独立しています。 RAMB16BWER と RAMB8BWER プリ ミ ティブのポート名は異な

り ます。 次のセクシ ョ ンでは、 RAMB16BWER のポート名を 初に、 RAMB8BWER のポート名

をかっこ内にします。

クロック - CLKA、 CLKB (CLKAWRCLK、 CLKBRDCLK)各ポートは、 それぞれのクロ ッ ク ピンに完全に同期します。 すべてのポート入力ピンのセッ ト アッ

プ タイムは、CLK ピンのポート を基準と しています。 また、出力データ バスの clock-to-out タイム

も CLK ピンを基準と します。 クロ ッ クの極性はコンフ ィギュレーシ ョ ン可能で、デフォルトは立ち

上がりエッジに設定されています。

完全デュアル ポート (TDP) モード (RAM_MODE = TDP) の RAMB8BWER の場合、

CLKAWRCLK と CLKBRDCLK がそれぞれのポートのク ロッ ク入力になり ます。 SDP モード

(RAM_MODE = SDP) の場合、CLKAWRCLK が書き込みクロ ッ ク入力、CLKBRDCLK が読み出

しクロ ッ ク入力になり ます。

イネーブル - ENA、 ENB (ENAWREN、 ENBRDEN)ポートの読み出し、書き込み、およびセッ ト / リ セッ ト機能を制御します。 ポートのイネーブル ピン

が非アクティブのと きは、出力ピンは前の状態を保持し、データはメモリ セルに書き込まれません。

イネーブルの極性はコンフ ィギュレーシ ョ ン可能で、 デフォルトではアクティブ High に設定され

ています。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、 ENAWREN と ENBRDEN がそれ

ぞれのポートのイネーブル入力になり ます。 SDP モードの場合は、 ENAWREN が書き込みイネー

ブル、 ENBRDEN が読み出しイネーブルになり ます。

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

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

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

に関わらず、アドレス バスで指定されたメモ リ セルの内容がデータ出力バスに送信されます。 書き

込みイネーブルの極性はコンフ ィギュレーシ ョ ン可能で、 デフォルトはアクティブ High に設定さ

れています。

表 7 : Spartan-6 FPGA のブロック RAM プリ ミテ ィブ

プリ ミテ ィブ 説明

RAMB8BWER サポート されるデータ幅 : x1、 x2、 x4、 x8、 x16、 x32 (およびパリティ ビッ

ト付きの x9、 x18、 x36)

RAMB16BWER サポート されるデータ幅 : x1、 x2、 x4、 x8、 x16、 x32 (およびパリティ ビッ

ト付きの x9、 x18、 x36)

メモ :

1. プ リ ミティブについては、 ソフ ト ウェアのライブラ リ ガイ ドおよび言語テンプレートで説明されています。

Page 21: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 21UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のポート信号

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、WEAWEL と WEBWEU がそれぞ

れのポートのバイ ト イネーブル入力になり ます。 SDP モードの場合、WEAWEL が下位 2 バイ トの

書き込みイネーブルで、 WEBWEU が上位バイ トの書き込みイネーブルになり ます。

レジスタ イネーブル - REGCEA、 REGCEB (REGCEA、 REGCEBREGCE)オプシ ョ ンの出力レジスタを制御します。 RAM がレジスタ モードの場合、REGCE = 1 と指定する

と、 ク ロ ッ ク エッジで出力がレジスタに取り込まれます。 REGCE の極性はコンフ ィギュレーシ ョ

ン可能で、 デフォルトではアクティブ High に設定されています。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、 REGCEA と REGCEBREGCE がそれぞれのポートのレジスタ ク ロ ッ ク イネーブル入力になり ます。 SDP モードの場合、 REGCEAは未使用なので、ロジッ ク 0 に接続されている必要があ り ます。REGCEBREGCE は、読み出しポー

トのレジスタ イネーブルになり ます。

セッ ト /リセッ ト - RSTA、 RSTB (RSTA、 RSTBRST)ラ ッチ モードでは、RST ピンがアクティブになる と、データ出力ラ ッチの値が SRVAL の値になり

ます。 この動作は、 RSTTYPE 属性の値によって同期または非同期になり ます。 詳細は、 23 ページ

の 「ブロ ッ ク RAM の属性」 を参照して ください。 オプシ ョ ンの出力レジスタがイネーブルの場合

(DO_REG = 1)、 RST 信号によ りデータ出力レジスタの値が SRVAL の値になり ます。

RST_PRIORITY 属性を使用する と、 RST と REGCE のどちらを優先するかを指定できます。 デー

タ出力レジスタは、 パリティ ビッ ト を含めて、 0 または 1 にアサート されます。 EN_RSTRAM 属性の設定によっては、データ出力ラ ッチが RST ポートでも リセッ ト されます。 各ポートには、それ

ぞれ 36 ビッ トの SRVAL[A|B] 属性が指定されます。 この動作によ り RAM メモ リ セルが変化する

こ とはなく、 も う 1 つのポートでの書き込みにも影響しません。セッ ト / リ セッ ト機能も、読み込み

/書き込みと同様に、そのポートのイネーブル ピンがアクティブな場合にのみ有効となり ます。 両方

の信号の極性はコンフ ィギュレーシ ョ ン可能で、 デフォルトではアクティブ High に設定されてい

ます。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、 RSTA と RSTBRST がそれぞれの

ポートのセッ ト / リ セッ ト入力になり ます。 SDP モードの場合、 RSTA は未使用なので、 ロジッ ク 0に接続されている必要があ り ます。 RSTBRST は、 読み出しポートのセッ ト / リセッ トにな り ます。

アドレス バス - ADDRA、 ADDRB (ADDRAWRADDR、 ADDRBRDADDR)読み込みまたは書き込みを行う メモ リ セルを選択します。 表 4 に示すよ うに、1 つのブロ ッ ク RAMに必要なアドレス バス幅は、 ポートのデータ ビッ ト幅によって決ま り ます。 データ幅は、

DATA_WIDTH_[A|B] 属性によって定義されます。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、 ADDRAWRADDR と ADDRBRDADDR がそれぞれのポートのイネーブル入力になり ます。 SDP モード (RAM_MODE=SDP) の場合、 ADDRBRDADDR が書き込みポートのアドレス入力、

ADDRBRDADDR が読み出しポートの入力になり ます。

データおよびアドレス ピンのマップについては、 「ブロ ッ ク RAM プリ ミ ティブの設計上の追加注

意事項」 で詳し く説明しています。

Page 22: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

22 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のポート信号

データ入力バス - DIA、 DIB (DIADI、 DIBDI)RAM に書き込むデータ値を供給します。 パリティ データ入力バス (使用可能な場合) を含む通常の

データ入力バス (DI) の幅を合計する と、ポート幅になり ます。 たとえば、表 4 に示すよ うに、36 ビッ

ト ポートのデータ幅は DI[31:0] とそのパリティ ビッ トの DIP[3:0] で表されます。 データ幅は、

DATA_WIDTH_[A|B] 属性によって定義されます。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、DIADI と DIBDI がそれぞれのポー

トのデータ入力になり ます。 SDP モード (RAM_MODE=SDP) の場合は、 DIADI が下位ビッ ト、

DIBDI が上位ビッ ト を示します (データ幅が 16 ビッ ト を超える場合)。

データ入力パリテ ィ - DIPA、 DIPB (DIPADIP、 DIPBDIP)RAM のパリティ ビッ トに書き込むデータ値を供給します。 メモ リのこの部分は、パリティ ビッ ト

を格納するためのものですが、必要に応じて追加データにも使用できます。パリティ ビッ ト を計算

したり、検証するためのロジッ クは、ブロッ ク RAM にはあ り ません。 TDP モードの場合、DIPADIPと DIPBDIP がそれぞれのポートのパリティ データ入力になり ます。 SDP モードの場合、DIPADIPが下位 2 ビッ トのパリティで、 DIPBDIP が上位 2 ビッ トのパリティにな り ます。

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

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

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

NO_CHANGE モードの書き込みでは、 データ出力バスは変化しません。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、DOADO と DOBDO がそれぞれの

ポートの出力になり ます。 SDP モード (RAM_MODE=SDP) の場合は、 DOADO が下位ビッ ト、

DOBDO が上位ビッ ト を示します (データ幅が 16 ビッ ト を超える場合)。

データ出力パリテ ィ - DOPA、 DOPB (DOPADOP、 DOPBDOP)パリティ データに割り当てられたメモリ セルの内容が出力されます。 データは、データ出力バスと

同様にバスに出力されます。

TDP モード (RAM_MODE = TDP) の RAMB8BWER の場合、DOPADOP と DOPBDOP がそれぞ

れのポートの出力になり ます。 SDP モードの場合、 DOPADOP が下位バイ トのパリティ ビッ ト、

DOPBDOP が上位バイ トのパリティ ビッ トにな り ます。

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

ン終了時にアクティブになる非同期のグローバル信号です。 GSR を使用する と、 Spartan-6 デバイ

スの初期状態をいつでも復元できます。 GSR によ り、 出力ラ ッチは INIT (シンプル デュアル ポー

ト ) または INIT_A および INIT_B の値 (完全デュアル ポート ) に初期化されます。 詳細は、「ブロ ッ

ク RAM の属性」 を参照してください。 GSR 信号によ り、 内部メモ リの内容が変わるこ とはあ り ま

せん。 GSR はグローバル信号なので、ファンクシ ョ ン レベル (ブロッ ク RAM プリ ミ ティブ) の入力

ピンはあ り ません。

未使用の入力

未使用のデータ入力またはアドレス入力は、 Low に接続する必要があ り ます。

Page 23: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 23UG383 (v1.2) 2010 年 2 月 23 日

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

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

各ポートは、 9Kb RAM であるか 18Kb RAM であるかによって異なるアドレス指定方法を使用し

て、同じ 9,216 個または 18,432 個のメモリ セルにアクセスします。 特定のポート幅で指定される物

理的な RAM の位置は、次の式によって決定されます (2 つのポートが異なる比率の場合のみ参照)。

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

表 8 に、 各ポート幅の下位のアドレス マップを示します。

ブロック RAM の属性

すべての属性コード例は、 「ブロ ッ ク RAM の初期化」 に記載されています。 これらの属性の使用に

ついては、 「ブロ ッ ク RAM プリ ミ ティブの設計上の追加注意事項」 で詳細に説明しています。

データおよびアドレス幅 - DATA_WIDTH_A、 DATA_WIDTH_B各ポートのデータ バス とアドレス バスの幅を定義します。 リ ス ト されているデータ幅の有効な組

み合わせは、 0 (デフォルト )、 1、 2、 4、 9、 18 および 36 で、 9、 18、 36 にはパリティ ビッ トが含

まれます。シンプル デュアル ポート モードの 9Kb ブロ ッ ク RAM では、DATA_WIDTH に設定可

能な値は 36 のみです。 シンプルまたは完全デュアル ポート モードの 18Kb ブロ ッ ク RAM、 ある

いは完全デュアル ポート モードの 9Kb ブロ ッ ク RAM では、DATA_WIDTH を任意の組み合わせ

に設定できます。 データ幅に基づくアドレス幅は、 表 4 のよ うにな り ます。

メモリ内容の初期化 - INIT_xxメモ リの初期内容を定義します。 デフォルトでは、 ブロ ッ ク RAM メモ リはデバイスのコンフ ィ

ギュレーシ ョ ン シーケンス中にすべて 0 に初期化されます。 9Kb ブロ ッ ク RAM の INIT_00 ~INIT_1F 初期化属性、 18Kb ブロ ッ ク RAM の INIT_00 ~ INIT_3F 初期化属性は、 通常のメモ リ

内容を指定します。 パリティ メモ リの内容は、INITP 属性を使用して初期化します。 各 INIT_xx は、

16 進数で表した 64 桁のビッ ト ベクタです。 メモ リは一部だけを初期化するこ と も可能です。 この

場合、 初期値を指定した部分以外は自動的に 0 になり ます。

各 INIT_xx 属性のビッ ト位置は、 次の式で決定されます。

16 進数 (xx) を 10 進数に変換した値を yy とする と、 INIT_xx は次のメモリ セルに対応します。

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

• 終了セル : (yy) × 256

表 8 : ポート アドレス マップ

ポート

パリテ ィ

位置データ位置

1 なし 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 24: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

24 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM の属性

たとえば、 属性 INIT_1F の場合は次のよ うになり ます。

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

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

• 終了セル : 31 × 256 = 7936

その他の例を表 9 に示します。

パリテ ィ メモリ内容の初期化 - INITP_xxパリティ ビッ トに対応する メモリ セルの初期内容を定義します。 デフォルトでは、これらのメモ リ

セルもすべて 0 に初期化されます。 初期化属性で、 パリティ ビッ トのメモ リ内容を指定します。 初期化属性は、9Kb ブロ ッ ク RAM では INITP_00 ~ INITP_03、18Kb ブロ ッ ク RAM では INIT_00~ INITP_07 です。 各 INITP_xx は、 16 進数で表した 64 桁のビッ ト ベクタで、 INIT_xx 属性と同

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

出力ラッチの初期化 - INIT_A、 INIT_Bコンフ ィギュレーシ ョ ン後の出力ラ ッチまたは出力レジスタの値を定義します。 これらの属性は

16 進数のビッ ト ベクタで、 デフォルトは 0 です。 TDP モードの場合、 INIT_A がポート A に、

INIT_B がポート B になり、 SDP モードの場合は INIT_A が下位出力ビッ トに、 INIT_B が上位出

力ビッ トになり ます。

表 9 : ブロック 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

Page 25: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 25UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM の属性

出力ラッチ/レジスタの同期セッ ト /リセッ ト - SRVAL_A、 SRVAL_BRST 入力がアサート された際の出力ラ ッチの値を定義します。 これらの属性の幅がポート幅になり

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

タ属性が設定されている場合は、出力レジスタ値を指定します。 レジスタが未使用のと きは、ラ ッチ

が SRVAL に指定されます。 パリティを使用する場合は、 上位ビッ ト (MSB) がそのパリティ ビッ

トになり ます。

TDP モードの場合、 SRVAL_A がポート A に、 SRVAL_B がポート B になり ます。 SDP モードの

場合、 SRVAL_A が下位 18 ビッ ト (パリティ 2 ビッ ト を含む) に、 SRVAL_B が上位ビッ ト (パリ

ティ 2 ビッ ト を含む) になり ます。

RAM モード - RAM_MODEこの属性は RAMB8BWER に対してのみ必要で、 ブロ ッ ク RAM を完全デュアル ポート RAM (読み出しおよび書き込み用にバスが 2 つ) またはシンプル デュアル ポート RAM (ポート B が読み

出し専用、 ポート A は書き込み用) のどちら と して使用するかを指定します。 有効な値は TDP (デフォルト ) または SDP です。

リセッ ト と CE の優先度 - RST_PRIORITY_A、 RST_PRIORITY_B出力レジスタを使用する場合は、 この属性で RST と REGCE のどちらを優先するかを指定できま

す。 レジスタの代わりに出力ラ ッチを使用する場合は、 RST と EN のどちらを優先するかを指定で

きます。 有効な値は SR (デフォルト ) または CE です。

データ ラ ッチ リセッ ト - EN_RSTRAM_A、 EN_RSTRAM_BRST ポートでブロ ッ ク RAM 出力のラ ッチを リセッ トするかど うかを指定します。 有効な値は

TRUE または FALSE (デフォルト ) です。

リセッ ト タイプ - RSTTYPEブロ ッ ク RAM 出力を同期でリセッ トするか、 非同期でリセッ トするかを指定します。 値は SYNC(デフォルト ) または ASYNC に設定できますが、非同期リセッ ト よ り も同期リセッ ト を使用するこ

とをお勧めします。 詳細は、 「 リセッ トの動作」 を参照して ください。

オプシ ョ ンの出力レジスタ切り替え - DO[A|B]_REGブロ ッ ク RAM の A/B 出力でのパイプライン レジスタをイネーブルにするかど うかを指定します。

有効な値は 0 (デフォルト ) または 1 です。

書き込みモード - WRITE MODE_A、 WRITE_MODE_BA/B 入力ポートの書き込みモードを指定します。 有効な値は、WRITE_FIRST、READ_FIRST、お

よび NO_CHANGE で、 デフォルト値は WRITE_FIRST です。 書き込みモードの詳細は、 「書き込

みモード」 を参照してください。

Page 26: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

26 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM の初期化

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

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

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

容易に使用できるよ うになっています。 18Kb ブロ ッ ク RAM では、RAMB16 のロケーシ ョ ン識別

を使用して、パリティ ビッ ト を含まない RAM の容量を示します。 9Kb ブロ ッ ク RAM では、次の

よ う な RAMB8 の表記を使用します。

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

LOC = RAMB16_X#Y#;

LOC = RAMB8_X#Y#;

RAMB16_X0Y0 は、 デバイスの左下にある 18 Kb ブロ ッ ク RAM の位置です。 18 Kb RAM がRAMB16_X0Y0 に制約される場合、9 Kb RAM はこれと位置を共有するので、RAMB8_X0Y0 または RAMB8_X0Y1 に制約できません。

ブロック RAM の初期化

ブロ ッ ク RAM メモ リの属性および内容は、インスタンシエート されたコンポーネン ト内で genericmap (VHDL) または defparam (Verilog) を使用して、合成およびシ ミ ュレーシ ョ ン用に VHDL また

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

シ ョ ン ビヘイビアと インプ リ メンテーシ ョ ン結果に影響します。 Spartan-6 のライブラ リ ガイ ドに

は、 18Kb および 9Kb ブロ ッ ク RAM を初期化するためのコードが記載されています。

ブロック RAM プリ ミテ ィブの設計上の追加注意事項

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

か、 または両方に使用できます。 使用ポートは DO[A|B]_REG 属性を使用して指定します。 独立し

た 2 つのクロ ッ ク イネーブル ピンは REGCE[A|B] です。 ポート [A|B] でオプシ ョ ンの出力レジス

タを使用する場合、ポート [A|B] の同期セッ ト / リセッ ト (RST) ピンをアサートする と、属性 SRVALで指定された値がレジスタを介して出力されます。 図 5 にオプシ ョ ンの出力レジスタを示します。

RAMB16BWER および RAMB8BWER ポートのマップ規則

Spartan-6 FPGA ブロ ッ ク RAM は、さまざまなポート幅とサイズにコンフ ィギュレーシ ョ ンできま

す。 コンフ ィギュレーシ ョ ンによっては、 一部のデータ ピンとアドレス ピンが未使用とな り ます。

表 4 は、さまざまなコンフ ィギュレーシ ョ ンで使用されるピンを示しています。 表 4 の情報に加え、

次の規則に基づいてブロ ッ ク RAM のポート接続を決定します。

• RAMB16BWER を使用していて DI[A|B] ピンの幅が 32 ビッ ト未満の場合、

(32 - DI_BIT_WIDTH) の数のロジッ ク 0 を DI[A|B] の前に連結します。 RAMB8BWER を使

用していて DI[A|B] ピンの幅が 16 ビッ ト未満の場合、(16 - DI_BIT_WIDTH) の数のロジッ ク

0 を DI[A|B] の前に連結します。

• RAMB16BWER を使用していて DIP[A|B] ピンの幅が 4 ビッ ト未満の場合、

(4 - DIP_BIT_WIDTH) の数のロジッ ク 0 を DIP[A|B] の前に連結します。

• RAMB8BWER を使用していて DIP[A|B] ピンの幅が 2 ビッ ト未満の場合、

(2 - DIP_BIT_WIDTH) の数のロジッ ク 0 を DIP[A|B] の前に連結します。

Page 27: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 27UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のアプリケーシ ョ ン

• RAMB16BWER を使用する場合、DO[A|B] ピンの幅は 32 ビッ トにする必要があ り ます。 ただ

し、 (DO_BIT_WIDTH - 1) から 0 までのピンのデータのみが有効です。

• RAMB16BWER を使用する場合、 DOP[A|B] ピンの幅は 4 ビッ トにする必要があ り ます。

RAMB8BWER を使用する場合、 DOP[A|B] ピンの幅は 2 ビッ トにする必要があ り ます。 ただ

し、 (DOP_BIT_WIDTH - 1) から 0 までのピンのデータのみが有効です。 DOP[A|B] を使用し

ていない場合は、 未接続のままにできます。

• RAMB16BWER を使用する場合、 ADDR[A|B] ピンの幅は 14 ビッ トにする必要があ り ます。

RAMB8BWER を使用する場合、ADDR[A|B] ピンの幅は 13 ビッ トにする必要があ り ます。 アドレス幅は、 表 4 に記載されています。

リセッ トの動作

ブロ ッ ク RAM のラ ッチまたはレジスタの初期値は、 RSTTYPE = ASYNC の場合は SR_VAL で、

RSTTYPE = SYNC の場合は INIT で定義されます。 リセッ ト タイプが ASYNC で INIT 値が使用

されている場合、 コンフ ィギュレーシ ョ ン後に GSR を適用する必要があ り ます。

バイ ト幅書き込みイネーブル

バイ ト幅書き込みイネーブルを使用する場合は、 次の規則に従ってください。

• x36 モードの場合、 WE[3:0] を 4 つのユーザー WE 入力に接続します。

• x18 モードの場合、 WE[0] および WE[2] はユーザー WE[0] で駆動し、 WE[1] および WE[3]はユーザー WE[1] で駆動します。

• x9、 x4、 x2、 x1 モードの場合、 WE[3:0] はすべて 1 つのユーザー WE に接続されます。

ブロック RAM のアプリケーシ ョ ン

大型 RAM 構造の作成

CORE Generator では、 複数のブロ ッ ク RAM インスタンスを使用して、 ビッ ト数およびワード数

の多いメモ リ構造を簡単に生成できます。 このツールでは、 VHDL または Verilog のインスタンシ

エーシ ョ ン テンプレートやシ ミ ュレーシ ョ ン モデル、デザインに含める EDIF ファ イルが出力され

ます。

Page 28: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

28 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のアプリケーシ ョ ン

レジスタ モードのブロック RAM の RSTブロ ッ ク RAM の RST をレジスタ モードで使用する と、 出力レジスタをブロ ッ ク RAM から独立

したパイプライン レジスタ と して制御できます。 図 10 は、ブロ ッ ク RAM の読み出しおよび書き込

みが、 レジスタ イネーブルまたはセッ ト / リ セッ ト とは独立して実行されている と ころを示してい

ます。 レジスタ モードでは、RST によ り DO が SRVAL に設定され、ブロ ッ ク RAM から DBRAMへのデータ読み出しが可能です。 DBRAM でのデータは、 次のサイクルでクロ ッ ク出力 (DO) に送

信できます。 図 11 および図 12 のタイ ミ ング図は、 別の RST の例を示しています。

X-Ref Target - Figure 10

図 10 : レジスタ モードのブロック RAM の RST

BRAM_RST

DO

BRAM_RAMENEN

REGCE

RST

DIDBRAM

ug383_c1_09_042209

X-Ref Target - Figure 11

図 11 : レジスタ モードでの RST 動作 (REGEN = High)

CLK

EN

REGCE

RST

DBRAM D0 D1 D2 D3

D0 SRVAL SRVALD1 D2DO

ug383_c1_10_042209

Page 29: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 29UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のアプリケーシ ョ ン

X-Ref Target - Figure 12

図 12 : レジスタ モードでの RST 動作 (REGEN = 変数 )

CLK

EN

REGCE

RST

DBRAM D0 D1 D2 D3

D0 SRVAL D2D1DO

ug383_c1_11_042209

Page 30: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

30 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のタイ ミング モデル

ブロック RAM のタイ ミング モデル

こ こでは、 Spartan-6 デバイスのブロ ッ ク RAM に関連するタイ ミ ング パラ メータについて説明し

ます (図 13 を参照)。 Spartan-6 FPGA データシートのスイ ッチ特性のセクシ ョ ンや、 ザイ リ ンクス

ソフ ト ウェアの Timing Analyzer (TRACE) から出力されるレポート も参考にしてください。

ブロック RAM のタイ ミング パラメータ

表 10 は、 Spartan-6 FPGA のブロ ッ ク RAM のタイ ミ ング パラ メータを示しています。

表 10 : ブロック 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_EN

イネーブル EN

クロ ッ ク前に、ブロ ッ ク RAM の EN 入力で、イネーブル信号が安定し

ている必要のある時間

TRCKC_EN クロ ッ ク後に、ブロ ッ ク RAM の EN 入力でイネーブル信号が安定して

いる必要のある時間

TRCCK_RST

同期セッ ト /リセッ ト

RST

クロ ッ ク前に、ブロ ッ ク RAM の RST 入力で、同期セッ ト / リセッ ト信

号が安定している必要のある時間。

TRCKC_RST クロ ッ ク後に、ブロ ッ ク RAM の RST 入力で同期セッ ト / リセッ ト信号

が安定している必要のある時間

TRCCK_WE

書き込み

イネーブルWE

クロ ッ ク前に、ブロ ッ ク RAM の WE 入力で、書き込みイネーブル信号

が安定している必要のある時間

TRCKC_WE クロ ッ ク後に、ブロ ッ ク RAM の WE 入力で書き込みイネーブル信号が

安定している必要のある時間

TRCCK_REGCE出力レジスタ イネーブル

(オプシ ョ ン)

REGCE

クロ ッ ク前までに、 ブロ ッ ク RAM の REGCE 入力でレジスタ イネー

ブル信号が安定している必要のある時間

TRCKC_REGCE クロ ッ ク後に、 ブロ ッ ク RAM の REGCE 入力でレジスタ イネーブル

信号が安定している必要のある時間

Clock-to-Out 遅延

TRCKO_DO

(ラ ッチ モード )ク ロ ッ クから出力

CLK

から DO

クロ ッ ク後に、ブロ ッ ク RAM の DO 出力で出力データが安定するまで

の時間 (出力レジスタを使用しない場合)

Page 31: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 31UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のタイ ミング モデル

ブロック RAM のタイ ミング特性

図 13 のタイ ミ ング図は、 オプシ ョ ンの出力レジスタを使用しない、 WRITE_FIRST モードのシン

グル ポート ブロッ ク RAM を示しています。 READ_FIRST モード と NO_CHANGE モードのタ

イ ミ ングは、 WRITE_FIRST モード と類似しています。 オプシ ョ ンの出力レジスタを使用する と、

DO ピンでクロ ッ ク レイテンシが追加されます。 こ こに示す波形は、 オプシ ョ ンの出力パイプライ

ン レジスタを使用しないラ ッチ モードの場合のものです。

0 の時点では、 EN (イネーブル) は Low であるため、 ブロ ッ ク RAM はディ スエーブルです。

クロック イベン ト 1

読み出し

読み出しでは、 ADDR 入力のアドレス位置のメモ リ内容は変更しません。

• ク ロ ッ ク イベン ト 1 よ り TRCCK_ADDR 時間前に、アドレス 00 がブロ ッ ク RAM の ADDR 入力で有効になり ます。

• ク ロ ッ ク イベン ト 1 よ り TRCCK_EN 時間前に、 イネーブルがブロ ッ ク RAM の EN 入力で

High になり、 読み出しを実行できるよ うにメモ リがイネーブルになり ます。

• ク ロ ッ ク イベン ト 1 よ り TRCKO_DO 時間後に、アドレス 00 のメモ リ内容がブロ ッ ク RAM のDO ピンで安定します。

TRCKO_DO_REG

(レジスタ モード )ク ロ ッ クから出力

CLK

から DO

クロ ッ ク後に、ブロ ッ ク RAM の DO 出力で出力データが安定するまで

の時間 (出力レジスタを使用した場合)

メモ :

1. WE が非アクティブでも EN がアクテ ィブの場合は、 セッ ト アップ/ホールド タイム中は ADDR 入力が安定している必要があ り ます。 この要件に違反する と、 ブロ ッ ク RAM でデータが破損する可能性があ り ます。 ADDR タイ ミ ングが指定した要件に反する場合、 EN は非アクテ ィブ (ディ スエーブル) にする必要があ り ます。

表 10 : ブロック RAM のタイ ミング パラメータ ( 続き )

パラメータ ファンクシ ョ ン 制御信号 説明

X-Ref Target - Figure 13

図 13 : ブロック 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)

ug383_c1_12_042209

1 2 3 54

TRCCK_RST

Page 32: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

32 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のタイ ミング モデル

• EN がアサート されている場合は常に、 すべてのアドレス変更が指定のセッ ト アップおよび

ホールド仕様を満たす必要があ り ます。 非同期でのアドレス変更は、 メモ リ内容およびブロ ッ

ク RAM の機能に予想外の影響を与える可能性があ り ます。

クロック イベン ト 2

書き込み

書き込みでは、 書き込みイネーブル (WE) が High になる と、 ADDR 入力のアドレスで指定された

位置のメモ リ内容が DI ピンの値に置き換えられ、 すぐに出力ラ ッチに反映されます

(WRITE_FIRST モード )。

• ク ロ ッ ク イベン ト 2 よ り TRCCK_ADDR 時間前に、アドレス 0F がブロ ッ ク RAM の ADDR 入力で有効になり ます。

• ク ロ ッ ク イベン ト 2 よ り TRDCK_DI 時間前に、データ CCCC がブロ ッ ク RAM の DI 入力で有

効になり ます。

• ク ロ ッ ク イベン ト 2 よ り TRCCK_WE 時間前に、書き込みイネーブルが WE で有効になり ます。

• ク ロ ッ ク イベン ト 2 よ り TRCKO_DO 時間後に、データ CCCC がブロ ッ ク RAM の DO 出力で

有効になり ます。

クロック イベン ト 4

RST (同期セッ ト /リセッ ト )

同期セッ ト / リ セッ トでは、初期化パラ メータの値 SRVAL がブロ ッ ク RAM の出力ラ ッチに読み込

まれます。 RST はメモリの内容を変更しません。また、ADDR および DI 入力の影響も受けません。

• ク ロ ッ ク イベン ト 4 よ り TRCCK_RST 時間前に、同期セッ ト / リ セッ ト信号がブロ ッ ク RAM のRST 入力で有効 (High) になり ます。

• ク ロ ッ ク イベン ト 4 よ り TRCKO_DO 時間後に、SRVAL の 0101 がブロ ッ ク RAM の DO 出力

で有効になり ます。

クロック イベン ト 5

ディスエーブル

イネーブル信号 EN をディアサートする と、書き込み、読み出し、または RST が実行できなくなり

ます。 ディ スエーブルにしても、 メモ リの内容、 および出力ラ ッチの値は変わり ません。

• ク ロ ッ ク イベン ト 5 よ り TRCCK_EN 時間前に、イネーブル信号がブロ ッ ク RAM の EN 入力で

無効 (Low) になり ます。

• ク ロ ッ ク イベン ト 5 後は、 ブロ ッ ク RAM の DO 出力のデータは変化しません。

Page 33: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

Spartan-6 FPGA ブロッ ク RAM リソース ユーザー ガイド japan.xilinx.com 33UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のタイ ミング モデル

ブロック RAM のタイ ミング モデル

図 14 は、 ブロッ ク RAM のインプリ メンテーシ ョ ンに関連した遅延パスを示しています。 記述され

ているのは、オン/オフチップの もシンプルなパスです (パスはデザインによ り大き く異なり ます)。このタイ ミ ングモデルは、 ブロッ ク RAM のタイ ミ ング パラ メータの使用法および使用場所を示し

ています。

• NET = 可変インターコネク ト遅延

• TIOPI = パッ ドから IOB の I 出力までの遅延

• TIOOP = IOB の O 入力からパッ ドまでの遅延

• TBUFG = BUFG 遅延

X-Ref Target - Figure 14

図 14 : ブロック RAM のタイ ミ ング モデル

Block RAM

ug383_c1_13_012610

FPGA

[TIOPI + NET] + TRCCK_WEWrite Enable[TIOPI + NET] + TRCCK_ENEnable

[TIOPI + NET] + TRCCK_ADDRAddress

[TIOPI + NET] + TRDCK_DIData

[TBUFG + NET]

Clock[TIOPI + NET]

BUFG

TRCKO_DO + [NET + TIOOP]Data

[TIOPI + NET] + TRCCK_RSTSet/Reset

DO

DI

ADDR

WE

EN

RST

CLK

Page 34: Spartan-6 FPGA ブロック RAM リソースjapan.xilinx.com/support/documentation/user_guides/j_ug...RAM または 1 つの 18Kb RAM としてコンフィギュレーションできます。

34 japan.xilinx.com Spartan-6 FPGA ブロック RAM リ ソース ユーザー ガイ ド

UG383 (v1.2) 2010 年 2 月 23 日

ブロック RAM のタイ ミング モデル