我有这样的三条线:
wire [11:0] magnitude;
wire [3:0] bitsEnd;
wire [3:0] leadingBits;
所有这些都使用组合逻辑assign
编辑了一些表达式。以下代码工作正常:
assign leadingBits[3] = magnitude[bitsEnd + 3];
assign leadingBits[2] = magnitude[bitsEnd + 2];
assign leadingBits[1] = magnitude[bitsEnd + 1];
assign leadingBits[0] = magnitude[bitsEnd + 0];
但是,以下(看似等效的)代码会给出错误bitsEnd is not a constant
:
assign leadingBits[3:0] = magnitude[bitsEnd + 3:bitsEnd];
我可以不用速记来完成这项任务吗?为什么在第二种情况下会引发此错误而不是第一种情况呢?
答案 0 :(得分:4)
在Verilog中,您无法使用变量(即@for (int i = 0; i < Model.Count(); i++)
{DateTime deadline = new DateTime(2015, 04, 12);
var className = (Model[i].PRODUCT_START_DATE >= deadline) ? "selected" : null;
<tr class="@className">
<td>
@Html.ActionLink(Model[i].ORDER_NO, "MKP_003", "MKP_003", new { id = Model[i].ORDER_NO }, new { })
</td>
<td>
@Html.DisplayFor(m => m[i].Model)
</td>
<td>
@Html.DisplayFor(m => m[i].PJNO)
</td>
<td>
@Html.DisplayFor(m => m[i].DELIVERY_DESTINATION)
</td>
<td>
@Html.DisplayFor(m => m[i].PRODUCT_START_DATE)
</td>
<td>
@Html.DisplayFor(m => m[i].FINISH_FLAG)
</td>
<td>
@Html.CheckBoxFor(m => m[i].checkExport)
</td>
</tr>
}
)作为范围的结尾。您可以使用bitsEnd
/ +:
operator来解决您的问题:
-:
在第一种情况下,您只计算单个索引(它不是范围)。这就是编译器没有抱怨它的原因。