はじめに
RFSoC を使った開発記事は世の中に増えてきましたが、意外と「RFDC IP Core とは何か?」を体系的に説明した記事が存在しません。
- RFDC と JESD204 の違い
- IP Core が提供している“本当の価値”
- タイル構造・同期・キャリブレーションが必要な理由
- 起動後に変更できるもの/できないもの
- RF の専門家が評価するポイント
これらを「Why(なぜ?)」に徹底的に答える形でまとめてみます。
1. RFDC IP Core とは何か?
まず前提から解説します。
RFDC(RF Data Converter)IP Core は、RFSoC に内蔵された高性能 RF-ADC / RF-DAC を FPGA から扱うための“制御・データ処理ブロック”です。
RFSoC の特徴:
- チップ内にマルチ GSPS レベルの高性能 ADC / DAC を内蔵
- そのままでは扱えないので、
→ デジタル側(AXI)とアナログ RF ブロックをつなぐ 玄関口 が必要 - その玄関ごと、内部処理も含めてまとめたのが RFDC IP Core
つまり RFDC の本質は:
“RF のアナログ世界” と “FPGA のデジタル世界” の橋渡しを
専用ハード(ADC/DAC)+専用デジタル処理(DDC/DUC)+
制御インターフェース(AXI)で統合する IP
RFDC は単なるラッパーではなく、内部にかなりの“頭脳”が入っています。
2. JESD204 と RFDC の違い(技術的核心)
RFSoC を使わない世界:JESD204 が必須
外付けの高速 ADC/DAC を使う場合:
- FPGA と ADC/DAC は JESD204 シリアルリンク で高速通信
- レーン配置、SYSREF 同期、スキュー補正など膨大な設計作業
- 高速信号の基板設計も超難易度
これは専門家でも頭を抱える世界です。
RFSoC の世界:ADC/DAC がチップ内に“生えている”
RFSoC では:
- ADC/DAC が同じシリコン内にあり
- シリアル化の必要がなく
- データもレジスタ制御も全て AXI インターフェースで済む
つまり JESD204 の苦行を全部すっ飛ばせます。
🟩 Why(なぜ?)
- なぜ JESD204 ではなく RFDC IP?
→ 外付け器をつなぐわけではなく、内蔵 ADC/DAC を扱うため。 - なぜ IP Core が必要?
→ 内蔵 ADC/DAC はハードマクロで、制御・補正・同期が
FPGA ロジックから触れる形に整備されている必要があるため。
RFSoC の強みの半分はこの点にあります。
3. RFDC の「中でできること」
RFDC は単に ADC と DAC を“出しっぱなし”にするのではなく、以下の高度な処理を ハードウェアで 担っています。
3.1 DDC(Digital Down Converter)
ADC 側:
- NCO(数値制御発振器)
- ミキサ(複素ベースバンド変換)
- フィルタ
- デシメーション
3.2 DUC(Digital Up Converter)
DAC 側:
- ベースバンド信号 → RF 周波数へアップコンバート
- 補正・フィルタ・インターポレーション
🟩 Why(なぜ SoC 内に DDC/DUC が統合されている?)
- RF を“生”でデジタル処理するのはサンプルレートが巨大すぎる
- 多くの応用では取りたい帯域は 狭い部分だけ
- 毎回 DDC/DUC を FPGA 側で自作するとコストが大きい
だから RFDC の中に入っている。
「高速サンプル → ベースバンドの必要帯域だけ抽出 → 軽量なデータへ」 という一般的な RF デジタル処理の黄金パターンを、ユーザーが意識せず使えるようにするためです。
4. 「キャリブレーション」がなぜ必要なのか?
RF 初学者が必ずつまずくポイントです。ここは 体重計のアナロジーで説明できます。
- 新品の体重計でもゼロ点がズレている → オフセット誤差
- 1 kg のおもりを乗せても 0.98〜1.02 kg になる → ゲイン誤差
- 中央は合ってるが端でズレる → 非線形歪み
RF ADC/DAC も全く同じで、しかも GHz 帯では誤差が致命的。
- I/Q の位相ずれ → 画像汚染
- ゲインずれ → SN 比低下
- 時間ずれ → フェーズドアレイが崩壊
🟩 Why(なぜキャリブレーションが不可欠?)
- 半導体のばらつき・温度・電源で誤差が変動する
- RF では“わずか数十ミリ度の位相誤差”が致命傷
- チャンネル間で相対比較する用途(MIMO, I/Q)は特に厳しい
- ソフト側では後補正できない種類の誤差が多い
だから RFDC IP Core は内部に
- ゲイン補正
- 位相補正
- オフセット補正
- 線形ity 補償
などの機構を持っている。
5. 「同期(Synchronization)」はなぜ RF で必須なのか?
RFSoC を使う目的の多くは
- 複数チャネルのビームフォーミング
- MIMO
- I/Q 処理
- 時系列での相関観測
など、“複数チャネルの相対位相”が意味を持つアプリケーションです。
5.1 一つのチャネルならまだ許される
単チャネルなら多少の位相ズレは FFT の結果に大影響はしません。
5.2 複数チャネルでは 1 サンプル以下のズレが致命傷
複数チャネル ADC で
- サンプリング開始タイミングが微妙にズレる
- 共有クロックのジッタがチャネル間で違う
こうなると:
- 位相差が物理量として意味を失う
- DOA(到来方向推定)が成り立たない
- I/Q の 90° が 89° になるだけで画像リークが増える
🟩 Why(なぜハードウェア同期が絶対必要?)
ソフトでは サンプリング瞬間のズレ を直せないためです。
だから RFDC は
- SYSREF
- Tile Sync
- Clock distribution
- チャネル同時スタート
などの機能を具備している。
これは RFSoC が 無線・レーダ・ビームフォーミング用途に本気で使われている証拠です。
6. なぜ「タイル」に分かれているのか?
RFSoC の ADC/DAC は
- ADC Tile × N
- DAC Tile × N
のように“タイル”に分割されています。
6.1 タイルは「独立したミニ RF サブシステム」
1 タイルには
- 4 チャネル程度の ADC(または DAC)
- 専用 PLL
- 専用補正ロジック
- 専用クロックツリー
が含まれます。
6.2 なぜタイル構造が必要?
- 熱源を分散できる(1 箇所に集めると焼ける)
- クロック配線が短くできる(スキュー抑制)
- アナログ回路同士が干渉しないように距離を置ける
- 4ch 単位の“モジュール化”により設計・製造コストを最適化できる
- 製品ラインアップ拡張(4ch/8ch/16ch)が容易
🟩 Why(なぜタイルなのか?)
大規模高周波回路を 1 つの巨大な ADC/DAC として設計するのは不可能だから。
小さな島(Tile)に切って、性能・熱・干渉・クロックのバランスを取るため。
7. RFDC の入出力インターフェース
7.1 入力(ADC 側)
- RF アナログ入力ピン
- サンプリングクロック
- SYSREF
- AXI4-Lite(設定)
7.2 出力(ADC → FPGA)
- AXI4-Stream(デジタルサンプル)
7.3 DAC 側
- AXI4-Stream でデジタルデータ入力
- RF 出力へアナログ信号を送出
8. 起動後に「変更できる」もの/「できない」もの
8.1 変更できるもの(ソフト制御)
- DDC/DUC の NCO 周波数
- ゲイン/位相補正パラメータ
- デシメーション比/インターポレーション比
- タイルごとのミキサ設定
Why
→ アプリや温度によって変える必要があるから。
8.2 変更できないもの(ビットストリーム依存)
- 有効チャネル数
- AXI ポート構成
- 最大サンプルレート
- タイル配置(物理的制約)
Why
→ 配置配線・クロックツリーが変わるため、合成が必要。
9. RFDC IP Core の“すごいところ”
① DDC/DUC をハードで統合
これは FPGA ロジックを大幅に節約し、高速化し、消費電力を抑えます。
② 内蔵 ADC/DAC をわずか数行の API で扱える
- Vitis のドライバで初期化・補正・設定が容易
- 無線・レーダ・観測用途で圧倒的な開発スピード向上
③ JESD204 を使わずにマルチ GSPS ADC/DAC を利用可能
→ 基板コストと設計リスクを劇的に削減。
④ タイル同期で大規模 MIMO/アレイ構築が容易
→ 従来なら専用ハードが必要だった。
⑤ 高度なキャリブレーション機構を統合
→ I/Q バランス・ゲイン誤差・位相誤差が最初から抑制されている(理想的な場合)。
10. まとめ
RFDC IP Core を“Why”でまとめ直すとこうなります:
-
なぜ必要?
→ 内蔵 RF ADC/DAC をデジタル世界へ接続する玄関だから。 -
なぜキャリブレーション?
→ 半導体の誤差が RF では致命的だから。 -
なぜ同期?
→ MIMO や I/Q など相対位相が物理量として重要だから。 -
なぜタイル?
→ 熱・干渉・クロック・製造のすべての観点で大規模化が困難だから。 -
なぜ IP Core?
→ DDC/DUC や補正機能を統合し、ユーザーが即座に使える形にまとめた“RF 部分の OS”だから。
Appendix:RFDC GUI パラメータの「Why 辞書」
Vivado の RF Data Converter IP の GUI でよく見るパラメータを中心に、「これは何か?」「なぜ存在するのか?」「どう決めればいいか?」をセットで整理しています。厳密な名称は PG269 の User Parameters / Mixer Settings の表を元にしています。
A. タイル単位の基本設定(ADC/DAC Tile n …)
1. ADC Tile n Enable / DAC Tile n Enable
-
What:
そのタイル(4ch くらいの島)を 有効にするか/しないか。 -
Why:
- 使わないタイルまで起こすと 電力と熱の無駄。
- 配線も増えてタイミング制約が厳しくなる。
-
**How **:
- 最初の実験は「本当に使うタイルだけ ON」。
- 例:RFSoC4x2 の一つの ADC タイルだけ有効にして、ループバック実験から。
2. Sampling Rate(ADC/DAC Tile n Sampling Rate)
-
What:
そのタイルの 物理サンプリング周波数 [GSPS] を指定。 -
Why:
- RF で「どこまでの周波数をサンプリングできるか」を決める基本設定。
- DDC/DUC の周波数、AXI のデータレート、フィルタ帯域が全部これに紐づく。
-
How:
- 拾いたい帯域 B に対してざっくり
F_s \gtrsim 2B \times \text{(安全マージン)} - チュートリアルでは「1.0 GSPS」「2.0 GSPS」などキリのよい値で試す。
- 拾いたい帯域 B に対してざっくり
3. Refclk Frequency / PLL Enable / Feedback Divider (FBDIV)
-
What:
- Refclk:タイル内部 PLL に入る基準クロック。
- FBDIV:PLL の倍率設定。
- PLL Enable:外部クロックをそのまま使うか、PLL で生成するか。
-
Why:
- サンプリングクロックの“源泉”をどう作るかを決める。
- PLL を使うと柔軟だが、ジッタが増える場合もあり、外部クロック品質とのトレードオフ。
-
How:
- 評価ボード推奨設定(UG/リファレンスデザイン)をまず真似する。
- 特別な理由がなければ PLL Enable = TRUE, Refclk はボード準拠。
4. Fabric Frequency / Outclk Frequency
-
What:
- Fabric Frequency:AXI4-Stream 側で見える想定データレート由来のクロック。
- Outclk:実際に PL(FPGA ロジック)に出てくるクロック。
-
Why:
- 「PL でどのくらいの周波数のクロックでデータをさばくか」の前提となる。
- ここが高すぎると、PL のタイミングが死ぬ。
-
How:
- 最初は 250 MHz 前後を目安(PG269 のデフォルトもこのあたり)
- HLS/RTL が 250 MHz 出ないなら、デシメーションで落とす/ファブリッククロックを下げる。
5. Link Coupling(AC / DC)
-
What:
入力カップリング(AC カップリング or DC カップリング)の想定。 -
Why:
- AC:DC 成分をカット、オフセットに強いが、低周波は苦手。
- DC:DC〜低周波まで観測したいときに必要だが、オフセット・ドリフトに気を遣う。
-
How:
- 無線っぽい「バンドパス信号」→ AC カップリング。
- ゆっくり変化する波形(制御信号など)→ DC カップリング(ボード側回路も要確認)。
B. コンバータ(チャネル)ごとの設定(ADC/DAC n within Tile)
6. Converter Enable(Channel Enable)
-
What:
各タイル内の 各チャネル(ADC ch0〜3, DAC ch0〜3)を有効化するフラグ。 -
Why:
- 使わないチャネルを OFF にすることで消費電力・ノイズ源を削減。
- 配線も不要になるためデザインがすっきりする。
-
How:
- 最初は 1 チャネルだけ有効化して動かしてみる。
- MIMO/アレイ実験時に複数チャネルを順次追加。
7. Analog Input/Output Type(Real / I/Q)
-
What:
- 入出力が「実数(Real)」か「複素(I/Q)」かを指定。
- ※ RF-ADC 側ではアナログ入力は基本 Real。ただし内部で I/Q に変換されて出てくるモードもある。
-
Why:
- DDC/DUC 後の デジタル信号形式を決定し、
- 後段の DSP(FIR, FFT, OFDM 処理など)の設計に直結する。
-
How:
- シンプルなスペクトル観測 → Real で OK。
- IQ ダウンコンバートや変調/復調 → I/Q モードを活用。
8. Data Type / Data Width(AXI データ幅)
-
What:
AXI4-Stream 上でのビット幅(例:16 bit, 8 bit, 2’s complement など)。 -
Why:
- ビット幅を増やすと SNR に余裕が出るが、データレートも跳ね上がる。
- データ幅とクロックの組み合わせで PL の帯域設計が変わる。
-
How:
- 初学者&HLS なら 16 bit 整数 I/Q くらいが扱いやすい。
- 帯域が厳しくなってきたら、ビット幅縮小+高クロックも検討。
C. DDC / DUC & フィルタ設定
9. Decimation / Interpolation Mode(1x, 2x, 4x, 8x, …)
-
What:
- ADC 側:デシメーション(サンプルレートを下げる)
- DAC 側:インターポレーション(サンプルレートを上げる)
-
Why:
- 「欲しい帯域だけを残して、データレートを落とす/上げる」ため。
- デシメーションフィルタは passband が Nyquist の 80% 程度など、仕様に依存
-
How:
- 求める信号帯域 B, サンプルレート Fs から、
を満たすように decimation を選ぶ(0.4 は目安)。
B \le 0.4 \times \frac{F_s}{\text{decimation}} - 最初は 1x か 2x 程度で試し、帯域とデータレートを確認。
- 求める信号帯域 B, サンプルレート Fs から、
10. Filter Type / Mode
-
What:
DDC/DUC の内部 FIR/半帯域フィルタなどの種類やモード。 -
Why:
- ノイズ帯域を削り SNR 向上
- エイリアシング/イメージ抑圧
- 通信規格(LTE, 5G など)に合わせた帯域整形
-
How:
- チュートリアルでは基本のデフォルト設定で OK。
- 特定の帯域を狙いたいときに PG269 の表を見て選ぶ。
D. ミキサ(Mixer / NCO)まわり
11. Mixer Type(Bypassed / Coarse / Fine)
-
What:
- Bypassed:ミキサなし(そのまま通す)
- Coarse:Fs/2, Fs/4 などの簡易ミキサ
- Fine:NCO を使った任意周波数ミキサ
-
Why:
- そもそも「どの周波数帯をベースバンドに落とすか」を決める。
- Coarse はハード的に軽く、高速・単純。Fine は柔軟だが計算コスト大。
-
How:
- 最初の動作確認:Bypassed でスペクトルを見る。
- 任意の RF 帯を狙う:Fine を使って NCO 周波数を設定。
12. Mixer Mode(Real→Real / Real→I/Q / I/Q→I/Q / Bypass)
-
What:
入出力の形式に応じて、ミキサの変換モードを選択。 -
Why:
- Real→I/Q:実信号 → 複素ベースバンドへダウンコンバート。
- I/Q→I/Q:複素信号同士の周波数シフト。
- Real→Real:シンプルな周波数反転など。
-
How:
- IQ ダウンコンバート実験 → Real→I/Q。
- もともと I/Q で持っている信号を周波数シフト → I/Q→I/Q。
13. Coarse Mixer Frequency(0, Fs/2, Fs/4, -Fs/4)
-
What:
Coarse Mixer で使う固定周波数のキャリア。 -
Why:
- 例えば Fs/2 でミックスすると、スペクトルを左右反転できる。
- 低コストで簡単な周波数移動やイメージ抑圧ができる。
-
How:
- 特定の周波数計画(例えば SSB 抑圧など)があるときに使う。
- 「なんとなく」の段階では使わなくてもよい(Bypass or Fine で十分)。
14. Fine Mixer Frequency(任意周波数)
-
What:
NCO が出すキャリアの周波数(-10 GHz ~ 10 GHz)。 -
Why:
- 「観測対象のキャリア周波数に合わせて」ベースバンドに落とすため。
- RFSoC の本当の強さはここ:任意キャリアの DDC/DUC が全部中に入っている。
-
How:
- 例えば 観測したい信号が 1.2 GHz、サンプルレート 2.0 GSPS なら
Fine Mixer Frequency = 1.2 GHz などとしてベースバンドに落とす。 - 実際はエイリアシングも加味した周波数計画が必要。
- 例えば 観測したい信号が 1.2 GHz、サンプルレート 2.0 GSPS なら
15. Fine Mixer Phase
-
What:
NCO の出力位相(-180°〜180°)。 -
Why:
- I/Q の位相合わせ
- ビームフォーミングやキャリブレーションで基準位相を揃える用途。
-
How:
- 最初は 0° 固定でよい。
- マルチチャネルで波形をぴったり重ねたいときに、微調整として使う。
E. その他よく出てくる設定
16. Nyquist Zone / Analog Band Selection
-
What:
どのナイキストゾーンの信号を観測対象とするか(第 1〜4 ゾーンなど)。 -
Why:
- サンプリング周波数より高い RF も「折り返し」として観測できるため、
どのイメージを信号として解釈するかを決める必要がある。
- サンプリング周波数より高い RF も「折り返し」として観測できるため、
-
How:
- 最初は第 1 ナイキストゾーン(0〜Fs/2)を素直に使う。
- 高いキャリアをサブサンプリングするときに上位ゾーンを活用。
17. Observation / Feedback Path(一部の DAC タイル設定)
-
What:
パワーアンプ観測用などの「フィードバック経路」を使うかどうか。 -
Why:
- DPD(Digital Pre-Distortion)など、「出した信号をモニタして補正する」用途に必要。
-
How:
- 初学者は「何か難しいことに使うんだな」くらいでも OK (だと思う...)。
- PA 線形化や無線システムの高級機能で本領発揮。
18. Clocking Mode(Internal / External)
-
What:
サンプリングクロックを内蔵 PLL で作るか、外部クロックをそのまま使うか。 -
Why:
- 内部 PLL:柔軟だがジッタが増えることも。
- 外部高精度クロック:装置が複雑だが SN 比向上。
-
How:
- 評価ボードのリファレンスを踏襲(たいてい内部 PLL 利用)。
- 本気の実験では高品位外部クロック+PLL オフも検討。
F. 実務的「優先度マップ」
パラメータが多すぎて混乱する学生向けに、優先度をざっくり示すと:
-
最優先(動作そのものに直結)
- Tile Enable / Channel Enable
- Sampling Rate / Fabric Frequency
- Decimation / Interpolation
- Mixer Type / Mode / Fine Mixer Frequency
-
次点(性能チューニングで効いてくる)
- キャリブレーション関連(QMC, gain/phase/offset)
- Filter Mode / Nyquist Zone
- PLL Enable / Refclk 設定
-
高度な応用で効いてくる
- フィードバックパス
- Fine Mixer Phase & マルチチャネル位相合わせ
- 観測用タイルと送信用タイルのクロス同期
関連記事