オーディオクラフト工房(208)

更新日:2016年6月16日


FPGA(MAX10)でオーディオ関連機器を作ろう(その1)
久しぶりの本格的なハード・ソフト製作に取り掛かります。さて、CQ出版社から「トライアルシリーズ(トランジスタ技術 2016年4月号増刊) 」が発売されているのは皆さんご存知だと思います。私も早速購入しておりました。私自身は今までCPLDしか扱ったことがなかったので、これほどまでのロジックが詰まっているFPGAで、さて何をするかと、迷っておりました。基本これくらいのロジックがあるFPGAではマイコンのコアを組み込んであれこれするのが通の使い方と思いますが、私は能力不足から結局非常に沢山のロジックが入ったCPLDとしてしか製作出来ないことが判りました。過去のトラ技の付録のCPLDでは少し凝ったことをするとすぐロジックが足らない状態であったのですが、しかしながら今回のFPGAは違います。底なしで入ります。何かウキウキしてきましたね。
(FPGA電子工作スーパーキット)
基板製作や書き込みライタ製作、開発環境のセットアップの詳細は書籍に任せるとしてポイントを記しておきます。まず通常のWindows7では環境のセットアップが出来ません。今すぐWindows10のPCを購入しましょう。次に書籍の通りにセットアップすると、書き込みライタを認識してくれません。個別のセットアップが必要です。また最初書き込みライタはPCではなくUSB電源などに接続するように書籍には記載されていますが、PCにつなぐと解決することがあります。この3点が気になったところです。私はWindows10とWindows7の環境をバリバリ駆使して開発を進めております。
(MAX10:FPGA基板)
このFPGAの良いところは内部にロジックの情報を不揮発で記憶出来る点です。通常のFPGAは電源を入れる毎にFPGAの外部からロジックデータを書き込む必要がありました。しかしこのMAX10はそれを内部に持っています。こうなるともう巨大なCPLDでして、電子工作には使い勝手がとても広がります。ここまでロジック数が多いと、何でも入ります。でもピン数が限られていますので、結局それがネックになります。ということで、最終的にはめちゃロジックが余ります。
(専用の書き込み器です)
背中に書き込み器を背負うことが出来ますので、簡単に開発が可能です。実際に使用する段階では外します。まあMAX10ボードそのもののコストが高いので、そのボードを機器に組み込むのは気がひけるかもしれませんが、気にせずにおきましょう。その分ロジックが入るだけ詰め込むようにはしたいと思います。さて何を組み込むかですが、とりあえず過去のCPLD製作のモジュールを組み込んでみることにしましょう。
オーディオ関連機器のCPLDを使ったものとして、正弦波発振器と周波数カウンタを製作しました。まずはこれらを同じFPGAに組み込んでみましょう。正確には現在も製作は進行中です。今回の製作は数回に渡って公開する予定です。FPGAだけに製作途中でもアイデアが沸いたらどんどんトライしてみるつもりです。うまく行けば完成時にはいろんな機能が追加されているかもしれません。
正弦波発振器と周波数カウンタを組み込んでも使用ロジックは数%程度です。さすがにこれではもったいないので工夫をすることにします。発振器は複数の波形を出力出来るようにします。今回は正弦波の他に三角波、ノコギリ波、方形波を出力出来るようにしました。合わせて方形波はデューティも可変出来るようにします。帯域はオーディオ用として使う範囲で、前回の製作よりも高い周波数まで出力出来るようにしました。実際には374kHzまで出力します。ここまで出れば趣味のオーディオ用には充分と思います。
(波形発振器のモジュール内構成案)
複数の波形を出力するために上図の構成案を考えました。実験は成功しておりますので、ご期待下さい。方形波は8bit精度でデューティを可変出来ますので使い勝手が広がると思います。周波数カウンタは従来通りです。ゲート時間を1秒、100msec、10msecとして周波数をカウントします。
(周波数カウンタのモジュール内構成案)
ここまで組み込むとピン数の少なさがネックになってきます。このMAX10ボード上のFPGAには沢山のピンが出ていますが、実際にボードから取り出すピン数には限りがあります。このボードの裏側にはSDRAMが接続されています。私はこのSRAMは使っていませんので、これに接続されているピンを使いたいところですが、基板外に取り出すのは困難です。ということで、不足する機能については外部にマイコンを置いて補完することにしました。現在の開発状況をお見せします。
(開発中のMAX10を使用したオーディオ関連機器)
少し大きめのケースを使用してFPGAを中心に各基板を配置しています。基本部分は確認が終了していますので、少しずつ完成に近づけていきたいと思います。
(各基板の配置割り振り)
ネットを検索してもこのMAX10を使った具体的製作をなかなか探すことが出来ません。FPGAの実験で終わるのではなく実用的な製作に仕上げることを目指しましょう。FPGAでの目指す方向が違うと言われるかもしれませんが、巨大なロジックとして使い方は無限です。皆さんも色々と考えてみられては如何でしょうか。なんだか楽しくなってきますよ。
さて今回の公開はここまでとさせて頂きます。まだまだやらなければならない開発もありますので、完成にはまだ少し時間を頂きたく。今後ともオーディオクラフト工房ををよろしくお願いいたします。

オーディオクラフト工房へ戻る