|
фильтрация фазового шума |
|
|
|
 |
Ответов
(1 - 8)
|
May 16 2015, 09:29
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Пытаюсь сделать фильтр средствами 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
|
|
|
|
|
May 16 2015, 18:13
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
ну что-то вы сложное делаете....
делаете таблицу y = sin(x); X - от 0 до 1000, 0 - 0, 1000 = 2*pi.
дальше берете под каким то клоком постоянно считаете x1= x1 + 1; x2 = x2 + 2; x3 = x3 + 10; y = sin(x1) + sin(x2) + sin(x3); подбирая приращения иксов и частоту клока вы получаете синусы разной частоты, можете их по фазам еще подвигать
y - суммарный сигнал подаете на ваш фильтр, выход можете на ЦАП, а можно все в симуляторе глядеть. Можно нормировку добавить. Надо следить чтобы Х при переходе через 1000 сбрасывал ее, то есть 1001 = 1, 1002 = 2 и т.д.
В общем сигнал можно сгенерить внутри плис.
Если хотите шум, то есть генераторы случайных чисел на основе сдвигового регистра и перемычек, можно с него нагенерить шумный сигнал
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|