Verilog中的input和reg有什么区别?

时间:2018-08-24 05:58:45

标签: verilog hdl

我有一个电路,其真值看起来像这样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吗??

到底有什么区别?。

2 个答案:

答案 0 :(得分:0)

您没有显示完整的示例,但是inputoutput是分层模块声明的一部分。 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)

比较inputreg类似于将键盘与Verilog代码进行比较。 input定义端口的方向。 reg定义数据类型。

但是,每个端口都有与之关联的数据类型。输入/输出端口的默认数据类型为wire。因此,input Binput wire B相同。

现在,正确的问题是: wirereg 之间会有什么区别。 wire是用于描述模块实例之间的连接的数据类型。它的主要特点是它应始终保持连接状态,否则不能保持状态。 reg可以保持状态(如果未连接)。您可以在相应的Verilog教程中找到用法上的多种差异。