我有一个电路,其真值看起来像这样A =BC+^C[(B and C) or (not C)]
我在这里给
output A;
input B, C;
wire w1, w2;
and (w1, B, C);
not (w2, C);
or (A, w1, w2);
我的问题是为什么我们要写输入B,C?我们可以将其写为B,C吗??
到底有什么区别?。
答案 0 :(得分:0)
您没有显示完整的示例,但是input
和output
是分层模块声明的一部分。 reg
是与信号关联的数据类型。通常,将电路封装在一个模块中,然后在一个顶层模块中实例化该模块以提供激励并观察输出。
module circuit( output wire A;
input wire B, C;
wire w1, w2; // internal wires
and (w1, B, C);
not (w2, C);
or (A, w1, w2);
endmodule
module top;
reg B,C; // these are different signals that get connected to the circuit wires
wire A;
circuit c(A,B,C);
initial begin
B = 0; C = 0;
...
endmodule
答案 1 :(得分:0)
比较input
和reg
类似于将键盘与Verilog代码进行比较。 input
定义端口的方向。 reg
定义数据类型。
但是,每个端口都有与之关联的数据类型。输入/输出端口的默认数据类型为wire
。因此,input B
与input wire B
相同。
现在,正确的问题是: wire
和reg
之间会有什么区别。
wire
是用于描述模块实例之间的连接的数据类型。它的主要特点是它应始终保持连接状态,否则不能保持状态。 reg
可以保持状态(如果未连接)。您可以在相应的Verilog教程中找到用法上的多种差异。