2009/05/01からのアクセス回数 12042
実際にプログラミングしてみると雑誌や本に書かれていないことがわかるものです。
今回は、
のがよいことが分かりました。(とてもいい収穫でした)
トランジスタ技術2006年4月付録のMAX IIと12月号から連載された「実験で学ぶロジック回路設計」 の教材だったHDL-CQ1を使ってCPLDのプログラミングをしてみます。
特集では、
の順で説明していますので、それにそって試してみます。
HDL-CQ1では、SELECTOR信号で7セグメントLEDを切り替えているため、 特集の第4章の例題は1個の7セグメントLEDを使うようにしました。
AlteraのQuartus II の最新のver.9.1は、Windows2000をサポートしていないので、開発環境ではVM Ware上にVer.7.1をインストールしました。
Ver.8.1より以前のQuartus IIではMacアドレスを送ってライセンスをAlteraから取得しますので、VM Ware のMacアドレスを固定にする必要があります。
VMイメージのvmxファイルをテキストエディタで開いて、以下の行を追加・変更します。
ethernet0.addressType = "static" ethernet0.address = "00:50:56:00:43:88"
Macアドレスは、00:50:56までは固定で、残りは自由に設定してもよいそうです。
また、以下のツールもインストールしました。
回路図の書き方は、特集の記事にそってButtonCount_topを以下のように書きました。
コネクタの配置は、
を参照し、以下のようにピンの配置をしました。
通常ですと、チャタリング除去のために、入力スイッチ回路にシュミット・トリガ・インバータIC を入れるのですが、Quartus IIではPCLD内部で処理することができます(ちょっと驚きました)。
同様にButtonCountを配置します。
回路の74160, 7447は、ロジックICの型番で、
で、 Quartus IIのライブラリに入っているものをそのまま使っています。
このように、既存のロジックICを組み合わせた回路なら、とても簡単にCPLDで代用することが できます。
WaveFormを使って、できあがった回路をシミュレーションします。
波形だけなので、セグメントLEDの表示がいまいち理解しづらいです。
Programmerで書き込んで、動作確認をします。
写真は、MANCLKのスイッチでカウントアップしている途中の様子です。
つぎに、ロジックICの回路をVHDLで記述し、
としました。
作成した BCDCounter.vhd, Decode7Segment.vhdを回路図で使えるように シンボルを生成します。
先に作成したButtonCountの回路をBCDCounter.vhd、Decode7Segment.vhdを使って、 以下のように書き直します。
次に、回路図を表示した状態でFile->Create/Update->Create HDL Design File for Current Fileメニュー を選択します。
これでButtonCount.vhdが生成されました。どうようにBUttonCount_top.vhdも作成します。
これで、VHDLで記述した部品を組み合わせ、すべてのVHDLを作成することができました。
しかし、このままではQuartus IIを使わなくて、部品を作ったり、それをシミュレーションする ことができません。
そこで、フリーのVerilogシミュレーションを使うために、VHDLからVerilogに変換します。
フリーのVerilog-VHDL translatorが、 http://www002.upp.so-net.ne.jp/morioka/v2v.html に公開されています。 いろいろ探しましたが、Verilog→VHDLの変換ツールは少なく、フリーのソフトはこれのみでした。
また、VerilogからVHDLへの逆変換もサポートしており、ソースが公開されているのでとても便利です。
VHDLからVerilogへの変換はとても簡単です。
ターミナルから
vhdl2verilog 変換するVHDLファイル名
を指定するだけです。
$ vhdl2verilog BCDCounter.vhd VHDL2Verilog ver1.00(2004/05/06) Copyright(c) S.Morioka (http://www02.so-net.ne.jp/~morioka/v2v.htm) Input file: BCDCounter.vhd Complete. $
この記事は、
皆様のご意見、ご希望をお待ちしております。