
こんにちは!現役国立大学生電気電子ブロガーのコブサラダ@kobusaladです!
今回は論理回路という分野を使って自動販売機を作ってみるということを行いたいと思います
今回の対象は‥
・論理回路について実際に手を動かして理解を深めたい!
・課題で自販機作れとか言われたけど全然わからない!
という方になります

一回物を作ると理解がよく深まるからオススメだよ!
目次!
自動販売機を論理回路を使って作っていこう!
ということで早速ですが自動販売機を作っていきたいと思います。
今回作るのは100円で商品が排出される自動販売機です!
ただ作るのは皆さんが思い浮かべるようなあの形の自動販売機ではありません。
本当にそのままあの形の自動販売機を作るのはそれはあまりにも気の遠くなる作業なのでまず無理ですね
今回はあくまで回路を組んで自動販売機の仕組みだけを作ることになります。
さらに機能にもさまざまな条件をつけていきます
こちらもお金を入れたらボタンを押すまでお金をためておく、などやるとやることが増えてしまうので
今回つける条件は
・入れることができるのは50円と100円のみ
・自動販売機の残高が100円を超えたら自動的に商品やお釣りが排出されリセットされる
というものです。
ということで早速回路を作る工程に入りましょう!
まずは回路で表すには式が必要なので式をつくる作業をしていきます
作る流れは以下のようになります。
状態遷移図で今の状態と次の状態についてまとめる
→表やカルノー図を使って式をつくる
→出た式をもとに回路を作成していく
今回扱うのは順序回路というものでです
状態遷移図を作る
状態遷移図というのは今の状態とある動作を行うことによって次の動作について考えたまとめたものです。
実際に見ていただければわかりやすいと思いますが今回の自動販売機の状態遷移図をまとめていくとこちらになります。
ちなみに楕円で囲われているのが今の状態、矢印の下に書いてある方の左が入力(自販機で言ったらお金を入れる時)右が出力(自販機で言ったら商品が排出されるとき)になります。
符号を割り当てる
ということで状態遷移図を作りましたがこのままじゃ回路に指令を出すことはできません。
なぜなら回路自体が50円や100円なんて理解できませんからね。
論理回路が理解するのは基本的には2進数になるので実際に当てていきたいと思います
それぞれの当てはめるのはそれぞれこのようになります。
符号 | 入力 | 今の状態 | 出力 |
00 | 50円入れる | 0円 | なし |
01 | 100円入れる | 50円 | 商品 |
11 | 商品とお釣り50円 |
そして当てはめた符号で状態遷移図にまとめると以下のようになります。
これで状態遷移図が完成しました。
これで次のステップに移行します。
状態遷移表とカルノー図を使って式をつくる
次のステップでは自動販売機の動作を表に落として回路のもととなる式を作っていきます。
状態遷移表
状態遷移表とは先ほどの状態遷移図をまとめて表にしたものです。
表は以下のようになります。
q | x1 | x2 | qnext | おつりy1 | 商品y2 |
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | ∅ | ∅ | ∅ |
1 | 0 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | ∅ | ∅ | ∅ |
これはqで現在の状態、x1,x2で入力、qnextで入力が終わったあとの次の状態、そしてy1,y2で出力を表しています。
カルノー図をつくる
式をつくるためにカルノー図をまとめていきます
カルノー図というのは式をかんたんにするために作る図です。
詳しくは以下のリンクから調べてみてください!
状態遷移表を下の図にまとめるとそれぞれこのようになります。
qnext | q | |
x1x2 | 0 | 1 |
00 | 0 | 1 |
01 | 1 | 0 |
11 | ∅ | ∅ |
10 | 0 | 0 |
y1 | q | |
x1x2 | 0 | 1 |
00 | 0 | 0 |
01 | 0 | 0 |
11 | ∅ | ∅ |
10 | 0 | 1 |
y2 | q | |
x1x2 | 0 | 1 |
00 | 0 | 0 |
01 | 0 | 1 |
11 | ∅ | ∅ |
10 | 1 | 1 |
そしてカルノー図を式にまとめると以下のようになります。
$$qnext=\tilde{x1}\tilde{x2}q+x2\tilde{q}$$
$$y1=x1q$$
$$y2=x2q+x1$$
これで式を作れたのでいよいよ回路を作っていきます。
回路を作る!
できる回路
今回できる回路は上のようになります。
基本的には先ほどの式のようにAND,OR,NOT素子を組み合わせて出力を示すだけなのですが残高を残すためにフリップフロップを使う必要があります。
これからはこの回路のフリップフロップの解説をしていきます。
今回使うフリップフロップ
今回はD-FFというフリップフロップを使っていきます
d-ffは前の状態がonのときのみQが1になるという動作を示します。
フリップフロップ全体の役割なのですが前の動作を保存してくれるため今回路に何円入っているのかの記憶を保持するのはこちらのd-ffの役割になります。
そして式のq,q-はそれぞれd-ffのQ,Q-から出せばいいので回路はそのまま作ってみてください。
これで回路完成となります。
論理回路のソフトなどで実際に動いているか確認してみてください!
まとめ:自動販売機を作って論理回路を身に着けよう!
どんな動きをするのか状態遷移表で確認する
→表やカルノー図を作りそれをつかって式をつくる
→式のとおりにフリップフロップを使い回路を作成する
このような順序で回路を作っていけば割と簡単に自動販売機を作ることができます!
今回は100円でしたが150円、200円と値段を上げていくうちに回路は非常に複雑にそして難しくなっていくので論理回路をマスターしたい!という方はぜひ挑戦してみてください!
ということで今回はここまで!ありがとうございました!
コメント