組合せ回路と順序回路の違い

組合せ回路編【Altera DE0】では組合せ回路の記述法について学んできた。
実用的な回路を記述するためには「順序回路」の習得が必須である。
組合せ回路と順序回路の違いはなんだろう。

  • 組合せ回路:出力が「現在の入力」で決まる回路
  • 順序回路:出力が「現在の入力」と「過去の入力で決まる値」から決まる回路

(順序回路は書籍や教える人によっては様々な定義があるが、私はこの定義を好んで使う。)

では順序回路でないと記述できない、
言い換えると組合せ回路では記述できない回路とはどんなものか?一例として

『プッシュスイッチpush1, push2, push3がある。push1,push2,push3の順に押されたらledが点灯する回路を設計せよ』

さて、これをC言語風に書いてみよう。

static int state = 0;
static int led = 0; 

void sequential_circuit( push1, push2, push3)
{
  if( state == 0 && push1 == 1){
    state = 1;
    led = 0;
  } else if( state == 1 && push2 == 1){
    state = 2;
    led = 0;
  } else if( state == 2 && push3 == 1){
    led = 1;
  }
}

つまり、組合せ回路は「state」や「push」を入力とし「state」や「led」を出力する回路を実現できる。
「state」「led」は実は過去の入力で決まる値に相当する。
例えば

  } else if( state == 1 && push2 == 1){
    state = 2;
    led = 0;
  } 

は実はpush1とstateから決まった値stateと現在のpush2で出力が決まる。順序回路である。
stateやledの値を保持する「変数」に相当するのは順序回路でないと実現できない。
実際のハードウェアでは「変数」に相当するものをフリップフロップやラッチといった記憶素子で実現する。

ちょっと説明がグダグダしてきたので次回は実際に順序回路を設計してみよう。
(筆者の力量が足りなくて申し訳ありません…)

reg宣言を使った簡単な順序回路【Altera DE0】へ進む
Verilog入門へ戻る


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-04-13 (水) 11:53:57 (2267d)