1
試圖創建一個電線finished
,對於所有的寄存器和索引,iff data == dataNew
都是如此。我能想出的唯一方法是使用一堆finishedAgg
電線作爲中間值;我很想擺脫他們,但我不知道如何。似乎有有比這更簡單的方法!在Verilog中是否有更簡潔的方式來編寫此線的分配?
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
我很驚訝地看到,這編譯到完全相同的註冊計數和門數。我是一個Verilog新手,並且有些擔心把regs放在那裏,但實際上並沒有編譯成regs;它使它看起來像不是。這是常見的做法嗎? –
這是非常普遍的做法,歡迎來到verilog! 'reg'不一定編譯爲觸發器或鎖存器,它取決於它的使用方式。 – Marty