Суть вопроса. В силу аппаратных особенностей ПЛИС (структура LE, LUT, LAB) некоторые конструкции синтезируются оптимальным образом, достигается максимальное быстродействие и плотность упаковки, а какие-то нет. Например, если в триггере логического элемента есть асинхронный сброс, то конструкция:
Код
always @ (posedge reset or posedge clk)
if(reset)
q <= 0;
else
q <= x;
if(reset)
q <= 0;
else
q <= x;
Займет один LAB, но если добавить еще и асинхронную установку, то схема займет уже 4 LE:
Код
always @ (posedge reset or posedge set or posedge clk)
if(reset)
q <= 0;
else if (set)
q <= 1;
ekse
q <= x;
if(reset)
q <= 0;
else if (set)
q <= 1;
ekse
q <= x;
А вот если set убрать из списка чувствительности, то опять 1 LE.
Или как лучше оформить выражение, что бы был задействован вход ENA триггера, а не обратная связь?
И много подобны вопросов.
Оно мне понятно почему и как, но где об этом почитать подробнее? Кое-что есть в "Advanced Synthesis Cookbook", но это для Stratix. Уж очень он от Cyclone отличается.