【发布时间】:2015-11-23 06:01:16
【问题描述】:
我正在尝试创建一个 for 循环,在给定循环迭代的情况下为逻辑数组分配不同的值。
因此,例如,假设我正在尝试实例化两个不同的砖块,宽度均为 10,高度为 5。假设这些值中的每一个都是 10 位。对于两块砖,我有代码:
logic[19:0] Brick_Width;
logic[19:0] Brick_Height;
第一个砖块的宽度和高度将分配到最高有效 10 位,第二个砖块分配到最低有效 10 位。
这是我目前拥有的代码:
int i = 19;
initial
begin
for(i=19; i>=0; i=i-10)
begin
assign Brick_Width[i:i-9] = 10;
assign Brick_Height[i:i-9] = 5;
end
end
但是,我收到一条错误消息,指出“i”不是常数。关于我如何去做这件事的任何想法?
【问题讨论】:
-
你的数组中有两个实体(高度和宽度),那么它应该是一个二维数组。即逻辑 [9:0] Brick_1 [5]
-
当你有 logic[9:0] Brick_1 [5] 时,这是否意味着有 5 个单元,每个单元都有 10 位?
-
是的。有 5 个单元格(深度为 5),每个单元格有 10 位(宽度为 10)。