春のプロジェクト2009/第1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[春のプロジェクト2009]]
*第1回 全加算器をHDLで設計してみよう [#qcfad43b]
#contents
**0. 概要 [#s837cd9c]
-記事ではISEを使ってシミュレーションをしているが、学校では環境が違う
-主な相違点は以下の通り
--ISEではなくQuartusを使う予定(これは今回は使わない)
--テストベンチで波形出力
--シミュレーションツール、波形描写ツールを使い動作確認する
-質問を解いて、理解を深めよう。~
今回やること
+作りたい回路の設計
+Verilog-HDLの記述
+テストベンチの作成
+シミュレーションで動作確認
**1. 全加算器の入出力の確認 [#pde0f8e2]
-全加算器とは?
-入力は?出力は?
-動作は?
**2. Verilog-HDLを使ってモジュールを記述 [#d46eae8f]
-モジュールとは?
-文法はどういう風になっている?
--モジュール宣言
--ポート宣言
--ネット宣言
--回路記述(assign文)
--演算子
**3. テストベンチの作成 [#m8415019]
-テストベンチとは?
--入力信号について時系列順に記述したもの
--シミュレーションをするときに必要
-記述方法は?
--テストベンチもモジュールとして作成
--確認したいモジュールをインスタンス宣言する
--initial文の中で、入力信号を定義していく
--出力方法を定義する
---monitor(信号が変わったら出力)
---display(その時間の値を出力)
---dumpfile(波形を出力)
--今回使うテストベンチの一部
未完成状態です。
`timescale 1ns / 1ps
// include needed module
`include "fa.v"
module fa_tb;
reg a, b, cin;
wire s, cout;
fa fa0(.a(a), .b(b), .cin(cin), .s(s), .cout(cout));
initial begin
// output waveform
$dumpfile("fa_tb_wf.vcd"); // file name
$dumpvars(0, fa_tb); // starting time, test module name
// decide the input signals
a = 0; b = 0; cin = 0;
#100 a = 1; b = 0; cin = 0;
// write other input signals
$finish;
end
endmodule
--[[詳細>Verilog-HDL基礎#q9235777]]
**4. シミュレーションをして動作確認 [#oab0d409]
-シミュレーション方法
--ある時間におけるワイヤーやレジスタの値を出力する
-波形を出力する
--テストベンチにdumpfile文を書く
-ツールは?使い方は?
--NC-Verilog
---環境設定が必要
% ncverilog +ncaccess+rwc fa_tb.v
---[[詳細>論理回路設計環境の設定#w627ee24]]
--SimVision
---環境設定が必要
% simvision &
---ncverilogで出力されたダンプファイル(fa_tb_wf.vcd)を開く
---[[詳細>論理回路設計環境の設定#b7367d32]]
**5. FPGA設計の流れ(付録) [#x06dd31d]
今回は1から3までの工程をメインに解説。~
でも、最後までいくと、楽しさが分かるはず。
+Verilog-HDLで回路を作成
+テストベンチを作成
+シミュレーションで動作を確認
+論理合成する
+配置配線する
+FPGAに回路情報をダウンロードして動作させる
----------------------------------------
提案、質問などあればお願いします。
- テスト -- [[星野]] &new{2009-02-06 (金) 18:20:03};
- SimVisionで、まっすぐの波形しか見れない!? -- [[猪狩]] &new{2009-02-18 (水) 14:48:11};
- 最初に見れる波形は縮尺が大きくなっていますので、小さくしてみて下さい。 -- [[猪狩]] &new{2009-02-18 (水) 14:49:26};
- 波形の縮尺を小さくしたら問題解決しました。ありがとうございました。 -- [[木目沢]] &new{2009-02-18 (水) 15:05:49};
#comment
終了行:
[[春のプロジェクト2009]]
*第1回 全加算器をHDLで設計してみよう [#qcfad43b]
#contents
**0. 概要 [#s837cd9c]
-記事ではISEを使ってシミュレーションをしているが、学校では環境が違う
-主な相違点は以下の通り
--ISEではなくQuartusを使う予定(これは今回は使わない)
--テストベンチで波形出力
--シミュレーションツール、波形描写ツールを使い動作確認する
-質問を解いて、理解を深めよう。~
今回やること
+作りたい回路の設計
+Verilog-HDLの記述
+テストベンチの作成
+シミュレーションで動作確認
**1. 全加算器の入出力の確認 [#pde0f8e2]
-全加算器とは?
-入力は?出力は?
-動作は?
**2. Verilog-HDLを使ってモジュールを記述 [#d46eae8f]
-モジュールとは?
-文法はどういう風になっている?
--モジュール宣言
--ポート宣言
--ネット宣言
--回路記述(assign文)
--演算子
**3. テストベンチの作成 [#m8415019]
-テストベンチとは?
--入力信号について時系列順に記述したもの
--シミュレーションをするときに必要
-記述方法は?
--テストベンチもモジュールとして作成
--確認したいモジュールをインスタンス宣言する
--initial文の中で、入力信号を定義していく
--出力方法を定義する
---monitor(信号が変わったら出力)
---display(その時間の値を出力)
---dumpfile(波形を出力)
--今回使うテストベンチの一部
未完成状態です。
`timescale 1ns / 1ps
// include needed module
`include "fa.v"
module fa_tb;
reg a, b, cin;
wire s, cout;
fa fa0(.a(a), .b(b), .cin(cin), .s(s), .cout(cout));
initial begin
// output waveform
$dumpfile("fa_tb_wf.vcd"); // file name
$dumpvars(0, fa_tb); // starting time, test module name
// decide the input signals
a = 0; b = 0; cin = 0;
#100 a = 1; b = 0; cin = 0;
// write other input signals
$finish;
end
endmodule
--[[詳細>Verilog-HDL基礎#q9235777]]
**4. シミュレーションをして動作確認 [#oab0d409]
-シミュレーション方法
--ある時間におけるワイヤーやレジスタの値を出力する
-波形を出力する
--テストベンチにdumpfile文を書く
-ツールは?使い方は?
--NC-Verilog
---環境設定が必要
% ncverilog +ncaccess+rwc fa_tb.v
---[[詳細>論理回路設計環境の設定#w627ee24]]
--SimVision
---環境設定が必要
% simvision &
---ncverilogで出力されたダンプファイル(fa_tb_wf.vcd)を開く
---[[詳細>論理回路設計環境の設定#b7367d32]]
**5. FPGA設計の流れ(付録) [#x06dd31d]
今回は1から3までの工程をメインに解説。~
でも、最後までいくと、楽しさが分かるはず。
+Verilog-HDLで回路を作成
+テストベンチを作成
+シミュレーションで動作を確認
+論理合成する
+配置配線する
+FPGAに回路情報をダウンロードして動作させる
----------------------------------------
提案、質問などあればお願いします。
- テスト -- [[星野]] &new{2009-02-06 (金) 18:20:03};
- SimVisionで、まっすぐの波形しか見れない!? -- [[猪狩]] &new{2009-02-18 (水) 14:48:11};
- 最初に見れる波形は縮尺が大きくなっていますので、小さくしてみて下さい。 -- [[猪狩]] &new{2009-02-18 (水) 14:49:26};
- 波形の縮尺を小さくしたら問題解決しました。ありがとうございました。 -- [[木目沢]] &new{2009-02-18 (水) 15:05:49};
#comment
ページ名: