ソフト S/PDIF トランスミッタ (18)

ソフト S/PDIF トランスミッタ・プログラムを PIC32MX 用にも作りました。
DDA によるサイン波発生プログラム部分を含む CPU 負荷率は約 14 % で、

STM32F401: 6 [%] × 84 [MHz] = 5.04 [MHz]
STM32F407: 3 [%] × 168 [MHz] = 5.04 [MHz]
PIC32MX : 14 [%] × 36.864 [MHz] = 5.16 [MHz]

いずれの場合も約 5 MHz 相当の CPU リソースを消費しています。
fs = 48 kHz の 1 サンプル当たりでは約 100 クロックで、ステレオの片チャネル (1 サブフレーム) 当たりでは約 50 クロックで処理されていることになります。
PIC32 用の開発フレームワーク (ライブラリ) としては、新たに「MPLAB Harmony」が導入されつつあり、従来のペリフェラル・ライブラリ (plib) は将来サポートされなくなると明言されています。
最初は Harmony を使うつもりで始めたのですが、「Harmony Configurator」で DMA サポートを有効にすると、ライブラリ内部で「2 重定義」が頻発する事態となり、Harmony の使用はあきらめ、従来の「plib.h」を使用する形式にしました。
DMA 周りの設定は以前に作成した AC97 用のプログラムが、ほぼそのまま利用可能で、特に困難もなくソフト S/PDIF トランスミッタ・プログラムができました。
実は、「ソフト S/PDIF トランスミッタ・プログラム」を作っている目的は TX7 の音源チップの出力を 48 kHz S/PDIF でキャプチャする応用のためです。
ハードウェア S/PDIF 送信チップを使わずにマイコンだけで済まそうとしているので、28 ピンスリム DIP の「部品」として組み込める PIC32MX の方が「本命」と言えます。
ただし、5 V トレラント入力の数が少ないので、5 V 電源の音源チップのパラレル出力との間にレベル変換 IC が必要になるのが欠点です。