Renew SRC4137は実現するか? 2022.5.27

AK4137は復活?でもSRC4137基板がない!

つい先日、最後の1枚のSRC4137基板を発送しました。それとほぼ同時に
AK4137の在庫がDIGIKEYに復活したとの情報をいただきました。

AK4137が復活したということは、旭化成での代替生産が起動に乗り始めたのかな?
それとも、たまたまDIGIKEYがまとまった在庫をどこかで見つけてきたのかな?

まあ、どちらにしてもAK4137はPCMとDSDと相互でフォーマット変換ができる
便利な素子なので復活はありがたいです。 でも、基板がない・・・・・。

で、最後の1枚の基板をみていて思ったのが、もうちょっと色々とできるようにしたいな〜
ということです。

そこで、SRC4137基板は廃盤にしてしまって、リニューアルできないかな〜と考えてしまいました。

AK4137の制御はどういう思想?

AK4137のデータシートを改めてみてみて、かなり独特な制御だな〜と思ってしまいます。
というのも、I2CあるいはSPIでレジスター制御ができるのですが、なぜかピンコントロールでしか
弄れないパラメータがあったりします。 また、それが結構重要です。

I2Cだけなら2線で済みますし、それも他の素子と共用できますから、マイコンのI/Oの消費も
少ないです。 それに対して、AK4137ではI2C以外にピンコントロールでの端子を使う必要があり、
細かい制御をしようとしたら全部で14本程度マイコンと接続する必要があります。


なぜかAK4137ではピンコントロールしかできない機能がたくさんあります。


折角I2Cでレジスター設定ができるのに、なんでこれだけ多くのピンコントロールを
残したのだろう? いったい設計者は何を意図したのかな? わからないなあ〜

28PinのPICで足りる?

SRC4137基板では、このピンコントロールが必要なことから、I/Oエクステンダをつかって
いましたが、今回は省略したいところです。 このICも結構入手が不安になったりしますからね。
いざ基板ができても、素子が手に入らないという事態にもなりかねません。

ところで、全体で何本のI/Oが必要になりそうか数えてみることにしました。

AK4137制御
  I2C ・・・ 2本
  リセット・・・ 1本
  ピンコントロール ・・8本(最低値)

周波数設定
 現状の回路・・・5本

その他
  LCD・・・6本
  スイッチ・・・4本

ということで、計26本必要です。28PinのPICで使えるI/Oは最大でも25本しかありませんから、
足りないです。40PinのPICを使う手もありますが、結構でかいのですよね〜。
ICソケットを使う前提だと、PICの下にある程度部品も配置できますが、それをやったら
デバッグが困りそう・・・・。

周波数の変更にPLLをつかうと?

SRC4137では発振回路は水晶を2個つかって、分周出力を選択してつかっていました。
そのためコントロールピンが5本必要なのですが、これをI2C制御のPLLにしてしまえば、
一気に5本減らすことができます。すなわち全体のIO数は21本になるのですが、
PLLはジッタが多いからなあ〜、かといってジッタクリーナ入れるとそれこそピン数が増えてしまいます。
できればSi514みたいなI2C制御できる、きわめてジッタが小さい素子がつかえれば、
実装面積の点でも有利なのですが、全然手にはいらないからな〜。

やっぱりPLLはやめておきましょう。 ここは素直に水晶発振器+分周器が入手の点でも
よさそうです。

まずはどんな機能にするか検討しましょう!

個別の問題はまず置いておいて、まずはどんなことができるようにするかを
検討しておきましょう。そうすれば、おのずとマイコンに必要なIO数も決まってきます。

入力(PCM9211を使う前提)
 ・PCM/DSD共用ポート × 2 (PCMとDSDは自動判定)
 ・SPDIF × 4 (同軸2、ディジタル2)
 ・アナログ × 1 (PCM9211のADCを使う)

出力
 ・PCM/DSD共用ポート × 2
  (内1つは、LRCKを反転させておいて、Renew DAC1704やDAC1860と接続できるように。
   すなわち、AK4137をディジタルフィルター代わりに使用)
 ・SPDIF × 1 (同軸およびディジタル)

必要電源
 ・5Vのみ

操作
 ・LCDとスイッチ使用(細かい制御が必要なのでシンプルモードは排除)

その他
 ・I2C出力 (他の機器との連携用)

こんな感じかな。
出力にSPDIFを設けたいので、DSD入力からSPDIF出力にすることも可能にできれば面白いかな〜。
というか、DSD入力でRenew DAC1704などのマルチビットDACを動かしてみたいというのもあります。

マスタークロックの可変幅は49.152MHz(48kHz系)と45.19MHz(44.1kHz系)の2通りとして、
最低がそれぞれの1/1、1/2、1/4、1/8、1/16までが選べれば十分でしょう。



全体の構成はこんなところかな. AK4137の出力をPCM9211に戻すことで、PCM信号ならSPDIFに変換できるようにします。

結局必要なIO数は?

再度見積もり直しです。
 I2C・・・2本
 AK4137リセット 1本
 AK4137ピンコントロール 8本
 PCM9211リセット 1本
 LCD+スイッチ 10本
 DSD/PCM判定 3本
 周波数選択   6本

合計で31本ですね。こりゃ、やっぱりIOエクステンダーは最低1個は載せないとだめだなあ〜。
40PinのPICを使うかな〜? 悩んでしまいます。
ただ、40PinのPICをつかうと、IO線をやたら引き回さないといけない可能性があります。
その点、IOエクステンダなら必要となるICの近くに配置すれば、エクステンダ自体はI2Cなので
2本の配線で済むメリットがあります。

まずは回路図を書いてみるかなあ〜。

まずはドラフト版

回路図を書いて必要となる部品を洗い出してみましょう。
思ったよりPICの足が余ってしまいました。
将来的に他の機器との連携もできるように赤外線リモコンやボリューム、エンコーダなども取り付けらる端子を
外だししておけるかもしれません。


こんな感じかな〜

このくらいなら標準サイズの基板に納まるかなあ?

標準サイズで納まりそう

まずは必要になりそうな部品を並べてみましょう。


標準サイズの基板でも納まりそうです。

なんとかおさまりそうですね。
配線しながら、部品配置はまだまだ変ってきますが、
案外余裕があるかもしれません、いやないかもしれませんが。

さて、一気にパターンを書きたいところですが
週明けからの出張のための準備もしないといけないなあ〜。
まあ、まだお尻に火がついてついていないからいいか!(笑

コメントいただきました

さっそく下記のコメントをいただきました。



なかなかすべてを検討することは難しいですが、コメントを頂くのはありがたいことです。
気づきになる点もありますからね。

で、4のAK4137をバイパスする機能というのはおもしろそうです。ただ、単純に考えるとセレクタICを入れて選択するのが
方法とシンプルですが配線量が大幅に増えます。なんせ、PCM9211の出力を最終段まで引き延ばさなくてはなりません。
一番簡単なのはAK4137にSRCをバイパスする機能もあるのでそれをつかうことですが、同時にAK4137のマスタクロックを
切り替えるだけで動作するのだろうか?ちょっと心配だなあ〜。
ちょっと変則的ですが、PCM9211のポートは入力にも出力になるBポートがあるのでこれをAK4137の出力につないで、
AK4137の出力を止めるためのゲートICを配置するのが、まずはわかりやすそうな案です。

ということで回路図をすこし変更してみました。


AK4137を完全にバイパスできるように考えてみました。そのため、PCM9211からの出力ポートのコネクタは省略しました。

これで配線できそうかな?

配線してみました 2022.5.29

まずは、パターンを描いてみました。最初の部品配置からだいぶ変ってしまいました。


まずはパターンを描いてみました。

さて、この後は再度回路図をパターン実績で書き直して、
パターンのチェック、そしてGNDベタパターンを作成です。


久しぶりの作業再開 2022.6.29

ちょうど1か月ぶりの作業再開です。
で、何をしていたかを思い出すためにHPを読み返します。
そうそう、AK4137のスルーモードを実現するために、
AUXIN2をAUXOUTとして使うことを考えていたのですね。

でも、このやり方は初めてなのでまずはどのコマンドで動くか確認しておきましょう。

AUXIN2をAUXOUTで動かす

調べてみると、1行のコマンドで済みそうです。
AUXIN2はMPIO_Bのグループなのですが、MPIO_BをAUXOUTにするためには
0x6Fレジスタを弄るだけで済みそうです。


 0x6fレジスタの1ビットを変更するだけでMPIO_BはAUXOUTに変更できます。

念のため実物で確認しておきましょう。
近くにRenew DAI9211基板があったので、これで試してみましょう。
Bluetooth基板がのっかっていますが、とりあえず何かあって壊してしまうことが無いように
一度取り外しておきます。


この基板をつかいましょう。Bluetooth基板はとりあえず外しておきます。


ソフトをすこし変更して、AUXIN2がAUXOUTになるかの確認です。

ソフトの修正は極めて簡単です。下記の一行を付け足すだけです。
i2c_dataout(I2C_PCM,0x6f,0b01001000); //MPIO_B for AUXOUT

修正後にオシロで端子を確認すると、ちゃんと出力端子として振舞っているようです。

 
LRCK信号がちゃんとでています(48kHz)


DATAもちゃんと出ていますね。

動作確認できたので、これでパターンの最終チェックをしていきましょう。

パターン完成!

パターンチェックしてベタを塗って完成です。

こんな感じでパターンが描けました。

最後に回路図をパターン実績にあわせて修正です。
RenewSRC4137_SCH.pdf

さてさて、製作に出せるのはいつになるだろう?


基板注文! 2022.8.21

1週間前ほどに基板注文しました。
でも、どうやら込み合っているようなので時間がかかりそう。
予定では月末に納品予定です。それまで、すこし中休み!

基板到着 2022.8.30


Renew SRC4137基板ができてきました。

さて、いつ手が付けられるかな〜。

組み立て開始! 2022.9.4


ほとんど部品が取りつきました。あと、ちょっとです。

この基板のソフトは少しじっくり作らないといけないから長期戦になるかなあ〜。
それよりも、まずは動くところまでは早めにジャッジしないとね。


作業再開 2022.10.1

直近で仕事が忙しくてなかなか手が付けられていなかったですが、仕事のゴールも見えて来たので
折角の休日ですから作業再開です。といっても、休日だけでなくても平日も作業してますが(笑。


基板をプラケースの上において作業再開です。抵抗などを植え付けて上から半田付けを行います。
だいぶ日数も経っているので、ほとんど忘れていますので回路図をみながら部品の定数を確認です。


こんな形で完成しました。このタイミングでお出かけ用の写真をパチリです。


使用するPICはPIC18F27Q43です。128kBの大容量品です。
ただ、秋月で購入の個数制限がかかっているので、リリース時にも在庫あるか心配です。



電源投入部にはコネクタを取り付けおきました。いつもはワニ口クリップで挟んでいますが、
こうすれば逆接の懸念も和らぐでしょう。コネクタはVHコネクタなのでピッチ3.96mmなので
無理やり取り付けています。



圧着には専用の工具が必要ですが、AMAZONで安価に購入できます。
これは一つあればかなり役に立ちそうです。



こんな感じでコネクタで給電です。
ちなみに 1:GND 2;VCC です。これを間違えたら大変です。


間違い発見!

実装した基板を眺めていたら電解コンデンサC16の正負を間違えていました。
タンタルを使っているので、電源入れたら一瞬でショートモードでお陀仏するところでした。
まだ電源は入れていないので、取り外して付け替えしました。


C16の取り付け方向を間違えていました。

動作確認&ソフト作成にかかりましょう!

色々と基板パタンにバグがでてきそうですが、まずは各種のICの動作を確認していきましょう。

とりあえずI2C通信は大丈夫みたい 2022.10.8

まずは最初にLCDの動作と、各ICとのI2C通信のチェックです。
ここでこけると、あとあと面倒です。


とりあえずLCDと各ICとの通信は大丈夫のようです。エラーがでていません。


ソフトの構造はすこし変えてみましょう

ソフトについては、旧版のSRC4137を移植しようかとも思いましたが、
より使いやすさを考えて、大幅に変更しようかと思っています。
従来はそれぞれのパラメータがすべて独立に設定できるようにしていたのですが、
これがすこし課題です。 たとえば、SPDIFのCH0とCH1のときに、変換周波数を
変えたい場合は、チャンネルを変更したあとに、さらに周波数に関連するパラメータ
まで変更する必要がありました。さらに、出力するのがPCMやDSDが変れば、
さらに変更が必要です。

ということで、今回はセッティングオリエンテッドな形式に変えてみようかと思っています。

具体的には8個程度のセッティングをもたせて、
1つのセッティング情報には、入力、変換方法、変換周波数、フィルタ情報などを
個別に持たせるということです。そして、入力チャンネルの代わりにセッティング番号
を変えるという形式です。こうすることで、例えば
 セッティング1:入力SPDIF0,出力DSD、周波数64FS
 セッティング2:入力SPDIF0,出力PCM、周波数192kHz
としておけば、セッティング番号を変えるだけで、同じ入力でも出力形式や周波数を
すぐに変更することができます。
 
ただ、これをやろうと思うと少しメモリーが多くなりますが、それはなんとでもなるでしょう。
PIC18F27Q43は容量が大きいのでEEPROMも1kBあります。

セッティング数は全体で8個も用意すれば十分でしょう。

さて、この3連休でできるだけプログラムを組んでいきましょう。
ただ、配線バグがあるかもしれないので、そうなるといきなり遅延してしまいそうですが・・・・

すごく大変だあ〜 2022.10.9

セッティングオリエンテッドにすると決めたものはいいのだけど、
変換形式として下記の8パターンに対応したのち、
PCM -> P'CM
PCM -> DSD
DSD -> P'CM
DSD -> DSD
DoP  -> PCM
DoP  -> DSD
PCM -> DIRECT(変換なし)
DSD -> DIRECT(変換なし)


さらに入力を変えて、周波数を変えてとなると、かなりソフトが大変なことに気付きました(←遅すぎ。
とりあえず骨格となるところはできましたが、
ハードのデバッグと動作確認を含めてPCM同士での変換を中心に作成中です。
この3連休では無理だろうなあ〜。


PCM to PCM 変換をまず攻めています。

ややこしいなあ〜 2022.10.10

DIT部分を除いて、主要な部分の動作は確認。
そして、骨子となるプログラムは描きあがったが、なにしろややこしい。

その理由は
 1.多様なフォーマットが使えるようにしたこと
   最近の標準であるI2Sに限定してしまえば簡単でしたが、今回のRenew4137はDAC1704などとの
 接続を考慮して右詰めフォーマットも使えるようにしています。そのため、いたるところでフォーマットでの
 設定が必要になってきます。

2.ダイレクトモードを入れたこと

  SRC(AK4137)の出力をバイパスする機能を入れたことにより、信号の流れがより複雑に。

3.DIT機能をフルに使うようにしたこと
  SRCの出力を一旦PCM9211に戻して、その信号でSPDIF信号を作れるようにしています。
 そうすることで、DSD信号をSPDIFに変換することも可能になります。ただ、これをするために
 PCM9211のポートが入力になったり、出力になったりとややこしい動作をします。もちろんのこと
 DITが受信するフォーマットも指定する必要がでてきます。


Renew SRC4137のブロック図です。

まあ、のんびりと作っていきましょう!

DAC1704も引っ張り出してきました!電源も準備しよ〜。

まだケースの中に入れていなかったDAC1704も動作確認に必要になるので、
引っ張りだしてきました。 ただ、この基板は電源が±5V必要なことなので、
急ぎ電源も作りました。 15VのACアダプタから15V、-12V、+5V、-5Vの電源を作ります。
-12Vは15VからのDCDCです。±5Vはそれらの電圧からドロップ型のレギュレータで生成です。


電源基板とDAC1704です。久しぶりなのでDAC1704が動くかな?

DITが動かない?あれ?マニュアルが・・・・・ 2022.10.12

DIT(Digital Interface Trasmitter)はPCM信号をSPDIFに変換する機能ですが、
AUXIN2を入力としているのですが、なぜか動きません。
 で、設定レジスタを調べているとマニュアルに誤記があったようです。
実はこの誤記は以前に確認していたのですが、しばらく使わなかったので
忘れてしまっていました。 

 最新版では修正されているようです。古い(といっても2018年版ですが)
マニュアルをいつまでも、手元においておかずに更新しなくちゃだめですね。
といっても、それを毎回していると紙がいくらあっても足りませんが・・・・。、



2018年版でもAUXIN2の設定に関して誤記がありました。



最新版では修正されているようです。


RenewDAC1704と接続してみましょう!

さて、プログラムもほぼ出来上がってきたので、ここいらでRenewDAC1704と接続してみましょう。
設定は右詰め24ビットに設定するだけです。

PCM1704は電流出力なので、まずは簡単に出力に200Ωの抵抗を入れて、簡易IVにしてしまいます。
PCM1704の出力電流は±1.2mAなので240mVの振幅、すなわち480mVppの波形が観測できるはずです。

動作させてみて問題なく動くことを確認です。簡単な測定なので輝線がすこし太いです。
振幅が500mVppをすこし超えているようなのですが、これは簡易IVにした為かな?


RenewDAC1704との接続テストです。


設定はこんな感じにしてみました。


問題なく動作しているようです。でも、振幅がちょっとだけ大きい感じ。

ソフトを仕上げてていきましょう!

付け足すのは、赤外線リモコンです。
あと、ちょっと検討すべきは設定パラメータがかなり多いです。一つのセッティングには
16個のパラメータがあります。勿論、無関係なものが大半になるので
すっ飛ばせばいいのですが・・・・・。
 どのパラメータ入力が必要なのかは、早見表でもつくっておけばいいかな?

早見表? 2022.10.16

設定が必要なものの早見表をつくってみました。

1)入力がPCMの場合
 これが一番、表が細かいです。なんせ、SPDIFやADCはすべてPCM信号ですからね。
でも、表にしてみると結構ですが設定不要なものが多いです。まあ、入力信号がDSDの場合の設定項目は
省略できますからね。

入力がPCMの場合
No パラメータ設定(LCD表示) 内容 パラメータ値
1 CONVERSION STYLE 変換方式の設定 PCM->PCM PCM->DSD PCM THROUGH
2 SELECT INPUT SOURCE 入力選択 RXn PCMn ADC RXn PCMn ADC RXn PCMn ADC
3 SRC INP. PCM FORMAT AK4137のPCM入力フォーマット I2S,LJ、RJ24,RJ32 不要 不要 不要
4 SRC INP. DSD FS AK4137のDSD入力FS 64,128,256FS 不要 不要 不要 不要 不要 不要 不要 不要 不要
5 Master Clock Freq. AK4137のマスタークロック 49.152〜5.6448MHz 不要 不要 不要
6 MCK FSO SELECT AK4137のFS設定 64〜768FS 不要 不要 不要
7 SRC OUT PCM FORMAT AK4137のPCM出力フォーマット I2S,LJ,RJ 不要 不要 不要 不要 不要 不要
8 SRC OUT BIT LENGTH AK4137のPCM出力ビット数 16,20,24,32 不要 不要 不要 不要 不要 不要
9 SRC DF SELECT(`PCM) AK4137のPCM出力ディジタルフィルター設定 SHARP,SLOW,NOR,SD 不要 不要 不要 不要 不要 不要
10 SRC OUTPUT FS(@DSD) AK4137のDSD出力FS設定 64,125,256FS 不要 不要 不要 不要 不要 不要
11 SRC OUT DSD CLIP. AK4137でのDSDのクリッピング処理 OFF,-6fdB,-9dB 不要 不要 不要 不要 不要 不要
12 DIR OUTPUT FORMAT PCM9211のDIR出力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要 不要 不要 不要
13 DIT INPUT FORMAT PCM9211のDIT入力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要
14 DIT INPUT FS SEL. PCM9211のDIT入力FS設定 128,256,512FS 不要 不要 不要
15 ADC OUTPUT FORMAT PCM9211のADCの出力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要 不要 不要 不要
16 ADC SAMPLING RATE PCM9211のADCのサンプル周波数 96kHz,48kHz 不要 不要 不要 不要 不要 不要

2)入力がDSDの場合
 これはPCMの場合に比べて比較的すっきりです。というのもDSD信号として受けられるのはポートのPCM0,PCM1だけですから。
ポートの名称はPCM0,PCM1となっていますがPCM9211は単なるスイッチとして動作するのでフォーマットはなんでもOKです。
ということでDSD信号の切替も可能になっています。

入力がDSDの場合
No パラメータ設定(LCD表示) 内容 パラメータ値
1 CONVERSION STYLE 変換方式の設定 DSD->PCMDSD->DSD DSD THROUGH
2 SELECT INPUT SOURCE 入力選択 RXn PCMn ADC RXn PCMn ADC RXn PCMn ADC
3 SRC INP. PCM FORMAT AK4137のPCM入力フォーマット I2S,LJ、RJ24,RJ32 不要 不要 不要
4 SRC INP. DSD FS AK4137のDSD入力FS 64,128,256FS 不要
5 Master Clock Freq. AK4137のマスタークロック 49.152〜5.6448MHz 不要
6 MCK FSO SELECT AK4137のFS設定 64〜768FS 不要
7 SRC OUT PCM FORMAT AK4137のPCM出力フォーマット I2S,LJ,RJ 不要 不要
8 SRC OUT BIT LENGTH AK4137のPCM出力ビット数 16,20,24,32 不要 不要
9 SRC DF SELECT(`PCM) AK4137のPCM出力ディジタルフィルター設定 SHARP,SLOW,NOR,SD 不要 不要
10 SRC OUTPUT FS(@DSD) AK4137のDSD出力FS設定 64,125,256FS 不要 不要
11 SRC OUT DSD CLIP. AK4137でのDSDのクリッピング処理 OFF,-6fdB,-9dB 不要 不要
12 DIR OUTPUT FORMAT PCM9211のDIR出力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要
13 DIT INPUT FORMAT PCM9211のDIT入力フォーマット I2S,LJ,RJ16,RJ24 不要 不要
14 DIT INPUT FS SEL. PCM9211のDIT入力FS設定 128,256,512FS 不要 不要
15 ADC OUTPUT FORMAT PCM9211のADCの出力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要
16 ADC SAMPLING RATE PCM9211のADCのサンプル周波数 96kHz,48kHz 不要 不要 不要


3)入力がDoPの場合

DoPが入力できるポートはPCM0,PCM1のみになりますから、これも比較的簡単です。
でもDoPのフォーマットはよく知らないし、つかったこともあるのでどれをどう使ったら動くのか
よくわかりません。DoP DSD on PCM ですから基本はPCM信号がベースと考えたらいいのかな?
 まあ、これはおまけみたいな位置づけです。

入力がDoPの場合
No パラメータ設定(LCD表示) 内容 パラメータ値
1 CONVERSION STYLE 変換方式の設定 DoP->PCM DoP->DSD DSD THROUGH
2 SELECT INPUT SOURCE 入力選択 RXn PCMn ADC RXn PCMn ADC RXn PCMn ADC
3 SRC INP. PCM FORMAT AK4137のPCM入力フォーマット I2S,LJ、RJ24,RJ32 ?? 不要 不要
4 SRC INP. DSD FS AK4137のDSD入力FS 64,128,256FS ?? ?? 不要
5 Master Clock Freq. AK4137のマスタークロック 49.152〜5.6448MHz ?? ?? 不要
6 MCK FSO SELECT AK4137のFS設定 64〜768FS ?? ?? 不要
7 SRC OUT PCM FORMAT AK4137のPCM出力フォーマット I2S,LJ,RJ ?? 不要 不要
8 SRC OUT BIT LENGTH AK4137のPCM出力ビット数 16,20,24,32 ?? 不要 不要
9 SRC DF SELECT(`PCM) AK4137のPCM出力ディジタルフィルター設定 SHARP,SLOW,NOR,SD ?? 不要 不要
10 SRC OUTPUT FS(@DSD) AK4137のDSD出力FS設定 64,125,256FS 不要 ?? 不要
11 SRC OUT DSD CLIP. AK4137でのDSDのクリッピング処理 OFF,-6fdB,-9dB 不要 ?? 不要
12 DIR OUTPUT FORMAT PCM9211のDIR出力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要
13 DIT INPUT FORMAT PCM9211のDIT入力フォーマット I2S,LJ,RJ16,RJ24 ?? 不要 不要
14 DIT INPUT FS SEL. PCM9211のDIT入力FS設定 128,256,512FS ?? 不要 不要
15 ADC OUTPUT FORMAT PCM9211のADCの出力フォーマット I2S,LJ,RJ16,RJ24 不要 不要 不要
16 ADC SAMPLING RATE PCM9211のADCのサンプル周波数 96kHz,48kHz 不要 不要 不要

セッティングの既定値はどうしよう?
仮なのでなんでもいいですが、とりあえずはこんな感じでしょうか。

セッティング番号 入力 変換内容
1 RX0(SPDIF同軸) PCM→PCM、 I2Sの192kHz
2 RX0(SPDIF同軸) PCM→DSD256
3 RX0(SPDIF同軸) 無変換
4 PCM0(I2S) PCM→PCM、I2Sの192kHz
5 PCM0(I2S) PCM→DSD256
6 PCM0(I2S) 無変換
7 ADC PCM→PCM、I2Sの96kHz
8 ADC PCM→DSD256


最終コーナ?
さて、最後に赤外線リモコンにも対応できるようにソフトを追加です。
動作確認のためにも赤外線受光モジュールをつけています。

赤外線リモコンにも対応です。 なぜか受光器が向こうを向いています(笑。

リリースには・・・

まずマニュアルも用意しなければなりませんが、それ以上に部品が足りないので
発注しなくっちゃ---,って在庫あるかな??半導体不足のバカヤロ!!(笑。

(ほぼ)完成? 2022.10.21

最終的な動作確認をしつつ、表示関連も整理です(全然、系統だっていませんが)。

FRONT
PAGE
フロントページ

通常はこの画面が表示されます。
セッテイング番号と主要な情報が表示されます。
この場合だと下記を示しています。
セッテイング:1 (1〜8まであります
変換:PCM入力ー>PCM出力
入力:RX0(SPDIF同軸) 周波数は48kHz
出力:マスタクロックは24.576MHz
    出力FSはX128
    フォーマットはI2S, 192kHz変換
1 セッテイング1のパラメータ変更(1/20)

変換スタイルを設定します。
 PCMー>PCM
 PCMー>DSD
 DSDー>PCM
 DSDー>DSD
 DoPー>PCM
 DoPー>DSD
 PCMー>(無変換)
 DSDー>(無変換)
2 セッテイング1のパラメータ変更(2/20)

入力を設定します。
 RX0 (SPDIF同軸)
 RX1(SPDIF同軸)
 RX2(SPDIFディジタル)
 RX3(SPDIFディジタル)
 PCM0(CN1、PCM,DSD兼用)
 PCM1(CN2、PCM,DSD兼用)
 ADC
3 セッテイング1のパラメータ変更(3/20)

(SRC)AK4137のPCM入力フォーマット設定
 I2S
 LJ(左詰め)
 RJ24(右詰め24ビット)
 RJ32(右詰め32ビット)
4 セッテイング1のパラメータ変更(4/20)

(SRC)AK4137のDSD入力FS設定
 64FS
 128FS
 256FS
5 セッテイング1のパラメータ変更(5/20)

マスタークロックの設定
 49.152MHz 〜 5.6448MHzまで8段階で設定
 (48kHz系と44.1kHz系)
6 セッテイング1のパラメータ変更(6/20)

マスタークロックのFS出力設定
 64FSO
 128FSO
 256FSO
 384FSO
 512FSO
 768FSO
※多くは128あるいは256、512設定です
7 セッテイング1のパラメータ変更(7/20)

SRC(AK4137)のPCM出力フォーマットを設定
I2S
LJ
RJ
※出力ビットは次で設定します。
8 セッテイング1のパラメータ変更(8/20)

SRC(AK4137)のPCM出力ビットを設定
16
20
24
32
#通常はI2Sで32ビット設定でいいと思いますが、
マルチビットDAC(PCM1704など)をつなぐときは
24Bitに設定(PCM56Pだと16bit)
9 セッテイング1のパラメータ変更(9/20)

SRC(AK4137)のPCM出力のディジタルフィルタを設定

SHARP ROLL-OFF + NORMAL DELAY
SHARP ROLL-OFF + SHORT DELAY
SLOW ROLL-OFF + NORMAL DELAY
SLOW ROLL-OFF + SHORT DELAY
#表記は一部省略しています。
10 セッテイング1のパラメータ変更(10/20)

SRC(AK4137)のDSD出力FSを設定
64FS
128FS
256FS
#数値が高くなると高いクロックになります。BCKの周波数は
FREQ=マスタクロック周波数(*1)XFSO(*2)×FS(*3)

(*1)パラメータ変更(5/20)
(*2)パラメータ変更(6/20)
(*3)このパラメータ
11 セッテイング1のパラメータ変更(11/20)

SRC(AK4137)のDSD出力クリップを設定
OFF
-6dB
-9dB
12 セッテイング1のパラメータ変更(12/20)

DIR(PCM9211)の出力フォーマットを設定
I2S
LJ
RJ16(右詰め16bit)
RJ24(右詰め24bit)

#通常はI2Sでいいでしょう。パラメータ(3/20)との整合性が必要です。
13 セッテイング1のパラメータ変更(13/20)

DIT(PCM9211)の入力フォーマットを設定
I2S
LJ
RJ16(右詰め16bit)
RJ24(右詰め24bit)

#通常はI2Sでいいでしょう。SRC(AK4137)の出力である
パラメータ(7,8/20)との整合性が必要です(PCM出力のみ)
14 セッテイング1のパラメータ変更(14/20)

DIT(PCM9211)の入力FSを設定
128FS
256FS
512FS

#通常はI2Sでいいでしょう。SRC(AK4137)の出力である
パラメータ(6/20)との整合性が必要です(PCM出力のみ)
15 セッテイング1のパラメータ変更(15/20)

ADC(PCM9211)の出力フォーマットを設定
I2S
LJ
RJ16(右詰め16bit)
RJ24(右詰め24bit)

#通常はI2Sでいいでしょう。
16 セッテイング1のパラメータ変更(16/20)

ADC(PCM9211)のサンプリング周波数を設定
96kHz(256FS) 
48kHz(256FS)

#どちらも256FSなので出力システムクロックは下記の通り
 96kHz時で24.576MHz
 48kHz時で12.288MHz.
17 セッテイング1のパラメータ変更(17/20)

ADC(PCM9211)の入力ゲインを設定
-100dB〜20dB

#前のパラメータの残像が残っています。消しておかなくっちゃ!
18 デバッグ情報(参考です)
不要なので消そうかと思いましたが、とりあえず残しておきます。
入力信号のクロック情報です(約1msでのカウント値).
19 デバッグ情報(参考です)
不要なので消そうかと思いましたが、とりあえず残しておきます。
AK4137の設定レジスターです。レジスタは0x00〜0x06までの7個
しかありませんから、全部表示できます。4桁のうち上位2桁はアドレス
で下位2桁が設定値です。
最後のEMMNNはMMがEXT-i/OのDIO0、NNがDIO1です。
20 デバッグ情報(参考です)
不要なので消そうかと思いましたが、とりあえず残しておきます。

PCM9211の設定レジスターです。レジスタは0x20〜0x7Eまで
ありますので、PARAスイッチ(SW1,2)で変更します。.


マニュアル作成 2022.10.30

RenewSRC4137Manual.pdf


(そろそろリリース?)


スペシャルコマンド(?)追加検討

この基板にはI2Cの出力ポートがあります。ということは、外部に接続した機器をこの基板が制御できるということです。
そこでFRONT PAGEでセッテング番号を切り替えたときに、あわせて外部(あるいは内部)に追加の制御コマンドを送出
できるようにと考えています。
 EEPROMにはまだすこし余裕あるので、各セッティングに対して20コマンド程度は入れられそうです。
たとえばDAC4499のフルコントロールもこれでできるかもしれません(AK4499でも実際に書き込みが必要なレジスターは
数個程度です)。あるいは外部クロックを使用する場合に、クロックの選択を行うようにI/Oを制御するのにも使えるでしょう。

ただ、このコマンドを追加するためのキー操作をどのようにするかが、ちょっと考えどころです。
気になるのは、書き込む制御コマンドを間違えると、ハングアップまではしないでしょうが、
I2Cの通信エラーが発生する可能性が高いことかなあ〜。アドレスのないところに書き込めないですからね。
間違えたら”初期化”をしないと復帰できないかもしれないなあ〜。

折角なので追加!

ソフトを追加したらプロ―グラムコードは43kBになりました。 でも消費率は33%とまだ余裕です。
やはりPIC18F27Q43は容量が大きい!(128kBあります). ただこのPICも秋月電子で購入個数制限
かかっているのが気になるなあ〜。 

それはさておき、こんな感じで追加です。 
基本的に隠しコマンド的なものなので、マニュアルには記載しないです。
というか、単にマニュアルに書くのが面倒だったりします。

機能: I2Cデータの拡張送出です。 セッテング番号を変えると、素子に必要なデータをI2Cで送りますが、
    送出終了後に、追加でこのコマンドで編集したI2Cデータを送出します。 送出先のI2Cアドレス、マップ(レジスタ)、
    データは任意ですので、基板内の素子は元より、外部のI2C素子を設定することができます。
    これを利用することで、基板の外の素子の制御に加えて、基板内い素子(PCM9211,AK4137,EXT-I/O)のさらに細かい設定
    を行うことができます。ただ、データ間違えると動かなくなったりしますので要注意です。

起動方法: PARA-スイッチ(SW2)を押しながら電源を投入します。
  

オープニングメッセージがでて、拡張コマンドの編集モードになります。

操作(編集)方法:

(1)編集するセッテング
番号選択(1〜8)
PARA-、PARA+キーでセッテング番号を変更します。
そのあと、TERM+キーで編集に入ります。
(2)追加するコマンドを編集 編集はI2Cのアドレス(AD)、マップ(MAP)とデータ(DT)です。
それぞれ上位4ビット、下位4ビット単位で編集です。
編集位置をTERM、内容をPARAで変更です。
編集位置を進める(戻す)と次(前)の位置になります。
編集コードは、20個用意しました。
注意事項はアドレスがFF(既定値)だと、無視されるデータということです。
アドレスがFF以外であれば、I2C通信を実行します。

既定値はFFです。

なお、基板上素子のI2Cアドレスは下記のようになっています.
PCM9211  0x80
AK4137   0x20
EXT_I/O   0xEE

(3)コピー 編集の最後にコピーコマンドを入れておきました。 現在編集している
セッテング番号のデータを他のセッティング番号にコピーできます。
なお、コピー先が同じ番号ならなにもしません. ということで、コピーを
する場合は違う番号に設定してからTERMキーを押します。
(4)再起動
編集が終われば、電源を一旦切って、再起動すればいいのですが、
面倒なこともあってリセット機能も入れました。この画面でPARA+(SW1)を
押すとリセットがかかります。



リリース開始しました! 2022.11.1


スタンドアロン化! 2022.11.3

従来のSRC4137はとても便利で実機の組み込み用や実験用等で、都合4枚程度作ったのですが、
その内の一つは実験に使用しやすいようにスタンドアロンで動くようにしています。
すなわち、電源にはDCジャックをつかって、SPDIF入力にはRCAコネクタを取り付けてといった次第です。
これは今でも重宝しています。

従来のSRC4137の1つは実験用にスタンドアロンで動くようにしています。

今回のRenewSRC4137は従来機に比べて、SPDIF出力も追加していますし、アナログ入力もあり
かなりI/Oが充実していることもあり、実験用にスタンドアロン化しておくことにしました。
本来はそれ専用に1枚作りたいとことですが、なんせAK4137の手持ちが少ないので、まずは
完成基板をつかうことにしました。

LCDはGLCDに

RenewSRC4137は基板が標準サイズなので、従来機に比べて一回り小さいです。そのため、
その上にLCDを配置するとスイッチやコネクタが隠れてしまって操作ができません。そこで、
LCDの代わりにI2Cで動くGLCDを取り付けることにしました。これも安いもので、AMAZONで
「OLED 128」で検索したら一杯でてきます。 しかしちょっと高くなったかな?今では750円くらいのようです。
でも秋月はもっと安いです。まだ580円で売っています。

ということで、さっそくGLCDを取り付けです。I2C信号はCN6から取り出しです。
電源もCN6から取れますが、GLCDを基板上に固定したかったので、違うところからリード線
をつかって配線しています。すなわち固定と兼用です。


GLCDを取り付けました。 小さいですが128×64 Dotの表示ができます。


こんな形で取り付けです。GNDラインの接続は隠れてしまっています。

I/Oコネクタの取り付け

これらはI/O-STD基板をつかって取り付けです。DCジャック2つにRCAコネクタ4つだけなので少し勿体ない
使い方です。しかし標準サイズ基板と重ねて使えるので、このような形態で結構つかっています。
DCジャックが2つあるのはパラ接続になっていて、他の基板への分岐用です。
RCAコネクタは左からSPDIF-IN,ANALOG-IN(L,R)、SPDIF-OUT用です。
あとは、RenewSRC4137と配線するだけです。GND線は電源ラインの1本しかつかいませんから、
あとはすべて信号(ホット)だけの配線です。

I/O-STD基板にコネクタ類を取り付けです。


配線は裏返して行います。


スタンドアロン化完了!
 配線が終わったら、あとは15mm高さのスペーサでつないで完成です。
こじんまりと仕上がりました。重ねるときに余った配線はすべて基板間に押し込んでいます。

スタンドアロン化完成(まずはハードだけ)


横からみるとこんな感じです。


表示ライブラりを入れ替え

GLCDの制御ICはSSD1306ですが、以前の検討で制御ライブラりをつくっているので、LCDのライブラリ
と入れ替えです。ちょっとサブルーチン名が違うのですが、変換用の関数を作るだけで、簡単に入れ替えできました。
表示はLCDに比べるとだいぶ小さいですが、視認には十分です。

表示はちょっと小さいです。3.3Vで動かしているので、ちょっと暗いかな?


従来機との比較です。だいぶコンパクトになりました。


ポカ 2022.11.7

マニュアル(R1)の部品表に色々とミスがありました。

 C12 → (正) 10uF(±30%)  AK4137のレギュレータパスコンですが容量指定がありました。前作でも間違えたので2度目のポカです。
 C3,4 → (正) 15〜22pF    水晶発振子用なので0.1uFでは異常発振してしまいます。

代替品
 PCA9539の入手が難しいようなので、セカンドソースのPI4IO5V9539に入れ替えてみました。
 変更しても正常に動作することを確認です。パッケージは少し薄いようです。

  
 最初に実装したPCA9539です。                    セカンドソースに入れ替えましたが問題なく動作しました。


表示器変更? 2022.11.15

こんなご意見いただきました。






確かに、いつもつかう20x4のキャラクターディスプレは大きいです。
でも、老眼の小生にとってはこのくらい大きい方が見やすいのですが・・・それにある程度離れても視認できます。
しかし、ケースに押し込むときにこのサイズは結構辛いかもしれません。
フルサイズのケースを使うならまだしも、私はいつも幅230mmのタカチのケースなので、これを入れる場合は
高さのあるケースを使わざるを得ません(70mm高さのケースだと他に電源スイッチくらいしかつけられないです)。

”大は小を兼ねる”とはいいますが、この世界だと”小は大を兼ねる”かな〜。

ちなみに、小さめの表示器の大きさ比べをしてみました。

上側: 通常つかう20x4のキャラクターLCD(大きいですが見やすい。パラレル接続用)
下側(左)  : 0.96インチの128x64のグラフィックOLED(秋月で売っている。I2C用。小さいけどキャラクタで21x8表示できる)
下側(中央): 1.3インチの128x64のグラフィックOLED(I2C用。ここまで大きいと結構見やすい)
下側(右) : 2.2インチの320x240のグラフィックTFT(SPI用。カラーも表示できます)


サイズ的には0.96,1.3インチだと小さいですが逆に小さすぎて、ケースに組み込んだときに単なる穴にみえてしまうかもしれません。
すこし大きな2.2インチくらいが丁度いいかもです。
基板の上に載せても、コネクタやスイッチにも干渉しないで済みそうです。

320x240TFTをRenewSRC4137の上に載せても邪魔にはならなそうです。

折角のカラーグラフィックを使うなら・・・
 でも、折角320x240Dotもあってカラーなのに文字だけ表示というのも寂しいかもしれません。
いっそのこと、信号の流れがわかるように図形を描けば判りやすいかもです。

たとえばこんな感じで表示するとかはどうだろう?

だけど、もの凄く手間かかりそうだなあ〜。制御プログラムを書くより、大変かもです。

まずは、この320x240TFTがとりつくかどうかを確認しないとだめだなあ〜。

とりあえず 2022.11.16

320x240TFTを基板に接続するところから始めましょう。
この表示器はSPI入力なのでLCDのポート(CN3)と接続します。 都合5本のI/Oが必要です。

320x240TFTのピン配列です。SPI入力になっています。

接続の配置

TFT LCD(CN3) 備考
1 VCC 3.3Vレギュレータから接続
2 GND 1 (GND)
3 CS 4 (RS)
4 RESET 6 (E)
5 DC/RS 11 (DB4)
6 SDI/MOSI 12 (DB5)
7 SCK 13 (DB7)
8 LED 3.3V入力(常に点灯)
9 SDO/MISO 未使用


こんな形で接続しました。

まずは、表示ライブラリを入れ替えて動作確認です。
以前にライブラリを作っておいて助かりました。

単純にLCDからの置き換えた場合の表示です。 なんとも殺風景です。

さて、この先どうする?

まずはキャラクターベースで 2022.11.20

OLEDなどの小さい画面だと、どうしてもキャラクターベースになるので、
それを組んでみましょう。いづれにしてもパラメータ設定はキャラクター表示
になるので、そちらからです。

で、あらためて画面が広いとパラメータ設定画面がわかりやすいです。
設定できるパタメータがすべて表示できるのがいいですね。

 



パラメータがすべて表示できるので選択しやすいです。

反面・・・・

Front-Pageの表示がかなりややこしくなりました。
表示できる項目が多いのはいいのですが、表示内容が場合により大きく変ります。
たとえばPCM0,1ポートからの入力の場合は、PCM対象ならワードクロックの表示ですし、
DSD対象ならビットクロック表示が必要です。

FRONT-PAGEの表示がかなりややこしくなりそうです。

おいおいプログラムを作成していきましょう!

#そういえば、今日からワールドカップだなあ〜

キャラクターベースでは完成! 2022.11.23

キャラクターベースでは完成しました。 さらに1.3インチのすこし大きいOLEDにも対応させました。
秋月の0.96インチに比べると面積で83%UPですから、かなり見やすいです。
ただ、秋月0.96インチOLEDと1.3インチOLEDは制御ICが異なり、それぞれSSD1306とSH1106というものですが、
微妙にコマンドが違います。 そのため、両者に対応できるようにしました。 具体的には未使用の端子があるので、.
それで選択するようにしました。
 さらに画面を倒立した状態でも使えるようにしてみました。 というのも、CN6のポートにダイレクトに差し込むことを
考えると、倒立した状態の表示が適していているためです。

1.3インチのOLEDになると、結構見やすいです。


画面を倒立して表示することもできます。


OKEDの選択には未使用のエンコーダ接続端子を使います。
B: C接続:SH1106    開放:SSD1306
A: C接続:ノーマル表示 開放:倒立表示

つかってみて、変なところがないか見ていきましょう!


Combo384(もどき?)を繋いでみましょう。 2022.11.28

USBからI2Sに変換するDAIとしてはCombo384というのが、結構有名らしいので
適当に同じような形をしているものの安価なものをすこし前に購入していました。
封も切らずにそのままでしたが、動作確認も含めて、このRrenew SRC4137の入力として接続してみましょう。

こんなものを買っていました。 形はオリジナルとほぼ同じです。


送られて来たのはこれだけです。 さてさて、動くかな?


動くけど--?

さっそくPCとUSBで接続します。 すぐにPC側に認識して使えるようになりました。
そこで、いつも使っているWEVEGENを起動して48kHzを超える周波数で使えるか試してみました。
その結果は、ダメです。 WAVEGEN側で192kHzに設定しても48kHzのままです。
なにか、ドライバーの設定が必要なのかな?

まずはI2S出力でLRCLOCKの周波数を確認です。


PCと接続したら、勝手に認識してくれて出力が出るようになりました。


WAVEGENEで192kHzに設定しました。 これで動いてくれるかな?


WAVEGENEで192kHzに設定しても出力は48kHzの出力のままです。
なにかドライバーが必要なようです。

味の素?味塩?が必要?

192kHzで動かないので、色々とHPで調べてみると、なにやら味の素?いや味塩?いや
ASIOなるドライバをインストールしなければいけないことがわかりました。
さらに、調べるとASIO4ALLなるものがあるようで、それをインストールしてみました。
インストール自体は問題なくできましたが、それでも上手く動きません.

これなの? 
 なかなか思った通りに動いてくれないのですが、 WAVEGENのソフトのあるアイコンをクリックしたら、
なにやらドライバの選択や、ボードの選択などの画面がでてきました。 
あ、そうなのね。これを設定しないといけないようです。
 で、早速設定してみると無事に192kHzでも再生ができるようになりました。
ただ、384kHzでは何かエラーがでるようで再生できませんでした。 まあ、192kHzで再生できればいいでしょう。


こんなアイコンをクリックするとドライバの選択ができるなんて初めてしりました。


無事192kHzでの再生ができました。

早速組み込みましょう!

Combo384(もどき?)が動くことも確認できたので、RenewSRC4137のシステムに組み込んでいきましょう。
これでUSB入力が一つ増えることになります。
USBコネクタはI/O基板の空いたスペースに取り付けます。
最初は、Combo384をそのまま取り付けようかと思いましたが、すこしだけ高さが邪魔をしてしまいます。
そのため基板とUSBコネクタを切り離します。 新品のUSBコネクタを基板に固定できれば、
あとはCombo384を適当にI/O基板に設置して配線するだけです。
PCM1のポートに接続しました。


この空いているスペースにUSBコネクタを取り付けましょう。


無理やり取り付けました。 ケースも基板に半田で固定しています。


次はCombo384からUSBコネクタを取り外します。 ケース固定のツメの半田付けが
取れれば、あとは簡単です。 修理した半田吸い取り器が大活躍です。




あとは配線するだけです。 I2S信号線は基板の外を通らないようにレギュレータの取り付け穴を
利用して上の基板へ通しています。



基板上の配線もたるみ止めを行います。


一応、PCM1入力での動作を確認です。 

段々とRenewSRC4137周辺が機能アップされてきました。 

(つづく?)