Проблема с предупреждением асинхронного сброса - PullRequest
0 голосов
/ 15 июня 2019

Этот дизайн содержит один или несколько регистров или защелок с активным асинхронный набор и асинхронный сброс. Хотя эта схема может быть построена, это создает неоптимальную реализацию с точки зрения площади, мощности и производительность.

Initial_LFSR2 initial_value(RNTI,NCELL_ID,nss,nf,init) ;



always@(posedge scr_clk or posedge scr_rst) begin // Asynchronous Reset 

if(scr_rst) begin
                      LFSR1 <= 31'b1000000000000000000000000000000 ;  
                      LFSR2 <= init ;                     
                      counter <= 0 ; // reinitialized the initialzation steps counter 
                      input_counter <= 0 ; 
            end

помогите пожалуйста

1 Ответ

1 голос
/ 17 июня 2019

Предпочтительным решением является постоянное значение сброса 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; поскольку они имеют тенденцию иметь ограниченную поддержку флопов с асинхронным набором / сбросом. Вы пометили вопрос с помощью , который предназначен для ПЛИС. Вам действительно нужно выяснить, зачем вам вообще нужен асинхронный набор / сброс. Попробуйте заставить ваш код работать только с синхронными флопами (без асинхронной установки / сброса). Если вам нужна асинхронная установка / сброс, то приложите дополнительные усилия, чтобы выяснить, как заставить работать подход с использованием параметров.

Поскольку это последний вариант, он не будет отображаться по умолчанию.

...