2017-12-30 6 views
-1

パイプライニング時にデジタル回路のクロック速度がどのように上昇するかを評価するための簡単なテストを行っています。hdlのパイプライン・マルチプレクサ

2 5to1と1 2to1を使用して10to1マルチプレクサをパイプライン化します。私は、FPGAのシンセサイザー(アルテラ)からいくつかのクロック速度の増加を取得します。次に、もう1つのステージを追加し、5to1マルチプレクサを2to1と3to1と適切なレジスタに置き換えます。後者の場合、クロック速度は低下する。なぜレジスタやパイプラインステージを追加するとクロック速度が落ちるのか分かりません。

+0

Fpgaにはマルチプレクサがありません。合成ツールは、VHDLコードを変換し、FPGAビルディングブロックに適合するロジックに最適化します。ブロック間のルーティング遅延はしばしば支配的です。 – JHBonarius

答えて

0

ほとんどのFPGAの最小論理ゲートはルックアップテーブル(LUT)です。入力には3〜6個の入力があります。アルテラのALMはさまざまな方法で設定可能です。どちらの方法においても、マルチプレクサのサイズが同等のLUTサイズよりも小さい場合、Fmaxの改善はそれ以上ありません。

すべてのマルチプレクササイズを2:1マルチプレクサのツリーとして記述できます。合成により結果の方程式が最適化され、FPGAデバイスのLUT構造とコンフィギュレーションにマッピングされます。

あなたはさらに、可変パイプラインを作成するには、ユーザー定義rising_edge機能を使用することができます。

function registered(signal Clock : std_logic; constant IsRegistered : boolean) return boolean is 
begin 
    if IsRegistered then 
    return rising_edge(Clock); 
    end if 
    return TRUE; 
end function; 

(出典:PoC-Libraryからcomponentsパッケージ)

この機能を使用すると、selectivlyパイプラインステージを有効または無効にすることができます。

+0

LUT入力の最小値が3の場合、2to1の2つの2to1の4to1マルチプレクサを '中断'することはお勧めしませんか? – user2609910

+0

など。ザイリンクスにはLUT6構造があります。これは、4つのデータ入力と2つの選択信号を持つ4:1マルチプレクサと一致します。より小さなマルチプレクサを使用すると、未使用の機能を持つLUT6構造になります。 – Paebbels

関連する問題