Опитвам се да внедря малък редов буфер във Verilog. Поставям данни от единия край и ги чета от другата страна.
wire [29:0] temp_pixel;
reg [29:0] temp_buffer[2:0];
Мога да използвам оператори за блокиране на присвояване като тези и трябва да работи според очакванията.
always @(posedge TD_CLK27)
begin
temp_buffer[0] = temp_buffer[1];
temp_buffer[1] = temp_buffer[2];
temp_buffer[2] = temp_pixel;
end
Но мога ли да използвам неблокиращи изрази (показани по-долу) и пак да получа очаквания резултат? Или temp_buffer[1] ще бъде презаписан от temp_buffer[2], преди да бъде прочетен в temp_buffer[0]?
always @(posedge TD_CLK27)
begin
temp_buffer[0] <= temp_buffer[1];
temp_buffer[1] <= temp_buffer[2];
temp_buffer[2] <= temp_pixel;
end
Ще работят ли и двата блока по един и същи начин, или трябва задължително да блокира операторите за присвояване и защо?