ディジタルチャンデバを検討する!の巻き 2018.2.15
TI社のDACに含まれるminiDSPを使うとフィルターの設計が自由にできます。そのためには
Purepath studioを使う必要がありますが、なんとかその使い方もわかってきました。
そうなると、やっぱりやって見たいのがディジタルでのチャンネルデバイダーです。
いまはアナログ、すなわちOPアンプをつかった3WAYのチャンデバを使っていますが、
これがディジタルになれば自由に遮断周波数等が切り替えられるので、いろいろと遊べそうです。
いきなり描き出し?
素子としてはPCM5142を使います。まだ、事前に確認することが若干残っていますが、
まずは、基板に搭載したらどうなるかを試してみました。
目標とするところは4chのチャンデバです。
周波数の設定が大変になりそうなので、LCDをつかってパネルでコントロールできるようにします。
STDサイズはきついかな?
使用する素子自体は少ないので、基板サイズはSTDサイズでもいいかな〜とおもいましたが。
やはりちょっときつそうです。
STDサイズに搭載しようとするとちょときつくなりそうです。
やっぱり、WIDEサイズかな。
すこし余裕を持たせるためにもWIDEサイズを採用しましょう。
WIDEサイズの方がよさそうです。
4chのチャンデバですが、ディジタルの入出力だけなくアナログ出力も搭載しましょう。
心配なのは
コントロールにはPICを使いますが、その容量が足りるかな?ということです。
フィルターのためのコードデータは結構な量になります。さらに、周波数(FS)別や遮断周波数別に
各種対応しようとするとかなりのデータ量になる可能性があります。ひょっとして別データ用にEEPROMを
載せたほうがいいかもしれないな〜という気もしてきました。パターンとしては搭載できるスペースを
確保しておいたほうがいいかもしれません。なんといってもEEPOMは8pin-DIPなので、簡単に搭載できそうです。
その前に確認しなくっちゃ 2018.2.17
心配はしていないのですが、PCM5142のディジタル出力は正規のフォーマットででているかどうかを確認しておきました。
構成は
SRC4137 → PCM5142(ディジタルフィルタ) → DAC1242-5
で確認しました。DAC1242-5の入力フォーマットはI2Sに設定しておきます。
こういった感じで確認をおこないました。
無事動くようですね。
PCM5142のディジタル出力は正規フォーマットであることが確認できました。これで、安心したパターンが描けます。
大まかに描けてきました!
WIDEサイズの基板だったら余裕かな〜と思っていましたが、案外窮屈になりました。
なお、液晶を用いてパラメータを設定しますが、設定項目が多いので20列4行タイプ(SC2004)を使うことを前提にしています。
結構密度が高いです。
とりあえず完成!
こんな感じかな〜。
部品面パターンです。
半田面パターンです。
基板を作ってみましょう!
基板データはメーカさんから問題なしの連絡があり、無事製作開始になりました。
さて、次はソフトの製作にかかりましょう。
フィルターデータをどうするか?
チャンネルデバイダでの最大の機能は、勿論いろいろな組み合わせでのフィルターを構成することですが、
そのフィルターの設定をどうするかは思案のしどころです。1つは1Hz単位で任意の周波数にて設定する場合、
1つはある程度決められた周波数での固定テーブルを持つかです。どちらも長短ありますが、固定テーブルを
持たせる場合は、たとえば1.1倍の等比級数でテーブルを持たせるとなる、次のように50〜16000Hz間を分割
すると62個程度のテーブルが必要になります。
NO | Fc(Hz) | NO | Fc(Hz) | NO | Fc(Hz) | NO | Fc(Hz) | NO | Fc(Hz) |
1 | 50 | 16 | 209 | 31 | 872 | 46 | 3645 | 61 | 15224 |
2 | 55 | 17 | 230 | 32 | 960 | 47 | 4009 | 62 | 16746 |
3 | 61 | 18 | 253 | 33 | 1056 | 48 | 4410 | ||
4 | 67 | 19 | 278 | 34 | 1161 | 49 | 4851 | ||
5 | 73 | 20 | 306 | 35 | 1277 | 50 | 5336 | ||
6 | 81 | 21 | 336 | 36 | 1405 | 51 | 5870 | ||
7 | 89 | 22 | 370 | 37 | 1546 | 52 | 6456 | ||
8 | 97 | 23 | 407 | 38 | 1700 | 53 | 7102 | ||
9 | 107 | 24 | 448 | 39 | 1870 | 54 | 7812 | ||
10 | 118 | 25 | 492 | 40 | 2057 | 55 | 8594 | ||
11 | 130 | 26 | 542 | 41 | 2263 | 56 | 9453 | ||
12 | 143 | 27 | 596 | 42 | 2489 | 57 | 10398 | ||
13 | 157 | 28 | 655 | 43 | 2738 | 58 | 11438 | ||
14 | 173 | 29 | 721 | 44 | 3012 | 59 | 12582 | ||
15 | 190 | 30 | 793 | 45 | 3313 | 60 | 13840 |
実際にはこれだけ細かいテーブルを持たせれば十分なのですが、62個のテーブルを作成するが
結構大変です。というのもLPF、HPFの組み合わせに加えて入力周波数毎(44.1kHz、96kHz)での
準備が必要ですので、合計62×2×2=248のテーブルが必要です。さらに、1つのデータにはBiquad
フィルターでは5つの係数が必要になります。
係数の計算自体はPurepath Studioでできるので、それをプログラムに1つづつコピペをするとなると
結構大変です。それに絶対1つや2つはコピペをミスるだろうし・・・・どうしよう?
フィルター設計を探してみる!
やはり、フィルターの係数については遮断周波数が決まれば、そこから算出するための方法を調べて
おいたほうが良さそうです。そうすれば、エクセルでもC言語でも簡単に周波数テーブルが作成できます。
ということで「Biquad filter 設計」でくぐると、色々とでてきました。
その中から、教科書的な資料があるようで下記にまとめられいることがわかりました。
http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
しかし、いまさらですが機械系の私ではありますが、学校でも伝達関数やなんかの授業はあったので
もうちょっと真剣に勉強しとけばよかったなあ〜と後悔です。なんせ、麻雀ばっかりやってたもんな〜(笑)。
以下は半分備忘録がわりです。
実際に計算してみる
さて、上記のCookBookを引用すると、下記のように計算することができます。
Biquadでの式では係数がa0,a1,a2,a3,b0,b1,b3の6個があります。
伝達関数
b0 + b1*z^-1 + b2*z^-2
H(z) = ------------------------
a0 + a1*z^-1 + a2*z^-2
そして、それぞれの係数の計算は下記のようになります。
LPFの場合
b0 = (1 - cos(w0))/2
b1 = 1 - cos(w0)
b2 = (1 - cos(w0))/2
a0 = 1 + alpha
a1 = -2*cos(w0)
a2 = 1 - alpha
HPFの場合
b0 = (1 + cos(w0))/2
b1 = -(1 + cos(w0))
b2 = (1 + cos(w0))/2
a0 = 1 + alpha
a1 = -2*cos(w0)
a2 = 1 - alpha
ここで
w0 = 2*pi*f0/Fs
alpha = sin(w0)/(2*Q)
です。f0は遮断周波数、Fsはサンプル周波数(たとえば44.1kとか96k)です。
仮にfs=44.1kHz、f0=1000HzでLPFを計算してみると、下記のようになります
サンプル周波数(Fs) | 44100 |
遮断周波数(f0) | 1000 |
Q | 0.707 |
w0 | 0.142475835 |
alpha | 0.100405129 |
計算結果 | |
b0 | 0.005066262 |
b1 | 0.010132524 |
b2 | 0.005066262 |
a0 | 1.100405129 |
a1 | -1.979734952 |
a2 | 0.899594871 |
さて、この計算結果と実際のPCM5142やTAS5756での係数をマッチするか確認しておきましょう。
PCM5142のマニュアルをみると、フィルターの伝達関数は下記の様に定義されています。
伝達関数の式の形がすこし違いますね。CookBookの係数a0で正規化されています。それにそれぞれの係数で符号や倍率が若干変わっています。
で、まずはPurepath Studioで係数をもとめてみました。同様にfs=44.1Kz、f0=1000Hz、Q=0.707、LPF、で計算すると
こんな値になりました。
さきにCookBookを用いて計算した結果とはことなります。これは、先に述べたようにA0で正規化されているのと、
係数の符号、倍率が違うからです。では、さっそく補正してみましょう。
CookBook 計算値 |
a0で正規化 | 変換係数 | 変換後 | Purepath Studio 計算係数 |
|
b0 | 0.005066 | 0.004604 | 1 | 0.004604 | 0.004604 |
b1 | 0.010133 | 0.009208 | 0.5 | 0.004604 | 0.004604 |
b2 | 0.005066 | 0.004604 | 1 | 0.004604 | 0.004604 |
a0 | 1.100405 | 1.000000 | |||
a1 | -1.979735 | -1.799096 | -0.5 | 0.899548 | 0.899536 |
a2 | 0.899595 | 0.817512 | -1 | -0.817512 |
-0.817487 |
比較すると、微妙に小数点の下の桁で違いがありますが、ほぼ一致することが確認できました。
ということで、このCookbookの式から周波数テーブルが作成できそうです。
大量のコピペが必要かと、最初は気おくれしてましたが、これでなんとかなりそうです。
計算は整数で
上記の係数は浮動少数点でしたが、実際のテーブルは24Bitでの整数値です。
これは0が0x000000、+1が0x7FFFFF、-1が0x800000という形に変換されます。
Purepath Studioでの係数も整数(HEX)であらわすと下記のようになります。
さて、この整数(HEX)への計算をEXCELでしようとしましたが、自分のPCにインストールされている
EXCELはかなりバージョンが古くて@dec2hex関数がありません。こりゃ、また帰省先にもどったときにでも
新しいPCで計算してみなくっちゃ。
とりあえずはWEB上でのフリーソフトを使って変換してみました。
CookBook 計算値 |
a0で正規化 | 変換係数 | 変換後 | 整数化 (*2^23) |
HEX変換 | Purepath Studio 計算係数 |
HEX値 | |
b0 | 0.005066 | 0.004604 | 1 | 0.004604 | 38621 | 96DD | 0.004604 | 0x0096DC |
b1 | 0.010133 | 0.009208 | 0.5 | 0.004604 | 38621 | 96DD | 0.004604 | 0x0096DC |
b2 | 0.005066 | 0.004604 | 1 | 0.004604 | 38621 | 96DD | 0.004604 | 0x0096DC |
a0 | 1.100405 | 1.000000 | ||||||
a1 | -1.979735 | -1.799096 | -0.5 | 0.899548 | 7545957 | 732465 | 0.899536 | 0x7323FC |
a2 | 0.899595 | 0.817512 | -1 | -0.817512 | -6857792 | 975BC0 | -0.817487 | 0x975C94 |
さて、遮断周波数が決まればBiquadフィルターでの係数の計算ができることになりましたが、
PICのC言語ライブラリでsin,cosなどの関数ライブラリーあったかなあ〜。これは調べてみないと。
あった〜 2018.2.20
ありましたね。sin,cosに含めて変数としてdouble型もつかえるようです。
制御用のマイコンなのですが、doubleがつかえるとはうれしいですね。
でも、どこまで精度がでているのか調べてみないといけないです。
どうやら単精度の様子 2018.2.21
変数の形としてはfloatもdoubleもありますが、どうやらどちらも単精度(32Bit)のようです。
まあ、それでも十分でしょう。
ということで、PIC用にBIQUADの係数のプログラムを作成してうまくうごくかどうか確認してみました。
たとえば、LPFの場合はこんな感じの関数です。
lpf_coeff(double fs,double f0,double q)
{
double b0,b1,b2,a0,a1,a2,alpha,w0,c;
//最初にw0とalphaを求める。
w0=2.0*PI*f0/fs;
alpha = sin(w0)/(2.0*q);
//係数の計算
c=cos(w0);
b1 = 1.0 - c;
b2 = b0 = b1*0.5;
a0 = 1.0 + alpha;
a1 = -2.0 * c;
a2 = 1.0 - alpha;
//a0で正規化
c = 1.0/a0;
b0 *= c;
b1 *= c;
b2 = b0;
a1 *= c;
a2 *= c;
//PCM5142用に変換
b1 *= 0.5;
a1 *= (-0.5);
a2 *= (-1.0);
//24ビット整数に変換
if(a1>0.0) b_a1=a1*8388608; else b_a1=16777216+8388608*a1;
if(a2>0.0) b_a2=a2*8388608; else b_a2=16777216+8388608*a2;
if(b0>0.0) b_b0=b0*8388608; else b_b0=16777216+8388608*b0;
if(b1>0.0) b_b1=b1*8388608; else b_b1=16777216+8388608*b1;
b_b2=b_b0;
}
計算速度が速くなるように、cos(w0)の計算は1回に抑えています。
PICに書き込んで実行してみると、ほぼ一致しました。
計算結果の一致を確認しておきました。
その後・・・
その後、いろいろと調べているとTI社にbiquadフィルターの設計ツールが公開されていることがわかりました。
ここからダウンロードできます。 → http://www.tij.co.jp/tool/jp/coefficient-calc
リクエストではなくダウンロードとなっているので自由にダウンロードして使用することができます。 |
機能としてはあまりありませんが、唯一便利なのは複数のフィルタを連結したときの総合特性が見れるのがいいです。
下記はバターワースでQ=0.707でfc=1000HzのLPFを2段重ねたときの特性です。2段ですのでfc=1000Hzのところで
-6dBになっています(一段だと-3dB).
あと、Coeffのボタンを押せば係数も得られます。
最初にこれを知っていたら、係数のコピペができるので日和っていたかもしれません。
たぶん、そうしたら近い未来にコピペ地獄に陥っていた可能性大です(笑)。
係数も導出することができます。
そろそろ基板が出来上がる頃・・・・ 2018.2.26
先週末には基板は入手できる予定でしたが、ちょっとした手違いがあって手にするのは週明けになりそうです。
まあ、のんびりやりましょう。
開発準備!
基板が出来上がるまでに、すこしソフト開発のための準備です。
ひとつはディジタルソースには色々と周波数を切り替えられるようにSRC4137を主に使っていますが、
SRC4137には毎回SPDIF信号を入力していましたが、もっと簡単にUSBを接続するだけでつかえるように
DAC2704基板を取り付けました。この基板にはパルストランスを取り付けています。
またSRC4137の基板の裏にはアクリル板を取り付けて、不用意なショートに備えました。
SRC4137にDAC2704を取り付けました。
DAC2704にはパルストランスを取り付けています。
裏にはショート対策のためにアクリル板を取り付けています。
基板が完成してきました。 2018.2.27
こんな感じで完成しました。
一気に組み立てましょう!
基板を目の前にするとやはり組み立てたい衝動にかられます。ということで、夜になりましたが組みたてにかかりました。
シルク間違い発見!
基板裏面(半田面)ですが、いきなりシルクミス発見です。ちょうどPICの真裏になりました、
CpとRbの両方のシルクがあります。これはCpが正解ですね。
シルク間違い発見です。
一気に完成しました!
ふう・・・・部品点数はさほど多いわけではありませんが、結構時間かかりました。
時間の多くは部品を探す時間ではありますが・・・
まずは完成したので、お出かけ用の写真をパチリです。
お出かけ用の写真です。
LCDを搭載した場合はこんな感じになります。
さて、動作確認をしていきましょう! 2018.3.4
動作確認のためにはソフトの製作が必要で、基板を確認しながらPICとの接続状況を確認していくのですが、
今回のミスのひとつとして、あまりない間違いですがLCD接続コネクタのPin5はGNDに落ちていないことに気づきました。
1.LCDコネクタ(CN6)のPin5をGNDへ接続。
修正は簡単で、Pin7はGNDに接続されているので、Pin5とPin7を接続することで修正完了です。
CN6の裏面で、黄色線のジャンパーが必要です。
修正した状態です。
動作の確認には色々なステップがありますが、まず最初はLCDが正常に接続されているかの確認です。
これについては特に問題ないことがわかりました。
まずはLCDの表示は問題ないようです。
つぎは、PCM5142であるI2C通信デバイスとの通信状況の確認です。これはLCDが表示できることが確認できたので、
LCDにI2C通信時のデータを表示させることで確認します。
4つのPCM5142との通信は問題ないようです。
簡単なプログラムを組んで!
次からは、実際に簡単なプログラムを組んで個々のPCM5142が動いているかを確認します。
Purepath Studioで簡単なプログラムを組んで、それをすべてのPCM5142に書き込んで、動作するかを確認します。
これが完了すれば、ハード的な確認はほぼ完了であとはソフトを組むだけになります。
極めて簡単なフィルタの構成プログラムでハードの確認です。
こんな感じで動作の確認中です。
CH1だけノイズがでるな〜
PCM5142のアナログ出力が問題ないかを確認していきます、CH1だけノイズが発生しています。
PCM5142は4個ありますが、ノイズが発生するのはPCM信号の入力バッファーに一番ちかい素子になります。
こんな感じでノイズがでます。なぜかな?
まず疑うのは半田付けの不良ですが、それはなさそうです。次は、ソフトウエアの問題かな?とも思いましたが
他の3つのPCM5142からは正常な出力なのでそれもないでしょう。最後には素子の不良?かとも思いました。
これを確認するには素子を交換する必要があるのですが、たいていはこういう場合は素子を換えても同じ現象
になるのが今までの経験でもあるので、もう少し原因を探ることに・・・・・
あ!なるほど!!
ああでもない、こうでもないと素子を叩いたりしましたが、変化はないのですが、
素子の近くのパターンを手で触れるとノイズの発生状態が変わることに気づきました。
パターンに手を触れるとノイズの発生の仕方がかわります!
だいたい、原因がつかめてきました。BCKラインにオシロのプローブを当てながら測定するとノイズが消えます。
どうやら基板内でインピーダンスのミスマッチがあったようです。ということで、BCKラインの途中にダンピング抵抗(51Ω)を
挿入することにしました。0.25mmのパターンの途中を切断し、レジストを剥いでチップ抵抗を取り付けます。
IC5の出力のパターン(黄色の→部分)にチップ抵抗を取り付けます。
こんな感じで取り付けました。
ノイズが取れました。
ちょっと原因を突き止めるまでに時間がかかりましたが、無事ノイズも取れました。
ノイズが取れました。
これでアナログ出力の確認は完了です。
最終確認!
最後はディジタル出力の確認です。DIV5142には4つのディジタル出力がありますが、
それぞにについて出力を確認します。出力確認のためにDACを接続しますが、
ここではPiDAC4497を使用しました。
構成は
SRC4137→DIV5142→PiDAC4497
になります。
まずはCH1の出力の確認です。
あわせて、ディジタルフィルターとして動いているかも確認です。
簡単にfc=1000HzでのLPFをPICには組み込んでいます。
250Hz 1kHz 4kHz
周波数があがると振幅が変わっていることでディジタルフィルタとしても機能していることを確認です。
あれ?
さて、CH1、CH2、CH3と順調に確認が進みましたが、CH4でノイズがでています。
CH4ではノイズがでています。
こりゃ、BCKだけにダンピング抵抗をいれましたが、すべてラインに入れたほうがいいでしょう。
ということで、ダンピング抵抗の追加です。
LRCKラインにダンピング抵抗を入れるためにパターンを一部切断。
さらに3つのダンピング抵抗を追加しました。JP4のところにも付いています。
これで完了!
すべてにダンピング抵抗を入れて、CH4からのノイズも消えました。
CH4からのノイズも消えました。
さて、これでハードの確認は完了かな〜。あと細かいところは若干ありますが
大丈夫です。
ソフトを本格的に組んでいきましょう!
※でも、しばらく出張続きとなるので滞りそう〜。
ひさしぶりに作業再開です。 2018.3.10
まず、ソフトの仕様についてすこし整理です。
主要なところはこんなところです。
1.チャンネル数:4(LPF,HPF,BPFは独立して変更可)
2.遮断周波数範囲:40〜20000Hz
3.遮断特性:−12、−24、−36、−48dB/octから選択
4.ゲイン調整:−20〜0〜+10dB(オーバーフローは要注意)
5.クロスポイント:−3dB(それ以外とする場合は遮断周波数で変更)
6.モノラル合成:各チャンネル毎で可
主要ブロックは
各チャンネルでの基本構成は下図のようになり、それぞれ4つのBiQUADフィルタを連結してLPFとHPFを構成します。
この4つのフィルタのうち、何個をアクティブにするかで-12〜-48dB/octの減衰特性を選定します。
基本のフィルターの構成です。
フィルターを連結した場合に、f0の位置で-3dBになるようにするには、それぞれのフィルターのQ値は調整する必要があります。
これらについては、フィルターの教科書的のような内容なので、WEBでくぐればすぐにでてきます。
備忘録ですが、このような値になります。しかし、-48dB/octの特性ってつかうかな〜?というくらい急峻です。
−12あるいは-24dBが自然なつながりでいいかもしれません。通常のスピーカのネットワークなどは高くても-18dB/oct程度でしょう。
コンデンサとコイルで-48db/octを実現しようとすると大変ですが、ディジタルだと容易に実現できるのが一つの特徴です。
減衰率 | Q1 | Q2 | Q3 | Q4 | |
2次 | -12dB/oct | 0.707107 | |||
4次 | -24dB/oct | 0.541196 | 1.306563 | ||
6次 | -36dB/oct | 0.517638 | 0.707107 | 1.9321852 | |
8次 | -48dB/oct | 0.509796 | 0.301345 | 0.899976 | 2.562915 |
モノラルにも対応
スーパーウーハなどをつかう場合にはモノラル構成にすることが必要なので、それも実現できるようにしておきましょう。
最終段で一旦モノラル合成したのちに、再度分岐させて出力させます。
モノラル出力も可能にしましょう!
コアの部分は
もちろん、指定された次数、フィルター種類、サンプル周波数、遮断周波数毎にBIQUADの係数を計算して、それぞれPCM5142に
書き込む部分が一番のコアになります。意外と複雑なルーチンになりますが、なんとか完成しました。
フィルター特性を確認しておきましょう。
f0=2000HzでLPFを作成してみて、どのような減衰特性になるか一応確認しておきました。
6次(-36dB/oct)まで確認したて、8次の測定はあまり意味ないな〜と思ってやめてしまいました(笑)。
1000Hz | 2000Hz(f0) | 3150Hz | 4000Hz | |
2次 | ||||
4次 | ||||
6次 | ||||
8次 | 未測定 |
さて、コンソール用のプログラムを書いていきましょう!
骨格ができてきました。 2018.3.11
休日が一日あるとだいぶ出来てきました。
1.フロントページ
起動したときの表示画面です。基本はボリュームの表示と入力周波数の表示になります。
なぜ入力周波数を表示するかといえば、入力周波数が変わるとフィルターの定数を変更する
必要があるからです。それがわかりやすようにしています。
フロントページ
2.フィルター設定ページ
これが、このソフトでの要の部分です。CH1〜4でのHPF、LPF、GAINを設定します。
”<”で表示されているところが変更可能部分になります。
表示については、たとえば2500Hzを2500と表示すると、LCDの表示容量が足りないので
2500は2K5と表示しています。THRはその名の通り、THROUGHです。
フィルター設定ページ
周波数の設定は下記のテーブルを使います。もっと細かくしてもよかったのですが、
隣接する周波数との差を10%以下にすれば十分でしょう。
3.フィルター次数設定
フィルター次数を設定します。2、4,6、8次で設定できます。
8次となると48dB/octですので、かなりスパッと切れるネットワークになります。
フィルター次数設定
4.ステレオ/モノ設定
サブウーハーなどを使う場合はモノ設定すると便利なので、モノとステレオの切り替えができるようにしています。
普通のネットワークとして使う場合はステレオ設定になります。
ステレオ/モノ設定
付属機能も追加します。
LCD自体は基板に接続したままで、フィルター設定後はケースの中に埋め殺しでつかう場合も想定しているので、
最低限の表示ができるように、ボリューム表示用のLED(2桁)と周波数表示用のLEDをつけています。
LCD以外にも表示機能をつけています。
ほぼ完成?
しばらく、色々な操作を繰り返してバグ出し&修正を進めて、ほぼ煮詰まってきました。
192kHzで動くチャンネルデバイダの完成なので、すこしうれしくなってきます。
全体的にはこんな形で動作確認をしています。 SRC4137→DIV5142→PiDAC4497 で動作させています。
消費電流は?
結構電流は必要です。LCDのLEDバックライト電流も含まれますが20mA程度なのでしれています。
ただ192kHzでの動作時の電流なので、これ以上にながれることはないでしょう。
192kHz動作時の電流です。
リセットがかからない?
上記の写真構成で、DIV5142だけ電源を切って、再度電源を入れてもDIV5142が起動しません。
これは容易に原因が想像できて、SRC4137から信号入力を受けていますが、ここからロジックICを介して
電源が供給される形になるからです。電圧を測定すると1.3V程度かかっています。
これだと、PICは完全にシャットダウンできないし、かつ動作を継続するという状態にはなりません。
一旦DIV5142だけの電源を切断します。
この状態でも1.3Vの電圧が残っています。SRC4137から信号線を介して供給されています。
リセットをかけるには
一旦SRC4137の電源も落とした上で、両方を同時に電源ONすれば、問題なくリセットがかかります。
まあ、普通は同じケースに入るはずなので電源は同時に落ちて、そして同時に立ち上がるので問題は
発生しないのですが、個別に電源を入り切りするとこういう現象も発生してしまいます。
一旦SRC4137の基板の電源を落とした上で再度電源を入れます。
新しい機能を追加
DIV5142では基本的には4チャンネルのフィルターはすべて独立に調整しますが、
クロスポイントをチャンネル間で同時に動かす場合に、いちいち2つの遮断周波数を変更するのも
面倒なので、互いに連動できるようなコマンドも追加しました。
こうすれば、4WAYの場合だと3つの遮断周波数だけを変更するだけで済みます。
チャンネル間で周波数の調整が連動できるコマンドも追加しました。
電気屋を覗いてみると 2018.3.13
YAMAHAのフラッグシップのスピーカが置いてありました。
鳴ってはいなかったけど、ピアノブラックがいい感じです。
で、カタログを見るとクロスオーバは700Hz、4500Hzだったようです。
ミッドのサイズからすると、もう少し低い領域もサポートできそうだけど、こんなもんででしょうか。
それより3WAYの場合のクロスは高くても5000Hz程度でしょうか。
となると、今回のチャンデバでは40-20000Hzを分割して周波数を設定できるようにしていますが、
もう少し低い方の分解能をあげたほうが、調整の幅が広がるかもしれません。
YAMAHAの最上級のスピーカです。150万円ペアです。ピアノブラックがいいですね。
周波数テーブルを選択できるようにしてみました。
現在のソフトでは周波数テーブルは1つだけでしたが、用途にあわせて変更できるように
テーブルを4つ用意して、そこから選択できるようにしました。
TABEL1 40−20、000Hz もっとも広い範囲をカバーしています(デフォルトです)。
TABLE2 40−10、000Hz すこし範囲を絞りました。
TABLE3 40−5,700Hz 3WAYはこれが良さそうです。
TABLE3 40−3,500Hz 2WAYを意識した分割です。
さて、テーブルを増やしたらPICのROMの使用割合も5%程度増えて、現在79%です。
64KバイトのPICで79%ですから、51kバイト程度の使用です。結構なサイズになってきました。
でも、64KのPICがあるPIC18F26K20がつかえる環境にしておいてよかったです。
よくつかうPIC16F1938では16Kワード(32kバイト)では全然足りなかったところです。
こんなご意見も
たしかにLinkwitz Rileyフィルターは位相直線性も良好なので、評価も高いようです。
折角なので追加してみましょう。ただし、フィルタの構造から2、4,8次限定です。
6次の場合は自動的にButterwothとなります。
フィルタータイプを追加してみました。
これを追加するとROMは85%になりました。そろそろ限界かな〜。
試聴してみましょう。 2018.3.16
さっそくマイシステムに接続して試聴してみましょう。でもこれが結構な作業です。アンプ類を一気に引き出さなくてはなりません。
でもこうったことを想定して機器は取り出しやすいようにしています。
主要な機器は一枚の板の上に載せているので、これごと手前に引き出すことができます。
引き出した状態です。左の3台がマルチシステムのアンプです。右側が上からDAC.プリ、チャンデバ(アナログ)になります。
引き出しが終わったのでアンプに接続します。なお、入力はSRC4137を使ってCDPを接続しています。
DIV5142をアンプに接続します。
もうほとんど覚えいませんが、いままでのチャンデバはATCの75mmミッドをできるだけ活用するようにクロスは400Hz、2.6kHzに
していたと思います。下が結構低めです。まずは、その設定にしました。
まずはこんな値で設定です。CH4は使っていません。
を!クリアな感じです。
まず、最初の音だししたときにすぐに違いがわかりました。なんか、すべての音の輪郭がくっきりとして、クリアな感じです。
アナログのチャンデバとさほど特性は変わらないはずですが、この違いはなんだろう?たぶんTW,MIDのレベルが高いだけかもしれませんが、
音の追い込みがとても楽しみになりました。
かなり散らかった状態ですが、試聴の状況です。
最終的にはこんな感じになりました。MIDの下と上のクロスはすこし高めにしました。そして、TWとMIDのレベルをすこし下げています。
まずはこんな感じのセッティングになりました。
さらにフィルターも変更!
Linkwitz RileyとButterworthは明らかに違いがあることもわかりました。
勿論クロスでの減衰量が違うこともありますが、BWが迫力のある音、LRがスッキリした音という感じです。
それと8次まで急峻にしても、音の不自然さはまったくないです。これについては意外でした。
入力フォーマットも可変に!
こんなご意見もいただきました。
たぶん紛らわしい表現があったのでしょうね。実際には下記の通りです。
ということで、SRC4137以外のDAIということで、往年のメモリーバッファーとつないでみました。
これの出力は44.1kHzになります。さらに、フォーマットは右詰24Bitになるので、DIV5142についても入力フォーマットが
変更できるように機能を追加しました。
入力フォーマットの変更機能も加えました。
この構成でも問題なく動作することを確認しました。
なお、今回の視聴の目的は、勿論音の確認もありますが、フルゲインのパワーアンプに接続するわけですから、
DIV5142の電源ON時等に大きなポップノイズが出ないことなどの確認も一つの目的でしたが、ほとんど問題にならないレベルでした。
そろそろ
修正版を描いた上で基板を発注しましょう。
早ければ3月末にリリースできるでしょう。
すこし長くなってきたのでディジタルチャンデバを検討する!の巻き(その2)に移ります。
(つづく)