かけざんけいさんき(続)
2023.11.28
とりあえず前提として、
  ・電卓は使わない
  ・マイコンは使わない
  ・できるだけ単純にしたい
としてみます。

0~9までの入力があるので10進→2進変換
それが2つ(かける数とかけられる数)

なぜ2進数に変換するかというと、10進数のままでは回路が大規模になって大変。
0x0は省略するとしても、9x9のマトリクスを作って、それぞれの交点でANDしなければいけない。
2進数にすれば、もっと圧縮できる。

掛け算回路の原理




これは九九表です。
9なら1と8です。3なら1と2です。
かける数、かけられる数、それぞれの交わったところの数字を全部足すと、掛け算の答えになります。
これを論理回路で実現すると、それぞれANDをして、その結果を加算回路で足していくわけです。

以上は、あくまでも一例です。
山の頂上へ行く方法がいくつもあるように、答えにたどり着く方法は一つではありません。

もっと回りくどいやり方でも構いません。
たとえば、7x8= は7を8回繰り返して足すような回路にする。

小2の時、
九九表をなかなか覚えられず、先生の前で口頭で全部言えないと、家に帰るのが遅くなりました。必死で覚えて、また先生の前で言って、ひっかかってやり直しです。
覚えてしまったあとでも、九九表をど忘れする事もあります。そんな時、足し算を繰り返したものでした。

7を8回繰り返して足すといっても、人の目で確認できないぐらいの高速で動かせば、まさかそんな事をやっているなんてバレません。

あるいは、
前に書いたように九九表をROMに入れておく。アドレスが8bitあって、それを4bitずつに区切って0~9を割り当てる。ここではBCDで表現します。A~Fまでは考えないものとします。
そして九九表をROMに書き込み、結果はデータバスから、やはりBCDで得られるというものです。
これは昔、実際に作りました。その計算はMSXのBASICで処理して、書込データを作ったのでした。同じくMSX用のROMライタを自作していましたから、その場で書き込みました。

この方式だと素早く答えが出ますけど、簡単すぎて、あまり面白くありませんね。

ちなみにROMはANDとORの組み合わせです。アドレスはANDですね。各ビットのANDで0番地、1番地、2番地・・・というふうにメモリセルを選択します。
それぞれのメモリセルには、8bitの値が入っていて、最終的に出力される前に各番地から来たデータがORされているという考え方です。もちろんひとつの番地しかアクティブになりませんから、壊れたりしていない限り、その番地のデータだけ出力されます。

見てわかりやすそうなのはダイオードアレイでしょうね。とにかくダイオードを縦横に並べて、マトリクスを構成します。

いずれにしても電子回路なので超高速で答えが出ます。

やはり、回りくどくて遅くて、リレーがガシャガシャ動いて、どんだけかかるんだと心配になった後にようやくポロッと答えが出る、なんてのが面白そうです。

例の鑑定番組などで、結果表示なんて一瞬で出るのに、なんでわざわざガシャガシャガシャ・・・と数字を変化させて、間を置いて結果をパッと表示させるかというと、やっぱり「演出」でしょうね。
あっさりと結果を出したって面白くないですからね。
もったいぶるというか、ちょっと期待をもたせるというか、そんな感じです。
トラックバックURL
トラックバック一覧
コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeLog -