先日は、

 

 

にて論理ゲートについて書きました。先日は、一つの入力に対して結果が決まっている

 
 ■ 直列回路
 ■ 並列回路
 
を暑かったのですが、並列回路にも判定を実装できるので、
 
 
のような判定用のモジュールを用意して
 
 
のように分岐の先に実装することも出来ます。これは、直列回路のモジュールを並列回路に組み込んだものになりますが、直列回路も組み方で処理の方法が変わってきます。
 
 
のモジュールでは、両方の条件が成立しない限りレッドストーンランプが点灯しない仕組みになっていますが、直列回路にスイッチを追加するとこうした作りにすることが出来ます。当然、これは、
 
 
のように延長することが出来ます。この処理の間に判定結果の結果を追加すると
 
 
のような構造になります。まず、最初に左のレバーを動かして信号を出すと
 
 
のようになります。これは、他の部分が断線しているので当然の結果になりますが、接点を使って電流を流すパーツとして使用するスイッチも同じ考え方になります。この構造物のスイッチを
 
 
の四にすると接点がつながるので、次のレッドストーンランプが点灯しますが、これは、両方のレバーがオンの状態でなければ成立しません。これと同じ条件が、
 
 
でも存在しているわけですが、このような 【 複数の条件を満たさなければ成立しない 】 と言う判定を直列回路を使うだけで実装できます。これは電気工作でも使用する仕組みになります。

 

 論理演算には、

 

 
 ■ 論理積  : AND
 ■ 論理和  : OR
 ■ 論理否定 : NOT
 
がありますが、これが論理演算の基本となる3つの判定になります。高校の物理では普通科でも半導体や電気を扱いますから、電気の流れなどを学習するので、キルヒホップの法則やド・モルガンの法則も登場します。
 
 このド・モルガンの法則が先程の3つの判定があればすべての判定が作れるというものになります。これは人の思考でも同じなので、ブール代数で対応できるのですが、全く同じことが機械でも使用できるので二値論理を使えば、機会にも判定を実装できるようになっています。
 
 先程の判定は、条件が全て揃わなければならないものですから、 【 論理積 : AND 】 になります。
 
 
 
 中学校では並列回路も登場しますが、閉回路の上歌いを見ると処理側が分岐した形で登場します。通常の並列回路はそうなっていますが、これを入力側に変えると
 
 
 
のようになります。この場合、いずれかを選べば動作するようになりますが、このような判定が 【 論理和 : OR 】 になります。この場合、
 
 ■ 単数
 ■ 複数
 
でも動作するので、【 選択肢の中の1つだけで動くものではない 】 ので注意が必要です。ちがみに、これを出力側に持ってきたものが同時稼働をする時などに使用する 【 並列回路 】 になります。
 
 
 
 この2つは中学校の物理で登城しますが、この判定だけだと、入力値は常にスイッチの結果に依存するので、逆のデータを入力することができません。この場合、二進数の演算を行う時に不便になりますが、回路を作る場合も少し不便になります。
 
 こうした、 【 逆の結果を生成する判定 】 として、 【 論理否定 : NOT 】 があります。マインクラフトだと、
 
 
のようにレッドストーン松明をブロックに挿して、ブロックの信号を与えることで反転させて使用することでNOT回路を作ることが出来ます。画像では、信号がオフの状態ですが、レッドストーン松明は点灯しているので、信号がでています。つまり。ここにレッドストーンを繋ぐと信号強度15のレッドストーン信号が流れます。レバーを動かしてブロックに信号を送るとレッドすT-ん松明は消えるので、信号が判定していることになります。
 
 
 このようにこの構造にするだけで、 【 論理否定 : NOT 】  の判定を作ることが出来あます。
 
 
上方向だとこの上にレッドストーンで動作するブロックを置くだけで操作できるので、
 

 
のように動作します。

 

 論議ゲートは判定だけでなく挙動の制御にも使用できるのですが、 
 
 
のようにNOT回路を使ってピストンヘッドを持ち上げて、その上にブランチマイニングで貯まってきた砂利を置いたり、地上で確保できる砂を配置すると、自由落下をしますから、ピストで押し上げ他あとに、ピストンを戻すと落下する特性があります。これを使うと、
 
 
のような半自動の農作物の回収機を作ることが出来ます。通常のブロックだとピストンを戻してもブロックの位置は変わりませんが、砂や砂利の場合、下が空気ブロックだと落下するので、
 
 
のようにピストンを動かして水を流すことが出来ます。統合版で回収部分を作る場合、
 
 
のような高コストな構造にする必要がありましたが現在は、JAVA版と童謡の仕様になったので、畑の作物は
 
 
の形で回収できるようになっています。その為、
 
 
のような回収も行えるようになっています。回収装置を作るとその周辺を使いやすくする必要があります。

 

 

 

