前頁はこちら。
実際のシステムに組み込んでみる!

実際に色々(?)なクロック源をもつ機器と連動させてみましょう!

1.SRC4137との連携

接続はSRC4137基板上でAK4137へクロックが供給されるラインを途中で断ち切って、
間にCLK5340を挿入する形になります。運良く、利用しやすいパターンになっていたので、
下図のような形で改造を加えました。
 なを引き回す線には高周波数の信号になるので、本来はシールド線を用いたいところですが
手元に適当なものがないので、ツイスト線を作って配線を行いました。

SRC4137を一部改造して、CLK5340を間に挿入します。



CLK5340側での配線です。


上側がSRC4137で下側がCLK5340です。組み合わせた状態です。

接続の構成は次の通りです。

PC → ISO2704 →(SPDIF)→ SRC4137(with CLK5340) 
     → DAC9038S → HPA6120 → ATW-M30x(ヘッドホン)

で、試聴した印象ですが音の輪郭がはっきりする!という感じを受けました。ただオリジナルの音と厳密に
比較したわけでもない(できない・・・)ので、これはこれでプラシーボがかなり入っているでしょう。
でも、気分的にはクロックジッタが低減したシステムとなることに対する安心感はかなり、精神的な音質面で
プラスになっている気がします。

今宵はこのシステム構成で音楽を楽しみましょう!

あれ? 2019.7.19

夜の夜長に試聴していると、ときおり・・いや?頻繁に・・・?いや、やっぱり時折かな?・・・・
動作が不安定になるときがあります。たまに液晶が暗くなったり・・・う・・・何かな?

で調べていると、電源装置の電流を表示させてみると1.054Aとなっています。あちゃ〜定格値をオーバしています。
つかっている電源は実験用電源ですが出力が18V1Aのもので、定電圧定電流の機能があります。
定格の電流が1Aになっているので、その電流を超えると電圧が低下してしまいます。実際にどこまで
電流が流れるか調べてみると1.058AがMAXでした。ということで、たまに電流が増えたときに電圧がドロップして
動作が不安定になっていたようです。

原因は
繋いでいる機器はSRC4137(withCLK5340)とDAC9038Sだけですが、これだけで1Aを超えるのですが、
犯人はわかっています。DAC9038Sが電流を大食いするのです。この基板だけで停止時でも650mAもの
電流が流れます。SRC4137(withCLK5340)では2枚分ですが約400mAですので、しれています。

ということで、もうすこし安心して聞くために消費電流の小さいDAC基板を接続することにしました。
そこでDACストックからDAC4490-5を引っ張り出してきました。これは旭化成の32BitDACのAK4490を
4個つかったDACです。AK4490は最近では秋月でも取り扱うようになったようです。
これは動作時の電流が約200mAなので、エコロジーです。

使う前に色々と半田ゴテをつかって配線が必要ですが、この機会にIO基板と結合させて電源入力と音声出力の結線が
しやすいようにしました。こうしておけば、あとはコネクタのとりつけだけで接続することができます。
音声出力は差動出力の内の正出力のみを用いています。そのためオフセット電圧を除去するために47uFのカップリングコンデンサ
を挟んでいます。

消費電流の小さいDAC4490-5を引っ張りだしてきました。IO基板と組み合わせました。

再試聴!
DACをDAC9038SからDAC4490-5に変更することでトータルの消費電流は約600mAにおさまりました。これなら
電源容量にも余裕があります。動作も安定することになりました。

DAC4490-5に切り替えての試聴です。

PC → ISO2704 →(SPDIF)→ SRC4137(with CLK5340) 
     → DAC4490-5IO基板組み込み)→ HPA6120 → ATW-M30x(ヘッドホン)


Renew Memory Bufferと組み合わせてみよう!

クロック源の低ジッタ化に効果が発揮しそうなのが、このメモリーバッファーなのでこれで試してみましょう。
ちなみに、現時点で頒布終了品です。というのもコア部品のSRAMのCY7C1041DV33の入手ができなく
なってしまいました。あと部品箱に2個発見したので、久しぶりのOUTLETに出すかもしれません。

