SFL例題/第4回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[SFL例題]]
*ハーフアダーの設計その2 [#a9d63c56]
制御端子付きハーフアダーを設計する。
----
#contents
**ダウンロード [#ke9c5651]
&ref(sample04.tar.gz);
**覚えること [#c8134cc8]
-制御端子の使い方
***制御端子の使用方法 [#l2f121cd]
SFLでは、制御するもの(主体)と、制御されるもの(客体)を明確にし、その制御関係を明確にするという基本方針がある。~
慣れるまでは扱いづらいものではあるが、機能を明確にするには有効な手段である。~
~
入力(アサート)された制御端子に対して、実行すべき機能を記述する。~
~
アサートとは、信号が有効になったときのことである。例えば、0から1になったとき信号がアサートされたという。~
ただし、設計によっては1から0になったときに有効だとみなす回路(負論理)もある。~
~
SFLでは信号が1になったときが有効だと考える。
***制御端子の利点 [#u0b5ed05]
デジタル回路に使われているCMOSトランジスタは入力を変化させて、出力が変化するときに電力を消費する。~
instructの機能を使えば、必要なときにだけ、この回路の機能が実行されるので、~
無駄な電力を消費することなく、省電力な回路の設計が可能になり、昨今、盛んになっている省電力設計には有効な手段と言える。~
~
また、制御する機能を明確にしておくことで、複数の機能を持つ大規模な回路を設計するときに、~
その個々の動作を理解することが容易になるということも挙げられる。~
~
~
SFLのこの概念は、オブジェクト指向によく似ている。~
moduleがクラスであり、instructがその回路に実装されている動作、つまりメソッドとなる。
**例題 [#ada0b0a6]
以下のような真理値表を満たす回路(ハーフアダー)を制御端子付きで設計する。
***真理値表 [#k7b48e27]
|ina|inb|sout|cout|
|0|0|0|0|
|0|1|1|0|
|1|0|1|0|
|1|1|0|1|
***論理ゲートを用いた設計例 [#e4f0e7be]
CENTER:&ref(half_adder.jpg);
**サンプルソース [#hd6b9ff8]
制御端子付きのハーフアダーは以下のように記述できる。
module half_adder {
input ina;
input inb;
output sout;
output cout;
instrin do;
/* 制御端子 do が入力(アサート)されたときの動作 */
instruct do par {
sout = ina @ inb;
cout = ina & inb;
}
}
**シミュレーション [#u18ad743]
+[[ダウンロード>#ke9c5651]]にあるsample04.tar.gzをダウンロードする。
--解凍方法は
% tar zxvf sample04.tar.gz
+sample04ディレクトリに移って、以下のファイルがあることを確認し、
--Makefile
--half_adder.sfl
--half_adder.sim
% make sim
+結果は以下のようになる。
do: ina:0 inb:0 sout: cout:
do: ina:0 inb:1 sout: cout:
do: ina:1 inb:0 sout: cout:
do: ina:1 inb:1 sout: cout:
do:1 ina:0 inb:0 sout:0 cout:0
do:1 ina:0 inb:1 sout:1 cout:0
do:1 ina:1 inb:0 sout:1 cout:0
do:1 ina:1 inb:1 sout:0 cout:1
信号が不定値であるときは、出力の結果が空白になる。
終了行:
[[SFL例題]]
*ハーフアダーの設計その2 [#a9d63c56]
制御端子付きハーフアダーを設計する。
----
#contents
**ダウンロード [#ke9c5651]
&ref(sample04.tar.gz);
**覚えること [#c8134cc8]
-制御端子の使い方
***制御端子の使用方法 [#l2f121cd]
SFLでは、制御するもの(主体)と、制御されるもの(客体)を明確にし、その制御関係を明確にするという基本方針がある。~
慣れるまでは扱いづらいものではあるが、機能を明確にするには有効な手段である。~
~
入力(アサート)された制御端子に対して、実行すべき機能を記述する。~
~
アサートとは、信号が有効になったときのことである。例えば、0から1になったとき信号がアサートされたという。~
ただし、設計によっては1から0になったときに有効だとみなす回路(負論理)もある。~
~
SFLでは信号が1になったときが有効だと考える。
***制御端子の利点 [#u0b5ed05]
デジタル回路に使われているCMOSトランジスタは入力を変化させて、出力が変化するときに電力を消費する。~
instructの機能を使えば、必要なときにだけ、この回路の機能が実行されるので、~
無駄な電力を消費することなく、省電力な回路の設計が可能になり、昨今、盛んになっている省電力設計には有効な手段と言える。~
~
また、制御する機能を明確にしておくことで、複数の機能を持つ大規模な回路を設計するときに、~
その個々の動作を理解することが容易になるということも挙げられる。~
~
~
SFLのこの概念は、オブジェクト指向によく似ている。~
moduleがクラスであり、instructがその回路に実装されている動作、つまりメソッドとなる。
**例題 [#ada0b0a6]
以下のような真理値表を満たす回路(ハーフアダー)を制御端子付きで設計する。
***真理値表 [#k7b48e27]
|ina|inb|sout|cout|
|0|0|0|0|
|0|1|1|0|
|1|0|1|0|
|1|1|0|1|
***論理ゲートを用いた設計例 [#e4f0e7be]
CENTER:&ref(half_adder.jpg);
**サンプルソース [#hd6b9ff8]
制御端子付きのハーフアダーは以下のように記述できる。
module half_adder {
input ina;
input inb;
output sout;
output cout;
instrin do;
/* 制御端子 do が入力(アサート)されたときの動作 */
instruct do par {
sout = ina @ inb;
cout = ina & inb;
}
}
**シミュレーション [#u18ad743]
+[[ダウンロード>#ke9c5651]]にあるsample04.tar.gzをダウンロードする。
--解凍方法は
% tar zxvf sample04.tar.gz
+sample04ディレクトリに移って、以下のファイルがあることを確認し、
--Makefile
--half_adder.sfl
--half_adder.sim
% make sim
+結果は以下のようになる。
do: ina:0 inb:0 sout: cout:
do: ina:0 inb:1 sout: cout:
do: ina:1 inb:0 sout: cout:
do: ina:1 inb:1 sout: cout:
do:1 ina:0 inb:0 sout:0 cout:0
do:1 ina:0 inb:1 sout:1 cout:0
do:1 ina:1 inb:0 sout:1 cout:0
do:1 ina:1 inb:1 sout:0 cout:1
信号が不定値であるときは、出力の結果が空白になる。
ページ名: