SH-2A 基板 (6)
CQ-FRK-SH2A 基板で SPDIF 経由のサンプリング周波数 44.1 kHz のディジタル・オーディオ信号を扱うには、その 512 倍の 22.5792 MHz のオーディオ・クロックが必要になります。
ググってみたところ、この周波数の水晶振動子を、
- 納期がかからず
- 妥当な価格で
- 1 個から買える
ところはないようです。
そんなわけで、手持ちの古い ISA バスのサウンド・カード (Creative の Sound Blaster AWE 32) に実装されていた、 1024 fs に相当する 45.1584 MHz のクリスタル・オシレータを取り外して利用することにしました。
45.1584 MHz を D-FF (74AC74) で 2 分周して 22.5792 MHz を作り出して、AUDIO_CLK 端子に入力し、サンプリング周波数 44.1 kHz でのテストを行い、期待通りに動作しました。
オシレータ部の写真を下に示します。
ちなみに、サトー電気では、サンプリング周波数 44.1 kHz 系列の水晶振動子としては、下の表のように、
周波数 (MHz) |
倍率 | 単価 (円) |
外形 |
---|---|---|---|
11.2896 | 256 fs | 126 | HC49US |
16.9344 | 384 fs | 126 | HC49US |
33.8688 | 768 fs | 168 | HC49U |
の周波数のものを普通の価格で扱っていますが、肝心の 22.5792 MHz はありません。
「RS オンライン」では、エプソントヨコム製の 22.5792 MHz の SMD 水晶振動子を単価 249 円で扱っていますが、少し割高です。
また、表面実装用なので、CQ-FRK-SH2A 基板に直接に実装するには工夫が必要です。
「チップワンストップ」では、京セラ製の SMD 3.3V クリスタル・オシレータ 4 種を、いずれも単価 875 円で扱っています。
その他、オーディオ・マニア向けに、1 ppm 程度の高精度のクリスタル・オシレータ・モジュールを 6000 円近い価格で販売しているところもあるようです。
比較的最近、といってもちょっと前の Envy24 使用のサウンドカードでは 22.5792 MHz が使われているようです。
私の場合は、はじめに書いたように、古い ISA バスのサウンドカード上の 45.1584 MHz オシレータを利用することにしましたが、同じ Creative でも集積化が進んだ Sound Blaster AWE 64 Gold には、その周波数のオシレータは使われていません。
次に、レジスタに対してプログラムで設定すべき項目を述べます。
まず、オーディオ用の外部クロック入力である「AUDIO_CLK」ピンは、PE0 や nIRQ0 などと同じピンに割り当てられているので、使用する前に GPIO レジスタを操作して AUDIO_CLK 入力が有効になるように設定する必要があります。
それに加え、シリアルサウンドインターフェースや、SPDIF モジュールではオーディオクロック選択のためのビット「CKS」を AUDIO_CLK を表す「1」に設定しておきます。
さらには、サンプリングレートコンバータも使用しているので、コンバータ出力のサンプリング周波数の設定のためのビット「OFS」も 44.1 kHz を表す「0」に設定します。
これらの設定をまとめると、下のリストのようになります。
// AUDIO_CLK input setup (PE0/nIRQ0/AUDIO_CLK on CN2-29) PORT.PECR0.BIT.PE0MD = 2; // PE0 = AUDIO_CLK // Serial Sound InterFace 2 Audio clock selection SSIF2.SSICR.BIT.CKS = 1; // for AUDIO_CLK // S/PDIF Audio clock selection SPDIF.CTRL.BIT.CKS = 1; // for AUDIO_CLK // Sampling Rate Converter 0 Output fs seletion SRC0.SRCCTRL.BIT.OFS = 0; // for 44.1 kHz