SFL例題/第1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[SFL例題]]
*XORの設計 [#te4c95af]
XORの機能を持った回路を、論理積(AND &)、論理和(OR |)、論理否定(NOT ^)を用いた表現で設計する。
----
#contents
**ダウンロード [#f78aebec]
&ref(sample01.tar.gz);
**覚えること [#rd35e946]
-モジュール、入力端子、出力端子の定義方法
-簡単な論理演算の実現方法
***定義方法 [#m2b7dfb0]
-モジュールの定義方法
module hogehoge {
/* 内容を記述 */
}
モジュールの名前は任意。
-入力端子の定義方法~
モジュールの中で、
input in_hoge_a;
input in_hoge_b<8>;
~<>の中はビット幅を指定する。1ビットの場合は省略可能。端子の名前は任意。
-出力端子の定義方法~
モジュールの中で、
output out_hoge_a;
output out_hoge_b<8>;
~<>の中はビット幅を指定する。1ビットの場合は省略可能。端子の名前は任意。
-内部端子の定義方法~
モジュールの中で、
sel sel_hoge_a;
sel sel_hoge_b<8>;
~<>の中はビット幅を指定する。1ビットの場合は省略可能。端子の名前は任意。
***論理演算のSFL記述方法 [#r9ece19a]
-AND : &
-OR : |
-XOR : @
-NOT : ^
記述例は
out = a & b;
out = a | b;
out = a @ b;
out = ^a;
の様に書く。~
論理演算の対象となる2つの入力のビット幅は同じになるようにする。~
同様に左辺と右辺のビット幅も同じになるようにすること。
**例題 [#z05186b4]
以下の真理値表を満たすような回路(2入力XORゲート)を設計する。
***真理値表 [#w1cbc261]
|ina|inb|out|
|0|0|0|
|0|1|1|
|1|0|1|
|1|1|0|
***論理ゲートを用いた設計例 [#c53a70b2]
CENTER:&ref(xor2.gif);
**サンプルソース [#w66ab767]
2入力XORは以下のように記述できる。
module xor {
input ina;
input inb;
output out;
out = (ina | inb) & ^(ina & inb);
}
また、排他的論理和(XOR)の記述は
module xor {
input ina;
input inb;
output out;
out = ina @ inb;
}
のように書くことが出来る。
また信号線を分割したいときは、selを使う。宣言方法は入出力端子と同様である。~
ここでparという表記を用いているが、これは[[第3回の例題>SFL例題/第3回]]で説明する。~
module xor {
input ina;
input inb;
output out;
sel d, e;
par {
d = ina | inb;
e = ina & inb;
out = d & ^e;
}
}
**シミュレーション [#k45e7a54]
+[[ダウンロード>#f78aebec]]の項にあるsample01.tar.gzをダウンロードする。~
解凍方法は
% tar zxvf sample01.tar.gz
+sample01ディレクトリに移って、以下のファイルがあることを確認し、
--Makefile
--xor.sfl
--xor.sim
% make sim
+結果は以下のようになる。シミュレーション後、sim.logファイルにログが出力される。
ina:0 inb:0 out:0
ina:0 inb:1 out:1
ina:1 inb:0 out:1
ina:1 inb:1 out:0
シミュレーション開始時に、色々なログが流れるが、それは無視してよい。
終了行:
[[SFL例題]]
*XORの設計 [#te4c95af]
XORの機能を持った回路を、論理積(AND &)、論理和(OR |)、論理否定(NOT ^)を用いた表現で設計する。
----
#contents
**ダウンロード [#f78aebec]
&ref(sample01.tar.gz);
**覚えること [#rd35e946]
-モジュール、入力端子、出力端子の定義方法
-簡単な論理演算の実現方法
***定義方法 [#m2b7dfb0]
-モジュールの定義方法
module hogehoge {
/* 内容を記述 */
}
モジュールの名前は任意。
-入力端子の定義方法~
モジュールの中で、
input in_hoge_a;
input in_hoge_b<8>;
~<>の中はビット幅を指定する。1ビットの場合は省略可能。端子の名前は任意。
-出力端子の定義方法~
モジュールの中で、
output out_hoge_a;
output out_hoge_b<8>;
~<>の中はビット幅を指定する。1ビットの場合は省略可能。端子の名前は任意。
-内部端子の定義方法~
モジュールの中で、
sel sel_hoge_a;
sel sel_hoge_b<8>;
~<>の中はビット幅を指定する。1ビットの場合は省略可能。端子の名前は任意。
***論理演算のSFL記述方法 [#r9ece19a]
-AND : &
-OR : |
-XOR : @
-NOT : ^
記述例は
out = a & b;
out = a | b;
out = a @ b;
out = ^a;
の様に書く。~
論理演算の対象となる2つの入力のビット幅は同じになるようにする。~
同様に左辺と右辺のビット幅も同じになるようにすること。
**例題 [#z05186b4]
以下の真理値表を満たすような回路(2入力XORゲート)を設計する。
***真理値表 [#w1cbc261]
|ina|inb|out|
|0|0|0|
|0|1|1|
|1|0|1|
|1|1|0|
***論理ゲートを用いた設計例 [#c53a70b2]
CENTER:&ref(xor2.gif);
**サンプルソース [#w66ab767]
2入力XORは以下のように記述できる。
module xor {
input ina;
input inb;
output out;
out = (ina | inb) & ^(ina & inb);
}
また、排他的論理和(XOR)の記述は
module xor {
input ina;
input inb;
output out;
out = ina @ inb;
}
のように書くことが出来る。
また信号線を分割したいときは、selを使う。宣言方法は入出力端子と同様である。~
ここでparという表記を用いているが、これは[[第3回の例題>SFL例題/第3回]]で説明する。~
module xor {
input ina;
input inb;
output out;
sel d, e;
par {
d = ina | inb;
e = ina & inb;
out = d & ^e;
}
}
**シミュレーション [#k45e7a54]
+[[ダウンロード>#f78aebec]]の項にあるsample01.tar.gzをダウンロードする。~
解凍方法は
% tar zxvf sample01.tar.gz
+sample01ディレクトリに移って、以下のファイルがあることを確認し、
--Makefile
--xor.sfl
--xor.sim
% make sim
+結果は以下のようになる。シミュレーション後、sim.logファイルにログが出力される。
ina:0 inb:0 out:0
ina:0 inb:1 out:1
ina:1 inb:0 out:1
ina:1 inb:1 out:0
シミュレーション開始時に、色々なログが流れるが、それは無視してよい。
ページ名: