MAX IIプログラミング
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2009/05/01からのアクセス回数 &counter;
実際にプログラミングしてみると雑誌や本に書かれていないこ...
今回は、
- VHDLのテストベンチは記述量が多く、使いにくい
- 部品の結合は、VHDLでなく、回路図で行って、ツールを使っ...
のがよいことが分かりました。(とてもいい収穫でした)
また、Verilogシミュレーションについても追記しましたが、
- 最初からVerilogで記述すれば、VHDLへの変換は不要です。
- しかしVHDL-Verilog相互変換という意味でVHDLからの変換を...
** はじめに [#ncabc079]
トランジスタ技術2006年4月付録のMAX IIと12月号から連載され...
の教材だったHDL-CQ1を使ってCPLDのプログラミングをしてみま...
特集では、
- 回路図からの設計
- VHDLでの設計
の順で説明していますので、それにそって試してみます。
HDL-CQ1では、SELECTOR信号で7セグメントLEDを切り替えている...
特集の第4章の例題は1個の7セグメントLEDを使うようにしまし...
** 開発環境 [#h8ec36ef]
AlteraのQuartus II の最新のver.9.1は、Windows2000をサポー...
Ver.8.1より以前のQuartus IIではMacアドレスを送ってライセ...
のMacアドレスを固定にする必要があります。
VMイメージのvmxファイルをテキストエディタで開いて、以下の...
#pre{{
ethernet0.addressType = "static"
ethernet0.address = "00:50:56:00:43:88"
}}
Macアドレスは、00:50:56までは固定で、残りは自由に設定して...
また、以下のツールもインストールしました。
- ModelSim-Altera 6.1g Web Edition
- Veritak-Lite Ver. 2.05A7 (CQ版)
** 回路図の作成 [#u0045637]
回路図の書き方は、特集の記事にそってButtonCount_topを以下...
&ref(top_layout.jpg);
コネクタの配置は、
- MAX II付録ボードの配置は、&ref(BoardAndPinLayout.pdf);
- HDL-CQ1の回路は、&ref(HDL-CQ1.pdf);
を参照し、以下のようにピンの配置をしました。
&ref(pin_setting.jpg);
通常ですと、チャタリング除去のために、入力スイッチ回路に...
を入れるのですが、Quartus IIではPCLD内部で処理することが...
同様にButtonCountを配置します。
回路の74160, 7447は、ロジックICの型番で、
- 74160はカウンタIC
- 7447は、セグメントLED表示用IC
で、
Quartus IIのライブラリに入っているものをそのまま使ってい...
このように、既存のロジックICを組み合わせた回路なら、とて...
できます。
&ref(ButtonCount_Layout1.jpg);
** シミュレーション [#x8420f68]
WaveFormを使って、できあがった回路をシミュレーションしま...
&ref(WaveForm1.jpg);
波形だけなので、セグメントLEDの表示がいまいち理解しづらい...
** 動作確認 [#ja02af85]
Programmerで書き込んで、動作確認をします。
写真は、MANCLKのスイッチでカウントアップしている途中の様...
&ref(Counter.jpg);
** VHDLで書き替える [#ndd56d67]
つぎに、ロジックICの回路をVHDLで記述し、
- 74160は、&ref(BCDCounter.vhd);
- 7447は、&ref(Decode7Segment.vhd);
としました。
*** VHDLで記述した部品を回路図で使えるようにする [#ld125d...
作成した BCDCounter.vhd, Decode7Segment.vhdを回路図で使...
シンボルを生成します。
- ProjectNavigatorでVHDLファイルを選択し
- 右クリックでポップアップメニューを表示し、「Create SYmb...
&ref(CreateSymbol_Menu.jpg);
** 回路図からVHDLを作る [#caf2ec03]
先に作成したButtonCountの回路をBCDCounter.vhd、Decode7Seg...
以下のように書き直します。
&ref(CounterVHDL_Layout.jpg);
次に、回路図を表示した状態でFile->Create/Update->Create H...
を選択します。
&ref(CreateHDL_Menu.jpg);
これでButtonCount.vhdが生成されました。どうようにBUttonCo...
- &ref(ButtonCount.vhd);
- &ref(ButtonCount_top.vhd);
** Verilogとの相互変換 [#b620ae8c]
これで、VHDLで記述した部品を組み合わせ、すべてのVHDLを作...
しかし、このままではQuartus IIを使わなくて、部品を作った...
ことができません。
そこで、フリーのVerilogシミュレーションを使うために、VHDL...
*** Verilog-VHDL translator [#r70ab37a]
フリーのVerilog-VHDL translatorが、
http://www002.upp.so-net.ne.jp/morioka/v2v.html
に公開されています。
いろいろ探しましたが、Verilog→VHDLの変換ツールは少なく、...
また、VerilogからVHDLへの逆変換もサポートしており、ソース...
*** Verilogへの変換 [#kacb79f3]
VHDLからVerilogへの変換はとても簡単です。
ターミナルから
vhdl2verilog 変換するVHDLファイル名
を指定するだけです。
#pre{{
$ vhdl2verilog BCDCounter.vhd
VHDL2Verilog ver1.00(2004/05/06) Copyright(c) S.Morioka ...
Input file: BCDCounter.vhd
Complete.
$
}}
*** vhdl2verilogの障害 [#rf4d3319]
vhdl2verilogで生成されたファイルには、モジュール名の大文...
インスタンス化する場合には、すべて小文字になっている障害...
これらを修正し、完成したファイルは以下のとおりです。
- &ref(Decode7Segment.v);
- &ref(BCDCounter.v);
- &ref(ButtonCount.v);
** フリーのVerilogシミュレータGPL Cverのインストール [#xd...
マックにもVerilogのシミュレータがあると便利なので、GPL Cv...
MacPortを使ってcver ver.2.12a をインストールします。
#pre{{
$ sudo port install gplcver
}}
** テストベンチの作成 [#z00aa6cd]
ButtonCountのテストベンチを作成します。
- BCDCounter内部のcounterが初期化されていないため、最初に...
- セグメントLEDの表示をキャラクタで表し、HDL-CQ1ボードの...
#pre{{
module ButtonCount_tb();
reg clk;
wire a, b, c, d, e, f, g;
ButtonCount ButtonCount(clk, a, b, c, d, e, f, g);
initial begin
ButtonCount.b2v_inst.counter <= 0;
$monitor("%t: %b, %b, %b, %b, %b, %b, %b, %b", $t...
end
initial begin
repeat(11) begin
clk <= 1'b1;
#10
clk <= 1'b0;
#10
if(!a) $write(" --¥n"); else $write("¥n");
if(!f) $write("| "); else $write(" ");
if(!b) $write("|¥n"); else $write("¥n");
if(!g) $write(" --¥n"); else $write("¥n");
if(!e) $write("| "); else $write(" ");
if(!c) $write("|¥n"); else $write("¥n");
if(!d) $write(" --¥n"); else $write("¥n");
$write("¥n");
end
$finish;
end
endmodule
}}
** ベンチマークの実行結果 [#q565aac3]
実行結果は、
#pre{{
$ cver Decode7Segment.v BCDCounter.v ButtonCount.v Button...
GPLCVER_2.12a of 05/16/07 (Mac OSX).
Copyright (c) 1991-2007 Pragmatic C Software Corp.
All Rights reserved. Licensed under the GNU General Pu...
See the 'COPYING' file for details. NO WARRANTY provid...
Today is Sun May 3 16:31:43 2009.
Compiling source file "Decode7Segment.v"
Compiling source file "BCDCounter.v"
Compiling source file "ButtonCount.v"
Compiling source file "ButtonCount_tb.v"
Highest level modules:
ButtonCount_tb
0: 1, 1, 0, 0, 1, 1, 1, 1
10: 0, 1, 0, 0, 1, 1, 1, 1
|
|
20: 1, 0, 0, 1, 0, 0, 1, 0
30: 0, 0, 0, 1, 0, 0, 1, 0
--
|
--
|
--
途中省略
180: 1, 0, 0, 0, 0, 0, 0, 1
190: 0, 0, 0, 0, 0, 0, 0, 1
--
| |
| |
--
200: 1, 1, 0, 0, 1, 1, 1, 1
210: 0, 1, 0, 0, 1, 1, 1, 1
|
|
Halted at location **1.v(205) time 220 from call to $fini...
There were 0 error(s), 0 warning(s), and 8 inform(s).
}}
と無事期待通りの出力となりました。
Veritakで同様の結果と波形が出力されました。
&ref(VeritakWave.jpg);
** コメント [#s330924c]
この記事は、
#vote(おもしろかった[7],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2009/05/01からのアクセス回数 &counter;
実際にプログラミングしてみると雑誌や本に書かれていないこ...
今回は、
- VHDLのテストベンチは記述量が多く、使いにくい
- 部品の結合は、VHDLでなく、回路図で行って、ツールを使っ...
のがよいことが分かりました。(とてもいい収穫でした)
また、Verilogシミュレーションについても追記しましたが、
- 最初からVerilogで記述すれば、VHDLへの変換は不要です。
- しかしVHDL-Verilog相互変換という意味でVHDLからの変換を...
** はじめに [#ncabc079]
トランジスタ技術2006年4月付録のMAX IIと12月号から連載され...
の教材だったHDL-CQ1を使ってCPLDのプログラミングをしてみま...
特集では、
- 回路図からの設計
- VHDLでの設計
の順で説明していますので、それにそって試してみます。
HDL-CQ1では、SELECTOR信号で7セグメントLEDを切り替えている...
特集の第4章の例題は1個の7セグメントLEDを使うようにしまし...
** 開発環境 [#h8ec36ef]
AlteraのQuartus II の最新のver.9.1は、Windows2000をサポー...
Ver.8.1より以前のQuartus IIではMacアドレスを送ってライセ...
のMacアドレスを固定にする必要があります。
VMイメージのvmxファイルをテキストエディタで開いて、以下の...
#pre{{
ethernet0.addressType = "static"
ethernet0.address = "00:50:56:00:43:88"
}}
Macアドレスは、00:50:56までは固定で、残りは自由に設定して...
また、以下のツールもインストールしました。
- ModelSim-Altera 6.1g Web Edition
- Veritak-Lite Ver. 2.05A7 (CQ版)
** 回路図の作成 [#u0045637]
回路図の書き方は、特集の記事にそってButtonCount_topを以下...
&ref(top_layout.jpg);
コネクタの配置は、
- MAX II付録ボードの配置は、&ref(BoardAndPinLayout.pdf);
- HDL-CQ1の回路は、&ref(HDL-CQ1.pdf);
を参照し、以下のようにピンの配置をしました。
&ref(pin_setting.jpg);
通常ですと、チャタリング除去のために、入力スイッチ回路に...
を入れるのですが、Quartus IIではPCLD内部で処理することが...
同様にButtonCountを配置します。
回路の74160, 7447は、ロジックICの型番で、
- 74160はカウンタIC
- 7447は、セグメントLED表示用IC
で、
Quartus IIのライブラリに入っているものをそのまま使ってい...
このように、既存のロジックICを組み合わせた回路なら、とて...
できます。
&ref(ButtonCount_Layout1.jpg);
** シミュレーション [#x8420f68]
WaveFormを使って、できあがった回路をシミュレーションしま...
&ref(WaveForm1.jpg);
波形だけなので、セグメントLEDの表示がいまいち理解しづらい...
** 動作確認 [#ja02af85]
Programmerで書き込んで、動作確認をします。
写真は、MANCLKのスイッチでカウントアップしている途中の様...
&ref(Counter.jpg);
** VHDLで書き替える [#ndd56d67]
つぎに、ロジックICの回路をVHDLで記述し、
- 74160は、&ref(BCDCounter.vhd);
- 7447は、&ref(Decode7Segment.vhd);
としました。
*** VHDLで記述した部品を回路図で使えるようにする [#ld125d...
作成した BCDCounter.vhd, Decode7Segment.vhdを回路図で使...
シンボルを生成します。
- ProjectNavigatorでVHDLファイルを選択し
- 右クリックでポップアップメニューを表示し、「Create SYmb...
&ref(CreateSymbol_Menu.jpg);
** 回路図からVHDLを作る [#caf2ec03]
先に作成したButtonCountの回路をBCDCounter.vhd、Decode7Seg...
以下のように書き直します。
&ref(CounterVHDL_Layout.jpg);
次に、回路図を表示した状態でFile->Create/Update->Create H...
を選択します。
&ref(CreateHDL_Menu.jpg);
これでButtonCount.vhdが生成されました。どうようにBUttonCo...
- &ref(ButtonCount.vhd);
- &ref(ButtonCount_top.vhd);
** Verilogとの相互変換 [#b620ae8c]
これで、VHDLで記述した部品を組み合わせ、すべてのVHDLを作...
しかし、このままではQuartus IIを使わなくて、部品を作った...
ことができません。
そこで、フリーのVerilogシミュレーションを使うために、VHDL...
*** Verilog-VHDL translator [#r70ab37a]
フリーのVerilog-VHDL translatorが、
http://www002.upp.so-net.ne.jp/morioka/v2v.html
に公開されています。
いろいろ探しましたが、Verilog→VHDLの変換ツールは少なく、...
また、VerilogからVHDLへの逆変換もサポートしており、ソース...
*** Verilogへの変換 [#kacb79f3]
VHDLからVerilogへの変換はとても簡単です。
ターミナルから
vhdl2verilog 変換するVHDLファイル名
を指定するだけです。
#pre{{
$ vhdl2verilog BCDCounter.vhd
VHDL2Verilog ver1.00(2004/05/06) Copyright(c) S.Morioka ...
Input file: BCDCounter.vhd
Complete.
$
}}
*** vhdl2verilogの障害 [#rf4d3319]
vhdl2verilogで生成されたファイルには、モジュール名の大文...
インスタンス化する場合には、すべて小文字になっている障害...
これらを修正し、完成したファイルは以下のとおりです。
- &ref(Decode7Segment.v);
- &ref(BCDCounter.v);
- &ref(ButtonCount.v);
** フリーのVerilogシミュレータGPL Cverのインストール [#xd...
マックにもVerilogのシミュレータがあると便利なので、GPL Cv...
MacPortを使ってcver ver.2.12a をインストールします。
#pre{{
$ sudo port install gplcver
}}
** テストベンチの作成 [#z00aa6cd]
ButtonCountのテストベンチを作成します。
- BCDCounter内部のcounterが初期化されていないため、最初に...
- セグメントLEDの表示をキャラクタで表し、HDL-CQ1ボードの...
#pre{{
module ButtonCount_tb();
reg clk;
wire a, b, c, d, e, f, g;
ButtonCount ButtonCount(clk, a, b, c, d, e, f, g);
initial begin
ButtonCount.b2v_inst.counter <= 0;
$monitor("%t: %b, %b, %b, %b, %b, %b, %b, %b", $t...
end
initial begin
repeat(11) begin
clk <= 1'b1;
#10
clk <= 1'b0;
#10
if(!a) $write(" --¥n"); else $write("¥n");
if(!f) $write("| "); else $write(" ");
if(!b) $write("|¥n"); else $write("¥n");
if(!g) $write(" --¥n"); else $write("¥n");
if(!e) $write("| "); else $write(" ");
if(!c) $write("|¥n"); else $write("¥n");
if(!d) $write(" --¥n"); else $write("¥n");
$write("¥n");
end
$finish;
end
endmodule
}}
** ベンチマークの実行結果 [#q565aac3]
実行結果は、
#pre{{
$ cver Decode7Segment.v BCDCounter.v ButtonCount.v Button...
GPLCVER_2.12a of 05/16/07 (Mac OSX).
Copyright (c) 1991-2007 Pragmatic C Software Corp.
All Rights reserved. Licensed under the GNU General Pu...
See the 'COPYING' file for details. NO WARRANTY provid...
Today is Sun May 3 16:31:43 2009.
Compiling source file "Decode7Segment.v"
Compiling source file "BCDCounter.v"
Compiling source file "ButtonCount.v"
Compiling source file "ButtonCount_tb.v"
Highest level modules:
ButtonCount_tb
0: 1, 1, 0, 0, 1, 1, 1, 1
10: 0, 1, 0, 0, 1, 1, 1, 1
|
|
20: 1, 0, 0, 1, 0, 0, 1, 0
30: 0, 0, 0, 1, 0, 0, 1, 0
--
|
--
|
--
途中省略
180: 1, 0, 0, 0, 0, 0, 0, 1
190: 0, 0, 0, 0, 0, 0, 0, 1
--
| |
| |
--
200: 1, 1, 0, 0, 1, 1, 1, 1
210: 0, 1, 0, 0, 1, 1, 1, 1
|
|
Halted at location **1.v(205) time 220 from call to $fini...
There were 0 error(s), 0 warning(s), and 8 inform(s).
}}
と無事期待通りの出力となりました。
Veritakで同様の結果と波形が出力されました。
&ref(VeritakWave.jpg);
** コメント [#s330924c]
この記事は、
#vote(おもしろかった[7],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc