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
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 位加法器时很有用。