1

只是试图为所有寄存器和索引创建一个finished真正的 iff线。data == dataNew我能想到的唯一方法是使用一堆finishedAgg电线作为中间值;我很想摆脱它们,但我不知道该怎么做。似乎必须比这更简单的方法!

reg[24:0] data[0:24];
reg[24:0] dataNew[0:24];

wire finished;

genvar i;
generate
    wire finishedAgg[-1:24];
    assign finishedAgg[-1] = 1;
    for (i=0; i<25; i=i+1) begin :b1
        assign finishedAgg[i] = finishedAgg[i-1] & (data[i]==dataNew[i]);
    end
    assign finished = finishedAgg[24];
endgenerate
4

1 回答 1

1

这是我的观点:

reg [24:0] finishAgg;
wire finished;
always @(*)
    for (int i=0; i<25; i=i+1) begin :b1
        finishedAgg[i] = (data[i]==dataNew[i]);
    end : b1
assign finished = &finishedAgg;

它不会比你的版本短太多,但它不需要一个generate块。我已经声明i了循环内 Systemverilog 样式,并且我正在使用归约 AND 来发出finished信号。

于 2012-10-17T08:48:36.133 回答