FPGA 版 FM 音源 (7) -- YMF262 回路 (2)

S/PDIF 出力版 YMF262 回路は、新たに作成するハードウェア量が少なくてすむように、内蔵ペリフェラルとして S/PDIF モジュールを持つ SH-2A と組み合わせることにしました。
ベースボード上には、光送信モジュールも実装してあります。
48 kHz サンプリングを実現するために YMF262 用として必要な 13.824 MHz クロックは、オーソドックスに PLL 回路によって発生することにしました。
PLL IC としては、以前に秋月で購入して、ずっと使わずにいた Elantec 社の EL4584 を使うことにしました。
この IC は、いわゆる 4 Fsc 「ゲンロック」(Genlock) 、つまり、色副搬送波の 4 倍の周波数を水平同期信号に同期させて作り出すためのものです。
水平同期周波数から 4 Fsc への「倍率」設定は、NTSC 規格、PAL 規格それぞれ 4 種の合計 8 種類が選べます。
その中で、PAL の水平同期周波数 15.625 kHz から CCIR 601 の 13.5 MHz サンプリング・クロックを作り出す 864 倍のモードを使っています。
   864 = 25 × 33 = 3 × 288
ですから、YMF262 でのマスタークロックからサンプリング・クロックへの分周比「288」が都合よく含まれており、サンプリング周波数 48 kHz / 3 = 16 kHz を比較周波数として EL4584 に入力してやれば、その 864 倍の 13.824 MHz 出力が得られることになります。
EL4584 は、分周器と位相比較器が集積されたもので、VCO とループ・フィルタは外部回路で実現する必要があります。
本来の用途の周波数が 13.5 MHz、ここでの出力周波数が 13.824 MHz と非常に近い値なので、データシートに示されている LC VCO 回路やループ・フィルタ回路の回路定数をそのまま利用して実現することができます。
実際、データシートの回路定数を使って、うまく動作しました。
回路図を下に示します。
16 kHz の比較周波数は、SH-2A オーディオ・クロックの 24.576 MHz を 1536 分周して得ています。
具体的には SH-2A の SSIF3 を使って、 SSIWS3 端子から 16 kHz クロックを出力しています。

SH-2A 内蔵の S/PDIF モジュールを使うためには、当然、YMF262 のディジタル出力を SH-2A 内部に取り込む必要があります。
SH-2A の入出力は 3.3 V 動作で、5 V トレラントではないので、SH-2A に入力する信号については、電源電圧を 3.3 V とした 74HC4050 を使って YMF262 / EL4584 の 5 V 系の信号から 3.3 V 系の信号に変換しています。
74HC4050 の入力回路には保護用の Vdd へのクランプ・ダイオードが含まれておらず、電源電圧より高い電圧を入力することができます。
最近の 5 V トレラントのロジック IC は表面実装タイプですが、ここではユニバーサル基板に手配線で製作するのに都合のいい、DIP タイプの 74HC4050 を使っています。
YMF262 のレジスタ・インターフェースは、ライト・オンリーとして、SH-2A 側から YMF262 側へは出力するだけにしています。
YMF262 の入力ロジック・レベルは TTL レベルで、VIH の最小値が 2.2 V なので、SH-2A 出力の 3.3 V CMOS レベルから変換せず、直結しています。
YMF262 のシリアル・データ出力を SH-2A に取り込むために SPI を使っています。
SH-2A の SPI モジュール (RSPI) では、スレーブ・モードで CPHA = 0 の設定では、スレーブ・セレクト信号のアクティブ・エッジから動作を開始し、規定のビット数の転送が終了したら (スレーブ・セレクトがネゲートされなくても) 動作を終了する仕様になっています。
したがって、16 ビット・データを取り込むのには、開始タイミングさえ合っているなら、きっちり 16 ビット幅に合わせたスレーブ・セレクト信号を作成する必要はありません。
それを利用して、シフトレジスタ (74HC164) で SMPBD 信号を 2 ビット遅らせただけの信号をスレーブセレクト信号として使っています。
ちなみに、CPHA = 1 の設定では、SPI クロックのエッジで転送が開始されるので、転送は一回限りではなく、SPI クロックとスレーブ・セレクト信号が続いている限り、自動的に転送を繰り返します。
YMF262 のレジスタ・アクセスには、SH-2A の「バスステートコントローラ」(BSC) のエリア 6 を PCMCIA モードにして使っています。
YMF262 は I/O として接続されるので、「I/O カードインターフェース」の設定でアクセスするのが適切なのでしょうが、I/O インターフェースとして接続するための信号ピンが、シリアル DAC と接続するための SSIF2 の出力ピンと重なっているので、ピンがバッティングしないエリア 6 のメモリーカードインターフェースとして設定しています。
結局、

  • D7 〜 D0
  • A1, A0
  • CS6/CE1B
  • WE1/DQMU/WE

の 12 本の信号線でインターフェースしています。