の構造のものを作った場合、起動部分と回収部分が下にあるので、下に移動して回収することになりますが、この場合、移動酒乱を確保する必要がでてきます。この場合、
 

 

 
のようになりますが、畑が荒れないようにドアで遮蔽すると、段差では丈を破壊することがなくなります。また、階段で降りることになりますから、何かしらの段差を用意することになります。流石に、サバイバルの序盤にコンクリートをこれだけ大量に作れるとは思えないので、石と木材になると思いますから、
 
 
のような感じになりそうですが、統合版だと透過ブロックは光を通すので、画像のように下に松明などの光源ブロックを置くと脇き潰しが出来ます。
 
 この構造だと全てを地下で行えますが、水を流すのも地下だと少し不便なので地上に上げることになります。この場合、ガラスを使って

 

 

 
のように階段状に並べるとレッドストーンがつながった状態になります。この状態で、
 
 
のようにレバーで信号を送ると水が流れます。
 
 
 これが畑のモジュールになるので、耕作面積を広げようと思うと、横方向に同じモジュールを併設することになります。

 

 モジュールを作る場合、

 

 

 
のように比較をすることになりあMすが、比較をしてでパフォーマンスが高い方を採用することになります。ちなみに、この2つの回路は統合版専用なので、JAVA番だとBUD回路が働くので使うことは出来ません。
 
 モジュールが出来たら併設をし提唱することになるので、
 

 
のような形でモジュールを用意して運用することになります。こうしたモジュールを併設して運用するものだとアイテム仕分け機も単一のモジュールを併設して運用するタイプのものになりますが、処理をする場合には、モジュールを作って併設して使用することになります。同じモジュールを組み合わせたものだと、
 

 
になりますが、これは、コンパレーターでの信号の比較と論理ゲートによるANDの判定で単一の値を取得するモジュールを併設してANDゲートで判定を行ったものになります。
 

  回路内での判定

 
 レッドストーン回路の中で判断を導入する場合、スイッチを実装しますが、この処理を回路内で実装する個Tも出来ます。

 スイッチの役割は、【 条件分岐 】 になりますが、この条件を信号の状態の変化と仮定すると、何かしらの方法でパルスを送ることでその状態を作ることが出来ます。この時に使用するのがパルサー回路になりますが、この時に 

  ■ レバーのように信号を維持する
  ■ ボタンのように一度だけ信号を送る

のでは条件が異なります。ただし、こうした判定は 【 1つの条件のみ 】 ですから、組み合わせて使用することが出来ないのですが、入力の状態を組み合わせて判定を行うことも出来ます。

 この処理はスイッチだけでは出来ないので、そういった処理をするためには論理演算回路が必要になりますが、電気工作ではロジックICを使うことでこうした判定を粉得るようになっています。

 レッドストーン回路はオンとオフしか存在しないので、デジタルの処理と同じで0と1のみで結果が変わります。この時の1が信号が伝達されている状態なので、レッドストーンで動作するブロックを動かすことが出来ます。

 電気工作だと 【 通電している状態 】 が1ですから、コンパレーターなどで特定の電流になった時に判定をしてそれ以上だと動作するというような仕組みにすると0と1の判定を通電ではなく、回路内で作成した特定の電流が流れた時に限定することが出来ます。

 マインクラフトの場合、信号の有無だけで考えると、二値なので、 【 有無 】 の状態から理解していくと回路を考えやすいのですが、レバーを使って信号をオンとオフにした時に接続されたレッドストーンで動作するブロックがどう動くのか?を考えるのが 【 回路の設計 】 になります。

 この条件では、【 1つのレバー 】 なので、入力が条件分岐で、その時に1が来た場合に回路が動くという仕組みになっています。

 しかし、これが 【 組み合わせを要する場合 】 だと信号を発信するブロックだけでは判定が出来ませんから、電気工作の夜に論理演算を行う必要が出てきます。

 

  論理演算


 論理演算は、プログラミング言語だと 【 ビット演算 】 で登場しますが、これは1バイトのデータを用意して二進数の計算をするときに用いるのがこの処理になります。この時に、8桁同時に演算することができるのですが、ここで論理演算を用いた処理をすることで、値をコントロールすることができるようになっています。

 論理演算は、ブール代数を奇界に対して用いたものになりますが、人の思考や判断は複雑な判定の集合体であり、その最小単位まで細分化するとその判定は二値で行うことが出来ます。この判定の組み合わせで人は判断や思考を行っているわけですが、この時に

  ■ and
  ■ or
  ■ not
  ■ if

