6 个版本 (3 个重大更新)

0.4.0 2023年2月22日
0.3.0 2023年2月18日
0.2.2 2023年2月10日
0.1.0 2023年2月9日

模拟 中排名 179

MIT 许可证

17KB
457

逻辑门

尝试使用 Rust 编程语言模拟逻辑门。

待办事项

  • 4 位加法器(完成)
  • 将项目转换为 Rust 库(完成)
  • 负数支持(完成)
  • 减法(完成)
  • 1 位 ALU(完成)
  • 4 位 ALU(完成)
  • 8 位(未完成)
  • 8 位加法器(未完成)

用法

如果您想使用这些功能,则需要导入。

use logic_gates::Signal;
use logic_gates::gates::*;
use logic_gates::bytes::FourByte;

示例

// Importing essentials... (You can check them in usage part)

fn main() -> Result<(), Box<dyn std::error::Error> {
  let byte1: FourBit = "0100".parse()?;
  let byte2: FourBit = "0010".parse()?;
  let carry = Signal::Zero;


  let (sum, car) = FourBitAdder::send_signal(&carry, &bits1, &bits2);


  Ok(())
}

在这个示例中,您可以一起添加两个四字节数。您需要发送进位信号作为 Signal::Zero 进位信号在实现 8 位加法器时很有用。

如果您想显示加法结果,可以实现一个显示函数如下。

fn display(bits1: &FourBit, bits2: &FourBit, sum: &FourBit, car: &Signal) {
    println!(
        "Input 1 :  {}{}{}{}  = {}",
        bits1.bit1,
        bits1.bit2,
        bits1.bit3,
        bits1.bit4,
        bits1.convert()
    );
    println!(
        "Input 2 :  {}{}{}{}  = {}",
        bits2.bit1,
        bits2.bit2,
        bits2.bit3,
        bits2.bit4,
        bits2.convert()
    );

    let mut output = sum.convert()

    if car == &Signal::One {
        output += 16;
    }
    println!(
            "Output  : {car}{}{}{}{} = {}",
            sum.bit1,
            sum.bit2,
            sum.bit3,
            sum.bit4,
            output
        );
}

如果您使用此函数进行显示,您将得到以下结果。


Input 1 :  0100  = 4
Input 2 :  0010  = 2
Output  : 00110  = 6

额外的第五位是进位位,这不是必需的显示位。我们处理的是 4 位而不是 5 位。但是,进位位在将来开发 8 位加法器时很有用。

无运行时依赖