\( \require{cancel} \)
earth
湘南理工学舎
[戻る]
2024/10/21

 豆知識/数学

 デジタル回路(2)

(加算回路その他)
(logic circuit & computer)
 --目 次--
  • ♦はじめに
  • ♦半加算回路
  • ♦全加算回路

  • ♦4桁加算回路
  • ♦フリップフロップ回路
  • ♦スレショルドレベル
  • ♦ファンアウト


  • はじめに


     前回学んだ 論理回路(logic circuit)を用いて 加算回路を構築します。
    またメモリの基本であるフリップフロップ回路 と 実際のデジタル回路において注意すべきことを述べておきます。

    加算回路


     ここでは例として 4桁(bit)の加算回路を作ります。この加算回路は最下位の桁のみ半加算回路, それから上の桁には3個の全加算回路から構成されます。(fig3 参照 )
    その違いは全加算回路は下桁からの桁上がり(以後キャリーという)を受ける機能があり, 半加算回路にはその機能がないことです。

    半加算 回路


     まず, 記号の説明をしておきましょう
    \(\st{S}\) : Sum(和)
    \(\st{C}\) : Carry(桁上がり)として
    \(\bbox[, 2pt, border: 2px solid black]{0}\) : キャリー無 \(,\quad \bbox[yellow, 2pt, border: 2px solid black]{1}\) : キャリー有

    \( \begin{array}{r} \sc{10進}\\ \phantom{0} 7 \\[-3pt] \underline{+\phantom{0}8}\\[-3pt] \sc{\nwarrow} \bbox[yellow, 2pt, border: 2px solid black]{1}\ 5 \\[-3pt] \end{array} \)    \( \begin{array}{r} \sc{2進\ C無し}\\ \phantom{0} 0 \\[-3pt] \underline{+\phantom{0}1}\\[-3pt] \fbox{0}\ 1 \\[-3pt] \end{array} \)   \( \begin{array}{r} \sc{2進\ C有り}\\ \phantom{0} 1 \\[-3pt] \underline{+\phantom{0}1}\\[-3pt] \sc{\nwarrow} \bbox[yellow, 2pt, border: 2px solid black]{1}\ 0 \\[-3pt] \end{array} \)

    ・左図は 10進加算 7+8=15 の例です。
     結果 "\(5\) は1桁目のS(和)", "\(1\) は2桁目へ行く C(桁上り)" です。
    ・右図は"2進の C無し" と "2進の C有り" の例です。

    半加算回路

    指数と対数
    fig1-1 半加算(SD)

    半加算回路の真理値表

    2進の A とB の 加算(1桁)は4通りの状態があります。
    \(\begin{array}{cc|c|c} \hline A\phantom{1}& B\phantom{1}& S& C \\ \hline 0& 0& 0& 0 \\ 1& 0& 1& 0 \\ 0& 1& 1& 0 \\ 1& 1& 0& 1 \\ \hline & & \sc{XOR}& \sc{AND}\\ \end{array} \)
    fig1-2 半加算(SD)
    S(sum) はXOR回路, C(carry)は ADD回路 の機能による。

    全加算 回路


     全加算回路は2進数加算の2桁目以上に使われます。
    下の桁からの桁上げ\(C_1\)を入力し,次の加算演算する。
     \(A+B+C_1=S_2+C_2\)
    \(S_2\)はその桁の和, \(C_2\)は上の桁へ送るキャリーです。

    指数と対数
    fig2-1 全加算(FSD)

    \(\begin{array}{ccc|cc} \hline A\phantom{1}& B\phantom{1}& C_1& S_2& C_2\\ \hline 0& 0& 0& 0& 0 \\ 0& 0& 1& 1& 0 \\ 0& 1& 0& 1& 0 \\ 0& 1& 1& 0& 1 \\ 1& 0& 0& 1& 0 \\ 1& 0& 1& 0& 1 \\ 1& 1& 0& 0& 1 \\ 1& 1& 1& 1& 1 \\ \hline \end{array} \)
    fig2-2 全加算器の真理値表

    下図は簡略のためのブロック図です。
    指数と対数
    fig2-3 全加算ブロック図

    4桁加算 回路


     本回路において注意すべきはC4(下図の上)のキャリーの有無です。
    C4=1 は2進5ビットへの桁上がり(\(\sc{2^4=16}\))を示します。
    C4=1 の時はAとBの加算結果にC4(16)を加算して正しい答えが得られます。
     (本回路を2つ接続すれば8桁(8bit)の加算回路ができます)
    指数と対数
    fig3-1 4桁加算回路
    キャリー無し:5+7=12
    \(\begin{array}{cccccc} & & 2^3& 2^2& 2^1& 2^0\\ \hline A& & 0& 1& 0& 1 \\ B& +)& 0& 1& 1& 1 \\ \hline C& \sc{C4}& \boxed{0}& \sc{1}\p{0}& \sc{1}\p{0}& \sc{1}\p{0} \\ S& & 1& 1& 0& 0 \\ \end{array} \)
    C4(0)+S(12)=12

    キャリー有り:12+7=19
    \(\begin{array}{cccccc} & & 2^3& 2^2& 2^1& 2^0\\ \hline A& & 1& 1& 0& 0 \\ B& +)& 0& 1& 1& 1 \\ \hline C& \sc{C4}& \boxed{1}& \sc{1}\p{0}& \sc{0}\p{0}& \sc{0}\p{0} \\ S& & 0& 0& 1& 1 \\ \end{array} \)
    C4(16)+S(3)=19
    fig3-2 全加算例

    フリップフロップ回路

    (FF回路)
     フリップフロップは SRAMR(static RAM)メモリの記憶素子として使われています。
    フリップフロップ回路には数種類あり, ここでは基本である RSフリップフロップ回路を紹介します。
    この回路の機能の理解にはタイムチャートが助けになります。
    入力を「Rが "0"状態で, Sを "1"」にすると出力は「Q="1"」, これを "セット" といいます。
    "セット" の 解除には 「R だけを "1" する」ことだけです。(Reset信号をオン)。
    すなわちResetするまで 過去の「S="1" による Q="1"」を保持・記憶している。
    この回路の特徴はQ と \(\s{\bar{\ Q\ }}\)の信号が互いの入力にフィードバック(※)しているのが特徴です。
    (例えば,"Q=1" の時は\(\s{\bar{Q}=0}\)となるようにフィードバックがかかる)
    但し RS‐FFではの "SとRの両方を1" にすると、FFの機能がなくなるので"両方の入力を同時に 1 " にすることを禁止しています。
    デジタル回路
    fig4-1 F.F 回路
    デジタル回路
    fig4-2 真理値表とタイムチャート
    FF回路【参照先】(日本電気技術者協会)
    FF回路の種類【参照先】(Wikipedia)

    スレッショルド・レベル(電圧)


     少し専門的なりますが, 異種のロジックIC(※1) を混在するときには必要な知識です。
    入力信号の\(H\) と \(L\) を判定する電圧のことをスレッショルドレベル(閾(しきい)値,threshold)と言います。
    ロジックICの種類・メーカによりスレッショルドレベルが異なりますが, 以下に一例を示します。
    1)CMOS IC のスレッショルド(電源電圧\(V_{cc}=5V\)のとき)
    入力電圧 の H と L のスレッショルド
    ・\(H\Rightarrow V_{IH}=\ul{3.5~5V}\) ・\(L\Rightarrow V_{IL}=0~1.5V\)
    出力電圧 のHとLのスレッショルド
    ・\(H\Rightarrow V_{OH}=\ul{4.95~5V}\) ・\(L\Rightarrow V_{IL}=0~0.05V\)
    Hレベルについて :
    出力は最低でも4.95Vを出力し,入力は3.5V以上を H と判別する。
    \(\ul{4.95-3.5=1.45V}\)の余裕がある。
    これをノイズマージンとういい, Hレベルの出力信号を3.5V(4.95-1.45)まで下がっても動作します。
    L レベルについても同様の考え方です。

    2)TTL IC のスレッショルド(電源電圧\(V_{cc}=5V\)のとき)
    入力電圧のHとLのスレッショルド
    ・\(H\Rightarrow V_{IH}=\ul{2.0~5V}\) ・\(L\Rightarrow V_{IL}=0~0.8V\)
    出力電圧のHとLのスレッショルド
    ・\(H\Rightarrow V_{OH}=\ul{2.4~5V}\) ・\(L\Rightarrow V_{IL}=0~0.4V\)
    Hレベルについて :
    上記と同様に計算して, Hレベルのノイズマージンは:\(\ul{2.4-2.0=\cl{0.4V}}\) です。
    …低いですね, 出力の2.4V が何らかの原因で 0.5V低下し, 1.9V になると誤動作します。
    TTLとCMOSはスレッショルド・レベルが異なるので,TTLとCMOS の混在した回路は避けるべきである。
    現在, 新規設計ではTTL を使うことはないが, 混在がやむを得ずの場合,TTLでCMOSを駆動するときは配慮が必要である。

    ファンアウト


    バッファ
    fig5 ファンアウトとバッファ
    ロジックIC(①)の出力に接続できるロジックIC(②)の個数を "IC①のファンアウト" といいます。
    ②のロジックICの入力部に負荷抵抗, 負荷容量があるため, 接続するICが増加すると①の出力特性が低下します。
    TTLでは許容できる出力電流, CMOSでは許容できる負荷容量により ファンアウトが決まります。
    おおよそのファンアウトはTTL同士の接続で10個程度,CMOS同士の接続で50個程度が目安です。
    配線が長いとき, ICが別基板で接続されるときなどIC①の波形の減衰、鈍りがが発生するため上図のようにバッファを用いて信号の波形整形をして後段に伝えます。
    専門的になりますが負荷は 抵抗の他に 交流成分で現れるリアクタンス(誘導性と容量性の2つ)があります。
    ファンアウトは限界で使う場合は難しいところがあるが, CMOS同士の小さな回路(余裕のあるファンアウト)では配慮しなくてもよいと考える。
    …以上

      

    coffe

    [コーヒーブレイク/閑話]…お疲れさまでした