(動画は下に貼ってあります^^/)
ツイッターか何かでメロディICの話題が出ていて、Aitendoの50+曲入りが云々などというのを眺めていたら、ファミマチャイムがNationalPanasonicの市販なEC5117WKPとかEC5227WPとか、要はメロディICのMN6221D(生産終息品)を使ってるやつは配線をどうにかするとファミマチャイムが鳴るらしいという話が
但しこのICを直に買う方法が分からず(中古機材から外す?)、しばしGoogle...
するとすぐにFPGAでの実装に行き当たった次第、それもツイッターでお見かけするOsafuneさん、しかも数年前の話題^^;
(私が実際に行った作業はGithubからソースを持ってきて、Quartus Prime Lite 18.1で論理合成して似非USB Blasterで書き込んだだけです
コードはいじってません、というかいじらなくても動きました)
(1) Osafuneさんが2014年に公開されたMAX10評価基板用ファイル一式を持ってきます、ココ
記事はこちら
(2) 今は亡き(一旦休刊だっけか?)FPGAマガジン2015年5月号にDE0/DE0-nano用のCQ-EXTボードで鳴らす記事を書かれており、
そこを辿ってMAX10評価ボード用の実装に行き当たりました
当時のQuartusは14.0だったようでこの後書きますがQuartus18.1でプロジェクトが開けず???と立ち止ってしまいました...
(3) Quartus Prime Liteも暫らく使っておらずすっかりな感じだったので最新の18.1でクリーンインストール
Deviceは手持ちの Cyclone10/MAX10/MaxII をインストール
(4) 上の(1)で持って来たアーカイブを展開しまずは何も考えずプロジェクトを開こうと.qsfファイルを選んだところ、
「... qsfの55行目にエラーがあるよ...」とのたまってロードすらしてくれない
(5) 中を覗くと該当行は、set_global_assignment -name ENABLE_ERAM_PRELOAD ON というもの
これがQuartus Prime14.0 --> 14.1の時に無くなったらしい...ということは海外のどっかのページで見て取れた
仕方ないので#でコメントアウト、これで開けるようになった
(6) Quartusのバージョンが上がってるぜ的なメッセがlogに表示されるが気にせずに、で結果

256LE消費、記事では255LEとのことだったのでまぁバージョン違いの誤差範囲内かと
ところで当該純正MAX10評価ボードは持っていない
例のCQ本のアレがあるのでこれをそのまま鳴らすのもありなのだが300LE未満の規模なのでMaxII(570LE)で十分なのではと
3枚あるボードの1つを捜しだした(2年前位に購入)
(因みにMAXIIのこの下のはやつはロジックのサイズが最大240LEなのでファミマチャイムは手直し無しでは動かない)
(7) ここからが本番、VHDLの3つのファイルだけを新しいプロジェクトにコピーし、Deviceを手持ちの中華ボードにあわせて設定
Top levelの名前をfamimachime_topからMax2chine_topに変更(実際のところこれすら不要、とにかく無変更^^;)
(8) 論理合成開始...終了、266LE消費

ピン配置(自動)

(9) 似非USB Blaster(aka USB Blasterもどき)で書き込み

完了

(10) あとは本家指定のLPF(R=910Ω, C=0.01uF)を通して出力をアンプ等へ入れて出音
こちらのツールを使って確認(一杯解析結果が出ますがここではカットオフ周波数だけ見てます^^;)

手持ちの抵抗(カーボン5%^^;)だと820Ω+100Ω=920Ωというところか、実際に2個つないでテスタをあてたら912~913Ω
カトットオフ周波数が17.48KHzだったのが17.43KHzになるとかそういう程度の話なので無問題かと
(11) このCPLDボード、基板上にLED x2とボタンx1が載っているのピンをジャンパするだけで使える
ブレッドボードでリセット周りを試行錯誤の後、CQ出版からもらったなんかの基板の切れ端を加工(CQ出版とは関係ないです~^^;)、
これを載せて再生出来た^^

青缶は昔作ったポタアン、これに100均でかったパッシブスピーカー(というほどのものでもないが)をつなぎ、
CPLD基板上にあるブタンを押すとファミマチャイムが再生される


因みに、テンポを刻むLEDは基板上のユーザーLEDを使って点滅させている
リセットを浮かせておくと不安定だったので3.3Vにつないで常に"1"にした(リセットボタンを付ければいいのだが外付け部品は最小限の予定だったので)

なので、
aud_out はLPFを通してアンプ入力へ
CLOCK_50 は基板上の50MHzクロックへ
RESET_N は3.3Vへ
start_n は1KΩで3.3Vに吊り、基板上のボタン(押すとGNDにつながる)へ
tempo_led は基板上のユーザーLEDへ
接続して完成^^
その他のLED 4個への出力は使っていないのでこの辺を削ればLEを少し節約できるか(その必要は全くないが)
動画
いまさらMAXIIでファミマチャイム
手元で稼働するものがあると色々いじって遊べる
以下の様な構成(詳細はココからOsafuneさんのページへ)で改造についてもヒントが、

Osafuneさん、ソースの公開ありがとうございましたm(__)m