ヒーング
2023.11.29
かけざんけいさんき(続々)
2023.11.28
入力は0~9までの押しボタンの列が2組
10進数から2進数4bitへのエンコーダ回路(ダイオードマトリクス)
このままだとボタンを押し続けないといけないから、トグルスイッチか、押しボタンだったらオルタネート(押すたびにON/OFF交代)のようにメカ的に状態が保持されるものが良い。
本当は、セレクトボタンのようにひとつだけONになる機構のものが望ましい。昔の扇風機のOFF/弱/中/強のボタンだってひとつしか入らないようになっていたでしょう。(無理やり2つ以上押したりして遊んだけどな)
電子的に実現するなら言うまでもなくフリップフロップ
クリアボタン →かけられる数 →かける数 →答え という操作順
次に掛け算回路
前に挙げた1,2,4,8の掛け算マトリクス
ANDと加算回路で構成
あまりにストレートで面白くないので、リレーを駆使すると良さそう。
ガシャ、ガシャ、っていう音。
答えの表示は10位、1位それぞれ0~9までの豆電球が並んでいる。
今度は入力とは逆に、2進数4bitから10進数0~9までのデコーダを使う。それと豆電球を駆動するならその電流が流せる程度のトランジスタを通す必要がある。
黒板(いまどきはホワイトボードか、電子ボードか)に吊り下げるかマグネットで貼り付けられるような構造
薄く、軽く、アクリルで。
しかしリレーで回路を組むと、そんな薄くて軽いは無理。
10進数から2進数4bitへのエンコーダ回路(ダイオードマトリクス)
このままだとボタンを押し続けないといけないから、トグルスイッチか、押しボタンだったらオルタネート(押すたびにON/OFF交代)のようにメカ的に状態が保持されるものが良い。
本当は、セレクトボタンのようにひとつだけONになる機構のものが望ましい。昔の扇風機のOFF/弱/中/強のボタンだってひとつしか入らないようになっていたでしょう。(無理やり2つ以上押したりして遊んだけどな)
電子的に実現するなら言うまでもなくフリップフロップ
クリアボタン →かけられる数 →かける数 →答え という操作順
次に掛け算回路
前に挙げた1,2,4,8の掛け算マトリクス
ANDと加算回路で構成
あまりにストレートで面白くないので、リレーを駆使すると良さそう。
ガシャ、ガシャ、っていう音。
答えの表示は10位、1位それぞれ0~9までの豆電球が並んでいる。
今度は入力とは逆に、2進数4bitから10進数0~9までのデコーダを使う。それと豆電球を駆動するならその電流が流せる程度のトランジスタを通す必要がある。
黒板(いまどきはホワイトボードか、電子ボードか)に吊り下げるかマグネットで貼り付けられるような構造
薄く、軽く、アクリルで。
しかしリレーで回路を組むと、そんな薄くて軽いは無理。
かけざんけいさんき(続)
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されているという考え方です。もちろんひとつの番地しかアクティブになりませんから、壊れたりしていない限り、その番地のデータだけ出力されます。
見てわかりやすそうなのはダイオードアレイでしょうね。とにかくダイオードを縦横に並べて、マトリクスを構成します。
いずれにしても電子回路なので超高速で答えが出ます。
やはり、回りくどくて遅くて、リレーがガシャガシャ動いて、どんだけかかるんだと心配になった後にようやくポロッと答えが出る、なんてのが面白そうです。
例の鑑定番組などで、結果表示なんて一瞬で出るのに、なんでわざわざガシャガシャガシャ・・・と数字を変化させて、間を置いて結果をパッと表示させるかというと、やっぱり「演出」でしょうね。
あっさりと結果を出したって面白くないですからね。
もったいぶるというか、ちょっと期待をもたせるというか、そんな感じです。
・電卓は使わない
・マイコンは使わない
・できるだけ単純にしたい
としてみます。
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されているという考え方です。もちろんひとつの番地しかアクティブになりませんから、壊れたりしていない限り、その番地のデータだけ出力されます。
見てわかりやすそうなのはダイオードアレイでしょうね。とにかくダイオードを縦横に並べて、マトリクスを構成します。
いずれにしても電子回路なので超高速で答えが出ます。
やはり、回りくどくて遅くて、リレーがガシャガシャ動いて、どんだけかかるんだと心配になった後にようやくポロッと答えが出る、なんてのが面白そうです。
例の鑑定番組などで、結果表示なんて一瞬で出るのに、なんでわざわざガシャガシャガシャ・・・と数字を変化させて、間を置いて結果をパッと表示させるかというと、やっぱり「演出」でしょうね。
あっさりと結果を出したって面白くないですからね。
もったいぶるというか、ちょっと期待をもたせるというか、そんな感じです。