PSoC5LP Prototyping Kit (23) --- SPDIF_Tx と DMA (11)

今回は PC 上のオーディオ録音/再生デバイスを利用したリアルタイム・スペクトラム・アナライザ・ソフトである「WaveSpectra」によるフィルタ特性の測定方法について説明します。
「WaveSpectra」の操作方法自体は、ソフト付属のヘルプにも記載されています。
まず、PSoC5LP Prototyping Kit 側の光出力端子と、オーディオ・インターフェースの光入力端子を光ファイバ・ケーブルで接続します。
オーディオ・インターフェース側では、S/PDIF 入力をディジタルのまま PC に取り込めることが望ましいです。
S/PDIF 信号としては、16 ビット / 48 kHz で送信されますから、WaveSpectra の「録音/再生」設定ダイアログでのフォーマット指定もこれに合わせます。 16 ビット / 48 kHz 以上の設定にしてもソフト的にに補間されるだけで、精度が向上するわけではありません。
「WaveSpectra」は「ピークホールド機能」を利用して測定を行います。
手順としては、ソフト付属のヘルプの項目「使い方/測定モード/周波数特性の測定」にしたがって行ないますが、リニア周波数スイープ機能は PSoC5LP Prototyping Kit 側のソフトに組み込んであるので、WaveGene 側の設定の記述は無視します。
まず、メインメニューの「測定モードボタン」を押し込んで「測定モード」にします。
そして、ウィンドウの下部に現れるツールバーの [Peak] ボタンを押し込んでピークホールド・モードにします。 自動的に [OVL1] ボタンも押し込まれて、ピークホールド結果のグラフが赤色の線で表示されます。
リニア周波数スイープ・ループの 1 巡目の途中からピークホールドを開始して、途中で一時停止した状態の画面を下に示します。

途中で始めて途中で一時停止しているので、まだスペクトラムは部分的にしか得られていません。
ピークホールドを途中から開始しているのは、 1 巡目の最初は、

  • S/PDIF 出力停止
  • S/PDIF 出力開始
  • FIFO バッファ中の初期データの「0」を送信
  • スイープ開始周波数の 10 Hz を出力

というシーケンスで進み、信号波形 (の微係数) に著しい不連続性を生じ、スペクトラムが乱れるので、最初からピークホールドするとレベルの低い部分が覆い隠されてしまうためです。
4 倍オーバーサンプリングされた結果が 48 kHz という設定なので、「オリジナル」のサンプリング周波数は 12 kHz になります。 そのナイキスト周波数の 6 kHz を上限としてスイープしています。
上の図では、スイープ中の正弦波の周波数は、ベースバンド領域で約 2.5 kHz となっているのが、ウィンドウ左上の「Max」の欄から読み取れます。
10 kHz を少し過ぎたあたりと、ナイキスト周波数 24 kHz 周辺にも赤色の線が見られますが、これは、4 倍アップサンプリングによる

  • 12 kHz ± 2.5 kHz
  • 24 kHz - 2.5 kHz

付近の「エイリアス」成分です。
ベースバンド成分が上限の 6 kHz に達すると、エイリアス成分は

  • 12 kHz - 6 kHz = 6 kHz
  • 12 kHz + 6 kHz = 18 kHz
  • 24 kHz - 6 kHz = 18 kHz

となって、ナイキスト周波数 24 kHz までの全域の周波数に対する応答がつながります。
リニア周波数スイープを何巡かさせた後、途中で一時停止させた状態を下に示します。

1 回以上ループさせているので、ピークホールド値を示す赤色の線は全周波数領域に渡って描かれています。
黒色の線は「メインスペクトラム」、つまり現在の「リアルタイム」の FFT 結果です。 周波数スイープにより少しずつ周波数が変化しているとは言え、正弦波が入力されているので、見えているのは単一正弦波に対する応答であり、窓関数の特性によるメインローブ成分、サイドローブ成分およびノイズです。
窓関数として「Blackman-Harris 7 Term」を使用しているので、メインローブ幅は広め、サイドローブのレベルは小さくなっており、-90 dB 付近に見られるノイズ・フロアは、サイドローブによるものではなく、信号に混ざったノイズ成分です。
このノイズ成分は Filter コンポーネントによる 5 kHz カットオフの LPF によって高域では減衰させられているのが分かります。
窓関数のメインローブが見えやすいように、低い周波数のところで一時停止しています。 周波数スイープのために、一定周波数の場合とは違って左右非対称なメインローブとなっているのが分かります。
当然、測定対象の周波数特性の形により、最適な窓関数の選び方は違ってきます。
たとえば、鋭いピークやディップがあって周波数分解能が必要な場合には、サイドローブのレベルは大きくなるけれどもメインローブの幅が狭い Hamming 窓や Hanning 窓が適しています。
阻止域の減衰量が大きい場合には、メインローブ幅は大きくなるけれどもサイドローブのレベルが小さい Blackman 窓などが適しています。
測定を停止した後、下部のツールバーの [Main] ボタンを浮き上がった状態にして黒色の線の「メインスペクトラム」の表示を消してピークホールド表示のみにすると下のようになります。

Filter コンポーネントでの設計段階での周波数応答のグラフを下に再掲します。
設計通りの特性が得られていることが分かります。