あたらしいDIXを試してみましょう! 2015.3.11

こんな書き込みをいただきました。


なぜシーラスロジックのCS8416の後継機がWolfsonのWM8805なのか、気になりましたが調べてみると
どうやらWolfonはシーラスロジックに買収されたようです。いや〜なかなか、この世界もM&Aが激しいです。
いや、この世界だから激しいのかな?

CS8416の供給はまだ当面は大丈夫でしょうけど、結構使い易いDAIなのでこれがなくなると結構寂しいです。

そうこうしていると、次のような書き込みもいただきまし。


そういえば、新しいDAIは沢山あるのですが、あまり試したことはないので、ここいらでちょっと調べてみましょう。

調達!

”DIX”をキーワードでDIGIKEYで調べると幾つか引っかかってきました。そこで、今回はTI社のDIX9211とAK4118を
購入してみました。どちらも1000円強です。ちょっと高い印象もありますが、最近の円安でしかたないのでしょう。
そう考えればAK4118は旭化成なので、国内で買ったほうが安いかな?いや、海外生産だったら同じかな?


左:TIのDIX9211 右:旭化成 AK4118

汎用I2Cコントローラを作る!

最近(でもないですが)のこういったICはほとんがソフト制御になっていて、制御の方法もSPI(3線式)あるいは
I2C(2線式)です。なかでも、2本だけで何個ものICが制御できるI2Cが結構主流になってきています。
いままでにI2C制御のICは扱いました。
列挙するとCS8416,WM8805,ES9018S,ES9018K2M,DSD1794,SRC4392,DIT4192,PLL1700、etc・・・。
ICの機能を試すたびに、ソフトを組んでいましたが結構大変です。それにこれからも色々なICを試すだろうから、
ここいらで汎用のI2Cコントローラを作ってみることにしました。

機能としては、任意のI2Cの制御アドレスを設定し、任意の書き込みレジスターの値を読み書きできるように
したものです。


作ってみた汎用のI2Cコントローラ

動かしてみましょう!

動作確認にいつもつかっているCS8416を接続して確認してみました。

汎用I2Cコントローラの動作確認です。


最初にI2C制御のアドレスを設定します。


次に、読み書きするレジスターのスタートアドレスです。


次に、読み書きするレジスターのエンドアドレスです。

上記の設定が終わったら、レジスタアドレスの読み書きできるようになります。

備忘録代わりです。

このコントローラがあれば、いとも簡単にI2C制御用のICの機能を確認できそうです。
こういったコントローラは最初に作っておけばよかったな〜といつもおもいます。

DIX9211を動かしてみましょう!

まずは秋月で買った変換基板(48P)に取り付けて、必要最小限のCR類を
とりつけます。必要最小限なものはPLLフィルータのCRと24.576MHzの水晶です。

変換基板にICとCR類を取り付けました。


あとはブレッドボード上の配線です。電源の配線とI2Cの配線すれば完了です。
そして電源を入れて、アドレス(80H)を設定して読み書きするレジスターアドレスを20H-7EHで設定です。
そして、あとはちゃんとレジスタが読み書きできるか確認しました。
まずは問題ないようです。
これでDIX9211が動きだしました。

無事DIX9211が動き出しました。

データシートは100P以上。。。

DIX9211を動かすにもレジスターの設定が必要ですが、それにしても設定必要なレジスターの多いこと。
さらにデータシートPDFを印刷しましたが、なんと100Pちょっとあります。
読む気しないよ〜

※また明日からしばらく出張(?)生活だな〜。



期末、期初のバタバタ・・・ 2015.4.19

仕事柄、忙しいのは来年度の計画を策定にかかる10〜12月頃が一番忙しくて、世間でいう
3月の期末や4月の期初めは特段忙しいわけでなないのだが、今年は違った。
まあ、色々なことが重なってしまって半田作業はしばらくストップ。
というか、半田ゴテに通電できる環境ですらなかったのですが、
ようやく環境と整いつつあります。

ようやく半田ゴテが握れそうな環境が整いつつあります。

しかし、1ヶ月も半田ゴテを握らない日が経つと、すっかり細かいことを忘れています。
こりゃ思い出すのも時間がかかりそうです。


そうだ、DIX9211を動かそうとしていたんだ!

ブレッドボードを含めて、基板はどこに行ったのだろう?捜索からはじめないと・・・(笑)。

みつけました! 2015.4.28


ダンボール箱のなかから見つけだしました(笑)

思い出すのに時間がかかります。

コマンドをどのように入力するのかを完全に忘れさっています。
ちょっと備忘録代わりに記録をちゃんととりましょう。

まずは、DAIとして最小限の動作をさせるためにコマンド設定です。

RX0(アンプ付き)を入力にして動作させます。

I2Cアドレス 0x80
レジスタ 内容 説明
30h 0x10 PLL SCK DIVIDING RATIO AUTOMATIC CONTROL
34h 0x00 RX0入力、Normal Operation
35h 0x00 RECOUT0 RX0

問題なく動いているようです。
PCから48kHzの信号を入れています。システムクロックは24.576MHzなので512fsになります。


DATA信号

LRCK信号

BCK信号

SCK信号


DACをつないでみましょう。

手近にあったR-2Rにつないでみました。R-2Rはディジタルフィルタがないので、信号をダイレクトに観察するのに便利です。


出力をR-2Rにつないでみました。

出力を観測すると、バラバラです。そりゃそうですね、デフォルトの設定ではDIXの出力は
I2Sになっています。これを右詰(RJ)に変更する必要があります。

I2CフォーマットではR-2Rは上手く動作しません。


RJフォーマットで動かすためにレジスターの設定を追加しました。

I2Cアドレス 0x80
レジスタ 内容 説明
2Fh 0x00 Right Justified format
30h 0x10 PLL SCK DIVIDING RATIO AUTOMATIC CONTROL
34h 0x00 RX0入力、Normal Operation
35h 0x00 RECOUT0 RX0

無事動き出しました。


RJフォーマットにすれば動き出しました。

つぎは、ASRCをつかって・・・あれ? 2015.4.29

こんどはASRCを接続して、192kHzまで動作するかを確認してみましょう。
ということで、ASRCを探しますが見つかりません。部屋中を2、3回探しまわってもでてきません?
ひょとして捨ててしまったか?とおもいつつ、ふとAUDIO PLATEに実装しているのを見つけて
無事、確保しました。忘れていることが多すぎますね〜。


ASRCを接続して入力周波数を可変できるようにしました。

4kHzの入力をした場合の波形の変化です。192kHzでの動作確認とともに、
ASRCの効果を再確認です。

48kHzサンプリング 96kHzサンプリング 192kHz

さて、これでSPDIF入力は確認できました。
次は、PCM入力ですね。

PCM入力を確認してみましょう!

まずはAUXIN0入力をメイン出力に出します。
このときの設定は

レジスタ 内容 説明
6Bh 0x33 AUXIN0 select

これだけでいいはずです。早速確認してみましょう。

ASRCからPCM出力として、DIX9211に入力しています。


動きましたね。

だいたい使い方がわかってきました。
あとは具体的な基板が出来上がってきてから考えましょう。
具体的にはSPDIF入力4系統、PCM入出力6系統で考えていきましょう。

基板パターンを描いてみましょう!
まずは必要となりそうな部品を載せてみました。DIX9211の機能(ポート)が多いために、
必要なICは他にはPICだけで済みそうです。ただし、入出力切り替え制御のための端子
は多くなりそうです。


結構スパースです。


いよいよGW突入
帰省しよ〜〜っと。


GWエンジョイ!

 GWもおわっちゃいましたね〜。今回は半分ゆっくり、半分仕事って感じだったので、
逆に頭がボケずに済んだかな(笑)。久しぶりに家族が全員そろうとにぎやかでいいですが、
家が狭く感じます(爆)。

パターン作成中で〜す。 2015.5.6

色々と考えながら大まかなパターンを描いてみました。
基本は3.3V単一での動作になりますが、5V動作もできるようにレギュレータを搭載しておきました。
あとは、色々なモード設定ができるように、選択端子を沢山設けておきましょう。
基板にユニバーサル部分を設けたのは、パルストランスをとりつけたり、
周波数毎のLED表示をしたり、いといろな拡張を考慮してみました。


こんな感じになりました。

ようやくパターン完成です。 2015.5.25

こんな感じでパターンが完成しました。

やっと描きあがりました。

これで基板を作ってみましょう!

基板完成しました。 2015.5.30


部品面です。


半田面です。

部品を載せて完成。動くかな? 2015.5.31


こんな感じで完成です。

動作確認していきましょう。

そのためにはソフトを組む必要がありますが、まずはIO関係を整理です。

