カテゴリー
学術

デジタル回路の基礎

デジタル回路の基礎
デジタル回路の基礎

 前半は主に論理演算の基本が解説されています。後半になると論理回路を組み合わせCPUを構成している基本的な回路であるカウンタ、レジスタ、演算、エンコーダ、デコーダ、マルチプレクサ、デマルチプレクサを説明しています。論理回路からCPUまでをつなぐ流れを勉強できました。

カテゴリー
学術

波形測定器6

 測定器を製作する過程で発振器が必要になりNE555で周波数可変発振器を作りました。せっかく発振器を作ったのだからカウンタも整備しました。LEDを16個並べ74LS193を4個使った16ビットバイナリカウンタです。

16ビットバイナリカウンタ
16ビットバイナリカウンタ
発振器とカウント部
発振器とカウント部
カウント表示部
カウント表示部

 テスターで周波数を見ながらカウントの様子を観察すると高い周波数になるに従い右側の明滅が目視でき、低い周波数になるに従い左側の明滅が目視できるようになります。数十Hzを超えるとLEDの明滅は目視できなくなります。横に並べたLEDの左から右に一つ進む度に周期が1/2になるので16ビットもあると数百kHzであっても目視できるようになります。

 カウンタは周波数を測定する目的ではないので余談でしたが原始的な16ビットディスプレができました。構造が単純なのでそこかしこで活躍してくれるでしょう。

カテゴリー
学術

コンピュータの仕組み05

変圧器
変圧器

 ドーナツのように穴の空いた鉄に銅線を2箇所巻き付けます。片方は巻き数を多くし、もう片方はそれより少なくします。巻き数の多い方に発電した電気を流します。発電所は交流の電気を作っていますので鉄の部分は極性が交互に変わる電磁石になります。すると同じ鉄に巻いたもう片方の電線に磁力が交互に加わるので発電が起きて電気が出てきます。出す方の電線の巻き数を少なくしておけば電圧が低くなります。

 電圧を変えるところには必ずこのような変圧器が使われています。省電力であれば半導体に置き換えることができるようになってきましたが大電力の変圧はまだこの変圧器が活躍しています。

 ここでも電気を送るときのように損が出ます。高電圧をコイルにかけて鉄を電磁石にしもう一つのコイルでその電磁石からまた発電する。また発電しなければならないため損失が出てしまいます。

カテゴリー
学術

コンピュータの仕組み04

送電
送電

 発電所で電気をたくさん作りあちらこちら利用する所へ送るにはただ電線で繋げばよいわけではないです。効率を良くするために発電所では大きな電力の電気を作っていますが利用する側ではそんなに大きい電気は必要ないからです。

 最初から小さい電気を作って送る方法もありますが電線を流れていく過程で発熱して使ってもいないのに減ってしまいます。大きな電気、言い換えると高電圧の電気を発電所から出して利用するところで電圧を下げて使うと効率が良くなります。

 電線に電流が流れると発熱して損してしまいます。なるべく電流を流さないようにするためには圧だけかけて使う所だけ電流が流れるようにします。

 国土の広い国では発電所から出る電気の電圧をすごく高くしています。日本では数万ボルトから数千ボルトです。家の近くの変電所で数百ボルトまで落とし更に電柱で100から200ボルトにしています。電流を流さない、これが電気を無駄にしない大事な方法です。が、電流が流れないと電気製品が動きません。この矛盾に折り合いをつけて電気を利用しています。

カテゴリー
学術

コンピュータの仕組み03

