1

すべてのレジスタとインデックスにfinished当てはまるワイヤを作成しようとしています。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 に答える