SH-2A 基板 (1)

SH-2A 基板が付属したインターフェース 2010 年 6 月号を入手し、「LED チカチカ」までは進みました。
この基板に搭載されている SH72620 には、

  • SPDIF 送信/受信モジュール (SPDIF)
  • シリアル・オーディオ DAC などの接続のためのシリアルサウンドインターフェース 4 チャンネル (SSIF0/SSIF1/SSIF2/SSIF3)
  • FIFO 付きクロック同期シリアル I/O (SIOF)
  • サンプリングレートコンバータ 2 チャンネル (SRC0/SRC1)

などのサウンド出力に役立つモジュールが集積されています。
サンプリングレートコンバータ以外では、動作クロックとしてオーディオ用外部クロック入力 (AUDIO_CLK) か、オーディオ用水晶発振回路入力 (AUDIO_X1) のいずれかを選択するようになっています。
したがって、オーディオ・クロック用のクリスタルの周波数の選択は重要になってきますが、本誌の記事での説明と、ハードウェア・マニュアルの記述が一致していないと思われる部分があります。
それは、記事/回路図ではオーディオ・クロック用クリスタルの周波数は、

  • 12.288 MHz (48 kHz サンプリング用)
  • 11.2896 MHz (44.1 kHz サンプリング用)

と 3 ヵ所で記述してあります。
しかし、ハードウェア・マニュアルの「ルネサス SPDIF インタフェース」の項の 22-31 ベージには

送信モジュールのクロックは、外部から供給されるオーバサンプリングクロックです。
このクロックは通常バイフェーズマーク方式のエンコードに必要なクロック周波数の8 倍の周波数でオーバサンプルとなる値を選択します。
この場合、サブフレーム内にある32 個タイムスロットの送信に必要なクロック周波数は、オーディオデータのサンプル周波数の512 倍となります。

という記述があります。
この記述にしたがえば、オーバーサンプリングクロック周波数は、48 kHz サンプリングに対して 24.576 MHz。44.1 kHz サンプリングに対して 22.5792 MHz となります。
これは本誌の記事での記述の 2 倍の周波数です。
SSIF および SIOF モジュールでは、オーディオ・クロックのプリスケーリング機能があるので、クロック周波数が 2 倍違っていてもプリスケーラの設定で吸収できますから問題にはなりません。
ハードウェア・マニュアルを見る限り、SPDIF モジュールにはプリスケーラの記述は見当たりません。
12.288 MHz のクリスタルは手持ちがありませんが、24.576 MHz のクリスタルは持っているので、これを実装して試してみました。
最低限、下に示すようなレジスタの設定をすれば、SPDIF 出力は動作を開始します。

    PORT.PFCR3.BIT.PF12MD = 5; // select SPDIF_OUT on PF12
    SPDIF.CTRL.BIT.TME    = 1; // SPDIF Tx Module Enable
    SPDIF.TLCA = 0x0000;       // L ch data
    SPDIF.TRCA = 0x0000;       // R ch data

この後にオーディオデータを書き込まなくても、バッファアンダーランエラーになりながらも、送信バッファに残っているデータを繰り返し送出するので、ずっと連続して「ゼロ」を送り続ける状態となります。
結論から言えば、24.576 MHz クリスタルを使って 48 kHz サンプリング・レートの SPDIF 信号が得られました。
私としては、手持ちの 24.576 MHz クリスタルで動作することが分かったので満足なのですが、記事の通りに 12.288 MHz / 11.2896 MHz クリスタルを買った人たちのことが心配です。
半分の周波数でも動作するような、何か「隠し設定」のようなものがあると良いのですが。