記憶回路


  1. 記憶回路

    1. 記憶回路とは

      記憶素子とは、記憶用の信号(Sとします)を1(0)にすると1を記憶し、Sを0に戻しても1を保持します。0に戻すには消去用の信号を1(0)にします。一度「記憶」すると、Sを0に戻しても記憶動作を続けます。ここでは、この記憶回路の仕組みと応用について説明します。

    2. ラッチ回路

       ゲート回路を組み合わせるだけで、記憶回路を作成できます。次の二つは同じ回路です。左側の回路の素子はNAND素子、右は負入力OR素子で構成しています。
       NAND素子は入力がともに1になると出力0を出します。負入力OR素子はいずれか一方の入力が0の場合、出力1を出します。入力や出力の○が、0と1の意味を交換(否定)していることに注意してください。
       この回路で、Sを0、Rを1にします。S=0 ですから Q は1になり、!Q は0になります。この値 0 が A のゲートの他方の入力に入ります。したがって、Sを1に戻してもQの値は変化しません。S>A.1>Q>B.1>!Q>A.2 と循環していることに注意してください。
       同様にR=0、S=1にすると!Qが1になり、Qは0に戻ります。Rを1に戻してもQは0のままです。これが、記憶回路の原型で、ラッチ回路と呼ばれます。ラッチはかんぬき(閂)の意味で、扉に棒を通して開閉できないようにする構造です。



    3. リレーで記憶素子ができる
      防犯で使われる、一度ボタンを押して鳴り出すとボタンを離しても鳴りつづける回路があります。これも記憶回路です。

    4. 実験
       NAND素子を利用してラッチ回路を作成してください。

      SをL(グランド)にすると、QがH(点灯)になる
      S,RをHにすると記憶を続ける
      RをLにすると、QがLになる
      S,RをHにすると記憶を続ける

      ことを確認してください。

    5. 課題
      記憶回路はリレーを使っても実現できます。この回路を考えてください。

      ヒント
      リレーがONになったら、その接点で自分のリレーを駆動します。

  2. D型ラッチ回路

    1. ラッチ回路の問題点

      ラッチ回路のままでは記憶回路として利用するとき、いくつかの問題点があります。まず、S,Rをともに0にしてしまうと、記憶と消去が同時に起こるため、値が不定(出力が0か1か定まらない)になります。

    2. データとタイミング信号を分離

      そこで、ラッチの前に回路を付加し、D信号の値をCPのタイミングで記録するようにします。CPにパルス(0>1>0の信号)が入ると、Dの値にしたがって、SとRに信号が出ます。この回路をD型ラッチと呼びます。
      Dの値を、CPにタイミングで(CPが1の間)記録できます。



    3. 値の交換ができる?

      A,BをD型ラッチ回路として、下図のような回路で値を交換しようとしてもうまくいきません。CPが1の間、入力は出力に「突き抜ける」ため、Aの入力の値がBに入り、それがまた、Aに戻ってしまいます。CPんpパルス幅に微妙な調整が必要なな回路になってしまいます。


  3. エッジトリガ型記憶回路(FF)

    1. エッジトリガとは

      エッジは 歯とか端 の意味で、0>1 や 1>0 への変化を意味します。トリガとは「引き金」の意味で、エッジトリガは、信号線が変化した瞬間に記憶を行う回路で(エッジトリガ型)FF(フリップフロップ)と呼びます。記憶は一瞬の間に起こりますから、IIのC のような交換回路でも正常に動作します。

    2. FF素子

       下が、FF素子のシンボルです。CK信号の立ち上がりで、D信号の値をQに記憶します。PRとCLRはラッチ機能で、PR(プリセット)を0にすると Q=1 、CLR(クリア)を0にすると Q=0 となります。



    3. レジスタ

       FFを並べて、複数の信号の値を同時に記憶する回路をレジスタと呼びます。下図は3ビットのレジスタ回路です。左のUAはDをH(1)レベル、UB,UC はD信号をL(0)レベルに接続しています。ここで、ckにパルス(0>1に変化する信号)を加えると、UA,UB,UC は (1,0,0) を記憶します。


    4. シフトレジスタ

      下図はFF3個を横並びにした回路です。^reset 信号を0にすると、最も左のFF(UA)を1に、多のFF(UB,UC)を0に初期化します。ここで、ckにパルス(0>1に変化する信号)を加えると、UAの記憶値(Q)がUBのD信号に接続されているため、UAの値がUBに移ります。どうように、UBの値がUC、UCの値がUA、に移動します。

  4. シミュレーション

    1. シミュレーション

       ディジタル回路は、動作が確定的なため、計算機プログラムによるシミュレーションが可能です。ここでは、CircuitMaker(制限付きフリーウエア)を利用して、記憶回路の動作をシミュレーションします。

    2. ラッチ回路のシミュレーション

      ラッチ回路のシミュレーションです。set側のスイッチを0、クリア(リセット)側のスイッチを1にしているので、L0は1を表示します。U1AとU2Aを接続すると、NAND素子と同じになります。



      この状態で、set側のスイッチを0に戻しても、L0の状態は変わりません。U2Bからの0信号が、setからの0信号がなくても、U1Aを0に固定しています。閂がかかった状態です。set を一度0にすることで、U2Aに1が記憶できたことになります。



      cleal側のスイッチを0にすると、L0は0になり記憶はクリアされます。替わりにL1が1になります。



    3. D型ラッチ回路のシミュレーション

      1. ラッチ回路の問題点
        ラッチ回路のままでは記憶回路として利用するとき、いくつかの問題点があります。例えば、S,Rをともに0にしてしまうと、記憶と消去が同時に起こるため、記憶の値が不定になります。

      2. データとタイミング信号を分離
        そこで、ラッチの前に回路を付加し、D信号の値をCPのタイミングで記録するようにします。CPにパルス(0>1>0の信号)が入ると、Dの値にしたがって、SとRに信号が出ます。この回路をD型ラッチと呼びます。
        CPにパルス(0>1>0の信号)が入ると、Dの値にQに記録します。


      3. シミュレーション
         左下のClockスイッチを1にすると、D0とD1のスイッチの値をL0とL1に取り込みます。



        Clockを0にすると、D0、D1のスイッチを変化させても、L0,L1は変化しません。Clockを0にする直前の値で、記憶は固定されます。