ザイリンクス DDS (Direct Digital Synthesizer) Compiler ブロックは、サポートされるデバイスに、AXI4-Stream 準拠のインターフェイスを使用して、高性能で最適化された位相生成回路と位相を正弦曲線に変換する回路をインプリメントします。
このコアは、多数のアプリケーションで使用される正弦曲線波のソースとなります。DDS は、位相ジェネレーターと SIN/COS ルックアップ テーブル (位相を正弦曲線に変換) で構成されています。これらのパーツは個別に、またはこのコアを使用して一緒に使用できます。
アーキテクチャの概略図
DDS Compiler を理解するには、ブロックが FPGA ハードウェアにどのようにインプリメントされるかを知る必要があります。次に、DDS Compiler コアのブロック図を示します。このコアは、位相ジェネレーターと SIN/COS LUT で構成されています。これらのパーツは、個別に使用するか、一緒にオプションのディザー ジェネレーターと共に使用して、DDS 機能を作成できます。時分割多重化チャンネル機能がサポートされており、位相インクリメントとオフセット パラメーターを個別に設定可能です。
Phase Generator
位相ジェネレーターは、アキュムレータと、位相オフセットを追加するオプションの加算器から構成されています。コアをカスタマイズすると、位相インクリメントとオフセットは、[Fixed]、[Programmable] (CONFIG チャンネルを使用)、または [Streaming] (入力 PHASE チャンネルを使用) のいずれかに個別に設定できます。
[Fixed] に設定すると、コアをカスタマイズしたときに DDS 出力周波数が設定され、コアがデザインに組み込まれた後は変更できません。
[Programmable] に設定すると、CONFIG チャンネルの TDATA フィールドに、該当する入力 (PINC または POFF) のサブフィールド、または両方が [Programmable] に設定されている場合は両方が含まれます。PINC も POFF も [Programmable] に設定されていない場合、CONFIG チャネルはありません。
[Streaming] に設定すると、入力 PHASE チャンネルの TDATA ポート (s_axis_phase_tdata) には、当該する入力 (PINC または POFF) のサブフィールド、または両方が [Streaming] に選択されている場合は両方が含まれます。PINC も POFF も [Streaming] に設定されておらず、DDS が位相ジェネレーターを含むよう設定されている場合、入力 PHASE チャネルはありません。DDS を SIN/COS ルックアップのみに設定すると、PHASE_IN フィールドは入力 PHASE チャンネルの TDATA ポートを使用して入力されます。
SIN/COS LUT
SIN/COS ルックアップのみに設定すると、位相ジェネレーターはインプリメントされず、PHASE_IN 信号は入力 PHASE チャンネルを使用して入力され、ルックアップ テーブルを使用して SINE および COSINE 出力に変換されます。
正弦曲線波の対称性を利用することにより、メモリが効率的に使用されます。コアは、SINE のみの出力、COSINE のみの出力、または両方 (直交) 出力に設定できます。各出力は、個別にネゲートに設定できます。精度は、オプションのテイラー級数補正を使用して上げることができます。これは XtremeDSP スライスをサポートする FPGA ファミリで使用され、高速動作で高い SFDR を実現します。
このブロック特有の AXI ポート
次の表に示すように、[Configuration Options]、[Phase Increment Programmability]、[Phase Offset Programmability] オプションの選択に応じて、PHASE チャンネルまたは CONFIG チャンネル (あるいは両チャンネル) 用の異なるサブフィールド ポートをブロックで使用できます。
[Configuration Option] | [Phase Increment Programmability] | [Phase Offset Programmability] | ||
---|---|---|---|---|
選択したオプション | 使用可能なポート | 選択したオプション | 使用可能なポート | |
[Phase_Generator_only] [Phase_Generator_and_SIN_COS_LUT] |
[Programmable] | s_axis_config_tdata_pinc | [Programmable] | s_axis_config_tdata_poff |
[Streaming] | s_axis_phase_tdata_pinc | [Streaming] | s_axis_phase_tdata_poff | |
[Fixed] | なし | [Fixed] | なし | |
なし | なし | |||
[SIN_COS_LUT_only] | この設定では入力ポート s_axis_phase_tdata_phase_in を使用可能 |
ブロック パラメーター
Simulink® モデルでブロックのアイコンをダブルクリックすると、[Block Parameters] ダイアログ ボックスが開きます。
- Basic タブ
-
Basic タブには、次のパラメーターがあります。
- Configuration Options
- DDS の 2 つの部分を個別にインスタンシエートするか、一緒にインスタンシエートするかを指定します。次のいずれかを選択します。
- Phase_Generator_and_SIN_COS_LUT
- Phase_Generator_only
- SIN_COS_LUT_only
- System Requirements
-
- System Clock (MHz)
- アーキテクチャに関する決定を下し、指定した出力周波数から位相インクリメントを算出するため、ブロックにクロックを供給する周波数を指定します。これは、システム クロックからの固定比です。
- Number of Channels
- チャネルは DDS 内で時分割多重化されるので、チャネルごとの実効クロックに影響します。DDS では、1 ~ 16 本の時分割多重化チャネルがサポートされます。
- Mode of Operation
-
- Standard
- DDS 波形の出力周波数は、システム クロック周波数、位相アキュムレータの位相幅、位相インクリメント値の関数です。
- Rasterized
- DDS では、累積された位相は切り捨てられません。ラスタライズ動作は、望ましい周波数がシステム クロックの有理分数 (出力周波数 = システム周波数 * N/M、0 < N < M) である設定用です。M にサポートされる値は 9 ~ 16384 です。
注記: これらのモードの詳細は、 『DDS Compiler LogiCORE IP 製品ガイド』 (PG141) を参照してください。
- [Parameter Selection]
- System_Parameters または Hardware_Parameters を選択します。
- System Parameters
-
- Spurious Free Dynamic Range (dB)
- DDS で生成されるトーンのターゲット純度を指定します。これにより、出力幅と内部バス幅が設定され、さまざまなインプリメンテーションの決定事項が制御されます。
- Frequency Resolution (Hz)
- PINC および POFF 値の精度を設定します。精度を高くすると、大型のアキュムレータが必要となります。精度を低くすると、使用されるハードウェア リソースが削減されます。
- Noise Shaping
-
None、Phase_Dithering、Taylor_Series_Corrected、または Auto のいずれかを選択します。
Configuration Options に SIN_COS_LUT_only を選択している場合、Noise Shaping に選択できるオプションは None または Taylor_Series_Corrected のみです。Phase_Generator_Only を選択している場合は、Noise Shaping に選択できるオプションは None のみです。
- Hardware Parameters
-
- Phase Width
- 周波数精度と同様に、内部位相計算の幅を設定します。
- Output Width
- SFDR とほぼ同じで、出力精度と最小位相幅を設定します。出力の精度は、Noise Shaping の選択にも影響されます。
- Output Selection
-
- Sine_and_Cosine
- ブロックにサイン出力ポートとコサイン出力ポートの両方を配置します。
- Sine
- ブロックにサイン出力ポートのみを配置します。
- Cosine
- ブロックにコサイン出力ポートのみを追加します。
- Polarity
-
- Negative Sine
-
sine
出力をネゲートします。 - Negative Cosine
-
cosine
出力をネゲートします。
- Amplitude Mode
-
- Full_Range
- 最大振幅を選択します。
- Unit_Circle
- 正確な 2 のべき乗振幅を選択します。これは、[Full_Range] 振幅の約半分です。
- Implementation タブ
-
- Implementation Options
-
- Memory Type
- Auto、Distributed_ROM、または Block_ROM のいずれかを選択します。
- Optimization Goal
- Auto、Area、または Speed のいずれかを選択します。
- DSP48 Use
- Minimal または Maximal のいずれかを選択します。[Maximal] に設定すると、最大パフォーマンスを達成するため XtremeDSP スライスが使用されます。
- Latency Options
-
- Auto
- DDS は最高のパフォーマンスを得るため完全にパイプライン処理されます。
- Configurable
- 下の Latency プルダウン リストから、少ないパイプライン段数を選択できるようにします。通常これにより、消費されるリソースが少なくなります。
- Control Signals
-
- Has phase out
- DDS で
phase_output
ポートを有効にします。これは DDS の Phase_Generator 部分の出力なので、サイン出力とコサイン出力よりも SIN/COS ルックアップ テーブルのレイテンシ分だけ先に出力されます。 - ACLKEN
- コアのクロック イネーブル (aclken) を有効にします。コアのすべてのレジスタは、この制御信号により有効になります。
- ARESETn
- アクティブ Low の同期クリア入力。ACLKEN よりも優先されます。この信号にはパフォーマンスのため内部でレジスタが付けられているので、2 サイクル以上の ARESETn アクティブ パルスが必要です。1 サイクルのパルスでコアはリセットされますが、パルスに対する応答はその直後のサイクルでは現れません。
- Explicit Sample Period
-
- Use explicit period
- その下の [Sample Period] で指定したサンプル周期を使用します。
- AXI Channel Options タブ
-
- AXI Channel Options
-
- TLAST
-
(AXI チャンネルではなく) DDS チャンネルが複数ある場合に有効になります。TLAST は、DDS の最後の時分割多重化チャンネルの転送を示します。オプションは次のとおりです。
- Not_Required
- 入力 PHASE チャネルにも output チャネルにも TLAST は含まれません。
- Vector_Framing
- 入力 PHASE チャンネルおよび output チャンネルの TLAST は最後を示します。
- Packet_Framing
- TLAST は、入力 PHASE チャンネルから output チャネルに TDATA と同じレイテンシで転送されます。このモードでは、TLAST 信号は DDS で使用または解釈されません。このモードは、データストリームに信号を付随させる必要があるが DDS にはアプリケーションがない場合に、システム設計を容易にすることを意図しています。
- Config_Triggered
- これは、[Vector Framing] オプションを拡張したものです。このオプションでは、新しいコンフィギュレーション データがある場合、入力 PHASE チャンネルの TLAST で、CONFIG チャンネルからの新しいコンフィギュレーション データの取り込みをトリガーできます。これにより、リコンフィギュレーションを時分割多重化された DDS チャネルのサイクルに同期させることができます。
- TREADY
-
- Output TREADY
- output チャンネルで TREADY を有効にし、固有のバック プレッシャーのあるフル AXI ハンドシェイク プロトコルをサポートします。入力 PHASE チャンネルがある場合、その TREADY もこの制御により決定され、入力 PHASE チャンネルから出力チャンネルまでのデータパス全体がバック プレッシャーをサポートするかどうかか決定されます。
- TUSER Options
-
Input、DATA Output、および PHASE Output に次のいずれかのオプションを選択します。
- Not_Required
- 上記のどちらの使用も必要なく、当該するチャンネルに TUSER フィールドは含まれません。
- Chan_ID_Field
- このモードでは、TUSER フィールドにより転送用の時分割多重化チャンネルが特定されます。
- User_Field
- このモードでは、ブロックは TUSER フィールドの内容を無視し、内容を入力 PHASE チャネルから出力チャネルにそのまま渡します。
- User and Chan_ID_Field
- このモードでは、TUSER フィールドに
user
フィールドとchan_id
フィールドの両方が含まれます (chan_id
フィールドは最下位ビット)。チャンネルの記述に必要な最小限のビット数により、chan_id field
フィールドの幅が決定されます。たとえば、7 チャンネルには 3 ビット必要です。 - User Field Width
- DDS で処理されずに入力から出力に転送されるビット フィールドの幅を指定します。
- Config Channel Options
-
- Synchronization Mode
-
- On_Vector
- 時分割多重化されたチャネルの新しいサイクルが開始したときにリコンフィギュレーション データを適用します。
- On_Packet
- リコンフィギュレーションを TLAST チャネルでトリガーします。このモードは、TLAST が [Packet_Framing] に設定されている場合に使用可能です。このモードは、入力 TLAST インジケーターにより暗示されるパケットと関連付ける場合を対象としています。
- Output Frequency タブ
-
- Phase Increment Programmability
-
位相インクリメントを Fixed、Programmable、または Streaming のいずれかに指定します。[Programmable] を選択すると、ブロックに channel、data、および we 入力ポートが追加されます。
Basic タブの Configuration Options を Phase_Generator_and_SIN_COS_LUT に、Basic タブの Parameter Selection を Hardware Parameters に、Phase Offset Angles タブの Phase Increment Programmability を Fixed または Programmable に設定すると、次のフィールドが有効になります。- Output frequencies (MHz)
- 各チャンネルに対して、周波数をアレイに個別に入力できます。このフィールドは、Basic タブの Parameter Selection を System Parameters に、Phase Increment Programmability を Fixed または Programmable に設定すると有効になります。
- Phase Angle Increment Values
- Basic タブの Configuration Options を Phase_Generator_and_SIN_COS_LUT に、Basic タブの Parameter Selection wo Hardware Parameters に、Phase Offset Angles タブの Phase Increment Programmability を Fixed または Programmable に設定すると有効になります。値は 2 進数で入力する必要があります。範囲は 0 からアキュムレータの重みまでです (例: 2Phase_Width-1)。
- Phase Offset Angles タブ
-
- Phase Offset Programmability
- 位相オフセットを None、Fixed、Programmable、または Streaming のいずれかに指定します。Fixed または Programmable を選択すると、ブロックに channel、data、および we 入力ポートが追加されます。
- Phase Offset Angles (x2pi radians)
- 各チャンネルに対して、オフセットをアレイに個別に入力できます。入力した値には、2π ラジアンが掛けられます。このフィールドは、Basic タブの Parameter Selection を System Parameters に、Phase Increment Programmability を Fixed または Programmable に設定すると有効になります。
- Phase Angle Offset Values
- 各チャンネルに対して、オフセットをアレイに個別に入力できます。入力した値には、2π ラジアンが掛けられます。このフィールドは、Basic タブの Parameter Selection を Hardware Parameters に、Phase Increment Programmability を Fixed または Programmable に設定すると有効になります。
- Advanced タブ
- ブロック アイコンの表示
- Display shortened port names
- このオプションはデフォルトでオンになっています。オフにすると、ブロックに各ポートの完全な AXI 名が表示されます。
このブロックで使用されるその他のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプション を参照してください。
LogiCORE 資料
『DDS Compiler LogiCORE IP 製品ガイド』 (PG141)