/ «2003-10-23 (Thu) ^ 2003-10-25 (Sat)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2003-10-24 (Fri)

[Books] ゼロから学ぶディジタル論理回路

フリップフロップにはまる

さて、ここのところご無沙汰になっている「CPUの創りかた」だが、停滞している訳ではない。この本を通読した後、私の本能が「まだ手は付けるな」と警告しているような気がしたため、何が足りないのかしばらく考えていたのである。

もう一度、頭の中を整理してみる。CPUの創りかたの中から、自分にとって最も重要なページを1つだけ選べと言われたら、どうするか?私の場合は、迷わず169ページ。可愛いお姉さんが「迷ったらココに戻ってくるコト」とハタを手にしているイラストが印象的なページ。

この著者の本質の掴み方は、実に素晴らしい。クロックがつながったフリップフロップただひとつが、CPU の本質である転送機能を備えていると言い切っている(イラストも勘所を押さえている)。そして、次のページで NOT ゲートをつなぐことで、演算処理が可能な1ビットCPUを紹介している。この2ページを読むことで、読者は「演算命令は転送命令の修飾型に過ぎない」ことを知るのである。

おかげで開眼することができた訳だが、肝心な点が抜けている。フリップフロップが重要であることは分かったが、171ページからの「おまけ フリップ・フロップの仕組み」を読んでも、私にはその内容が理解できなかった。よく分からんのである。ここで思考が停止していた訳だ。

そこで本日、以前購入した秋田純一氏による「ゼロから学ぶディジタル論理回路」を引っ張り出す。恥ずかしながら、この本を購入した時は、カルノー図が登場したあたりで挫折していた。よって、本棚で埃をかぶっていたのだが、気になる存在ではあったので、CPUの創りかた読了後に再度挑戦してみた。

すると・・今度は分かるのである。「凄いぞ!>俺」と半ば興奮しながら、読み進める。CPUの創りかたを通読することで、いつのまにか私には不完全ながらも論理回路の Overview が身に付いていたのだろう。フリップフロップの重要性も理解していたので、途中で放り出すことなく、第4章に登場する各種フリップフロップの解説を読み終えることが出来た。

一応その全体を読み終えたが、本書の白眉は何と言っても 4.2章 "記憶する論理回路:フリップフロップ" である。フリップフロップは以前から私を悩ませる存在であった。ぐるっと回ってニャンコの目ではないが、メビウスの輪のようなダブル NAND 回路は、人智を越えた存在だとばかり思っていた。

が、秋田氏は言う。情報の安定はインバーターペアによってもたらされる(これはさすがの私でも分かる)。そして、NAND 回路は、片方の入力を1にすることでインバーター、0にすれば出力は1に固定されるのだと。つまり、フリップフロップの正体とは、インバーターペアだった訳だ、素晴らしすぎる!

深夜遅く、私は再びアルキメデスの気分に浸る。神の啓示とは、こういうことなのかしらんと、愚考する。いずれにせよ、迷える子羊は救われた。こうなったら鬼に金棒である。これまで Black box だった、ラッチ・エッジトリガの技術背景も了解した。

残念ながら、本書の全体構成は中途半端であり、CPUの創りかたには大きく劣る。しかし、2冊を組み合わせることで、1+1=2ではなく01+01=10になるのである。つまり一桁のオーダーで、情報の重みが増す訳だ。これは大切である。

この世に完全な書など存在しない。大事なことは、1冊1冊に含まれた本質を抽出し、得られた情報を自分の頭で統合整理する点にある。このためには、文献や書籍を著者の言いなりになって漫然と読み進めるのではなく、常に「情報の軽重」を意識し、日々のトレーニングを積む必要がある。

それにしても NAND というのは面白い。74シリーズの中で、0番を冠しているだけのことはある。早速、RSコンポーネンツに注文。到着を待って、フリップフロップの自作に挑戦だ!