お湯を沸かす
お湯を沸かす

 コイルの近くで磁石を回転させると電気ができますが、その磁石を回転するためには色々な方法があります。人力以外で昔から回転するものといえば風車、水車でしょうか。

 水車は水の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。これを水力発電と言います。ダムを作って水の流れを調整すれば回転を制御できるので安定した電気を作ることができます。

 風車は風の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。風は水と違い溜めることができません。強めたり弱めたりすることもできません。風力発電は安定して電気を作ることができないのです。

 そこで考えたのがお湯を沸かす方法です。口の狭い容器でお湯を沸かせば口から湯気が出ます。火を強めれば湯気の勢いが増し、火を弱めれば勢いが弱くなります。湯気が出るところに羽根のついた軸を置けば回転するので電気が生まれます。丁度いい電気の量になるように火を強めたり弱めたりすれば安定した電気を得ることができます。

 石炭や石油、ガスを燃やしてお湯を沸かせば火力発電、ウランの反応でお湯を沸かせば原子力発電となります。

カテゴリー
学術

コンピュータの仕組み02

発電
発電

 銅線をグルグル巻いてコイルを作り、その近くで磁石をグルグル回します。回転している磁石は、コイルから見るとSがドンドン近ついてきてそれから離れていきます。そうしたら今度はNがドンドン近づいてそれから離れていきます。それを繰り返すとコイルの両端に電気ができます。

 磁石をグルグル回転させると電気ができる、その電気を使って電気製品が動く訳です。太陽光発電は全く違う原理ですが私たちが普段使っている電気のほとんどは磁石をグルグル回して作っています。

カテゴリー
学術

コンピュータの仕組み01

コンピュータは電気で動く
コンピュータは電気で動く

 デジタル回路の基礎の本を読んでいてなぜコンピュータが動くのかをまとめてみようと思いました。どのようにして動いているかが解れば今後の改良を思いつくかもしれません。

 どこから紐解くかを考えるとスタートを極端に前の段階から始めたいと思います。電力の問題がコンピュータの世界でも重要になってきました。なのでコンピュータを動かすために必要な電気を作るところから始めます。

カテゴリー
学術

デジタル電子回路

デジタル電子回路
デジタル電子回路

 アナログからデジタルへ移行していく様子がわかります。よくありそうなトランジスタの回路が実はアナログ回路ではなくデジタル処理を目的とした回路なのだと。ダイオードやトランジスタを使った回路図と電流、電圧の数式や解説、そして論理演算までがつながっています。この本に書いてあることこそがハードウェアとソフトウェアの真の境界です。

標準形TTL回路図
標準形TTL回路図

 アナログ回路の知識のある方はこの回路を見てどう思いますか。この本に載っているこの回路図がソフトとハードの境界です。

カテゴリー
学術

マイコン人工知能

マイコン人工知能
マイコン人工知能

 マイコンで人工知能を作れるなんて凄いと思います。ただこの「マイコン」ですが microprocessor でもなければ microcontroller でもありません。 my computer で basic を使って当時のAIにあたるようなプログラムを実験しています。マイコンの定義が揺れているので紛らわしいです。

 古い時代なので規模の小さいプログラムが紹介されています。今の「マイコン」であれば十分に動作させることができるでしょう。マイコン一つを一つのセルとし大規模に並列化したときに参考になるかもしれません。

カテゴリー
学術

人間の思考を人間が定義できない

 まるで不完全性定理のようですがAIを作るために人間の思考を人間が定義しようとしてもそれは永遠にできない気がします。AI開発のアプローチは別にあると思う。

 

カテゴリー
学術

AIを作ってみよう11

電圧測定
電圧測定

 いくら安価な部品で構築できたとしても運用に費用がかかっては意味がありません。実際の事業として考えると人件費や何やらと運用費はかかりますが、ここでは消費電力について考えます。一般にCPUの消費電力は、


P = fptCV 2 


で表されます。f は動作周波数,、pt はスイッチング確率, C は負荷容量、V は電源電圧です。

 動作周波数を下げる 計算量を減らすことにつながるので動作周波数を下げないで考えます。

 スイッチング確率を減らす 目的の計算以外をさせないようなハードウェア、ソフトウェア設計が可能です。

 負荷容量を減らす いつか1チップ内に集積できれば容量を減らせるでしょう。

 電源電圧を下げる 当面5Vでいつか1〜3.3Vで制御できます。

 動作周波数、スイッチング確率、負荷容量、電圧(FSCVと命名します)に注意を払い設計を進めれば低電力のAIが作れるでしょう。

