[キット・モジュール]
MAX10 FPGA搭載USB SDRモジュール
MZ-MAX10USBSDR

位相と振幅を瞬間的に捕らえるI/Q型FFTスペクトラム・モニタ

資料

MAX10 FPGA搭載USB SDRモジュール MZ-MAX10USBSDR

内容物(写真1)

  1. 28ピンFPGA DIPモジュール(図1)
    • MAX10 FPGA“10M08SAU169I7G”搭載
    • MAX10内蔵A-Dコンバータ:サンプリング周波数 1MSPS,分解能 12ビット
    • USBブリッジIC“FT232HL”搭載
    • 基板サイズ:42.5×24.0mm(図2)
    • 電源:5V(USB供給)
  2. ピン・ヘッダ
写真1 本製品(MAX10 FPGA搭載USB DIPモジュール MZ-MAX10USBSDR)の外観 図1 本キット製品には,MAX10 FPGA“10M08SAU169I7G”とUSBブリッジIC“FT232HL”を搭載した28ピンDIPモジュールが同梱されている
(a)表面 (b)裏面
図2 本キットのプリント基板

パソコン連携のフルディジタル計測機やソフトウェア無線機を作れる28ピンのDIPモジュール

本製品(MZ-MAX10USBSDR)は,8000個のロジック・エレメントとサンプリング周波数1MSPSのA-Dコンバータを内蔵したMAX10 FPGA(10M08SAU169I7G,インテル製,図3)と,USBブリッジIC FT232HL(FTDI製)を搭載した28ピンのDIPモジュールです.

図3 MAX10 FPGAの内部構成

JTAG接続用の端子を搭載しており,USB-Blasterダウンロード・ケーブル(インテル製)などのデバッガ・ツールも利用できます.図4に回路図を示します.

(a)MAX10 FPGA周辺 (b)USBブリッジ FT232HLと電源
図4 本キットの回路図

初期状態で$I/Q$型FFTスペクトラム・モニタ回路が書き込まれている

振幅だけでなく位相も測れるFFT SDR

信号の強度に加えて,位相も測定することを「ベクトル計測」と言います.ベクトルとは向きをもった量です.代表的な測器はベクトル・ネットワーク・アナライザです.

人が音量や周波数だけでなく,音源の方向を認識できるのは,聴覚が位相を計測しているからです.信号処理を使って位相を制御すれば,広がりや奥行きを感じる音空間を作り出すことも可能です.

高周波の世界では,複数のアンテナに加える位相を制御することで,送受信する電磁波の方向を自在に変えたり絞ったりできます.

A-Dコンバータは1チャネル,ミキサ以降はまったく同じ回路が2チャネル並列になっています.

位相差90°の正弦波を任意波形発生器 AWGで生成し,A-Dコンバータの信号と掛け合わせて,$I$信号と$Q$信号を作ります.ここでは,sin波側を$I$チャネル,cos波側を$Q$チャネルとします.

AWGで生成する波形データは,パソコン側のプログラムで作って,SPI経由でMAX10のRAMに格納します.

sin波以外の信号を生成したり,$I/Q$を入れ替えたり,位相をずらしたいときは,パソコン側のプログラムを変更します.

具体的には,キャプチャ開始のコマンドを受けたら,1024ワードのデータを$I/Q$用の各RAMに蓄えて停止します.その後,SPIを介して$I/Q$それぞれが別々にパソコンに転送されます.$I/Q$各512ワードですが,必要に応じてパソコン側のプログラムを変更してデータ・サイズを調整してください.

図5に示すのは,本キット MZ-MAX10USBSDRに搭載されたMAX10 FPGAに初期状態で書き込まれている$I/Q$方式FFTスペクトル・モニタ回路です.

図5 本キット MZ-MAX10USBSDRのMAX10に書き込まれている$I/Q$方式FFTスペクトル・モニタ

振幅と位相を検出できる

図6に示すのは,$I/Q$復調器の動作です.

図6 $I/Q$復調器の動作

振幅$A$,周波数$ω$,位相$\phi$の未知信号をミキサに入力し,既知の$I/Q$基準信号$ri(t)$と$rq(t)$をそれぞれ乗算します.

ここでは説明を簡単にするため周波数ωは未知信号も基準信号も同じとします.ミキサの出力周波数は,次のように2つの入力の和と差になります.

     $ω±ω=0 または 2ω$

図6の中央波形のように周波数0のDCと倍の周波数$2ω$が加算された波形が出力されます.注目するのは周波数0(DC)の電圧です.実際にはLPFを通して,$2ω$を取り除きます(平均化する).

