SigmaStudio Development Tips |
SigmaStudio は優れたGUIベースのDSP開発環境ですが、内蔵された強力なシミュレーション機能について解説しているページをほとんど見かけないので、使った事がない方も多いと思っ たので私なりの活用の例を書いてみます。 この機能をうまく活用することで実測した測定データをベースにしながら、特性を補正するセッテイング等をカット&トライでインタラクティブに作っていく事が可能になりま す。 ここではMLSSAシミュレーション機能の使いかたと、実行に必要なステップ数の確認方法について解説します。
Element |
Icon |
Comment |
Simulation Stimulus | 信 号経路の途中に配置して信号をスルーさせる事もできるが、ボタンを押す事で仮想的 にフラットな信号を注入することができる。 | |
Simulation Probe | 信号経 路の途中に配置し、ボタンを押す事で通っている信号を解析して冒頭の画像のようなボード線図(周波数特性、位相特性)を表示するこ とができる。右クリックしAdd pinする事で複数の信号を重ねて表示することができる。 | |
Speaker Response : MLSSA | かつて のWindows3.1時代の定番スピーカー測定システムが採用していたMLSSA形式に倣った測定データファイル(テキスト形式)を読 み込 ん で伝達関数をシミュレーションすることができる。 |
チャンネルデバイダーやバッフルステップ補正などの特性を含めて特性を確認したいケースが多々ある と思います、周波数分割したものを空間で合成した特性をシミュレートする場合、時間的なアライメントが揃ったものとして表されているという制約はありますが フィルターの群遅延や位相特性を反映したシミュレーションができるので、例えば12dB/octのクロスオーバーであれば片方を逆相にしなくてはならない 事と か、バタワース特性のHPFとLPFの群遅延の特性を補正するためにHPF側にディレイを入れると櫛形に周波数特性にうねりが生じたり、クロス周波数に+3dBのピークを 生じるなどの事象をシミュ レーションで確認することができます。
2wawy Crossover Simulation Circuit
上記のような接続でクロスオーバーのフィルタータイプを切り替えながらシミュレーションを実施しました。
アマチュアのパッシブネットワークでは広く一般的に使われているバタワース型の 12dB/octのセッテイングは以下のように設定します。HPFとLPFは逆相接続にする必要があるのでPolarityオプションの"Invert" にチェックを付けます。
ハイパワー駆動を要求されるPA業務機などでたまに見かける24dB/octのクロスオーバー は以下のようにセッテイングします。
これも-3dB点でクロスしますが、やはり+3dBのピークを生じます。 カット域が急峻なのでパ イパワーで鳴らす用途では好まれます。またスロープがシャープになった分だけ狭い帯域で盛り上がる形状になっています。
業務用スタジオモニタースピーカー等で採用されているのをよく見かけるL-R型ですが、以下のよう にセッテイングします
バタワース型よりも切れは緩やかですが、クロス周波数付近で位相がほぼ完全に一致するので-6dB 点をクロス周波数にしても打ち消すことがないために両者を合成した特性は足し算どおりにフラット(緑線)になります。 つまり軸上での特性を平坦にできるとい う特徴が業務機モニターSP等で採用されてている第一の理由です。
近代的なラインアイレイ型のSR業務機などで採用される事が多いこの方式は以下のようにセッテイン グします。
この特性ファイルの記述方法は以下のようにします。最初の2行の文字列はほぼ固定でコピペでも構い ません
先頭行 | "Sensitivity Excess Phase - dB SPL/watt (8 ohms, @0.50 meters) (High)" |
2行目 | "Hz" "Mag (dB)" "deg" |
3 行目以降(繰り返し) | 周
波数(Hz), レスポンス(dB), 位相(degrees) [改行文字] |
"Sensitivity
Excess Phase - dB SPL/watt (8 ohms, @0.50 meters) (High)" "Hz" "Mag (dB)" "deg" 20,30,0 30,55,0 40,65,0 50,75,0 60,81,0 70,80,0 80,83.5,0 90,83,0 100,83.5,0 120,85,0 140,84,0 160,86,0 190,82.5,0 200,83,0 250,84,0 300,83,0 350,82.5,0 400,83,0 500,84.5,0 600,83,0 700,83.5,0 800,84,0 900,85.5,0 1000,85,0 1500,85,0 1750,83.5,0 2000,87.5,0 2500,88.7,0 3000,87.5,0 4000,89,0 5000,88,0 6000,83,0 7000,85,0 8000,86.5,0 9000,88,0 10000,88.5,0 13000,85,0 20000,88.5,0 |
Speaker Response1のボタンを押して上記の特性ファイルを読み込むとProbeの解析結果を表すグラフは以下のように変わります。
チャンネルデバイダーやバッフルステップ補正などの特性を含めて特性を確認したいケースが多々ある
と思います、周波数分割したものを空間で合成した特性をシミュレートする場合、時間的なアライメントが揃ったものとして表されているという制約はありますが
フィルターの群遅延や位相特性を反映したシミュレーションができるので、例えば12dB/octのクロスオーバーであれば片方を逆相にしなくてはならない事と
か、バタワース特性のHPFとLPFの群遅延の特性を補正するためにHPF側にディレイを入れるとクロス周波数に+3dBのピークを生じるなどの事象をシミュ
レーションで確認することができます。
2pole L-R型のクロスオーバーの特性(ディレイなしの場合)
ツイター側を12サンプル遅らせた場合の特性
ツイター側を24サンプル遅らせた場合
このシミュレーションは96kHzで行っているので12サンプル =0.125mS =4.25cm のずれに相当します。24サンプル =0.25mS =8.5cmの例に至っては逆相接続にした方が良いくらいズレてしまっているのが判りますね。 このように現実のスピーカーシステムでは微妙な電気的な位相のずれを気にする事も大切ですが、コーンの物理的な形状とか取り付け位置の違いによる振動板とリスナーの距離の 違いについても、もっと神経質なくらい気にする必要があることが理解してもらえるものと思います。
最初のページでADAU1701の場合48KHzサンプルでは最大で1024ステップ、96kHz なら512ステップ、192kHzならたったの256ス テップしかDSP命令が実行できないとお知らせしましたが、ではどうやって確認すればいいのか? この情報はSingStudioでコンパイルした時に、プロ ジェクトファイルである「プロジェクト名.dspproj」があるフォルダーの中に、「IC 2_プロジェクト名」 というフォルダーが生成され、さらにその中に「net_list_out2」という名前のフォルダーが生成され、その中に 「compiler_output.txt」 という名前のテキストファイルが出来るので、これをWindowsの「メモ帳」などのテキストエディタで開くと以 下のような記述が見つかると思います。具 体的には以下ようにフォルダーツリーを辿ります
ProjectFolder >> IC 2_ProjectName >> net_list_out2 >> compiler_output.txt
Analog
Devices Graphical Compiler Tool for Sigma DSP build date =
2008 Done Reading Nodelist ... Done reading file, Done Reading Parameter list ... ################## Summary ######################## (Note: Estimates are based on a 48 kHz sample rate) Number of instructions used (out of a possible 1024 ) = 124 Parameter RAM used (out of a possible 1024 ) = 9 Files written: program_data.dat - load file for downloading code using ADI loader hex_program_data.dat - load file for downloading code using microcontroller spi_params.dat - file of parameter values for each instance, used by gen_spi program to make download file spi_map.dat - Parameter RAM locations for each schematic instance trap.dat - lists the values to enter in the trap registers to output a signal to the data-capture output pin. |
この中の、「Number of instructions used (Out of a possible 1024)=」の次にある数字が実行に必要な命令ステップ数です、上記の例では「124」なので192kHzサンプリングまで動作できる事が判ります。コンパイルしたコー ドが実行できない時は、可能なステップ数を超えてしまっていないか確認してみてください。
適当に読み漁って得た自己流の知識なので正しいインプリではない場合があります、違っていたらあしからず・・・・・