デジタル・イコライザ―
■村岡如竹
■村岡如竹
適応フィルタによるグラフィック・イコライザーの設計ツール
収束法の組み合わせによる推定パラメータの最適化
◆掛け算はやさしいが、足し算は難しい◆
京都大学の天才といわれる望月新一教授の「ABC予想の証明」が、批判も含めて数学界をにぎわしているが、「掛け算は易しいが、足し算は難しい」という事態、実は電子回路の設計に於いても、同等の問題を抱えている。
特にイコライザー回路に於いては、センター周波数については代数式で設定できるが、アナログ、デジタルに共通して、掛け算(割り算)である増幅段の前後に足し算(引き算)をもっているため、目標の特性(サンプリング周波数の1/2のナイキスト周波数に近い高域でピークやノッチの周波数でのゲインやQ値の維持など)に見合う素子の定数を求めようとしても代数式がこの世に存在しない。また、その限界値すら求める代数式は存在しない。
でも、安心して欲しい。5次以上の方程式の根を求める代数的解法がこの世にないからといっても、それらを正確に求める方法があるのと同様で、回路素子の定数は数値計算アルゴリズムの工夫で非常に正確に求めることができるのだ。
収束法の組み合わせによる推定パラメータの最適化:
アナログ屋の筆者が用いた、アナログ回路での素子の定数を求める手法を使ってデジタル・イコライザーの各定数を求めてみようという試みであり、デジタル・イコライザーをアナログ回路で表現することで、スムーズに解析ができたことの実証でもある。
CASL87&GR87を使用することが前提であるが、他のツールでも使用可能:
この設計ツールは面倒な伝達関数を導かなくても済むCASL87&GR87(クリック)との組み合わせを意識して作成した。具体的には、「コピー(Copy)」ボタンの付加により、ユーザーの使用しているテキスト・エディターへの「コピー&ペースト」を可能にしているのだが、実は、このことはマイコンおよびDSP(Digital Signal Processor)のプログラムに各定数としてそのまま転用できる利点も有している。
上記「ダウンロードの頁」をクリックしてMEGAのダウンロードのページからZIPファイル「SetUp_DigitalEqualizer_64bit_Ver1_02.zip」を適当なフォルダにダウンロードしてください。
このZIPファイルを展開してフォルダ「SetUp_DigitalEqualizer_64bit_Ver1_02」の中の「SetUp_DigSetUp_DigitalEqualizer_64bit.exe」を実行してください。
「WindowsによってPCが保護されました」と表示されたら、「詳細情報」をクリックして、表示された「実行」ボタンをクリックしてください。以上で、本ツールのセットアップが実行できます。
※Windows10、11(64ビットのみ)に適用。.NET7以上必要
■デジタル・イコライザーの設計の課題
アナログに比べ、デジタルでのイコライザー設計はサンプリング周波数による制限を強いられてしまうのは周知である。特に減衰特性を実現するノッチ型では、この制限が顕著であることを経験されているエンジニアの方も多いはず。
特に適応フィルタ(ノッチ型)を利用した遅延段数が2段と簡単な減衰型(Decrease)デジタル・イコライザーの場合は、ゲイン、Q値を自由に確保するには困難な場合が生じる。
■この設計用ツール・アプリケーションの機能
・サンプリング周波数の1/2のナイキスト周波数に近いバンドのセンター周波数でのゲインやQ値の
限界値を自動で探査できる。
・特定のDSP(Digital Signal Processor)やCPUを選ばないため、汎用性が高い。
・適応ノッチフィルタで構成することで、遅延レジスタ(浮動小数点)を2段で構成でき、さらに、
同じバンドでのノッチフィルタ(減衰)と逆ノッチフィルタ(増加)を共用できるので
コンパクトな構造を実現。
・ノッチフィルタ(減衰)と逆ノッチフィルタ(増加)の中間ゲインでのカーブの対称性を実現
するための各定数を自動的に求めることができる。
■浮動小数点の範囲
・倍精度浮動小数点にて処理: 範囲 ±4.9E-324 ~ ±1.7E308
・有効桁数:15~17桁(64bit) IEEE754-2008
ユーザーが使用するマイコンやDSPの扱える浮動小数点や固定小数点および、倍精度固定小数点などの
範囲に留意して、定数の値を転用する必要があることに注意すること。
■適応フィルターによるデジタル・イコライザーの構造
下の図に今回の設計ツールの想定しているデジタル・イコライザーの構成を示す。全域通過フィルター(All pass filter)を内包する周知の適応フィルター方式の構成である。
ディレイ素子Z-1は2段のみで、簡単な構成が特徴となっている。
「増加(Increase)」、「減衰(Decrease)」の両方に対して、同じ構成であるため、DSP(Digital Signal Processor)やCPUによるプログラムで構築する計算において共通化でき、尚且つ、再度強調するが、簡単な構造にできる特徴がある。
■中間ゲインでの増加と減衰特性の対称性を確立
上記の構成は、構造が「増加」と「減衰」で共通化できるメリットがある反面、中間段階のゲイン特性が「増加」と「減衰」の領域で対称性を欠くデメリットがある。
今回の設計ツールでは、このデメリットの克服として、この対称性を実現する機能を有している。
下の図に示すように、「Q調整スイッチ」(図中のQ adj.sw)によって、「増加」と「減衰」の領域での中間段階のゲイン特性の対称性を実現できるようになっている。
上記の図の左の「Q調整スイッチ」のオフ状態では、センター周波数のピーク値のみに合わせこみを行うため、「減衰」の最大ゲインでは「増加」のそれとカーブが揃うのだが、中間段階のゲイン特性のカーブがフラット気味に近くなり、「増加」とは対称性を欠く結果になる。これに対し、右の「Q調整スイッチ」のオン状態では、「増加」「減衰」とも、全ゲインに於いて、きれいに揃った特性を実現できる。
ユーザーが設定するQ値はセンター周波数の最大値のゲインに対して定義している。下の左図に示すように、センター周波数fcのピークのゲインに対して両サイドの3dB低いゲイン周波数をfh、flとすると、左図に示す式の展開によって得られた値σから、
fh = σ × fc、 fl = fc / σ
と求まる。尚、本設計ツールでは、サンプリング周波数の半分のナイキスト周波数近辺でのゲイン特性の劣化により、3dB低い周波数は、高域のfhは避け、低域のflで収束演算の評価を行っている。
中間ゲインでのQ値の調整は、下の右図に示すように、中間ゲインと最大ゲインの比に基づいて、周波数flでのゲイン値の評価を収束演算で行っている。
■操作方法
本設計ツールの入力の各設定項目を下の図に示す。
EQモード切替
増加(Increase)型、減衰(Decrease)型の選択スイッチ。
優先度切替
ゲインかQ値の優先度の選択スイッチ。ゲイン(Gain)を選択すると「最大ゲイン(Max.Gain)」で設定された値を
保証するQ値を探査し、「Q(Q value)」に赤文字で表示する。Qが選択されると、「Q(Q value)」で設定された値
を保証する「最大ゲイン(Max.Gain)」に赤文字で表示する。
Q調整切替
中間ゲインでのQ値のカーブ補正用調整選択スイッチ。上述した「中間ゲインでの増加と減衰特性の対称性を確立」で
述べた内容の調整を行う。
最大ゲイン
最大ゲイン値の入力ボックス。減衰型であっても正の値を入れること。単位はdB(デシベル)。
中間ゲイン
最大ゲイン値における中間ゲインの入力ボックス。最大値は「最大ゲイン」であっても、その途中の中間ゲインに
おける各定数の値を導出する目的で設定する。
減衰型であっても正の値を入れること。単位はdB(デシベル)。
Q値
Q値の入力ボックス。正の値を入れること。
センター周波数
ゲインがピーク(増加型)あるいは、ボトム(減衰型)となるセンター周波数の入力ボックス。単位はHz(ヘルツ)。
サンプリング周波数
サンプリング周波数の入力ボックス。単位はHz(ヘルツ)。
実行ボタン
上記の全項目の入力設定を終えた後、この実行ボタンクをクリックすると計算を実行開始する。
計算実行を完了すると、下の図に示す出力が表示される。
最大ゲインでのGr1、Gr2の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGr1、Gr2の値。
最大ゲインでのGa1、Ga2の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGa1、Ga2の値。
最大ゲインでのGv2の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGv2の値。
最大ゲインでのGvinrの値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGvinrの値。
最大ゲインでのGv3の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGv3の値。
中間ゲインでのGa1、Ga2の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGa1、Ga2の値。
中間ゲインでのGv2の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGv2の値。
中間ゲインでのGvinrの値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGvinrの値。
中間ゲインでのGv3の値
増加(Increase)型、減衰(Decrease)型の両方において下記の構成でのGv3の値。
コピースイッチ
上記の各出力ボックスの右横のCopy(コピー)をクリックすることで、Windowsのクリップボードにコピーされる。
他のエディターにペーストしたい場合は、キー操作「Ctrl + V」で可能。
■増加(Increase)型デジタル・イコライザー
増加型デジタル・イコライザーの構成を下に示す。
上記の増加型デジタル・イコライザーをCASL87用にアナログ回路化した図を下に示す。青い電流源はマイナス方向を意味している。本来、青色の電流源もGNDからノードに向かう表現でも構わないが、Gr1、Gr2、Ga1、Ga2の値を正値にそろえたいがための工夫を施したにすぎない(次の減衰(Decrease)型デジタル・イコライザーの場合でも同等の処置をとった)。本設計ツールで得られた各出力が赤枠で囲った定数の値となる。
この回路図中の「Zd」はサンプリングによる遅延素子Z-1を意味している。筆者の考案したCASL87(クリック)では、以下の原理で計算展開される。
Z-1は以下のように入出力X(Z)、Y(Z)における伝達関数である。
Z-1はラプラス変換ではe-STであるので(周期 T=1/fs、fs:サンプリング周波数)、e-jω/fsである(S=σ+jω、ただし、連続サイン波の場合σ=0)。指数関数と三角関数の変換式である「オイラー(Leonhard Euler )の公式」より以下のようになる。
e-jω/fsを、Zd(=Z-1)とする。
この関数を電流源として表すことも考えたが、CASL87では受動素子として定義した。このほうが1個の新素子として扱いやすく、ユーザーにもすっきりする筈だ。
Zdはインピーダンス素子としての扱いで、CASL87での定数はサンプリング周波数(Hz)である。上の例ではサンプリング周波数96KHzを表している。頭文字が「Z」であれば、CASL87では「Z-1」素子として認識してくれる。
尚、実際の計算(キルヒホッフの第一法則による電流主体)の上では、インピーダンスではなく逆数のアドミタンス主体であるので、アドミタンスYd(=1/Zd)として以下のように代入されて計算される。
増加型デジタル・イコライザーの回路図を基にした計算エンジンである複素数マトリクスを下に示す。各要素はアドミタンス(コンダクタンス+jサセプタンス)であることに注意。
複素数マトリクスは、LU分解やピボット法を駆使して計算されている。この複素数マトリクスによる計算結果を評価して、収束演算を繰り返して推定パラメータの最適化を行っている。さらに失敗した場合は、ゲイン優先か、Q値優先かのユーザーの設定に基づいて、細かい再調整を自動で行っている。
■減衰(Decrease)型デジタル・イコライザー
減衰型デジタル・イコライザーの構成を下に示す。
上記の減衰型デジタル・イコライザーをCASL87用にアナログ回路化した図を下に示す。青い電流源はマイナス方向を意味している。本設計ツールで得られた各出力が赤枠で囲った定数の値となる。
減衰型デジタル・イコライザーの回路図を基にした計算エンジンである複素数マトリクスを下に示す。増加型の場合と同じように収束演算によって、最適値の探査をおこなっている。
本設計ツールで得られた周波数特性を下の図に示す。ここでは、サンプリング周波数は96KHz、最大ゲインは12㏈、Q値は1.0としてある。エイリアス領域はナイキスト周波数である48KHz以上である。この図では10バンドであるが、ナイキスト周波数48KHzに近い「減衰(Decrease)」型特性では、センター周波数16KHzと32KHzでは「最大ゲイン」12dB(-12dB)を保証するためには、それぞれ、Q=1.8733、Q=3.4429にせざるを得ないことが判る。
「増加(Increase)」と「減衰(Decrease)」のCASL87用ファイル(ZIPファイル)は、以下からダウンロード(圧縮ファイル)できる。
ナイキスト周波数48KHzに近いセンター周波数として、16KHzの例を抽出して下の図に示す。増加型では、Q=1.0でも無理なく12dBのMax.Gainを確保できるが、減衰型では12dBのMax.Gainを得るのに、Q=1.8733(以上)に設定しなくてはならないのが、本設計ツールで自動的に導き出せる。
上図に示す通り、減衰型(Decrease)」は増加型(Increase)」に比べて、Q値とゲインとの間に余裕がないことが判るであろう。
実際の製品の仕様上、そうすることの意味があるのかの議論は避けて、本設計ツールの機能を活かして、高域の限界周波数としてセンター周波数16KHzだけ、12dBのゲイン優先の場合(Q値=1.8733)を下の左図に、1.0のQ値を優先してゲインを減衰型の限界値(7.853dB)に統一した場合の仕様の特性を下の右図に示しておく。
もっとも、これは、直接、AD変換のサンプリング周波数を2倍の192KHz(ナイキスト周波数96KHz)にするか、或いは、AD返還後のデジタル回路内部でインターポーレーションなりの処理を施して、サンプリング周波数を2倍にすれば、センター周波数16KHzにおいて、増加型、減衰型の両方に於いて、Q=1.0のままで、Max.Gain=±12dBを無理なく確保できる。
■バンドをマージした総合特性
下の図に9バンドの場合の構成を示す。ここではすべてのバンドを直列接続とする。
この構成の内訳は以下の図に示す。Band_01~Band_09までの9つのフィルターを直列で構成されている。すべてのバンドはQ=1.0で統一されている。そのため、センター周波数16KHzのBand_09ではMaxGainは7.835dBに制限されている。
下の図に各バンドの個別の周波数特性を示す。さらにそれらをマージした総合周波数特性をその下に示す。
上記のソースコードは以下からダウンロード(圧縮ファイル)できる。
ダウンロードしたフォルダの構造は以下のようになっている。各バンドのライブラリーは「LIB」フォルダに格納されている。「Multi_9Band_EQ_Circuit_01.CAS」内の「Ex Inlude」文でこれらのライブラリーを引き込むことができる。
また、「Individual_Bands」フォルダ内の各ソースファイル内にもこの「Ex Inlude」文でライブラリーを引き込んでいる。
■今後の拡張機能(Ver.2.0以降)
1. 中間ゲインのステップ・レベル機能:0dB~MaxGain間の指定ステップ毎の各定数値のリスト作成機能(CSVファイル化)
2. 操作ウィンドウの改善。