Перейти к содержанию
    

есть ли методы дизеринга (dithering) для линейной интерполяции при повышении тактовой частоты (upsampling)

Здравствуйте. Подскажите, пожалуйста, есть ли методы дизеринга (dithering) для линейной интерполяции при повышении тактовой частоты (upsampling, digital up-converter), хочется что-то аналогичное дизерингу при генерации синуса в DDS, когда периодичность ошибки фазы вызывает группировку шума на каких-то частотах спектра, а дизеринг этот шум размазывает, улучшая SFDR. Мне надо что-то такое же.

Поясню на картинках.

post-13271-1429156851_thumb.jpg

На этой картинке синим спектр исходного сигнала (ЛЧМ), до передискретизации. Красным - спектр после повышения тактовой и линейной интерполяции. Зелёным - спектр после повышения тактовой и фильтрации обычным КИХ-фильтром.

 

post-13271-1429156856_thumb.jpg

Эта картинка из временного домена, после повышения тактовой (увеличено вблизи конца временной выборки, когда частота ЛЧМ близка к максимальной). Синим - результат линейной интерполяции, красным - результат интерполяции через КИХ-фильтр (зелёный спектр на предыдущей картинке), а зелёным - разница между синей и красной кривыми.

 

По первой картинке (красная кривая) видно, что присутствуют зеркальные спектры от ЛЧМ. Хочется их маленько ослабить, размазав, т.к. есть запас по частоте в половину диапазона (полоса ЛЧМ - четверть частоты дискретизации). Т.е. аналогично размазывают дизерингом составляющие от DDS. Вот я подумал, нельзя ли что-то подобное сделать для линейной интерполяции? Куда тут только шум влепить... в узловые точки интерполяции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, лучше сделать кубическую интерполяцию? Вместо линейной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно лучше )) Тот же Фарроу )) Но это надо умножители, коих нет. Линейная не требует умножителей вообще, только аккумулятор (т.е. делаем инкремент с определённым шагом, и всё).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть CIC фильтры только со сложением, можно и FIR взять 2-3 разрядный по коэффициентам, так что он фактически выродится в чистое сложение. Вижу в другой теме пытались затронуть эти вопросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CIC-фильтры из другой темы - это совсем другая тема, к это отношения не имеющая. Просто так совпало, что я хватаюсь за всё сразу ))

В данной теме CIC-фильтры - тоже сожрут много ресурсов, пусть и не умножителей. Не вариант.

По ресурсам возможна только простейшая обработка, коей является линейная интерполяция. Просто у неё хочется чуть улучшить характеристики, как это делается дизерингом в DDS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В DDS другая история, там уровень составляющих ниже и размазывание идет за счет рандомизации округления. У Вас побочные составляющие - часть самого сигнала. Только если шум поднимать до уровня, сами понимаете чего, но нужно ли это? ЛЧМ можно сразу и на высокой формировать, если дело в этом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кусочно-линейная интерполяция тоже не подходит, т.е. разбить на несколько интервалов и для каждого интервала производить интерполяцию в соответствии какой-то таблицы (функции)?

PS rloc прав - нужны фильтры, возможно их каскадное соединение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В DDS другая история, там уровень составляющих ниже и размазывание идет за счет рандомизации округления. У Вас побочные составляющие - часть самого сигнала. Только если шум поднимать до уровня, сами понимаете чего, но нужно ли это? ЛЧМ можно сразу и на высокой формировать, если дело в этом.

Я понимаю, что история другая. Но принцип - размазывание спектра. Т.е. один горб и низкие окраины выравниваются в высокие окраины и малый горб, что даёт улучшение не по совокупной мощности ошибки, а по её максимальной палке в спектре (SFDR). Другими словами, декорреляция ошибки. Вот мне нужно тоже самое, т.е. сбить периодичность ошибки, чтобы она появлялась то тут, то там, тогда и спектр размажется, а явный пик исчезнет.

Чистый ЛЧМ - это для примера. Может быть произвольный сигнал, прогружаемый заказчиком. Храниться будет в памяти. На полной тактовой памяти потребуется много ) Там повышение частоты от 10 до 100 раз (грубо).

 

кусочно-линейная интерполяция тоже не подходит, т.е. разбить на несколько интервалов и для каждого интервала производить интерполяцию в соответствии какой-то таблицы (функции)?
Не понял, в чём Ваш вопрос? Или это предложение?... Моя постановка задачи в первом сообщении - это и есть кусочно-линейная интерполяция. Как она может не подходить?

 

PS rloc прав - нужны фильтры, возможно их каскадное соединение
Кто ж спорит против фильтров... Если на них нет ресурсов - то на безрыбье и линейная интерполяция подойдёт.

 

Вопрос только в том, как её задизерить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял, в чём Ваш вопрос? Или это предложение?... Моя постановка задачи в первом сообщении - это и есть кусочно-линейная интерполяция. Как она может не подходить?

это предложение :) в таблице Вы можете записать любую нелинейную функцию, пропуская отсчет через ROM (таблицу) получаете нелинейную функцию, таким образом произведете подмешивание в первичный сигнал псевдослучайного шума со специально подобранным спектром.

Разбиение на интервалы позволит более правильней(если можно так сказать) интерполировать различные участки (возрастание, спад, горизонтальные области)

PS Зато нет умножителей и сумматоров, правда памяти может много потребоваться для достижения точности...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавление на вход интерполятора шума ничего не даст, т.к. интерполятор - это некоторый фильтр с переходными характеристиками, зависящими от типа интерполятора а не входного сигнала. Их можно легко измерить так же как и для FIR фильтра, подав импульс. Вот пример АЧХ для 4-х стандартных интерполяций, которые есть в матлабе:

post-81866-1429169749_thumb.png

Если вы хотите опустить боковые лепестки в вашей системе, необходимо менять алгоритм интерполяции, следствие - рост сложности и объема вычислений. Чудес не бывает :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Maverick, Понял Вас. Но ресурсов тоже сожрёт кучу. И всякие детекторы спада, возрастания и горизонтальных участков - отдельная логика. Я рассчитывал каким-то образом подмешивать шум по аналогии с DDS. Там шум наверняка генерится не таблицами, а банальным LFSR.

Нужна какая-то простая идея, куда этот шум инжектировать, чтобы сорвать периодичность сигнала ошибки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вопрос только в том, куда лепить шум - лепите во все выходные точки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что вы понимаете под сигналом ошибки в данном случае? У вас интерполятор работает правильно, из картинок, которые вы выложили, видно что его АЧХ совпадает с теоретической.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...