2022年05月01日 | 公開 |
アナログ回路の場合は、回路の動作が多かれ少なかれ理論式からずれてきます。一方で論理回路の場合は、理論的な真理値表通りに回路が動作します。
アナログ回路に、理論に近い動作をさせるためには、精度の高い部品など、高性能な部品を使わなければならず、コストが高くなってしまいます。さらに、いくら高性能な部品を使っても完全には理論通りに動作させる事ができず、同じ回路を複数作れば、回路の特性がばらついてしまいます。
一方で論理回路は、適切に設計すれば、完全に理論通りに動作し、同じ回路を複数作った時に、回路の動作にばらつきがありません。
一般論を説明しても、具体的なイメージが湧きにくいかも知れませんので、図8に示す加算回路(足し算回路)を例に、アナログ回路が完全には理論通りに動作しない事を説明します。
一般的には、R1~R3と左側のオペアンプだけの回路を加算回路と呼びますが、出力電圧が−R3R1VIN1+R3R2VIN2となり、入力電圧と出力電圧の正負が逆になるため、ここでは正負が逆にならない図8の回路を加算回路と呼んでいます。
この回路は2つのオペアンプと5つの抵抗からなり、2つの電圧V1とV2を入力すると、電圧VOUTを出力します。
出力電圧VOUTは、理論的には式(1)で与えられます。
ここで全ての抵抗値(R1~R5)を同じ値にすると、VOUTは式(2)で与えられます。
この様に、全ての抵抗値を同じにすると、図8の回路は2つの入力電圧の和を出力する回路になります。
しかし、実際の回路では、全ての抵抗値を全く同じ値にするのは無理です。
例えば全ての抵抗値を1[kΩ]にするとします。もし抵抗として公称値(メーカーの表示している値)が1[kΩ]のカーボン抵抗(炭素被膜でできた抵抗体を用いた最も一般的な抵抗)を使ったとすると、カーボン抵抗の許容誤差は一般的に±5%程度ですので、抵抗値が0.95[kΩ]~1.05[kΩ]の範囲に入っている事しか保証されません。この抵抗値の誤差により、回路の動作は式(2)の理論式からわずかにずれてしまいますし、また複数の回路を製作した場合、それぞれの回路動作が微妙に異なる事になります。
抵抗値の誤差により、回路の動作がどの程度ばらつくかについて、もう少し細かく考えてみましょう。
式(1)のVOUTを式(3)の様に、2つの定数A1とA2を使って表す事を考えます。
式(1)と式(3)を比較する事により、A1およびA2は、それぞれ式(4)と式(5)で与えられる事が分かります。
全ての抵抗値が丁度1[kΩ]なら、A1=1、A2=1となりますが、抵抗値に誤差がある場合は、A1やA2の値が1からずれてきます。
R1~R2が1[kΩ]±5%の場合、A1が最小の値を取るのはR1=R4=1.05[kΩ]で、かつR3=R5=0.95[kΩ]の時です。よってA1の最小値A1minは、式(6)で与えられます。
また、A1が最大の値を取るのはR1=R4=0.95[kΩ]で、かつR3=R5=1.05[kΩ]の時です。よって、A1の最大値A1maxは、式(7)で与えられます。
同様の考察により、A2の最小値A2minと最大値A2maxも、A2min≒0.819、A2max≒1.222と求まります。
この様に、誤差5%の抵抗の場合はA1やA2に、最大で概ね2割の誤差が発生します。
市場で流通している抵抗で、誤差の少ない物は、誤差±1%の金属皮膜抵抗ですが、誤差1%の場合はA1min=A2min≒0.961、A1max=A2max≒1.041となり、最大で、A1やA2に概ね4%の誤差が発生します。
±1%より精度の良い抵抗は、基本的にメーカーに特注する必要があり、納期が長くなったり、大量に購入する必要があったり、単価が高くなったりして、大量生産品でないとなかなか使う事ができません。±1%の抵抗しか使えず、A1やA2の誤差を、例えば±1%以内に抑えたい場合は、半固定抵抗を用いた図9の様な回路を作り、誤差が±1%以内になる様に、VR1とVR2の抵抗値を調整する事になります。
VR1とVR2は、共に200Ωの半固定抵抗です。ドライバで調整つまみを回す事で、抵抗値を0Ω~200Ωの範囲で調整する事ができます。
VR1と、それに直列につながっている910[Ω]の固定抵抗が、図8のR1に相当し、VR2と、それに直列につながっている910[Ω]の固定抵抗が図8のR2に相当します。
全ての固定抵抗が±1%の誤差を持っていますが、それらの抵抗の誤差がA1とA2に与える影響を、VR1やVR2で補正する事ができます。
A1が式(4)で与えられる事を考えると、VR1の抵抗値を低くするとA1が高くなり、VR1の抵抗値を低くするとA1の抵抗値が低くなる事が分かります。
同様に、A2が式(5)で与えられる事を考えると、VR2の抵抗値を低くするとA2が高くなり、VR2の抵抗値を低くするとA2の抵抗値が低くなる事が分かります。
VR1の調整は、VIN1に適当な電圧を入力し、VIN2を0[V]にした(VIN2の入力端子をGNDに接続した)状態で、VOUTがVIN1と丁度同じになる様に、VR1の調整つまみをドライバで回します。
同様に、VR2の調整は、VIN2に適当な電圧を入力し、VIN1を0[V]にした状態で、VOUTがVIN2と丁度同じになる様に、VR2を調整します。
注:ここまでの議論では、回路動作の誤差の原因として、抵抗値の許容誤差だけを考えてきました。高精度な回路を作りたい場合は、抵抗値の許容誤差以外に、オペアンプの特性についても考える必要がありますが、話が難しくなるので、この記事ではオペアンプの特性については考えていません。
以上の説明で分かる通り、アナログ回路で±1%の精度で演算を行なおうとすると、かなり大変になります。
一方で、論理回路(デジタル回路)で演算をする場合は、どうなるかについて、次に考えてみます。
アナログ回路でも加算回路を取り上げたので、デジタル回路でも加算回路を取り上げてみます。
図10に、デジタル式の加算回路で最も小規模な、半加算回路を示します。
この半加算回路は、2つの1ビットの数を表す信号、AとBを入力信号として受け取り、2つの入力した数を足した値を、2ビットの数として出力します。Cは出力の上位ビットを表す信号で、Sは出力の下位ビットを表す信号です。
半加算回路の真理値表は、表1の様になります。
入力 | 出力 | 備考 | ||
---|---|---|---|---|
A | B | C | S | |
0 | 0 | 0 | 0 | 0+0=00 |
0 | 1 | 0 | 1 | 0+1=01 |
1 | 0 | 0 | 1 | 1+0=01 |
1 | 1 | 1 | 0 | 1+1=10 |
この回路をAND回路とXOR回路を組み合わせて作ると、実際に表1の真理値表の通りに動作するのが確認できるはずです。
出力信号が0の時は、理論的には完全に出力電圧が0Vになるはずですが、出力電圧を電圧計で実際に測定すると、ノイズや、論理回路内部のスイッチのON抵抗や、配線の抵抗等の影響で、完全には0になっていないかも知れません。また半加算回路が5[V]の電源で動作しているとすると、出力信号が1の時は、理論的には出力電圧がぴったり5[V]になっているはずですが、出力電圧を実際に測定すると、ノイズや、電源電圧の誤差(公称値5[V]の電源でも実際に供給している電圧は5[V]からわずかにずれた電圧を出力している)や、論理回路内部のスイッチのON抵抗や、配線の抵抗等の影響で、ぴったりと5[V]になっている訳ではないかも知れません。
この様に、信号電圧で判断すると、半加算回路は理論通りには動作しないものの、閾値より低いか高いかで判断して決めた真理値で見れば、全く理論(表1の真理値表)の通りに動作します。
半加算回路ではなく、もっとビット数の多い加算回路(2つの8ビットの数を足した値を9ビットで出力する加算回路等)でも、真理値で見れば全く理論通りに動作をする事は変わりません。さらに、もっと広く論理回路一般に話を広げても、完全に理論通りに動作する事は変わりません。
この様に、論理回路は、特に高精度の素子を使うなどしなくても、理論通りに動作するという特長があります。
後日、引き続いて論理回路の利点について書く予定です。