このミキサ出力電圧の$I/Q$比が基準信号と未知信号の位相差を表しています.それぞれのDC電圧を$v_i$,$v_q$とすると位相$\phi$は,

     $\phi = arctan(v_q/v_i)$

同時に次式で振幅も測定可能です.

     $A = \sqrt{v_i^2 + v_q^2}$

注目すべきは,LPFの応答速度以内で瞬間的な位相と振幅を同時に検出できる点です.このようすを図6右に示します.これを$I/Q$平面と呼び,未知の信号(赤矢印)はその方向で位相を,長さで振幅を表します.

変化し続ける信号の場合は,この矢印がさまざまな方向と長さに常に変化します. 未知信号$f_m$と基準信号$f_r$の周波数が異なる場合は,図7のように赤矢印は回転し続けます. 周波数が1Hz異なる場合は,1秒間に1回転で,$I/Q$の定義が図6の条件なら,$f_m > f_r$で反時計回りです.$f_m < f_r$なら時計回りです.

乗算の結果,$f_m$と$f_r$の差分周波数が,DC付近の周波数に変換されて検出できますが,$f_m$と$f_r$の大小関係の入れ替わりによって,正または負の周波数に変換されます. つまり,この$I/Q$平面での回転方向は,正または負の周波数を区別できることを表しています.

図7 未知信号$f_m$と基準信号$f_r$の周波数が異なる場合は,図6右の赤矢印はこのように回転し続ける

ミキサ2個の$I/Q$型FFT

FFT処理するとき,ミキサ2個の$I/Q$(ベクトル)方式とミキサ1個のスカラ方式では大きな違いがあります.

FFT関数には,一般に複素入力があり複素振幅を扱うことができます.しかし.A-D変換後の信号は実数成分しかもっていません.そこでA-D変換された信号をFFTする場合は,実数にだけ入力し,虚数入力はすべて0にします.

これに対して,$I/Q$分離された信号は複素数なので,$I$(In Phase)をFFTの実数入力,$Q$(Quadrature Phase)をFFTの虚数入力に,それぞれ入力します.

複素振幅をもった交流信号は,図7の周波数による回転の方向を表せます.つまり,正と負の両方の周波数を扱うことができます.

ミキサ2個を使ってsin/cos信号を掛け合わせる直交復調の場合,$I/Q$出力は複素振幅になります.これをそのまま図8のようにFFTの複素入力に入力します.

FFT処理の結果は,正負のスペクトルが別々に現れ,鏡像にはなりません.ただし,FFT出力は図9(a)(中)のように正負の周波数が逆になっているため,図9(a)(下)のように入れ替えると連続した周波数スペクトルになります.

図8 ミキサ2個の$I/Q$直交復調器
図9(a) ミキサ2個の復調器のスペクトラム

図9(b)に示すミキサ1個の場合と比べると,$I/Q$方式では周波数範囲は2倍に広がり,正負のスペクトルが重なることもありません.

図9(b) ミキサ1個の復調器のスペクトラム

FPGA内の$I/Q$データをパソコンに読み出して波形を表示

図10に示すのは,FPGA内のRAMに蓄えられた$I/Q$波形データ(最大1024ワード×2チャネル)をパソコン側へ読み出すSPIコマンドです.

図10 FPGA内のRAMに蓄えられた$I/Q$波形データ(最大1024ワード×2チャネル)をパソコン側に読み出す

$I$チャネルは“0001b”,$Q$チャネルは“1001b”です.最上位ビットが0か1でチャネル選択で統一しています.

パソコンからFPGA内のAWGに波形データを送るAWGコマンドも同様です.図11のように,$I$チャネルは“0010b”,$Q$チャネルは“1010b”です. AWGに$I/Q$を設定するには,$I$チャネルにsin波,$Q$チャネルにcos波を格納します.

図11 パソコンからFPGA内のAWGに波形データを送るAWGコマンド

動かしてみる

実験システム

図12に示す実験システムを使ってMZ-MAX10USBSDRを動かしてみます.測定できる周波数範囲は,AWG周波数(図12右)で変更できます.FIRフィルタのカットオフによる帯域制限で観測できる帯域は180kHzです.

図12 本キット MZ-MAX10USBSDRを動かす実験システム

本キットの内部設定はパソコンの専用ソフトウェアで行う

図13に示すように,$I$チャネルと$Q$チャネルをON/OFFできます. 図14に示すように,2チャネル同時に波形を表示することで,$I/Q$の位相比較が可能です

