gpt4 book ai didi

verilog - xilinx 中的位置声明变量有什么区别?

转载 作者:行者123 更新时间:2023-12-04 04:39:43 25 4
gpt4 key购买 nike

我是通过 xilinx 编写 verilog 的初学者。

我了解到端口声明必须如下所示

module mealy(
nReset,
clk,
in,
out
);

input nReset;
input clk;
input in;
output out;
endmodule

当我使用 xilinx 时,它具有设置变量的默认选项,如下所示:
module mealy(
input nReset,
input clk,
input in,
output out
);

endmodule

有时,当我使用第二种方式时,会产生错误。两种风格有什么区别?

将输出声明为 reg 时的次要问题s 第一种样式正常工作,即
module mealy(
in,
out
);

output out;
input in;
reg out;
endmodule

使用第二种样式时,它会生成一个错误,指出您不能声明两次。
module mealy(
input in,
output out
);
reg out;
endmodule

有什么事?我只是初学者我不知道为什么我必须声明“reg”。

最佳答案

Verilog 1995 通常被称为 verilog-95 (IEEE 1364-1995),用于将端口声明与方向分开并再次与 reg 类型分开。

从 Verilog 2001 (IEEE 1364-2001) 开始,可以使用更紧凑的版本。

如果您的工具仅符合 95 标准,则它们会在 2001 年或以后的代码上出错。

使用新的端口声明(包括方向)时,如果不是连线,您还应该声明类型。

module mealy(
input in, // Inputs are implicitly wires (reg would not make sense)
output [1:0] out_x, // 2 bit wire type as output
output reg [1:0] out_y // 2 Bit reg type as output
);
endmodule

应该查一下reg和wire类型的区别,基本上是模拟优化。如果使用 SystemVerilog,它们都可以替换为 logic类型。
Wire s 由端口或分配语句驱动。 reg s 被分配在 always 内或 initial块。 reg 不是 暗示触发器。

关于verilog - xilinx 中的位置声明变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com