4桁の計数器

計数は増やしていく計数と減らしていく計数がありま す。 また増やすときと減らすときと、そのままのときがあ ります。 計数器の計数値は記憶される必要があります。

logicname sample

entity main
input  reset;
output q[4];
bitr   qr[4]; {←記憶信号です。}

   if (reset)
      qr=0;   {←初期化する数値です。}
   else
      qr=qr;  {←初期化後の数値を記憶しています。}
   endif

   q=qr;
ende

endlogic

qr は記憶信号です qr = qr は同じ値で記憶させる場 合の書き方です、記憶される信号だけの書き方ですの で非記憶の信号には使えません。 数値の記憶だけから、inc が 1 なら 増数 dec が 1 なら減数 inc とdec が 1 なら inc を優先させて増 数するようにしたのが下の L譜です。

logicname sample

{ -------------------------------------- }
{    実効譜                              }
{ -------------------------------------- }
entity count
input  reset;
input  inc,dec;
output q[4];
bitr   qr[4];

   if (reset)
      qr=0;
   else
      if (inc)
         qr=qr+1;
      else
         if (dec)
            qr=qr-1;
         else
            qr=qr;
         endif
      endif
   endif

   q=qr;
ende

{ -------------------------------------- }
{    機能実行譜                          }
{ -------------------------------------- }
entity sim
output reset;
output inc,dec;
output q[4];
bitr   tc[8];

   part count(reset,inc,dec,q)

   tc=tc+1;

   if (tc>3)
      if (tc==25)
         reset=1;
      else
         reset=0;
      endif
   else
      reset=1;
   endif

   if ((tc>6)&(tc<15))  inc=1; endif
   if ((tc>10)&(tc<20)) dec=1; endif

ende

endlogic

機能実行は下の様になります。


inc と dec が共に 1 になったときは計数しないよう にしたのが下の L譜です。

logicname sample

{ -------------------------------------- }
{    実効譜                              }
{ -------------------------------------- }
entity count
input  reset;
input  inc,dec;
output q[4];
bitr   qr[4];

   if (reset)
      qr=0;
   else
      if (inc & dec)
         qr=qr;   {←計数しません}
      else
         if (inc)
            qr=qr+1;
         else
            if (dec)
               qr=qr-1;
            else
               qr=qr;
            endif
         endif
      endif
   endif

   q=qr;
ende

{ -------------------------------------- }
{    機能実行譜                          }
{ -------------------------------------- }
entity sim
output reset;
output inc,dec;
output q[4];
bitr   tc[8];

   part count(reset,inc,dec,q)

   tc=tc+1;

   if (tc>3)
      if (tc==25)
         reset=1;
      else
         reset=0;
      endif
   else
      reset=1;
   endif

   if ((tc>6)&(tc<15))  inc=1; endif
   if ((tc>10)&(tc<20)) dec=1; endif

ende

endlogic

機能実行は下の様になります。


計数器は4桁で作りましたが信号割り当ての桁数を増 やすだけで4桁以上の計数器にできます。