0

私が読んでいる教科書では、組み込みのプリミティブ モジュールを使用して 1 ビット加算器を実装しています。

module yAdder1(z, cout, a, b, cin);
     output[0:0] z, cout;
     input[0:0] a, b, cin;
     wire[0:0] tmp, outL, outR;

     xor left_xor(tmp, a, b);
     xor right_xor(z, cin, tmp);
     and left_and(outL, a, b);
     and right_and(outR, tmp, cin);
     or my_or(cout, outR, outL);
endmodule

しかし、なぜビット単位の演算子を使用しないのでしょうか? より簡単に見えます。

module yAdder1(z, cout, a, b, cin);
     output[0:0] z, cout;
     input[0:0] a, b, cin;

     assign z = (a ^ b) ^ cin;
     assign cout = (a & b) | ((a ^ b) & cin);
endmodule

ビット単位の演算子が暗黙的にプリミティブ モジュールを使用しない限り?

4

2 に答える 2