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
|