半加器和全加器

作者:

在

,

半加器和全加器

半加器(half adder, HA)

不考虑低位进位输入,接口定义为

   half_adder HA(
    input   i_a,
       input   i_b,
    output  o_s,
    output  o_c
   );

于是一位半加器实现如下:

   assign o_s = i_a ^ i_b;
   assign o_c = i_a & i_b;
   //assign {o_c, o_s} = i_a + i_b;
全加器(full adder, FA)

若考虑低位进位输入,接口定义为

   full_adder FA(
    input   i_a,
    input   i_b,
    input   i_c,
    output  o_s,
    output  o_c
   );

于是一位全加器实现如下:

   assign o_s = i_a ^ i_b ^ i_c;
   //assign o_c = (i_a & i_b) | (i_c & (i_a | i_b));
   assign o_c = (i_a & i_b) | (i_c & (i_a ^ i_b)); 
   //assign {o_c, o_s} = i_a + i_b + i_c;

如下为FA和HA2FA的逻辑图