FIELD PCB PIC CONTENT
SELECTOR1 P18 B7 SPDIF RX0 SELECT(DEFAULT)
P17 B6 SPDIF RX1 SELECT
P16 B5 SPDIF RX2 SELECT
P15 B4 SPDIF RX3 SELECT
P14 B3 PCM0 SELECT
P13 B2 PCM1 SELECT
P12 B1 PCM2 SELECT
P11 B0 PCM3 SELECT
SELECTOR2 P9 C7 I2S FORMAT(DEFAULT)
P8 C6 LJ FORMAT
P7 C5 RJ16 FORMAT
P6 C4 RJ24 FORMAT
MODE M0 A6
M1 A7
M2 A5
M3 A4
M4 A3
AUX PORT T0 C3 FREQ OUTPUT T0
T1 C2 FREQ OUTPUT T1
T2 C1 FREQ OUTPUT T2
T3 C0 FREQ OUTPUT T3
I2C SDA A0
SCL A1
RESET RST A2


まずはもっともシンプルにSPDIF入力のプログラムのみを書き込んで動作確認です。


こんな感じで動作確認です。

LRクロックの波形をみて、無事44.1kHzがでていることを確認しました。
これで、DX9211とPIC間の接続などは問題ないことがわかりました。

LRクロックで動作確認です。

このときの電流を測定してみましたが、約18mAでした。


SPDIF入力時の動作電流は約18mAです。

思い出したように 2015.11.7

しばらく忘れいましたが、AK4137の検討中にDIX9211を使ったら部品点数が少なくなるのでは?
とのコメントを頂き、このDAIを検討中であったことを思い出しました。ほぼ半年ぶりの作業再開です。

なんで忘れてしまったんだろう(笑)・・・年かな(爆)。

さて、半年もほったらかしにすると機能もすっかり忘れてしまいました。
ということで、再度100ページにわたるマニュアルを1時間ほど眺めてる羽目に。
でも、なんとなく思い出してきました。

ソフトウエア制御で設定します。かなりのコマンドを設定する必要があるかな〜と思っていましたが、
必要になるには数少ないです。ひょっとしてCS8416より少ないかもです。
で、そのソフト制御を確認するために、I2C制御コントローラと接続して、コマンドを叩き込んで
動作の確認を行いました。

こんな感じでI2Cコントローラと接続して動作確認です。

忘れてもいいように

つぎに忘れてもいいように基板の各端子の機能をメモっておきましょう(笑)。
 
               こんな感じで基板の端子の機能を設定しています。PCM3入力(AUXIN0〜2)とSPDIF4入力が可能です。

プログラムを組み上げました。 2015.11.8

動作確認の構成は入力にFFASRC、出力にR-2R DACを接続しました。比較的プログラムも短いので問題なく動作しました。
いや、本当は些細なミスに気づかず、ちょっとてこずったりしましたが(笑)。

こんな感じで動作確認です。


綺麗な波形がでていますね。

基板端子の備忘録号です。最初の設定から少し変更しています。

SELECTOR1

INPUT SELECT
P18 Reserved P11からP18をGND(P10)に接続することで選択。開放時は前の設定を保持するためプッシュスイッチでの選択も可。設定値はマイコン内EEPROMに記録しているので電源ON時は前設定値を継続。
P17 PCM INPUT Ch.2 (AUXIN2)
P16 PCM INPUT Ch.1 (AUXIN1)
P15 PCM INPUT Ch.0 (AUXIN0)
P14 SPDIF RX3 Digital
P13 SPDIF RX2 Digital
P12 SPDIF RX1 Co-axial
P11 SPDIF RX0 Co-axial(DEFAULT)
SELECTOR2

FORMAT SELECT
P9 Right Justified 24 FORMAT P6からP9をGND(P5)に接続することで選択。開放時は前の設定を保持するためプッシュスイッチでの選択も可。設定値はマイコン内EEPROMに記録しているので電源ON時は前設定値を継続。
P8 Right Justified 16 FORMAT
P7 Left Justified FORMAT
P6 I2S FORMAT(DEFAULT)
MODE M0 SHORT:system clock 256fs fixed
OPEN: Automatic system clock(128 to 512fs)

自動設定の場合は
54kHz以下は512fs
54-108kHzは256fs
108kHz以上は128fs
電源投入時に状態を読み込むため、電源ON後の変更は不可。
M1 Reserved
M2 Reserved
M3 Reserved
M4 Reserved
AUX PORT T0 FREQ OUTPUT T0 周波数表示 T[3..0]
0000 Out of range 1000 44.1kHz
0001 8kHz 1001 48kHz
0010 11.025kHz 1010 64kHz
0011 12kHz 1011 88.2kHz
0100 16kHz 1100 96kHz
0101 22.05kHz 1101 128kHz
0110 24kHz 1110 176.4kHz
0111 32kHz 1111 192kHz

