VBAの勉強を始めてみた

色々試しています。

CPUよもやま話(トランジスタと論理回路)

どんな高水準プログラミング言語で書かれたプログラムであっても最終的には機械語に変換され、電気信号となってCPUで処理されます。CPUの中ではレジスタやALUなどが電気信号を処理しますが、じゃあレジスタやALUはそもそも何で構成されているんでしょうか?

自分の作ったプログラムが電気信号となって回路をどのように駆け巡っているのか想像できれば、プログラムに対する愛着もさらに深まるというものです。

今回は、CPUを構成する最小単位といえる「トランジスタ」について話してみようと思います。

トランジスタはP型半導体とN型半導体を組み合わせて作られた半導体素子です。組み合わせ方によって、PNP型とNPN型がありますが現在はNPN型が主流になっているそうです。

導体や絶縁体なら何となく知ってるけど、半導体って何?美味しいの?(゜ρ゜)っていう人がいるかも知れませんね。

いや、いませんね。

トランジスタ(NPN型)ってこんなのです。

f:id:kouten0430:20190119235319p:plain

通常はコレクターエミッタ間には電流が流れませんが、ベースーエミッタ間に微小の電流を流す(ベースーエミッタ間に電圧を加える)と、コレクターエミッタ間が導通になります。図記号で表現すると下のようになります。

f:id:kouten0430:20190119175333p:plain

上の図で分かりにくい場合は、下のように簡易的に考えても良いと思います。ベースがスイッチをON・OFFしているようなイメージです。

f:id:kouten0430:20190119175356p:plain

こんな感じです。

このように電流を流したり、流さなかったりすることができるものが半導体なのです。

(電子の動きについて説明するとややこしくなるので割愛)

他にも、半導体素子にはダイオードサイリスタ・ツェナーダイオード発光ダイオード・フォトカプラ等がありますが、それぞれが適材適所で活用されています。

このうちトランジスタのスイッチング作用は電子計算機にとって、かなり重要な役割を果たすことになります。

 

専門外の人でも一度ぐらいは見たことがあるかもしれませんが、トランジスタってこんなヤツで、CPUの中にはこれのさらにさらにさらに小さいバージョンが数億個入っているそうです。

 

で、 このトランジスタを使って何ができるのかというと、上手く組み合わせることで論理回路を作ることができるのです。

ANDとかORとかNOTのあれです。

実際にどうやって作るのかやってみましょう。

※デジタル信号に置き換えてイメージしやすいように、電源は1Vで供給されているものとします。1Vが「1」、0Vが「0」です。

 

AND回路の作り方

これはANDの図記号

f:id:kouten0430:20190119171149p:plain

これをトランジスタで作るとこうなります(※少し簡略化しています)。

f:id:kouten0430:20190119175442p:plain

AとBが直列に繋がっているので、AとBに電圧を印加した時だけCに1Vの電圧が現れます。

f:id:kouten0430:20190119181225p:plain

真理値表

0 0 0
1 0 0
0 1 0
1 1 1

 

OR回路の作り方

これはORの図記号

f:id:kouten0430:20190119181911p:plain

これをトランジスタで作るとこうなります(※少し簡略化しています)。

f:id:kouten0430:20190119181947p:plain

AとBが並列に繋がっているので、AまたはBのいずれか(もしくは両方)に電圧を印加した時にCに1Vの電圧が現れます。

f:id:kouten0430:20190119182015p:plain

真理値表

0 0 0
1 0 1
0 1 1
1 1 1

 

NOT回路の作り方

これはNOTの図記号

f:id:kouten0430:20190119182108p:plain

これをトランジスタで作るとこうなります(※少し簡略化しています)。

f:id:kouten0430:20190119182127p:plain

AがOFFの時は抵抗の電圧降下がほぼ無視できるので、Bに1Vが現れます。AがONの時は抵抗の電圧降下によって、Bに0Vが現れます。 

f:id:kouten0430:20190119182351p:plain

真理値表

0 1
1 0

 

電圧降下について

電圧降下という言葉に馴染みがない人のために少し補足します。電圧降下とは回路中に存在する抵抗の両端に電位差が生じる現象のことです。今回登場した回路は、抵抗がひとつに見えますがトランジスタも抵抗のひとつとして計算してみましょう(導通の時は0Ω、非道通の時は∞Ωとして考える)。NOT回路を例にすると、コレクタ側にある抵抗をR1、トランジスタの抵抗をR2とした場合、R1の電圧降下とR2の電圧降下は次のように求めることができます。

f:id:kouten0430:20190120004732p:plain

E=1V、R1=1Ω(適当)とします。

トランジスタが導通(ON)状態であれば、

  • V1=1/(1+0)×1=1V
  • V2=0/(1+0)×1=0V

トランジスタが非導通(OFF)状態であれば、

  • V1=1/(1+∞)×1≒0V
  • V2=∞/(1+∞)×1≒1V

です。

 

 

ブレッドボードなどを使って自分で電子工作してみるのも楽しいかもしれません。

仕組みが何とな~くイメージできれば、もうトランジスタのことは忘れても大丈夫です。これで論理回路の機能を抽象化!(気が向いたらたまに思い出してあげて下さい)

次回以降、CPUの他の構成部品などについても書いていきたいなと思っています。

 

作図に以下のフリー素材を使用させていただきました。

電気用図記号パーツ(EXCELフリー素材) | フリー素材のDigipot