コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

dsc06457
さて、せっかくマルツボードとFPGAを手に入れたのでなんか作るか。ということで、以前CPLDで修行したときの「カップラーメンタイマー」を移植することにした。(CPLD版の制作記 2, 3
お試しで作るのにちょうど良い題材。
CPLDのときはゲート数も少なく、なんとか詰め込むような感じだったけれども、今回の Lattice FPGA XP2-5E は単純比較で 30倍くらいの規模があるため余裕ありあり。なので、以前はできなかった「時間がきたらアラームが鳴る仕組み」も追加することにする。
dsc06458
アラームのために圧電スピーカを追加している(左上)。
ボタンはSW2~5 の 4つで左から、5分、4分、3分、1分のスタートとなっている。

完成したラーメンタイマーの ispLEVER7.2 プロジェクト。(余計なファイルも混ざっていたらごめん)
Download: ramen_timer_lattice.zip
VHDLのソースコードのみアーカイブ
Download: ramen_timer_lattice_vhdl.zip


動作しているところの動画など。

dsc00891
開発中のマルツ FPGA ボードの様子。
前回書いたとおり、コンフィグレーション安定化のためにダウンロードケーブルにバッファを挟んでいる。
マルツボードはパラレルポート経由のダウンロード回路が乗っているが売りなのだけれども、ダウンロードケーブルからFPGAボードへ直接コンフィグしようと思うとボード上の回路が邪魔をすることになる。
dsc00889
この場合 CPLD脇の JP6 をカットすることで、マルツボード上のダウンロード回路を切り離すことができる。回路図を読むか、マルツのサポートページを見るかするとわかる情報。

PLDというか電子回路は基本電源投入時のフリップフロップ状態が不定なので、リセットをかけることになる。前回のCPLDのときは適当に省略してしまったけれども、今回はそのへんまじめに。
といっても、マルツFPGAベースボードはリセットICを持っているのでそれを利用すれば良いだけのお話。SW6 がリセットボタンになっているけれども、これがリセットICにつながっているのでリセット信号自体は1本ドライブするだけで良い。

dsc00893
圧電スピーカーは今回バッファドポートである B9,B10 コネクタにつないだ。
B10がGNDで、B9はOUTPORT7にあたる。
ビープ音を鳴らすロジックは単にカウンタの塊なので、適当に数を数えてできあがり。
トリガ一発でピピピピッというビープが8回なるようにしてみた。
詳しくはソースを参照。

マルツFPGAベースボードのTIPS。
ベースボード上のタクトスイッチを Lattice FPGA 基盤で使用するとき、SW2~4 はON時H(1)の信号となるが、SW5 のみON時L(0)となる。
最初なんのことやらさっぱりわからなくてずーっと悩んでいたのだけれども、デジタルデザインテクノロジの LatticeFPGAボード側の回路図をみてようやくわかった。このSW5で利用している端子だけ基板上でプルアップされているのだ。どうやらプルアップ回路なしにSWを接続できるよう配慮した特別なポートだったらしい。
ベースボード上の回路を眺めていただけではわからないわけだ。

Leave a Reply