このメモリーバッファー基板はその名前の通り、ジッタの含まれるPCMのディジタル信号をメモリ内に一旦取り込んで、
基板内部のクリスタル発振器に基づいて再送出します。入力データと出力が非同期であるため、入力に含まれる
ジッタを除去することができます。ただ、基板内のクリスタル発振器のもつジッタ(およそ1.5psと推測)以下には
低下させることはできませんが、CLK5340をつかえば90fsと、約25dBの改善が図れる可能性があります。

Renew Memery Bufferです。これとCLK5340を繋いでみましょう!

どこにつなげられるかな?

CLK5340を繋ぐ上で一番の問題となるのは、どこに接続できるかです。
メモリーバッファー基板には2つのクリスタル発振器が内蔵してあり、
それを切り替えてつかうのですが、ちょうど切り替え後に信号が一本に集約されていて、
それでもって前後に信号を取り出すランドがある部分が必要なのですが、
基板CADを眺めていて、ちょうどいいとことが見つかりました!


この部分が丁度よさそうです。一部カットして前後のランドからCLK5340に接続します。


実際の基板の接続ポイントです。


パターンのカットと信号線を取り出した状態。ツイスト線の青線が信号で黄線がGNDです。
GNDはロジックICのGND(Pin7)にあるパッドに接続しています。

連結完了!

メモリーバッファー基板とCLK5340基板の接続が完了しました。
メモリーバッファーは3.3V動作なので、CLK5340の3.3Vレギュレータから電源を拝借しています。
メモリーバッファー基板の消費電流は小さいので、これでも問題ありません。

メモリーバッファとCLK5.40とを接続しました。


メモリーバッファの電源はCLK5340のレギュレータから取り出します。容量的にはこれで十分です。

試聴!DAC4497-2.1と接続しよう!

今回の試聴にはDAC4497-2.1を持ち出しました。DAC4490-5でもよかったのですが、DAC4490-5では受信時の周波数などが
わからないので、テストにつかうにはやや不便な面があります。ということで、DAC4490-5の親戚筋(?)のDAC4497-2.1に
登場願いました。実際に事前に接続する前にIO基板を組み込んでおきました。IO基板側にスイッチも取り付けているので、
そのスイッチでDAC4497-2.1をコントロールします。外付けでスイッチがぶら下がらないのでスマートになりました。

IO基板をとりつけました。操作用のSWもIO基板にとりつけています。


出力側の様子です。

全体を接続しょう!

接続の構成はこのようになっています。
PC → ISO2704 →(SPDIF)→ RenewMemoryBuffer(with CLK5340) 
     → DAC4497-2.1IO基板組み込み)→ HPA6120 → ATW-M30x(ヘッドホン)


全体の接続の様子です。

ゆっくりと試聴したいところだけど、そろそろ寝ないと・・・。
明日(今日?)ゆっくり楽しみましょう!

試聴!

Renew Memory BufferにCLK5340を接続しての試聴ですが、これはこれでいいですね。
音の透明度があがった気がします(多分”気”だけでしょうが(笑))。Memory Bufferだけででも
十分効果はあるのですが、その心臓部のクロック源が高精度されたわけですから、物理面での
性能向上だけでなく、やっぱり心理的な面がおおきでしょう。夜の夜長はこれで決まりです!

さて、どうしよう?

マスタークロックとして使うなら現状のソフトのままで十分なのですが、すこし色気がでてきました。
折角なので、もうすこし周波数範囲を広げてオーディオ用の各種クロックにつかえるようにと思っています。
 現状では下限は2.048MHzで上限が196MHzです。上限jは、これ以上げてもロジック関連のICの
速度を超えてくるので据え置きとせざるを得ないですが、下限についてはサンプル周波数である
32kHzや44.1kHz、48kHzなどの低周波数もだせるようにしたいところです。
 そうなると、周波数テーブルを再度検討しなおす必要があるので、一からプログラムを見直すことに
