DIV5142の統合コントローラ(PICO)を検討する!の巻き(その2) 2027.11.18
(その1)はこちら

やっぱり忘れていました

以前の検討から2〜3か月経つと、すっかり忘れてしまっているようです。
思い出しながら作るより、すこしドキュメントを残しながら整理しつつ進めていったほうが良さそうです。
ということで、ほとんど備忘録になってしまいそうです。

フィルター構造は2種類用意しましょう!

PCM5142に書き込むフィルタ構造は2種類用意することにします。

biquad_12x2
 BIQUADフィルタを12連結したものです。最後にゲイン調整用のスケールを付け足しておきます。
 最大の減衰量は12*12=144dB/octになります。BPFとしてつかう場合はその半分の72dB/octです。
 減衰量は少ないですが、最大で192kHzまで対応可能です。
 2WAYでLPF,HPFで減衰量を288dB/octまで確保する場合はPCM5142を2連結で使います。

biquad_24x2
 BIQUADフィルタを24連結したものです。最後にゲイン調整用のスケールを付け足しておきます。
 最大の減衰量は12*24=288dB/octになります。BPFとしてつかう場合はその半分の144dB/octです。
 減衰量は大きいですが、最大で96kHzまでとなります。アップサンプリングをしない場合などは、この
 フィルタ構成を使う方が、基板が節約できます。

1.biquad_12x2の構成

ブロック図です。 <データファイル>


Build結果でcycleは255(<256)なので192kHzまで対応可能です。

<CFGファイル> PCM5142に書き込む命令、データのひな型です。
<C言語テーブル> CFGファイルをC言語テーブルに変換。


係数の格納場所は以下の通り。

L Biquad_1_1_N0 0x0000
Biquad_3_1_N0 0x000A
Biquad_5_1_N0 0x0014
Biquad_7_1_N0 0x001E
Biquad_9_1_N0 0x0028
Biquad_11_1_N0 0x0032
Biquad_13_1_N0 0x003C
Biquad_15_1_N0 0x0046
Biquad_17_1_N0 0x0050
Biquad_19_1_N0 0x005A
Biquad_21_1_N0 0x0064
Biquad_23_1_N0 0x006E
R Biquad_2_1_N0 0x0005
Biquad_4_1_N0 0x000F
Biquad_6_1_N0 0x0019
Biquad_8_1_N0 0x0023
Biquad_10_1_N0 0x002D
Biquad_12_1_N0 0x0037
Biquad_14_1_N0 0x0041
Biquad_16_1_N0 0x004B
Biquad_18_1_N0 0x0055
Biquad_20_1_N0 0x005F
Biquad_22_1_N0 0x0069
Biquad_24_1_N0 0x0073
L Scale_1_Coefval 0x0078
R Scale_2_Coefval 0x0079


2.biquad_24x2の構成

biquadフィルタを24連結しています。<データファイル>


命令サイクルは495(<512)なので96kHzまで対応可能です。

<CFGファイル> PCM5142に書き込む命令、データのひな型です。
<C言語テーブル> CFGファイルをC言語テーブルに変換。

係数の格納場所は以下の通り。

L Biquad_1_1_N0 0x0000
Biquad_3_1_N0 0x000A
Biquad_5_1_N0 0x0014
Biquad_7_1_N0 0x001E
Biquad_9_1_N0 0x0028
Biquad_11_1_N0 0x0032
Biquad_13_1_N0 0x003C
Biquad_15_1_N0 0x0046
Biquad_17_1_N0 0x0050
Biquad_19_1_N0 0x005A
Biquad_21_1_N0 0x0064
Biquad_23_1_N0 0x006E
Biquad_25_1_N0 0x007A
Biquad_27_1_N0 0x0084
Biquad_29_1_N0 0x008E
Biquad_31_1_N0 0x0098
Biquad_33_1_N0 0x00A2
Biquad_35_1_N0 0x00AC
Biquad_37_1_N0 0x00B6
Biquad_39_1_N0 0x00C0
Biquad_41_1_N0 0x00CA
Biquad_43_1_N0 0x00D4
Biquad_45_1_N0 0x00DE
Biquad_47_1_N0 0x00E8
R Biquad_2_1_N0 0x0005
Biquad_4_1_N0 0x000F
Biquad_6_1_N0 0x0019
Biquad_8_1_N0 0x0023
Biquad_10_1_N0 0x002D
Biquad_12_1_N0 0x0037
Biquad_14_1_N0 0x0041
Biquad_16_1_N0 0x004B
Biquad_18_1_N0 0x0055
Biquad_20_1_N0 0x005F
Biquad_22_1_N0 0x0069
Biquad_24_1_N0 0x0073
Biquad_26_1_N0 0x007F
Biquad_28_1_N0 0x0089
Biquad_30_1_N0 0x0093
Biquad_32_1_N0 0x009D
Biquad_34_1_N0 0x00A7
Biquad_36_1_N0 0x00B1
Biquad_38_1_N0 0x00BB
Biquad_42_1_N0 0x00CF
Biquad_44_1_N0 0x00D9
Biquad_46_1_N0 0x00E3
Biquad_48_1_N0 0x00ED
Biquad_50_1_N0 0x00C5
L Scale_1_Coefval 0x0078
R Scale_2_Coefval 0x0079


