乗算器
その1
8ビット乗算器です。
L言語の演算子を使った乗算器です。
file: sample18
論理譜
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
論理譜
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