模拟简单的布尔逻辑

Simulating simple boolean logic

我正在尝试在 ModelSim PE 学生版 10.4a (Verilog) 中实现简单的布尔逻辑。

x = A*B+C' y = C'

这是我在 verilog 中使用的代码

module smpl_circuit(A,B,C,x,y);
  input A,B,C;
  output x,y;
  wire e;
  and g1(e,A,B);
  not g2(y,C);
  or g3(x,e,y);
endmodule

我在模拟上述逻辑时得到以下输出。我无法理解为什么我得到直线。

有没有什么可以让我输入布尔值(0/1)到waves并得到布尔值输出?

看来您需要一个测试平台。测试台是另一个 Verilog 模块,它为您的设计提供刺激(输入)(在您的情况下为 simpl_circuit),甚至可以为您检查输出。许多 Verilog 过程不仅是编写您的设计,而且是显示系统工作的测试机制。

现在,有多种方法可以使用 Modelsim 中的控制台来强制设置各种线的高低。在 sim 提示符下,你可以使用 force smpl_circuit/A 1A 保持在逻辑一(我不习惯 Modelsim,所以我不能给你确切的 syntax/instructions)。然而,一堆 force 命令确实不能替代一个好的测试平台,所以现在就开始学习编写它们,同时你的设计相对简单!

有关测试台的更多信息: https://embeddedmicro.com/tutorials/mojo/writing-test-benches

强制: http://www.csse.monash.edu.au/courseware/cse2306/2006/Pracs/force.pdf