gpt4 book ai didi

verilog - verilog中位连接前面的单引号

转载 作者:行者123 更新时间:2023-12-03 20:17:33 27 4
gpt4 key购买 nike

logic[1:0] a;
logic[1:0] b;
assign a = {1'b0, 1'b1};
assign b = '{1'b0, 1'b0};

Verilog/SystemVerilog 中的 {} 前面有 ' 有区别吗?

最佳答案

是的。只要你把'在前面,你不再有串联;你有一个分配模式。很多情况下结果看起来都一样,但主要区别在于串联,每个操作数都在一个自定的上下文中求值,而在赋值模式中,每个操作数都在对每个元素进行赋值的上下文中图案。以这个修改过的例子为例:

assign a = {2'b1,2'b0}; // result is 4'b0100, a == 2'b00
assign b = '{2'b1,2'b0}; // result is b[1] = 2'b1, b[0] = 2'b0; b == 2'b10

串联的宽度为 4 位,并被截断为 2 位。
在赋值模式中,每个操作数都从 2 位截断到 1 位。

连接具有分配模式中不可用的其他功能,例如复制 a = {2{1'b1}};分配模式具有串联中不可用的功能,例如索引标签 b = '{0:1, 1:0}; b = 2'b01。此功能在结构和关联数组中变得非常有用。例如
string AA[int] = '{0:"zero", 1:"one",2:"two",default:"undefined"};

AA[0]、AA[1] 和 AA[2] 分别返回“零”、“一”和“二”。但任何其他索引返回字符串“未定义”

关于verilog - verilog中位连接前面的单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47195701/

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