便利なレッドストーン回路シミュレータの一覧とソースコード

マインクラフトでレッドストーン回路をやってみると、単純な回路でもかなりの大きさになるのがわかります。移動してブロックを設置するのも結構面倒です。ちょっと回路を試す場合はレッドストーン回路シミュレータが便利です。

レッドストーン回路シミュレータを調べると英語版でいくつか種類が見つかったので有名なものををまとめてみます。

Baezons redstone simulator

http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1260528-baezons-redstone-simulator-v2-2

Baezonsさんが作成したレッドストーンシミュレータです。Baezonさんのシミュレーターを基本として、いろんな人が拡張したようです。ソースコードはgithubにあります。

https://github.com/digama0/MCRedstoneSim

 

Simnik Circuit Simulator

http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/344005-circuit-simulator-v0-82-1-0-0-compatibel

リピーターを使えるようにした物です。現在はソースコードはダウンロードできないようです。

Circuit Simulator v0.81-rek

http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/342852-circuit-simulator-v0-81-rek

Simnik Circuit Simulatorをフォークしてピストンを追加したものです。ソースコードはzipファイル内にあります。

Mordritch’s JavaScript Redstone Simulator

オンラインですぐ試せるレッドストーン回路シミュレータです。コンパレータはありませんが、リピーターやピストンもあるので一通り遊べそうです。

http://mordritch.com/mc_rss/

Minifyしたソースコードは公開していますが、元のコードは公開していないようです。ですが、以下githubに似たようなコードがあるようです。

https://github.com/JonathanLydall/JavaScript-Redstone-Simulator

 

マインクラフトのDラッチの回路図を書く

マインクラフトは、リピーターをロックさせる仕組みで簡単にDフリップフロップ回路が作成できますが、今回はより理解を深めるため、マインクラフトの回路図から、実世界のDラッチの回路図を書いて確認します。

マインクラフトの回路の信号方向 でも書きましたが、以下のようなマインクラフトの回路図は、レッドストーントーチにより信号の方向性が生まれるので注意する必要があります。

上部がDラッチ

https://www26.atwiki.jp/minecraft/pages/26.html 引用

 

 

真理値表

C D Q ~Q
 0  0  0
 0  1  1
 1  0  保持
 1  1  保持

www.falstad.comで書いたDラッチの回路図

http://tinyurl.com/j46pcvm

Logisimで書いたDラッチの回路図

まとめ

真理値表通りに動くのでたぶんこの回路図であっていると思います。マインクラフトの回路図から、実世界で使われる回路図にしてみました。ポイントとしては、レッドストーントーチが指向性を持つので、その先のワイヤーが交差する箇所で、単純に分配しているのか、OR回路になって1つのワイヤーになるのかをしっかり確認することです。

 

 


マインクラフトの回路の信号方向

マインクラフトではレッドストーントーチとブロックを組み合わせてNOT回路が作成できます。またこのような回路の場合、信号の流れが特定方向に固定されます。

https://www26.atwiki.jp/minecraft/pages/1037.html

Aから~Q側へ信号が流れそうですが、黄色いブロックについているレッドストーントーチがあるため、Aから~Q側には流れません。回路図で書くと以下になります。

真理値表

A B Q ~Q
 0  0  1  0
 0  1  0  1
 1  0  1  0
 1  1  1  1

 

Dフリップフロップ回路を作成するときに、このような構造が出てきます。

 


マインクラフトでDラッチ

Dフリップフロップ回路はデータを保存できるので、複数並べるとレジスターになります。最新のマインクラフトではレッドストーン回路のリピーターで信号を止めることができるため、これで先ずはDラッチ回路を作ってみます。

 

2bitのレジスター

参考資料

https://www26.atwiki.jp/minecraft/pages/26.html#id_c8183ecb

 

Dラッチ回路

画像のようにリピーターを交差するような感じで配置します。

リピーターをこのように並べると、以下Gif画像のように信号が伝わらないように遮断棒がでてきます。

右上のリピーターに、棒が表示される

左側のリピーターのように棒が横たわると、リピーター上を信号が伝わらなくなります。

遮断棒が下りているので、スイッチを押しても信号が伝わらない。

もう一度、リピーターを見てみましょう。リピーターは、レッドストーントーチで出来ています。遮断機が下りて、左のスイッチからの信号が伝わらなくなります。ですが、リピーターのレッドストーントーチは、以前の状態を保持しているので、出力も以前の状態になります。現在のスイッチの変更は関係なくなります。これは遮断機が下りた時の状態を保持している事になります。

つまり、これを並べるとメモリーやレジスターになります。

リピーター上のレッドストーントーチが遮断機が下りても、前の状態を保持

黄色いブロックにレッドストーントーチを横につけてNOT回路を作っていますが、これは、クロックを表す側のリピーターがONになったときに、(=Highになったとき)に、状態を保持するためです。これをハイレベルエッジと言います。

マインクラフトではまだわかりませんが、現実世界のハードウェアでは、このレベルエッジを適宜切り替えて使っているそうです。

 

まとめ

マインクラフトでDラッチ回路を作成しました。次回はDフリップフロップ回路を作って、クロック入力の立ち上がり時のみ入力状態が反映され、それ以外では保持されるようにしてみます。

 

Falstad’s Curcit Simulatorでデジタル回路の書き方(注意点)

この記事では、Falstad’s Curcuit Simulator Appletでデジタル回路を書く方法と注意点を簡単に説明します。アナログ回路が豊富にありますが、デジタル回路の順序回路の勉強のために使うため、そこだけに特化して説明します。またワイヤーの配線時に注意が必要なのでそこも詳しく説明します。

私の現状

