首页 > 解决方案 > 多位逻辑和数组逻辑声明的系统verilog区别

问题描述

我是系统 verilog 的新手,无法找到任何来源。

当我写

logic [3:0] buttonsInc;

之后

assign buttonsInc[0] = 0;
assign buttonsInc[1] = 0;

我收到一个错误,说不能索引到非数组类型...我假设是因为buttonsInc 现在是一个 4 位数字,而不是一个数组。我应该如何编写它来声明一个数组,比如包含 3 个 4 位数组?也许像这样?

logic[0:3][4:0] buttonsInc;

或者

logic[4:0][3:0] buttonsInc;

[0:3]另外,定义逻辑和定义逻辑有什么区别 [3:0]

标签: verilogsystem-verilog

解决方案


逻辑 [3:0]buttons_inc 表示一个名为buttons_inc 的 4 位向量,[3:0] 表示索引 3(0 到 3)是 MSB 位,而 [0:3] 表示索引 0 是 MSB 位。[3:0]--> (MSB)3 2 1 0 ||| [0:3]--> 3 2 1 0(MSB)

logic[3:0][4:0]buttons_inc 将创建一个压缩数组,即 4 个向量,每个向量 5 位宽。请注意,打包数组本质上是被细分为更小的 sub_vectors 的向量,这与解包数组是连续的不同。


推荐阅读