Перейти к содержанию
    

Параметризовать fixed-point константу в SV

Имеется модуль с примерно таким содержимым:

module real_test
#(parameter src_dw = 8, coeff_dw = 16)
(
   input       clk,
   input       reset,
   input       signed [src_dw - 1: 0] d_in,
   output      reg signed [src_dw + coeff_dw - 1: 0] d_out
);
localparam f2 = int' (0.123*(2**(coeff_dw - 2)));
//localparam f2 = int' (0.123*(2**14));
always @(posedge clk) begin
   if (reset) begin
       d_out = '0;
   end
   else begin
       d_out = d_in*f2;
   end
end
endmodule

Если константу f2 объявить, как в закомментированном куске, то модуль нормально синтезируется (квартус). Если же собирать в текущем виде (а константу хотелось бы менять для разных инстансов), то f2 квартус превращает в 0 и выбрасывает всю связанную логику. Как бы это победить?

 

победил:

localparam f2 = int' (0.123*(int'(2**(coeff_dw - 2))));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непонятно, как.

А если поменять местами 0.123 и (2**...?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

переписать в виде

localparam f2 = int' ((2**(coeff_dw - 2))*123/1000);

тоже вариант, но в оригинале константы пострашнее, букав будет сильно много :)

тот, что я в итоге нашел, лаконичнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще, вам к типу real надо привести оба множителя, почему int -то?

 

localparam f2 = int' (0.123*(real' (2**(coeff_dw - 2))));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще, вам к типу real надо привести оба множителя, почему int -то?

да, real логичнее. мне не понятно, почему он автоматически тип не привел (или привел, но получил в результате 0), параметр ведь тот же int по сути.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...