Предпочтительным решением является постоянное значение сброса LFSR2
. Параметр может быть выражением констант / параметров или функцией с константами / параметрами в качестве входных данных. Возможно, потребуется немного усилий, чтобы изменить ваш код, но это то, что нужно сделать, чтобы получить « оптимальную реализацию с точки зрения площади, мощности и производительности ».
parameter LFSR2_INIT = initial_LFSR2_func(RNTI,NCELL_ID,nss,nf);
always @(posedge scr_clk or posedge scr_rst) begin
if (scr_rst) begin
LFSR2 <= LFSR2_INIT;
end
else begin
LFSR2 <= next_LFSR2;
end
end
Если вам абсолютно необходимо, чтобы значение сброса определялось комбинационной логикой, тогда существует последний вариант. Это « неоптимальная реализация с точки зрения площади, мощности и производительности » по сравнению с параметрическим решением, но, вероятно, будет лучше, чем у вас в настоящее время. Имейте в виду, что чем сложнее логика в init
, тем больше будет неоптимальных .
Это, скорее всего, не сработает, если вы ориентируетесь на FPGA; поскольку они имеют тенденцию иметь ограниченную поддержку флопов с асинхронным набором / сбросом. Вы пометили вопрос с помощью xilinx , который предназначен для ПЛИС. Вам действительно нужно выяснить, зачем вам вообще нужен асинхронный набор / сброс. Попробуйте заставить ваш код работать только с синхронными флопами (без асинхронной установки / сброса). Если вам нужна асинхронная установка / сброс, то приложите дополнительные усилия, чтобы выяснить, как заставить работать подход с использованием параметров.
Поскольку это последний вариант, он не будет отображаться по умолчанию.