gpt4 book ai didi

verilog - Verilog 中整数和 reg 变量类型有什么区别?

转载 作者:行者123 更新时间:2023-12-02 02:54:59 24 4
gpt4 key购买 nike

使用 Verilog 几个月后,我很好奇以下内容之间的区别:

reg [31:0] sum; 
integer sum;

既然整数只是一个 32 位值为什么不能只使用 reg 来表示它?为什么在内存使用或访问时间?请告诉我您的想法或者您是否需要我进一步阐述我的问题。

使用整数的示例:

integer t = 0;

always @(posedge clk) begin
if (t < 9999) t = t + 1;
else t = 0;
end

使用 Reg 的示例:

reg[13:0] t = 14'b0; //Represent up to 16383

always @(posedge clk) begin
if (t < 9999) t = t + 14'b00000000000001;
else t = 14'b0;
end

最佳答案

integer sum; // is equivalent to 
reg signed [31:0] sum;

在 20 世纪 80 年代 Verilog 诞生之初,integer 是一种有符号、无大小的 4 状态整数类型。其物理尺寸是从模拟主机工具推断出来的。综合工具从使用的上下文中推断其大小(即最终展开为一组常量值的 for 循环)。

但是更高版本的 Verilog,以及现在的 SystemVerilog 只是使用integer 作为具有预定义 32 位宽度的 4 态签名类型。意识到 4 状态 32 位类型实际上占用 64 位。保持其值(value)。

另请注意,SystemVerilog 将 reg 关键字重命名为 logic,因为此数据类型从未用于描述 registers 独家。另请参阅:https://blogs.sw.siemens.com/verificationhorizons/2013/05/03/wire-vs-reg/

关于verilog - Verilog 中整数和 reg 变量类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61312493/

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