PSoC5LP Prototyping Kit (35) --- デルタ・シグマ ADC と CIC 補償フィルタ (1)

PSoC5LP では、OP アンプ / コンパレータ / DAC / 多用途に使えるスイッチト・キャパシタあるいは連続時間ブロックなどを含むアナログ・サブシステムを 4 系統内蔵しています。
さらには逐次比較式 ADC を 2 個、デルタ・シグマ方式 ADC を 1 個内蔵しています。
デルタ・シグマ ADC は、連続モードでは、16 ビット分解能でサンプリング周波数 48 kHz を実現しています。 サンプリング周波数は 187 Hz と落ちますが、20 ビット分解能までは対応しています。 (直線性は 16 ビットまでの場合と比較して劣化する)
ADC のディジタル出力は 4 次 CIC (Cascaded Integrator-Comb) フィルタでデシメーションされており、通過帯域内の特性は補償されていません。 必要があれば DFB (Digital Filter Block) を用いて補償を行います。
DFB コンポーネントにフィルタ設計機能を加えて利用しやすくした Filter コンポーネントでは、設計可能な特性として sinc() 関数の 4 乗の逆特性を選べます。
ここでは、まず、CIC 補償フィルタなしのデルタ・シグマ ADC 本体の裸の特性を測定し、その後に DFB コンポーネントCIC 補償フィルタを実現したものを追加して、補償後の特性も測定します。
まずは、PSoC Creator のトップ回路図を示します。
データの受け渡しは DMA で行なうので、各ブロックは直接には「配線」で接続されないので、ブロックごとに分けて示します。
下に ADC 入力部分を示します。

デルタ・シグマ ADC には入力バッファ・アンプが付いていて、ゲインも選べるようになっていますが、ゲインを上げるとそれに比例してアンプのセトリング・タイムが増加し、必要な精度を得るためには ADC の変換時間を長くする必要が生じます。
デルタ・シグマ ADC のカスタマイザでは、アンプのゲインを上げると強制的にサンプリング周波数を下げられてしまいます。
たとえば、バッファ・アンプのゲインを「2」に選ぶと、サンプリング周波数は 24 kHz に下げられてしまいます。
したがって、サンプリング周波数を確保した上で信号を増幅する必要があるならば、ADC の前段にアンプを置く必要があります。
ここでは、反転型の PGA (Programmable Gain Amplifier) を使用して、ADC 内部のバッファのゲインは「1」に設定しています。
デルタ・シグマ ADC は 1 インスタンスしかなく、ステレオ同時サンプリングはできません。
マルチ・サンプル変換モードと入力マルチプレクサを使えば遂時的とは言え、2 入力以上の変換が可能になりますが、サンプリング・レートが下がってしまいます。
ここでは、デルタ・シグマ ADC を連続モードで使い、得られた「モノラル・サンプル」を 2 回繰り返して読み出すことにより L / R ともに同じ内容の「ステレオ・サンプル」を得ることにします。
当然、eoc (end of conversion) 信号は 48 kHz レートでしか発生しないので、fixed function のタイマをモノ・マルチとして使って、eoc パルスを「補間」し、96 kHz レートの DMA 信号を作りだしています。
SPDIF / DAC インターフェース部の回路を下に示します。

この段階では、CIC 補償フィルタを使用しないので、ADC の出力データは DAC / SPDIF 出力用 DMA バッファに直通で書き込まれます。
SPDIF_Tx コンポーネントは LSB ファーストで、I2S コンポーネントは MSB ファーストでデータを転送する必要があり、両者を共存させると複雑化するので、回路としては両方を配置しておき、ソフトウェアでどちらか一方だけを有効になるようにしています。
具体的には、DMA20 と DMA21 とのどちらか一方だけを config して動作するようにしています。
I2S コンポーネントの WS 信号を標準フォーマットの LRCK 信号に変換する回路は、「ルートクロック」を使用せず、グローバル・クロックを使ったオーソドックスな回路を使っています。
PSoC5LP 側は上記の構成でノン・オーバーサンプリング DAC の PT8211 を使って測定した結果を下に示します。

USB オーデイオ・インターフェースを使い、WaveGene から再生側の USB DAC に TSP (Time Stretched Pulse) 波形を流し、録音側の USB ADC から WaveSpectra にデータを取り込んでいます。
赤色の線が PSoC5LP の測定結果で、青色の線が USB オーディオ・インターフェースをルーブバック接続して測定したインターフェースの「裸」の特性です。
ルーブバック特性では、十数 kHz あたりからゲインが減少していますが、これは USB ADC 側の回路の特性のようです。
PSoC5LP の「生」および「補正後」の測定結果と、sinc() 関数の 5 乗の特性のグラフを下に示します。

このグラフでは、見やすいように横軸はリニア・スケールで正規化周波数 (サンプリング周波数を「1」とする) で、縦軸を dB 単位で示しています。
緑色の線が PSoC5LP の「生」の測定結果で、赤色の線が USB オーディオ・インターフェースのルーブバック特性で補正したもの、青色の線が sinc() 関数の 5 乗の特性です。
赤色の線を一番最後に書いているので、線が重なっている部分は赤色しか見えていません。
sinc() 関数が「5 乗」になっているのは、4 次 CIC フィルタの特性が (ほぼ) sinc() 関数の 4 乗であるのに加え、ノン・オーバーサンプリング DAC の「1 次ホールド」特性が sinc() 関数となるためです。
「生」測定データでは、正規化周波数 0.3 程度から sinc() 5 乗の特性から外れているのが分かりますが、「補正後」のデータでは正規化周波数 0.45 程度までは sinc() 5 乗と良く一致しているのが分かります。
正規化周波数 0.45 程度以上の周波数はオーバーサンプリングされている USB DAC の補間フィルタの遷移域に相当し、実際の PSoC5LP 側のフィルタされていないノン・オーバーサンプリング DAC との特性の違いが現れています。
次回以降は、SPDIF により PC にキャプチャした場合の特性と、CIC 補償フィルタを使用した場合の特性について示します。