を組み合わせて使用することで思考や判断の内容を構成することができるようになっています。高校の物理では電気について学習しますが、その中で 【 ド・モルガンの法則 】 が登場します。これも

  ■ and
  ■ or
  ■ not

の3つがあれば、全ての判定を作ることができるというものになりますが、高校の数学Aで学習する論理の分野でもこれを使用します。論理演算の場合だと、

  ■ 論理積  : AND
  ■ 論理和  : OR
  ■ 論理否定 : NOT

を使うことになりますが、最初の2つは判定で、論理否定は入力の反転になります。その為、論理積と論理和については、小学校の理科で登場しているのですが、これは、

  ■ 論理積  : 直列回路
  ■ 論理和  : 並列回路

になります。その為、トランジスタで回路を作って電流を流した場合、この構造にするとスイッチで電流の流れを変更できますが、2つのトランジスタにお組み合わせで動かした場合、この状態になります。

 論理演算と集合演算では似たような判定がありますが、義務教育の図形の面積た体積を出す乖離キュラムでは、

  ■ 共通部
  ■ 和集合
  ■ 補修号

のような判定がありますが、

  ■ 共通部 : ANDと同じ考え方
  ■ 和集合 : ORと同じ考え方
  ■ 補集合 : NOTと同じ考え方

になりますから、対象物が二値ではなく集合に対して行っているだけで、考え方としては同じです。面積を出す場合、重なった部分がある形状だと2つの図形の面積を出してから重複した部分の面積を除去しますが、この時の処理が、 

  ■ 和集合 : 組み合わさた部分 
  ■ 共通部 : 重複した部分

になります。特定の形状でくり抜いたような形のものだと、くり抜いた形状の面積を引くことになりますが、この処理は 【 符号をつけて足す 】 のと同じなので、補集合と同じになります。その為、論理演算で行っている処理の考え方は集合演算を行っている図形の面積のカリキュラムの処理の方法と同じになりますから、考え方そのものや処理の方法自体は義務教育のカリキュラムの中で登場しています。

 論理や電気の分野では、この半手を組み合わせて使用することになりますが、この3つを組み合わせるだけでも

  ■ 否定論理積 : NAND
  ■ 否定論理和 : NOR

という判定を作ることが出来ます。

 

  NOT回路を使う

 
 レッドストーンで論理回路を実装する場合、レッドストーン松明が信号の切り替えに使用できるので、NOT回路として機能するこのブロックを使って回路を組むことになります。先日の論理ゲートを組み合わせると、XOR(排他的論理和)を作れるので、

 

 ■ 00→0
 ■ 10→1
 ■ 01→1
 ■ 11→0
 
のような判定を作ることが出来ます。これを使うことで

 

 
 

 
のような挙動のものを作ることが出来ます。この動画では、現実世界でも建物の中の
 
 ■ 廊下
 ■ 階段
 
のように両端にスイッチがあって、片方で点灯させた証明をもう片方のスイッチで切る処理を行っていますが、この時に使用する論理ゲートがXORになります。
 
  NOT回路を使うと、色々な回路を作れるのですが、マイクラでは、NOT回路を組み合わせてANDなどを作ります。

 ANDはNOTを3つ使いますが、2つ使うと違った挙動をするものも作れます。

 この中には、クロック回路やRSラッチ回路も存在しますが、切替器を作ることも出来ます。

 

  切替器

 信号を切り替える場合、出力がどうなっているのかで変わってきますが、XORを使用すると、

  ■ 入力 : 2
  ■ 出力 : 1

の状態になっており、片方のみが1のときに出力が1になるという仕組みになっています。これがレバーを2つ用意するとORになって動作しなくなる状態を解消するための装置になりますが、この仕組みを判定として実装することで 【 入力した信号を固定すると屋内証明のような挙動 】 にすることができます。

 このように入力を2つ用意するだけでは対応できないものは多いので、入力を行った後にどういった挙動になるのかを事前に想定して、その状態になるように心理値表を書いてみて、その条件になるような判定を導き出すことになります。

 XORは既に論理ゲートとして存在していますし、ロジックICとして用意されていますが、この条件を

  ■ 入力 : 2
  ■ 出力 : 2

