乗算器

その1

8ビット乗算器です。 L言語の演算子を使った乗算器です。

file: sample18
topic13a.jpg(15172 byte)

論理譜

logicname yahoo21

entity main
input  reset;
input  a[8];
input  b[8];
output y[16];
output ready;

bitn   na[8],nb[8];

    na=a;
    nb=b;

   if (!reset)
      y=na*nb;
   endif

   ready=y.16;

ende

entity sim
output reset;
output a[8];
output b[8];
output y[16];
output ready;

bitr tc[8];

   part main(reset,a,b,y,ready)

   tc=tc+1;

   if (tc<5) reset=1; endif

   a=12;
   b=34;

ende

endlogic

その2

演算子の提供する乗算は8ビットまでです。 演算子を使わない乗算を示します。 さらに多数桁の計算を行う場合は論理を自分で作りますが 本例を基本に8ビットを他桁に拡張すると簡単です。

file: sample19
topic13b.jpg(19599 byte)

論理譜

logicname yahoo22

entity main
input  reset;
input  a[8];
input  b[8];
output y[16];
output ready;

bitr   ra[16],rb[16];
bitr   acc[16];

output T0P[16]; T0P=ra;
output T1P[16]; T1P=rb;

   if (reset)
      ra.0:7=a;          { 下8ビットに設置 }
      rb.8:15=b;         { 上8ビットに設置 }
   else
      ra.1:15=ra.0:14;   { 上桁移動 }
      rb.0:14=rb.1:15;   { 下桁移動 }
   endif

   if (reset)
      acc=0;
   else
      if (rb.8)
         acc=acc+ra;    { 累算 }
      else
         acc=acc;
      endif
   endif

   y=acc;

   if (rb.8:15==0) ready=1; endif

ende

entity sim
output reset;
output a[8];
output b[8];
output y[16];
output ready;

bitr tc[8];

   part main(reset,a,b,y,ready)

   tc=tc+1;

   if (tc<5) reset=1; endif

   a=12;
   b=34;

ende

endlogic