昨日まででSCD-XE600単独での再生が確認できましたが、いくつか微調整を行いました。
・モード設定レジスタの初期値をデザイン毎に個別指定 SACDP DSD ADAT転送ボード、MatrixSW、モバイルDDC、各々のモードでの通常設定値は異なるので、通常設定値が初期値にできるように変更。
今回は、SystemVerilogのInterfaceで初期値を外部モジュール(使用形態毎の別ファイル)で設定するようにしてみました。
・SDカードプレイヤー用設定/ステータスレジスタ別モジュール化
SACDP DSD ADAT転送ボードには、必要ない機能であり、またレジスタモジュールが結構大きくなってきたので、分離しました。
・クロック自動切替え機能
MatrixSWから
11.289600MHz クロックを供給して動作しますが、MatrixSWからのクロック供給が無いとき、SCD-XE600が動作できなくなるだけでなく、その後クロック供給が復旧しても正常に動作しないようです。
MatrixSWからのクロック供給が無い場合、SACDP DSD ADAT転送ボード内のCXOを元に11.289600MHz をSCD-XE600基板に供給できるようにしないと、立ち上げ手順が必要になるなどいろいろ使い勝手が悪くなります。
今回はCycloneIVのPLLのクロック スイッチオーバー機能を使いました。2つのクロックソースを切り替えられる機能です。この機能は、自動とマニュアルがありますが、どちらも選択中のクロックソースが正常ならば、選択中のクロックを選択し続け、MatrixSWからのクロックが断状態から復旧してもスイッチオーバは発生しません。
clkbad0およびclkbad1という各入力クロックの状態を示す信号と、Activeclockという選択中のリファレンスクロックを示す信号により、ボード内のCXO選択中にclkbad0が"0"(正常)になったら、clkswitchというクロックマニュアル切り替え信号をアサートするロジックを追加しました。
これにより、MatrixSWからのクロック供給が無いときは、ボード内のCXO、MatrixSWからのクロック供給があるときはMatrixSWからのクロックを選択して、PLLが同動作し、11.289600MHz、 22.579200MHz 、 90.3168MHzを生成します。
実際にMatrixSWからのクロック供給が無い状態で、SCD-XE600の電源スイッチをOFF⇒ONさせても正常に起動し、その後にMatrixSWからのクロック供給を行うとリファレンスがMatrixSWからのクロックに切り替わるようになりました。
クロックスイッチオーバー回路
下図が現状の構成です。未だL/Rチャネルだけで5.1ch転送はサポートできていません。
SACDP DSD ADAT転送ブロック図
このあと、MatrixSWと接続し、MatrixSWに接続したBuffaloIIでの再生もできることまで確認しました。
もうひとつ、DE0-nanoのUSBコネクタを引き出せるようにしたいので、
SCD-XE600 の右側面カバーに丸い穴を開けました、位置をかなり雑に決めたため結構ずれてしまい、シャーシパンチで穴を広げてなんとか挿せるように..orz
DE0-nano USBコネクタ用ホール
とりあえず一段落、そのうち5.1ch転送も作り込みます。