カテゴリー
学術

制御用マイコン入門

制御用マイコン入門
制御用マイコン入門

 40年程前に出版されているのでマイコンがマイクロプロセッサーを指しています。ソフトウェアの部分はZ80でした。チャタリングを防ぐ論理回路が解説されているなど実装上のノウハウがわかりやすく記述されています。マイコンを扱う上での最低限の基礎理論からハードウェア、ソフトウェアを動かすまで、今でも十分に入門として通用する気がします。

カテゴリー
学術

波形測定器5

 555で発振がうまくできたので今後も考えて固定周波数から可変周波数にしました。発振器も大事な測定器の一つです。100kΩの三端子可変抵抗とコンデンサを複数適当に並べて2Hzから30kHzまで発振できるように改造しました。コンデンサを選びレンジを切り替える、可変抵抗を回しレンジ内で周波数を合わせる操作方法です。

555発振器2Hz付近
555発振器2Hz付近

 周波数が低いとこんな感じの表示になりました。

555発振器1kHz付近
555発振器1kHz付近

 1kHz付近では綺麗な矩形波になりました。

555発振器10kHz付近
555発振器10kHz付近

 10kHz位になると高調波を取りきれなくなり段々と正弦波に近づいているようです。

555発振器20kHz付近
555発振器20kHz付近

 20kHzになるとほぼ高調波が取れないようで見るからに正弦波のようです。これがパソコンのマイク入力の限界なのでしょう。

カテゴリー
学術

波形測定器4

ダイオードを入れて波形を観測
ダイオードを入れて波形を観測

 パソコンから正弦波を出力し波形を加工した様子を見てみます。ダイオードを入れて半波整流すると、

 波形の上下が半分になり順方向電圧分下がっているのがわかります。ただGNDが勝手に調整されているのは使い勝手が悪いので何とかしたいのですが、どこで調整されているのかわからないので今後の課題とします。

555で発振し波形を観測
555で発振し波形を観測

次に555で発振した波形を見てみます。

 中々良い感じに表示されています。555を数十年ぶりに手に入れて発振させました。ここまでは意図通りに出来上がりました。トランジスタでもICでも発振すると何故か楽しいです。

カテゴリー
学術

SN74LS193N

SN74LS193N
SN74LS193N

ChatGPTに聞いてみた。

User
SN74LS193Nは知っていますか。

ChatGPT
はい、SN74LS193Nは4ビット同期アップ/ダウンカウンターIC(集積回路)の1つです。このICは、同期カウンター回路で使用され、クロックパルスに同期して、カウントアップまたはカウントダウンを行います。

SN74LS193Nは、高速動作、広い動作電圧範囲、低消費電力などの特徴を持ち、通常、カウントダウンを行うために使用されるカウンター回路に最適です。また、カスケード接続を使用してより高精度なカウントを実現することもできます。

SN74LS193Nは、入力ピンがいくつか用意されており、それらを制御することで、カウントモード、カスケード接続、クロック信号の同期/非同期動作などを設定できます。このICは、デジタル回路やカウンター回路を設計する際によく使用されます。

カテゴリー
学術

NE555P

NE555P
NE555P

ChatGPTに聞いてみた。

User
NE555Pは知っていますか。

ChatGPT
はい、NE555Pは一般的に使用されるタイマーIC(集積回路)の1つで、一般的に単一の電源電圧を使用するアナログ回路のタイミング機能を提供するために使用されます。NE555Pは、内部的に2つの比較器、1つのSRフリップフロップ、およびディスチャージトランジスタを備えたオペアンプ(オペレーションアンプ)を使用して構成されています。このICは、正弦波発振回路、パルス幅変調回路、タイマー回路、トリガー回路などのアプリケーションで使用されます。

NE555Pは、比較的低コストで入手可能であり、入門者からエキスパートまで、多くのエレクトロニクス技術者によって使用されています。また、NE555Pは単一のICで複数のタイマー回路を構成できるため、回路が簡素化され、スペースやコストが節約できるという利点があります。

