FPGA 版 FM 音源

FPGA 版 FM 音源 (28) -- 49 kHz → 44.1 kHz サンプリング・レート・コンバータ (1)

YMF262 (OPL3) などの、マスタークロックに NTSC 色副搬送波周波数 (の 4 倍) の 14.31818 MHz を使う FM 音源チップ (以降「14 MHz 系 OPL3」と略記) では出力サンプリング周波数はマスタークロックの 1/288 の 14.31813 [MHz] / 288 = 49.7159 [kHz] にな…

FPGA 版 FM 音源 (27) -- YMF262 インターフェース回路 (1)

久しぶりに YMF262 (OPL3) の挙動を観察しようと、以前に作成した SH-2A とのインターフェース回路 (→こちらの記事) を取り出してきたら、うまく動かなくなっていました。 SH-2A ベースボード上は YMF262 専用ではなく、AC97 コーデックなどの他の回路も載っ…

FPGA 版 FM 音源 (26) -- EG シミュレーション (2)

FPGA (無印 Cyclone) 上にインプリメントした回路のトップ・レベルのブロック・ダイアグラムを下に示します。 実際には 2010 年 12 月 2 日の記事 (→こちら) のトップ・レベルの回路図に追加して実現しています。 もとの回路のゲート信号発生用カウンタと、…

FPGA 版 FM 音源 (25) -- EG シミュレーション (1)

約 3 年間放置していた「FPGA 版 FM 音源」を再開しました。 アタックとディケイのみを実装した EG を Verilog-HDL で書いて「ModelSim」でシミュレーションを行い、以前の記事の C プログラムでの実現と同様の結果を得ました。 アタック/ディケイ・タイムが…

FPGA 版 FM 音源 (24) -- YMF262 測定 (16)

エンベロープ・ジェネレータ・シミュレータのスケッチ "EG.pde" を下に示します。 16 MHz クロックの ATmega328P を使用した Arduino 互換ボードと、Arduino 0022 IDE 環境でコンパイルして確認してあります。 スケッチのバイナリ・サイズは 4 KB 程度なので…

FPGA 版 FM 音源 (23) -- YMF262 測定 (15)

前回の EG プログラムを Arduino 上の「スケッチ」として実現してみました。 スケッチ自体は長くなるので、次回に回し、今回は簡単な説明のみ行います。 今回は、「音」や「EG 波形」の出力をメインに考え、Arduino に接続したノン・オーバーサンプリング・…

FPGA 版 FM 音源 (22) -- YMF262 測定 (14)

ソフトウェアや FPGA で EG を実現する場合、必ずしも実際のチップである YMF262 の EG 出力波形を全く忠実に再現する必要はありません。 基本的な構成は踏襲するとしても、リソース削減の要求は強くはないので、リソースが多少増加しても性能の向上を目指し…

FPGA 版 FM 音源 (21) -- YMF262 測定 (13)

アタックからディケイへ変化するだけの、単純なエンベロープを発生する C プログラムのリストを下に示します。 アタック・レート (AR) を 15 から 11 まで、Rof を 0 から 3 まで変えながら、それぞれの設定のアタック・ディケイ・カーブを EG アキュムレー…

FPGA 版 FM 音源 (20) -- YMF262 測定 (12)

アタックやディケイ/リリース・レートが「13」以上の場合を「ハイ・レート」、「12」以下の場合を「ロー・レート」と呼ぶことにします。 ハイ/ローにより、エンベロープの計算方法が変わります。 ハイ・レートでのアタック計算回路の概念図を下に示します。 …

FPGA 版 FM 音源 (19) -- YMF262 測定 (11)

AR が 13 以上の速いレートでのアタック・カーブを検討してみたところ、 13 未満のレートの計算では EG アキュムレータを常に 3 ビットシフト (1/8) して 1 の補数で減算しているのに対し、 AR = 13 では、3 ビットシフト (1/8) と 2 ビットシフト (1/4) の…

FPGA 版 FM 音源 (18) -- YMF262 測定 (10)

今回は、アタック・カーブを「数値」として細かく検討し、計算回路を考えます。 lb ドメインで単純に直線を発生させればいいディケイ/リリースと違って、アタックの発生には、何らかの「演算」が必要になります。 最も簡単には、「結果」の値を ROM テーブル…

FPGA 版 FM 音源 (17) -- YMF262 測定 (9)

今回は、主にアタックの「波形」について述べます。 まず、AR = 13、Rof = 0 の設定での (リニア) 出力値のグラフを下に示します。

FPGA 版 FM 音源 (16) -- YMF262 測定 (8)

ディケイ/リリースの DR/RR = 12 以下の減衰時間の長いほうに関する回路については、ほぼ、推測できました。 DR/RR = 13 以上の減衰時間の短いほうに関する回路については、まだ、不明確ですが、そろそろ、アタックの話に移ろうと思います。 その前に、1 月 …

FPGA 版 FM 音源 (15) -- YMF262 測定 (7)

ディケイ/リリースのエンベロープのカーブは DR/RR の値が大きくなると水平方向のステップ幅が狭くなる形となり、RR = 12、Rof = 3 では、水平方向に 1 ステップ幅と 2 ステップ幅とが混在する形となります。 この組み合わせまでは、2 種類の水平方向のステ…

FPGA 版 FM 音源 (14) -- YMF262 測定 (6)

Rof = 1、2、3 の場合のエンベロープ出力波形は「レート・マルチプライア」(rate multiplier) を使って実現できることが分かりました。 C プログラムで同様の出力を再現できました。 DR / RR = 1、Rof = 1 の場合のエンベロープ波形をキャプチャし、波形編集…

FPGA 版 FM 音源 (13) -- YMF262 測定 (5)

WS = 0、つまり、普通の正弦波を発生する状態の波形発生部の概念的な回路構成を下の図に示します。 「サイン波 ROM」として 1/4 周期、つまり「アドレス入力」が 8 ビット (256 エントリ) のものを使い、ビット 8 の値でアドレス入力を反転することで 1/2 周…

FPGA 版 FM 音源 (12) -- YMF262 測定 (4)

YMF262 のエンベローブ・ジェネレータのディケイ/リリースの減衰部分の回路構成を概念的に示すと、下の図のようになると考えられます。 アタックからの遷移や、サステイン・レベルとの比較によるディケイ→リリースの遷移の機能は考慮してありません。 ここで…

FPGA 版 FM 音源 (11) -- YMF262 測定 (3)

今回はエンベロープ・ジェネレータ関係の測定です。 「F-NUMBER」は「MULT」倍され、「BLOCK」ビット・シフトを受けてフェーズ・アキュムレータの「増分」として使われます。 ここで、F-NUMBER を「ゼロ」に選ぶと、「MULT」と「BLOCK」の設定に関わらず、「…

FPGA 版 FM 音源 (10) -- YMF262 測定 (2)

前回の WS = 7 のエクスポネンシャル波形についての補足です。 「岩波数学公式」*1 第 II 巻、§47、pp. 246 に、この波形のフーリエ展開の公式を見つけました。 *1:森口繁一・宇田川「金圭」久(「金圭」は「金」へんに「圭」)・一松 信 著:「岩波 数学公式 …

FPGA 版 FM 音源 (9) -- YMF262 測定 (1)

いい忘れていましたが、前回の YMF262 回路では、ひとつのシリアル・データ信号線に 1 サンプリング周期内に 2 チャンネル分が出力されるデータのうち、1 チャンネル分だけをマイコン側でキャプチャしています。 SPI のスレーブ・セレクト信号を真面目に作成…

FPGA 版 FM 音源 (8) -- YMF262 回路 (3)

YMF262 まわりの回路の基板の写真を下に示します。 秋月の C タイプ・ユニバーサル基板上に回路を組み立て、SH-2A 基板のベースボード上に 20 ピンのヘッダ/コネクタを介して実装しています。 SH-2A のバスステートコントローラの端子に 12 本の信号線を接続…

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

S/PDIF 出力版 YMF262 回路は、新たに作成するハードウェア量が少なくてすむように、内蔵ペリフェラルとして S/PDIF モジュールを持つ SH-2A と組み合わせることにしました。 ベースボード上には、光送信モジュールも実装してあります。 48 kHz サンプリング…

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

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

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

前回の記事で述べた、 Windows 98 の MS-DOS コマンド・プロンプト上の DOS 版 FM 音色エディタで操作 S/PDIF 経由で別 PC で波形キャプチャ 時間軸反転および処理 という手順で求めた、RR (Release Rate) を 1 から 3 まで変えてプロットした結果を下に示し…

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

FM 音源プログラムでの EG (Envelope Generator) の処理は、処理量をなるべく減らすことに重点を置いていて、オリジナルの再現という点に関してはあまり考慮していませんでした。 そのため、現実の OPL3 チップ (YMF262) の特性の測定などは行っておらず。MA…

FPGA 版 FM 音源 (3) -- クロックの選定 (2)

前回、YMF715x (OPL3-SA3) でのマスタークロック分周比を「684」であると推定しましたが、明確にこの値を記してある資料を見つけました。 それは、タイトルが 「OPL4 YMF289D APPLICATION MANUAL」 という資料で、キーワード「OPL4」で検索するだけで pdf フ…

FPGA 版 FM 音源 (2) -- クロックの選定

YAMAHA の OPL 系列の FM 音源チップのうち、データシートの pdf が入手可能なものについて、チップに外部から供給するマスタークロック周波数と、サンプリング周波数との関係についてまとめると、下の表のようになります。 ここで、サンプリング周波数や分…

FPGA 版 FM 音源 (1)

以前から、ハードウェア版の FM 音源を FPGA/CPLD を使って実現したいと思っていました。 詳細な検討はまだですが、なんとか行けそうなめどがついたので着手することにしました。 一挙に完成まで持っていけるわけではないので、不定期な記事になると思います…