最近、基板を作る機会がめっきり減りました。
ちょっとした機能検討なら市販の評価ボードを買う方が安くつくからです。大規模なFPGAデバイスなどは、DigiKeyなどからチップを単体で調達するよりも、こういったボードを買ってしまう方がさらに安い、という場合すらあります。
ということで、死蔵しておりました、こんな基板を使ってSDカードトランスポートを作ってみました。
昨年、我が家からついに光ディスク再生装置が放逐されたのに伴い、CDプレイヤーの代替は必要になったからです。たまには、ネットワークや大げさなストレージにつながっていない、スタンド・アローンな装置がよいというのが気持ちの中にありました。
普及率はそれほど高くはないかもしれませんが、標準化を目指して策定されたであろう、Pmodコネクタというのが複数ついていて、オプションのMicroSDカードスロットなどを増設することができます(そうです。手を汚さずに)。
表示はAmazonで売っている1.3インチOLEDディスプレーモジュール基板(SPI 128×64)を採用しました。こちらはPmodに非対応なので、「手を汚して」取り付けました。
前振りが長くなりましたが、昨年後半に、私の良く使うFPGAメーカーであるXilinx社のFPGAに、Arm(アーム)社のCortex-M3/Cortex-M1(≒0)というマイコンがライセンスフリーで提供が開始され、早速これをArtix-7というFPGAに組み込んでみたかった、というのも大きな理由であります。要するに、FPGA用に暗号化されたソースコードの配布が始まった、ということです。
カードへはSPIでのアクセス(C言語と組込みファイルシステムを駆使)になりますが、カード読み出しの速度的に、DSD2.8MHzまでは大丈夫そうな感じです(趣味を兼ねた研究用途ゆえ、ダメならあきらめてしまえます)。
で、ひとまず44100Hz/16bitのWaveファイルは再生できているので、前回記事のSSDACも入れてDSD変換してやろう、と、手始めに(変換されるであろう)DSD2.8MHzにDoPフラグを付けて176400Hz/24bitのS/PDIFに変換する回路を入れて準備しました。SDIF-3出力などの硬派な出力を使わず、あえてS/PDIFなのはマニアの風上にも置けませんが、小型でそこそこ音が良いという理由で相変わらず愛用しているMytekの初代DACが、S/PDIFでのDoP-DSD2.8を受けられるので試してみたい、というのがあります。
しかし、果たして肝心のSSDACは動きませんでした。機能シミュレーションでは動作しているのですが、Artix-7向けにXilinxのツールで論理合成(回路化)してゲートレベル(実際の論理回路レベル)シミュレーションすると出力が変になってしまうのでした。皮肉なことに、というか当然ですが実機の動作ともそれは一致します。SSDACはAlteraのFPGAで動作確認されていますので致し方ないところです。自分が何かポカをやらかしている可能性も十分ありますが、仕方ないので当面放置です。
***2022/12 現在、Xilinxのデバイス上で動作することを確認しております。なお、工業所有権の申請中とのことですので、これ以上は立ち入らないことにします。