カテゴリー
学術

AIを作ってみよう10

D28C64C-25
D28C64C-25

 AIを作るための最低限のシルテム構成を考えてみましょう。構成を考える上での条件は
8ビット ー ビット以外でバイトが最小単位だから
マイコン ー 最小の安価なコンピュータだから
ロジックIC ー 論理演算できるから
アセンブラ ー 最も実行効率の良いプログラム言語だから
実数は使わない ー 演算上効率が悪いから
とします。

 8ビットのマイコンは大概16ビットのアドレス空間にアクセスできます。記憶装置は必ず必要なので16ビットのアドレスであれば64KByteのメモリが1セットです。

 RAMを使うと補助記憶装置からデータロードが必要となるのでそれがいらないROMを使います。記憶のアップデートはできませんが計算原理の確認なのでこれで良しとします。

カテゴリー
学術

情報科学の基礎

情報科学の基礎
情報科学の基礎

 集合、帰納法、グラフ、計算の数学的モデル、アルゴリズム、データ、暗号と解説されていて、コンピュータの基礎が数学だったことが思い出されました。アルゴリズムからコンピュータの動作までは良く解っていますが、数学とアルゴリズムの間の繋がりがまだ良く解っていません。数学→計算モデル→アルゴリズムという流れなのか、未だ不明です。

カテゴリー
学術

AIを作ってみよう09

半加算器
半加算器

 AI開発で欠かせないのはどのように計算させるかです。あまりにも多くの計算を短時間で実行しなければならないので、その計算能力によって性能が左右されるだけではなく、そのAIの存在自体をも問われます。

 コンピュータは計算が得意と言われていますが、その計算の中にも得意不得意があります。例えば桁数がある一定の値よりも大きい数値、乗除算を何度も繰り返す計算、極めて小さい数値等です。なぜこのようなことが起こるかというとコンピュータの中で実際に行われている演算とは論理演算だからです。

 論理演算には小数点もなければ桁上がりもありません。計算方法だけ見れば算盤以下です。随分昔ですが算盤の上級者になるとπの算出を暗算でできると聞いたことがあります。論理演算とは電気で計算させるための原始的な方法なのです。

 ではなぜコンピュータは計算では人を凌駕できるのか。それは単純な論理演算を一瞬の間に膨大な回数を実行できるからです。2進数の論理演算を組み合わせて10進数の四則演算や難しい関数演算を行える複雑なハードウェアとソフトウェアでコンピュータはできています。

 最もコンピュータに向いているのは論理演算なのでそれを基本に計算装置を作ることができれば製造費も電気代も安価な高性能AIができるはずです。

カテゴリー
学術

AIを作ってみよう08

高級言語
高級言語

 AIシステム構築には良くPythonが使われいるようです。Wikiによると「インタープリタ型の高水準汎用プログラミング言語である。」とあるように30年前からあるようですがだいぶ高級な言語のようです。

 Pythonもコンパイルしてネイティブ実行ファイルを作ることができますが今はインタープリタ型のプログラムが動作する仕組みを考えてみます。

パソコンでPythonプログラムを実行

Pythonプログラムを読んで実行するプログラム

オペレーティングシステム&デバイスドライバー

ベーシックIOシステム

ハードウェア

 Pythonプログラムをハードウェアが実行するまでに何層ものプログラムが動かなければなりません。もし同じプログラムをマイコンで実行するとどうなるでしょうか。

マイコン用プログラム

ハードウェア

 マイコン用プログラムであれば直接ハードウェアを実行することができます。もちろん高級言語では簡単なことでもマイコン用プログラムでは大変な労力を必要とすることが多いので単純に比較して優劣を云々できません。しかしAIの中枢は単純な計算の繰り返しなはずです。マイコン用プログラムでもできるに違いありません。

 同じ計算でも全体の計算量が大きく違えばその性能差も大変な違いが生まれます。