vadimuzzz 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба понадобился тут мне интерполятор x16, завел мегавизард, вбил параметры, скомпилял, уже хотел в железо шить и думаю: дай-ка проверю. и не зря. подал сначала дельта-функцию: все нормально, а вот реакция на единичный скачок: как видно, получился генератор. это как-то расходится с моими представлениями об интерполяторах и FIR-фильтрах вообще. у альтеры какая-то своя математика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба все нормально, а вот реакция на единичный скачок: а что единичный скачок делает в интерполяторе ? Вы уверены что фильтр построен без учета преобразования частоты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба а что единичный скачок делает в интерполяторе ? Вы уверены что фильтр построен без учета преобразования частоты? не понял ни одного вопроса :) дело не в единичном скачке, а в том, что на входе - константа, а на выходе синусоида. я не знаю, как это можно сделать при помощи линейного устройства, которым является FIR-фильтр. (интерполятор именно на FIR, т.е. каждый отсчет добивается N-1 нулями и пропускается через ФНЧ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба дело не в единичном скачке, а в том, что на входе - константа, а на выходе синусоида. вот именно, что константа делает на входе устройства, если устройство спроектировано под каждый отсчет добивается N-1 нулями и пропускается через ФНЧ Но это все голословные утверждения, надо смотреть как построен интерполятор внутри. Может быть то что вы видите не генерация, а работа цепей ограничения сигнала, которые стоят как раз для этих случаев (такая интерполяция валит энергетику сигнала и на выходе фильтра нужно его усиливать или изменять усиление фильтра). Или сделать свой интерполятор, в преобразовании частоты на 16 ть никаких подводных камней нет %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба вот именно, что константа делает на входе устройства так корка устроена (сама нули вставляет, где сигнал valid = 0), я с ней и раньше работал. впрочем, пожалуйста: Или сделать свой интерполятор, в преобразовании частоты на 16 ть никаких подводных камней нет %) т.е. корки не нужны? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба так корка устроена (сама нули вставляет, где сигнал valid = 0), я с ней и раньше работал. впрочем, пожалуйста: а вот это уже интересно, мыльните проект, расковыряю что там да как т.е. корки не нужны? :) для таких вещей как интерполяция на 16, мне не нужны %) Вот простой интерполятор на 16ть always_ff @(posedge iclk) begin data <= ival ? idat : 0; end dat_t acc [0 : 3][0 : 15]; always_ff @(posedge iclk) begin for (int i = 0; i < $size(acc); i++) begin for (int j = 0; j < $size(acc[i]; j++) begin if (i == 0) acc[i][j] <= (j == 0) ? data : (acc[i][j-1] + data); else acc[i][j] <= (j == 0) ? acc[i-1][0] : (acc[i][j-1] + acc[i-1][0]) end end end подавление зеркала должно быть где то 60дБ. Отсюда можно уйти на цики или на acc ram фильтры %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба для таких вещей как интерполяция на 16, мне не нужны %) Вот простой интерполятор на 16ть а что на выход идет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба а что на выход идет? acc[3][15] цик фильтр это FIR со всеми единичными коэффициентами, для интерполяции на 16ть надо FIR 16го порядка, для набора затухания включаете их каскадно. Кста в коде есть недомолвка с разрядностью, в этих фильтрах разрядность между каскадами можно усекать (в коде не показано). В самих фильтрах разрядность растет + log2(Order). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба acc[3][15] а можно в мат. форме (не матерной :)) ? а то я не могу понять, где используются значения acc[0][15:1]. как я понял, по индексу j это гребенчатые фильтры? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба а можно в мат. форме (не матерной :)) ? а то я не могу понять, где используются значения acc[0][15:1]. как я понял, по индексу j это гребенчатые фильтры? в коде приведено 4 FIRa со всеми единичными коэффициентами, которые обладают такой АЧХ, которая может использоваться для интерполяции. Фильтры реализованы по схеме цепи, как здесь. Фильтры соединены между собой следующим образом : data -> acc[0][15] -> acc[1][15] -> acc[2][15] -> acc[3][15]. Такой интерполятор многожрущий по ресурсу, но простой и гарантировано рабочий. Этот фильтр является полным аналогом CIC фильтра с N =4, M=1, R=16. PS. Если не вставлять нули по входу, то получим в цепи еще один фильтр и не завалим энергетику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Фильтры соединены между собой следующим образом : data -> acc[0][15] -> acc[1][15] -> acc[2][15] -> acc[3][15]. только не бейте, но в упор не вижу такой связи :). я вижу 4 гребенчатых фильтра на 16 коэффициентов каждый. фильтры сдвинуты друг отн-но друга на 1 сэмпл каждый. но включены они параллельно, а не последовательно. вот это мне и непонятно. или это из контекста выдрано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба только не бейте, но в упор не вижу такой связи :). я вижу 4 гребенчатых фильтра на 16 коэффициентов каждый. фильтры сдвинуты друг отн-но друга на 1 сэмпл каждый. но включены они параллельно, а не последовательно. вот это мне и непонятно. или это из контекста выдрано? потому как ошибка в коде %) acc[i][j] <= (j == 0) ? acc[i-1][15] : (acc[i][j-1] + acc[i-1][15]) ну смысл то я думаю понятен %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба такой вопросик по CIC: у него АЧХ ~sin(x)/x, надо ли делать ее коррекцию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба такой вопросик по CIC: у него АЧХ ~sin(x)/x, надо ли делать ее коррекцию? от полосы и вида приложения зависит. оцените насколько он валит полосу сигнала, тогда решите вопрос о коррекции. Но если вам требуется коррекция, тогда лучше выкинуть цик и посчитать нормальный FIR фильтр %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба несколько ссылок в тему: http://www.myhdl.org/doku.php/projects:gcicexample http://www.eetimes.com/design/other/400644...or-comb-filters http://www.mathworks.com/products/filterhd...r/hdlduc.html#3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться