PCからBULK転送によるインターフェース2010年5月号の付録SH-2A基板を使ったUSBオーディオの再生実験 PCM1702をドライブする

先回はPCから直接オーディオデータをUSB接続によるバルク転送でSH -2A基板に送って、16BITデータでI2S接続のDACCを再生する実験をしてみた。今回は、20BIT DACのPCM1702を2個(左右チャンネル用に2個)ドライブする実験をしてみた。原理的には、24BIT DACのPCM1704も駆動できるはずであるが、実際に実験していないのでうまくいくかどうかは分からない(DATA出力の有効ビット数がお尻から20 ビットと24ビットと違うので、この点の変更は必要)。


仕組み
PCM1702は1チャンネルDACである。
もともとのSH-2AのSSI出力は2個以上の複数のDAC出力を想定していて、1個だけのDAC出力はサポートしていないようである。そこで、SSI上 では別々の扱いであるCH1とCH2の2つのデータをあわせて、1個の32BITデータとしてこの32BITのデータ領域に下位ビットから20BITビッ ト分にWAVデータを入れることにした。
PC側のソフトからは、24BITのWAVデータとして送られてくるので、1MBの大容量RAM(の半分の 24bit/32bit)の領域に一旦データを取り込んで、更に、下位ビットから20BIT有効の32BITデータに再配置する。その再配置したデータ を、SSIにDMA転送する。
SSI1とSSI2の出力に、左右チャンネル用に2個のDACをそれぞれ接続する。(WSとCLOCKは共通に使う。)PCM-1702のLATCHロ ジックにあうように、WSを設定する。2つのSSIの同期をとるため、SSI2をマスターとしてSSI1はそのスレーブとして動作させた。

STOP BIT によって、サンプリング周波数を44.1KHz(叉は48KHz)の1倍、2倍、4倍に設定したり、PC上でそれぞれのWAVデータを準備して送るのは、先回と同じ。



回路
CQ出版社のオリジナルのSH-2A基板を下図のように改造する。BCKを32clockにする都合上、DAC用の発振子は256fsの水晶を使用した。SSICLKは周波数が高い信号ラインのため、外部からのノイズに影響を受けて誤動作するので注意が必要だ。

sh2-a board

追加した赤色LEDと橙色LEDは、SSI2,SS1のDMA転送の状態を示す。このLEDが点滅しているときには、各SSIのDMAは動いていることになる。

pcm1702

PCM1702(PCM61やPCM1704も)はマイナス電源も必要で、プラス側も基本5V設計のICなので、USBバスパワーからの電源供給はあきら めて、素直に、PCM1702とヘッドフォンアンプ用の電源として 外部にAC電源回路(DC±8Vを出力する)を準備した(作った)。


ソフト
雑誌インターフェイス関連のサイトにあるサンプル・プログラム sh7264_usb_function_sample.zip を元に、
SSI出力などの修正追加をしたものである。 
 データが異常になってノイズや音無しの状態が発生したり、叉、DMAが起動しなっかたり、動作は不安定である。何度か、待機と設 定を繰り返していると、正常に音が出るケースがある。どうやらDMAの動作が上手くいっていないようである。 DMAの一方(3番の方)に異常があって DEI割り込みが継続しない場合(DMAが止まっているように見える状態)は、リカバリーをかけるようにした。しかし 動作異常は完全には直らない。

参考用:更新作成したソースファイル

PC側のWAVファイルを読み込んでBULK転送するソフトは先回のものと同じものを利用する。


感想
PCM1702の音をTDA1541Aのものと比べると、TDA1541Aでは気づかなかった小さな音が聞こえる。 20ビットのリニアリティーがうまくいっているせいかもしれない。 PCM1702の音には色気が感じられないとおっしゃる人もいるようだが、この点は、普段聞いているせいもあるがTDA1541Aの方がいい。

設計の参考になる資料

致命的な問題

①音が雑音または異音・無音となってしまう。WAVデータをSSIレジスターへ32BITデータにおくる過程のどこかで、データ破壊(例えば、1バイトずれる)が発生しているようだ。 

STOP BITを0に設定して一度待機状態してから、また、設定することを 何度か繰り返すと、正常な音として再生できる場合がある。

②片方のチャンネルのSSIへデータを送るDMAが正常に動作しないことがある。DMAを2チャンネル同時に駆動に成功していないようだ。 

③PCからSH-2A基板へのバルク転送中に、バルク転送が途中で失敗して、待ち状態になってしまう症状が発生する。 これは、何らかの原因で、規定され たデータ数(393216バイト)の一部(例1KBの不足)叉は全部を受け取れなかったときに発生する。 待ち状態しつづけることを回避するリカバリーソ フトを入れたが、正常に戻るまでの数秒間は、雑音になる。これの現象が発生するのは、PCの動作中の状況にも依存するみたいだ。




警告
SH-2A基板をつかって接続する場合は、電気的なことをよく理解した上でお 使いください。そうしないと、PCやその基板と接続した相手などを破壊する危険があります。
供給元が違うVBUS+5V同士を接続すると、電源が喧嘩をして破壊する恐れがあります。供給元が違う電源は一緒に接続しないように。

PCM1702のための(外部)電源がオフの状態で、PCM1702に信号を入れるとPCM1702やSH-2A側も破壊する危険があります。電源の入れ方と切り方の順番を考えましょう。


免責
(1)回路図やプログラムやデータの使用により、使用者に損失が生じたとしても、その責任 を負いません。
(2)回路図やプログラムやデータにバグや欠陥があったとしても、修正や改良の義務を負い ません。