の状態にすると回路の構造を変える必要があります。並列回路にするとORになるので、心理値表は

  ■ 00=0
  ■ 10=1
  ■ 01=2
  ■ 11=1∧2

となりますが、片方だけを動かしたい場合だと、この中の11=1と言う判定が不要になります。その為、

  ■ 00=0
  ■ 10=1
  ■ 01=2
  ■ 11=0

という回路が必要になります。この条件を

  ■ 入力1
  ■ 入力2

  ■ 出力1
  ■ 出力2
 
とした場合、

  ■ オフ  : 入力なし∨両方
  ■ 出力1 : 入力1
  ■ 出力1 : 入力2

と言う状態になるので、



のような処理を実装したのと同じになります。

 この場合、




のような回路を作るとその状態になりますが、これは、AND回路からレッドストーン松明を1つ除去した形のものになります。
 
実際に動かしてみると


 
のようになります。この回路の挙動は
 

 
のような形になりますが、同じ挙動で構造を論理ゲートに変更したものが、



になりますが、これは、

 
のような挙動になります。この回路は、

 
のような形でつないでいます。吸着ピストンは伸びた状態にする必要があるので、NOTで接続していますが、このピストンが伸びた状態だと接点経由で信号が送られる仕様になっています。

 この状態で11のときに切れる状態を作ればいいので、ANDを使用して11の条件を取得して、その条件になったらNOT回路に信号を送るようにしてあります。

 そうすることで、11のときにピストンが縮んで接点がなくなるので、信号が物理的に切れる(断線する)ので、オフになります。この回路では、

  ■ 接点
  ■ ANDゲート

の双方に信号を送っていますが、信号を優先してANDゲートに向かわせる必要があるので、出力側に向かう信号に対して遅延を入れる必要があります。この回路では接点を使用しているので、レッドストーンリピーターを使用していますから、ここで遅延を入れることで、出力よりも先にANDゲートに信号を送る仕様になっています。

 遅延については、レッドストーンリピーターの基本仕様なので、どのエディションでも使えますが、使用すると
 

 

のようになりますが、1段階で0.1秒単位の遅延を入れることが出来ます。

 レッドストーンリピーターでは、

  ■ 通 常 : ■-■===
  ■ 1段階 : ■-=■==
  ■ 2段階 : ■-==■=
  ■ 3段階 : ■-===■

のような変化を加えることで、何もしていない状態と比較した際に0.1〜0.3秒の遅延を追加することが出来ます。

 遅延を使用すると





のような回路を作ることが出来ますが、回路の選択時に速度差を用意することが出来ます。

 この回路では、並列回路を作って遅延を入れることで処理の優先度を指定しているのですが、回路を作った場合には直列回路のように処理の実行には順番が生じるので、その順番で動作すれば最適化の可を考えてなれを作ることになります。

 ちなみに、レッドストーンリピーターはダイオードのように一方向にしか信号が流れないのですが、レッドストーンを横においても信号が鑑賞しない特性があります。

 これとは別に、レッドストーンリピーターのロック機構を使ったものも作ってみました。



 レッドストーンリピーターは、ブロックに信号を送ると対象に信号を落としてレッドストーンブロックのような状態にできるのですが、レッドストーンリピーター自体は側面からの信号を通さない仕様になっています。その為、信号が止まってしまうのですが、マインクラフトでは全エディションで共通して、レッドストーンリピーターに対してレッドストーンリピーターを側面に配置してから信号を流すと、レッドストーンリピーターにロックがかかるようになっています。実際に使ってみると、
 


のようになります。ロックをかけると、ロックをかける前の状態を維持することができるので、0と1の信号の状態を維持することができるので、メモリーとして使用することが出来ます。これもラッチの一種になりますが、

  ■ 送信側  : パルサー
  ■ ロック側 : ラッチ機構が必要
 
になるので、ロック側にはレバーと同じように信号を維持する機能を用意する必要があるので、回路内の信号で制御をする際には、

  ■ ラッチ回路(セットとリセットがある)
  ■ フリップフロップ回路(信号を反転できる)

を使うことになります。

信号の伝達をすると



のようにロックがかかるのですが、これを使用することで遅延と切断をレッドストーンリピーター部分で実装できるので
のようになるので、信号の出ていない状態ではロックがかかります。



この状態を使うことで、信号が伝達されない状態を作ることが出来ますから、もう片方の信号の伝達速度を早くしておけば、反対側の判定に信号を送ることはなくなるので、ロック機構を使っても同じ構造の回路を作ることが出来ます。実際に動かすと


のようになりますが、同じ回路を作る場合でも複数のアプローチが存在します。