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