FPGA 版 FM 音源

FPGA 版 FM 音源 (87) -- OPLx 実チップ上の ROM

以下のサイトで、YM3812 (OPL2) および YMF262 (OPL3) チップを「デキャップ」してダイ表面の写真を撮影し、ROM 内容を読み出したレポートが見られます。 Matthew Gambrell and Olli Niemitalo, 2008/04/20 OPLx decapsulated - Google ドキュメント これま…

FPGA 版 FM 音源 (86) -- TX7 (OPS) 測定 (13)

「ロー・レート」動作の上限、つまり、EG プリスケーラの設定が 1/1 になり、オクタル・レート・マルチプライアに fs レートのクロックが直接に入力される場合の rate99、rate63 の表を下に示します。

FPGA 版 FM 音源 (85) -- TX7 (OPS) 測定 (12)

検索ワード「FM音源 OPS レジスタ解析」でググると、 FM音源 EGS/OPSのレジスタ解析 と題された、作者不明の web ページが見つかります。 このページには、TX7 のファームウェアを解析して EGS/OPS のレジスタの仕様を探った結果が示されています。 …

FPGA 版 FM 音源 (84) -- TX7 (OPS) 測定 (11)

EG のアタック部分をプログラムで再現することができました。 やはり「ゴンペルツ曲線」でした。 (→参考記事) まず、アタック/リリースの「エンベローブ波形」をキャプチャしたものを再掲します。

FPGA 版 FM 音源 (83) -- TX7 (OPS) 測定 (10)

オペレータ出力周り、サイン波テーブルの仕様について調べています。 結論から言うと、サイン波テーブルは 1 周期 4096 エントリ、減衰量として格納されている 2 を底とする対数のフォーマットは整数部 4 ビット、小数部 10 ビットのようです。 1 周期 4096 …

FPGA 版 FM 音源 (82) -- TX7 (OPS) 測定 (9)

2014 年 5 月 6 日の記事 (→こちら) の OPM の EG 測定と同様に、正弦波出力のオペレータ 2 段による直列 FM で、下のグラフのようなピーク部分が平坦な「方形波」を発生させ、EG の動作を探っています。

FPGA 版 FM 音源 (81) -- TX7 (OPS) 測定 (8)

オリジナルの TX7 では源発振 9.4265 MHz を 192 分周した 49.09635 kHz がサンプリング周波数となりますが、SPDIF 出力化の改造では、サンプリング周波数を 48 kHz にするために源発振の水晶振動子を 9.216 MHz に換装しています。 それ以外のファームウェ…

FPGA 版 FM 音源 (80) -- TX7 (OPS) 測定 (7)

