AK4137ゲットしました(PART2)

(以前のページはこちら)。

DAC179X-2.1を接続してDSDを動かしてみましょう。 2015.11.5

DAC179X-2.1を引っ張りだして、DSD動作を確認してみました。


DAC179X-2.1と接続です。DSD入力にしています。


問題なく動きました。波形も綺麗です。

かなりの高いクロックでも動くようです。

通常のDSDのBCK周波数は2.82MHz(64DSD)ですが、今回は24.576MHzクロックから
生成してAK4137の設定をMODE2(CM3-0=LLHL)で動かすとBCKは6.14MHzになります。
でも、これでも問題なく動くようです。

BCK=6.14MHzでも動いています。

さてどんな構成で基板をつくろうかな?

動作の確認もできたので、基板を描いてみようと思いますが、
どんな構成にするのがいいかな〜と悩みます。

1.シンプルな変換基板
 小型に作ってPCMとDSDのシンプルな変換基板にすると、いろいろとDSD用のDACとしての
 プリプロセッサとしてして使えそうです。

2.いっそのことDAIセンターに。
 いまとなってはディジタルオーディオ機器はCDやPCやRasPiなど色々あるので、それらの
 切り替え機能も備えたDAIセンター構想も面白そうです。
 たとえば入力は
  (1)PCM入力・・・3つ程度
  (2)DSD入力・・・2つ程度
  (3)SPDIF入力・・4つ程度
 出力は
  (1)PCM・・・1ポート
  (2)DSD・・・1ポート
 機能は
  入出力の切り替え、周波数の切り替え等をスイッチとLCDパネルをつかって制御です。
 
 さてさてどうしましょうね。

 DAIセンタを考えると結構大きな基板が必要です。
 DAC9018Dなどと同じサイズが必要です。部品の面積だけならもっと小さくなりますが、
 基板の端にコネクターを実装するとなると最低限このサイズかもです。

 またICが沢山ありますが、出力周波数の切り替えだけなく、入力周波数の計測などを含めると
このくらいの数が必要になりそうです。

必要になりそうな部品を配置して密度感を確認です。

どんどん描いていきましょう!


入出力のバッファー周辺のパターンを描いています。

こんなご意見も



そうですね〜。ただDIX9211であればかなり部品点数がへりそうです。
ただDIX9211はまだつかった実績がないので、使いなれたCS8416を使ったという背景もあります。
と、パターンを描いているうちにDIX9211を使った基板は途中で放置していることに気づきました(笑)。


これ、放置プレイになっていました・・・ほかにも放置しているもたくさん・・・


さてさて 2015.12.1

DAI9211のソフト開発もほぼ終了なので、再度AK4137の基板設計を再開です。
CS8416やPCMの切り替えに必要なロジックをDIX9211に変更することで部品点数がだいぶ減りそうです。


搭載部品を変更してみました。

I2Cのアドレス整理

No PARTS ADRS
IC1 DIX9211 DIR 0x10000000 80h
IC2 AK4137  SRC 0x00100000 20H
IC3 PCA9539 (UP) 0x11101110 EEH
IC4 PCA9539 (DOWN) 0x11101000 E8H


パターン完成 コードネーム SRC4137

こんな感じで完成です。あとはベタを塗ります。


d4317c-top.pdf 部品面パターン

d4317c-bot.pdf 半田面パターン

基板ができました。 2015.12.19

基板できました。

年末はここまで

基板がきたので一気にくみ上げようかと思っていましたが、年末のドタバタと水晶発信器の部品不足もあり、
とりあえず表面実装ICのみ半田づけです。

年末はここまで組み立てました。


さて再開だ〜。 2015.1.6

あけましておめでとうございます。2016年も始動です。
さて残りの部品を一気にとりつけましょう。

色々と修正点発見です。

1.シルク間違い
裏面のRaとあるシルク部のチップ抵抗はプルアップ用(47kΩ)なので、Rbにしなくちゃだめだったけど、
うっかりRaとしてしまいました。部品面のRaは51Ωで、半田面のRaは47kΩの実装です。

裏面nシルクを間違えてしまいました。Raじゃなくて、本来はRbです。

2.配線忘れ?

あれ、一本配線を忘れていたようです。半田面で一本抜けていました。
というわけでジャンパー線をランド間で接続して修正です。
 
修正前                              修正後(間違い探しです)

とりあえず全部の部品が取り付きました。

まずはお出かけ用の写真をパチリ。

完成写真です(LCD無しの状態)


完成写真です(LCD取り付けた状態)

さて、ひとつひとつ動作確認をしていきましょう!

その前にPICおよびIOエクスパンダのIO定義を書き出しましょう。
(今日はここまでかな・・・)

作業再開です。 2016.1.16

ソフト作成のためのIO定義をまとめておきましょう。

No PARTS ADRS
IC1 DIX9211 DIR 0x10000000 80h
IC2 AK4137  SRC 0x00100000 20H
IC3 PCA9539 (UP SIDE) 0x11101110 EEH
IC4 PCA9539 (DOWN SIDE) 0x11101100 ECH

PICの定義

PIN NAME CONTENT
2 A0 LCD_E LCD DISPLAY SC1602
3 A1 LCD_DB4 LCD DISPLAY SC1602
4 A2 LCD_DB5 LCD DISPLAY SC1602
5 A3 LCD_DB6 LCD DISPLAY SC1602
6 A4 LCD_DB7 LCD DISPLAY SC1602
7 A5 PDN AK4137
9 A7 OSC1 XTAL 10MHz EXT
10 A6 OSC2 XTAL 10MHz EXT
11 C0 CLK CLOCK COUNTER INPUT
12 C1 SDA I2C CONTROL
13 C2 SCL I2C CONTROL
14 C3 RST DIX9211
15 C4 TERM- SETTING SW
16 C5 TERM+ SETTING SW
17 C6 DEC SETTING SW
18 C7 INC SETTING SW
21 B0 CLKDIV1 MASTER CLOCK DIVIDE 1 ACTIVE LOW
22 B1 CLKDIV16 MASTER CLOCK DIVIDE 16 ACTIVE LOW
23 B2 CLKDIV8 MASTER CLOCK DIVIDE 8 ACTIVE LOW
24 B3 CLKDIV2 MASTER CLOCK DIVIDE 2 ACTIVE LOW
25 B4 CLKDIV4 MASTER CLOCK DIVIDE 4 ACTIVE LOW
26 B5 XT4 XT4 ACTIVE(49.152MHz) ACTIVE HIGH
27 B6 XT3 XT3 ACTIVE(45.1584MHz) ACTIVE HIGH
28 B7 LCD_RS LCD DISPLAY SC1602

IO EXTENDER (UP SIDE IC3)

IO1 IO0
IO1-7 NC IO0-7 ODIF1 OUTPUT AK4137
IO1-6 NC IO0-6 ODIF0 OUTPUT AK4137
IO1-5 NC IO0-5 OBIT0 OUTPUT AK4137
IO1-4 NC IO0-4 OBIT1 OUTPUT AK4137
IO1-3 SRCEN INPUT AK4137 IO0-3 CM0 OUTPUT AK4137
IO1-2 CDTO INPUT(NOT USE) AK4137 IO0-2 CM1 OUTPUT AK4137
IO1-1 DSD1 OUTPUT ACTIVE LOW LVC245 IO0-1 CM2 OUTPUT AK4137
IO1-0 DSD0 OUTPUT ACIVE LOW LVC245 IO0-0 CM3 OUTPUT AK4137

IO EXTENDER (DOWN SIDE IC4)

IO1 IO0
IO1-7 P28 OUTPUT STATUS 3 IO0-7 P17 INPUT DSD0 SELECT
IO1-6 P27 OUTPUT STATUS 2 IO0-6 P16 INPUT PCM2 SELECT
IO1-5 P26 OUTPUT STATUS 1 IO0-5 P15 INPUT PCM1 SELECT
IO1-4 P25 OUTPUT STATUS 0 IO0-4 P14 INPUT PCM0 SELECT
IO1-3 P22 INPUT DSD OUT ACTIVE LOW IO0-3 P13 INPUT RX3 SPDIF3 SELECT
IO1-2 P21 INPUT PCM OUT ACTIVE LOW IO0-2 P12 INPUT RX2 SPDIF2 SELECT
IO1-1 P19 INPUT Reserved IO0-1 P11 INPUT RX1 SPDIF1 (CO-AXIS) SELECT
IO1-0 P18 INPUT DSD1 SELECT IO0-0 P10 INPUT RX0 SPDIF0 (CO-AXIS) SELECT

