Пытаюсь сделать фильтр средствами quartus mega-wizard. Настроил, сгенерировал код. Не совсем понимаю как это работает. На вход фильтра сигнал приходит 16 бит а на выходе 55 бит. Если правильно понял то это происходит из за того что коэффициенты с разрешением 32бита и после умножения они не приводятся к 16 бит разрешению. Сигнал на входе фильтра дискретный с 16 битного счетчика он не может стать 55 битным. Думаю если взять младшие биты 15:0 а остальные не задействовать, или старшие 54:38 ? Еще в настройках указал фильтр двух канальный а в сгенерированном коде вход выход один.
Код
module pp (
clk,
reset_n,
ast_sink_data,
ast_sink_valid,
ast_source_ready,
ast_sink_sop,
ast_sink_eop,
ast_sink_error,
ast_source_data,
ast_sink_ready,
ast_source_valid,
ast_source_sop,
ast_source_eop,
ast_source_channel,
ast_source_error);
input clk;
input reset_n;
input [15:0] ast_sink_data;
input ast_sink_valid;
input ast_source_ready;
input ast_sink_sop;
input ast_sink_eop;
input [1:0] ast_sink_error;
output [54:0] ast_source_data;
output ast_sink_ready;
output ast_source_valid;
output ast_source_sop;
output ast_source_eop;
output ast_source_channel;
output [1:0] ast_source_error;
pp_ast pp_ast_inst(
.clk(clk),
.reset_n(reset_n),
.ast_sink_data(ast_sink_data),
.ast_sink_valid(ast_sink_valid),
.ast_source_ready(ast_source_ready),
.ast_sink_sop(ast_sink_sop),
.ast_sink_eop(ast_sink_eop),
.ast_sink_error(ast_sink_error),
.ast_source_data(ast_source_data),
.ast_sink_ready(ast_sink_ready),
.ast_source_valid(ast_source_valid),
.ast_source_sop(ast_source_sop),
.ast_source_eop(ast_source_eop),
.ast_source_channel(ast_source_channel),
.ast_source_error(ast_source_error));
endmodule
Нажмите для просмотра прикрепленного файла