FPGAでコンビニチャイム
久々の更新です。 せっかくFPGAがプログラムできるようになったので、ありがちなネタではありますがチャイムを実装してみました。 ファミマチャイムです。
といっても、こちら github.com で公開されているものを、ありがたく使わせていただいてます。
FPGAボードは手持ちのSpartan-3 Evaluation kitDigilent Inc. - Digital Design Engineer's Source です。Spartan3なので、今となっては若干古めですが、趣味には十分です。 サンプルではALTERA用になっていますが、XILINXのISEでコンパイルするには若干の修正が必要でした。
一般的にはシステムクロックが違うと修正が面倒なのですが、たまたまシステムクロックは同じ50MHzでした。 オーディオ出力は、FPGAのピンを適当な電解コンデンサでDCカットしてそのままLINE入力に直結です。
ちゃんとフィルタを入れれば、もう少し綺麗に聞こえそうです。
Xlinix書き込みケーブルのケースを3Dプリンタで作成
以前、FPGA書き込み用のケーブルを自作しました。techblog.hatenablog.jp これを、せっかくなのでケースに入れてみようかと。 完成品がこんな感じです。
箱型の本体と、ふたをそれぞれ別々に作って、はめこんであります。
3Dデータの作成
3Dプリンタで一番手間がかかるのが、データの作成です。 無料のCADソフトもいろいろとありますが、ここではopenscadを使って作ってみました。 openscadは、物体を記述するスクリプト言語のようなもので、プログラムをしている感じに近いです。
たとえば今回作ったコードの一部はこんな感じです。これで、切り欠きつきの板ができます。
module wall_usbcn() { translate([t/2,w/2,h/2]) rotate([90,0,90]) difference() { cube([w,h, t], center = true); translate([0,-1,0]) cube([10,8,2], center=true); } }
そんなこんなで,次のような感じの物ができました。
印刷
PRN3Dという3Dプリンタキットで印刷。これくらいのサイズのもので、だいたい1時間くらいでできました。 これはこれで、ノウハウがいろいろあるんですが(^^; また別の記事にでもしようかと思います。
arduino互換のadafruit proを試す
adafruit proというボードを買ってみました。arduino互換で、小さくて良さそうかなと。 そのままIDEが使えると思い込んでいたんですが、ちょっと面倒なところがあったので、メモ。
IDEの設定
互換品なので、IDEがそのままで使えません!adafruit用の設定ファイルを、現行のIDEに追加する必要があります。一番簡単なのはadafruitが公開しているadafruit設定済みのIDEに入れ直してしまうこと。 自分の場合は、今までの環境を残しておきたかったのとバージョンが下がるのも嫌だったので、設定ファイルのみを追加することに。
https://learn.adafruit.com/introducing-pro-trinket/setting-up-arduino-ide
この辺にさらっと書いてありますが、要はダウンロードした設定ファイルを、
IDEのプログラムフォルダの中の設定ファイルに、 C:\Program Files (x86)\Arduino\hardware 手でマージしろ、ということです(--)
Windowsドライバのインストール
さらに、Windowsの場合はドライバのインストールが必要です。 どうも中の仕組み的に、USB-シリアルではなく、AVRでソフト的にUSBを実現しているようで、FTDIドライバのほかにドライバインストールが必要です。 このへんhttps://learn.adafruit.com/introducing-pro-trinket/downloadsにさらっと書いてありますが、はまりどころかもしれません。
というわけで やっとLチカにたどりつきました(^^;
Xilinx書き込みケーブルを自作
XilinxのFPGAの開発環境を個人で揃えようとすると、プログラマが結構高かったりします。 そこで自作することにしました。FTDIチップを使ったものだと、比較的安価に揃えることができます。
回路はこんな感じで、秋月のFTDI変換ボードに直結です。 本当は100ΩくらいのRを入れた方がいいはずですが、手元に無かったので(^^;ここではダイレクトに行きます。
ソフトの方は、xc3sprogを使いました。FTDIチップをJTAGとして扱えるものはいろいろあるのですが、 環境としてubuntuで動くものが欲しかったので。 コンパイルは、libftdiを入れていけばすんなり make installでいけるようです。
はまったのはここから。ISEでふつうにbitファイルを生成します。MCSファイルではどうも私の環境ではうまくいきませんでした。 FPGAには書きこみできますが、どうしてもフラッシュメモリにはかけないのです。しかも、正常に書き込めてベリファイもできているようにみえて、 起動すると動かないという紛らわしいパターン。 なぜか、以下のようにbitファイルを直接書き込むとうまくいけました。FPGA直接も、フラッシュメモリへの書き込みも両方OKです。
sudo xc3sprog -v -c ftdi -p 1 ./test.bit
blog開設
電子工作関係のちょっとしたネタを、備忘録の意味もこめて公開していこうと思います。