T1 FREQ OUTPUT T1
T2 FREQ OUTPUT T2
T3 FREQ OUTPUT T3


DSD入力も加える? 2015.11.11

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


DIX9211のPORT_CとPORT_BはDSD入力とすることもできます。
そのときの標準的な設定はマニュアルにあります。

ということで、DSDとPCMのどちらを入力するかMODE設定端子のM1,M2をつかって
切り替えられるようにしましょう。通常(OPENあるいはH入力)時はDSD入力ですが、
ショート時(あるいはL入力)はPCM入力です。こうすればCOMBO384などと組み合わせて
自動判定ができます。でも、必要かな?それよりAUXIN2のreg=6Bhの設定は
マニュアル間違っていないかな?

DSD-INPUT PCM-INPUT
Register default PORT_C
AUXIN1
M1=H(OPEN)
PORT_B
AUXIN2
M2=H(OPEN)
PORT_C
AUXIN1
M1=L
PORT_B
AUXIN2
M2=L
34h C2h CFh CFh C2h C2h
60h 44h 44h 55h 44h 55h
61h 10h 14h 14h 10h 10h
6bh 00h 14h 14h??? 44h 55h


DSD対応プログラムを組む前に 2015.11.12

DSDの周波数判定ができるかどうかを確認してみようとおもってDAI9211にLEDを搭載しました。
赤色LEDはかなり明るく光るので1kΩの抵抗を直列に入れています。

LEDを搭載してみました。


PCMで動かすと予定通りの動作です。

DSDソースを準備しましょう。

DSDのチェックをするのにDSDソースを準備しましょう。USB-AUDIOがあればいいのですが、
パソコンを入れ替えたのでソフト動作が???なので、ADC4222を引っ張りだしました。
このボードはPCMもDSDも出力できるので便利です。さらにDSDについては64DSDと128DSD対応です。

DSDソースとしてADC4222を準備しました。

久しぶりに再開 2015.11.28

またまた久しぶりの再開です。週末は帰省することが多いので、
週末にのんびり時間をとることがほとんどできないのですが、なんとかならないかな〜。

まあ、できることからやって行きましょう。

まずはADC4222のDSD出力の確認です。
粗密になっているのがわかると思います。

やっぱり忘れてる・・・

いまやろうとしていることはDSDとPCMの両方に対応させようとしていますが、
レジスタの設定を完全に忘れています。
やっぱりやるときは一気にやらないとだめですね。

ということで、再度レジスタマップを作成です。

REG SPDIF0-4 AUX0(PCM) AUX1(DSD) AUX1(PCM) AUX2(DSD) AUX2(PCM)
M1=H M1=L M2=H M2=L
0x2F FORMAT
0x30 PLL SCK
0x34 CH.0=0x00
CH.0=0x01
CH.0=0x02
CH.0=0x030
0xC2 0xC2 0xC2 0xC2 0xC2
0x35 同上 - - - - -
0x36 同上 - - - - -
0x37 0x00 0x02 0x03 0x03 0x04 0x04
0x60 0x00 0x33 0x44 0x44 0x55 0x55
0x61 0x10 0x10 0x14 0x10 0x14 0x10
0x6b 0x00 0x33 0x44 0x44 0x55 0x55


ソフトを修正して動作チェックです。

結局のところ、DSD入力とPCM入力とのレジスターの違いはレジスター0x61のみです。


まずはSPDIF,PCM入力でチェックです。これは以前にも確認しているので問題なく動きました。DACはR-2Rを接続しています。

最初にDSDソースとDACのチェックから。

DSDのソースにはADC4222を使い、DACにはDAC9018Sを使います。まずは、直接接続して動作を確認しておきましょう。

ADC4222とDAC9018Sを接続して動作確認です。


DAC9018Sの設定はP11=P12=P13=Lなので、すべてP14に接続します。


あたりまえですが、問題なしです。

間にDAI9211を接続して確認です。

ADCとDACの間にセレクタとしてのDAI9211を接続して最終動作確認です。

ADC4222→DAI9211→DAC9018Sの構成で動作させます。


こちらも問題なく動作しました。

さて、さて、リリースにかかりましょう。

リリースしました。2015.12.9

だんだん亀リリースになってくるな〜。
次はAK4137で遊んでみましょう。

(一旦おしまい、かな?)