以前、Intel MAX V 5M160Z CPLD のボードを作りました。
このボードに、音源の回路を作って遊んでいます。ただ、このCPLDは小規模の回路向けなため、1チャンネルの音源をプログラムしただけで60% を消費していました。もっと音源のチャンネルを増やしたいのですが、チャンネル数を増やすとプログラムの容量がオーバーしてしまい、書き込むことができません。
そこで、もっと回路規模の大きなCPLDを探したところ、MAX10というFPGAが便利そうなので、買ってみました。
MAX10 FPGA
CPLDっぽいFPGA
MAX10 FPGAは、FPGAと言いながら、プログラムを格納するフラッシュROMを内蔵していて、CPLDのような使い方ができる便利なFPGAです。
ちょうどいい書籍が販売されていて、この本を買うと、MAX10の使い方の資料&MAX10の評価ボードが手に入ります。
ボードを組み立てる
評価ボードが付いてくるのですが、完成済みではなく、FPGAといくつかのチップ部品が実装されているのみで、オシレータやコネクタは別途購入して自分で半田付けする必要があります。
完成品が必要であればマルツパーツで販売しています。
ただちょっと高いので、本を買って自分で組み立てることにしました。
はんだでジャンパをショート
このボードは、ちょっとマニアックで、FPGAの出力電圧レベルを各バンクごとに自由に設定できるようになっています。1.5Vとか2.5VとかIO用の電源を用意して、バンクの電源設定ピンに接続すれば、その通りの電圧レベルのIOになります。そうではなく、普通に3.3Vで利用するためには、12箇所のジャンパーを半田でショートする必要があります。
JTAGコネクタを加工
このボードは、JTAGコネクタの両脇の近いところに、別のコネクタがあって、ボックスコネクタが取り付けられません。
そこで、ボックスコネクタの両端をカッターで切り取って、スリムにします。
私の場合は、USB Blasterがあるので、ボックスコネクタをつけて書き込めるようにします。普通のピンヘッダだと、反対にも刺さってしまうので危険なんですよね。
USB Blasterは互換品をAmazonで安く買えます。
windows10の場合、認識した途端にブルースクリーンになるので、セットアップにはコツが必要でした。
ピンヘッダソケット
あとは、ピンヘッダのソケットを取り付けました。こうすることで、ジャンパーワイヤーで別の回路をつないだりできるようになります。
オシレーターは持っていないので、とりあえず付けていません。そのうち付けたいと思います。
電源レギュレータ
このボードは電源に3.3Vが必要です。手軽に利用できるよう、USBの電源から3.3Vを作るモジュールを使って、USBから電源を供給できるようにします。
ちょっと違いますがこんな↑感じのレギュレータをAliexpressで買いました。
CN3のVCC33に3.3Vを、GNDにGNDをつなぎます。これでMAX10 FPGAの評価ボードの完成です。
音源を作る
音源
パラレルで、音の高さとノートオン、ノートオフ、あと音量を受け取ります。音の高さから特定の周波数の矩形波を作り、音量でPWMの幅を変更するようにしました。
MAV V 5M160Z CPLDで作ったプログラムをそのまま移植して、4チャンネルに拡張しました。
Adruino
音源だけでは音が鳴らないので、音楽のデータを逐次音源に設定するプログラムを Arduinoで作りました。Arduinoは以前UV-EPROMの記事で紹介したカセットArduinoを利用しています。
FPGA+Arduino
MAX10 FPGAの開発環境であるQuartus Primeと、Arduinoの開発環境のArduinoIDE、どちらも開いて、デバックしながら開発していきます。
こんな感じに音が鳴ります。
MAX10 FPGA は容量に余裕があって、どんどんプログラムを追加できてとても楽しいです。
コメント