TX7 本体の操作では「音色」のエディットはできませんが、「INIT VOICE」機能でエディット・バッファ中の音色パラメタの「初期化」は可能です。 初期化後の音色パラメタ値を下に示します。 (2018 年 7 月 4 日追記: 「TP」パラメタの値の表示位置が間違って…

FPGA 版 FM 音源 (79) -- TX7 (OPS) 測定 (6)

今回はソフトウェアについて触れます。 まず、DMA チャネルの初期化部分のソースを下に示します。 16 ビット・パラレル・データ転送を 8 ビット DMA ふたつ (DMA_H, DMA_L) で実現しており、両者の内容はほとんど同じなので、代表として DMA_L の方だけを示…

FPGA 版 FM 音源 (78) -- TX7 (OPS) 測定 (5)

PSoC5LP Prototyping Kit と TX7 との接続図を下に示します。 (図をクリックすると拡大します)

FPGA 版 FM 音源 (77) -- TX7 (OPS) 測定 (4)

TX7 DAC データ・キャプチャのための内蔵ペリフェラルおよび「外部ハードウェア相当部分」の回路図を下に示します。 (図をクリックすると拡大します)

FPGA 版 FM 音源 (76) -- TX7 (OPS) 測定 (3)

4 年前の記事のタイミング・チャートを再掲します。 オリジナルの回路では、9.4265 MHz の水晶振動子による源発振を 2 分周して 4.71325 MHz の 2 相ノン・オーバーラップ・クロック φ1、φ2 を作り出し、YM2128 (OPS) および YM2129 (EGS) に供給しています。

FPGA 版 FM 音源 (75) -- TX7 (OPS) 測定 (2)

これは 2014 年 5 月 13 日の記事 (→こちら) の続きです。 (TX7 のオーディオ出力を S/PDIF でキャプチャできるようにする改造の話) 結論から言うと、PSoC5LP Prototyping Kit (CY8CKIT-059) を使って、16 音フルにキャプチャすることができました。 TX7 本…

FPGA 版 FM 音源 (74) -- FPGA 版 EG (18)

OPL3 のスロット・パラメタ・レジスタ・アレイは、アレイひとつ当たり 256 バイトのアドレス空間を占めています。 アレイ 0 とアレイ 1 とのふたつのアレイがあるので、合計では 512 バイトとなります。 これをホスト・プロセッサのアドレス空間にそのまま割…

FPGA 版 FM 音源 (73) -- FPGA 版 EG (17)

デュアル・ポート RAM を使ったレジスタ・アレイ・インターフェース部の Verilog ソースを下に示します。

FPGA 版 FM 音源 (72) -- FPGA 版 EG (16)

前々回の記事で述べたように、スロット・アドレスの割り付けには 8 バイト中に 2 バイトの「穴」(未使用領域) があり、これをどう扱うかで次の 3 つの方法が考えられます。

FPGA 版 FM 音源 (71) -- FPGA 版 EG (15)

Altera の内蔵メモリ・ブロック「M4K」では、名称に「4K」が含まれることから分かるように、ひとつのブロックで 4 K = 4096 ビットの容量を持ち、 1 ビット × 4096 ワード 2 ビット × 2048 ワード 4 ビット × 1024 ワード 8 ビット × 512 ワード 16 ビット ×…

FPGA 版 FM 音源 (70) -- FPGA 版 EG (14)

今回はスロット・パラメタ・レジスタ・アレイのホスト・インターフェース部についてです。 各スロットの発音パラメタは、継続的に該当タイム・スロットで「タイムリー」に供給される必要があります。 その一方で、ホスト側からのアクセスについてはなるべく…

FPGA 版 FM 音源 (69) -- FPGA 版 EG (13)

EG の本体回路だけでなく、周辺回路も含んで (無印) Cyclone にインプリメントした「op3_EG_cyc()」の Verilog ソースを下に示します。 モジュール名、ファイル名に含まれる「cyc」は「Cyclone」を意味しています。

FPGA 版 FM 音源 (68) -- FPGA 版 EG (12)

ステレオ 16 ビット・シリアル入力 DA 用送信モジュール「i2s_tx()」の Verilog ソースを下に示します。

FPGA 版 FM 音源 (67) -- FPGA 版 EG (11)

16 ビット入力 1 次シグマ・デルタ型 1 ビット DA モジュール「sdm1_16()」の Verilog ソースを下に示します。

FPGA 版 FM 音源 (66) -- FPGA 版 EG (10)

S/PDIF 送信モジュール「spdif_tx()」の Verilog ソースを下に示します。

FPGA 版 FM 音源 (65) -- FPGA 版 EG (9)

今回は対数 — リニア値変換モジュール「opl3_lb2lin()」についてです。 OPL3 では、サイン波 ROM や EG の出力は「真数」(リニア値) ではなく、 2 を底とする「対数」で表現されていて、対数値同士の加算後に対数 — リニア変換を行なうことによりハードウェ…

FPGA 版 FM 音源 (64) -- FPGA 版 EG (8)

2017 年 1 月 28 日付けの記事 (→こちら) の「周辺回路」部分の Verilog ソースを記載していきます。 まず、EG クロック・ジェネレータ・モジュール「opl3_EG_clk()」の Verilog ソースを下に示します。

FPGA 版 FM 音源 (63) -- FPGA 版 EG (7)

EG モジュールのトップレベル回路図「opl3_EG_top.bdf」を下に示します。 (図をクリックすると拡大します)

FPGA 版 FM 音源 (62) -- FPGA 版 EG (6)

EG スロット・メモリ・モジュール「opl3_EG_mem()」を回路図で表現したものを下に示します。

FPGA 版 FM 音源 (61) -- FPGA 版 EG (5)

EG コントロール・モジュール「opl3_EG_ctrl()」を回路図で表現したものを下に示します。

FPGA 版 FM 音源 (60) -- FPGA 版 EG (4)

EG アキュムレータ・モジュール「opl3_EG_acc()」を回路図で表現したものを下に示します。

FPGA 版 FM 音源 (59) -- FPGA 版 EG (3)

EG クロック・プリスケーラ・モジュール「opl3_EG_psc()」を回路図で表現したものを下に示します。

FPGA 版 FM 音源 (58) -- FPGA 版 EG (2)

もうずいぶんの間、YMF297 の測定の話からは離れており、この先しばらくは触れることもないので、今回から「YMF297 測定」をタイトルから外しました。 前回の回路では、EG モジュール内部の信号も引出していたのでピン数が 75 本と多く、100 ピンパッケージ…