Versal デバイスは、1 つの RAMB36 のデータ出力を次の RAMB36 に直列にカスケード接続して、ボトムアップ方式でよりワード数の大きいブロック RAM を構築できます。データ出力をカスケード接続するこの機能は、RAMB36 のすべてのポート幅でサポートされます。RAMB36E5 モジュールがサポートしている機能はすべて、カスケード接続したブロック RAM でも利用できます。
データフローは、常に下段のブロック RAM から上段のブロック RAM への方向です。カスケード接続に使用する信号配線および制御ロジックはすべてハードウェアで実装されます。必要に応じて 3 つ以上のブロック RAM をカスケード接続することも可能です。カスケード モードでは、1 つの共通クロック ソースによって同じブロック RAM 入力 (RDCLK または WRCLK) を駆動する必要があります。また、このデータ カスケード機能では下段の RAMB36 の下側の RAMB18 を上段の RAMB36 の下側の RAMB18 に独立してカスケード接続することもできます。同様に、下段の RAMB36 の上側の RAMB18 は上段の RAMB36 の上側の RAMB18 にカスケード接続できます。
次の図に、4 つのブロック RAM をカスケード接続した場合の概念図を示します。
ブロック RAM は、カスケード接続機能をさまざまな構成で柔軟に実装できます。データパスおよびパイプライン レジスタを選択する 3 つのマルチプレクサーは、入力ピンで動的に制御できます (上図参照)。
次の図は、1 つのブロック RAM ブロックにおける機能インプリメンテーションをさらに詳しく示したものです。ブロック RAM をカスケード モードにすると、2 つのカスケード マルチプレクサー選択ピンが利用可能になります。CASOREGIMUX は、ブロック RAM のデータ出力とカスケード データ入力のどちらをオプションの出力レジスタに入力するかを選択します。この制御ピンを利用してカスケード接続をパイプライン化することで、パフォーマンスを最大にできます。CASDOMUX は、ブロック RAM のデータ出力 (オプションの出力レジスタを使用する場合はその出力) とカスケード データ入力のどちらを出力するかを選択します。最後の 2 つのカスケード マルチプレクサー選択ピンの入力にはレジスタがついており、イネーブル制御ピンがあります。CASDOUT および CASDIN には、ブロック RAM カラム内に専用のインターコネクトがあります。カスケード接続は、ブロック RAM へのデータ入力およびブロック RAM からのデータ出力と同時に利用できます。
ブロック RAM のデータ カスケード機能を使用するとさまざまなユース ケースを実装できますが、ここでは最も代表的な 2 つについて説明します。ここで示す例はいずれも 3 つのブロック RAM をカスケード接続していますが、アプリケーションでそれ以上のブロック RAM が必要な場合は、一部制約があるものの、同じ方法でブロック RAM を追加できます。