計算機工学論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 文解釈
© Copyright 2025 ExpyDoc