FPGA 版 FM 音源 (6) -- YMF262 回路 (1)

YMF262 (OPL3) に fs = 48 kHz 動作となる 13.824 MHz マスタークロックを加え、出力ディジタル・データを S/PDIF 経由で出力するための具体的な回路の検討に入っています。
まずは、クロック関係のタイミングを実測してみました。
マスタークロック (φM) と、DAC (YAC512) へのビット・クロックである φSY との間の関係を下の図に示します。

φSY は φM の立ち上がりエッジから約 55 ns 遅れて変化します。 帯域 50 MHz のディジタル・オシロスコープを使用して測定したので、数値は正確ではありません。
スペック上のマスタークロック周波数の上限は 16 MHz なので、スペックの範囲では問題ありませんが、後述するように、 18.432 MHz クロック (相当) を加えた場合には、1 周期が約 54 ns となり、φSY のディレイ値 55 ns とほぼ等しい値なので、問題となる可能性があります。
実際にはわずかなディレイの変化でも、「周回遅れ」の効果で実効的なディレイがゼロをはさんで、プラス側にも、マイナス側にも変動する可能性があります。
φM クロックで φSY クロックをラッチする必要がある場合には、φM クロックの立ち下りでラッチしたほうがタイミング的な余裕があります。
φSY クロックは φM クロックを 8 分周したものとなっていますが、デューティーは 50 % ではなく、「H」レベルが φM クロック2個分、「L」レベルが φM クロック 6 個分のデューディー 25 % となっています。
YMF262 は DAC として YAC512 を使う前提で信号が出力されており、そのタイミング・チャートは YMF262 のデータシートの 5 ページに記載されています。
スペースの関係だと思いますが、φSY クロックのデューティーが 25 % であることが表現されていないことを除けば、かなり正確な表現になっています。
全体では長くなりすぎるので、Ch B、Ch D 周辺に限って表したのが下の図です。

1 サンプリング周期 = 288 φM で、φSY は φM を 8 分周したものですから、1 サンプリング周期 = 36 φSY で構成されます。
1 サンプリング周期で DOAB ピンからは Ch A、Ch B のシリアルデータ、DOCD ピンからは Ch C、Ch D のシリアルデータが出力されます。
したがって、1 チャンネルあたりでは 18 φSY クロックが出力されることになります。
シリアル・データのフォーマットとしては、LSB ファーストの 16 ビット・データで、数値の表現は 2 の補数ではなく、オフセット・バイナリになっています。 (16 進数表現「0x8000」が数値としてのゼロ)
データ・ワードの区切り、およびアナログ・サンプル・アンド・ホールド回路のゲート・タイミング、として使われる SMPBD / SMPAC 信号の立ち下り位置がデータ・ワードの MSB、つまりビット 15 の位置を示しています。
立ち上がりはビット 8 の始まりに位置していますが、これはビット 8 を示す目的ではなく、単に S & H のゲート・タイミング上で都合のいい位置であるためだろうと思います。
φSY と、各信号のタイミングを実測した結果の図を下に示します。

DOAB / DOCD は φSY の立ち上がりから約 13 ns 後に変化し、SMPBD / SMPAC は φSY の立ち上がりから約 8 ns 後に変化しています。
通常のシリアル入力ステレオ DAC インターフェースで使われる LRCK は下のような簡単な回路で発生できます。

ただし、YAC512 の発音タイミングは左右同時ではなく、左右のサンプルをどのように配置すれば通常のステレオ DAC 用に合うのか現在のところ不明なので、左右が合う保証はなく、単に LRCK タイミングの発生だけを考えたものです。