JP6364015B2 - 構成可能な混載メモリシステム - Google Patents

構成可能な混載メモリシステム Download PDF

Info

Publication number
JP6364015B2
JP6364015B2 JP2015541879A JP2015541879A JP6364015B2 JP 6364015 B2 JP6364015 B2 JP 6364015B2 JP 2015541879 A JP2015541879 A JP 2015541879A JP 2015541879 A JP2015541879 A JP 2015541879A JP 6364015 B2 JP6364015 B2 JP 6364015B2
Authority
JP
Japan
Prior art keywords
data
port
block
memory
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015541879A
Other languages
English (en)
Other versions
JP2016504650A (ja
Inventor
スボード,クマール
シムキンス,ジェームス・エム
ストレイダー,トマス・エイチ
クライン,マシュー・エイチ
オグデン,ジェームス・イー
ドゥレイラジャン,ユーマ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2016504650A publication Critical patent/JP2016504650A/ja
Application granted granted Critical
Publication of JP6364015B2 publication Critical patent/JP6364015B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17732Macroblocks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/104Embedded memory devices, e.g. memories with a processing device on the same die or ASIC memory designs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Semiconductor Memories (AREA)

Description

実施例は、集積回路デバイス(「IC」)に関する。より特定的には、実施例は、ICのための構成可能(コンフィギュラブル)な混載メモリシステムに関する。
時間の経過とともに、ICはより「高密度」になってきている。すなわち、より多くのロジック構造が所与のサイズのICに実装されるようになってきている。そのため、電力消費がますます重要な問題になっている。さらに、時間の経過とともに、アプリケーションからの速度の要求が厳しくなってきている。そのため、動作周波数がますます重要な問題になっている。
したがって、電力消費を減少させ、および/または、より高い性能を有するICを提供することが望ましく、有用である。
1つ以上の装置は、概して、ICのための構成可能な混載メモリシステムに関する。
装置は、概して、メモリモジュールに関する。このメモリモジュールは、構成可能なハードマクロである。このメモリモジュールの一部は、カスケード型データと直接的なバス型データとの間で選択を行うように結合されたデータ入力マルチプレクサを含む。この部分はさらに、上記データ入力マルチプレクサからの出力を受取って格納するように結合されたメモリと、上記メモリからの読取データと上記カスケード型データとの間で選択を行うように結合されたレジスタ入力マルチプレクサとを含む。この部分はさらに、上記レジスタ入力マルチプレクサからの出力を受取るように結合されたレジスタと、上記メモリからの上記読取データと上記レジスタからの登録データとの間で選択を行うように結合されたラッチ/レジスタモードマルチプレクサと、上記カスケード型データと上記ラッチ/レジスタモードマルチプレクサからの出力との間で選択を行って出力データを提供するように結合されたデータ出力マルチプレクサとを含む。
別の装置は、概して、メモリモジュールに関する。このメモリモジュールは、構成可能なハードマクロである。このようなメモリモジュールには、データイン入力ポートと、第1のカスケード入力ポートと、カスケード/データイン選択ポートと、書込データ出力ポートとを各々が有する複数のデータインマルチプレクサが含まれる。複数のメモリブロックは、各々が、書込データ入力ポートと、第1のクロックポートと、読取データ出力ポートとを有する。複数のパイプラインマルチプレクサは、各々が、第1の読取データ入力ポートと、第2のカスケード入力ポートと、パイプライン選択ポートと、レジスタデータ出力ポートとを有する。複数のレジスタは、各々が、レジスタデータ入力ポートと、登録データ出力ポートと、第2のクロックポートとを有する。複数のデータアウトマルチプレクサは、各々が、第2の読取データ入力ポートと、登録データ入力ポートと、登録/未登録選択ポートと、ブロック出力ポートとを有する。複数の制御マルチプレクサは、各々が、第3のカスケード入力ポートと、ブロック入力ポートと、制御選択ポートと、データアウトポートとを有する。
さらに別の装置は、概して、第1および第2のメモリモジュールに関する。このような第1のメモリモジュールは、第1の構成可能なハードマクロとして提供され、このような第2のメモリモジュールは、第2の構成可能なハードマクロとして提供される。上記第1のメモリモジュールは、上記第2のメモリモジュールよりも高いレベルのスタックにある。上記第1のメモリモジュールは、互いに分離された第1の上位メモリブロックと第1の下位メモリブロックとを有する。上記第2のメモリモジュールは、第2の上位メモリブロックと第2の下位メモリブロックとを有する。上記第1の上位メモリブロックおよび上記第2の上位メモリブロックを含む第1のメモリ列を提供するために、上記第1の上位メモリブロックに関連付けられた上記第1のメモリモジュールの第1のカスケード入力ノードは、上記第2の上位メモリブロックに関連付けられた上記第2のメモリモジュールの第1のデータアウトノードに結合される。上記第1の下位メモリブロックおよび上記第2の下位メモリブロックを含む第2のメモリ列を提供するために、上記第1の下位メモリブロックに関連付けられた上記第1のメモリモジュールの第2のカスケード入力ノードは、上記第2の下位メモリブロックに関連付けられた上記第2のメモリモジュールの第2のデータアウトノードに結合される。
添付の図面は、例示的な実施例を示している。しかし、添付の図面は、示されている実施例を限定するように解釈されるべきではなく、単に説明および理解のためのものである。
列状のフィールド・プログラマブル・ゲート・アレイ(「FPGA」)アーキテクチャの例示的な実施例を示す簡略化されたブロック図である。 ICチップの例示的なメモリシステムを示すブロック図である。 ランダムアクセスメモリブロック(「BRAM」)モジュールの例示的な上位部分または下位部分を示すブロック/回路図である。 例示的なカスケード制御ブロックを示すブロック図である。 BRAMモジュールの例示的なスタックを示すブロック/回路図である。 例示的な復号テーブルを示すテーブル図である。 復号テーブルに従った例示的なスタックを示すブロック/回路図である。 例示的な4深度のワンホットカスケードモード(「カスケードモード」)を示す信号タイミング図である。 データアウトカスケードパイプラインモード(「パイプラインカスケードモード」)のために構成された例示的なスタックを示すブロック/回路図である。 図8の例示的なスタックのための、例示的な4深度のパイプラインカスケードモード(「カスケードモード」)を示す信号タイミング図である。 入力側および出力側でプログラム可能なファブリックリソースに結合された例示的な上位部分または下位部分スタックを示すブロック/回路図である。 黒い太線で概して示されるデータ経路を有する例示的なシストリックモードまたは先入れ先出しバッファ(「FIFO」)モードを示す図10のブロック/回路図である。 黒い太線で概して示されるデータ経路を有する例示的な低電力レジスタモードを示す図10のブロック/回路図である。 データ経路がスタックの最下位のBRAMモジュールのレジスタで起動され、このようなレジスタから上方にカスケード接続されること以外は、図12−1と同一のブロック/回路図である。 黒い太線で概して示されるデータ経路を有する例示的なラッチモードを示す図10のブロック/回路図である。 データ経路がスタックの最下位のBRAMモジュールのBRAMブロックで起動され、このようなBRAMブロックから上方にカスケード接続されること以外は、図13−1と同一のブロック/回路図である。 黒い太線で概して示されるデータ経路1400を有する例示的な多段レジスタモードを示す図10のブロック/回路図である。 データ経路がスタックの最下位のBRAMモジュールのBRAMブロックで起動され、このようなBRAMブロックから上方にカスケード接続されること以外は、図14−1と同一のブロック/回路図である。 黒い太線で概して示されるデータ経路を有する例示的なダブルデータレート/ベクトルメモリモード(「ベクトルモード」)を示す図10のブロック/回路図である。 黒い太線で概して示されるデータ経路を有する別の例示的なベクトルモード、すなわち「荷重ベクトルモード」を示す図10のブロック/回路図である。 黒い太線で概して示されるデータ経路を有する別の例示的なベクトルモード、すなわち「シフトベクトルモード」を示す図10のブロック/回路図である。 黒い太線で概して示されるデータ経路1700のためのシフトベクトルモードのための別の構成を示す図17−1のブロック/回路図である。 例示的な二次元アレイシストリックスイッチを示すブロック/回路図である。 FIFOカスケードモードのための、複数のスタックから形成され得るFIFOの例示的なチェーン(「チェーン」)を示すブロック図である。 FIFOカスケードモードのための、複数のスタックから形成され得るFIFOの別の例示的なチェーンを示すブロック図である。
以下の説明では、具体的な実施例をより完全に説明するために多数の具体的詳細について説明している。しかし、以下に記載されている全ての具体的詳細がなくても1つ以上の実施例を実施できるということは当業者に明らかであろう。他の例では、1つ以上の実施例を曖昧にしないように周知の特徴については詳細に説明しなかった。図解を容易にするために、異なる図の中で同一の数字表示を使用して同一の要素を指しているが、代替的な実施例では、それらの要素は異なっていてもよい。
いくつかの図に例示的に示されている例示的な実施例を説明する前に、さらなる理解のために概略を紹介する。
ICにおいて専用のメモリモジュールを使用することは、これまでは、ルーティングが複雑であることを意味していたかもしれず、性能が損なわれていた。さらに、ICにおいてこのような専用のメモリモジュールを使用することは、これまでは、複数のこのようなメモリモジュールの動作時の粒度または選択度の欠如により全てのこのような複数のメモリモジュールに同時に電力を供給する必要があることを意味していたかもしれない。上記の一般的理解を念頭に置いて、メモリシステムのメモリモジュールのためのさまざまな実施例について以下で大まかに説明する。
これらのメモリモジュールは、メモリアレイに加えて、レジスタおよびマルチプレクサを含み、これらは全て構成可能(コンフィギュラブル)な(またはプログラム可能な)ハードマクロとして提供される。このようなハードマクロは、コンフィギュレーションメモリセルを使用して構成可能である。メモリモジュールのためのハードマクロを提供することによって、ルーティングの複雑さを減少させることができ、性能を向上させることができる。そのような線に沿って、このようなメモリモジュールのスタックを形成するためのプログラム可能なリソースファブリックにおけるルーティングを回避することができる。さらに、いくつかの専用の回路リソースを追加することにより、複数の動作モードを追加することができる。
上記の実施例のうちの1つ以上は特定のタイプのICを使用して例示されるので、このようなICについて以下で詳細に説明する。しかし、専用のメモリモジュールを有するいかなるタイプのICも、本明細書に記載されている実施例のうちの1つ以上から利益を得ることができる。さらに、以下の説明は、スタティック・ランダム・アクセス・メモリ(「SRAM」)セルを有し得る専用のランダム・アクセス・メモリ・ブロック(「BRAM」)に関するものであるが、他のタイプのメモリセルを有する他のタイプのメモリモジュールが使用されてもよい。
プログラマブル・ロジック・デバイス(「PLD」)は、特定のロジック機能を実行するようにプログラム可能な周知のタイプの集積回路である。PLDの1つのタイプであるフィールド・プログラマブル・ゲート・アレイ(「FPGA」)は、典型的には、プログラム可能なタイルのアレイを含んでいる。これらのプログラム可能なタイルは、例えば入力/出力ブロック(「IOB」)、コンフィギュラブル・ロジック・ブロック(「CLB」)、専用のランダム・アクセス・メモリ・ブロック(「BRAM」)、乗算器、デジタル信号処理ブロック(「DSP」)、プロセッサ、クロックマネージャ、遅延ロックループ(「DLL」)などを含み得る。本明細書で使用される「含む」および「含んでいる」は、非限定的に含んでいることを意味している。
各々のプログラム可能なタイルは、典型的には、プログラム可能なインターコネクトと、プログラム可能なロジックとを両方とも含んでいる。プログラム可能なインターコネクトは、典型的には、プログラマブル・インターコネクト・ポイント(「PIP」)によって相互接続されたさまざまな長さの多数のインターコネクト線を含んでいる。プログラム可能なロジックは、例えばファンクションジェネレータ、レジスタ、演算ロジックなどを含み得るプログラム可能なエレメントを使用して、ユーザ設計のロジックを実装している。
プログラム可能なインターコネクトおよびプログラム可能なロジックは、典型的には、コンフィギュレーションデータのストリームを、プログラム可能なエレメントが如何に構成されるかを規定する内部コンフィギュレーションメモリセルにロードすることによってプログラムされる。コンフィギュレーションデータは、外部デバイスによって、メモリから(例えば外部PROMから)読取られたり、FPGAに書込まれたりし得る。そして、個々のメモリセルの集合状態がFPGAの機能を決定する。
PLDの別のタイプは、複合プログラマブル・ロジック・デバイス、すなわちCPLDである。CPLDは、インターコネクト・スイッチ・マトリックスによって互いにおよび入力/出力(「I/O」)リソースに接続された2つ以上の「ファンクションブロック」を含んでいる。CPLDの各ファンクションブロックは、プログラマブル・ロジック・アレイ(「PLA」)およびプログラマブル・アレイ・ロジック(「PAL」)デバイスで使用されるものと同様の2レベルAND/OR構造を含んでいる。CPLDでは、コンフィギュレーションデータは、典型的には、不揮発性メモリにオンチップで格納されている。いくつかのCPLDでは、コンフィギュレーションデータは、不揮発性メモリにオンチップで格納され、次いで初期のコンフィギュレーション(プログラミング)シーケンスの一部として揮発性メモリにダウンロードされる。
全てのこれらのプログラマブル・ロジック・デバイス(「PLD」)では、デバイスの機能性は、その目的でデバイスに提供されるデータビットによって制御される。データビットは、揮発性メモリ(例えばFPGAおよびいくつかのCPLDにあるようなスタティックメモリセル)、不揮発性メモリ(例えばいくつかのCPLDにあるようなフラッシュメモリ)またはその他のタイプのメモリセルに格納され得る。
他のPLDは、デバイス上でさまざまなエレメントをプログラム可能に相互接続する金属層などの処理層を設けることによってプログラムされる。これらのPLDは、マスクプログラマブルデバイスとして知られている。また、PLDは、他の方法で、例えばヒューズまたはアンチヒューズ技術を使用して、実装されてもよい。「PLD」および「プログラマブル・ロジック・デバイス」という用語は、これらの例示的なデバイスを含むがこれらに限定されるものではなく、一部だけがプログラム可能なデバイスも包含する。例えば、PLDの1つのタイプは、ハードコードされたトランジスタロジックと、当該ハードコードされたトランジスタロジックをプログラム可能に相互接続するプログラム可能なスイッチファブリックとの組合わせを含んでいる。
上記のように、アドバンストFPGAは、いくつかの異なるタイプのプログラム可能なロジックブロックをアレイに含み得る。例えば、図1は、多数の異なるプログラム可能なタイルを含むFPGAアーキテクチャ100を示し、当該FPGAアーキテクチャ100は、マルチギガビット送受信機(「MGT」)101と、コンフィギュラブル・ロジック・ブロック(「CLB」)102と、ランダム・アクセス・メモリ・ブロック(「BRAM」)103と、入力/出力ブロック(「IOB」)104と、コンフィギュレーションおよびクロッキングロジック(「CONFIG/CLOCKS」)105と、デジタル信号処理ブロック(「DSP」)106と、専用入力/出力ブロック(「I/O」)107(例えばコンフィギュレーションポートおよびクロックポート)と、デジタルクロックマネージャ、アナログ・デジタル変換器、システムモニタリングロジックなどの他のプログラム可能なロジック108とを含んでいる。いくつかのFPGAは、専用のプロセッサブロック(「PROC」)110も含んでいる。
いくつかのFPGAでは、各々のプログラム可能なタイルは、プログラム可能なインターコネクト・エレメント(「INT」)111を含み、インターコネクト・エレメント111は、各々の隣接するタイルにおける対応のインターコネクト・エレメントへの/からの標準的な接続を有する。したがって、プログラム可能なインターコネクト・エレメントは、まとまって、示されているFPGAのためのプログラム可能なインターコネクト構造を実現する。図1の上部に含まれる例によって示されるように、プログラム可能なインターコネクト・エレメント111は、同一のタイル内に、プログラム可能なロジックエレメントへの/からの接続も含んでいる。
例えば、CLB102は、ユーザのロジックを実装するようにプログラムされ得るコンフィギュラブル・ロジック・エレメント(「CLE」)112と、単一のプログラム可能なインターコネクト・エレメント(「INT」)111とを含み得る。BRAM103は、1つ以上のプログラム可能なインターコネクト・エレメントに加えて、BRAMロジックエレメント(「BRL」)113を含み得る。典型的には、タイルに含まれるインターコネクト・エレメントの数は、タイルの高さによって決まる。示されている実施例では、BRAMタイルは、5つのCLBと同一の高さを有しているが、他の数(例えば4つ)も使用可能である。DSPタイル106は、適切な数のプログラム可能なインターコネクト・エレメントに加えて、DSPロジックエレメント(「DSPL」)114を含み得る。IOB104は、例えば、プログラム可能なインターコネクト・エレメント111の1つのインスタンスに加えて、入力/出力ロジックエレメント(「IOL」)115の2つのインスタンスを含み得る。当業者に明らかであるように、例えばI/Oロジックエレメント115に接続される実際のI/Oパッドは、典型的には、入力/出力ロジックエレメント115の領域に限定されない。
示されている実施例では、(図1に示される)ダイの中央付近の水平な領域が、コンフィギュレーション、クロックおよび他の制御ロジックに使用される。この水平な領域または列から延びる垂直な列109は、FPGAの幅にわたってクロックおよびコンフィギュレーション信号を分配させるために使用される。
図1に示されるアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する規則的な列状構造を乱すさらなるロジックブロックを含んでいる。さらなるロジックブロックは、プログラム可能なブロックおよび/または専用のロジックであってもよい。例えば、プロセッサブロック110は、CLBおよびBRAMのいくつかの列にまたがっている。
なお、図1は、単に例示的なFPGAアーキテクチャを示すことを意図している。例えば、ある行の中のロジックブロックの数、行の相対幅、行の数および順序、行に含まれるロジックブロックのタイプ、ロジックブロックの相対的サイズ、および図1の上部に含まれるインターコネクト/ロジックの実装は、単に例である。例えば、実際のFPGAでは、ユーザのロジックの効率的な実装を容易にするために、典型的にはCLBが現われるたびにCLBの2つ以上の隣接する行が含まれるが、隣接するCLB行の数は、FPGAの全体サイズによってさまざまである。
図2は、ICチップの例示的なメモリシステム200を示すブロック図である。この例では、互いに対してカスケード接続された4つのBRAMモジュール250があるが、他の例では、互いに対してカスケード接続された4つのBRAMモジュール250ではなくわずか2つ以上のBRAMモジュール250があってもよい。BRAMモジュール250は、それぞれ構成可能(コンフィギュラブル)なハードマクロとして提供され得る。すなわち、BRAMモジュール250は、いくつかの信号状態を設定するためのコンフィギュレーションメモリセルを有するICチップにおける混載回路または専用の回路として提供され得る。したがって、メモリシステム200は、図1のFPGA100のBRAM103の列の一部であり得る。このような構成可能なハードマクロの列を提供することによって、より遅いプログラム可能なファブリックリソースをデータが通過するようにする必要なしに、このような列内でのデータの並列カスケーディングを可能にする構成を提供することができる。
各々のBRAMモジュール250は、互いに分離された上位メモリブロック201と下位メモリブロック202とを有している。この例では、4つのBRAMモジュール250−0〜250−3があるので、上位メモリブロック201は、それぞれのBRAMモジュール250−0〜250−3に対応してメモリブロック201−0〜201−3と表わされる。同様に、下位メモリブロック202は、それぞれのBRAMモジュール250−0〜250−3に対応してメモリブロック202−0〜202−3と表わされる。
BRAMモジュール250ならびに関連のメモリブロック201および202は、カスケード接続されたBRAMモジュールまたはメモリブロックの列における最初のBRAMモジュールまたはメモリブロックから最後のBRAMモジュールまたはメモリブロックまで、−0〜−3と表わされる。この例では、BRAMモジュール250の上位メモリブロック201は、カスケード結合されてメモリ列203を提供し、下位メモリブロック202は、カスケード結合されてメモリ列204を提供する。
各々のメモリ列は、別々のデータおよびアドレスバスを有し得る。この例では、メモリ列203は、データバス206と、アドレスバス205とを有している。アドレスバス205は、メモリブロック201−0〜201−3の各書込アドレスポートAに共通して結合されている。この例では、データバス206は、メモリブロック201−0〜201−3の各データイン・ポートDに共通して結合されている。別の例では、データバス206は、共通して結合される必要はなく、メモリブロック201−0〜201−3の各データイン・ポートDは、別々の直接的なデータ入力を受取ってもよい。
同様に、この例では、メモリ列204は、データバス208と、アドレスバス207とを有している。アドレスバス207は、メモリブロック202−0〜202−3の各書込アドレスポートAに共通して結合されている。この例では、データバス208は、メモリブロック202−0〜202−3の各データイン・ポートDに共通して結合されている。ここでも、別の例では、データバス208は、共通して結合される必要はなく、メモリブロック202−0〜202−3の各データイン・ポートDは、別々のデータ入力を受取ってもよい。
メモリ列203は、読取アドレスバス241を有し、メモリ列204は、読取アドレスバス242を有している。アドレスバス241は、メモリブロック201−0〜201−3の各読取アドレスポートAに共通して結合され得る。アドレスバス242は、メモリブロック202−0〜202−3の各読取アドレスポートAに共通して結合され得る。
BRAMモジュール250の各メモリブロック201および202は、それぞれの制御マルチプレクサ217に結合され得る。例えば、上位メモリブロック201−0は、制御マルチプレクサ217のインスタンスに結合され得て、下位メモリブロック202−0は、制御マルチプレクサ217の別のインスタンスに結合され得る。
各々のメモリブロック201および202は、制御マルチプレクサ217の対応するインスタンスのブロック入力ポートにデータを提供するためのそれぞれのブロック出力ポート219を有し得る。各々の制御マルチプレクサ217は、下位の最近傍のBRAM250からデータを受取るためのカスケード入力ポート215をさらに含み得る。例えば、BRAM250−1は、ブロック出力ポート219を介してBRAM250−1の制御マルチプレクサ217にデータを提供し得る上位メモリブロック201−1を有し、このような制御マルチプレクサ217は、BRAM250−1のカスケード入力ノード215に結合され得て、このようなカスケード入力ノード215は、BRAM250−0のメモリブロック201−0に結合された制御マルチプレクサ217のデータアウトポートからの上位データアウト213Uと同一のノードである。同様に、例えば、BRAM250−1は、ブロック出力ポート219を介してBRAM250−1の制御マルチプレクサ217の別のインスタンスにデータを提供し得る下位メモリブロック202−1を有し得て、このような制御マルチプレクサ217は、BRAM250−1のカスケード入力ノード215に結合され得て、このようなカスケード入力ノード215は、BRAM250−0のメモリブロック202−0に結合された制御マルチプレクサ217のデータアウトポートからの下位データアウト213Lと同一のノードである。明確にする目的および非限定的な目的で、メモリ列203および204内の他の下位から上位の最近傍のメモリブロックについては同様の説明は繰返さない。
信号の伝達に関連付けられた単一線が例示的に示されているが、多くのインスタンスでは、このような単一線は、並列のビットバスを表わし、そのため複数の伝達線を表わし得る。例えば、BRAMモジュール250は、72ビットのデータ出力幅を有し得るが、このようなデータ出力幅は、各々36ビットの2つの等しい部分に分割されてもよい。このような部分のうちの1つの部分が、本明細書では「上位」部分と呼ばれ、メモリ列203に関連付けられ得て、このような部分のうちの別の部分が、本明細書では「下位」部分と呼ばれ、メモリ列204に関連付けられ得る。他のビット幅が使用されてもよいので、上記のビット幅は、明確にする目的、例示の目的および非限定的な目的で使用されている。したがって、例示の目的で、ビット0〜35が下位部分と呼ばれ、ビット36〜71が上位部分と呼ばれる。このような命名と整合性がとれるように、上位メモリブロック201に関連付けられた制御マルチプレクサ217の出力は、データアウト213という参照番号の後に「U」を付けて、すなわちデータアウト213Uと表わされる。同様に、下位メモリブロック202に関連付けられた制御マルチプレクサ217の出力は、データアウト213という参照番号の後に「L」を付けて、すなわちデータアウト213Lと表わされる。
各々のBRAMモジュール250は同一のパターンを何度も複製して形成され得るので、スタックの最初のBRAMモジュール250−0は、任意にカスケード入力211を有し得る。しかし、スタックの最初のBRAMモジュール250に入力されるカスケード型データはなくてもよく、したがって、このようなカスケード入力211は、例えば接地または供給電圧に結合されてもよい。同様に、各々のBRAMモジュール250は同一のパターンを何度も複製して形成され得るので、スタックの最後のBRAMモジュール250−xは、任意にデータアウト213のカスケード出力オフを有し得る。しかし、このようなスタックの別のBRAMモジュール250に出力されるカスケード型データはなくてもよく、したがって、たとえそのためのカスケード出力ノード/トレースがあったとしても、データアウト213のこのようなカスケード出力オフは、例えばこのようなスタックの別のBRAMモジュール250に結合されなくてもよい。
図3−1は、BRAMモジュール250の例示的な上位部分または下位部分を示すブロック/回路図である。図3−2は、例示的なカスケード制御ブロック370を示すブロック図である。図4は、BRAMモジュール250の例示的なスタック400を示すブロック/回路図である。図2〜図4を同時に参照して、BRAMモジュール250およびスタック400についてさらに説明する。
この例では、BRAMモジュール250の上位部分または下位部分は、BRAMブロック313と、レジスタ335と、マルチプレクサ305,325,345および217とを含む。したがって、上位部分および下位部分を有する各々のBRAMモジュール250は、複数のBRAMブロック313と、レジスタ335と、2入力マルチプレクサ305,325,345および217の組とを含む。別の例では、マルチプレクサ217は3入力マルチプレクサであってもよく、この例では、マルチプレクサ345は省略されてもよい。しかし、明確にする目的、例示の目的および非限定的な目的で、2入力マルチプレクサ305,325,345および217を使用することが想定されるものとする。
マルチプレクサ305は、データインマルチプレクサと呼ぶことができ、各々のこのようなマルチプレクサ305は、複数のポートを有しており、当該複数のポートは、データイン入力ポート301、カスケード入力ポート302、カスケード/データイン選択ポート303、および書込データ出力ポート304と呼ぶことができる。カスケード/データイン選択ポート303は、コンフィギュレーションメモリセル361に結合され得る。コンフィギュレーションメモリセル361は、データインマルチプレクサ305がデータイン入力ポート301の入力データまたはカスケード入力ポート302のカスケード入力データ213−(x−1)(ここで、「x」はBRAMモジュールレベルを指す)の間で選択を行って、このような選択されたデータを書込データ出力ポート304を介して出力するようにプログラムされ得る。したがって、コンフィギュレーションメモリセル361は、データインマルチプレクサ305の出力を制御するために使用可能である。
各々のBRAMブロック313は、書込データ入力ポート312と、クロックポート311と、読取データ出力ポート314とを有し得る。クロックポート311に提供されるクロック信号311Sを使用して、BRAMブロック313は、同期メモリとして動作し得る。BRAMブロック313は、明確にする目的および非限定的な目的で概して図示されていない他のポートの中で、書込アドレスポート、書込イネーブルポート、読取イネーブルポートおよび読取アドレスポートなどのさらなるポートを有し得る。そのような線に沿って、BRAMブロック313は、FPGAの公知のBRAMであり得る。例えば、公知のBRAMは、4つの9Kビットメモリアレイを有していてもよく、各々のこのようなメモリアレイは、1〜18ビットを選択的に出力し得て、このような出力は、連結されて72ビット幅のバスを提供し得る。明確にする目的、例示の目的および非限定的な目的で、36ビット幅の出力がBRAMブロック313から提供され、このようなBRAMブロック313は、このようなメモリアレイのうちの2つに関連付けられることが想定されるものとする。しかし、他の例では、非限定的に他のメモリアレイサイズおよび/またはビット幅サイズを含むBRAMブロック313の他の構成が使用されてもよい。
書込データ入力ポート312は、書込データ出力ポート304から書込データを受取るように結合され得る。BRAMブロック313から読取られたデータは、読取データとして読取データ出力ポート314から出力され得る。
マルチプレクサ325は、パイプラインマルチプレクサと呼ぶことができ、各々のこのようなマルチプレクサ325は、複数のポートを有しており、当該複数のポートは、読取データ入力ポート321、カスケード入力ポート322、パイプライン選択ポート323、およびレジスタデータ出力ポート324と呼ぶことができる。読取データ入力ポート321は、読取データ出力ポート314から出力された読取データを受取るように結合され得る。パイプライン選択ポート323は、カスケード制御ブロック370から出力された「selx」信号323Sを受取るように結合され得て、ここで、「sel」は選択を指し、「x」はここでもBRAMモジュールレベルを指し、この例では0〜3の整数である。そのような線に沿って、BRAMブロック313はBRAMxと表わされる。「selx」信号323Sに応答して、パイプラインマルチプレクサ325は、レジスタデータと呼ぶことができる読取データを出力し得て、またはレジスタデータ出力ポート324を介してカスケード入力データ213−(x−1)を出力し得る。
各々のレジスタ335は、レジスタデータ入力ポート331と、登録データ出力ポート333と、クロックポート332とを有し得る。クロックポート332は、レジスタクロック信号332Sを受取るように結合され得る。レジスタクロック信号332Sおよびクロック信号311Sは、異なるクロック信号であってもよく、または同一のクロック信号であってもよい。レジスタデータ入力ポート331は、レジスタデータ出力ポート324からレジスタデータを受取るようにレジスタデータ出力ポート324に結合され得る。レジスタ335に格納されたレジスタデータは、登録データ出力ポート333を介して、レジスタクロック信号332Sに応答してクロックアウトされ得る。
マルチプレクサ345は、レジスタ/ラッチモードまたはデータアウトマルチプレクサと呼ぶことができ、このようなマルチプレクサ345の各々は、複数のポートを有しており、当該複数のポートは、読取データ入力ポート341、登録データ入力ポート342、登録/未登録選択ポート343、およびブロック出力ポート219と呼ぶことができる。読取データ入力ポート341は、BRAMブロック313から読取データを受取るように読取データ出力ポート314に結合され得る。登録データ入力ポート342は、レジスタ335からクロックアウトされた登録データを受取るように登録データ出力ポート333に結合され得る。
登録/未登録選択ポート343は、コンフィギュレーションメモリセル362に結合され得る。コンフィギュレーションメモリセル362は、データアウトマルチプレクサ345が読取データ入力ポート341の読取データまたはレジスタデータ入力ポート342の登録データの間で選択を行って、このような選択されたデータをブロック出力ポート219を介して出力するようにプログラムされ得る。したがって、コンフィギュレーションメモリセル362は、データアウトマルチプレクサ345の出力を制御するために使用可能である。
この例では、上位または下位メモリブロック201は、BRAMブロック313と、レジスタ335と、マルチプレクサ305,325および345とを含んでいる。したがって、データアウトマルチプレクサ345からの出力は、ブロックデータ出力と呼ぶことができる。BRAMモジュール250は、出力バスの上位部分と下位部分とに分割された出力バスを有し得るので、上位メモリブロック201Uのブロック出力ポート219は、このようなBRAMモジュール250のこのような出力バスの上位部分のためのものであり得て、下位メモリブロック201Lのブロック出力ポート219は、このようなBRAMモジュール250のこのような出力バスの下位部分のためのものであり得る。
マルチプレクサ217は、制御マルチプレクサと呼ばれ、このようなマルチプレクサ217の各々は、複数のポートを有しており、当該複数のポートは、カスケード入力ポート352、ブロック入力ポート351、制御選択ポート353、およびデータアウトポート354と呼ぶことができる。ブロック入力ポート351は、ブロック出力ポート219から出力されたブロックデータを受取るように結合され得る。カスケード入力ポート352は、カスケード入力データ213−(x−1)を受取るように結合され得る。制御選択ポート353は、制御選択信号、すなわち「cntlx」信号353Sを受取るように結合され得て、ここで、「cntl」は制御を指し、「x」はここでもBRAMモジュールレベルを指す。「cntlx」信号353Sに応答して、制御マルチプレクサ217は、ブロック入力ポート351のブロックデータ出力またはカスケード入力ポート352のカスケード入力データ213−(x−1)の間で選択を行って、このような選択されたデータをデータアウトポート354を介して出力し得る。ここでも、この例におけるN幅のバスは36ビットであると想定され、したがって、例えばデータアウトポート354は36ビット幅のバスであろう。
そのような線に沿って、カスケード入力ポート302,332および352は、最近傍の下位BRAMモジュールレベルからカスケード入力データ213−(x−1)を受取るようにBRAMモジュールレベルのカスケード入力ノード215xに共通して結合され得る。BRAMモジュール250のバスの上位部分または下位部分のためのものであり得るデータアウト213は、最近傍の下位BRAMモジュールレベルからのカスケード入力データ213−(x−1)または現在のBRAMモジュールレベルのメモリブロック201xからのブロックデータ出力であり得る。BRAMモジュール250−0などのBRAMモジュール250のスタック400の最下位レベルは、例えば接地401などの静電圧に結合された上位カスケード入力ノード215Uおよび下位カスケード入力ノード215Lを有し得る。
BRAMモジュール250の上位メモリブロック201Uのカスケード入力ポート302,332および352は、上位カスケード入力ノード215Uに結合され得る。このようなBRAMモジュール250の下位メモリブロック201Lのカスケード入力ポート302,332および352は、下位カスケード入力ノード215Lに結合され得る。BRAMモジュール250−3などのBRAMモジュール250のスタック400の最上位レベルは、このようなスタック400では後続のBRAMモジュールレベルがないので、このようなスタック400の後続のBRAMモジュールレベルへのカスケード入力に使用されることのない上位データアウト213Uおよび下位データアウト213Lを有し得る。現在のまたは上位のBRAMモジュールレベルのカスケード入力ノード215は、最近傍の下位BRAMモジュールレベルのデータアウトポート354と同一のノードであってもよい。上記のこのようなBRAMモジュールレベル間結合は、スタック400の複数のBRAMモジュールレベル間結合のためのものであってもよい。
4つのレベルのBRAMモジュール250が例示的に示されているが、わずか1つのBRAMモジュール250が一度に使用されてもよい。さらに、スタック400について4つのレベルのBRAMモジュール250が例示的に示されているが、スタック400は、2つ以上のレベルのBRAMモジュール250を有していてもよく、そのため、4つのレベルのBRAMモジュール250よりも少ないレベルまたは多いレベルのBRAMモジュール250が使用されてもよい。
上位メモリブロック201のブロック出力ポート219は、BRAMモジュール250の出力バスの第1の部分のためのものであり得て、下位メモリブロック202のブロック出力ポート219は、このようなBRAMモジュール250の出力バスの第2の部分のためのものであり得る。例えば図1のFPGA100などのIC上にスタック400を設けるために、このような構成が複数のBRAMモジュール250について繰返され得る。したがって、メモリ列203または204は、BRAMモジュール250のそれぞれ上位部分および下位部分のスタック400を設けるために使用され得て、メモリシステム200内での「垂直な」データバス用の、例えば一連の並列のデータストリームのように、データが、構成可能なハードマクロメモリシステム200内で下位BRAMモジュールレベルから上位BRAMモジュールレベルまで並列にカスケード接続され得る。しかし、例えば1つ以上の上位メモリブロック201に関連付けられた1つ以上のデータアウトポート354からの並列のデータアウト213は、複数のデータアウト213Uのように、プログラム可能なファブリックリソースに複数の並列のデータストリームを並列に提供するために使用され得る。同様に、例えば1つ以上の下位メモリブロック202に関連付けられた1つ以上のデータアウトポート354からの並列のデータアウト213は、複数のデータアウト213Lのように、プログラム可能なファブリックリソースに複数の並列のデータストリームを提供するために使用され得る。このような構成では、例えばBRAMモジュール250−3の出力バスの上位部分と、例えばBRAMモジュール250−2の出力バスの上位部分との組合わせは、メモリシステム200からの「水平な」データバスのために、プログラム可能なファブリックリソースに出力バスを提供し得る。
カスケード制御ブロック370は、複数の制御信号371を受取るように結合され得て、応答して、selx信号323SUおよび323SLならびにcntlx信号353SUおよび353SLを提供するように構成され得る。信号323SUおよび353SUは、BRAMモジュール250の上位部分に提供され、信号323SLおよび353SLは、BRAMモジュール250の下位部分に提供される。制御信号の例としては、aが挙げられ得るが、これに限定されるものではない。
要約すると、複数のBRAMは、例えば1から36ビットまでを構成可能であり得るデータをボトムアップ方向にカスケードするように直列に結合されて、より大きなメモリブロックを効果的に作製し得る。これまでは、従来のBRAMのこのような直列連結は、プログラム可能なファブリックリソース、すなわちルックアップテーブル(「LUT」)を使用して行われていたため、遅く、消費電力が多く、および/または、消費されるプログラム可能なファブリックリソースが多かった。そのような線に沿って、先入れ先出しバッファ(「FIFO」)コンフィギュレーションが使用可能であり、このような構成では、BRAMモジュールの列全体が構成可能なハードマクロとして結合され得て、深いFIFOを提供し、当該FIFOは、スタック400を結合してこのようなFIFOを提供するプログラム可能なファブリックリソースを使用しなければならないことによって性能が制限されることはない。ロジックおよびルーティングは、ハードマクロメモリシステム200に対してローカルであるので、このようなFIFOは、従来のBRAMの連結を行ってこのような深いFIFOを提供するためにプログラム可能なファブリックリソースを使用していた場合よりも大幅に高い周波数で動作することができる。さらに、BRAMモジュールの半分は、一度に使用されてもよい。例えば、データは、BRAMモジュールバスの最上位部分のみから出力されてもよい。同様に、データは、BRAMモジュールバスの最下位部分のみから出力されてもよい。さらに、BRAMモジュールバスの両方の部分が、同時であるが互いに独立して使用されてもよい。上記の説明は、ボトムアップ方向にデータをカスケードするためのものであったが、他の構成では、データは、トップダウン方向および/またはボトムアップ方向に移動されてもよい。直列カスケーディングのための全ての信号ルーティングおよび制御ロジックは、メモリシステムとして提供されるハードマクロ内に実装され得るので、速度を含むがこれに限定されない性能を向上させることができる。さらに、以下でさらに詳細に説明するように、低電力モードが使用可能であり、またはより特定的には、電力と性能とのバランスをとるようにデータ幅が個々に調整され得る。そのような線に沿って、BRAMメモリモジュールの一部が一度に使用されてもよいということが理解されるべきである。データは接続部からプログラム可能なファブリックリソースに個々に提供され得るが、カスケード接続されたBRAMモジュールにわたる共通の入力が、このようなプログラム可能なファブリックリソースのプログラム可能なインターコネクトを使用して接続されてもよい。さらに、このようなカスケーディングは、エラー修正符号化とともに使用されてもよい。
BRAMモジュール250は、単独でも組合わせても、複数のモードのうちのいずれかのモードのために構成可能であり得る。一般に、これらのモードは、カスケードモードおよびメモリモードとして分類され得て、このようなモードの変形例について以下でさらに詳細に説明する。
図5は、例示的な復号テーブル500を示すテーブル図である。図6は、復号テーブル500に従った例示的なスタック400を示すブロック/回路図である。スタック400はBRAMモジュール250の上位部分のためのものであるが、BRAMモジュール250の下位部分も同様に使用されてもよい。明確にする目的および非限定的な目的で、図6ではBRAMモジュール250は簡略化されている。図1から図6を同時に参照して、復号テーブル500についてさらに説明する。
復号テーブル500は、4つのカスケード接続されたBRAMモジュール250のためのイネーブル信号510〜513(「EN0〜EN3」)および選択信号353S0〜353S3(「S0〜S3」)を復号するためのものである。列501は、現在の動作でデータがどのBRAMブロック313にあるかを示している。イネーブル信号510〜513についての列は、列501のBRAMブロック313の状態を示している。同様に、列353S0〜353S3は、列501の対応するBRAMブロック313の選択信号の状態を示している。復号テーブル500における論理1は、それに関連付けられた信号がアサートされることを示し、復号テーブル500における論理0は、それに関連付けられた信号がアサートされないことを示している。復号テーブル500における「X」は、それに関連付けられた信号が論理0であるか1であるかが問題にならない(「無関係」)ことを示している。
BRAMブロック313がFPGAの公知のBRAMであり得るので、このようなBRAMブロックは、SRAMセルの4つの9キロビット(「K」)メモリアレイを有し得る。これらのアレイのうちのどれを使用するかを選択するために、2to4復号に対してさらなる2つのアドレスビットが提供され得る。このようなBRAMは、イネーブル信号に加えて他の公知の信号を有している。
一般に、復号テーブル500は、BRAMモジュール250の「ワンホット」コンフィギュレーションのためのものである。このモードでは、下位レベルのBRAMモジュールの出力は、上位レベルのBRAMモジュールの出力によって多重化され、上位レベルのBRAMモジュールの出力は、順次、次の上位レベルのBRAM出力によって多重化され得る。このタイプの直列カスケーディングは、使用されるルーティング線を少なくすることができ、2つのBRAMモジュール250からメモリ列203または204における同数のBRAMモジュール250に変更可能である。
本明細書に記載されているように、BRAMモジュール250は、異なるBRAMモジュールからのデータアウトを多重化するための複数の方法を提供する。直列カスケーディングでは、コンフィギュレーションメモリセルのうちの1つ以上は、カスケード制御ブロック370と、対応するBRAMブロック313から読取られたデータまたは下位レベルのBRAMモジュールのカスケード出力から得られたデータの間で選択を行うためのマルチプレクサ217とに結合され得る。そのような線に沿って、BRAMモジュール250は、連続データフローモードのために構成され得る。
デフォルトオプションは、復号テーブル500を参照して例示的に示されるように、メモリブロック201にそれぞれ提供されるBRAMブロックイネーブル信号510〜513が、カスケード制御ブロック370のインバータ601に同様に提供されて、データ出力の多重化を実行するために使用されるようにすることを可能にするためのものであり得る。コンフィギュレーションメモリセル602は、選択信号S0〜S3をそれぞれ提供するように、対応するインバータ601からの出力に応答してそれぞれプログラムされ得る。そのような線に沿って、イネーブル信号510〜513は、対応するカスケードイネーブル信号であると考えることができる。選択信号S0〜S3は、対応する制御またはカスケードマルチプレクサ217に提供され得る。
複数のBRAMモジュール250がカスケード接続されると、復号テーブル500に関してBRAMブロックイネーブル信号510〜513が1つだけ一度にアクティブになる。すなわち、これは「ワンホット」スキームである。アクティブになった、またはアサートされたBRAMブロックイネーブル信号は、データが読取られるBRAMブロック313のためのものであり得て、したがって、このようなBRAMブロック313のための、BRAMブロックイネーブル信号510〜513のうちの1つのBRAMブロックイネーブル信号は、論理1に設定され得る。全ての他のBRAMブロックイネーブル信号510〜513は、このとき論理0状態に設定され得る。カスケード制御ブロック370は、カスケード多重化を制御するように内部メモリシステム200を設定するために、このような復号を使用し得る。例えば、BRAMブロックイネーブル信号510〜513が論理0に設定されると、出力データは、対応するBRAMブロック313からではなく、カスケードされた入力から来るであろう。そのような線に沿って、ユーザは、各々のアサートされたBRAMブロックイネーブル信号に関連付けられた各々のカスケード接続されたBRAMブロック313に、復号されたアドレスを提供し得る。復号テーブル500は、内部マルチプレクサ制御シグナリングを生成して連続的なBRAMモジュール250の制御マルチプレクサ217からの出力を制御するために、異なるBRAMブロック313についてイネーブル信号510〜513が連続的にアサートされ得ることを示している。
BRAMブロックを選択的に活性化するためにワンホットスキームを使用することにより、電力を効率的に使用することができる。なぜなら、有用なデータを有するBRAMブロック313のみが一つずつアクセスされ得るからである。レジスタモードでは、カスケード多重化に使用される選択信号は、1クロックサイクルだけ遅延され得て、すなわち、これは1クロックサイクルのレイテンシである。カスケード制御ブロック370に提供される内部カスケードA/B信号および/または外部カスケード選択A/B信号が、カスケード多重化を制御するためにアサートされ得る。ワンホットカスケードモードの間は、BRAMブロック313がカスケードデータアウトイネーブル・コンフィギュレーションメモリセルを論理1に設定すると、カスケードチェーンを継続させるために、それに関連付けられたBRAMカスケード信号が次のBRAMモジュールレベルのために活性化され得る。しかし、このようなカスケードデータアウトイネーブルA/Bコンフィギュレーションメモリセルが論理0に設定されると、節電するために、このようなカスケーディングは、このようなワンホットカスケードモードでのスイッチングがディスエーブルされ得る。例えば、カスケードチェーンにおける最上位のBRAMブロック313は、スイッチング電力を節約するために、論理0に設定されたカスケードデータアウトイネーブルA/B信号を使用してディスエーブルされ得る。
図7は、例示的な4深度のワンホットカスケードモード(「カスケードモード」)700を示す信号タイミング図である。カスケードモード700は、低周波数動作のためのものであり、二段階バーストモードのためのものである。二段階バーストモードが例示的に示されているが、より長いバーストモードが使用されてもよい。第1のバースト段階701は、クロック信号311、読取アドレス信号241、イネーブル信号510〜513、およびBRAMブロック313からデータ出力レジスタ335にデータを出力するための組合わせられたデータアウト信号703の例示的な状態を示している。第2のバースト段階702は、クロック信号311、読取アドレス信号241、イネーブル信号510〜513およびデータアウト213Uの例示的な状態を示している。
図8は、パイプラインモード(「パイプラインカスケードモード」)でのデータアウトカスケードのために構成された例示的なスタック400を示すブロック/回路図である。スタック400はBRAMモジュール250の上位部分のためのものであるが、BRAMモジュール250の下位部分が同様に使用されてもよい。明確にする目的および非限定的な目的で、図8ではBRAMモジュール250は簡略化されている。図1〜図8を同時に参照して、パイプラインカスケードモードについてさらに説明する。
パイプライン型カスケードモードは、ユーザが高い動作周波数でカスケードモードを利用することを可能にする。この構成では、カスケードモードで高い動作周波数を得るために、さらなるパイプライン段階として出力レジスタ335が使用される。カスケード/パイプラインA/Bコンフィギュレーションメモリセル362およびレジスタ335のデータアウトレジスタA/Bコンフィギュレーションメモリセルは、各々論理1に設定され得る。以前のもしくは下位レベルの最近傍のBRAMモジュール250からのデータ、または、現在のもしくは現在のレベルのBRAMモジュール250からのデータを多重化して、出力データを対応するレジスタ335に格納するように、選択信号323Sが設定され得る。パイプライン型カスケードモードが使用され得て、またはより一般的には、パイプライン型モードが使用されると、BRAMモジュール250の最後のマルチプレクサ、すなわち制御マルチプレクサ217は、それぞれ、現在のレベルのBRAMモジュール250からデータを選択して出力するように設定され得る。パイプライン型カスケードモードの間、データ出力のカスケーディングは、レジスタ335内を伝播する。
図9は、図8の例示的なスタック400のための例示的な4深度のパイプラインカスケードモード(「カスケードモード」)900を示す信号タイミング図である。カスケードモード900は、高周波数動作のためのものであり、4つのBRAMモジュール250を使用した、バースト長が4である三段階バーストモードのためのものである。バースト長が4であることが例示的に示されているが、いかなるバースト長も使用されてもよい。カスケードモード900は、クロック信号311、読取アドレス信号241、イネーブル信号510〜513(「EN0〜3」)の組合わせ、カスケードイネーブル信号323S0〜S3、およびデータアウト213Uの例示的な状態を示している。
図10は、上位部分または下位部分スタック400の入力側および出力側でプログラム可能なファブリックリソース1000に結合された、このようなスタック400の例示的な実施例を示すブロック/回路図である。図2〜図9を同時に参照して、図10についてさらに説明する。
明確にする目的、例示の目的および非限定的な目的で、スタック400は、4つのBRAMモジュール250を含んでいる。明確にする目的および非限定的な目的で、スタック400のBRAMモジュール250は簡略化されている。特に、ポート301へのデータイン入力信号は、それらの関連のBRAMモジュール250に対応してデータ入力信号DI(0)〜DI(3)と表わされている。同様に、selx信号323Sは、それらの関連のBRAMモジュール250に対応して選択データ入力信号SDI(0)〜SDI(3)と表わされ、cntlx信号353Sは、それらの関連のBRAMモジュール250に対応して選択データ出力信号SDO(0)〜SDO(3)と表わされている。この簡略化された構成を使用して、スタック400のさまざまなモードまたは構成についてさらに説明する。
一般に、SDO(x)信号は、上記の例では72ビットバスであるBRAMモジュール250の出力バスのための出力多重化を制御するための動的な1ビットの選択信号である。このようなSDO(x)信号は、節電のためのバス多重化、ワイドバスRAM構成、低電力ワイドBRAM使用モード、または静的なFIFOカスケードに使用可能である。一般に、SDI(x)信号は、出力レジスタの入力ソース、すなわち出力カスケードまたはRAMラッチ出力のいずれかを制御するための動的な1ビットの選択信号である。このようなSDI(x)信号は、出力多重化と連動させた高い動作周波数での多段階の深さのRAM、または、複数レベルのメモリ深さを有するメモリへの高周波数でのベクトル/バースト非ランダムアクセスに使用可能である。
図11は、黒い太線で概して示されるデータ経路1100を有する例示的なシストリックモードまたはFIFOモードを示す図10のブロック/回路図である。より特定的には、シストリックモードに関して、パイプライン書込であると考えることができるシストリック書込用のカスケードのためにデータが入力され得る。スタック400を通るデータ経路1100は、シストリックモードでの4つのBRAMモジュール250を通るデータの移動を示している。データ経路1100は、プログラム可能なファブリックリソース1000からのDI(0)入力から開始し得る。
シストリックモードは、ユーザが下位レベルのBRAMブロック313にデータを書込み、その後、このような下位レベルのBRAMブロック313からデータを読出して、最近傍の上位レベルのBRAMブロック313に書込むことを可能にする。この行程は、このようなデータが全てのカスケード接続されたBRAMモジュール250内を伝播するまで継続し得る。ユーザは、このようなカスケード接続されたBRAMモジュールのうちのいずれかからデータをランダムに取り出し得る。この構成では、メモリシステム200のハードマクロタイル内の専用のルーティングを使用して、データのみが下位レベルから上位レベルおよびスタック400にカスケードされ得る。プログラム可能なファブリックリソース1000のプログラム可能なインターコネクトからこのようなメモリシステムのハードマクロタイルに他の入力信号が加えられてもよい。下位レベルのBRAMモジュールからの読取データを上位レベルのBRAMモジュールのBRAMブロック313に書込むことを可能にするように、下位レベルのBRAMモジュール250から最近傍の上位レベルのBRAMモジュール250までカスケードされたデータ出力は、SDI(x)信号などのカスケードデータ入力選択A/B信号によって制御され得る。
データ経路1100は、エラー修正コードを含むがこれに限定されないフルスピードカスケードとして実行され得るFIFOモードのものと同一である。FIFOモードについては、以下でさらに詳細に説明する。
図12−1は、黒い太線で概して示されるデータ経路1200を有する例示的な低電力レジスタモードを示す図10のブロック/回路図である。データは、BRAMモジュール250のうちのいずれかのレジスタ335にロードされ得る。レジスタモードでは、BRAMモジュール250のレジスタ335が一度に1つだけ活性化される。すなわち、これはワンホットレジスタカスケードモードである。
最上位のBRAMモジュール、すなわちBRAMモジュール250−3からプログラム可能なファブリックリソース1000におけるレジスタ1201に延びるレジスタモードのためのデータ経路1200が例示的に示されているが、レジスタモードは、スタック400におけるいかなるレジスタ335からも起動されてもよい。レジスタモードでは、データがレジスタ335にロードされた後、このようなデータは、以下で説明するラッチモードよりも速いこのようなレジスタから繰返しクロックアウトされ得る。この例では、スタックから出力されるデータは、DO(3)である。
図12−2は、データ経路1200がスタック400の最下位のBRAMモジュール250−0のレジスタ335で起動され、このようなレジスタ335から上方にカスケード接続されること以外は、図12−1と同一のブロック/回路図である。したがって、レジスタモードは、一度にスタック400のいずれか1つのレジスタ335から起動され得て、そしてこのようなデータは、最上位のBRAMモジュール250のレベルにカスケード出力されてスタック400から出力され得て、この例ではこのようなデータはDO(0)であるがデータDO(3)として出力される、ということが理解されるべきである。上位レベルの制御マルチプレクサ217のみが使用されるので、このカスケーディングは上位レベルのレジスタを迂回する。
図13−1は、黒い太線で概して示されるデータ経路1300を有する例示的なラッチモードを示す図10のブロック/回路図である。この例では、BRAMブロック313は、データ経路1300に沿ってデータを読出し、スタック400の最上位のBRAMモジュール250−3からDO(3)として出力する。ラッチモードでは、データは、このようなBRAMモジュール250−3のレジスタ335に登録されない。したがって、スタック400のレジスタ335が使用されず、ラッチモードがスタック400の任意のBRAMブロック313から起動され得るので、ラッチモードは、低レイテンシラッチカスケードモードであると考えることができる。
そのような線に沿って、図13−2は、データ経路1300がスタック400の最下位のBRAMモジュール250−0のBRAMブロック313で起動され、このようなBRAMブロック313から上方にカスケード接続されること以外は、図13−1と同一のブロック/回路図である。したがって、ラッチモードは、一度にスタック400のいずれか1つのBRAMブロック313から起動され得て、そしてこのようなデータは、最上位のBRAMモジュール250のレベルにカスケード出力されてスタック400から出力され得て、この例ではこのようなデータはDO(0)であるがデータDO(3)として出力される、ということが理解されるべきである。上位レベルの制御マルチプレクサ217のみが使用されるので、このカスケーディングは上位レベルのレジスタおよび上位レベルのBRAMブロックを迂回する。
図14−1は、黒い太線で概して示されるデータ経路1400を有する例示的な多段レジスタモードを示す図10のブロック/回路図である。このレジスタモードは、これが三段RAMレジスタモードであること以外は、上記のレジスタモードと同様である。この例は三段RAMレジスタモードのためのものであるが、いかなる数の二段以上のRAMもこのようなレジスタモードで使用されてもよい。このレジスタモードでは、BRAMモジュール250−3などのBRAMモジュールのBRAMブロック313もレジスタ335もクロックされる。そのような線に沿って、三段のデータがデータ経路1400に沿ってBRAMブロック313からレジスタ335にクロック出力され、またデータ経路1400に沿ってスタック400からデータDO(3)として出力され得る。言い換えれば、BRAMブロック313のRAMは、三段の深さであり得る。そのような線に沿って、データDI(3)は、プログラム可能なファブリックリソース1000のレジスタ1401にクロック入力されてこのようなBRAMブロック313に入力され得て、そしてデータDO(3)は、スタック400からクロック出力されてこのようなプログラム可能なファブリックリソース1000のレジスタ1201に入力され得る。最大動作周波数を向上させるために、例えばBRAMモジュール250−0などの1つ以上の下位BRAMモジュールが例えばBRAMモジュール250−3のレジスタ335などの最上位のBRAM出力レジスタを使用している三段パイプラインでは、効果的な三段パイプラインを有するためのアラインメント補償として、他のBRAM信号の中でアドレス信号、データ信号およびイネーブル信号を提供するための入力をこのような最上位のBRAMモジュールのBRAM313に提供するように、例えばレジスタ1401などのファブリックパイプライン段階が結合され得る。明確にする目的でデータ信号DI(3)のみが例示的に示されているが、プログラム可能なファブリックリソース1000から提供されるものとして本明細書に記載されている他の信号が存在していてもよい。
そのような線に沿って、図14−2は、データ経路1400がスタック400の最下位のBRAMモジュール250−0のBRAMブロック313で起動され、このようなBRAMブロック313から上方にカスケード接続されること、および、図14−2では最初のレジスタ1401がないこと以外は、図14−1と同一のブロック/回路図である。したがって、多段レジスタモードは、一度にスタック400のいずれか1つのBRAMブロック313から起動され得て、そしてこのようなデータは、最上位のBRAMモジュール250のレベルにカスケード出力されてスタック400から出力され得て、この例ではこのようなデータはDO(0)であるがデータDO(3)として出力される、ということが理解されるべきである。このカスケーディングは、中間の上位レベルレジスタおよび全ての上位レベルBRAMブロックを迂回する。しかし、図13−2のようなラッチモードまたは図12−2のようなレジスタモードとは対照的に、最上位レベルのレジスタ335は迂回されない。それどころか、データ経路1400は、このようなデータを出力するためにBRAMモジュール250−3のレジスタ335を使用する。データDI(0)は、BRAMブロック313にクロック入力され得て、データDO(0)は、スタック400からクロック出力されてこのようなプログラム可能なファブリックリソース1000のレジスタ1201に入力され得る。上記のように、他の信号がプログラム可能なファブリックリソース1000からこのような最下位のBRAMブロック313に提供されてもよい。
図15は、黒い太線で概して示されるデータ経路1500を有する例示的なダブルデータレート/ベクトルメモリモード(「ベクトルモード」)を示す図10のブロック/回路図である。データをスタック400から出力するためにBRAMモジュール250が一度に1つだけアクティブになり、この例では、BRAMモジュール250−3が例示されている。しかし、いかなるBRAMモジュール250も一度にアクティブになってもよい。一度に1つだけBRAMモジュールをアクティブにすることによって、電力消費を減少させることができる。
このベクトル出力は任意のDO(x)であり得て、そのため、例えばDDR3バーストアクセスなどのダブルデータレート(「DDR」)バーストアクセスのように見えるかもしれない。ベクトルモードでは、スタック400における各々のBRAMブロック313は、ランダムにアクセスされ得る。ベクトルモードは、高い動作周波数で実行され得る。各々のBRAMブロック313は順不同に読取られ得るが、BRAMブロック313がベクトル当たり1つだけ読取られてもよい。しかし、ベクトル出力シフトは、シーケンシャルアクセスであるように見えるかもしれない。さらに、各々のBRAMブロック313読取アドレスは、ランダムであってもよく、他のBRAM読取アドレスから独立していてもよい。ベクトルモードでは、SDI(x)動的制御信号もSDO(x)動的制御信号も使用可能である。
図16は、黒い太線で概して示されるデータ経路1600を有する別の例示的なベクトルモード、すなわち「荷重ベクトルモード」を示す図10のブロック/回路図である。荷重ベクトルモードでは、この例ではBRAMモジュール250−0のBRAMブロック313などの使用される最下位のBRAMブロック313からデータをロードしてこのような最下位のBRAMブロックのレジスタ335をロードするために、データ経路1600の初期部分1601が使用される。その後、このようなデータは、介在するレジスタを介してスタック400の最上位のレジスタ335にカスケードされ得る。そのような線に沿って、カスケード接続されたレジスタ335からなるパイプラインを満たすための読取データを提供するために、最下位のBRAMブロック313における次のアドレスが読取られ得る。例えばBRAMモジュール250−3などの最上位のBRAMモジュールのレジスタ335から、データDO(0)がDO(3)としてこのようなスタック400から出力され、例えばプログラム可能なファブリックリソース1000のレジスタ1201に入力され得る。
図17−1は、黒い太線で概して示されるデータ経路1700を有する別の例示的なベクトルモード、すなわち「シフトベクトルモード」を示す図10のブロック/回路図である。データDO(0)が上位レベルのレジスタに登録されると、ユーザは、他のデータをシフトインまたは挿入させたいと思うようになり得る。この例では、カスケード接続されたパイプライン型経路にDI(2)をシフトインするために別の初期経路1701が追加されている。そのような線に沿って、BRAMモジュール250−2のBRAMブロック313は、そこに付加された次のアドレスにおいてデータを読出し得る。その後、このようなデータは、介在するレジスタを介してスタック400の最上位のレジスタ335にカスケードされ得る。そのような線に沿って、カスケード接続されたレジスタ335からなるパイプラインにこのようなデータを挿入するための読取データを提供するために、介在するBRAMブロック313における次のアドレスが読取られ得る。例えばBRAMモジュール250−3などの最上位のBRAMモジュールのレジスタ335から、データDO(2)がDO(3)としてこのようなスタック400から出力され、例えばプログラム可能なファブリックリソース1000のレジスタ1201に入力され得る。
図17−2は、黒い太線で概して示されるデータ経路1700のためのシフトベクトルモードのための別の構成を示す図17−1のブロック/回路図である。この例では、初期経路1702によって概して示されるようにデータをシフトインするためにBRAMモジュール250−1のBRAMブロック313が使用される。これは、このようなデータがスタック400における任意の介在するBRAMブロック313からシフトインされ得ることを示している。
図18は、例示的な二次元アレイシストリックスイッチ1800を示すブロック/回路図である。シストリックスイッチ1800は、共同公衆無線インターフェース(Common Public Radio Interface:CPRI)のためのものであってもよい。シストリックスイッチ1800は、複数のスタック400−1〜400−Q(Qは1よりも大きな正の整数)で構成され得る。入口パイプライン1801−1〜1801−P(Pは1よりも大きな正の整数)および制御パイプライン1813−1〜1813−Qは、プログラム可能なファブリックリソース1000におけるレジスタで構成され得る。ここでは、制御パイプライン1813は、制御ブロック1805からスタック400のBRAMブロック313にそれぞれ制御情報を渡すためのものであり得る。入口パイプライン1801は、対応する入口情報をスタック400のそれぞれのBRAMブロック313に渡すためのものであり得る。3つの入口パイプライン1801のみが例示的に詳細に示されているが、3つよりも多い数の入口パイプライン1801が形成されてもよい。ここでも、スタック400の各々は、複数のブロックRAMモジュール250で構成され得る。スタック400は、全てが上位メモリブロック201で構成されていてもよく、全てが下位メモリブロック202で構成されていてもよく、または上位および下位メモリブロック201および/または202の組合わせで構成されていてもよい。
各スタック400の最初のBRAMモジュールは、使用されない入力を有するマルチプレクサ325を有し得る。したがって、このようなマルチプレクサ325に提供される選択信号は静的な信号であり得て、同様に、別の静的な信号がこのような未使用のデータ入力に提供され得る。このような最初のBRAMモジュール250−0のBRAMブロック313から出力されたデータは、入力としてこのようなマルチプレクサ325に提供され、そこから出力される。
最初のマルチプレクサ325以外のマルチプレクサ325は、複数のパイプライン1813の制御パイプラインに結合され、出力を選択するための制御選択信号を取得し得る。このような他のマルチプレクサ325からの出力は、最近傍の下位レベルのBRAMモジュール250からのカスケード型入力データ、または、このようなマルチプレクサ325が存在する現在のBRAMモジュール250のレベルのBRAMブロック313からの読取データのいずれかであるように選択され得る。BRAMブロック313は、パイプラインを制御してそこからアドレスおよび他の情報を受取るように結合され得る。マルチプレクサ325からの出力は、垂直パイプラインを形成するようにレジスタ335にそれぞれ提供され得る。
したがって、プログラム可能なリソースファブリックで利用可能な動作周波数を大幅に上回って動作周波数を増加させるために、スタック400を使用して垂直パイプラインがハードマクロとして提供され得る。出口情報は、ハードマクロ出口垂直パイプライン1802−1〜1802−Qから出力され得る。
深さを深くするためにスタック400または複数のスタック400を使用するなどしてFIFOをカスケード接続すると、このようなFIFOのうちの最初のFIFO、すなわち書込インターフェースを有するFIFOは、「最初」のカスケード順序信号で特定され得る。同様に、このようなFIFOのうちの最後のFIFO、すなわち読取インターフェースを有するFIFOは、「最後」のカスケード順序信号で特定され得る。チェーンFIFOにおける全ての中間のFIFOは、「中間(middle)」または「間(interim)」のカスケード順序で特定され得る。そのような線に沿って、「最初」、「中間」または「最後」は、事実上、各々のFIFOにおけるマルチプレクサを制御して、通常の書込入力またはカスケード型出力を使用するか(「最初」)、カスケード型入力および出力を使用するか(「中間」)、カスケード型入力および通常の出力を使用するか(「最後」)を判断するためのカスケード順序パラメータである。カスケード順序パラメータは、明確にする目的、例示的な目的および非限定的な目的で使用される。
この理解を念頭に置いて、図19は、FIFOカスケードモードのための、複数のスタック400から形成され得るFIFOの例示的なチェーン(「チェーン」)1900を示すブロック図である。この例では、最後のスタック400L、中間のスタック400Mおよび最初のスタック400Fがある。しかし、他のFIFOチェーン構成では、3つよりも少ないまたは多い数のスタック400が使用されてもよい。そのような線に沿って、例えば、FPGAにおけるBRAMモジュール250の列全体が、単一のFIFOチェーンを提供するように互いに結合され得る。明確にする目的および非限定的な目的で信号線の単一のインスタンスが例示されているが、いくつかの信号は、複数の信号線を含んでいてもよい。特に、データ入力タイプの信号、データ入力パリティタイプの信号、データ出力タイプの信号、およびデータ出力パリティタイプの信号は、複数の信号線を含み得る。チェーン1900は、登録もしくは未登録モードで使用されるように構成されてもよく、共通のもしくは独立したクロック領域を使用するように構成されてもよく、読取クロックよりも速い書込クロックを有するように構成されてもよく、および/または、書込クロックよりも速い読取クロックを有するように構成されてもよい。
各々のスタック400は、書込入力のためのFIFO書込入力インターフェース1921と、書込出力のためのFIFO書込出力インターフェース1922と、FIFO直列カスケードインターフェース1923と、FIFO直列カスケードインターフェース1924と、読取入力のためのFIFO読取インターフェース1925と、読取出力のためのFIFO読取インターフェース1926とを含んでいる。各々のスタックまたはFIFO400は、状態または属性設定(「状態」)1930を含み得る。最初または中間のカスケード順を有するFIFO400のための状態1930は、「first word fall through」(「FWFT」)が「真」に設定された状態で構成され得る。一般に、FWFT FIFOは、空のFIFOに書込まれたデータが任意の非空表示の前もしくは任意の非空表示と同時に読取ポートに現われるか、または、空のFIFOであったものから最初のデータを読取るように読取イネーブルがアサートされ得るというものである。FIFO動作に関するさらなる情報については、米国特許第6,847,558号、第6,848,042号および第7,535,789号にさらに詳細に見ることができる。最後のカスケード順を有するFIFO400のための状態1930は、FWFTが「偽」に設定された状態で構成され得る。状態1930が設定されると、FIFO400の直列カスケードインターフェーシングは、各々のこのようなFIFOのコントローラロジックによって示されるように自動的に接続され得る。すなわち、このようなFIFOコントローラロジックは、FIFOと全ての書込および読取インターフェース出力との間のハンドシェーキングに対処する。
ユーザは、チェーン1900における最初のFIFO400に書込クロック信号を提供し、チェーン1900における最後のFIFO400に読取クロック信号を提供し得る。中間のFIFO400は、内部クロック信号に結び付けられた書込および読取クロック信号を有し得て、このような内部クロック信号は、このような読取および書込クロック信号よりも速い。FIFO400の読取クロック信号も書込クロック信号も同一のクロック入力ソースに結び付けられる場合、このようなFIFO400は、同期FIFOとして構成され得て、レイテンシを減少させることができる。
FIFO書込入力インターフェース1921の入力ポートに関して、FIFO400Lおよび400Mの各々の書込クロックポートには、内部クロック1901が提供され得る。FIFO400L、400Mおよび400Fの各々の書込リセットポートには、書込リセット信号1902が提供され得る。FIFO400Fの書込クロックポートには、書込クロック信号1904が提供され得る。FIFO400Fのデータインおよびデータインパリティポートには、データインバス1905およびデータインパリティバス1906がそれぞれ提供され得る。FIFO400Fの書込イネーブルポートには、書込イネーブル信号1907が提供され得る。
FIFO書込出力インターフェース1922の出力ポートに関して、FIFO400L、400Mおよび400Fの各々からORゲート1910に書込リセットビジー信号1935が送られ得る。したがって、ORゲート1910の出力は、チェーン1900の全てのFIFOが書込みのためにリセットされたか否かを示す書込リセットビジー信号1903であり得る。そのような線に沿って、静的な数のFIFO400では、ORゲート1910はハードマクロの一部として提供され得る。しかし、チェーン1900がどれぐらいの長さであり得るかをユーザが選択できるようにすることによって、ORゲート1910は、プログラム可能なファブリックリソース1000を使用して形成されることができる。書込エラー信号1908およびフル信号1909は、FIFO400Fの書込エラーポートおよびフルポートからそれぞれ供給され得る。この例では、ORゲート1910および1920は、アクティブロー構成で使用される。別の例では、アクティブハイ構成でゲート1910および1920としてNORゲートが使用されてもよい。
制御信号1940は、FIFO400の間にあってもよい。制御信号1940は、次のデータアウト信号と、次のデータアウトパリティ信号と、次のエンプティ信号とを含み得て、これらの信号は、下位のFIFO直列カスケードインターフェース1923から最近傍の上位のFIFO直列カスケードインターフェース1924の対応する前のデータイン・ポート、前のデータインパリティポートおよび前のエンプティポートに提供され得る。制御信号1940は、上位のFIFO直列カスケードインターフェース1924から最近傍の下位のFIFO直列カスケードインターフェース1923の対応する次の読取イネーブルポートに提供され得る前の読取イネーブル信号をさらに含み得る。
FIFO読取入力インターフェース1925の入力ポートに関して、FIFO400Lの読取クロックポートおよび読取イネーブルポートには、読取クロック信号1911および読取イネーブル信号1914がそれぞれ提供され得る。データアウト信号1912およびデータアウトパリティ信号1913は、FIFO400Lの関連のポートからそれぞれ供給され得る。中間のFIFO400Mおよび最初のFIFO400Fの各々の読取クロックポートには、内部クロック信号1918が提供され得る。
FIFO読取出力インターフェース1926の出力ポートに関して、FIFO400L、400Mおよび400Fの各々からORゲート1920に読取リセットビジー信号1936が送られ得る。したがって、ORゲート1920の出力は、チェーン1900の全てのFIFOが読取りのためにリセットされたか否かを示す読取リセットビジー信号1917であり得る。そのような線に沿って、静的な数のFIFO400では、ORゲート1920はハードマクロの一部として提供され得る。しかし、チェーン1900がどれぐらいの長さであり得るかをユーザが選択できるようにすることによって、ORゲート1920は、プログラム可能なファブリックリソース1000を使用して形成されることができる。読取エラー信号1915およびエンプティ信号1916は、FIFO400Lの読取エラーポートおよびエンプティポートからそれぞれ供給され得る。
したがって、チェーン1900における最後のFIFO400Lは、このようなチェーン1900における全てのFIFO400が空であるときに、エンプティ信号1916を出力し得る。さらに、チェーン1900における最初のFIFO400Fは、このようなチェーン1900における全てのFIFO400がフルであるときに、フル信号1908を出力し得る。さらに、FIFO400間のルーティングは、完全に、メモリシステム200によって提供されるハードマクロ内であり得て、これは、プログラム可能なファブリックリソースを使用してFIFOを連結しなければならない状態を回避する、ということが理解されるべきである。
図20は、FIFOカスケードモードのための、複数のスタック400から形成され得るFIFOの別の例示的なチェーン1900を示すブロック図である。任意の2つの最近傍のFIFO400間の制御状態を相互接続するために、それぞれのANDゲート2001がメモリシステム200のハードマクロの一部として提供され得て、輻輳を減少させ、性能を向上させ、および/または、タイミングを緩和させる。ANDゲート2001は、FIFO400Fまたは400Mなどの下位のFIFO400のエンプティポートに結合された入力と、FIFO400Mまたは400Lなどの最近傍の上位のFIFO400のフルポートに結合された別の入力とを有し得る。この例では、フル信号およびエンプティ信号は、アクティブローである。フル信号およびエンプティ信号がアクティブハイである例では、ANDゲート2001は、それぞれNORゲートと置換されてもよい。ANDゲート2001の出力は、このような最近傍の上位のFIFO400の書込イネーブルポート、およびこのような下位のFIFO400の読取イネーブルポートに結合され得る。さらに、チェーン1900の任意の2つの最近傍のFIFO400間のデータを相互接続するために、データパリティルーティングを含むがこれに限定されない専用のデータルーティング2002がメモリシステム200のハードマクロの一部として提供され得て、輻輳を減少させ、性能を向上させ、および/または、タイミングを緩和させる。
上記では例示的な実施例について説明しているが、以下の特許請求の範囲およびその等価物によって決定される範囲から逸脱することなく、1つ以上の局面に係る他のおよびさらなる実施例を考案することができる。ステップを列挙する請求項は、当該ステップの順序を暗に示すものではない。商標は、それらのそれぞれの所有者の所有物である。

Claims (12)

  1. メモリモジュールを備え、
    前記メモリモジュールは、構成可能(コンフィギュラブル)なハードマクロであり、
    前記メモリモジュールの第1の部分は、
    カスケード型データと直接的なバス型データとの間で選択を行うように結合されたデータ入力マルチプレクサと、
    前記データ入力マルチプレクサからの出力を受取って格納するように結合されたメモリと、
    前記メモリからの読取データと前記カスケード型データとの間で選択を行うように結合されたレジスタ入力マルチプレクサと、
    前記レジスタ入力マルチプレクサからの出力を受取るように結合されたレジスタと、
    前記メモリからの前記読取データと前記レジスタからの登録データとの間で選択を行うように結合されたラッチ/レジスタモードマルチプレクサと、
    前記カスケード型データと前記ラッチ/レジスタモードマルチプレクサからの出力との間で選択を行って出力データを提供するように結合されたデータ出力マルチプレクサとを備える、装置。
  2. 前記メモリモジュールの第2の部分は、前記メモリモジュールの前記第1の部分のコピーであり、
    前記メモリモジュールの前記第1の部分は、前記メモリモジュールの出力バスの第1の部分のためのものであり、
    前記メモリモジュールの前記第2の部分は、前記メモリモジュールの出力バスの第2の部分のためのものである、請求項1に記載の装置。
  3. メモリモジュールを備え、
    前記メモリモジュールは、構成可能(コンフィギュラブル)なハードマクロであり、
    前記メモリモジュールは、
    データイン入力ポート、第1のカスケード入力ポート、カスケード/データイン選択ポート、および書込データ出力ポートを各々が有する複数のデータインマルチプレクサと、
    書込データ入力ポート、第1のクロックポート、および読取データ出力ポートを各々が有する複数のメモリブロックと、
    第1の読取データ入力ポート、第2のカスケード入力ポート、パイプライン選択ポート、およびレジスタデータ出力ポートを各々が有する複数のパイプラインマルチプレクサと、
    レジスタデータ入力ポート、登録データ出力ポート、および第2のクロックポートを各々が有する複数のレジスタと、
    第2の読取データ入力ポート、登録データ入力ポート、登録/未登録選択ポート、およびブロック出力ポートを各々が有する複数のデータアウトマルチプレクサと、
    第3のカスケード入力ポート、ブロック入力ポート、制御選択ポート、およびデータアウトポートを各々が有する複数の制御マルチプレクサとを備える、装置。
  4. 前記複数のデータインマルチプレクサ、前記複数のパイプラインマルチプレクサ、および前記複数の制御マルチプレクサの各々の第1の部分のための前記第1のカスケード入力ポート、前記第2のカスケード入力ポート、および前記第3のカスケード入力ポートは、第1のカスケード入力ノードに共通して結合され、
    前記複数のデータインマルチプレクサ、前記複数のパイプラインマルチプレクサ、および前記複数の制御マルチプレクサの各々の第2の部分のための前記第1のカスケード入力ポート、前記第2のカスケード入力ポート、および前記第3のカスケード入力ポートは、第2のカスケード入力ノードに共通して結合される、請求項3に記載の装置。
  5. 前記複数の制御マルチプレクサの第1のマルチプレクサは、その前記データアウトポートを有し、前記第1のマルチプレクサの前記データアウトポートは、前記メモリモジュールの出力バスの第1の部分であり、
    前記複数の制御マルチプレクサの第2のマルチプレクサは、その前記データアウトポートを有し、前記第2のマルチプレクサの前記データアウトポートは、前記メモリモジュールの前記出力バスの第2の部分である、請求項3または4に記載の装置。
  6. 前記複数のデータインマルチプレクサの前記カスケード/データイン選択ポートは、それぞれ第1のコンフィギュレーションメモリセルに結合され、
    前記複数のデータアウトマルチプレクサの前記登録/未登録選択ポートは、それぞれ第2のコンフィギュレーションメモリセルに結合される、請求項3から5のいずれか1項に記載の装置。
  7. 第1の構成可能(コンフィギュラブル)なハードマクロとして提供される第1のメモリモジュールと、
    第2の構成可能(コンフィギュラブル)なハードマクロとして提供される第2のメモリモジュールとを備え、
    前記第1のメモリモジュールは、前記第2のメモリモジュールよりも高いレベルのスタックにあり、
    前記第1のメモリモジュールは、互いに分離された第1の上位メモリブロックと第1の下位メモリブロックとを有し、
    前記第2のメモリモジュールは、第2の上位メモリブロックと第2の下位メモリブロックとを有し、
    前記第1の上位メモリブロックおよび前記第2の上位メモリブロックを含む第1のメモリ列を提供するために、前記第1の上位メモリブロックに関連付けられた前記第1のメモリモジュールの第1のカスケード入力ノードは、前記第2の上位メモリブロックに関連付けられた前記第2のメモリモジュールの第1のデータアウトノードに結合され、
    前記第1の下位メモリブロックおよび前記第2の下位メモリブロックを含む第2のメモリ列を提供するために、前記第1の下位メモリブロックに関連付けられた前記第1のメモリモジュールの第2のカスケード入力ノードは、前記第2の下位メモリブロックに関連付けられた前記第2のメモリモジュールの第2のデータアウトノードに結合され
    データイン入力ポート、第1のカスケード入力ポート、カスケード/データイン選択ポート、および書込データ出力ポートを各々が有する第1の複数のデータインマルチプレクサと、
    書込データ入力ポート、第1のクロックポート、および読取データ出力ポートを各々が有する第1の複数のメモリブロックと、
    第1の読取データ入力ポート、第2のカスケード入力ポート、パイプライン選択ポート、およびレジスタデータ出力ポートを各々が有する第1の複数のパイプラインマルチプレクサと、
    レジスタデータ入力ポート、登録データ出力ポート、および第2のクロックポートを各々が有する第1の複数のレジスタと、
    第2の読取データ入力ポート、登録データ入力ポート、登録/未登録選択ポート、およびブロック出力ポートを各々が有する第1の複数のデータアウトマルチプレクサと、
    第3のカスケード入力ポート、ブロック入力ポート、制御選択ポート、およびデータアウトポートを各々が有する第1の複数の制御マルチプレクサとをさらに備える、装置。
  8. 前記第1のカスケード入力ノードは、前記第1の上位メモリブロックの前記第1のカスケード入力ポート、前記第2のカスケード入力ポート、および前記第3のカスケード入力ポートに結合され、
    前記第2のカスケード入力ノードは、前記第1の下位メモリブロックの前記第1のカスケード入力ポート、前記第2のカスケード入力ポート、および前記第3のカスケード入力ポートに結合される、請求項7に記載の装置。
  9. 前記第1の上位メモリブロックのブロック出力ポートは、前記第1のメモリモジュールの出力バスの第1の部分のためのものであり、
    前記第1の下位メモリブロックのブロック出力ポートは、前記第1のメモリモジュールの前記出力バスの第2の部分のためのものである、請求項7または請求項8に記載の装置。
  10. 前記第2の上位メモリブロックのブロック出力ポートは、前記第2のメモリモジュールの出力バスの第1の部分のためのものであり、
    前記第2の下位メモリブロックのブロック出力ポートは、前記第2のメモリモジュールの前記出力バスの第2の部分のためのものである、請求項に記載の装置。
  11. 前記第1の上位メモリブロックに関連付けられたデータアウトポート、および前記第2の上位メモリブロックに関連付けられたデータアウトポートは、組合わせられてバス出力を提供し、
    その組合わせは、前記第1のメモリモジュールの前記出力バスの前記第1の部分と、前記第2のメモリモジュールの前記出力バスの前記第1の部分とからなる、請求項9または請求項10に記載の装置。
  12. 前記第1の上位メモリブロックおよび前記第2の上位メモリブロックは、第1の書込アドレスバスおよび第1の読取アドレスバスに結合され、
    前記第1の下位メモリブロックおよび前記第2の下位メモリブロックは、第2の書込アドレスバスおよび第2の読取アドレスバスに結合される、請求項7から11のいずれか1項に記載の装置。
JP2015541879A 2012-11-09 2013-11-06 構成可能な混載メモリシステム Active JP6364015B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/673,892 US9075930B2 (en) 2012-11-09 2012-11-09 Configurable embedded memory system
US13/673,892 2012-11-09
PCT/US2013/068797 WO2014074632A1 (en) 2012-11-09 2013-11-06 Configurable embedded memory system

Publications (2)

Publication Number Publication Date
JP2016504650A JP2016504650A (ja) 2016-02-12
JP6364015B2 true JP6364015B2 (ja) 2018-07-25

Family

ID=49640188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015541879A Active JP6364015B2 (ja) 2012-11-09 2013-11-06 構成可能な混載メモリシステム

Country Status (6)

Country Link
US (1) US9075930B2 (ja)
EP (1) EP2917844B1 (ja)
JP (1) JP6364015B2 (ja)
KR (1) KR101965476B1 (ja)
CN (1) CN104969208B (ja)
WO (1) WO2014074632A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9210486B2 (en) * 2013-03-01 2015-12-08 Qualcomm Incorporated Switching fabric for embedded reconfigurable computing
CN104347105B (zh) * 2014-11-07 2017-09-15 中国科学院微电子研究所 Ram输出寄存处理方法
US9786361B1 (en) * 2015-07-31 2017-10-10 Flex Logix Technologies, Inc. Programmable decoupling capacitance of configurable logic circuitry and method of operating same
CN108540127A (zh) * 2017-03-03 2018-09-14 成都海存艾匹科技有限公司 基于三维印录存储器的可编程门阵列
CN105808474A (zh) * 2016-03-11 2016-07-27 中国电子科技集团公司第五十八研究所 现场可编程器件fpga的block ram级联结构
US9590634B1 (en) * 2016-06-13 2017-03-07 Baysand Inc. Metal configurable hybrid memory
US11132599B2 (en) * 2017-02-28 2021-09-28 Microsoft Technology Licensing, Llc Multi-function unit for programmable hardware nodes for neural network processing
US11036827B1 (en) * 2017-10-17 2021-06-15 Xilinx, Inc. Software-defined buffer/transposer for general matrix multiplication in a programmable IC
US10284185B1 (en) * 2017-12-18 2019-05-07 Xilinx, Inc. Selectively providing clock signals using a programmable control circuit
US10790830B1 (en) * 2019-05-20 2020-09-29 Achronix Semiconductor Corporation Fused memory and arithmetic circuit
US11256476B2 (en) 2019-08-08 2022-02-22 Achronix Semiconductor Corporation Multiple mode arithmetic circuit
US11720719B2 (en) * 2019-10-01 2023-08-08 Micron Technology, Inc. Apparatuses and methods for signal encryption in high bandwidth memory
US11599299B2 (en) * 2019-11-19 2023-03-07 Invensas Llc 3D memory circuit
CN111488297B (zh) * 2020-04-02 2023-04-14 杭州迪普科技股份有限公司 用于访问寄存器的方法、装置、电子设备及可读介质
CN113868167A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种芯片模组及通信系统、端口分配方法
US11604696B2 (en) * 2021-08-19 2023-03-14 Wuxi Esiontech Co., Ltd. Field programmable gate array (FPGA) for improving reliability of key configuration bitstream by reusing buffer memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01147648A (ja) * 1987-12-02 1989-06-09 Dainippon Screen Mfg Co Ltd データ記憶装置
DE69223212T2 (de) * 1991-08-15 1998-05-14 Texas Instruments Inc Kalibrierung eines aus einer rekonfigurierbaren Reihe von Stufen bestehenden Systems
JP3092556B2 (ja) * 1997-09-16 2000-09-25 日本電気株式会社 半導体記憶装置
US6178472B1 (en) * 1998-06-15 2001-01-23 International Business Machines Corporation Queue having distributed multiplexing logic
JP2004146005A (ja) * 2002-10-25 2004-05-20 Nec Micro Systems Ltd 記憶モジュールおよびそれを用いた順次アクセス記憶装置
US7187203B1 (en) 2004-12-17 2007-03-06 Lattice Semiconductor Corporation Cascadable memory
US7298169B2 (en) * 2005-03-15 2007-11-20 Tabula, Inc Hybrid logic/interconnect circuit in a configurable IC
US7746112B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Output structure with cascaded control signals for logic blocks in integrated circuits, and methods of using the same

Also Published As

Publication number Publication date
EP2917844B1 (en) 2018-08-22
US9075930B2 (en) 2015-07-07
EP2917844A1 (en) 2015-09-16
US20140133246A1 (en) 2014-05-15
CN104969208A (zh) 2015-10-07
JP2016504650A (ja) 2016-02-12
WO2014074632A1 (en) 2014-05-15
KR20150084001A (ko) 2015-07-21
CN104969208B (zh) 2017-03-15
KR101965476B1 (ko) 2019-04-03

Similar Documents

Publication Publication Date Title
JP6364015B2 (ja) 構成可能な混載メモリシステム
US7518396B1 (en) Apparatus and method for reconfiguring a programmable logic device
US7737725B1 (en) Device control register for a processor block
KR102446825B1 (ko) 하이브리드 메모리 시스템의 동작을 제어하는 회로들 및 방법들
JP6564375B2 (ja) 高スループットのキーバリューストアの実現のためのメモリ構成
EP2965429B1 (en) Integrated circuit devices having memory and methods of implementing memory in an integrated circuit device
Agrawal et al. An innovative, segmented high performance FPGA family with variable-grain-architecture and wide-gating functions
US8239590B1 (en) Method and apparatus for transferring data between two different interfaces
US20190379380A1 (en) Stacked programmable integrated circuitry with smart memory
US7890910B1 (en) Programmable logic device having logic elements with dedicated hardware to configure look up tables as registers
JP6517626B2 (ja) 再構成可能な半導体装置
JP6564186B2 (ja) 再構成可能な半導体装置
US7724028B1 (en) Clocking for a hardwired core embedded in a host integrated circuit device
US7768819B2 (en) Variable sized soft memory macros in structured cell arrays, and related methods
US9875330B2 (en) Folding duplicate instances of modules in a circuit design
US9083340B1 (en) Memory matrix
US8988125B1 (en) Circuits for and methods of routing signals in an integrated circuit
JP6602849B2 (ja) プログラマブル遅延回路ブロック
TWI445312B (zh) 具有鏡像互連結構的可程式積體電路
US7684278B1 (en) Method and apparatus for implementing FIFOs using time-multiplexed memory in an integrated circuit
US10763862B1 (en) Boundary logic interface
JP6405262B2 (ja) 再構成可能な論理デバイス
US8941408B2 (en) Configuring data registers to program a programmable device with a configuration bit stream without phantom bits
JP2011151337A (ja) 処理ユニットと不揮発性メモリユニットとの組み合わせのアレイ
US7701250B1 (en) (N+1) input flip-flop packing with logic in FPGA architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161028

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180629

R150 Certificate of patent or registration of utility model

Ref document number: 6364015

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250