PowerPoint プレゼンテーション

計算機工学論A
M1 木暮 康人
条件判断ロジック
条件判断ロジックとはロジックへの入力値により異なる
動作を選択する。実装にはIf文かCase文が理想的である。
If 文
Case 文
ひとつまたは複数のブール表現を評価し、
その表現と異なる時の動作を記述する。
ある表現における各値に適用できる選択肢を
挙げる。表現の評価し、表現の値により一連の
動作を選択する。
If 文ロジック
priority.tdfファイルは、アクティブで最も優先度が高い入力値の
レベルを2進数に変換するPriority encoderである。Vccでドライブ
される最も優先度が高い入力を示し2bitコードを生成する。
SUBDESIGN priority
(
low, middle, high
: INPUT;
highest_level[1..0]
:OUTPUT
)
優先度:高
BEGIN
IF high THEN
highest_level[] = 3;
ELSIF middle THEN
highest_level[] = 2;
ELSIF low THEN
highest_level[] = 1;
ELSE
highest_level[] = 0;
END IF;
優先度:低
END;
priority.tdf
・二つ以上の入力がVccに入力された場合
IF節やELSIF節の順番によって決定。
・Vccに入力がドライブされてないときは
ELSEがアクティブになる。
Case文ロジック
Decoder.tdfファイルは2bitから4bitに変換するデコーダーである。
二桁のbinary codeを“out-hot”codeに変換する。
SUBDESIGN priority
(
code[1..0]
: INPUT;
out[3..0]
:OUTPUT
)
BEGIN
CASE code[] ISD
WHEN 0 ⇒ out[]
WHEN 1 ⇒ out[]
WHEN 2 ⇒ out[]
WHEN 3 ⇒ out[]
END CASE;
END;
decoder.tdf
・入力code[1..0]は0,1,2,3の値を持つ。
・⇒によって後の式がアクティブになる。
・左側の表現が全てことなるため一度に
一つのWHEN節しかアクティブにならない。
=
=
=
=
B”0001”;
B”0010”;
B”0100”;
B”1000”;
If 文 vs. Case 文
If 文とCase文は似ており、ある場合にはどちらの文を使用しても
同じ結果を得ることができる。
If statement
IF a[] == 0 THEN
y = c & d;
ELSIF a[] == 1 THEN
y = e & f;
ELSIF a[] == 2 THEN
y = g & h;
ELSIF a[] == 3 THEN
y = I
ELSE
y = GND;
END IF;
Case statement
CASE a[] IS
WHEN 0 ⇒
y = c & d;
WHEN 1 ⇒
y = e & f;
WHEN 2 ⇒
y = g & h;
WHEN 3 ⇒
y = i;
WHEN OTHERS ⇒
y = GND;
END CASE
If 文 vs. Case 文
If 文とCase 文の相違点
●If 文では様々な種類のブール表現を使用することができる
If 節やELSIF節の各表現は、その文の他の表現と関係ない
かもしれないが、Case文では一つのブール表現がそれぞれの
WHEN節で定数と比較される。
●MAX+PLUSⅡコンパイラのIf 文の解釈によって。複雑すぎる
ロジックが生成される可能性がある。
If statement
Compiler interpertation
IF a THEN
c = d;
IF a THEN
c = d;
END IF;
ELSIF b THEN
c = e;
IF !a & b THEN
c = e;
END IF;
ELSE
c = f;
END IF
IF !a & !b THEN
c = f;
END IF
コンパイラのIf 文解釈