佐久間/春のプロジェクト2009/第1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[佐久間/春のプロジェクト2009]]
*第1回 全加算器をHDLで設計してみよう [#m5ea5d57]
**目的 [#f3e55e00]
作成したい回路をの設計を行い、Verilog-HDLで記述し、~
テストベンチを用いて、シュミレーションを行う。
**設計手順 [#f14d06da]
+全加算器の論理式を組む。~
入力は、a、b、cinの3ビット、出力は、s、coutの2ビット。~
動作は、入力ビットに"1"が奇数個あれば、sは"1"を、~
入力ビットに"1"が2ビット以上あれば、coutは"1"を出力する。~
故に論理式は、~
s = a ^ b ^ cin~module fa(a, b, cin, s, cout);
cout = (a & b) | (b & cin) | (cin & a)~
+Verilog-HDLで記述し、モジュールを作成する。~
module fa(a, b, cin, s, cout);
input a, b, cin;
output s, cout;
wire a, b, cin, s, cout;
assign s = a ^ b ^ cin;
assign cout = (a & b) | (b & cin) | (cin & a);
endmodule
+シュミレーションのためテストベンチを作成する。~
`timescale 1ns / 1ps
`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
$dumpfile("fa_tb_wf.vcd");
$dumpvars(0, fa_tb);
$monitor("a:%b, b:%b, cin:%b, s:%b, cout:%b", a, b, cin, s, cout);
a = 0; b = 0; cin = 0;
#100 a = 1; b = 0; cin = 0;
#100 a = 1; b = 1; cin = 0;
#100 a = 1; b = 1; cin = 1;
#100
$finish;
end
endmodule
**結果 [#o1d3d87c]
-シュミレーションの出力結果~
a:0, b:0, cin:0, s:0, cout:0
a:1, b:0, cin:0, s:1, cout:0
a:1, b:1, cin:0, s:0, cout:1
a:1, b:1, cin:1, s:1, cout:1
----------------------------------------
- ページ名を"第1回"->"佐久間/春のプロジェクト2009/第1回"に変更しました。簡単なページ名の場合(他の人と被る可能性がある場合)はこのような命名規則に従ってページ名をつけてください。 -- [[大和田]] &new{2009-02-21 (土) 00:01:09};
#comment
終了行:
[[佐久間/春のプロジェクト2009]]
*第1回 全加算器をHDLで設計してみよう [#m5ea5d57]
**目的 [#f3e55e00]
作成したい回路をの設計を行い、Verilog-HDLで記述し、~
テストベンチを用いて、シュミレーションを行う。
**設計手順 [#f14d06da]
+全加算器の論理式を組む。~
入力は、a、b、cinの3ビット、出力は、s、coutの2ビット。~
動作は、入力ビットに"1"が奇数個あれば、sは"1"を、~
入力ビットに"1"が2ビット以上あれば、coutは"1"を出力する。~
故に論理式は、~
s = a ^ b ^ cin~module fa(a, b, cin, s, cout);
cout = (a & b) | (b & cin) | (cin & a)~
+Verilog-HDLで記述し、モジュールを作成する。~
module fa(a, b, cin, s, cout);
input a, b, cin;
output s, cout;
wire a, b, cin, s, cout;
assign s = a ^ b ^ cin;
assign cout = (a & b) | (b & cin) | (cin & a);
endmodule
+シュミレーションのためテストベンチを作成する。~
`timescale 1ns / 1ps
`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
$dumpfile("fa_tb_wf.vcd");
$dumpvars(0, fa_tb);
$monitor("a:%b, b:%b, cin:%b, s:%b, cout:%b", a, b, cin, s, cout);
a = 0; b = 0; cin = 0;
#100 a = 1; b = 0; cin = 0;
#100 a = 1; b = 1; cin = 0;
#100 a = 1; b = 1; cin = 1;
#100
$finish;
end
endmodule
**結果 [#o1d3d87c]
-シュミレーションの出力結果~
a:0, b:0, cin:0, s:0, cout:0
a:1, b:0, cin:0, s:1, cout:0
a:1, b:1, cin:0, s:0, cout:1
a:1, b:1, cin:1, s:1, cout:1
----------------------------------------
- ページ名を"第1回"->"佐久間/春のプロジェクト2009/第1回"に変更しました。簡単なページ名の場合(他の人と被る可能性がある場合)はこのような命名規則に従ってページ名をつけてください。 -- [[大和田]] &new{2009-02-21 (土) 00:01:09};
#comment
ページ名: