vadimuzzz 0 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба Имеется модуль с примерно таким содержимым: 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)))); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба Непонятно, как. А если поменять местами 0.123 и (2**...? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yuravg 0 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба переписать в виде localparam f2 = int' ((2**(coeff_dw - 2))*123/1000); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба переписать в виде localparam f2 = int' ((2**(coeff_dw - 2))*123/1000); тоже вариант, но в оригинале константы пострашнее, букав будет сильно много :) тот, что я в итоге нашел, лаконичнее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
semperante 0 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба Вообще, вам к типу real надо привести оба множителя, почему int -то? localparam f2 = int' (0.123*(real' (2**(coeff_dw - 2)))); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба Вообще, вам к типу real надо привести оба множителя, почему int -то? да, real логичнее. мне не понятно, почему он автоматически тип не привел (или привел, но получил в результате 0), параметр ведь тот же int по сути. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться