スペクトラムアナライザの原理 — 掃引スーパーヘテロダイン方式とRBW・VBWを理解して正しく測る

オシロスコープの画面に映る2つの波形が、目で見る限りそっくりだったとします。ところが片方は「200Hzと260Hzが混ざった2つの音」で、もう片方は「230Hzの純粋な音」だったりします。時間波形をいくら睨んでも、この違いはなかなか見抜けません。ここで登場するのが、信号を「周波数の軸」に並べ替えて見せてくれる道具、スペクトラムアナライザ(スペアナ)です。

スペアナは、無線や電子回路の現場で「その信号がどの周波数に、どれだけのエネルギーを持っているか」を測る基本の計測器です。たとえば送信機が法律で許された帯域からはみ出していないか(占有周波数帯幅)、隣のチャネルにどれだけ電力を漏らしているか(隣接チャネル漏洩電力)、増幅器が余計な高調波やスプリアスを出していないか、発振器の周波数がどれくらい濁っているか(位相雑音)——これらはすべてスペアナで測ります。裏を返せば、スペアナの読み方を知らないと、電波を出す機器を正しく評価できません。

本記事では、最も広く使われている掃引スーパーヘテロダイン方式のスペアナが内部で何をしているのかを、ブロック図から一つずつ追いかけます。そのうえで、測定結果を左右する2つの重要なつまみ、RBW(分解能帯域幅)VBW(ビデオ帯域幅)が何をしているのかを、実際に信号を作って確かめながら理解していきます。

本記事の内容

  • スペアナが「周波数軸で測る」とはどういうことか
  • 掃引スーパーヘテロダイン方式の構成と動作イメージ
  • RBWが分解能・雑音フロア・掃引時間をどう決めるか(導出つき)
  • VBW・検波モードの使い分けと、FFT方式との得失
  • スペアナで測る代表量(高調波・占有帯域幅・ACLR・位相雑音)

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

時間軸で見るか、周波数軸で見るか

まず「なぜ周波数軸で見たいのか」を体で感じておきましょう。次の図は、左に時間波形、下にそのスペクトルを並べたものです。信号Aは200Hzと260Hzの2つの正弦波を足したもの、信号Bは230Hzの単一正弦波です。

時間波形は似ていてもスペクトルで見ると別物になる例

上段の時間波形をパッと見ると、どちらも「そこそこ速く振動している波」で、区別は容易ではありません。ところが下段のスペクトルを見ると一目瞭然です。信号Aは200Hzと260Hzの2本の線として、信号Bは230Hzの1本の線として現れます。時間の情報を周波数の情報に置き換えるだけで、隠れていた構造がくっきり浮かび上がるのです。

私たちが本当に知りたいのは、多くの場合「どの周波数に、どれだけのエネルギーがあるか」です。送信電力の分布、混ざり込んだ雑音、意図しない高調波——これらはすべて周波数軸の上で語られます。スペアナは、この周波数軸の絵(スペクトル)を実測して画面に描く装置だ、とまず押さえてください。

では、スペアナはどうやってこの絵を描いているのでしょうか。次に内部の仕組みを見ていきます。

掃引スーパーヘテロダイン方式の構成

スペアナと聞くと「入力信号をFFTしているのだろう」と思うかもしれません。しかし高い周波数(GHz帯)まで広い範囲を高いダイナミックレンジで測るために、伝統的なスペアナは掃引スーパーヘテロダイン方式という、まったく別の巧妙な仕掛けを使います。イメージのキーワードは「狭い窓を周波数軸の上でスライドさせて、各周波数のエネルギーを順番に覗いていく」です。

次の図が全体の構成です。上段がブロック図、下段が「RBWフィルタという狭い窓が周波数軸を左から右へ舐めていく」動作イメージです。

掃引スーパーヘテロダイン方式スペクトラムアナライザの構成ブロック図とRBWフィルタが周波数軸を舐める様子

上段のブロック図の信号の流れを、左から順に説明します。

  1. 入力減衰器(アッテネータ):入力信号が強すぎるとミキサが歪んで、実在しない偽の成分(相互変調)を作ってしまいます。それを防ぐために、まず適切に信号を減衰させます。
  2. ミキサ:入力信号 $f_{\text{in}}$ と、次の局部発振器の信号 $f_{\text{LO}}$ を掛け合わせます。掛け算の結果、和と差の周波数 $f_{\text{LO}} \pm f_{\text{in}}$ が現れます。
  3. 局部発振器(掃引LO):これがこの方式の心臓部です。$f_{\text{LO}}$ を時間とともに連続的に変化(掃引)させます。
  4. IFフィルタ(RBWフィルタ):中心周波数 $f_{\text{IF}}$ が固定された、非常に狭い帯域通過フィルタです。この通過帯域幅がRBW(分解能帯域幅)です。
  5. 包絡線検波器:IFフィルタを通ってきた信号の振幅(大きさ)を取り出します。
  6. ビデオフィルタ(VBW):検波後の振幅の時間変化をなめらかにする低域通過フィルタです。
  7. 表示:横軸を周波数、縦軸を振幅(多くはdB)として画面に描きます。

ここで動作の要を理解しましょう。IFフィルタの中心周波数 $f_{\text{IF}}$ は固定です。ミキサの出力のうち、ちょうど $f_{\text{IF}}$ になった成分だけがこのフィルタを通り抜けます。差の周波数を使うとすると、通り抜ける条件は

$$ \begin{equation} f_{\text{LO}} – f_{\text{in}} = f_{\text{IF}} \quad\Longleftrightarrow\quad f_{\text{in}} = f_{\text{LO}} – f_{\text{IF}} \end{equation} $$

です。つまり、ある瞬間の $f_{\text{LO}}$ に対して、入力の中の特定の1つの周波数 $f_{\text{in}} = f_{\text{LO}} – f_{\text{IF}}$ だけがフィルタを通過します。$f_{\text{LO}}$ を掃引すると、通過を許される $f_{\text{in}}$ が連動して動きます。結果として、固定された狭いフィルタの窓が、あたかも入力の周波数軸の上を左から右へスライドしていくかのように振る舞うのです。下段の図の、色つきのガウス形の窓が右へ移動していくイメージがまさにこれです。

掃引ジェネレータは、この $f_{\text{LO}}$ の掃引と画面の横軸を同時に動かします。だから「LOがいまこの周波数を見ている」ことと「画面のこの横位置」がぴったり対応し、周波数軸のスペクトルが描かれます。

この「狭い窓で順に覗く」という仕掛けを理解すると、次の疑問が自然に湧いてきます。窓の幅、つまりRBWはどれくらいにすればよいのでしょうか。実はこのRBWこそ、測定のほとんどすべてを左右する主役です。

RBW(分解能帯域幅)— 近くの信号を分けられるか

RBWとは、IFフィルタの通過帯域幅そのものです。日本語では分解能帯域幅と訳します。名前のとおり、これが「周波数軸でどれだけ細かく分解できるか」を決めます。

直感的には、窓の幅がRBWです。幅の広い窓で覗くと、近くにある2つの信号が窓の中に同時に入ってしまい、1つの山にしか見えません。窓を狭くすれば、2つの信号を別々のタイミングで捉えられ、2つの山として分離できます。

これを実際に確かめてみましょう。1000Hzと1050Hz、たった50Hzしか離れていない2つの正弦波を、RBWを変えて観測します。

import numpy as np

fs = 10000       # サンプリング周波数 [Hz]
N = 40000
t = np.arange(N) / fs
f1, f2 = 1000, 1050          # 50Hz差の2トーン
sig = np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t)

def spectrum_dB(sig, fs, rbw_hz):
    """RBWを模擬: 狭いRBWほど長い窓(=細かい周波数分解能)を使う。"""
    N = len(sig)
    seg = int(np.clip(fs * 1.5 / rbw_hz, 64, N))  # 狭RBW→長い窓
    win = np.hanning(seg)
    step = seg // 2
    acc, cnt = None, 0
    for start in range(0, N - seg + 1, step):
        X = np.abs(np.fft.rfft(sig[start:start+seg] * win))**2
        acc = X if acc is None else acc + X
        cnt += 1
    acc /= max(cnt, 1)
    fr = np.fft.rfftfreq(seg, 1/fs)
    return fr, 10*np.log10(acc / acc.max() + 1e-12)

for rbw in [200, 60, 15]:
    fr, Pd = spectrum_dB(sig, fs, rbw)
    # プロットは省略(下図参照)

RBWを200Hz、60Hz、15Hzと狭めていったときのスペクトルが次の図です。

RBWを狭くすると50Hz差の2トーンが分離できる様子

RBWが200Hz(灰色)のときは、2つのトーンが1つの丸い山に融合して、まったく分離できていません。RBWを60Hz(橙)にすると2つのピークがうっすら見え始め、15Hz(赤)まで狭めると、1000Hzと1050Hzの2本がくっきり谷を挟んで分離します。窓を狭くするほど、近接した信号を分けて見られるという原則がそのまま現れています。おおまかな目安として、2つの信号を分離するにはRBWを両者の周波数差より十分小さくする必要があります。

RBWは分解能を上げる魔法のつまみのように見えますが、そう単純ではありません。RBWを狭めると、実は雑音フロアと掃引時間という2つの副作用がついてきます。まず雑音フロアから見ていきましょう。

RBWと雑音フロア — 10 log(RBW) の法則

スペアナの画面には、信号がないところにも「もやもやした床」が見えます。これが雑音フロアです。その正体は、スペアナ自身の内部で発生する熱雑音などです。信号が微弱だと、この床に埋もれて見えなくなります。どこまで小さい信号を測れるかの限界をDANL(Displayed Average Noise Level, 表示平均雑音レベル)と呼びます。

ここで大事なのは、雑音とCW(連続波、単一周波数の正弦波)ではRBWに対する振る舞いが正反対だという点です。

  • CW信号:エネルギーが1つの周波数に集中しています。RBWフィルタの窓を狭めても、その1点はずっと窓の中に入り続けるので、表示レベルは変わりません
  • 雑音:エネルギーが全周波数に一様に広がっています。窓を狭めると、窓の中に取り込む雑音の量が窓幅に比例して減るので、表示レベルは下がります

雑音のパワーは帯域幅に比例します。RBWを $B$ とすると、フィルタを通過する雑音パワーは $B$ に比例し、dB表示では

$$ \begin{equation} \text{雑音フロア [dB]} = 10 \log_{10} B + (\text{一定}) \end{equation} $$

となります。つまりRBWを $1/10$ にすると、雑音フロアは $10\log_{10}(1/10) = -10\,\text{dB}$、すなわち10dB下がるわけです。実際に、強いCWと白色雑音を混ぜた信号でRBWを変えてみます。

fs, N = 20000, 60000
t = np.arange(N) / fs
rng = np.random.default_rng(20260701)
sig = rng.standard_normal(N) + 3.0*np.sin(2*np.pi*4000*t)  # 雑音 + 強いCW

floors, rbws = [], [500, 150, 45]
for rbw in rbws:
    fr, Pd = spectrum_dB(sig, fs, rbw)
    mask = (fr > 500) & (fr < 3500)      # トーンを避けた帯域の中央値
    floors.append(np.median(Pd[mask]))
print([f"{x:.1f}" for x in floors])       # -> ['-19.5', '-24.8', '-29.8']
print(floors[0]-floors[2], "dB, 理論", 10*np.log10(500/45))  # 10.3 dB, 10.5

RBWを狭くすると雑音フロアが10log(RBW)則で下がる様子

左のスペクトルを見ると、RBWを500Hz→150Hz→45Hzと狭めるにつれ、雑音フロアだけがずるずる下がり、4000HzのCWピークは同じ高さに留まっています。右のグラフは、雑音フロアをRBWに対して対数軸でプロットしたものです。実測点(青)が $10\log_{10}(\text{RBW})$ の直線(赤破線)にきれいに乗っています。RBWを500Hzから45Hzへ(約1/11に)狭めると、雑音フロアは実測で10.3dB下がり、理論値 $10\log_{10}(500/45)=10.5\,\text{dB}$ とほぼ一致しました。

この性質は実用上とても重要です。微弱な信号を雑音フロアの下から掘り出したいときは、RBWを狭くすればよい——CWは沈まず雑音だけが沈むので、信号対雑音比が改善するのです。ではRBWを好きなだけ狭くすればよいかというと、そうはいきません。RBWを狭めると、測定にかかる時間が急激に増えます。次はその理由を導出します。

掃引時間の制約 — なぜ Span/RBW² に比例するのか

RBWを狭めるとうれしいことばかりに見えますが、大きな代償があります。掃引にかかる時間が、RBWの2乗に反比例して激増するのです。式で書くと、周波数の掃引範囲を $\text{Span}$、分解能帯域幅を $\text{RBW}$ として

$$ \begin{equation} T_{\text{sweep}} \propto \frac{\text{Span}}{\text{RBW}^2} \end{equation} $$

となります。なぜ2乗なのか、これはフィルタの物理から自然に出てきます。順を追って導きましょう。

ゴール:狭いフィルタほど「応答が遅い」ことを使って、掃引時間の下限を見積もる。

まず、帯域幅 $B$ のフィルタが信号に応答するのにかかる時間 $\tau$ を考えます。フィルタの帯域幅と応答時間には、フーリエ変換の性質から反比例の関係があります。狭いフィルタは、いわば「反応が鈍い」のです。

$$ \begin{equation} \tau \approx \frac{k_1}{\text{RBW}} \end{equation} $$

$k_1$ はフィルタの形で決まる1程度の定数です。RBWフィルタの通過帯域を掃引が通り過ぎるとき、フィルタが十分に立ち上がって正しい振幅を出すには、RBWフィルタの窓が1つの信号の上に、少なくともこの応答時間 $\tau$ のあいだ留まっていなければなりません

次に、掃引の速さを考えます。全体で $\text{Span}$ の幅を $T_{\text{sweep}}$ かけて掃引するので、周波数軸を舐める速さは

$$ \begin{equation} v = \frac{\text{Span}}{T_{\text{sweep}}} \quad [\text{Hz/s}] \end{equation} $$

です。1つの信号(幅はほぼRBW)を窓が通過するのにかかる時間は「窓の幅 ÷ 掃引の速さ」なので、

$$ \begin{equation} t_{\text{通過}} = \frac{\text{RBW}}{v} = \frac{\text{RBW} \cdot T_{\text{sweep}}}{\text{Span}} \end{equation} $$

となります。ここで「通過にかかる時間 $t_{\text{通過}}$ が、フィルタの応答時間 $\tau$ 以上でなければならない」という条件 $t_{\text{通過}} \ge \tau$ を課します。式(4)と式(6)を代入すると、

$$ \begin{equation} \frac{\text{RBW} \cdot T_{\text{sweep}}}{\text{Span}} \ge \frac{k_1}{\text{RBW}} \end{equation} $$

両辺を $\text{RBW}$ で割り、$\text{Span}$ を掛けて $T_{\text{sweep}}$ について解くと、

$$ \begin{equation} T_{\text{sweep}} \ge \frac{k_1 \cdot \text{Span}}{\text{RBW}^2} \end{equation} $$

が得られます。これで、掃引時間がRBWの2乗に反比例することが導けました。分子に $\text{Span}$、分母に $\text{RBW}^2$ が入る形は、上の2つの効果——「広い範囲を舐めるほど時間がかかる」と「狭いフィルタは応答が鈍いうえに、窓が小さいので通過も速く終わってしまい二重に不利」——が組み合わさった結果です。

具体的な数字で威力を実感しましょう。$\text{Span}=1\,\text{MHz}$、比例定数 $k_1=2$ とすると、RBW=1000Hzなら掃引時間は約2秒ですが、RBWを1/10の100Hzにすると $10^2=100$ 倍の約200秒、実に3分以上かかります。

k, span = 2.0, 1e6
for rbw in [1000, 100]:
    T = k * span / rbw**2
    print(f"RBW={rbw:5d} Hz -> 掃引時間 {T:8.1f} s")
# RBW= 1000 Hz -> 掃引時間      2.0 s
# RBW=  100 Hz -> 掃引時間    200.0 s

掃引時間がSpan割るRBWの2乗に比例することを示すグラフ

両対数グラフで見ると、掃引時間はRBWに対してきれいな直線(傾き $-2$)を描きます。RBWを1桁狭くするたびに掃引時間が2桁増える様子が読み取れます。だから実務では「必要な分解能を満たす範囲で、RBWはできるだけ広く」というのが鉄則になります。分解能・雑音フロア・測定時間の三者はRBW一つで結ばれた三すくみで、どれかを得ればどれかを失うトレードオフなのです。

では、この掃引時間の条件を破って掃引を速くしすぎると、画面には何が起きるのでしょうか。

掃引が速すぎるとどうなるか

式(8)の条件を無視して掃引を速くすると、RBWフィルタが応答しきる前に窓が信号を通り過ぎてしまいます。フィルタは十分に立ち上がれず、しかも出力のピークが時間的に遅れて出るため、画面上では振幅が実際より低く表示され、ピークの位置が掃引方向に少しずれるという誤差が出ます。

掃引が速すぎるとRBWフィルタが応答しきれず振幅低下と周波数ずれが起きる様子

緑の曲線が十分に遅い掃引での正しい応答、橙と赤が掃引を速めていったときの応答です。掃引が速いほどピークが低くなり(振幅を過小評価)、右側(掃引の進む向き)へずれていくのが分かります。これは測定誤差そのものなので、現代のスペアナは選んだRBWとSpanから必要な掃引時間を自動計算し、速すぎる設定にならないよう掃引時間を「自動(Auto)」で守ってくれます。手動で掃引時間を短くしすぎると、この落とし穴にはまります。

RBWとその副作用を理解したところで、もう一つの重要なつまみ、VBWに進みましょう。RBWが「周波数軸の窓の幅」だったのに対し、VBWは「表示のなめらかさ」を決めるつまみです。

VBW(ビデオ帯域幅)— トレースを平滑化する

RBWフィルタと包絡線検波器を通ったあとの信号は、振幅の時間変化を表す「ビデオ信号」になります。VBW(ビデオ帯域幅)は、このビデオ信号にかける低域通過フィルタの帯域幅です。効果を一言でいえば、トレースのギザギザをならすことです。

なぜならす必要があるのでしょうか。雑音は本質的にランダムなので、雑音フロアは細かく上下に暴れます。この暴れが大きいと、その中に埋もれかけた弱いCW信号のピークが読み取りにくくなります。VBWを狭くしてビデオ信号を平均化・平滑化すると、ランダムな暴れが打ち消し合ってフロアがなめらかになり、その上に乗ったCWピークが浮かび上がって読み取りやすくなります。

fs, N = 20000, 60000
t = np.arange(N) / fs
rng = np.random.default_rng(20260701)
sig = rng.standard_normal(N) + 2.5*np.sin(2*np.pi*5000*t)
fr, Pd = spectrum_dB(sig, fs, 60)

# ビデオフィルタ = 対数領域での移動平均。窓が長いほどVBWが狭い。
for wlen in [1, 9, 31]:
    kernel = np.ones(wlen) / wlen
    sm = np.convolve(Pd, kernel, mode="same")
    # プロットは省略(下図参照)

VBWを狭くするとトレースが平滑化されCWピークが読みやすくなる様子

灰色の生トレース(VBW広い)は雑音フロアが激しく暴れていますが、VBWを狭める(橙→赤)につれてフロアがなめらかになり、5000HzのCWピークが安定して見えるようになります。

ここで一つ注意があります。VBWは平滑化するだけで、雑音フロアの平均レベルそのものは下げません。フロアの高さを下げたいならRBWを狭くする、フロアのばらつきを抑えて読みやすくしたいならVBWを狭くする——役割が違うのです。CW信号を精度よく読みたいときは「VBW ≤ RBW」程度に狭め、逆に雑音そのものの真のレベルを測りたいときは平滑化しすぎない設定にします。この「何を測っているか」の区別は、次の検波モードの話にも直結します。

検波モード — 1画素に多数のサンプルを集約する

画面の横方向の画素数は有限(たとえば1000点)です。一方、掃引中に得られるサンプルはそれよりずっと多いので、1つの画素(周波数ビン)に多数のサンプルをどう集約するかを決める必要があります。これが検波モードです。代表的なものが3つあります。

  • ピーク検波(Peak):そのビンの中の最大値を表示する。スプリアスや瞬間的な信号を見逃したくないときに使う。ただし雑音は高めに表示される。
  • サンプル検波(Sample):ビンの中の代表点を1つ拾う。雑音の様子を素直に見たいときに使うが、狭いCWを取りこぼすことがある。
  • RMS(平均)検波:ビンの中のサンプルをパワー(線形)で平均してからdBに戻す。これが信号の真のパワーを表す。雑音や変調信号の電力を正しく測りたいときに使う。
rng2 = np.random.default_rng(7)
peak, samp, rms = [], [], []
for i in range(40):                       # 40個の周波数ビン
    vals = rng2.standard_normal(50) * 4 - 40   # ビン内の雑音サンプル [dB]
    peak.append(vals.max())               # 最大値
    samp.append(vals[len(vals)//2])       # 代表点
    lin = 10 ** (vals / 10)               # dB -> 線形パワー
    rms.append(10 * np.log10(lin.mean())) # パワー平均 -> dB

検波モード(ピーク・サンプル・RMS)による表示レベルの違い

同じ雑音を集約しているのに、ピーク検波(赤)は常に高めに、サンプル検波(灰)は大きくばらつき、RMS検波(青)は中間で安定しているのが読み取れます。ここで肝心なのは、雑音の「真のパワー」を表すのはRMS検波だという点です。ピーク検波でフロアを読むと、実際より数dB高い値を報告してしまいます。だから雑音や雑音的な変調信号のレベルを測るときはRMS検波を使い、スプリアスの有無を漏れなく探すときはピーク検波を使う、と目的で切り替えます。画面上で特定のピークの周波数と振幅を数値で読み取るにはマーカー機能を使い、最大ピークに一発で飛ぶ「ピークサーチ」と組み合わせると効率的です。

ここまでが掃引式スペアナの中身です。ところで、冒頭で「FFTでやっているのだろう」という予想に触れました。実際、FFTを使う方式のスペアナもあります。両者を比べておきましょう。

FFT方式との対比 — リアルタイム性か、ダイナミックレンジか

掃引式が「1つの狭い窓で周波数軸を順に舐める」のに対し、FFT方式は「対象の帯域をまるごと高速サンプリングして、一気に周波数変換する」方式です。近年のリアルタイムスペクトラムアナライザはこの方式で、ある帯域幅の中なら瞬間的なイベントも取りこぼさずに捉えられます。

掃引式とFFT式スペクトラムアナライザの得失の対比

両者には得手不得手があります。掃引式は、非常に広い周波数範囲(数十GHzまで)を、高いダイナミックレンジで測れるのが強みです。反面、1点ずつ順に見ていくので時間がかかり、掃引の合間に起きた瞬間的な現象は取りこぼします。FFT式は、帯域内なら高速かつリアルタイムで、間欠的なバースト信号や周波数ホッピングも捉えられます。反面、一度に扱える帯域幅(解析帯域)に上限があり、非常に広い範囲を一括で見るのは苦手です。ダイナミックレンジもADコンバータの性能に制約されます。

実際のハイエンド機は、両者を組み合わせています。広い範囲は掃引式で概観し、注目した狭い帯域はFFTで詳しく(かつ速く)見る、という使い分けです。どちらの方式でも、これまで見てきたRBW・VBW・検波・雑音フロアの考え方はそのまま通用します。方式が変わっても「周波数軸で何を測っているか」は同じだからです。

最後に、こうして測ったスペクトルで、実際にどんな量を評価するのかを見ておきましょう。

スペアナで測る代表量

高調波・側波帯 — 変調信号の姿

送信機の信号は、たいてい何らかの変調がかかっています。変調の種類によってスペクトルの形が決まるので、スペアナで見れば変調の様子が読み取れます。まずAM(振幅変調)です。搬送波 $f_c$ を信号周波数 $f_m$ で振幅変調すると、$f_c$ の両脇に $f_c \pm f_m$ の側波帯が現れます。

AM信号のスペクトル 搬送波と上下側波帯

中央の搬送波を挟んで、$f_m$ だけ離れた両側に上側波帯・下側波帯が対称に立っているのが分かります。側波帯と搬送波の高さの比から変調度を読み取れます。

FM(周波数変調)はもっと賑やかです。変調指数 $\beta$ が大きいと、$f_m$ 間隔で多数の側波帯が並びます。各側波帯の振幅はベッセル関数で決まります。

FM信号のスペクトル 多数の側波帯

搬送波の両側に、$f_m=1\,\text{kHz}$ 間隔でたくさんの側波帯が広がっています。FMがAMより広い帯域を占めることが、スペクトルから一目で分かります。増幅器の非線形性が原因の高調波($2f_c, 3f_c, \dots$)やスプリアス(意図しない不要波)も、同じようにスペアナで探します。

占有周波数帯幅・隣接チャネル漏洩電力

送信信号が実際にどれだけの帯域を使っているかを表すのが占有周波数帯幅(OBW)です。全電力の $99\%$ が収まる帯域幅として定義するのが一般的で、スペアナはスペクトルを電力で積分してこの帯域を自動で求めます。法律で割り当てられた帯域に収まっているかの確認に使います。

隣のチャネルへどれだけ電力が漏れているかを表すのが隣接チャネル漏洩電力(ACLR / ACPR)です。自分のチャネルの電力と、隣接チャネル帯域内の電力の比(dB)で表します。増幅器の非線形歪みが大きいほど電力が隣へ漏れ出すので、送信機の直線性の指標になります。どちらも、RMS検波で電力を正しく積分することが前提になります。

位相雑音 — 発振器の純度

理想的な発振器は1本の完全な線(純粋な正弦波)を出すはずですが、現実の発振器は周波数がわずかにゆらぎ、搬送波の裾野に「スカート」を引きます。この裾野の雑音を位相雑音と呼び、搬送波から一定オフセット離れた点での、1Hz帯域あたりの雑音電力を搬送波電力で正規化した値 $\text{dBc/Hz}$(dB relative to carrier per Hz)で表します。

発振器の位相雑音カーブ 搬送波から離れるほど低下

横軸に搬送波からのオフセット周波数(対数)、縦軸に位相雑音 $[\text{dBc/Hz}]$ をとると、搬送波から離れるほど雑音が下がる特性が見えます。たとえば「1kHzオフセットで $-80\,\text{dBc/Hz}$」のように読みます。位相雑音が悪い発振器を使うと、通信では隣接チャネルへの妨害や復調誤りの原因になるため、発振器やシンセサイザの品質評価に欠かせない測定です。ここで測定の $\text{dBc/Hz}$ という単位が「1Hzあたり」に正規化されている点は、先ほどの $10\log_{10}(\text{RBW})$ の話と直結しています。実際にはRBWを有限にして測るので、測定値を1Hz帯域に換算するために $-10\log_{10}(\text{RBW})$ の補正を加えるのです。

まとめ

本記事では、スペクトラムアナライザの原理を、掃引スーパーヘテロダイン方式を軸に解説しました。要点を振り返ります。

  • スペアナは信号を周波数軸に並べ替えて見せる装置。時間波形では区別できない信号の中身が見える。
  • 掃引スーパーヘテロダイン方式は、固定の狭いIFフィルタ(RBW)の窓を、掃引LOによって入力の周波数軸の上でスライドさせ、各周波数のエネルギーを順に測る。
  • RBWを狭めると、(1)近接信号の分解能が上がり、(2)雑音フロアが $10\log_{10}(\text{RBW})$ で下がるが、(3)掃引時間が $\text{Span}/\text{RBW}^2$ で激増する。三者はRBW一つで結ばれたトレードオフ。
  • VBWはトレースを平滑化してCWピークを読みやすくする(フロアの平均レベルは変えない)。検波モードは目的で選ぶ(雑音の真値はRMS、スプリアス探しはピーク)。
  • FFT方式はリアルタイム性に優れ、掃引式は広帯域・高ダイナミックレンジに優れる。用途で使い分ける。
  • スペアナで高調波・スプリアス・占有帯域幅・隣接チャネル漏洩電力・位相雑音といった、無線機の性能を左右する量を評価する。

これらの原理は、無線技術者向けの資格試験(第一級陸上無線技術士の「無線工学A」など)でも頻出のテーマです。RBWと雑音フロア・掃引時間の関係や、位相雑音の $\text{dBc/Hz}$ の意味を、単なる暗記でなく「なぜそうなるのか」から理解しておくと、応用が効きます。

次のステップとして、以下の記事も参考にしてください。