以下まんがタイムきららMAX2019年1月号のネタバレを含みます
続きを読む【Minecraft】高速シリアル通信回路作成法
読者諸兄の皆々様、おはこんばんちわ。
マイクラをしたことのある皆様もしたことのない皆様も、恐らくマイクラで電卓*2を実装する動画くらいは見たことがあると思います。見ているだけでクソ威圧感があると思いますが、あれの威圧感の大体の根源はワイヤードロジック*3で回路が実装されているところからくるものだと思うわけです。
それはそう。ワイヤードロジックで実装されたENIAC*4とかいう現代からすればラズパイ*5以下のクソザコナメクジが部屋一つを占拠していたわけです。ワイヤードロジックにはどう頑張っても限界があるのです。
プログラム内蔵方式を実装して、カウンタやフラグレジスタでデータをあれこれするほうが絶対良いに決まっている。そう考えたわけです。しかし、そうなると数Bit長の信号を連続的に流す必要が出てくる。
そこでシリアル通信*6回路が必要になってくるわけです。
まあ、実際のところの動機は遠距離で複数の命令を送るにはワイヤードロジックでは流石に厳しい*7という事情から来るわけですが*8、似たようなものなので大丈夫でしょう。
というわけで、早速完成したシリアル通信回路の様子を御覧いただきたいと思います。
マイクラ シリアル通信送信・受信回路 pic.twitter.com/ntxNtTHhd8
— 市川 旭 (@Ichikawa_ykhm) October 30, 2018
最初に出てくる二段式のコンソール*9で、右下から順に0、1、1、1の4Bitと、右上から順に0、1、0、1の4Bit、併せて8Bit分の命令を入力しています。送信ボタンを押すとこれが1チック(リピータ1遅延分)の長さで出力され、受信回路で受け取り結果を表示します。
ね?簡単でしょ?
だけだとわからんので、そこそこ詳しい説明をします。
洞窟内で制作したので非常に暗いですが、送信用回路はこんな感じです。
基本的には二段式なだけでこの動画のパクリです。唯一違うのはリピータの遅延を最短の1にしていること。
余談ですが、受信回路をピストン式にすると1チックでBitを表現しようとするとどこかで詰むのでこれをそのまま遅延削減とかはしないほうが良いです。筆者はやろうとしてサクッと詰みました。結果、受信回路の改良に乗り出したわけです。
相対する受信回路はこちら。信号分のリピータをタイミングよく止めることでうまいこと信号を取り出しています。
リセット用回路なんかがあって見づらいので、原理だけ実装した初期の回路を見てもらったほうが理解が早いと思います。
シリアル通信じゅしんかいr pic.twitter.com/ygVv0RZAZH
— 市川 旭 (@Ichikawa_ykhm) October 29, 2018
原理としては、まず信号を入り口で分岐させて、それぞれを遅延線*10とラッチ回路*11に流します。遅延線側は、リピータで1チック分の遅延を作る以外はただただ普通にリピータで実装した遅延線に信号を送ります。ラッチ回路側は、最大遅延のリピータ2つで8チック分信号を遅らせた上でラッチ回路の2チック分の遅延を経由し、停止用のリピータを介して遅延線のリピータを停止させます。こうすることで、信号線用のリピータに8Bit分の信号が入力された時(1遅延+起動用パルス+8Bit長データ=>10チック経過後)、ラッチ回路を経由した起動用パルスが停止用のリピータに到達し、情報を保持します。
情報を保持しているだけだと読み出せないので、いい感じに回路を伸ばしたのがディスプレイ付きの改良型回路になるわけです。遅延線メモリから直接8Bit分出せるんじゃないかと思ったけどクロック回路とカウンターを付帯させないといけないのでちょっとめんどいので安直に実装しました。
とまあ、こんな感じで8Bitのシリアル通信を1チック長で送ることに成功したわけです。
通信速度にして10bps程度。ピストン式より明らかに早いとはいえ……レベルではありつつも、電卓などで応用すれば小型化で省けるリピータと相殺出来て高速化出来るんじゃないかなと思うものです。
というわけで、皆様も是非レッドストーン回路でシリアル通信を実践し、小型で汎用的なマイクロプログラムをマイクラで実装しましょう!!
その時筆者にこっそり教えて頂けると喜んで見に行くのでよろしくオナシャス!
*1:Mojang ABが開発したゲーム。面白い
*2:卓上電子計算機。ここでは、本来の電卓というよりは基本的な四則演算可能な計算機の意味で用いている
*3:物理的な結線で回路を実装する方式。大昔の電話交換機がイメージしやすいと思う
*4:最初期の汎用電子計算機の一つ
*5:ラズペリーパイ。安いマイクロコンピュータ?パーソナルコンピュータ?シングルボードコンピュータ
*6:データを1Bitづつ逐次的に送信するもの。対義語はパラレル通信
*7:命令の数だけバスが必要になり、保守管理がめんどい、敷設がめんどい、見た目リアルスパゲティと化すなど、様々な厳しさがある
*9:制御卓のこと
*10:遅延線メモリ。遅延線の一種である水銀遅延線は最初期のコンピュータメモリとして著名。それ以外では、初期の卓上電子計算機などは結果の保持に遅延線を用いたものも多い。データはシーケンシャルRWしか出来ないが、シーケンシャルでかつそこそこ大きいデータを保持するには便利だった
*11:1Bitの情報を保持できる回路。ここではRSラッチを指す。これは2つのNORゲートで実装される
オタクの村
昔々あるところに、オタクの共同体がありました。
一つの思想でつながり、一体感を持ち、社会からの疎外感を持っていたオタクたちはすぐに意気投合しました。
オタクたちは既往の社会を変えようとしました。しかし、市民は冷淡でした。体制は既往の社会を維持しようとオタクを弾圧し始め、市民はそれを見て見ぬ振りをしていました。
オタクたちは既往の社会の誤りを指摘し、熱心に市民を説得しようとしました。しかし、一部の人民は体制をけしかけ、オタクらを迫害し始めました。
やがてオタクと社会は分断されていきました。特に、一部の過激なオタクは各地で闘争を繰り広げ、市民と軋轢を生んでいきました。
一方で、オタクの考えに共感する人々もいました。しかし、体制はその人々の土地にも弾圧を加えはじめました。
オタクは各地から集まりその土地を守ろうとしました。オタクの村とも言えるような土地を守るべく必死でした。土地収用委員会を襲撃してまでも土地を守ろうとしたのです。
しかし、結局体制には抗えませんでした。
市民も冷淡でした。自由や体制の抑圧よりも、経済的利益の方が重要とオタクを非難するものまで居ました。
やがて、年月が経ち、オタクたちも高齢化していきました。経済的利益に屈し、土地は次々と手放されていきました。
ある地主に聞きました「息子さんにもこの闘争を続けてほしいですか?」
地主は言いました「息子は自由に暮らしてほしい。これは自分の代までだ」と。
若いやつには負けない
という老人はよく見かけますが、身の程を知ったほうが良いです。世界はそんなに狭くない。
続きを読む