基本联合
在 SystemVerilog 中,联合只是信号,可通过不同名称和纵横比来加以引用。
其工作方式为通过 typedef 来声明联合,并提供不同标识符用于引用此联合。这些标识符称为“字段”。
例如:
typedef union packed {
logic [3:0] a;
logic [3:0] b;
} union_type;
union_type my_union;以上代码创建了一种新类型,名为“union_type”。
此类型的位宽为 4 位,可作为“a”或“b”来引用。
此外,代码最后一行创建了一个新信号,名称为“my_union”且类型为“union_type”。
其使用语法为“<signal name>.<field_name>”。
例如:
always@(posedge clk) begin
my_union.a < = in1;
end
always@(posedge clk) begin
out1 < = my_union.a;
out2 < = my_union.b;
end在 Vivado 中运行此代码时,原理图如下所示:
01-02
356
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
11-25
9533
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交