Logisimでデジタル回路を学び、最近はマインクラフトで回路を実装してみようといろいろ調べています。Logismは教育用の無料のシミュレータで、レジスターやRAM、ROM、FlipFlop回路などはあらかじめICのような部品として用意されています。これをAND、ORなどの論理回路を使って書きたいですが、Logisimでは、順序回路のようなフィードバックがある回路は信号をシミュレートしていないので正常に動作しません。

マインクラフトでCPUを作ろうとすると、保存する仕組みをマインクラフトで実装する必要があります。ですが、マインクラフトのレッドストーン回路はいろいろ癖があるので、まずはFalstad’s Curcuit Simulator Appletで回路図を書くことにしました。

Falstad’s Curcuit Simulator Appletの基本操作

falstad’s Curcuit Simulatorは、信号のシミュレートもしているので、コンデンサーや抵抗を使うような回路は、電気の流れも確認できます。

視覚的に分かりやすい!

操作は、初心者向きではありません。何らかのシミュレーターなどを使った人向けで、右クリックのコンテキストメニューから各部品を選択するか、キーボードのショートカットで部品を選択します。

削除

Ctrl+Aで全選択して、DELETEキー

または、メニュー[Circuits]->[Blank Circuit]

選択モード

スペースキーで選択モードになります。またはShiftキーで範囲選択でも選択モードになります。スペースキーを押して現在選択モードであるかは、右クリックのコンテキストメニューから確認できます。またアイコンが十字マーク出ない場合は、選択モードです。

ワイヤーが斜めになっていたり、移動したり、引き延ばしたりするときは、選択モードで行うので、スペースキーを使う事をお勧めします。

シフトキーを押しながら範囲選択しているところ

デジタル回路の選択方法

メニューの[Draw]または右クリックで、コンテキストメニューが表示されるので、ここからワイヤーやデジタル回路を選択します。

右クリックして、[Logic Gates, Input and Output]を開いたところ
デジタル回路(論理回路)を書く場合は、コンテキストメニューの[Add Wire]、[Logic Gates, Input And Output]、[Digital Chips]になります。上から5場面目に[Outputs and Labels]があるので、ここからLEDやラベルなども選択できます。

Logisimと同様に順序回路などもICとして用意されている

部品の配置方法

部品の配置方法が独特でコンテキストメニューで選択して、クリックしながら、つまりドラッグで配置します。一般的なソフトウェアは、アイテムを選択してマウスを移動すると、そのアイコンが透過で表示されたりして分かりやすくクリックで配置するものも多いので、これが分かっていないと部品を配置できずに戸惑います。

配線の調整

ワイヤーを選択して、点から点を繋げると接続できます。また選択モードにしてワイヤーを選択すれば移動や長さの調整ができます。

配線の注意!!!

配線は点と点を繋げると接続します。点と線では接続されません。

この回路シミュレータは、点から線に接続すると、赤い点が表示されて接続しません。点から線にワイヤーを引くと、交差する部分が点になるので接続しているように見えますが接続していません。

非常に直感的ではなく、かつエラーが分かりづらいです。ワイヤーを移動したり長さを調節して、必ず点と点で接続してください。

以下画像は、接続していない例です。新しいワイヤーの点を、線に向かって繋げているので、赤点がひょうじされて接続されていません。

交差して赤い点が表示されるが接続されていない!!!

次の画像は、新しいワイヤーの点を、別のワイヤーの点にむかって繋げているので、白点が表示されて接続されています。

ワイヤーは点と点で接続!!!

SRラッチの例

以下画面の上部のSRラッチは、ワイヤーの点と線で繋げようとしているため、赤点が表示されて接続されていません。一方、下のSRラッチは、ワイヤーの長さを調節して、点と点で繋げているため、白点で表示されて接続されています。

ワイヤーを選択して、回路図のワイヤーなどの上でマウスボタンを押し続けると以下のように部品とワイヤーの接続点が確認できます。また赤点が出た場合は、右下のメッセージで、[2 bad connections]のように表示されていますが、これも非常に分かりづらいです。

 

まとめ

Falstad’s Curcit Simulatorで論理回路を作るときの操作方法を説明しました。非常に独特な操作方法ですが、わかってしまえば手軽に試せます。Logisimは使いやすいですが、順序回路をうまく扱えないので、このFalstad’s Curcit Simulatorを併用するとよさそうです。

 

マインクラフトのレッドストーン回路でマルチプレクサー

今回は、マインクラフトで組み合わせ回路のマルチプレクサーを作りました。2bitの信号を切り替えるだけですが、マインクラフトでは単純に回路図をレッドストーン回路で実現すると、1つ1つのブロックが多いため最適化する必要があるのが分かりました。

logisimで作ったマルチプレクサーの回路図
マインクラフトでマルチプレクサーを実装

画面キャプチャーのように、2ビットの切り替えだけでも何も考えずにブロックを配置するとこの大きさです。マインクラフトは、レッドストーンは15個分の信号しか伝わらないため、大きくすればするほどリピーターで調整する必要があります。

16ビットのマルチプレクサーを作るとなると、ブロックの並べ方をしっかり学ばないといけないようです。

 

マインクラフトのレッドストーンでXOR回路

マインクラフトのレッドーストーンで排他的論理和のXOR回路を作成しました。

 

http://minecraft.gamepedia.com/File:StandardLogicGates.png

 

今回作成した排他的論理和XOR回路

マインクラフトでは、レッドストーンとブロックを繋げてさらにレッドストーントーチを置くことでNOT回路になります。そして高低差をうまく使うことで小さなサイズで、XOR回路を作る事が可能です。

一度Logisimで、回路図を書いてみました。レッドストーン回路はどこが接続されているのかわかりづらいですが、以下のような回路図にしてしまうと分かりやすいです。また、XOR回路の出力にNOT回路を付けるとXNOR回路になります。