図13 本キットのFPGAの動作はパソコン側の専用ソフトウェアで設定する
図14 FPGAから波形データをパソコンに取り込んで2チャネル同時に波形を表示したところ

配列pixでForm2クラスにデータを渡します.配列のサイズは1024です.$I$チャネルを偶数アドレス,$Q$チャネルを奇数アドレスで多重化して渡しています.縦軸と横軸の倍率,縦軸のオフセットも変更できます.

$I/Q$平面の波形表示

図15に示すのは,$I/Q$平面の波形表示です.いわゆるオシロスコープの$X-Y$表示(リサージュ)です.位相回転が数十Hz以上と速いため連続した円に見えている状態です.数Hzなら信号は点になり,右回転と左回転を目視で確認できます.

図15 オシロスコープの$X-Y$表示(リサージュ)が可能

FFT測定

図16に示すのは,FFT結果のスペクトル表示です.$I/Q$対応なので,表示範囲は1チャネルの場合の2倍です.

図16 FFT結果のスペクトル表示

$V_{offset}$で縦軸のオフセットが変更できるため,フロア・ノイズの確認が容易です.$V_{offset}=1$が10dBに相当します.FFTでは倍率[V/div]は機能しません.

64sample/divがフルスケール(512ビン,±125kHz)です.中心(0Hz)を拡大する方向にスケールを変更できます.

正の周波数を入力してみる

次の条件で正の周波数を入力してみました(図18).

  • AWG:125kHz,Amp=1024
  • Input:187.5kHz,$1.0\mathrm{V_{P-P}}$

観測される周波数は,62.5kHz(=187.5kHz-125kHz)です.

FIRフィルタの減衰域が約-40dBなので,図17左側-62.5kHzのように大きなスプリアスが残りますが,FIRフィルタの遮断域の減衰量が大きくなるようFIR係数を調節すれば改善できます.

+62.5kHzの入力に起因する-62.5kHzのイメージ信号は,$I/Q$分離の誤差によるリークが原因の可能性がありますが,実際は入力の折り返しイメージです.サンプリング周波数250kHzに対して,観測周波数の62.5kHzは2のべき乗比なので,折り返しイメージ信号が同じ周波数(±62.5kHz)に集中しています.

図17 正の周波数(AWG:125kHz,Input:187.5kHz)を入力してスペクトラムを観測

負の周波数を入力してみる

次の条件で負の周波数を入力してみました(図18).

  • AWG:125kHz,Amp=1024
  • Input:115kHz,$1.0\mathrm{V_{P-P}}$

観測される周波数は,-10kHz(=115kHz-125kHz)です.

250kSPSで観測周波数(10kHz)は,2のべき乗比ではないため,折り返しイメージは帯域内に分散して,図18のようなフロア付近に低レベルのさまざまなスプリアスを生じます.-10kHzだけにスペクトルがあり,+10kHz側にはほとんどないため正負の周波数の分離は上手くいっています.

図18 正の周波数(AWG:125kHz,Input:115kHz)を入力してスペクトラムを観測

$S/N$

スプリアスの少ない図17の実験条件で,フロア・ノイズ・レベルを測ります.

図19は,$I$チャネルだけをONしてミキサ1個でFFTした結果です.正負の周波数の分離はできません.フロア・ノイズの測定は赤で示された範囲を積分し,密度として[dB/Hz]で表しています.

図19 $I$チャネルだけをONしてミキサ1個でFFTした結果

図20は,$I/Q$の2チャネルで復調した結果です.入力信号であるピークとフロア・ノイズのどちらも$I/Q$加算されて増えていますが,信号側は+6dBに対してノイズ側は+3dBの増加です.

図20 $I$チャネルと$Q$チャネルをONしてミキサ2個でFFTした結果

結果として,$I/Q$のほうが$S/N$が3dB改善しています.

$I/Q$はミキサ1個に対して,ノイズも信号も2チャネル分の電力を加算しているので,3dBずつ増します.$I/Q$側はさらに正負の周波数に分かれていた電力が片方に加算されて3dB増します.

FFT処理によってノイズの中から微小な信号を探し出すとき,この3dBはとても有効です.

$I/Q$型ソフトウェア無線機 MZ-MAX10USBSDRの応用

本MZ-MAX10USBSDRをはじめとする$I/Q$変復調器は,瞬間的な位相と振幅を捉えることができる「ディジタル通信」に応用されています.

ディジタル通信以外に,$I/Q$復調器の代表的な応用には,位相と振幅の周波数応答を調べられるFFTアナライザがあります.

使用例を図Dに示します.どちらもAWGの$I$チャネルまたは$Q$チャネルの正弦波をDUT(Device Under Test),例えばアナログ・フィルタを通してA-D変換し,$I/Q$復調すると,アナログ・フィルタの振幅と位相を測定します.

図D 本キットMZ-MAX10USBSDRの応用例

任意信号発生器 AWGは,周波数スイープするチャープ波形とすれば,DUTの位相と振幅の周波数特性を測定できます.

本キット(MZ-MAX10USBSDR)の測定範囲はDC~500kHzなので,PLLシンセサイザや電源回路などの評価に適しています.

コラム 計測も無線もソフトウェアで開発する時代

SDR(Software Defined Radio)は,ソフトウェアで動作する無線通信機器を指します.

理想的なSDRは,A-Dコンバータとディジタル信号処理(ハードウェア&ソフトウェア)だけで構成されています.SDRが従来の組み込み機器と違う点は次の3つです.

  1. 比帯域の大きなディジタル・フィルタの実装
  2. リアルタイム信号処理
  3. $I/Q$による高速な振幅と位相の検出

これらの特徴を組み合わせることで広帯域の信号を処理でき,雑音の中から目的の信号を切れ目なく連続で抽出する事ができるようになります.SDRで実現できる計測器とはたとえば次のようなものです(図G).

  • 脳波,心電図測定
  • 加速度,姿勢制御,振動解析装置
  • 広帯域なオーディオ測定
  • 超音波レーダ(魚群探知,流速計)
  • 超音波エコー診断装置
  • 信号発生装置(SG,AWG)
  • 電磁界可視化装置
  • スペクトラム・アナライザ
  • ネットワーク・アナライザ
  • 電波天文
  • GPS
  • 反射波を利用した伝送線路解析装置 TDR(Time Domain Reflectometry)
  • マイクロ波レーダ
図G 無線から計測まで,プログラマブルなRF信号処理システム“SDR”の応用範囲はどんどん広くなっている

最近のFPGAは,A-D/D-Aコンバータ,フラッシュ・メモリ,CPUなど,従来は外付けだったさまざまな回路を取り込んで,ワンチップ化しています.その結果.FPGA 1個でSDRを構成することが可能です.

普及タイプのFPGA MAX10(インテル製)は,サンプリング周波数 1MSPS,分解能 12ビットの立派なA-Dコンバータを内蔵しています.フラッシュ・メモリも内蔵しているため,コンフィグレーション用のメモリ(ROM)を外付けする必要もありません.

コラム 直交しているとは

図Aに示すのは,代表ディジタル変調方式「16QAM」(Quadrature Amplitude Modulation)のデータ配置(振幅と位相)です.$I/Q$平面上にシンボルを16個並べる変調方式です.シンボル時間間隔ごとにこれらの点のどこを波形が通過するかでデータを復調します.

図A 代表的なディジタル変調方式の16QAM(Quadrature Amplitude Modulation)のコンスタレーション

3段階の振幅と,12段階の位相の組み合わせで16個のシンボルが表現されます.$I/Q$のそれぞれが4値の振幅で構成されているわけです.

図Bに示すのは,復調後の$I/Q$に分離された信号(ベースバンドと呼ぶ)を$I/Q$平面上に表した結果です.それぞれが4値の振幅で表現されます.

図B 復調後の$I/Q$に分離された信号(ベースバンドと呼ぶ)を$I/Q$平面上に表した結果

図Bに示すように,独立したまったく別の信号である$I/Q$ベースバンドをミキサで合成して1つの変調信号に変換し,その変調信号を$I/Q$復調することで,お互いに影響を与えることなく$I/Q$ベースバンドに戻すことができます.

図Cは,スカラ計測器で位相を調べる方法を示しています.未知の信号は周波数も振幅も位相も不明なCWとします.

図C(b)に示す信号の平均値は0です.このとき,未知の信号が振幅変調されていても,出力には何も現れません.逆に$θ=0$°の図C(a)では,振幅変調された波形がミキサ出力に現れます.

このように,2つの信号($I$信号と$Q$信号)が互いにまったく影響を与えないとき「$I$信号と$Q$信号は直交している」と言います.

図C スカラ計測器で位相を調べる手順

ディジタル通信はこの直交性を上手く使って,振幅変調なら4値しか送れない情報を,16(=4×4)個の値と位相を組み合わせて,情報量を大幅に増やしています.

コラム アナログ・ミキサを2個にすると帯域は2倍に!

