2 个版本
0.2.1 | 2018年11月24日 |
---|---|
0.2.0 | 2018年11月15日 |
#395 in 模拟
53KB
1.5K SLoC
Logical
lib.rs
:
Logical 是一个数字网络模拟器。它的名字来源于德语单词 "Logical",描述了一种遵循逻辑规则的谜题。
您可以构建任意复杂的网络,然后进行模拟。它支持 Ieee1164 符合的值,如强驱动、弱驱动、未初始化、高阻抗和无关紧要逻辑。有关这些信息的更多信息,请参阅 Ieee1164
类型。
您还可以生成各种格式的跟踪文件,请参阅 dump
模块。
用法
该软件包将在 crates.io 上提供,可以通过在您的项目的 Cargo.toml
文件中添加 logical
依赖项来使用。
[dependencies]
logical = "0.1"
之后您可以在您的 2018-rust-project 中使用它
use logical;
示例:连接一个端口到另一个端口
通常您会将一个 Port
连接到一个 Signal
作为输入,然后将另一个端口作为输出连接到该信号。在 Updateable::update
时,输入的值将被传输到输出。
use logical::{Ieee1164, Port, Signal, Updateable};
use logical::direction::{Input, Output};
let from = Port::<_, Output>::new(Ieee1164::from('1'));
let to = Port::<_, Input>::default();
let mut signal = Signal::new();
signal.connect_as_input(&from);
signal.connect_as_output(&to);
signal.update();
assert_eq!(Ieee1164::from('1'), to.value());
示例:多个端口
如果您有多个连接器,则信号上的值将根据 Resolve
特性确定。在这种情况下,高阻抗值将被强零值覆盖,因此结果为 0。
use logical::{Ieee1164, Port, Signal, Updateable};
use logical::direction::{Input, Output};
let from1 = Port::<_, Output>::new(Ieee1164::from('z'));
let from2 = Port::<_, Output>::new(Ieee1164::from('0'));
let to = Port::<_, Input>::default();
let mut signal = Signal::new();
signal.connect_as_input(&from1);
signal.connect_as_input(&from2);
signal.connect_as_output(&to);
signal.update();
assert_eq!(Ieee1164::from('0'), to.value());
依赖项
~1MB
~18K SLoC