4桁の加算器

一桁の加算器 を手続きにします。

logicname sample

{ -------------------------------------- }
{    手続き譜                            }
{ -------------------------------------- }
procedure add
input  a,b;
input  ci;
output pq[2];   {←手続きの出力}
bitn   q;       {←内部信号に変える}
bitn   co;      {←  〃     }

   switch(a,b,ci)
      case 0,0,0: q=0; co=0; 
      case 0,1,0: q=1; co=0; 
      case 1,0,0: q=1; co=0; 
      case 1,1,0: q=0; co=1; 
      case 0,0,1: q=1; co=0; 
      case 0,1,1: q=0; co=1; 
      case 1,0,1: q=0; co=1; 
      case 1,1,1: q=1; co=1; 
   endswitch

   pq.0=q;   {←手続きの出力に代入}
   pq.1=co;  {←  〃      }
endp

{ -------------------------------------- }
{    実効譜                              }
{ -------------------------------------- }
entity add4
input  a[4],b[4];
input  ci;
output q[4];
output co;
bitn   n0q[2];
bitn   n1q[2];
bitn   n2q[2];
bitn   n3q[2];

   n0q=add(a.0,b.0,ci);   {←手続き add を4個使います。}
   n1q=add(a.1,b.1,n0q.1);
   n2q=add(a.2,b.2,n1q.1);
   n3q=add(a.3,b.3,n2q.1);

   q.0=n0q.0;
   q.1=n1q.0;
   q.2=n2q.0;
   q.3=n3q.0;

   co=n3q.1;
ende

{ -------------------------------------- }
{    機能実行譜                          }
{ -------------------------------------- }
entity sim
output a[4],b[4];
output ci;
output q[4];
output co;
bitr   tc[9];

   part add4(a,b,ci,q,co)

   tc=tc+1;

   a=tc.0:3;
   b=tc.4:7;
   ci=tc.8;

ende

endlogic

機能実行は PDF を見てください。 4桁の加算器の作り方は8桁やそれ以上の桁数の加算器 を作るときにも使えます。