IO エクステンダーのレジスタセッテイング



ありゃ?

作業すすめていくと色々とバグがみつかります。
IC4のI2Cアドレス設定がなぜかIC3と同じになっていました。というわけで一部修正。
  
修正前                                   修正後

シルクもずれずれだな〜。RX3はP30〜P32、RX2はP33〜P35、RX1はP36〜37、RX0はP38〜P39
なのですが、見事にずれています。

シルクもずれずれだな〜。

まだまだみつかるかな〜。電源入れるの怖くなってきました(笑)。

まずは簡単のテストプログラムを組んで!

まずはLCDと、DIX9211、IOエクスパンダである2つのPC9539の初期化と、
DIX9211はSPDIF(同軸)入力を受けてI2Cで出力するだけのプログラムを組んで少しづつ動作確認を行います。

全然動かない(笑)

まずはPICにプログラムを書き込んで電源ON!
LCDくらいはまず動くだろうと思っていましたが、なんと何も動きません。
まず電源を調べてみると3.3Vラインがゼロのままです。基板のどこかでショートしているようです。
部品の取り付けによるショートか、それともパターン自体によるショートを確認するために、
予備基板で試したみたところ、見事にショートしていました。
ということで、どこでショートしているかの捜索作業です。
予備基板を眺めているだけでは、時間がかかるので、パターンをいたるところで切断して、ショートしているエリアを探していきます。
するとAK4137周辺でショートしていることを発見。あとはCAD図面を見ながら、探すと、
またまた不要は配線がありました。
ということで、部品面の電源ラインと半田面のGNDを接続しているスルーホールをドリルの刃で削って、導通を遮断します。


導通部分を発見!ドリルの刃で削ってスルーホール部分を削除です。

気をとりなおして再度電源ON!

こんどはI2Cエラーがでています。表示の様子から場所はすぐに、特定できました。
なんど修正したIOエクスパンダー(IC4)でした。じつは修正そのものが間違っていて、
修正する必要がなく、単にI2Cアドレスの間違いだけでした。
ということで、修正したところ再度修正して、もとに戻します。
あとはソフトのアドレス定義を修正です。IOエクスパンダ(IC4)のアドレスをEEからECに変更で完了。


まだI2Cエラーが発生しています。



修正したところを再度修正(元にもどっただけです)。


まずは部分的に動作確認!

再度電源を投入して、予定の動作をしていることを確認しました。
そしてSPDIFに信号をいれてDIX9211が無事動作していることも確認しました。
PCMラインに所定の信号がでていることを確認しました。

まずは部分的なテストプログラムは動作しました。


LR信号(48kHz)
まずはDIX部分は動いているようです。

つぎは一気にAK4137の動作確認です。

PCM入力(I2Sフォーマット)でDSD出力をする場合の設定についてすこし整理してみましょう。
以前にどうやったのか完全に忘れてしまったので、思い出しながらの作業です。

まずはレジスターの設定

R adrs デフォルト 設定値
00H Reset&Mute 01H 01H とくにこれはPCMでも変更することはないでしょう。
01H PCMCONT0 12H 13H 入力をI2Sに変更。
02H PCMCON1 00H 00H いづれも触る必要はないでしょう。
03H DSDICONT 10H 10H PCM入力なので変更なし。
04H DSDOCONT 50H 51H DSDの出力イネーブル
05H DSDGAIN 02H 02H これも変更なし。
06H DSDOSTATUS RD RD RD ONLY

外部入力の設定

ODIF1 PCMでないのでとりあえず無視
ODIF0
OBIT0 PCMでないのでとりあえず無視
OBIT1
CM0 MASTER
MCLK 256FSO
CM1
CM2
CM3

プログラムを書いて動かしましょう!

DSD出力ポートから所定の周波数がでていることを確認しました。
まずは2.822MHzに設定です。いわゆる64fsモードです。

 
BCLK信号です(f=2.822MHz)           データはみただけではわかりません(笑)。

DSD信号を確認するためにDACに接続します。まずはDAC179X-2.1に接続です。
問題なく出力を確認しました。


テストの様子です。DAC179X-2.1に接続してます。


無事出力がでました。

さて、基本的な動作は確認できたので、ソフトを組んでいきましょう!

ようやく着手 2016.1.30

ここ数ヶ月は平日は仕事で、週末は帰省や移動日の関係でなかなか趣味にかかることもできませんでしたが、
ようやく時間がとれそうなのでソフト作成に着手です。
でも、しばらく離れるとすっかり忘れちゃいますね。やっぱり、やるときは集中的にやらないとだめですね。

まずフロントパネルは

入力と出力の情報と、外部設定の状態を示しています。
MC24.58はマスタークロックが24.58MHzであることを示しています。
64は64FSモードであることを示しています。

フロントパネル案です。

一気にソフトを組みました。

現時点ではこんな感じの構成です。

Menu # 表示 内容
Front
Page


入出力状態を表示。

(1)入力表示
RX0,RX1,RX2,RX3,
PCM0,PCM1,PCM2
DSD0,DSD1

(2)入力周波数表示

(3)出力表示
 PCM,DSD

(4)動作モード(3#で設定)

(5)マスタークロック表示
 (2#で設定)
1 AK4137へ供給するマスタークロック周波数を設定します。
2 AK4137へ供給するマスタークロック周波数を設定します。

MC0:49.15 (MHz)
MC1:45.16
MC2:24.58
MC3:22.58
MC4:12.29
MC5:11.29 (default)
MC6:6.144
MC7:5.645
MC8:3.072
MC9:2.822
3 AK4137の動作モード(OMCLK input)を設定します。

fs=64
fs=128
fs=256(default)
fs=384
fs=512
fs=768

PCMの出力周波数は2#のマスタークロック周波数と、3#の動作モードの組み合わせで決まります。
4 PCM出力のフォーマットを設定します。

LSB-Justified
I2S Philips FMT (default)
MSB-Justified
5 PCM出力ビット数を設定します。

32Bits(default)
24Bits
20Bits
16Bits
6 AK4137のFIR1のディジタルフィルタの特性(1)を設定します。

Sharp roll-off
Slow roll-off
7 AK4137のFIR1のディジタルフィルタの特性(1)を設定します。

Normal Delay
Short Delay
8 PCM出力のサンプリング周波数を設定します。カットオフ周波数で表しています。

Cutoff 20kHz
Cutoff 40kHz
Cutoff 80kHz
Cutoff 100kHz
9 AK4137 DSD INPUT FS SELECT

64fs
128fs(default)
256fs
10 AK4137 DSD OUTPUT FS SELECT

64fs
128fs(default)
256fs
11 DSD Clipping process

No Clipping
Clipping -6dB(default)
Clipping -9dB
12 DSD OUT block in data Gain -6dB

-6dB ON(default)
-6dB OFF
13 DSD IN Gain 6dB

6dB ON
6dB OFF(default)
14 PCM0入力のフォーマットを設定します。

32Bit LSB-Just
24Bit LSB-Just
32Bit MSB-Just
I2S Philips FMT (default)
15 PCM1入力のフォーマットを設定します。

32Bit LSB-Just
24Bit LSB-Just
32Bit MSB-Just
I2S Philips FMT (default)
16 PCM2入力のフォーマットを設定します。

32Bit LSB-Just
24Bit LSB-Just
32Bit MSB-Just
I2S Philips FMT (default)

特性をみてみよう!

1.まずはPCM出力

このSRC4137の特徴はマスタークロック(MC)周波数とFSの組み合わせで多彩な周波数出力に対応しています。
データシートでも768kHzまでが動作しますが、本基板でもマスタークロックを49.152MHzに、FSを64に設定すれば768kHzに
対応可能です。
 下表に、マスタークロックとFSの設定による周波数の一覧を整理してみました。



動作はR-2Rで確認

1。PCM→PCM
768kHzで動作確認しようとすればR-2Rが唯一の候補としてあがってきますので、これで特性をみてみましょう!


こんな感じでR-2Rと接続しています。

入力に44.1kHzサンプリングで20kHzのサイン波をいれて出力を確認してみましょう。
流石にfsが高くなると、20kHzの高い周波数でもうまく波形が補完されています。

マスタークロック
2#
fs値
3#
出力fs
(kHz)
出力波形(R-2R)
49.152MHz 768 64
512 96
384 128
256 192
128 384
64 764

2.PCM→DSD

DSD出力時時の周波数は下表のようになります。一応、黄色がカタログスペックでの動作範囲ですが、
それ以外でも動きそうです。といっても24MHz以上の出力になった場合に、受付可能なDACがあるかどうかが疑問ですが。


さて、この表から出力5.6448MHzで出そうとした場合の組み合わせで、どのような出力になるか見ていきましょう。
入力はPCMで1kHzのサイン波を入力しています。


DSD入力のDACにはDAC179X-2.1を使用しています


設定の違いで、波形の違いがでるかとおもいましたが、ほとんど違いはないようです。

MC
2#
FS SEL
3#
DSD OUT
10#
波形
45.1584 512 64
22.5792 256 64
11.2896 512 256
11.2896 256 128
11.2896 128 64
5.644 256 256
5.644 128 128


すこし機能を追加しました。 2016.2.3


ここまで追加するとプログラム占有率は96%になりました。

あれ?19#の綴りが間違っていますね。修正しなくっちゃ!

Menu # 表示 内容
17 De-emphasisを設定します。
OFF(default)

48.0kHz
32.0kHz
44.1kHz
18 AUTO INPUT SOURCE CHANGE MODE

MODE OFF(def)
MODE ON
19 SOFT MUTE FUNCION
クロックの切り替えや入力の切り替え時のポップノイズを極力防ぐために、MUTEをかけます。ONで機能します。

FUNCIOTN ON
FUNCIONT OFF

ついでに、基板バグのデータを修正して再製作にかかりました。
来週あたりにはリリースできるかな?

マニュアルも完成(かな?)

一応できました。こんなかんじです。→ SRC4137Manual.pdf

マニュアルに記載はありますが、ざっと機能をおさらいです。


回路構成です。

・入力部(DIX9211およびロジック)
4系統のSPDIF入力ならびに2系統のPCM入力はDIX9211により信号処理されAK4137(SRC)に送信されます。
2系統のDSD入力についてはロジック回路にて選択され、AK4137に送信されます。なおDSD信号のBCK信号
はPICマイコンに接続され、周波数の判定をおこなっています。


SRC部(AK4137)
  SRCは入力信号を受けて、サンプリングレートならびにフォーマット(PCM/DSD)を変換して出力します。
出力信号はドライバを介して外部に出力されます。このとき、出力端子はPCMとDSDに分離して出力しています。

・クロックジェネレータ
 SRC(AK4137)の動作に必要なクロックを供給します。クロックは44.1kHz系としての45.1584MHzと48kHz系の
49.152MHzの2系統をもち、それぞれを1/1〜1/16分周したクロック出力をSRCに供給することができます。
すなわちSRCは49.152〜2.8824MHzのマスタークロックで動作することが可能で、これが多彩なサンプリング
レートへの変換を可能にしています。

・制御部
 PICマイコンで全体の機能を制御しています。DIX9211ならびにAK4137へのパラメータは基板上のパラメータ
設定用スイッチ(SW1〜4)を用いて設定します。なお設定内容の確認にはLCDが必要になります。設定内容に
ついてはPIC内のEEPROMに記録していますので、電源の再投入時の再設定は不要です。


リリースは?

V2基板が出来上がるのが2月13日の予定なので、動作確認後でリリースは2月14日(月)を予定しています。
需要あるかどうかわかりませんが、部品の手持ちも少ないので、準備期間を考えて受付け開始させていただこうかと
思います。

基板が予定通り出荷されるといいのだけど・・・・。

リリース基板到着 2016.2.15

パターンとシルクを修正したV2基板ができました。

V2基板ができました。

念のため、部品を実装して動作確認です。今回の実装では電解コンデンサはすべて大容量のセラミックコンデンサ(10uF/25V)に
してみました。これで、寿命はぐんと延びるはずです。

動作確認のため、部品を実装しました。

電源を投入しましたが、問題なく動きました。パターン修正は問題ないようです。

修正基板は問題なく動作しました。


ようやくリリースしましょう。

リリース用のPICです。さかさまについています。

(PART3へつづく)