なるのですが、折角の高精度クロッ源でもあるのですこし色気をだしていきましょう!

周波数テーブルの見直し 2019.7.21

まずはオーディオ用のテーブルです。F0は22.05kHz〜196.608MHzをカバーします。
そしてF1,F2,F3はそれぞれF0の1/32、1/64、1/128を同時に出力するようにしました。
F1,2,3はF0をシステムクロックに見立てた場合のLRクロックに見立てています。
たぶん使わないでしょうが・・・。

PL BaseFr
(kHz)
MULTI
(Fs)
F0(MHz) F1 F2 F3
0 設定なし
1 32 1 0.032 F0/32 F0/64 F0/128
2 32 2 0.064
3 32 4 0.128
4 32 8 0.256
5 32 16 0.512
6 32 32 1.024
7 32 64 2.048
8 32 128 4.096
9 32 256 8.192
10 32 384 12.288
11 32 512 16.384
12 32 768 24.576
13 32 1024 32.768
14 32 2048 65.536
15 32 4096 131.072
16 44.1 0.5 0.02205
17 44.1 1 0.04410
18 44.1 2 0.08820
19 44.1 4 0.17640
20 44.1 8 0.35280
21 44.1 16 0.70560
22 44.1 32 1.41120
23 44.1 64 2.82240
24 44.1 128 5.64480
25 44.1 256 11.28960
26 44.1 384 16.93440
27 44.1 512 22.57920
28 44.1 768 33.86880
29 44.1 1024 45.15840
30 44.1 2048 90.31680
31 44.1 4096 180.63360
32 48 0.5 0.024
33 48 1 0.048
34 48 2 0.096
35 48 4 0.192
36 48 8 0.384
37 48 16 0.768
38 48 32 1.536
39 48 64 3.072
40 48 128 6.144
41 48 256 12.288
42 48 384 18.432
43 48 512 24.576
44 48 768 36.864
45 48 1024 49.152
46 48 2048 98.304
47 48 4096 196.608

jこちらは汎用のクロック出力です。1kHzから100MHzで1,2,5の倍数で設定できます。
F1、F2,F3はF0のそれぞれ1/2、1/4,1/8の出力になるようにしています。
ロジック回路等の実験に使えるようにしてみました。

PL BaseFr
(kHz)
MULTI
(Fs)
F0(MHz) F1 F2 F3
48 - - 0.001 F0/2 F0/4 F0/8
49 - - 0.002
50 - - 0.005
51 - - 0.010
52 - - 0.020
53 - - 0.050
54 - - 0.100
55 - - 0.200
56 - - 0.500
57 - - 1.000
58 - - 2.000
59 - - 5.000
60 - - 10.000
61 - - 20.000
62 - - 50.000
63 - - 100.000

