フリップフロップの進化論
「「おはようございます。ご主人様」」
…どうしてこうなった…
朝、目が醒めるとユリスとリジットが2人並んで挨拶をする。
そして、その前のテーブルには朝ごはんが山盛りに用意されていた。
ユリスが作ったものと、リジットが作ったものだ。
「あのな…どうして毎朝こんな大量に作るんだ。」
目の前に山盛りにされている朝食。
サンドイッチ、野菜スープ、リゾット、サラダふた皿、果物盛り合わせ、オムレツ、スクランブルエッグ、魚のフライに何故かステーキまである。ホテルの朝食バイキングのようだ…。
「わ、わたしはご主人様の奴隷として、朝の支度をいつも通りにしているだけです。」
ユリスはそう言うが、彼女が作った分だけ見ても明らかに以前より多い。
…リジットに対抗して多く作ってるだろ…。
「あら、わたくしは宿の端女として、お客様に朝食をご用意しているだけですわよ?」
「私たち朝食は頼んでません!だいたい宿の仕事というなら食堂っで泊まっている人みんなに振る舞えばいいじゃないですか」
これも毎朝の光景だ。ユリスはリジットに仕事が取られるのが嫌らしく、毎朝噛み付いて居るのだが、リジットはそれを一向に介さない。しかも、本職メイドだけあって、家事炊事は完璧だからタチが悪い。
「今こちらの宿にはウィル様しか泊まられておりません。でしたら、お部屋に直接お持ちしたほうが良いではありませんか?」
リジットはかすかに微笑みながら答える。そうなのだ、この宿にリジットが来て以来、宿泊客は俺とユリスだけなのだ。なので、リジットは俺たち専属の店員になってしまっている。
流石に、他の宿泊者を追い出すような事まではラッセンもしないと思うが…いや、ありうるか?
「はぁ…、取り敢えずはコレを食べきるか。」
俺は朝はあまり食欲がないので正直この量はきつい。しかし、元来食事を残すのが嫌いなので無理矢理詰め込んでいる。足の怪我でロクに動けないところにこんなカロリーオーバーをすれば、当然体が丸くなるよな…。
「リジット。俺たちは宿の朝食はいらない。夕飯だけでいいんだ。宿泊者からの要望、聞いてくれるよな?」
「はい、もしも召し上がらないようでしたら残していただいて構いませんから。」
だから、残すのは嫌なんだよっ!
…と言っても聞く気はないな、この女は。
リジットの狙い、つまりはその本当の主人であるラッセンの狙いはモールス君だ。このモールス君の販売権、あるいは開発方法を狙っているのだと思われる。確かにモールス君の商品価値は魅力的だろう。今まで確実な遠距離通信がなかったこの世界にイノベーションを巻き起こせるのは間違いないのだ。だからこそ、俺もその発表の方法を迷ってきた。
きっかけは、ユリスが攫われたときだ。俺はラッセンに協力を求めるためにモールス君の事を話してしまった。商売熱心なラッセン、事件終息後すぐに商品化の話しがあったが、俺は断っている。まだ、完成もしていなかったし、売り方についても慎重になるべきだと考えたからだ。それで、ドーハン達のトレーニングを受け、帰ってきたらこの有様という事だ。まぁ、ラッセンが一度や二度で諦めるとは思ってなかったが、まさかこんな方法でくるとは…。
正直意味がわからない。産業スパイにしてはあからさまにすぎる。ハニトラップのつもりか?しかし、ばれてるハニートラップなんて、なんの意味があるのだ。そんなの俺に美味しいだけ…ゴホン…
まぁ、そんな訳でリジットが身中の虫なのだが、宿に雇われてるという形の手前クビにする事も出来ない。怪我が治るまで、警戒しながらも付き合っていくしかないだろう。
取り敢えず目の前の朝食をやっつける訳だが、あんな一人朝食バイキング、朝から食べきれるはずがなく、宿の主人のブルーテスとルーシアにヘルプを求める。
最近は五人で朝食を囲うのが日課になりつつある。
「まぁまぁ、なんだかいつも悪いねえ。」
ルーシアが嬉しそうにサンドイッチを頬ばる。
ブルーテスもガツガツとステーキを貪り、焼き加減について講釈を立てている。ちなみにそれを聞き取るルーシアの目は真剣だ。
その隙にリジットはさりげなくお茶をみんなにサーブする。そしてメイドとしての格を見せつけたというドヤ顔をユリスにさりげなく向け、それに気づいたユリスが頬を膨らませる…
あぁ、なんて忙しい朝食なんだ…。
一番問題なのが、この朝食、費用は俺もちということだ。ユリスの作った分はともかく、なんでリジットが作った分まで払わにゃいかんのだ。…旨いけど…。
「一体朝食にいくらかかってるんだろ…」
ため息まじりにつぶやくと、ブルーテスがぼそりと言う。
「俺らが食った分は宿代からひいとく。気にするな。」
…くぅ、ブルーテス。あんたいい男じゃねぇか。
思わず涙が溢れそうになる。
「そういえば…」
ブルーテスがなにか思いついたようで、視線をルーシアに向ける。
「最近、伝票処理サボってないか?」
「ウグッ…な、なんのことかしら?」
むせそうになりながら、ルーシアの表情がこわばる。
「いくら客がウィルしかいないといってもサボるな。うちは食堂もやってるんだぞ?」
「う〜、だって計算て苦手なんだもん。ユリスちゃん!また手伝って〜。」
「え、はい。かまいませんよ?」
ルーシアさん、ユリスにそんな事させてたのか…。
ユリスは4桁の掛け算までなら一瞬で暗算出来るくらいに計算が得意だ。たしかに電卓のないこの世界。会計処理をさせたらかなり有能かも知れない。
……電卓…かぁ。
「馬鹿野郎!客にそんな事させんじゃねぇっ!」
と、ブルーテスの雷が落ちる。
ちょっと自分の思考に入りかけていた俺までビクッとしてしまった。
いや、そりゃそうだよな。客に計算させちゃまずいよ。
「ふええ、マスターゴメンなさい〜。クビにしないで〜。わたし、ココを追い出されたら行くところないのぉ。」
ルーシアが涙目でイヤイヤしてる。…なんか微笑ましい。
「そういえば、お二人はご結婚されてるわけではないんですか?」
リジットがお茶を継ぎ足しながら聞いてきた。確かに、一緒にこの宿に住んでるし、夫婦なのかと思っていたのだが、さっきの話しからすると住み込みで働いているだけなのだろうか。
「違う。こいつは昔の馴染みだ。俺がこの店を開いて暫くしたら、転がり込んできたんだよ。」
憮然とした表情のブルーテス。
「あたしはね、この宿でいい男見つけて、たらし込んで、そんで…クフフ…幸せなお嫁さん生活をもぎ取るのよ」
「おい、うちはそう言う宿じゃねぇぞ。」
「いいじゃないのさ。個人の色恋くらい好きにさせとくれよ。」
「……フン」
ブルーテスが少しつまらなそうに鼻をならす。
それに比べてリジットは興味深々だ。ユリスも話しには入ってこないが聞き耳は立てている。
「それはとても興味深いです。それで戦果のほどは?」
「それがねえ…やって来るのは射程範囲外のオジンか若くても貧乏な旅商人くらい。後はゴロツキみたいのがいるけどこれは問題外だしねぇ。」
戦果はふるってないようだ。
「最近来たのなんて、駆け出し商人のくせに、早々に女2人はべらすような奴でさぁ。流石に私も3人目ってのはねえ」
…あれ?ルーシアの視線がなんか刺さる。
俺ですか?
女2人はべらすって俺の事ですか?
「ちょっ、俺はそんな…」
「あはは、冗談よ。あなたには、ちょ〜っとだけ期待してるからね。この先も長く、宿スリーピング バッカスを御贔屓にね。」
そう言ってルーシアがニッコリ。
ブルーテスはまた「フンッ」と、鼻をならした。
「いいから、お前はサッサと帳簿つけろ。月末の締めまでに出来なきゃ本当にクビにするぞ。」
「そんなぁ、あと一週間もないじゃない〜。」
再び涙目になるル-シア。
…一週間もあれば普通に出来そうだけどな。
と、思ったが口には出さない。
それよりも、俺は新しい商品の構想をこっそりと固めていった。
食事の終わった俺は一人部屋にこもって作業を開始した。
今回作成するのは電卓、まぁ計算機だな。7桁まで計算できるようにするつもりだ。
一の位は銅貨1枚に相当するとして、金貨99999枚、銀貨9枚、銅貨9枚まで計算できる。
日本円なら約10億円だ。
ただしできるのは足し算と引き算だけだ。
…しょぼい言うなし…。
掛け算?割り算?知らんなっ
…いや、そのうち実装するつもりだけど、まずは…ね。
さて、気を取り直し必要な構成要素を考えよう。
-------------以下なんとなく回路っぽいの話--------------------
まず数字を打ち込む「入力部」
入力された値と計算結果を記録する「メモリ」
足し算引き算をする「演算部」
結果を表示する「表示部」
そして忘れてはいけないのが2進数を10進数に変換する「デコーダ」が必要だ。
…若干のデコーダが必要だと気付いた時点で心が折れそうになったのは内緒だ。
さて、まずは入力部。これは圧力を魔力信号に変える「プス」というスペルがある。
これをつかえば普通の押しボタンスイッチとして使えるだろう。
必要な入力は「0」から「9」「+」「-」「=」「CLR」だ。
このそれぞれを入力を2進数、あるいは制御信号に変換すればよい。
本当は入力したときの桁上げ処理に一工夫必要だが、まずは省略。
次にメモリ。これが今回のキモだ。
まず用意するのはマッサージ玉の時に作った非安定マルチバイブレータ回路、
こいつを進化させることで双安定マルチバイブレータ回路に
さらに超進化させてRS-フリップフロップ
おまけで最終進化でD-フリップフロップを作る。
Dフリップフロップ(以下D-FF)の作動は、入力端子Dに入った信号をクロックの入力で記憶し、次のクロックまでその出力を保持する回路だ。この動作から1bitのメモリとも言われる最小単位のメモリだ。パソコンなんかでSRAMとばれるメモリの正体はこのD-FFの集合体だ。ちなみに電源が落ちると記憶が消えることから揮発性メモリとも呼ばれる。
このD-FFを使えば入力した数、計算結果の数、表示部に出力する数を記憶することができるようになるわけだ。
さて次。
演算部だがまずは論理回路の基本であるAND回路とOR回路を作成する。
AND回路はトランジスタ一つとダイオード二つと抵抗。
OR回路はトランジスタ二つと抵抗で作る。
AND回路は入力A,B両方が1(High)の時、1(High)出力、それ以外の入力では0(Low)を出力する。
OR回路は入力A,Bどちらかが1(High)の時、1(High)出力、それ以外の入力では0(Low)を出力する。
あとはNOT回路が必要だが、これはすでにノルテがあるので問題ない。
ちなみにAND回路の出力をNOTで反転するとOR回路に、OR回路の出力を反転するとAND回路にになるのでじつはどちらか一つ作ればいいという考え方もある。
そして、このAND、OR、NOTを三身合体してできるのが
「半加算器」
さらにこいつを進化させて
「全加算器」
を錬成する。
全加算器は1bitの足し算を実現してくれる回路だ。さらに繰り上げ(桁上がり)にも対応した優れものだ。
続いて減算回路を作成する。
…といっても本当は減算回路なる回路はない。
A-Bの時はBをマイナスの数字として扱う。このマイナスの数字の概念を「補数(2の補数)」という。
意味が分かりにくいかもしれないが、「AからBを引く」というのを「Aに-Bを足す」という概念で計算するといえばいいだろうか。
実はこの補数を作る回路はnotと全加算回路で簡単に作成可能だ。(すべてのビットを反転して1を足す)
この補数器と全加算器を合わせれば足し算引き算が可能な演算回路が完成する。
そして表示部。
これは出力部。これはウィスプの発光を使うことにする。光を小さく設定したウィスプを7セグメントLEDの形に配置する。
7セグメントLEDは7つの発光パーツでできた表示機で0から9までを表示できる。
LEDタイプはあまり見なくなったが、今でも液晶の表示ではよく使われている方式だ。
最後…デコーダだ。
2進数の論理回路で計算した答えは当然2進数で表記される。
しかし、それでは計算機として役に立たない。
我々のわかりやすい10進数に直さなくてはならない。
さて、この10進数デコーダ回路。先輩たちならどう作るだろうか。
とりあえず俺は引き算で実現することにした。
今回の計算機は7桁。つまり百万の単位まである。
そこでまず計算結果から百万を引く。引けなかったら(マイナスになるようなら)その計算は取り消して次の桁に移行。
引けたら百万の位を1プラスして、さらに結果から百万引く。これを引けなくなるまで繰り返す。これで百万の位の数字を確定させる。
確定できたら残った数字から今度は十万を引く。引けたら十万の位を1プラスしてさらに…
これを百万から十まで繰り返すのだ。ちなみに1の位は最後に残った数字なので計算は必要ない。
実現させるためには簡単なものとはいえシーケンサを実装する必要がある。
…論理回路の組み合わせで?
ちょっと想像するだけでもなかなか楽しいことになりそうなのがわかる。
ま、まぁ、ANDにORにフリップフロップ。必要な構成要素はあるしなんとかなる…と思いたい。
…PIC(Peripheral Interface Controller)があればなぁ。
…PLD(Programmable Logic Device)でもいいんだけどなぁ。
嘆息したところで始まらない。
全体回路の流れが決まったところで、俺は回路作成に取り掛かった。
んー、回路の説明難しい。
文字列だけじゃ限界が(私の表現力の限界が)ありますね。
時間ができたら図示もいれていけたらなぁと思います。(なかなか出来ませんが…。)
まぁ、それにしたってフレーバーテキストの域は出ません。
本来ならFETだってMOS-FETとジャンクションFETでは全然作動が違いますし、
トランジスタもpnpとnpnで違います。
そもそも、私はD-FFをディスクリートで組んだことなんてないですしっ。(←三流半技術者)
ちなみに、そんな人はいないと思いますが、この文章だけ見て回路を組んでも、絶対うまく動きません。
それは、保障します。
プリセットとクリアの扱い、信号遅延に対する対策等々いろいろ抜けています。
まぁ、実際に電子工作で作るならPICだの74系ICだの使えばいろいろ解決ですが…。
さて、一応怪しいところは教科書見ながら書いているので、嘘はあまり書いてないと思いますが、
万が一嘘を発見したら、ご指摘いただけると助かります。
(恥ずかしい限りですが…)
そんなグダグダな物語になってきましたが、いかがでしたでしょうか。
これからもお付き合いいただければ、とてもうれしいです。