野鳥うぉっちんぐ

野鳥観察などなど

DSDプレイヤーを作ってみた

2014-02-16 21:50:43 | 工作
以前Mi-Take製DAC基板を用いてDACを作ったのですが、そのDAC基板はDSDネイティブ入力が出来るものでした。 なのでDSDネイティブ信号を出力出来る機器(安いもの)を探したのですが見つからず、唯一面白そうだと思えたエレアト基板も全然入手できなかったのであきらめていました。

最近、興味本位で購入したARM-CORTEX-A8の簡易開発基板(Tiny210)にDSDプレイヤーとして使える条件が揃ってることに気がついて自作にチャレンジしてみました。(過去SHで挫折してます・・)

必要条件
① 高速SDHC読み込み(最低でも1MByte/秒)
② 高速同期シリアル通信があること(SPIとかIIS)
③ 動作速度が速いこと

ARM-CORTEX-A8と言えばLinuxやAndoroidを動かすようなハイスペックCPUだけど、高速性を重視してあえてOSは使わないことにしました。

ARM-CORTEX-A8(サムスン:S5PV210)には、内部ROM上にSDカードをセクタ読み出しできるルーチンが組み込まれているため、そのルーチンを使ってSDアクセスするものとします。
これでデータ入力はOKです。
(もちろんファイルシステムなんて高級なものは使いません)

あとは出力です。
まずSPIを使って片チャンネルだけのDSD信号出力の原理実証実験です。
なんと簡単にDSD信号の出力が出来てDAC経由で音が出ました!!

次はSPIを2個使って両チャンネルの出力です。
CPUデータシートにはSPI2個と書いてるのに、簡易開発基板では1個のSPIしか端子出力されていないことが発覚・・・(汗)

さてもう1チャンネルの信号をどう出すか・・・。

そこでも思いついたのが以前購入しておいたFPGA(Machx02)を使うことでした。

具体的にはSPIの転送クロックを倍にして左右チャネルの信号を合成してFPGAに送り、FPGAでシリアル-パラレル変換をして入力クロックの半分のクロックでDACに出力するって方法です。
ここでマルツで9千円で購入したロジアナが大活躍してくれました。
(FPGAで遊ぶにはロジアナ必須だと思いました)

そんなこんなでようやく使えるレベルのソフトが出来ました。

やっぱ、DSDの音はいいです~!!
SDから読んで即DACに出力なので非常にシンプルです。
SPDIFやらUSBやらHDMIなどの謎のシリアル転送のお世話になっていないので精神衛生上的にもGOODです。





左からDAC、FPGA、本体(ARM)


アンプは「ぺるけさん」設計6BM8全段差動式アンプ


画面(一応、タッチパネルだけどタッチには対応してません)