Skip to main content

mylib/gates/
fourbitadder.rs

1pub struct FourBitAdder;
2use super::Adder;
3use super::FourBit;
4use super::Signal;
5
6impl FourBitAdder {
7    pub fn send_signal(carry: &Signal, bits1: &FourBit, bits2: &FourBit) -> (FourBit, Signal) {
8        let (sum1, carry1) = Adder::send_signal(carry, &bits1.bit4, &bits2.bit4);
9        let (sum2, carry2) = Adder::send_signal(&carry1, &bits1.bit3, &bits2.bit3);
10        let (sum3, carry3) = Adder::send_signal(&carry2, &bits1.bit2, &bits2.bit2);
11        let (sum4, carry4) = Adder::send_signal(&carry3, &bits1.bit1, &bits2.bit1);
12
13        (
14            FourBit {
15                bit1: sum4,
16                bit2: sum3,
17                bit3: sum2,
18                bit4: sum1,
19            },
20            carry4,
21        )
22    }
23}