(その2はこちら)
DIV5142の統合コントローラ(PICO)を検討する!の巻き(その3) 2025.1.1
新年ということで、気分を変えてページ更新です。
機能はシンプルに
できるだけ、1つの画面で俯瞰して値が見渡せられるようにしてみました。
操作のボタンは4個です(項目の前後とパラメータの上下の変更)
(1)遮断周波数、ゲインの設定
HPF,LPFは20〜20 000Hzまで1Hz毎で設定可能です。それを越える範囲は通過(THrough)
としています。ゲインは0.0〜-20.0dBまでで0.5dB毎設定です。0.1dB設定にもできますが、
0.5dBの違いって、ほとんどわからない違いえdす.
(2)各種設定
下図のような画面のみで変更です.
FLT:フィルターの次数を設定します(-24〜-144dB/oct).-24dB/oct刻みです。
TYP:フィルターのタイプを設定(バターワース、リンクウィッツ)
FRQ:サンプリング周波数(AUTO、44〜192kHzで設定)。 AUTOにすると周波数自動追従します。
FMT:PCM入力のフォーマットです。I2S固定でもよいかな?
REL:遮断周波数変更時の隣チャンネルとの連動の有無設定です。
これをONにしておけば、CH1のLPFを変更すれば、自動的にCH2のHPFも同じ値になります。
ELM: BIQUADで12素子あるいは24素子を選択します。
12素子の場合は256FS以上のマスタークロックがあれば、192kHzまで対応可能で最大-74dB/octです。
24素子の場合は512FS以上のマスタークロックがあれば、96kHzまで対応可能で最大-144dB/octです。
色々とバグだししています。
早速コメント頂きました。 2025.1.2
ゲイン調整は0.5dBにしていましたが、それでは粗いということなので0.1dBに変更です。
このあたりは、プログラムの数値の変更だけです。
ゲイン調整のステップを0.1dB(約1%)に変更です。
DAC増産
デバッグのときにDACが複数台ないと面倒なこともあり、すこし増産です。
DAC4493-I2Cを追加で2台作成です。とりあえずは追加は1台でよかったのですが、
1台つくるのも2台つくるのもさしてで時間はかわりません。お弁当作りみたいなものです(笑。
追加で2台のDAC4493-I2Cを作成して、合計3台にしました。
合体!
DAC4台を亀の子合体です。4台のDACと接続して、すべての出力がモニターできるようにしておきます。
オシロも4chあるので調度いいです。しかし、オシロなんていつも多くて2chしかつかいません。
4ch分つかうのって初めてかもです。
でもオシロの3、4chてVOLT/DIVの切替が100mVと500mVの2切替なのがすこし不便です。
下から3台がDAC4493-I2Cで一番上がDAC1795-I2Cです。
その上にRenewDIV5142と制御基板を重ねます。かなりコンパクトになります。
オシロプローブをかき集めて接続です。
初めて4ch分を同時につかったかもです(笑。
全体の波形を操作をしながらみていると、ちょっと奇妙な動作をしたりするので、
これから本格的なデバッグです。
結局は最初に戻る? 2025.1.4
もっとも奇妙な動作は、リセット直後に出力に異常な信号がでること。
リセット毎に再現したり、しなかったり。で、もっとも奇妙な点は、入力の周波数を変更していくと
急に動作が正常になり、その後は安定するといった点である。なので、PCM5142内部のDSP
は正常に動作しているが、どうやら初期の起動時に問題がある様子。
おそらく、BIQUAD内部の値がリセット直後は不定になっていることから、最初に不安定な値
が入力されてしまうと正常に動作ができなくなってしまうのかもしれません(なにを言っているのか
よくわからないところがありますが)。
そこで、最初に入力を整えるためにゲイン調整の要素を一番最初に配置です。これはFESP5142-DO
と同じ構成です。結局、最初に戻る形になりました。で、これが功を奏したのか動作が安定しました。
スケール調整のエレメントを一番最初に配置しました。これが、功を奏したのか動作が安定しました。
しかし、運がよかったものです。FESP5142-Doを検討していたときにスケール調整エレメントを最後に
配置していたら、おそらく何が原因で動作が不安定になるかわからず諦めていたかもしれません。
もっとも、FESP5142-DOの場合はBIQUADでゲインが上昇する場合もあり、どうしても最初にスケール調整
エレメントを配置する必要があったのですが、それが壺にはまっていたようです。
しかし、PurePathStudioって癖あるなあ〜。もっとも、これがエンドユーザ向けに提供されたものではないので、
この程度の癖は許容してね、という感じなのでしょう。
384kHz対応にする場合は4WAYは無理かなあ〜。
384kHz対応にする場合には、DSPのサイクルを128サイクル未満にしなければなりません。
マスタークロックの上限が50MHzですから,384kHzで128サイクルだと49MHzになりギリギリです。
128サイクル以上でも動くようにするとなると、マスタークロックは256FS以上になり100MHzが必要
になりPCM5142ではスペックオーバです。
そこで、DSPサイクルが128未満になるようなブロック図を作成すると、
下記のようになりました。BUIQUADで5素子が限界です。
これだとBPFを組んでも2素子+2素子になりますから-24dB/Octのみです。
4WAY版だとすこし寂しいです。2WAY版以降での検討になりそうです。
ここまでエレメントを減らせば384kHzまで対応できそうです。
DSPサイクルは115(128未満)ですから384kHzで動くでしょう。
2WAY版を考えていきましょう
4WAY版(ただしRenewDIV5142を1枚のみ)は大体できてきたので、つぎは2WAY版(1枚使い)を考えて
いきましょう。2WAY版では、まずは基本的なものを2種類考えています。
1)シンプル2WAY版
RenewDIV5142の基板内の2個のPCM5142を連結してつかうものです。1方がLPFで、片方がHPFです。
12素子のBIQUADを2連結にするので、サンプル周波数192kHzで最大-288dB/Octになります。
サンプル周波数96kHzにして、最大-576dB/Octもできなくはないですが、経験的に-200dB/Octを越えると
違いがわからないので-288dB/octもあれば十分でしょう。
シンプル2WAY版です。
2)DELAY付2WAY版
フィルターとして使うのはLPF/.HPFともどちらもPCM5142を1個分です。そのためBIQUAD12素子(192kHz)でつかう場合は
最大-144dB/Octになり、BIQUAD24素子(96kHz)でつかう場合は最大-288dB/Octです。片方のフィルターにはディレイ素子を
PCM5142で2個分を連結します。これにより192kHzでも最大760mmの遅延時間が得られます。
なお、遅延する方はウーハ側(LPF)を想定していますが、LPFとHPFは入れ替えられるようにして、ツイータ側HPF)でも
遅延できるようにしようかと思っています。
まずはシンプル2WAY版からソフトを組んでいきましょう。
シンプル2WAY版 2025.1.5
RenwqDIV5142の基板を1枚使用して2WAY用のチャンネルデバイダのソフト作成です。
動作させるためには、ジャンパーを変更です。2WAY時には2個をカスケードで使いますので、
ch2の入力はch1の出力を、ch4の入力はch3の出力に接続です。この変更は以前のDIV5142
ではパターンカットとジャンパー配線が必要でしたが、RenewDIV5142ではジャンパー1つで、
できるようになっています。もっともDIV5142はもともと4WAY版しか考えていなかったことはありますが。
4WAY版のときは、各PCM5142の入力はすべてデータ側(ジャンパは右側)です。
シンプル2WAY版では、CH2とCH4の入力は手間のCH(ジャンパーは左側)から接続です。
表示は2WAYになるので、極めてシンプルです。
各種条件設定については、4WAY版のパクリです。なんといっても、表示関係のプログラム
が一番時間かかりますからね。
周波数とゲイン調整の画面です。余裕があるのでHzとdBも表示できます。
各種条件の画面です。エレメント数(E12)は表示はされますが、変更はできません。
流石-288dBの減衰率です。
プログラムは4WAY版をベースに、フィルター設定を変更する程度なので割と短い時間でできました。
ためしにfc=2000Hzで-288dB/octで動かしてみました。ここまで減衰率を上げると、僅かに周波数が
かわるだけで、かなり小さくなります。
f=1900Hz( fc=2000Hz -288dB/Oct、上:HPF出力、下:LPF出力)
f=2000Hz( fc=2000Hz -288dB/Oct、上:HPF出力、下:LPF出力)
f=2100Hz( fc=2000Hz -288dB/Oct、上:HPF出力、下:LPF出力)
次はDELAY付き2WAY版にかかりましょう 2025.1.6
とは書いたものの、久しぶりにプログラムをみたらなにやっていたのか、完全に忘れています。
それにプログラム自体が複数基板の複数PCM5142に対応した構造になっていません。
お行儀悪いことにサブルーチンの中にSTATIC変数がいっぱいあるので、それらをすべて
分離しないといけないようです。もう、最初から作ったほうが早いかも(笑。
全面書き換え! 2025.1.7
寝ながら色々と考えて、ディレイ関数のサブルーチンを一新です。
データの書き換えをできるだけ早くするために、データを連続して並べておいて、
I2Cのインクリメントモードで余分な設定を排除して書き込めるようにしました。
これで1回の変更に必要な時間は5〜15msになりました。ディレイ係数が大きくなると、
それに伴う命令が多くなるので書き込みに時間がかかり、最大で約15msほどかかります。
なお、書き込むデータのバイト数は最大で600バイト程度です。書き込みに必要なその他の
コマンドの送出や、データの準備を含めて15msくらいですから、1バイトあたり25usです。
I2Cを400kHzで動かした場合の1バイトで9クロックかかりますから、最低22.5usです。
実測25usですから、ほぼ無駄なく送出できているでしょう。
ジャンパーも変更
ソフト作成にあわせて、基板のジャンパーを変更です。
DELAY付き2WAYだと、1CHがLPFでCH2,CH3がDELAYで3段のカスケード。
4CHがHPFで単独で動作させます。そのため、CH2,CH3はそれぞれ手前の
CH出力を入力とします。CH4はオリジナルな入力をそのまま接続です。
DELAY付き2WAYではCH1〜CH3がカスケード接続、CH4は独立で扱います。
ソフトはSIMPLE2WAY版に変更を加える形で作成です。
画面の一例です。D18とあるのがDELAYで設定定数が18LRCKを示しています。
こちらは各種設定条件です。これは完全に流用です。
ちゃんと動いているかな?
DELAYが動作しているかは、設定値を変えると波形間がどんどんズレいくのでわかります。
周波数が高いと、比較がむずかしいので100Hzの比較的低い周波数でチェックです。
オシロでみて約3msで動いたところの設定値をみたら129でした。48kHzで動作させているので、
129LRCKということは約2.7msですから、合っているでしょう。
ちなみに2.7msというのは距離換算で0.85mになります。長いホーンでも十分でしょう。
なお、調査範囲は0〜480まで変更可能です。
D0なので、DELAY定数は最低値です。 |
|
適当にD129あたり設定したら、約3msほどズレていることかります。 48kHz動作なので1LRCK=20.83usなのでD129だと約2.7mSです。 まあ合っているでしょう.(オシロの読みがいい加減です)。 |
D0のときのズレは?
気になるには、DELAY素子は設定値ゼロの場合でも、なんらかの時間遅れが生じている可能性があります。
そこで、LPFとHPFを完全にスルーにした状態で、出力の時間差を調べてみました。
結果としては、約130usなので6LRCK相当分ズレていることがわかりました。
130usということは空間距離で約41mmです。あらかじめツイータとホーンの距離が大きいような場合だと、
41mm以上の補正が必要でしょうから問題ありませんが、ブックシェルフ型などでは、逆に最初から41mmの
差があるのは問題ですね。
上図だとDELAYが2段入っているので、最小DELAY設定値のゼロにしてもなんらかのズレ(オフセットみたいなもの)があると思われます。
DELAY素子単体のズレを調べるため、フィルターをスルーにして実験です。
LPFとHPFの出力が約132usズレいます。これはちょうど
6LRCK分です。
新たなパターンも必要?DELAY付き2WAYその2!
あまりスピーカ間距離の差がないような場合を考えると、
下記のような構成が必要になるような気がしてきました。
ホーン型でない場合のスピーカ間の距離補正にはこういったブロック図のほうがいいかもです。
早速つくってみましょう!
DELAY付き2WAY版をベースにして、ディレイの割り当てをそれぞれLPF、HPFに振り分けるだけです
ので、変更はさほどややこしくありません。動作させるために、RenewDIV5142のジャンパーも変更です。
DELAYの設定範囲は0〜240ですが、既定値は中央の120にしました。これで、LPF側あるいはHPF側
を変更することで、相対的な時間遅れを正負のどちらでも調整ができます。
ジャンパー設定はこんな感じ。CH1とCH2がカスケード接続、CH3とCH4もカスケード接続です。
画面です。LPFとHPFのどちらにもディレイを入れました。
ディレイの既定値は中央の120にしています。
これでLPF、HPFの時間遅れはなし
DELAY付き2WAYパート2で時間遅れを観察してみましたが、ディレイ値が同じなら時間差はないことが確認できました。
ディレイ値の差を1にすると、約21usずれますので1LRCK(=20.8us、@48kHz)になります。
ディレイ値が同じだとLPF,HPFのどちらも時間差はありません. |
|
ディレイ値の差が1あると約21usのズレが生じます.48kHzでの 観察結果なので1LRCK(=20.8us)に相当です。 |
1LRCK分の時間差の分解能ですが、空間距離に換算すると6.5mm(@48kHz)、3.3mm(@96kHz)、1.6mm(@192kHz)になります。
最大時間差(240LRCK)を空間距離に関するすると、1.57m(@48kHz)、785mm(@96kHz)、393mm(@192kHz)です。
最大時間差については、これ以上必要ならDELAYを2個連結したDELAY付き2WAY(パート2ではない)を使用することになりますが、
時間差の分解能が数mmありますから、これをもっと分解能を上げて行きましょう。
というわけで、ようやく高精度DELAYが登場することになりそうです。
PRECISION DELAYがようやく登場!
まずはPrecision Delay基板の捜索です。どこに置いたかな〜。
なんせ、最後に弄ったのが1か月前であり、年末の大掃除でどっかに片づけてしまいました(笑。
まあ、流石にすぐに見つかりました。
さて見つかった基板を早速接続です。RenewDIV5142とDAC4493-I2Cの間に挿入です。
ここで、ちょっとした問題発生。基板間を接続する10Pinのフラットケーブルが足りません。
そのため、別で使っている基板からちょっとの間、借用です。今度秋月電子を使うときに、
買っておかなくっちゃ!
さて、ハードの接続が終わったらソフトの追加です。
LPFの設定側にPrecision Delayの設定値を追加です。画面のソフトが修正できたら、
あとは具体的にPrecisionDelay基板へのコマンド送出を追加ですが、単純にI/Oを設定
するだけなので、数行のプログラム文を追加するだけです。
Precision Delay基板をRenewDIV5142とDAC4493-I2Cの間に挟み込みます。
設定画面にPrecision Delayの設定を加えました。P0と表示されているところです。
P0〜P63で設定が変更できます。
Precision Delayを動かしてみましょう!
早速動かしてみました。PCM5142をつかったDELAYではLRCK分の時間分解能でしか変更出来ませんが、
Precision Delayでは1LRCKを64分割して遅延させることができます。その動作の確認です。
ボタンを押して設定を1つづ増やしていくと、徐々に波形がズレていきますので、動作していることが確認できました。
そしてP32に設定すると、時間差が1/2LRCKになっていました。
まずは、LPFとHPFをスルーとして、遅延条件を一致させます。 LPFがD120(0-240の中央)、HPFもD120です。 Precision Delayの設定はP0です。 時間差がよく見えるように、10kHzの周波数で観測です。 互いに時間差はありません。 |
|
次はLPF側のDELAYを1だけ変更し、D121にします。 そうすると、波形の時間差が約20us遅れます。サンプル周波数Fs=48kHz なので、正確にには20.8usです。 |
|
今度は、時間遅れを1/2LRCKとするべく、LPFとHPFのDELAYは同じD120に したままPrecision DELAYをP32(0-63の中央)に設定です。このとき 2つの波形の時間差は約10usであり、1/2LRCKとなっていることを確認 できました。まあ、設定値を1つづつ動かすと、それに応じて波形が すこしづつずれて行くので微調整が可能なことがわかります。 |
ただし、リアルタイムでPrecisionDelayでの時間差を発生させるためには、I2C-DACのところでも書いていますが、
設定値を変更した場合には一度DACをリセットする必要があります。そのため、プログラムの中では設定値の変更後に
使用しているDACであるAK4493リセットコマンドを送出しています。
そろそろ仕上げにかかるかな〜
今回作成しているプログラムは何種類もありますが、1つにまとめるのは大変なので、
個別に完成させて、それぞれのバイナリー(UF2)ファイルを必要に応じてDLする形にする予定です。
というのも、制御用のCPUがRaspi PICOなので、PCとUSBケーブルがあれば、簡単にDLできますからね。
その前に、複数RenewDIV5142をつかうことが前提となる1WAY版も必要だなあ〜。
その前に 2025.1.10
こんなご意見いただきました。
確かに、設定値だけでなく距離に換算した数値が表示されるとわかり易いですね。
ということで、追加です。表示については48kHz以下では小数点1桁まで、88.2kHz以上
は小数点2桁で表示するようにしました。なんせ192kHzだと分解能は0.028mmになりますから
ね。
表示はLPFとHPFの遅れの差を表しています。
44.1,48kHzの場合は小数点1桁まで表示です。単位はmmです。
88.2kHz以上の場合は小数点2桁まで表示です。単位はmmです。
音出し準備
ソフトの仕上げに入るので、音出し準備です。というのも、操作によるポップノイズがどのように
でるのか出ないのか、それらを回避する方法があるのかどうか、ということを調査する必要があります.,
基本的な動作はオシロで見ていますが、なかなかポップノイズなどはオシロではわかりません.,
ということで、接続しているDAC(DAC4493-I2C,DAC1795-I2C)をボリュームコントロールできるように
しておきます。接続するアンプ側に音量調整があればいいのですが、直ぐには準備できそうにないからです。
ボリューム調整は簡単に、制御基板のVRの値をDACに書き込むだけです。
DAC自体はMUTE,-127.5dB〜0dBまで可変できますが、面倒なので-60dB〜0dB程度
で変更できるようにしておきます.そもそも-60dBを下回ると、ほとんど聞こえないですからね.
制御基板上のVRで音量調整です.
とりあえず、画面上にボリュームのAD値(12Bit)を表示するようにしておきました.
ちょっと誤差大きい?
PICOでADCを動かしていますが、VRを最小にしたときで16程度、VR最大で4056程度にしか
動きません。VR最大にしたときにPICOのAD測定端子電圧を測定すると3.296V、そしてPICO
のVREF電圧を測定すると3.319VなのでPICOのVREFの方が若干高いです。これは基板上の
3.3Vレギュレータ電圧とPICO上の電圧レギュレータの出力電圧が違うので仕方ないことです。
しかし、それを考えると、得られる値は4095*3.296/3.319=4066になるはずなのですが、
AD出力値はすこし小さめです。
反対にVRを最小にしたときの電圧はちゃんと0mVまで落ちているので、なぜADCの出力に
16という値が乗るかが不明です。
対策としてはVRの動作範囲を限定すればいいだけの話ですが、もうちょっと調べてみる必要が
ありそうです。というのも、今後PICOのADCを計測などの分野に使おうと思っているからです。
まあ、これらの誤差は音出しの点では関係ありませんが。
大トラブル発生!
ADCの誤差について、PICOの個体差かな〜とおもって、純正のPICOにいれかえてみることに。
まずはPICO単体でプログラムをDLした後に、差し替えました。しかし、電源をいれてもなぜか表示
が動きません。なおおかしいことに、PCMのソースとしているRenewSRC4137も動作がおかしいです。
OPENINGメッセージがでたあと動きません。なんどか、電源を入り切りしていると、急にRenewSRC4137
のどこからか白煙があがりプチという音がしました。なんとPCM9211のパッケージに穴があいています。
なんで、PCM9211が飛ぶの? 電源電圧がなんらかの原因で変化した?
RenewSRC4137は5Vの電圧を受けて3.3Vレギュレータで受けて、回路全体を3.3Vで動作させていますから
大丈夫では?と思いましたが、唯一PCM9211はADCを動かす電源が5Vで、外部から直に繋がっています。
ちなみに5V電源は実験用電源から供給していますが、この実験用電源はDCDCで動かしています。
ひょっとして静電気がどこかで発生して5Vラインに乗ったのかな?冬場で空気も乾燥しているしなあ〜。
それにしても、まずはPCM9211を交換してみないといけないなあ〜.予備あったかな?
ちょっと心折れた状態です。
なぜかこの画面の先に進みません。そうこうしているうちに---
PCM9211に大穴があいてしまいました。
5V電源です。これが原因かなあ?
修理開始 2025.1.11
PCM9211が見つかったので、とりあえずRenewSRC4137の修理です。
まずはPCM9211の交換です。で、交換後に恐る恐る電源をいれて、
動き出すのを確認です。よかったあ〜。
周囲をすこし養生したのち、銅線をICの周りに配置です。
どんどん半田を流し込んで行きます。けちらない!
しばらく半田を温め続けていると、ふとICが動き出す瞬間が
あるので、そのときに外に移動させます。
ICをとりはずしたら、余分な半田を吸い取り、フラクスも掃除です。
交換完了!
無事、いつもの画面まで到達しました。
ソース側のRenewSRC4137が動かなくなったときに、下流側も動かなくなったのは、
RenewSRC4137からのマスタークロックの信号が来なかったために、下流側のDACが
動かなくなって、I2C通信がとまったためにPICOもフリーズしたように見えたのでしょう。
それにしても、.PCM9211ってなんとなく耐性低いなあ〜.以前にも、PCM9211を交換
することがあったような気がします。
まあ、PCM9211を1個交換するだけで、元にもどったのは良しとしましょう。
込みこみで! 2025.1.13
最初に簡単なボリューム設定のプログラムを組み込んでテストをしようかと思っていましたが、
もうそこまでやるなら全体を組み上げてしまえ〜!ということで、DAC基板も含めた統合ソフトを製作中です。
DACのボリュームコントロールだけでなく、赤外線リモコンの機能のブッコみます。
なお、DAC基板の接続は任意なので、接続していない状態でプログラムを動かすとI2C通信で
トラブルが生じます。そのため、プログラムの起動時にDAC基板の有無をチェックして、有れば
動かすし、なければ動かさないようにしています。DAC基板の有無はI2C通信でACKが返って
くるかどうかで調べていますが、AK4493SとPCM1795ではI2Cアドレスが異なるので、どちらが
実装されているかを区別することができます。
DACの操作画面も加えました。Fはフィルタ設定、Iは入力フォーマット、
AはATT(ボリューム)設定(VR、ENC)です。
起動時にDAC4493-I2C,DAC1795-I2Cが接続しているかどうかをチェックしています。
現在は4WAY版を作成中ですが、これをベースに2WAY版ならびにPrecision DELAYをふくめた
ソフトへの改編を行うつもりなので、まずはこのソフトをできるだけ完成にちかづけたいと思っています。
でないと、2WAY版にとりかったときに修正が発生すると、多くの手戻りが生じてしまいますからね。
しかし、こういったソフトってユーザインターフェイスの部分がほとんどだなあ〜.
PCM1795の憂鬱 2025.1.14
色々と操作をしながらバグだししていますが、いつもは通電しっぱなしでの状態です。
ふと、電源を切った状態から立ち上げると、なぜかPCM1795を認識しません。すなわち、
I2Cのエラーが発生しています。
原因として、結論からいえばPCM1795がI2C通信が可能になるのは、リセットが解除された
状態で、かつ外部からクロックが供給されていることがが必要なようです。とくに後者が重要で、
電源立ち上げ時にRenewSRC4137(ソース)が起動する前に、PCM1795をチェックしにいくと、
デバイス反応無しの応答がかえってきます。かといって、電源投入からの待ち時間を長くするのも
いやだしなあ〜ということで、デバイスチェックの前に、クロック信号がきているかどうかをチェック
するようにしました。クロック信号がなければ、「クロック来るまで待ってるで〜」という表示をだします。
音出し準備!
さて、そろそろ音出ししながらチェックをしていきたいのですが、いきなりメインシステムに
接続するのはちょっと怖いです。もし、なんらかのミスがあってスピーカを飛ばそうものなら
心が折れそうです。とくに、ツイータなんか、過大入力で一発でとびそうです。ちなみに、
今のメインスピーカのツイータはScanSpeak D2900です。購入当時は1個2万円ちょっとだと
思いますが、当然のことながら昔のものなので、すでに廃番になっています。
で、その後継機らしきものの値段をみると、なんと1個3〜4万円くらいしていそうです。
時間による物価の上昇と円安の影響かなあ〜.
ツイータ1個でこの値段は流石にもう買えないなあ〜。今のは大事にしなくっちゃ!
ということで、安価なスピーカでつくったものがあるので、それを使おうかと思っています。
アンプは既存のものを使えばいいのですが、配線をはずすのも、面倒なので使えそうなアンプを捜索です。
本来はこういった目的のために、PA3886DCをつかったアンプがあるのですが、いかんせん5ch分しかありません。
本来は6chでつくる予定だったのですが、ケースサイズがすこし足りず5chになってしまいました。
PA3886DCでつくった5chのアンプです。裏側に1ch分の入出力があります。
5ch分しか入りませんでした。
8ch分のアンプを準備!
そのため、この際ですから8ch分のアンプを新規に作成することに。といっても、最近つくったDクラスアンプ(PA3118)
なので製作は簡単です。すでに1台は製作済なので、あとの3台を作成です。
PA3118を追加で3台作成です。コンデンサを寝かせているのは、15mmスペーサで重ねるためです。
こんな形で重ねると、電源の配線も簡単です。一番上には既存のPA3118を
のっけます。
あとは必要なケーブルを取りつければ8ch分のパワーアンプが完成です。
DAC側にRCAコネクタを取り付け
最初はアンプとDACは直配線にしようかと思いましたが、そうすると単体のチェックをしようとしたときに
机の上がこんがらがるので、アンプは切り離せるようにします。そのため、DAC側にはRCAコネクタをとりつけます。
ちょっと、もったいないですがRCA端子がとりつく基板をつかいます。まあ、実験のあとはなんなりと再利用
できるでしょう。RCAコネクタはすこし前にデジットで購入した掘り出しモノです。1個10円でした。
色が黄色一色というのは、ちょっとアレですが。
デジットで購入した掘り出し物のRCAコネクタ(1個10円でした)をつかってDACの出力をとりだす
ようにします。
これで、4枚のDAC基板にRCA端子がとりつきました。
ようやく音出し! 2025.1.15
小さい机の上に、スピーカの他にすべてを並べて音出しです。
これだけで3WAYマルチで鳴らせるのは省スペースでいいかもです。
基板類はこれですべてです。
パワーアンプの電源にはノートPCのACアダプタです。
出力電圧が19Vもあるので十分です。
操作の感触として、とくに不都合はなさそうです。フィルターの設定変更でもポップ音はしません。
これはDIV5142の4WAYあるいは2WAY版の改良後にも採用している処理です。
フィルター係数のメモリーは2個(A,B)あって、PCM5142のDSPが使用している表メモリーと、その間
に書き込める裏メモリがあります。裏メモリ更新後に、表メモリーと瞬時に入れ替えられる機能があり、
これをつかうことで音切れがなく、フィルター値を変更することができます。ただ、初期のDIV5142-4WAY
版では、この機能を知らなくて、一旦スタンバイモードに切り替えてから書き換えていたのですこし
ポップ音がします。
唯一、すこし音が途切れることがあるのがフィルタの最大次数を12(MAX-72dB)と24(MAX-144dB)を
切り替える場合です。これはフィルターの係数だけでなく、実行命令コードも書き換える必要があるので、
どうしてもスタンバイモードにする必要があるためです。まあ、フィルタの次数なんて早々に切り替えるもの
ではないでしょう。
音はどう?
やっぱりフィルター次数の影響は大きい感じです。最初は-24dB/Octで聞いていて、これが普通だろうなあ〜
と思うのですが、次数を-144dB/Octまであげると、音のざわつき感が一気に小さくなり音の分離がよくなります。
ざわつき感というのは、同じ音域だけどツイータとスコーカ、あるいはスコーカとウーハなどの音が混じりあう感じです。
POP系だと少々音がざわついた方が躍動感があっていいのですが、クラシックなどでは多種の楽器がまじり、
低音から高音まで幅広くなると、このざわつき感はやはり問題です。一つの帯域は一つのスピーカに任せるべきです。
そういった点から高次のフィルターが必要になると思っています。
#まだまだ聞いていたいけど、そろそろ仕事しなくっちゃ!明日締め切りだあ〜。
次も1WAY版だ! 2025.1.16
やっつけ仕事も終わって、作業再開です。
現状では完成としている4WAYは下図のようにPCM5142を1つのバンドパスフィルターとして使っています。
なおDACはオプション扱いで、DAC4493-I2CあるいはDAC1795-I2CがI2C接続してあれば動作させるし、
してなければ無視します。この部分は、当然のことながら既存のDACをつかう場合もあるでしょう。
現在の4WAY版はこんなブロック図です。DACはオプションです。
そこで、次は画面回りを同じにできる都合上から、1WAY版を作成です。すなわち、4つのPCM5142を全てカスケード接続して
使います。そのためRenewDIV5142を2枚使えば2WAY、3枚で3WAY、4枚で4WAYに対応です。
今度はこれを目指します。
ソフト開発ができるように、RenewDIV5142ボードも増設です。
コントローラx1,RenewDIV5142x4,DACx4,RCA基板x2の11階建てになりました。
しかし、今後これにPrecisiotn DELAYが加わるので、ますます高層かしそうです。
分ければいいのですが高層ビルの方が土地面積が狭いので、机の上が広く使えます。
高層ビルの工事中です(笑。
1WAY版ではフィルタとしては一つのPCM5142は12BIQUADのみです。そうすれば192kHzまで対応可能で、
フィルターの次数は最大で-288dB/octのバンドパスフィルタになります。やろうと思えば96KHz対応までに
して24BIQUAD構成にすれば、-576dB/octということもできそうですが、-200dB/octを越えると違いがわから
なくなるようなので、あまり意味はないでしょう。
完成かな?(1WAY版) 2025.1.17
RenewDIV5142を最大で4基板をつかうバージョンもほぼ完成かなあ〜。
やっぱり-144dB/octと-288dB/octでは、減衰率が異なるのがよくわかります。
下図はfc=400HzでのHPFとLPFの通過状態の違いです。
当然のことながら-288dB/Octの方がより遮断特性が急峻になっています。
減衰率 -144dB/oct | 減衰率 -288dB/oct | |
380Hz | ||
420Hz |
さて、次は最大-216dB/Octも作るか?
色々とあとのことを考えてPCM5142を1.5個分をつかった18BIQUADで-216dB/Ootのフィルターのパターンも
作っておくかな?これだとBPFを構成するのに3個のPCM5142が必要です.そして.残りの1個はDELAY素子として
使います。
次は後のことを考えてこんなパターンもありかもです。
Precision Delayも増産 2025.1.19
1WAY版(-216dB/oct)にはDELAY機能もはいるので、ついでにPrecisionDelayもあわせて増産です。
とりあえず2枚追加で製作して、都合3枚にしました。4WAYで使う場合には、どれかのスピーカを基準にして
残りのスピーカ3個分の調整だけで済みますので最大でも3枚で十分です。まあ、気分的には4枚あったほうが
すっきりとはしますが、勿体ないです。 そして、作成したPrecision Delayは個々に動作確認したのにち、
高層タワーの低層階に挿入です。
しかし、これだけ高くなると、上層階のRenewDIV5142から下層階のPrecisionDelayまでケーブル届くかな?
Precision Delayを都合3枚準備です。夜の夜長の半田付けのお楽しみでした。
個々に動作の確認です。すべて、I2Cで繋がっています。
下の3階層が今回追加したPrecision Delay基板群です。
ソフトも煮詰まりつつ
ソフトの構成もだいぶ煮詰まりつつある感じです。これをベースにして2WAY版にもしようかと思っています。
1ページ目:DACの調整メニューです。DACの接続がない場合はスキップします。
2ページ目:フィルターの調整メニューです。RenewDIV5142の接続のない場合は
チャンネル数字が*になります。
3ページ目:フィルターの設定メニューです。
4ページ目:DELAYの調整メニューです。D/dならびにP/pは
それぞれDELAY(DSP内部)、Precisio Delay(外付け基板)の
設定値で、大文字なら実装有り、小文字は実装なしを示します。
一番左の数値はCH1を基準とした距離差になります。
PCM1795の憂鬱その2 2025.1.21
Precision DELAY基板をつかうときは、その設定を変更したときに
DACを一度リセットする必要があります。一度リセットすることで、DAC内部の
動作を初期化して、LRクロックに完全に同期した微小な遅延が再現ができます。
これに関してはAK4493Sはすごく便利です。AK4493Sにはソフトでのリセット機能
があり、このリセットでは内部のレジスターに影響を与えません。そのため
ボリュームやフィルターの設定、入力フォーマットは不変のままです。
AK4493Sではソフトリセットでは内部のレジスターには影響を与えません。
それに対して、PCM1795は一応ソフトリセットもあるのですが、いわゆるハードリセットと同じです。
リセットをかけると、すべてレジスターが初期状態になってしまいます。それにソフトリセットをかけると、
その直後からI2C通信ができなくなるので、普通のI2Cサブルーチンだとハングアップしてしまいます。
PCM1795でもソフトリセットはありますが、初期状態に戻ってしまいます。
I2Cの問題はあとでなんとかなりますが、一番の問題はボリューム調整です。
PCM1795ではリセット直後のデフォルトが0.0dB減衰、すなわちVOLUMEはMAXになっています。
そのため、VOLUMEをしぼった状態で、Precision DELAYを動かしてリセットをかけようものなら、
爆音がでてきます。そのため、MUTEリレーとの連携が必要になります。
動作シーケンスとしては、こんな形にする必要があります。
1.Precision DELAYの設定値を変更。
2.PCM1795のレジスターのデータを読み込み。
3.MUTEリレーを動作(MUTE状態に)させ無音状態に。リレーが動作するまで待つ(8msほど)
4.PCM1795をリセット(外部リセットでパルスでよい)
6.しばらく待機(PCM1795が立ち上がるまで待つ。1024システムクロックです)。
7.読みこんだデータをPOCM1795に再度書き込み
8.MUTEリレー解除(音がでる状態に)
問題はリレーの動作時間だけ、待つ必要がありますのでその間は無音です。
というか、ちゅうと半端に長い短い時間(数ms)なのでポップ音としてでてしまいます。
まあ、これは仕方ないことでしょう。そう頻繁にPRECISION DELAYを調整することはないでしょうし。
このポップ音もどの程度になるか、試聴で試してみる必要があります。
再度試聴! 2025.1.22
今回は出窓にスピーカ等を設置して試聴です。
この場所を選んだのは、そのままカーテンを閉めれば隠せるかなあ〜っと(笑。
で、試聴して操作時のポップ音を確認してみましたが、
・DSPのDELAY変更時はほとんどわからない。
・Precision DELAYの変更もAK4493だと、ほとんどわからない(ソフトリセットなのでリレーは動かない)。
ただし、PCM1795の場合だとリレーが動作するので、ポップ音はでます。でも、あまり気にならない程度。
というところでした。まあ、製作者の贔屓目もあるでしょうが。
で、操作をしていて画面回りや動作の点で、すこし手を入れる必要があるところが
色々と見つかりました。これらは、おいおいチェックしていきましょう。
でも、大まかななところはまずは問題なく使える感じでです。
今回は出窓にセットして試聴です。
フィルターの減衰率は重要だなあ〜
しかしながら、あらためてフィルターの減衰率って重要だなあ、ということを今回の試聴でも再認識です。
最初に-24dB/octで動かしていて、こんなもんかな〜と思っていて、-48dB/octに変更すると、
一変して世界が変わります。
-48dB/octで聞くと、-24dB/octでは減衰率が十分でないので、
音域をわけたスピーカの音がまじりあっている様子が一目(一聴)瞭然です。
さらに減衰率を上げていくと、さらに音のクリアさが増していきます。
-144dB/octを越えたあたりから、よくわからなくなってきますが、
それは試聴につかっているスピーカの問題かなあ〜。そろそろメインスピーカに
繋いで聞いてみたいところです。
ちなみに、試聴につかったスピーカでの再生を簡単に録音してみました。
生で聞くと違いがよくわかるのですが、録音だとすこしわかりにくいかもです。
なおクロスオーバ周波数は200Hzと2000Hzです。
減衰率 (dB/oct) |
録音ファイル (WAV) |
感想 ※録音機材が古いので、すこしノイズが入っている場合があります。 |
-24 | SOUND1 | 一聴して、スピーカ間で音がまじりあっている感じがわかります。 でも、普通はこんな感じなのかもです。 |
-48 | SOUND2 | -24dB/octに比べると、すこしエネルギー(音量)が落ちます。 これは、通過帯域外が遮断されるからですが、反対に音が 鮮明になっているのがよくわかると思います。 |
-96 | SOUND3 | -48dB/Octにくらべると、さらに音がクリアになるのがわかります。 ただ、録音だとわかりにくいかなあ〜. |
-216 | SOUND4 | ここまであげると、手前の-192dB/octとの違いがわからなく なってきますが、スピーカを変えたらわかるかもです。 |
さて、操作してみて気になるとこを修正していきましょう!
ダンピング抵抗調整 2025.1.23
192kHz再生時にどうやら特定のチャンネルだけ、ノイズがでている様子。
96kHzでは問題がないことを考えると、どうやらダンピング抵抗の調整が必要です。
現状の接続は下記の通り。
RenewDIV5142 -> PrecisionDELAY -> DAC4493-I2C
この接続で192kHzでノイズがでるものがあるが、下記のように接続するとノイズがでない。
RenewDIV5142 -> DAC4493-I2C
ということで、どうやらPrecisionDELAYのダンピング抵抗の調整が必要なようです。
そこで、各ダンピング抵抗(51Ω)をピンセットで触っていき、どのラインが問題になっているか
調べていきます。すると、出力側のDATAラインのダンピング抵抗を触るとノイズが消えました。
さて、ダンピング抵抗をどう調整しようか?これはカットアンドトライです。
0Ω(短絡) -- NG
220Ω -- OK
ということで、大きくするのが良さそうです。どこまで大きくできるだろうと試したら
1kΩ -- OK
です。かなり大きな値でも大丈夫だなあ〜。でも、あまり大きいのも信号の立ち上がりが
心配になるので、中くらいの値にしました。
510Ω -- OK
なぜDATAラインのダンピング抵抗の調整が必要になったかを考えると、
Precision DELAYの出力ラインのうち、SCKとBCKについては入力信号を74LVC245
でバッファアリングして出力していますが、LRCKとDATAについては74HC151の出力を
そのまま使っています。HCシリーズであるため駆動力が低かったのでしょう。
ちなみに、74151(8ビットセレクタ)ってHCシリーズしかないのですよね〜.
本当はすべてLVCシリーズで揃えたかったのですが、残念です。
ということで、Precision DELAYの出力側のダンピング抵抗については、
念の為もふくめて、すべてのDATAとLRCKの出力については510Ωにすることにしました。
これで、192kHz再生時でも全チャンネルでノイズなく再生できるようになりました。
でも、ダンピング抵抗って配線長やGNDの接続でも変わる可能性があるので、
ケースに組み込むときに、再調整になるかもしれないなあ〜。
そろそろ長くなってきたので(その4)に移行します。
(その4へ)