本MZ-MAX10USBSDRは,FPGA内部のディジタル処理で$I/Q$復調を実現していますが,マイクロ波以上の世界では,アナログ・ミキサ2個とA-Dコンバータ2個を使ったアナログ$I/Q$復調を採用する例が多いです.

アナログ回路は位相や振幅に誤差があり,DCオフセットの発生などかなり面倒な問題もありますが,それを補って余りあるメリットがあります. $I/Q$方式は周波数帯域が2倍に広がるという点は同じですが,$I/Q$分離後にA-D変換することで,A-Dコンバータに要求される帯域が半分ですみます. A-Dコンバータのサンプリング周波数が10GSPSなら,ディジタル$I/Q$で扱える帯域は5GHz以下ですが,アナログ$I/Q$なら10GHz以下まで実現できます.

これはA-Dコンバータの帯域をワンランク下げてコストダウンできることにつながります.あるいはA-Dコンバータのの性能の限界の2倍の帯域を実現できます.

コラム スカラ型のFFTモニタ

回路構成

図Eは,ベーシックなスカラ型FFTモニタの回路ブロックです.ミキサは1個で,1チャネルの信号を扱うスカラ型です.

位相は相対的な値なので,図EのAnalog入力に入ってきた未知信号の位相を測るためには,基準が必要です.

図Eの回路で位相を測りたいときは,任意信号発生器 AWGが発生する1MSPSの正弦波を基準にします.位相の基準は外部から入力しても良いのですが,図Eの回路の場合,外部から入力した基準信号の位相にPLLをロックさせて,AWG出力の位相と基準信号を同期させるのが一般的です.

未知の信号は周波数も振幅も位相も不明な連続信号(CW:Constant Wave)とします.ミキサ出力は$1/(ωt)$よりも十分に長い時間で平均化すればDCとなるため(図C),そこに注目します.

  1. 図Cの基準信号$r(t)$の周波数$ω$を変化させてミキサ出力の平均値が一定電圧になるよう調整する.このとき$m(t)$と$r(t)$の周波数は一致する
  2. 基準信号$r(t)$の位相$θ$を変化させて,ミキサ出力のDCが最大になるよう調整する.このときの$θ$が位相が一致したポイント$\phi=θ$である.ここを0°とする[図C(a)]
  3. 基準信号$r(t)$の位相$θ$を変化させて,ミキサ出力のDCが最小になるよう調整する.このときの$θ$が位相が反転したポイント$\phi=180°$である[図C(c)]
  4. 基準信号$r(t)$の位相$θ$を変化させて,ミキサ出力のDCが0Vになるよう調整する.このときのが$\phi=-90°$または$\phi=90°$のいずれかである.正負の区別はDCレベルの変化する向きで判別する[図2(b)]

DCレベルの最大値と最小値がわかれば,各位相を計算

     $\phi=arctan(D_{meas}/D_{max})$

を計算することで求められます.$D_{meas}$は計測されたDCレベル,$D_{max}$はDCの最大値です.

この方法の問題点は手順が複雑なのと,未知信号$r(t)$が安定したCWでないと計測できないことです.刻一刻とダイナミックに変化する未知信号の位相,振幅を瞬時に計測するには向きません.

図C スカラ計測器で位相を調べる手順
図E ベーシックなスカラ型FFTモニタの回路ブロック

ミキシング前後のスペクトラム

A-D変換された信号を$f_0$の正弦波とミキサで乗算して,その出力をFFTするシステムを考えてみます

ミキサ出力では図Fの$f_0$が0Hzに変換され,青のスペクトルは負の周波数,赤のスペクトルは正の周波数です.ミキサは1個なので,出力は1つしかありません.図9のように実数(Re)だけに信号を入力し,虚数(Im)側はすべて0を入力します.

FFT出力も虚数ですが,通常FFT結果はパワーだけが知りたいので,実数と虚数それぞれの2乗加算平方根を取ります. FFT結果は図9のような左右鏡像のスペクトルになるため,不要な右半分を捨てて左半分を結果とします.

図9のFFT結果に,図Fの正負のスペクトルが重なっていて,スプリアス特性や$S/N$の悪化をもたらしています.これは,実数側だけ使って複素FFTしてないため,正負周波数を区別できず重なってしまったのです.

これを回避するためには,ミキサの前に不要な正または負側だけの周波数を除去するBPF等が必要です.

図F A-D変換された信号を$f_0$の正弦波とミキサで乗算して,その出力をFFTするシステムのスペクトラム