こうやってテーブルだけを書くと簡単なのですが、実際の作業はテーブルの値をすべて
ClokBuilderProに書き込む必要があります。それも小数点5桁までを正確にいれる必要があるので
ダブルチェックをしながらです。でも、一人でのダブルチェックなんて意味ないだろうな〜
ということで、少々の間違いはあるかもしれません(笑。

実際に書き込んだテーブルは下記の通りです。
むちゃくちゃ面倒でした(笑。

Frequency(MHZ) Frequency(kHZ)
PL BaseFr
(kHz)
MULTI
(Fs)
F0 F1(1/32*F0) F2(1/64*F0) F3(1/128*F0) F0 F1(1/32*F0) F2(1/64*F0) F3(1/128*F0)
0
1 32 1 0.032 0.001 0.0005 0.00025 32 1 0.5 0.25
2 32 2 0.064 0.002 0.0010 0.00050 64 2 1.0 0.50
3 32 4 0.128 0.004 0.0020 0.00100 128 4 2.0 1.00
4 32 8 0.256 0.008 0.0040 0.00200 256 8 4.0 2.00
5 32 16 0.512 0.016 0.0080 0.00400 512 16 8.0 4.00
6 32 32 1.024 0.032 0.0160 0.00800 1,024 32 16.0 8.00
7 32 64 2.048 0.064 0.0320 0.01600 2,048 64 32.0 16.00
8 32 128 4.096 0.128 0.0640 0.03200 4,096 128 64.0 32.00
9 32 256 8.192 0.256 0.1280 0.06400 8,192 256 128.0 64.00
10 32 384 12.288 0.384 0.1920 0.09600 12,288 384 192.0 96.00
11 32 512 16.384 0.512 0.2560 0.12800 16,384 512 256.0 128.00
12 32 768 24.576 0.768 0.3840 0.19200 24,576 768 384.0 192.00
13 32 1024 32.768 1.024 0.5120 0.25600 32,768 1,024 512.0 256.00
14 32 2048 65.536 2.048 1.0240 0.51200 65,536 2,048 1,024.0 512.00
15 32 4096 131.072 4.096 2.0480 1.02400 131,072 4,096 2,048.0 1,024.00
16 44.1 0.5 0.02205 0.0006891 0.00034453125 0.000172265625 22.05 0.6890625 0.34453125 0.172265625
17 44.1 1 0.04410 0.0013781 0.00068906250 0.000344531250 44.10 1.3781250 0.68906250 0.344531250
18 44.1 2 0.08820 0.0027563 0.00137812500 0.000689062500 88.20 2.7562500 1.37812500 0.689062500
19 44.1 4 0.17640 0.0055125 0.00275625000 0.001378125000 176.40 5.5125000 2.75625000 1.378125000
20 44.1 8 0.35280 0.0110250 0.00551250000 0.002756250000 352.80 11.0250000 5.51250000 2.756250000
21 44.1 16 0.70560 0.0220500 0.01102500000 0.005512500000 705.60 22.0500000 11.02500000 5.512500000
22 44.1 32 1.41120 0.0441000 0.02205000000 0.011025000000 1,411.20 44.1000000 22.05000000 11.025000000
23 44.1 64 2.82240 0.0882000 0.04410000000 0.022050000000 2,822.40 88.2000000 44.10000000 22.050000000
24 44.1 128 5.64480 0.1764000 0.08820000000 0.044100000000 5,644.80 176.4000000 88.20000000 44.100000000
25 44.1 256 11.28960 0.3528000 0.17640000000 0.088200000000 11,289.60 352.8000000 176.40000000 88.200000000
26 44.1 384 16.93440 0.5292000 0.26460000000 0.132300000000 16,934.40 529.2000000 264.60000000 132.300000000
27 44.1 512 22.57920 0.7056000 0.35280000000 0.176400000000 22,579.20 705.6000000 352.80000000 176.400000000
28 44.1 768 33.86880 1.0584000 0.52920000000 0.264600000000 33,868.80 1,058.4000000 529.20000000 264.600000000
29 44.1 1024 45.15840 1.4112000 0.70560000000 0.352800000000 45,158.40 1,411.2000000 705.60000000 352.800000000
30 44.1 2048 90.31680 2.8224000 1.41120000000 0.705600000000 90,316.80 2,822.4000000 1,411.20000000 705.600000000
31 44.1 4096 180.63360 5.6448000 2.82240000000 1.411200000000 180,633.60 5,644.8000000 2,822.40000000 1,411.200000000
32 48 0.5 0.024 0.00075 0.000375 0.0001875 24.00 0.75 0.375 0.1875
33 48 1 0.048 0.00150 0.000750 0.0003750 48.00 1.50 0.750 0.3750
34 48 2 0.096 0.00300 0.001500 0.0007500 96.00 3.00 1.500 0.7500
35 48 4 0.192 0.00600 0.003000 0.0015000 192.00 6.00 3.000 1.5000
36 48 8 0.384 0.01200 0.006000 0.0030000 384.00 12.00 6.000 3.0000
37 48 16 0.768 0.02400 0.012000 0.0060000 768.00 24.00 12.000 6.0000
38 48 32 1.536 0.04800 0.024000 0.0120000 1,536.00 48.00 24.000 12.0000
39 48 64 3.072 0.09600 0.048000 0.0240000 3,072.00 96.00 48.000 24.0000
40 48 128 6.144 0.19200 0.096000 0.0480000 6,144.00 192.00 96.000 48.0000
41 48 256 12.288 0.38400 0.192000 0.0960000 12,288.00 384.00 192.000 96.0000
42 48 384 18.432 0.57600 0.288000 0.1440000 18,432.00 576.00 288.000 144.0000
43 48 512 24.576 0.76800 0.384000 0.1920000 24,576.00 768.00 384.000 192.0000
44 48 768 36.864 1.15200 0.576000 0.2880000 36,864.00 1,152.00 576.000 288.0000
45 48 1024 49.152 1.53600 0.768000 0.3840000 49,152.00 1,536.00 768.000 384.0000
46 48 2048 98.304 3.07200 1.536000 0.7680000 98,304.00 3,072.00 1,536.000 768.0000
47 48 4096 196.608 6.14400 3.072000 1.5360000 196,608.00 6,144.00 3,072.000 1,536.0000
Frequency(MHZ) Frequency(kHZ)
PL BaseFr
(kHz)
MULTI
(Fs)
F0 F1(1/32*F0) F2(1/64*F0) F3(1/128*F0) F0 F1(1/32*F0) F2(1/64*F0) F3(1/128*F0)
48 - - 0.001 0.0005 0.00025 0.000125 1.00 0.5 0.25 0.125
49 - - 0.002 0.0010 0.00050 0.000250 2.00 1.0 0.50 0.250
50 - - 0.005 0.0025 0.00125 0.000625 5.00 2.5 1.25 0.625
51 - - 0.010 0.0050 0.00250 0.001250 10.00 5.0 2.50 1.250
52 - - 0.020 0.0100 0.00500 0.002500 20.00 10.0 5.00 2.500
53 - - 0.050 0.0250 0.01250 0.006250 50.00 25.0 12.50 6.250
54 - - 0.100 0.0500 0.02500 0.012500 100.00 50.0 25.00 12.500
55 - - 0.200 0.1000 0.05000 0.025000 200.00 100.0 50.00 25.000
56 - - 0.500 0.2500 0.12500 0.062500 500.00 250.0 125.00 62.500
57 - - 1.000 0.5000 0.25000 0.125000 1,000.00 500.0 250.00 125.000
58 - - 2.000 1.0000 0.50000 0.250000 2,000.00 1,000.0 500.00 250.000
59 - - 5.000 2.5000 1.25000 0.625000 5,000.00 2,500.0 1,250.00 625.000
60 - - 10.000 5.0000 2.50000 1.250000 10,000.00 5,000.0 2,500.00 1,250.000
61 - - 20.000 10.0000 5.00000 2.500000 20,000.00 10,000.0 5,000.00 2,500.000
62 - - 50.000 25.0000 12.50000 6.250000 50,000.00 25,000.0 12,500.00 6,250.000
63 - - 100.000 50.0000 25.00000 12.500000 100,000.00 50,000.0 25,000.00 12,500.000

あ〜いつものエラーだあ!

周波数の設定テーブルが増えたのでプログラムの中での配列変数が大きくなります。
配列を普通に宣言するとRAM領域にとられるので、ROM領域を明示的に指定するのですが、
PICはセグメントを超えられない問題があって、ちょっと大きめの配列をとるととたんにエラーがでます。

Error[71] CLK5340_PIC16F1938_NEW_v2.c 524 : Out of ROM, A segment or the program is too large following_freq
Seg 00800-00FFF, 018F left, need 099E
Seg 01000-017FF, 0800 left, need 099E
Seg 01800-01FFF, 0800 left, need 099E
Seg 02000-027FF, 0800 left, need 099E
Seg 02800-02FFF, 0800 left, need 099E
Seg 03000-0332C, 032D left, need 099E
Seg 0332D-037FF, 0000 left, need 099E
Seg 03800-03C2D, 042E left, need 099E
Seg 03C2E-03FFF, 0000 left, need 099E
Seg 00000-00002, 0000 left, need 099E
Seg 00003-007FF, 0015 left, need 099E


1 Errors, 0 Warnings.

容量的にはPIC16F1938(16kワード)で足りるはずなんだけど、配列のサイズを色々と調整してもエラーが収まりません。
ひょっとして、ROM領域を2回宣言するのがまずいのかな?
色々と考えてみましたが、ここはもっとも簡単な解決手段に日和ました。
PIC18F26K20(64kバイト)に変更です。
 これならばPIC内の構造的にも余裕があるので、すんなりコンパイルが通りました。
やっぱり、これからPIC18Fシリーズに本格的に乗り換えたほうがいいかな〜????

動作確認!

さて、プログラムを書き換えたので動作確認です。
2台連結して、左側が固定周波数出力として、右側が入力周波数追従にしています。
そして、左側の基板の周波数を一通り変更させて、右側の基板が同じ値で追従するかを確認します。
今回の変更で周波数ってーブルが増えたので、隣接する周波数の差が小さくなっています。
一番差が小さいところは49.152MHzと50MHzで差は1.7%しかありません。
PIC内蔵の発振器だと2〜3%の誤差がある可能性があるので、判別はむずかしでしょうけど
ここでは外付けの水晶を抱いているので問題なく識別できます。

2台連結して動作確認です。

さて、一通りの確認が完了しました。
忘れないうちに備忘録の製作マニュアルを書いておきましょう。

それにしても暑くなったな〜。

消費電流は?

2台連結した状態ですが、消費電流も測っておきました(無負荷状態です)。
最低速度(1kHz)での動作時が約630mAなので、1台あたり315mA程度。
最高速度(196MHz)でのは約710mAなので、1台あたり355mAでした。
LEDバックライトのLCD付ですが、20mA程度の誤差でしょう。
電源として0.5A程度は用意する必要がありあそうです。

使い方のおさらい

CLK5340は超低ジッタのクロック発生基板なので、基本はクロック源として使います(いわれなくてもわかってる!といわれそうですが)

1.単純にクロック源として使う
いわゆる下記のような接続が基本的な使い方です。




2.既存のクロック源を置き換える
おそらくこういった使い方が一番多いかな〜とおもっています。
すでについている発振器を載せかえるパターンです。


 【載せ換え例】

具体的な載せ換え方法ですが、物理的に載せ換える方法もありますが、
既存の水晶発振器を停止させるのがもっとも簡単です。
よく使う発振器は下記のものです。この発振器のEN端子はENABLE端子であり、
この端子を開放あるいはVDDに接続すると、発振器が動作してOUT端子から出力されます。
そこで、このEN端子をGNDに接続すると、発信器が停止して、出力端子のOUTを開放します。

  よくつか既存の水晶発振器。EN端子をGNDに落とすことは停止させOUT端子を開放することができます。
  図はDAC9018Sでの場合です。

 CLK5340に載せかえるためには下図のような配線で簡単にできます。
 出力のOUT端子に、CLK5340からの出力を接続します。そして、既存の発振器のEN端子はGNDに接続します。
 これで基板上の発振器が停止して、CLK5340から供給されるクロックが有効になります。

    
  EN端子をGNDに接続することで発振器を停止させることができます。



 接続した様子です。CLK5340(左)から100MHzを供給しています。


3.既存のクロック源を活用する
 既存のクロック源の周波数が可変する場合は、CLK5340で一旦、クロックを受け取って
同等の信号を出力するようにすることもできます。これはSRC4137やMemory Bufferなどの
クロックの周波数が可変するような場合に使います。なお、CLK5340の出力する周波数は
あくまで同等であって、入力クロックと同一ではありません(例えば99.9MHzと100.0MHzの違いが生じる)。
 使い方としては、クロック信号の間に挿入する形になります。
 この接続方法についてはすでにこのページで説明しているので割愛します。




製作マニュアルを作成しました。 2019.7.25

CLK5340_Manual.pdf


そろそろリリースしま〜す。
(つづく?)