Можно ли последовательно выполнять блоки, сгенерированные оператором generate?Последовательная операция в выражении generate
Предположим, что сгенерированный оператор сгенерировал блок a, block b, block c ... Все они работают параллельно, но входные данные блока b зависят от результата блока a, который диктует, что они запускаются последовательно. Есть какой-либо способ сделать это? Я пробовал искать, но ничего не мог найти.
Вот фрагмент кода:
genvar i,j,k;
generate
for (k=1;k<6;k=k+1) begin : stepk // number of whole operation reps
for (i=k;i<6;i=i+1) begin : stepi // row counter
for (j=k+1;j<6;j=j+1) begin : stepj // column counter
//res2[i][j] = res[i][j]/ res[i][k]
fixed_point_div fpdiv(
.clk(clk),
.dividend_fp(res[k][i][j]),
.divisor_fp(res[k][i][k]),
.quotient_fp(res[k+1][i][j]));
//assign res3[1][j] = res2[1][j];
assign res[k+2][i][j] = (i==k) ? res[k+1][k][j] : (res[k+1][i][j] - res[k+1][k][j]);
end
end
end
endgenerate
«Выполнять сгенерированные блоки» Похоже, что ваш желаемый экземпляр оборудования должен выполняться подобно программным функциям. Чтобы разделить один аппаратный блок, вам нужно создать один экземпляр и создать контроллер для его последовательности. – Morgan
Генерирующий блок * реплицирует * некоторую структуру оборудования в соответствии с заданным шаблоном. Если вы копируете блоки, которые последовательно связаны друг с другом, последовательность будет выполняться последовательно. –