FM音源チップを動かしてみた(1)
YM2151(OPM)とYM2414B(OPZ)が出てきた。YM3012(DAコンバータ)も。2年くらい前に買ったような気がする。5個セット。本物か偽物か分からない。せっかくなので動くかどうか試してみた。YM2151の1つはデートコードが削られてる(今回のテストではこれだけが動かなかった)。
参考としたサイト
- あちこちに置いてあるYM2151のデータシート(YM2414Bはあまりないみたい?)
- YM2151の制御方法については以下からたどれるarduino-vgmplayerのプログラムを見てると分かる
- YM2151がYM3012へ出力する内容については以下からたどれるDAC出力フォーマットが詳しい
- YM2414BのSH2に2.2kプルアップを付けたら動いたという記事
- SO, SH1, SH2に瞬間的なノイズが入っていたが、5VとGNDの間にコンデンサを入れたら解決した。
配線
まずは電源つなげてリセットした直後の動作を観察することにした。次のように配線した。
1,11: GND 22: 5V 3: ~iC -> 10kΩでプルアップ(GNDに触れて離すことでリセットする) 5: ~WR -> 5V 6: ~RD -> 5V 7: ~CS -> つなぐの忘れてた! 24: ΦM -> 3.579545MHzのクリスタルオシレータ 以下は観察対象(DAコンバータYM3012への出力) 21: SO -> ロジアナch0(未使用3bit + 仮数部10bit + 指数部3bitの音声データ LR交互) 23: Φ1 -> ロジアナch1(1→0でSO・SH1・SH2が変化する 0→1でYM3012が読み取る) 20: SH1 -> ロジアナch2(1→0でLチャンネルの音声データ開始) 19: SH2 -> ロジアナch3(1→0でRチャンネルの音声データ開始)※ ※YM2414Bの場合、SH2は2.2KΩでプルアップ必要(後述)
観察結果
リセット直後の多分音が出ていない状態では、以下のような出力が延々と続いた。
- 上から順に、SO、Φ1、SH1、SH2
- 右と左の1サンプル分のビット列 001(未使用3bit) + 0000000001(仮数部10bit) + 100(指数部3bit) が見える(並び順はLSB→MSB)
- 仮数部1000000000、指数部001なので、サンプル値は0 ←DAC出力フォーマットより
- デートコードが削られた1つを除いて、4つのYM2151は全てこのような出力になった。
- 一方YM2414はSH2の出力がLのまま変化しない。試しに2.2kΩでプルアップしたら正しく変化するようになった。
本物と偽物
FM音源チップはニセモノが出回っているようだ。自分は本物と確信できるものを所持していないので真贋判別できない。果たして手持ちのチップは本物なのだろうか。「YM2151 偽物」で検索すると い ろ い ろ な 写真が見つかる。
ただし、見た目があやしくても動作した、という例も見つかる。
yfl711.hateblo.jp
ニセモノというより「互換チップ」なのかな?(12月4日と5日の記事)。以下のページには互換品リストへのリンクがある。いやでも互換品なんてヤマハが認めるものなのか…?
oykenkyu.blogspot.com
まとめ
手持ちのYM2151、YM2414Bは動きそうだということが分かった。次はnote onしたときの出力を観察してみよう。