高次のフィルターの設定は、複数のPCM5142に異なるデータを書き込む必要があります。
フィルターの設定関数をどのようにするかは、すこし悩むところです。
寝ながら考えましょう(笑。

秋の夜長の半田付け 2024.11.19

Renew DIV5142も動くことが確認できたので、今回使用する最大枚数である
4枚のうち、残り3枚を作成です。
 PCM5142はすべて新品を使うのは勿体ないので、使わない基板から取り外します。
多分再利用できると思うけど、ダメだったらその時考えましょう。


この基板から2個のPCM5142を再利用しましょう。


ICの周りに半田をたっぷりつけて、左右を交互に温めながらICが動きだしたら、
一気にずらします。半田ゴテ1本でもできます。



取り外したPCM5142の周りの半田をある程度除去です。
このくらい残っていても、基板への半田付けは支障ありません。


合計4枚のRenew DIV5142が出来あがりました。右からNo.1〜4になります。再利用のPCM5142はNO4のCH3,CH4に搭載しました。
およそ1枚作成するのに1時間弱かかりました。3枚作ったので3時間ほどかかりました。

一応、動作確認 2024.11.20

4枚連結しての動作確認です。

4枚のRenew DIV5142とI2Cコントローラを連結しています。


反対から見るとこんな感じ。金属スペーサは10mmのものに1mmのスペーサを入れています。

動作させてみると、なぜか3枚目のRenewDIV5142の出力からプチノイズが観測されます。
残りのRenewDIV5142からノイズはありません。おそらく、接続する基板の枚数が多いため
ダンピング抵抗の不整合が生じているのでしょう。枚数を4枚から3枚に減らすとノイズが解消するようです。
そこで、ソースとなるRenew SRC4137のダンピング抵抗の両端をピンセットで挟むとノイズが消えるので、
そこを短絡させることにしました。このあたりは、ケーブルの長さとか色々と影響がでるところなので、
すこし調整が必要になるところでしょう。まあ、こういった対策も、経験になるので案外面白いところだったりします。


ソースとなるRenew SRC4137の出力のダンピング抵抗の一部(DATAライン)を
短絡させると、プチノイズが消えました。


突如、PICO(もどき)があ〜

PICO(もどき)にプログラムを入れるためには、最初にBOOTボタンを押しながらRESETスイッチを押します。
そうすると、PC画面上に仮想ディスクが現れるので、そこにバイナリーであるUF2ファイルをドラッグしてやります。
しかし、いきなりそれが出来なくなってしまいました。
何度BOOTボタンを押しながらRESETスイッチを押しても、仮想ディスクが現れません。
ひょっとして壊れた?
 おもむろに、違うPICO(もどき)に差し替えてみたとろこ、正常に動き出しました。
ひょっとして壊れたのかなあ〜。とりあえず、シールを貼って分別です。

なぜか動かなくなったPICO(もどき)です。

しばらくしてから、もう一度と思って不良シールを貼ったPICO(もどき)を差し込んでみたところ、
なんとプログラムの書き込みができるようになりました。で、問題はプログラムは書き込めて
RenewDIV5142も動いているようなのですが、今度はQVGA画面が真っ白のまま動いていません。
こちらが直ったら、あちらが壊れる?というパターンかな?
 ひょっとしてCPU(RP2040)の半田付けが悪いのだろうか?と思ってルーペで見てみますが、
よくわかりません。そこで、ダメ元なのでCPUの周りにフラクスを塗って半田ゴテで撫でまわすことに。
そうすると、なぜかQVGAも動き出しました。これが功を奏したかどうかわかりませんが、
とりあえず復活です。まあ、また動かなくなるまでしばらくこのままで使いましょう。

ダメ元でCPUの周りにフラクス塗って、半田ゴテを当て直してみました。
これが功を奏したかどうか不明ですが、また動き出しました。


他の表示器も試しておきましょう!

QVGAは表示文字数が多いのとグラフィックなどもできるので便利ですが、従来通りのLCDも
捨てがたいものがあります(レトロ感に浸れる)。
LCDも取り付けられるようにしているので、こちらも動作確認です。
ただ、PICの動作速度を見込んだプログラムになっているのですが、PICO(もどき)だと、
かなり高速なのでパルス幅などがギリギリになってしまいそうなので、PICO用にすこし
ライブラリを修正です。

バグ発見!(その1)

簡単なプログラムを組んで動かしてみようとしましたが、全然反応なし。
オシロでピン電圧を観測しますが、動いていません。どうやら74LV164の出力
がまったくでていません。調べてみると、本来VCCに接続されている箇所が
間違ってGNDに接続されていました。
ということで、修正です。


黄色部分を削除して、水色の線をジャンパーで飛ばします。


修正例です。あれ?髪の毛が映っているぞ?

これでOK

あたらためて秋月のSC2004のLCD(5V用)を接続して動くことが確認できました。

秋月のSC2004が動作しました。


中華LCDもテスト

秋月のLCDはすこし高いので、20x4のLCDはもっぱらALIで購入したものをつかっています。
だいたい送料込みで700円程度です。このLCDのいいところは、ピンがインラインなのでブレッドボードに
使い易いです。なおバックライトLEDの電流制限抵抗は100Ωにしています。


中華LCDも動作しました。

中華LCDを使用する場合には基板に修正点がありました。これは、動作させる前に気付いたのですが、
WR端子(5番ピン)がGNDに接続されていなかったので、これを接続です。ベタを削って接続しても
よかったのですが、GND端子(1番ピン)も近いので、そちらとジャンパーしました。


中華LCDを接続する場合は、1番ピンと5番ピンを接続します。

残る表示器はOLED(128x64)だけど、これは日を改めましょう。
もう、寝なくっちゃ!

(つづく)