DSP48EまたはDSP48E1関数内のデータパスのレイテンシを確認するには、構成ダイアログボックスの下部の回路図を使用します。これらのレイテンシは、入力端子から出力端子へのデータフローに必要なクロックサイクル数で表されます。たとえば、apは1つのデータパスであり、bpは別のデータパスです。データパスの各追加レジスタにより、そのデータパスのレイテンシが1クロックサイクル分増加しますが、他のデータパスのレイテンシに影響はありません。したがって、関数の構成時にデータパスのレイテンシのバランスが崩れる可能性があります。

この不釣り合いが許容されるかどうかは、関数を使用するアプリケーションによって決まります。いくつかのアプリケーションでは、必ずしもバランスの取れたレイテンシは必要ありません。たとえば、2つの関数を互いに配線する場合、それぞれの関数が等しく正反対の不釣り合いがあれば、不釣り合いを互いに解消することができます。ただし、アプリケーションによっては、バランスの取れたレイテンシは必須です。以下の例は、バランスの取れたデータパスが必要な場合を示します。

乗数として構成される関数(p = a 2)について考えてみましょう。ここでは、同じ値を関数のaおよびb入力端子に配線します。入力値を0で開始し、各クロックサイクルごとに1ずつ増加させる場合を考えます。このDSP48E関数には、以下のデータパスが含まれます。

この回路図で、a–>pデータパスには、以下の3つのレジスタが含まれます。

  • aレジスタ2
  • mレジスタ
  • p

このデータパスには3つのレジスタが含まれるため、データパスに3つのクロックサイクルのレイテンシがあります。ただし、b–>pデータパスに含まれるレジスタは2つのみであるため、データパスには2つのクロックサイクルのレイテンシがあります。このレイテンシの不釣り合いの意味は以下のとおりです。

  • a–>pデータパスの場合、n番目のクロックサイクルは、(n – 3)番目のクロックサイクル時に得たaの値を使用する
  • b–>pデータパスの場合、n番目のクロックサイクルは、(n – 2)番目のクロックサイクル時に得たaの値を使用する

この不釣り合いにより、p = a 2を計算することができません。以下の表は、最初の8つのクロックサイクル中のこの関数の入力と出力を示します。

クロックサイクル aの値 pの値 説明
1 0 N/A どちらのデータパスもこのクロックサイクル中に値を生成しません。
2 1 N/A
3 2 0 関数は、2番目のレジスタの初期値と0 (最初のクロックサイクルからのaの値) を乗算します。
4 3 0 関数は、0 (最初のクロックサイクルからのaの値) と1 (2番目のクロックサイクルからのaの値) を乗算します。
5 4 2 関数は、1 (2番目のクロックサイクルからのaの値)と2 (3番目のクロックサイクルからのaの値) を乗算します。
6 5 6 関数は、2 (3番目のクロックサイクルからのaの値)と3 (4番目のクロックサイクルからのaの値) を乗算します。
7 6 12 関数は、3 (4番目のクロックサイクルからのaの値)と4 (5番目のクロックサイクルからのaの値) を乗算します。
8 7 20 関数は、4 (5番目のクロックサイクルからのaの値)と5 (6番目のクロックサイクルからのaの値) を乗算します。

このアプリケーションで、レイテンシの不釣り合いにより、誤った計算結果が出ます。この場合、レジスタページから、別のレジスタをb–>pデータパスに追加します。これを行うと、回路図は以下のようになります。

上記の図で、両方のデータパスに3つのレジスタがあることに注目してください。これは、両方のデータパスで、n番目のクロックサイクルが(n – 3)番目のクロックサイクル時で得たaの値を使用することを意味します。

以下の表は、最初の8つのクロックサイクル中のこの関数の入力と出力を示します。

クロックサイクル aの値 pの値 説明
1 0 N/A どちらのデータパスもこのクロックサイクル中に値を生成しません。
2 1 N/A
3 2 N/A
4 3 0 関数は、0および0 (最初のクロックサイクル中のaの値) を乗算します。
5 4 1 関数は、1および1 (2番目のクロックサイクル中のaの値) を乗算します。
6 5 4 関数は、2および2 (3番目のクロックサイクル中のaの値) を乗算します。
7 6 9 関数は、3および3 (4番目のクロックサイクル中のaの値) を乗算します。
8 7 16 関数は、4および4 (5番目のクロックサイクル中のaの値) を乗算します。

データパスのレイテンシのバランスが取れたため、このDSP48E関数はp = a 2を正しく計算します。