2025年06月17日
- kojima295
- 6月17日
- 読了時間: 8分
更新日:6月18日
おはようございます。
・・・
申し訳ございませんでした。
昨晩は、寝落ちをしてしまいました。
本日は、じっくり技術講座を行います。
特に、本日は用事がございません。
「4ビットマイコン」と「シュシュ」がお話の中心となります。
「点字ディスプレイ」は、まだシステム用部品が到着しておりません。
いきなりですが、、、
CPUをいきなり作ってしまいましょう!
よし、CPUを創る!!
CPUを創るには「フリップ・フロップ」と言う回路を理解する必要があります。
「フリップ・フロップ」の中でも「D型フリップフロップ」が重要です!
これが、メチャめんどくさい!
困っちゃうんですけど、ヤルしかない!
これは難しい!!
【Dフリップフロップの解説】
Dフリップフロップを 小学生にもわかるように、かんたんに説明しますね。
1. 「覚えておく箱」だよ!
Dフリップフロップは、 1ビット(0か1)の情報を 「覚えておく箱」 のようなものです。
この箱には2つの口があって、
D(データ):覚えたい数字(0か1)を入れる口
Q(出力):箱が今覚えている数字(0か1)を取り出す口
2. 「チクタク時計」の音で動くよ!
フリップフロップには「クロック」というチクタク時計のような信号(音)があって、
チクタク(↑)のタイミングでだけ、Dの中身を覚えます。
それ以外の時間は、中身をずっとキープ(そのまま記憶)します。
クロックがチク(↑) → いまDに入っている数字を覚える チクタクしていないとき → 前に覚えたまま変わらない
3. たとえば…「先生と答え合わせゲーム」
先生(クロックのチク)が「はい、答えて!」と言ったら、
手元の解答用紙(D)に書いてある答えをそのまま黒板(Q)に写す。
それ以外の時間は、黒板の答えはずっとそのまま。
このゲームと同じで、Dフリップフロップは「先生の合図があったときだけ、Dの答えを覚えて(Qに出して)、 それ以外はずっと覚えている」んだよ。
4. いつ使うの?
コンピュータの中では、数字や文字の「記憶装置」をたくさん並べて使います。
Dフリップフロップを何個もつなげると、複数ビットの情報を一度に覚えられる「レジスタ」になります。
これで、ゲームのスコアを覚えたり、絵を動かしたり、いろいろな動きをコントロールできます。
ポイントまとめ
1ビットを覚える箱
クロック(チクタク)でだけ覚える
それ以外はそのままキープ
これがDフリップフロップの仕組みだよ!わかったかな?
【マルチプレクサの解説】
マルチプレクサ(MUX)を小学生にもわかるように説明するね。
1. 「どれを通すか選ぶ分岐器(ぶんきき)」だよ!
マルチプレクサは、たくさんの道(入力)から1本の道(出力)を選んでつなぐ「分岐器」のようなもの。
英語では “Multiplexer” といって、略して「MUX(マックス)」とも呼ぶよ。
2. 「リモコン」で例えてみよう
テレビのリモコンでチャンネルを選ぶのと同じだよ。
テレビにはチャンネル1~10までたくさん映像がある。
リモコンのボタン(これが“選ぶ信号”)で「チャンネル3!」と押すと、
テレビはチャンネル3の映像だけを画面に出すよね?
マルチプレクサも同じで、「どの入力番号(チャンネル)を選ぶか」を信号で伝えると、その番号の信号だけを出口に出してくれるんだ。
3. どうやって選ぶの?
マルチプレクサには 選択ビット(Select ビット) があるよ。
たとえば、入力が4本(0~3)あるときは、2本の選択ビット(00~11)でどれを出すか決める。
選択ビット | 出力する入力 |
00 | 入力0 |
01 | 入力1 |
10 | 入力2 |
11 | 入力3 |
4. たとえば…「アイスクリーム屋さんゲーム」
アイス屋さんにはバニラ・チョコ・イチゴ・抹茶の4つの味があるよね。
「今日はどれがほしい?」とお客さん(選択ビット)が言う。
お客さんが “10” と言ったら → イチゴ!
アイス屋さん(マルチプレクサ)は「じゃあイチゴをどうぞ!」と1つだけ渡す。
こうやって、たくさんの中から「これ!」と指定されたものだけを選んでくれるのがマルチプレクサなんだ。
5. いつ使うの?
コンピュータや電子工作では、
たくさんのセンサーの中から1つの値を取り出したり
いくつもの信号をまとめて1本にして転送したり
画面に出す映像を切り替えたり…といったときにとても便利だよ。
ポイントまとめ
たくさんの入力から1つを選ぶ分岐器
選択ビット(リモコンのボタン)でどれを出すか決める
コンピュータの中で信号を切り替えるのに使う
これがマルチプレクサの仕組みだよ!わかったかな?
今、1ピットCPUを創ろうと考えいます。
命令の種類は「MOV X1, X2」(X1レジスタ内容をX2レジスタに移動させる命令)です。
各レジスタは1ビットです。
上記回路をDフリップフロップとマルチプレクサのみで作成できますか?
注意するべき点として、中学生でもわかるように解説願います。
はい。1ビットCPUを、Dフリップフロップとマルチプレクサだけで作るイメージを、中学生にもわかるように説明します。
1. 登場するもの
レジスタ X1, X2
それぞれ1ビット(0か1)を覚える「箱」です。
箱の中身は Dフリップフロップ で実現します。
マルチプレクサ(MUX)
たくさんの道(入力)から「どの道を通すか」選ぶ分岐(ぶんき)器です。
2つの信号入力から、1つを選んで出力できます(2対1 MUX)。
クロック(時計のチクタク)
「チクッ」というタイミングでだけ Dフリップフロップ が中身を更新します。
2. どう動かす?「MOV X1→X2」命令一つだけのしくみ
X1箱
いつも自分の中身をキープ(変えない)するだけ。
→ MUX1 は「もともとの X1」(Q1)を選択。
X2箱
命令ビット(MOV信号)が「1」のとき:X1の中身(Q1)を取り込む(移動する)。
「0」のとき:自分の中身(Q2)をキープ。
→ MUX2 の選択ビットに「MOV信号」をつなぎ、
0: 入力0=Q2(自分を保持)
1: 入力1=Q1(X1をコピー)
クロックがチクッで一斉更新
クロックの「立ち上がり(↑)」で、
X1箱には MUX1 出力(いつもQ1)が入り → 変わらず0か1を記憶
X2箱には MUX2 出力(Q1かQ2)が入り → MOV信号に応じてコピー or キープ
3. 動作の流れをゲームにたとえると
準備:「X1箱」「X2箱」にそれぞれ0か1が入っている。
命令スタート:MOV信号が「1」なら「X1の箱をX2の箱に写す」、「0」なら何もしない。
チクタクの合図:
X1箱は自分の中身をそのまま覚え直し(何も変わらず)
X2箱は指示どおり「写す」か「キープ」
結果:1クロック後、X2の中身がX1と同じに(または変わらず)なる!
4. 注意点
MUXは「何を入れるか」選ぶだけ。中身を覚えるのは Dフリップフロップ。
クロックがない間は、レジスタの中身はずっと保持されるよ。
この回路なら命令が「MOV X1→X2」のときだけ動いて、ほかの時間は何もしないCPUになる!
まとめ
レジスタ=Dフリップフロップで1ビットを記憶
マルチプレクサ=命令に応じて「保持 or コピー」を選択
クロック=チクタクで同時に更新
これだけで「MOV X1, X2」命令を実現できる、シンプルな1ビットCPUの回路が完成だよ!
分かりませんね。何故マルチプレクサが必要なのですか。
単にレジスタのコピーだけであれば、フリップフロップだけで出来るのではありませんか?
マルチプレクサが必要な理由を、中学生にもわかるように説明しますね。
1. Dフリップフロップは「箱」だけ
Dフリップフロップは「中身を覚える箱」です。
でも、覚える中身(D入力)が 1つだけ しかつなげません。
このままだと、常に「同じ1つの線」だけを覚えるしくみになります。
2. 「場合分け」ができないとコピーできない
今回のCPUでは、X2レジスタに
場合①: 自分の中身(Q2)をそのままキープ
場合②: X1レジスタの中身(Q1)をコピー…という 2つのうちどちらか を選びたい。
でも D-FF は「D入力」が1本しかないから、「Q2の線」と「Q1の線」の どちらをつなぐか 決める回路が必要です。
3. マルチプレクサは「スイッチ」の役目
マルチプレクサ(MUX)は、
**入力が2つ(Q2 と Q1)あって、
選択ビット(MOV信号)で「どちらをDに送るか」を切り替える**
まさに電気の道における “切り替えスイッチ” です。
MOV=0 のとき → Q2 を D2 に
MOV=1 のとき → Q1 を D2 に
これで「コピーする/しない」の場合分けができます。
4. もしマルチプレクサがなかったら?
D-FFのD入力にどちらか一方しかつなげないので、
ずっと Q2 をつないでおけば「コピーできない」
ずっと Q1 をつないでおけば「キープできない」
「キープするときはQ2、コピーするときはQ1」という動きを作れません。
もちろん AND/OR/NOT やトランジスタで同じ選択回路を作ることはできますが、それをひとまとめにしたのが「マルチプレクサ」という便利な部品なんです。
ポイントまとめ
D-FFは記憶「箱」 で、入力は1本しかない。
コピー/保持の2つから選ぶとき、入力を切り替える回路が必要。
マルチプレクサは入力切り替えのスイッチ だから、なくてはならない!
これで、なぜマルチプレクサが必要なのかイメージできたかな?
チョット待った!なんとなく分かってきました。
つまり、「MOV X1, X2」命令が実行された時だけ、レジスタの値をコピーするんだ。
それ以外のときには、コピーしてはならない。
これを切り替えるために、マルチプレクサがあるんですか?
そうです、そのとおりです!
ポイントまとめ
命令ビット(MOV)=1 のときだけ → X1 の値を X2 にコピー
MOV=0 のとき → 何もしない(X2は自分の値をキープ)
どちらを X2 に送るかを「切り替える」のがマルチプレクサの仕事
イメージ図で見ると…
MOV=0 → MUX が「X2(古い値)」を選んで D2 に送る
MOV=1 → MUX が「X1 の値」を選んで D2 に送る
そしてクロックのチクタクで D2 を覚え直すから、
MOV=1 のときだけ「コピー」、
MOV=0 のときは「保持」が実現できるんだよ。
これでマルチプレクサが「コピーするかどうか」を切り替えるスイッチとして必要、という理由がはっきりしたね!
・・・
これね、、、
チョット、難しかったか!!
これは、私が悪いんだろうなあ。。。
分かるように解説を施します。


コメント