Verilog:“......不是常数”

时间:2015-04-23 07:00:10

标签: verilog

我有这样的三条线:

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];

我可以不用速记来完成这项任务吗?为什么在第二种情况下会引发此错误而不是第一种情况呢?

1 个答案:

答案 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来解决您的问题:

-:

在第一种情况下,您只计算单个索引(它不是范围)。这就是编译器没有抱怨它的原因。