mylib/gates/
fourbitadder.rs1pub 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}