パルス密度変調

パルス密度変調(PDM)とは



パルス密度変調(Pulse-density modulation、PDM)は、デジタル信号を用いてアナログ信号を表現するための変調方式の一つです。パルス符号変調(PCM)が入力信号を異なる重みのパルス符号に変換するのに対し、PDMでは入力信号をパルスの相対的な密度に変換することで情報を伝達します。

PDMとPWMの違い



パルス幅変調(PWM)は、スイッチング周波数が固定されており、1つのサンプルに対応する全てのパルスがデジタル信号内で連続している、PDMの特殊なケースと見なすことができます。例えば、8ビット分解能で50%の電圧を表す場合、PWM波形は128クロックサイクルでオンになり、残りの128サイクルでオフになります。一方、PDMでは同じクロックレートで、信号は他のサイクルごとにオンとオフを交互に切り替えます。両方の波形の平均は50%になりますが、PDM信号の方がより頻繁に切り替わるのが特徴です。ただし、100%や0%のレベルでは、PWMとPDMは同じ波形になります。

PDMの数学的表現



PDMのビット列では、1は正極性のパルス(+A)、0は負極性のパルス(-A)に対応します。数学的には、次のように表すことができます。

math
x[n] = -A(-1)^{a[n]}


ここで、x[n]は二極ビット列(-Aまたは+A)、a[n]は対応する二極ビット列(0または1)を表します。全て1の連続は最大振幅(正)、全て0の連続は最小振幅(負)、1と0が交互の場合は振幅値ゼロに対応します。このバイポーラPDMビット列をローパスフィルタ処理することで、元の連続振幅波形を復元できます。

PDMの例



例えば、100回サンプリングされた正弦波の1周期は、PDMビット列として以下のように表現できます。


010101101111011111111111111111111011111011011010101001001000000100000000000000000001000010010101


より高い周波数の正弦波の2周期は、次のようになります。


0101101111111111111101101010010000000000000100010011011101111111111111011010100100000000000000100101


これらの例からわかるように、PDMでは正弦波の山では1の密度が高く、谷では1の密度が低くなります。

アナログ-デジタル変換



PDMビット列は、ΔΣ変調のプロセスを経てアナログ信号から符号化されます。このプロセスでは、アナログ信号の振幅に応じて1または0を生成する1ビット量子化器が使用されます。1と0は、それぞれ信号の上昇または下降に対応します。現実のアナログ信号は完全に一方向であることは稀なため、1と0が表す実際の振幅との差である量子化誤差が発生します。この誤差はΔΣプロセスループで負にフィードバックされ、量子化誤差平均化する効果があります。

デジタル-アナログ変換



1ビットDACの出力は、信号のPDMエンコーディングと同じになります。PDM信号をアナログ信号にデコードするプロセスは比較的単純で、PDM信号をローパスフィルタに通すだけです。ローパスフィルタは本質的に信号を平均化するため、パルスの平均振幅は時間経過に伴うパルス密度によって測定され、ローパスフィルタがデコードに必要な唯一の要素となります。

生物学との関係



動物の神経系における情報表現の一つの方法として、感覚ニューロンの発火レートに関連する信号の大きさによるレートコーディングが知られています。PDMとの直接的な類似性として、各ニューロンでのイベント(活動電位)は1ビット(パルス)を表し、ニューロンの発火レートがパルス密度を表していると考えられます。

PDMのアルゴリズム



PDMのデジタルモデルは、ΔΣ変調器のデジタルモデルから導出できます。離散時間領域の信号をx[n]、1次ΔΣ変調器の出力をy[n]とすると、離散周波数領域におけるΔΣ変調器の操作は以下のように表されます。

math
Y(z) = X(z) + E(z)(1 - z^{-1})


この式を整理すると、

math
Y(z) = E(z) + X(z) - Y(z)z^{-1}


ここで、E(z)はΔΣ変調器の周波数領域量子化誤差です。1-z^(-1)はハイパスフィルタを表すため、低周波ではE(z)の出力Y(z)に対する寄与は小さく、高周波では大きくなります。これは、ΔΣ変調器のノイズシェーピングを示しており、量子化ノイズが低周波から高周波へと押しやられることを意味します。

Z変換を用いることで、ΔΣ変調器の入力と離散時間領域の出力とを関連付ける差分方程式に変換できます。

math
y[n] = x[n] + e[n] - e[n-1]


ここで、出力サンプルy[n]は実行中の量子化誤差e[n]によって決まり、かつy[n]は1ビットで表されるため、2つの値しかとることができません。便宜的にy[n] = ±1と定義します。

math
y[n] = sgn(x[n] - e[n-1])


math
e[n] ← y[n] - (x[n] - e[n-1]) = sgn(x[n] - e[n-1]) - (x[n] - e[n-1])


この結果、最終的に入力サンプルx[n]はフィードバックされます。

疑似コードで表現すると、以下のようになります。


// Encode samples into pulse-density modulation
// using a first-order sigma-delta modulator

function pdm(real[0..s] x, real qe = 0) // initial running error is zero
var int[0..s] y

for n from 0 to s
if x[n] >= qe
y[n] := 1
else
y[n] := -1
qe := y[n] - x[n] + qe

return y, qe // return output and running error


PDMの応用



PDMは、ソニーのSuper Audio CD(SACD)フォーマットでDirect Stream Digitalという名前でエンコーディングとして使用されています。また、1本のデータ線でPDMステレオオーディオを送信するシステムもあります。この場合、マスタクロックの立ち上がりエッジが左チャネルからのビットを示し、立ち下がりエッジが右チャネルからのビットを示すというように、信号が多重化されています。

まとめ



PDMは、アナログ信号を効率的にデジタル表現するための重要な技術であり、オーディオ処理、通信、生物学における情報表現など、多岐にわたる分野で活用されています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。