|
|
  |
Децимация с произвольной финальной частотой, Подскажите правильный алгоритм |
|
|
|
Apr 5 2017, 08:34
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Привет, подскажите, как правильно сделать децимацию. Есть исходный сигнал, который семплируется АЦП с частотой дискретизации 96кГц. Этот сигнал проходит через ПЛИС и подается на вход DSP. Проблема в том, что DSP работает с другой частотой и эта частота может меняться во время работы и может быть любой в диапазоне от 36 до 48кГц. Если тупо ставить антиалиасинговый фильтр на 18кГц, появляется проблема с тем, какой отсчет подавать на DSP - если просто последний, то я чувствую, что это неправильно. Подскажите пожалуйста, как разруливаются такие ситуации? Вот нашел похожую App Note https://www.xilinx.com/support/documentatio...tes/xapp936.pdfЭто правильный подход?
|
|
|
|
|
Apr 5 2017, 14:00
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(syoma @ Apr 5 2017, 11:34)  Подскажите пожалуйста, как разруливаются такие ситуации? У самого похожая или более худшая ситуация. Чем-то жертвовать придется, и с этим нужно смириться. Выкидывать отсчеты из потока категорически запрещено, т.к. по амплитуде изменения практически незаметны, но на слух ощущаются приличные щелчки. Решил, что фазу сигнала нужно сохранять всеми средствами, а амплитудные искажения допустимы и неизбежны. В принципе, если выдавать последний отсчет, то небольшое смещение по фазе будет, но т.к. частота выдачи ПЛИС больше, чем частота приема DSP, то это смещение будет маленькое. Но если попробовать разбить интервал между отсчетами АЦП на несколько подинтервалов и для каждого высчитать свое интерполированное значение, тем самым повысив скорость выдачи ПЛИС, то скачок фазы можно сделать минимальным.
|
|
|
|
|
Apr 5 2017, 14:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(V_G @ Apr 5 2017, 15:11)  Непонятна постановка задачи. Если сигнал уже оцифрован и хранится в какой-то буферной памяти, то какая разница, с какой скоростью он будет обрабатываться дальше? В том-то и дело, что сигнал оцифровывается с определенной частотой и должен с минимальной задержкой поступить в DSP для дальнейшей обработки. Это система реального времени, поэтому никакая буферизация не приветствуется. Цитата Но если попробовать разбить интервал между отсчетами АЦП на несколько подинтервалов и для каждого высчитать свое интерполированное значение, тем самым повысив скорость выдачи ПЛИС, то скачок фазы можно сделать минимальным. У меня требование - минимальная задержка. При интерполяцию я тоже думаю, но ее надо хитрым образом считать.
|
|
|
|
|
Apr 5 2017, 19:29
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(syoma @ Apr 5 2017, 11:34)  Привет, подскажите, как правильно сделать децимацию. Есть исходный сигнал, который семплируется АЦП с частотой дискретизации 96кГц. Этот сигнал проходит через ПЛИС и подается на вход DSP. Проблема в том, что DSP работает с другой частотой и эта частота может меняться во время работы и может быть любой в диапазоне от 36 до 48кГц. Если тупо ставить антиалиасинговый фильтр на 18кГц, появляется проблема с тем, какой отсчет подавать на DSP - если просто последний, то я чувствую, что это неправильно.
Подскажите пожалуйста, как разруливаются такие ситуации? На мой взгляд правильно это внутри DSP сделать. Ем унужна меняющаяся частота - ему и карты в руки. Тем более что сама частота дискретизации низкая Цитата Не очень. Вам бы что-то про Farrow structure почитать, особенно если частота может быть любой
|
|
|
|
|
Apr 6 2017, 08:51
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(syoma @ Apr 6 2017, 10:40)  Читал про Farrow Structure. В Matlab в DSP Toolbox есть хорошее описание и блоки. Но проблема не столько в том, чтобы получить дробное соотношение частот дискретизации - на что и настроен Farrow, сколько в возможности изменения этого соотношения "на лету", что в Farrow structure, я так понимаю, не предусмотрено. Farrow structure вообще-то позволяет получать отсчеты любым и меняющимся сдвигом относительно исходной последовательности. https://www.dsprelated.com/freebooks/pasp/F..._Structure.htmlОни как раз используются там, где полифазная интерполяция не прокатывает.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|