2分周器

入力信号を2分周する分周器です。


logicname sample

{ -------------------------------------- }
{    手続き譜                            }
{ -------------------------------------- }
procedure spu
input  a;
output q;
bitr   rq[2];

   switch(rq)
      case 0:
         if (a) rq = 1; endif
      case 1:
         rq = 2;
      case 2:
         if (a)
            rq = rq;
         else
            rq = 0;
         endif
   endswitch

   q = rq.0;
endp

{ -------------------------------------- }
{    実効譜                              }
{ -------------------------------------- }
entity dep
input  a;
output q;
bitr   rq;
bitn   p;

   p = spu(a);

   if (p)
      rq = rq + 1;
   else
      rq = rq;
   endif

   q = rq;
ende

{ -------------------------------------- }
{    機能実行譜                          }
{ -------------------------------------- }
entity sim
output a;
output q;
bitr   tc[4];

   part dep(a,q)

   tc=tc+1;

   a=tc.2;

ende

endlogic

入力信号を2分周します。


2分周以上の偶数分周にするには rq の桁を増やして、上位の桁を q に代入します。