ある日のことでございます。
・
[にょ] むむ・・ここは・・?
って、まさかこのパターンは!!
[???] 気が付いたかね?
[にょ] でたー! やっぱりー!
なんの用ですか!
[BOSS] ふむ・・FM音源ボード製造計画の進捗はどうなっているかね?
[にょ] 制御基板は予定通りです。ですが、音源基板の方が・・
[BOSS] 遅れている、とでも言うのかね?
[にょ] はっ。大幅に遅れております
[BOSS] なぜかね?
[にょ] FM音源チップがないんです。特にYM2151が調達できておりません
[BOSS] …なんとかしたまえ。いずれにせよ、計画の遅延は許されない
[にょ] えー( ゚Д゚)
・
・
ぬぅ。
なんとかしろですと?簡単に言ってくれるのです。
どこにあるっていうのですか。偽物ばかりなのですよー
しかも、なんかBOSS増えてたし・・
と、そんなやさぐれていた時です。
そういえば、YM2151をFPGAで再現した実装があったではありませんか。
イカビク氏(@RCAVictorCo)のIKAOPM(https://github.com/ika-musume/IKAOPM)でございます。
忠実にYM2151を再現した凄い奴なのです!
FPGAは使ったことがなかったりするのですが、なんとか挑戦してみることにします!
まずはFPGAは全然わからないので、公式のブレイクアウトボードというものを買ってみるのです。
これに組み込んでいくことにするのです。
初めてのFPGAでございます。
うまくできるのかしら‥
・
・
ひとまずできました。
Verilogわかんないのですが、検索しながらなんとかやってみました。
今回、使わない機能はオミットしました。
具体的にはチップからの読込周りをごっそりカットしています。
ついでにIRQ割り込みもカット。
どうせOPNAMシリーズでは使わないですし。
これをOPNAMシリーズに搭載してさっそく実験してみます!
しかしながらちゃんと演奏できるかの前に、電気的に壊れないか心配です。
なるべく頑丈なOPNAMに取り付けて確認することにします。
ちょうどいいのがありました!
軍用モデルならきっと頑丈に違いありません。
まずついているYM2151を取り外します。
さっそく取り付けてみるのです!
・
うし。
デモボードと音源ボードの2つにUSBケーブルを接続、両方に給電して演奏する必要があるのですが、ひとまず鳴っています。
ところで、今回FPGAの開発にはLatticeの純正ツールを使っているのですが問題点が。
・よくわからん警告がでる。警告名はソースには存在しない。
どうも利用状況に応じてペリフェラルのDSPなどが、自動的にコンパイル環境に追加されるようです。
追加されているのは見えませんけど。
で、そのソースが警告をわさわさ吐きます。
勝手に追加するのはいいけど、警告吐かないようにしてほしいのです。
・エラーレベルがERROR、CRITICAL、WARNING、INFO
CRITICALもバンバンでます。例によって何かのモジュールの。
でも、エラーじゃないので動きます。
そんなもんです?
・シミュレータが動かない
究極の問題です。どうも今年の頭辺りから添付されているシミュレータが入れ替わったみたいです。
で、発行されるツールのライセンスもこのツール用になっています。
古いバージョンのシミュレータはライセンスがないので動かすことができません。
で、このシミュレータがまったく起動しません。
エラーも出さず、スプラッシュスクリーンの後、ふっと消えて立ち上がってこないのです。
検索するとこのツールで同様の症状が書き込まれていました。
くぬやろー!
シミュレーションできないので、勘で何とかするしかありません。
FPGAを使い始めて1週間のユーザーにはつらいぜ・・
・なんかツールがうまく合成してくれる時とくれない時がある
何も変えてないのに、もう一度再コンパイル(再合成)すると動かなくなります。
コメントを変更して保存するだけでもそうなります。
原因がわかりません。
モジュール図を出してみると、timinggenとtiminggen_defaultの場合があって、defaultが付いていると動く気がします。
なので、音源ボードに取り付けたまま、鳴るまであれこれいじってコンパイルしては書込み、コンパイルしては書込み・・とやって鳴るまで頑張るしかありません。
こまったツールでございます。
さて、ひとまず鳴ったので、基板を作成することにします。
・
・
・
・
基板ができましたー
さっそく作っていくことにします。
今回の基板は、YM2151純正よりもほんの少し大きいのです。
まあ2層基板なので配線の関係でちょっと大きめにしています。
底面パッドをはんだ付けするために穴開けてるし。
ぴったしサイズでも入ったのでしょうけど。
今回使うチップはQFNパッケージでございます。これつけるの何気に初めてだったり。
さっそくメインチップから、と、思ったのですが、今回の基板は実装面積の都合上、背面にも部品があるのです。
というわけで、背面から実装していきます。
まずは丁寧にマスキングして
部品を取り付けるのです。
そんなにないのですぐ終わるかと思ったのですが、なんと狭くてピンセットとかはんだごてがうまく入りません。
がたがたやねん。。
まあたぶんうごくのです。
このぶろぐのテーマは脱力なのです。これくらいでいいのです。
さて、次はQFNのメインチップです。
位置合わせが何気に面倒です。なにしろよく見えないのです。
というわけで勘で調整しては拡大して確認することしばし。
大丈夫そうです!
半田レベラーの銀の部分に端子の赤っぽい辺りが写り込んでたりして、それなりに調整できたのです。
フラックスをたっぷり塗って、コテにはんだを乗っけてささっと、いったりきたりでなぞります。
足りないところには、もう一度同じ手順を繰り返します。
いい感じではんだ付けできました!
このチップ、なんと側面の配線にGND(グランド)端子が出ていません。GNDは底面パッドにしかないのです。
というわけで底面ははんだ付け必須です。
というわけで、ただでさえ両面基板で配線面積が少ないのに、大穴を開けて裏からはんだ付けできるようにしています。
裏からはんだ付けしてやります。
フラックスが焦げております。綺麗にするのはあとで。あーとーでーー。
さてさて、つぎはFPGAのコンフィギュレーションメモリを搭載します。
勢いで周りのプルアップ抵抗とか、キャパシタとかもつけました。
今更ですが
あ!買ってなかった抵抗値の表面実装部品があった!
ふう。
あ!チップLEDが見つからない!!
・・きっとなんとかなるのです。
ひとまず部品の実装は終わりましたので、あとは足を取り付けます。
こういうソケットにさす足の部分、毎回基板連結用のピンヘッダを取り付けようと思っていて買うのですが、なぜか肝心の使うときには見当たりません。
仕方ないので、定番の細ピンヘッダを取り付けます。
固定の為に適当な音源ボードのソケットにさすのです。
うし。
なんとなく見た目が怪しい気がしないでもないですが、ひとまず出来ました!
さて、動かすためにはコンフィギュレーションデータをFLASHメモリに書込まねばなりません。
元データをどういう風にメモリに書込んでいるのかわからないので、いったんは純正の書込み用プログラマーを経由して書き込みます。
純正の書き込み用プログラマーは、どうやらハードウェアとしてFT232を使っているようです。
というわけで秋月電子で調達。
んで、接続。
書込み・・ぬ? ドライバが云々言われて書き込みできません。
なぜや?
なんどやってみてもハードウェアを認識してくれないのです。
おかしいなと思ってよーく見てみると、純正のツールが使っていたのはFT232ではなく、FT2232ではございませんか。
な、なんだってー
これ違う型番じゃん!
再調達_(:3」∠)_
・
・
来ましたー
と、取り付けようとして回路を見たら気になるポイントが。
なんとこのボードはちょっと古くて、標準のI/O電圧が5Vらしいのです。
3.3VのI/Oモードにするには、外部のレギュレータで3.3Vを生成してI/O電圧端子に給電せよ、と書かれています。
なんと。
しかしながら、外付けしようにも3.3Vのレギュレータは在庫を切らしています。
・・前回間違って買った方は3.3Vで動いています。
この2枚のボードを合体させればいけるのでは?
USBケーブルを2本差す必要がありますが、片方は3.3Vのレギュレータとしてだけ使います。
理論上は問題ありません!
・・無事書き込みできました。
プロトタイプは演奏するのに2本のUSBケーブルが必要だったのですが、まさか本番用のコンフィギュレーションの書込みにも2本必要だとは_(:3」∠)_
さっそく取り付けて試してみるのです。
セットアップ完了のLEDが点灯しました!
やれやれ、ひとまずYM2151はなんとかなりそうなのです。
ほか記事は以下の記事紹介ページから
https://asmpwx.seesaa.net/article/201803article_1.html
この記事へのコメント