AudioPCI(ES1370)デジタル出力改造


('98.11.26追加)
 今回のデジタル出力改造で、MCLK(128fs=5.6448MHz)をボード上から出力インターフェース回路まで引き出すところも、下記の”プチプチッ”ノイズの原因になり得ることがわかりました(^^;;; この高周波信号が、入力インターフェースからES1370への配線に重畳されてしまうらしく、入力インターフェースへの配線とMCLKの引き出し線とを近づけると、確実に”プチプチッ”音とテンポずれを録音した.WAVファイルに発生させられます(^^;;; よく考えてみたら、既に充分に周波数の高い回路なので、その実装が性能に影響を与える、というのは至極当たり前のことですね(^^;;; ES1370と入出力それぞれのインターフェースへの配線は、極力カップリングしないように最短距離で実装することが必須である、ということになりました。


('98.11.17追加)
 デジタル入出力インターフェースを作って、デジタル出力を機能させながらデジタル入力を行なうと、モニタ時には聞こえないのですが、.WAVファイルに録音した際に”プチプチッ”という雑音が入る場合があります。 私の場合には、PC内の+12Vから3端子レギュレータで降圧して+5Vを作っていたのですが、3端子レギュレータを3つ使って、レシーバ(CS8412)用/トランスミッタ(CS8402)用/TOSLINK用の3つの+5Vを独立にしても、最初の製作時には雑音が取り切れませんでした。
 最終的にわかったことは、CS8412へのTOSLINKからの入力の前に波形整形用として使っている74HCU04の未使用ゲートを、CS8402からTOSLINKへ出力するためのバッファとして共用すると、74HCU04のVDDにパスコンが入れてあっても、(恐らく74HCU04内部の電源線を介して)CS8412へノイズが入ってしまう、ということでした。 ですから、私のホームページに掲載してある回路図を利用して光レシーバ/光トランスミッタを作製される場合には、ゲートの数としては足りるのですがレシーバ用/トランスミッタ用の74HCU04は共用せず、別のチップを使って作られるようにしてください。


('98.11.17追加)
 nekoさんのBBSで、TC9231Nを使ったデジタル出力インターフェースだと、fs=44.1kHz以外の.WAVファイルでも44.1kHzで出力できる、ということが明らかになりましたので、自分でも作ってみたくなりました。 nekoさんhideさん、それにyo-heyさんのホームページを参考にさせていただいて、全く同じものを作ってみました。 確かに、44.1kHz以外の.WAVファイル(例えば、Win95の起動時のテーマ音楽等)が44.1kHzで出力されます。 どうしてサンプリングレートコンバータのような動作が可能なのかが未だに釈然としないのですが、データシートのブロック図を見る限り、44.1kHz出力用にTC9231Nに入力しているマスタークロック(MCLK)がDATA/BCK/LRCKとは独立に使われているようで(DATA/BCK/LRCKとMCLKとの間の時間的関係についても、データシートでは何ら言及されていない)、データ入力部とデータ出力部とが非同期で動作しているためにこのようなうまい動作が可能なの ではないか、と思っています。
 ですから、fs=44.1kHz以外のデータをデジタル出力すると、TC9231Nを使った出力インターフェースでは、44.1kHzに変換されて出力されていることになります。 これが、CS8402を使ったデジタル出力との大きな違いです。


 AudioPCI+CS8402で、デジタル出力が出来るようになりました\(^o^)/ nekoさんのご指摘に従って、CS8402のデータシートとAK4531のデータシートとを見比べた結果、ES1370の

    CBCLK2(60pin)とCLRCLK2(61pin)

の位相関係と、CS8402の

    SCK(6pin)とFSYNC(7pin)

の位相関係が全く逆になっていることに気が付きました。 そこで、CS8402のSCKにCBLCK2を入れる前に74HCU04で反転したところ、完全なデジタル出力を得ることが出来ました\(^o^)/\(^o^)/\(^o^)/

  これで、ES1370の.WAVファイルの出力I/Fには、CS8402をお勧めできます(^^;;;  他に必要なものは、74HCU04とパスコン、出力のためのTOSLINKだけです。



 CS8402の接続は、これでOKです:

             +5V 1    24 Gnd
             +5V 2    23 Gnd
             Gnd 3    22 Gnd
             Gnd 4    21 +5V
    ES1370の69pin(CMCLK1) 5    20 出力(TOSLINKへ)
 ES1370の60pin(CBCLK2)の反転 6    19 +5V
   ES1370の61pin(CLRCLK2) 7    18 Gnd
   ES1370の59pin(CSERDIN2) 8     17
             Gnd 9     16
             Gnd 10    15
             Gnd 11    14 +5V
             Gnd 12    13 +5V


 とても見やすい回路図は、UZIさんが書いて下さっていますので、それを参考にされるとよいでしょう。
私がBSch Ver0.58(岡田仁史さん作−NiftyServe FDEVICEにあります−)で書いた図はこちら。
出力改造工作例は、mackyさんのホームページUZIさんのホームページをご参照下さい。

('98.9.8追加)
 この接続で44.1kHzの.WAVファイルを正常に出力するためには、ES1370からのCMCLK1が128fs、すなわち5.6448MHzでなければいけません。 この状態は、nekoさんのHDRDを利用して、コントロールレジスタのビット13:12を(1:0)にすること−DAC1系のクロックを22.05kHzにする−によって実現できます。 ES1370のドライバではこの状態がデフォールトなので、通常はHDRDによる設定は不要と思います。(試しに、44.1kHzに設定すると、44.1kHzのデジタル出力がなされないだけではなく、DAC1系を利用しているMIDIファイルの再生が、1オクターブ上がった音になってしまいます(^^;;;)

 出来ることなら、MIDIファイルも出力したいと思うのですが、これは、BCLK/LRCLK/SERDIN全てを同時にDAC1系にしなければならない、 というお話なので、結構大変そうです。  何か、レジスタをいじってその結果がES1370から外に直接現われるようなビットがあれば、 それを使ってQuad 2入力セレクタ(74HC157)の制御して、同時に3回路切り替えることは出来るような気がするのですが。('98.9.4)

−−と書いたのですが、上のHDRDを使ったビット操作の実験から、どうやらES1370のMIDIファイル出力はfs=22.05kHzのような気がしてきました。 とすると、44.1kHz出力を実現するためには、サンプリングレートコンバータが必要になってしまいますし、元々このMIDIファイル出力が、10kHz位までの周波数特性しか有していないことになります。 これを出力してもあまり面白くないかも知れません。('98.9.8追加)


 ということで、ES1370とYMF724とで同じMIDIファイル(運命.rmi)を再生して比べてみました(^^;;; まず、ES1370はこのようになっています:



 続いてYMF724の場合です:

 全く同じ箇所を再生している訳ではないのですが、ES1370の場合は、10kHzより高い周波数はばっさりと切り取られてしまっています。 YMF724の場合はきちんと20kHzまで周波数特性が延びています。 ということで、耳で聞いた感じだけではなく、スペクトルを見てみても、YMF724のMIDI出力の良さがはっきり認識される、という結果になりました。 ですから、ES1370でのMIDI出力をあまり追求する必要はなさそうです(^^;;;



付録: 改造関係で必要なピンアサインのまとめ

● ES1370

(入力)
       MPEG_DATA:  49
       MPEG_BCLK:  52
       MPEG_LRCLK: 53

(WAVE出力)
       CMCLK1:   69
       CSERDIN2:  59
       CBCLK2:   60
       CLRCLK2:   61

(MIDI・A/D出力)
       CSERDIN1:  66
       CBCLK1:   67
       CLRCLK1:   68

(外部マルチプレクサ(HC4053)制御−T.Misakuさんによります−)
         XCTL0(MUTE)  47 ---> SA(11pin)/SB(10pin) : LINEin端子の入力/出力切替え
          XCTL1(XIRQ)  48 ---> SC(9pin) : MIC in端子へのBias(5V)印加

● YMF724

(入力−UYOさんによります−)
       MPEG_DATA:  120
       MPEG_BCLK:  122
       MPEG_LRCLK: 121

(48kHz S/PDIF出力)
       DIF:     123

(AC97インターフェース)
       CSDI:        116
       CSDO:        118