春のプロジェクト2009/第2回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[春のプロジェクト2009]]
*第2回 [#g7714398]
#contents
**0. 概要[#mb9210bb]
-前回は・・・
--全加算器を設計
--NC-VerilogとSimVisionを用いたシミュレーション
-今回は・・・
--4ビット加算器を設計
---3通りの設計で、様々な記述方法を学ぶ
--NC-VerilogとSimVisionを用いたシミュレーション
---符号付きの結果も確認
今回やること
+4ビット加算器の設計
+補数表現のお勉強
+シミュレーション
+Verilog HDLの演算子
**1. 4ビット加算器の設計[#m70f9bbe]
-assign文とalways文の違いは?
--レジスタ宣言とは?
--always内の代入文の左辺は?
--assign内の代入文の左辺は?
-4ビット加算器を3通りの方法で記述する
--それぞれの記述方法の違いは?
**2. 補数表現のお勉強[#pe7851e3]
-符号付き2進数
--1の補数とは?
--2の補数とは?
**3. シミュレーション[#ld6819fb]
-テストベンチの作成
--今回使うテストベンチの一部
未完成状態です。
`timescale 1ns / 1ps
// include needed module
`include "adder4.v"
module adder4_tb;
reg [3:0] a, b;
wire [3:0] s;
adder4 adder4_0(.a(a), .b(b), .s(s));
initial begin
// output waveform
$dumpfile("adder4_tb_wf.vcd"); // file name
$dumpvars(0, adder4_tb); // starting time, test module name
// decide the input signals
a = 4'b0000; b = 4'b0000;
#100 a = 4'b0001;
// write other input signals
$finish;
end
endmodule
--[[詳細>Verilog-HDL基礎#q9235777]]
-動作確認
--前回同様、NC-VerilogとSimVisionを使用して下さい
---[[第1回シミュレーションをして動作確認>春のプロジェクト2009/第1回#oab0d409]]
**4. Verilog HDLの演算子[#wcf280cf]
-ハンドアウトの表2はVerilog HDLの主な演算子です
-基本的なものは覚えておいた方がいいでしょう
**5. FPGA設計の流れ(付録) [#a2e7e703]
-今回はFPGAへ実装しませんが、のちのち実装します。
+Verilog-HDLで回路を作成
+テストベンチを作成
+シミュレーションで動作を確認
+論理合成する
+配置配線する
+FPGAに回路情報をダウンロードして動作させる
----------------------------------------
提案、質問などあればお願いします。
- 資料に4ビット加算器の記述方法3つ載っていますが、算術演算子を用いた方法では桁あふれを知ることは出来ないのでしょうか? -- [[山本]] &new{2009-02-16 (月) 15:29:38};
--Nビット同士の加算を算術演算子で実現すると、実はN+1ビットの結果が出力されます。~
例えば4ビット同士の加算なら結果は5ビットになっていて、その5ビット目が桁あふれの情報を保持します。~
なので、以下のように記述できます。{}はビットの連結を意味します。
module adder4 (a, b, s, cout);
input [3:0] a, b;
output [3:0] s;
output cout;
reg [3:0] s;
reg cout;
always @(a or b)
{cout, s} = a + b;
endmodule
もしくは
module adder4 (a, b, s, cout);
input [3:0] a, b;
output [3:0] s;
output cout;
wire [4:0] tmp;
assign tmp = a + b;
assign s = tmp[3:0];
assign cout = tmp[4];
endmodule
always文とassign文で書いてみましたが、どちらも同じ動作をしています。書き方は個人の好みになるかも?~
ちなみに動作確認してません。動かなかったらごめん。
- ありがとうございます。 -- [[山本]] &new{2009-02-17 (火) 16:03:39};
#comment
終了行:
[[春のプロジェクト2009]]
*第2回 [#g7714398]
#contents
**0. 概要[#mb9210bb]
-前回は・・・
--全加算器を設計
--NC-VerilogとSimVisionを用いたシミュレーション
-今回は・・・
--4ビット加算器を設計
---3通りの設計で、様々な記述方法を学ぶ
--NC-VerilogとSimVisionを用いたシミュレーション
---符号付きの結果も確認
今回やること
+4ビット加算器の設計
+補数表現のお勉強
+シミュレーション
+Verilog HDLの演算子
**1. 4ビット加算器の設計[#m70f9bbe]
-assign文とalways文の違いは?
--レジスタ宣言とは?
--always内の代入文の左辺は?
--assign内の代入文の左辺は?
-4ビット加算器を3通りの方法で記述する
--それぞれの記述方法の違いは?
**2. 補数表現のお勉強[#pe7851e3]
-符号付き2進数
--1の補数とは?
--2の補数とは?
**3. シミュレーション[#ld6819fb]
-テストベンチの作成
--今回使うテストベンチの一部
未完成状態です。
`timescale 1ns / 1ps
// include needed module
`include "adder4.v"
module adder4_tb;
reg [3:0] a, b;
wire [3:0] s;
adder4 adder4_0(.a(a), .b(b), .s(s));
initial begin
// output waveform
$dumpfile("adder4_tb_wf.vcd"); // file name
$dumpvars(0, adder4_tb); // starting time, test module name
// decide the input signals
a = 4'b0000; b = 4'b0000;
#100 a = 4'b0001;
// write other input signals
$finish;
end
endmodule
--[[詳細>Verilog-HDL基礎#q9235777]]
-動作確認
--前回同様、NC-VerilogとSimVisionを使用して下さい
---[[第1回シミュレーションをして動作確認>春のプロジェクト2009/第1回#oab0d409]]
**4. Verilog HDLの演算子[#wcf280cf]
-ハンドアウトの表2はVerilog HDLの主な演算子です
-基本的なものは覚えておいた方がいいでしょう
**5. FPGA設計の流れ(付録) [#a2e7e703]
-今回はFPGAへ実装しませんが、のちのち実装します。
+Verilog-HDLで回路を作成
+テストベンチを作成
+シミュレーションで動作を確認
+論理合成する
+配置配線する
+FPGAに回路情報をダウンロードして動作させる
----------------------------------------
提案、質問などあればお願いします。
- 資料に4ビット加算器の記述方法3つ載っていますが、算術演算子を用いた方法では桁あふれを知ることは出来ないのでしょうか? -- [[山本]] &new{2009-02-16 (月) 15:29:38};
--Nビット同士の加算を算術演算子で実現すると、実はN+1ビットの結果が出力されます。~
例えば4ビット同士の加算なら結果は5ビットになっていて、その5ビット目が桁あふれの情報を保持します。~
なので、以下のように記述できます。{}はビットの連結を意味します。
module adder4 (a, b, s, cout);
input [3:0] a, b;
output [3:0] s;
output cout;
reg [3:0] s;
reg cout;
always @(a or b)
{cout, s} = a + b;
endmodule
もしくは
module adder4 (a, b, s, cout);
input [3:0] a, b;
output [3:0] s;
output cout;
wire [4:0] tmp;
assign tmp = a + b;
assign s = tmp[3:0];
assign cout = tmp[4];
endmodule
always文とassign文で書いてみましたが、どちらも同じ動作をしています。書き方は個人の好みになるかも?~
ちなみに動作確認してません。動かなかったらごめん。
- ありがとうございます。 -- [[山本]] &new{2009-02-17 (火) 16:03:39};
#comment
ページ名: