Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: есть ли методы дизеринга (dithering) для линейной интерполяции при повышении тактовой частоты (upsampling)
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
Krys
Здравствуйте. Подскажите, пожалуйста, есть ли методы дизеринга (dithering) для линейной интерполяции при повышении тактовой частоты (upsampling, digital up-converter), хочется что-то аналогичное дизерингу при генерации синуса в DDS, когда периодичность ошибки фазы вызывает группировку шума на каких-то частотах спектра, а дизеринг этот шум размазывает, улучшая SFDR. Мне надо что-то такое же.
Поясню на картинках.
Нажмите для просмотра прикрепленного файла
На этой картинке синим спектр исходного сигнала (ЛЧМ), до передискретизации. Красным - спектр после повышения тактовой и линейной интерполяции. Зелёным - спектр после повышения тактовой и фильтрации обычным КИХ-фильтром.

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

По первой картинке (красная кривая) видно, что присутствуют зеркальные спектры от ЛЧМ. Хочется их маленько ослабить, размазав, т.к. есть запас по частоте в половину диапазона (полоса ЛЧМ - четверть частоты дискретизации). Т.е. аналогично размазывают дизерингом составляющие от DDS. Вот я подумал, нельзя ли что-то подобное сделать для линейной интерполяции? Куда тут только шум влепить... в узловые точки интерполяции?
ViKo
Может, лучше сделать кубическую интерполяцию? Вместо линейной.
Krys
Конечно лучше )) Тот же Фарроу )) Но это надо умножители, коих нет. Линейная не требует умножителей вообще, только аккумулятор (т.е. делаем инкремент с определённым шагом, и всё).
rloc
Есть CIC фильтры только со сложением, можно и FIR взять 2-3 разрядный по коэффициентам, так что он фактически выродится в чистое сложение. Вижу в другой теме пытались затронуть эти вопросы.
rloc
..
Krys
CIC-фильтры из другой темы - это совсем другая тема, к это отношения не имеющая. Просто так совпало, что я хватаюсь за всё сразу ))
В данной теме CIC-фильтры - тоже сожрут много ресурсов, пусть и не умножителей. Не вариант.
По ресурсам возможна только простейшая обработка, коей является линейная интерполяция. Просто у неё хочется чуть улучшить характеристики, как это делается дизерингом в DDS.
rloc
В DDS другая история, там уровень составляющих ниже и размазывание идет за счет рандомизации округления. У Вас побочные составляющие - часть самого сигнала. Только если шум поднимать до уровня, сами понимаете чего, но нужно ли это? ЛЧМ можно сразу и на высокой формировать, если дело в этом.
Maverick
кусочно-линейная интерполяция тоже не подходит, т.е. разбить на несколько интервалов и для каждого интервала производить интерполяцию в соответствии какой-то таблицы (функции)?
PS rloc прав - нужны фильтры, возможно их каскадное соединение
Krys
Цитата(rloc @ Apr 16 2015, 13:20) *
В DDS другая история, там уровень составляющих ниже и размазывание идет за счет рандомизации округления. У Вас побочные составляющие - часть самого сигнала. Только если шум поднимать до уровня, сами понимаете чего, но нужно ли это? ЛЧМ можно сразу и на высокой формировать, если дело в этом.

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

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

Цитата(Maverick @ Apr 16 2015, 13:31) *
PS rloc прав - нужны фильтры, возможно их каскадное соединение
Кто ж спорит против фильтров... Если на них нет ресурсов - то на безрыбье и линейная интерполяция подойдёт.

Вопрос только в том, как её задизерить
Maverick
Цитата(Krys @ Apr 16 2015, 09:42) *
Не понял, в чём Ваш вопрос? Или это предложение?... Моя постановка задачи в первом сообщении - это и есть кусочно-линейная интерполяция. Как она может не подходить?

это предложение sm.gif в таблице Вы можете записать любую нелинейную функцию, пропуская отсчет через ROM (таблицу) получаете нелинейную функцию, таким образом произведете подмешивание в первичный сигнал псевдослучайного шума со специально подобранным спектром.
Разбиение на интервалы позволит более правильней(если можно так сказать) интерполировать различные участки (возрастание, спад, горизонтальные области)
PS Зато нет умножителей и сумматоров, правда памяти может много потребоваться для достижения точности...
serjj
Добавление на вход интерполятора шума ничего не даст, т.к. интерполятор - это некоторый фильтр с переходными характеристиками, зависящими от типа интерполятора а не входного сигнала. Их можно легко измерить так же как и для FIR фильтра, подав импульс. Вот пример АЧХ для 4-х стандартных интерполяций, которые есть в матлабе:
Нажмите для просмотра прикрепленного файла
Если вы хотите опустить боковые лепестки в вашей системе, необходимо менять алгоритм интерполяции, следствие - рост сложности и объема вычислений. Чудес не бывает rolleyes.gif
Krys
Maverick, Понял Вас. Но ресурсов тоже сожрёт кучу. И всякие детекторы спада, возрастания и горизонтальных участков - отдельная логика. Я рассчитывал каким-то образом подмешивать шум по аналогии с DDS. Там шум наверняка генерится не таблицами, а банальным LFSR.
Нужна какая-то простая идея, куда этот шум инжектировать, чтобы сорвать периодичность сигнала ошибки.
ViKo
Если вопрос только в том, куда лепить шум - лепите во все выходные точки.
serjj
Что вы понимаете под сигналом ошибки в данном случае? У вас интерполятор работает правильно, из картинок, которые вы выложили, видно что его АЧХ совпадает с теоретической.
petrov
Может лучше ЛЧМ сразу на высокой частоте сгенерировать?
Krys
Цитата(serjj @ Apr 16 2015, 14:37) *
Добавление на вход интерполятора шума ничего не даст
Прекрасно понимаю. Если бы можно было что-то улучшить, добавив шум, то я бы не открывал эту тему. Это первое, что мне пришло в голову и что я моментально отмёл.


Цитата(serjj @ Apr 16 2015, 14:37) *
Если вы хотите опустить боковые лепестки в вашей системе, необходимо менять алгоритм интерполяции, следствие - рост сложности и объема вычислений. Чудес не бывает
Мне чудеса и не нужны. Мне не опустить лепестки надо, а размазать их по спектру, т.к. есть половина диапазона сводобная. При размазывании чудес не получится. Опять привожу в пример дизеринг в DDS: добавление шума не уменьшает общую мощность ошибки, а увеличивает её, так что никаких чудес. Но зато декорреляция ошибки делает её спектр более равномерным, за счёт этого горб становится ниже, а SFDR лучше.
Не перестаю надеяться, что и для линейной интерполяции существует возможность размазать ошибку, пусть и увеличив её мощность (чтобы без чудес).


Цитата(ViKo @ Apr 16 2015, 14:40) *
Если вопрос только в том, куда лепить шум - лепите во все выходные точки.
Это не размажет спектр, как это получилось в DDS.


Цитата(serjj @ Apr 16 2015, 14:42) *
Что вы понимаете под сигналом ошибки в данном случае? У вас интерполятор работает правильно, из картинок, которые вы выложили, видно что его АЧХ совпадает с теоретической.
Сигнал ошибки - это зелёненькая кривая на нижнем рисунке.


Цитата(petrov @ Apr 16 2015, 14:46) *
Может лучше ЛЧМ сразу на высокой частоте сгенерировать?
Я на это уже отвечал. Сигнал в общем случае произвольной формы, загружается заказчиком. Чаще конечно будет ЛЧМ. Даже если говорить о генерации ЛЧМ сразу на высокой - памяти надо много, плюс опять же всякие интерполяторы, чтобы её объём уменьшить, а это опять умножители... короче гигантский ресур, которого нет.

Нужно простое легковесное решение, такое же простое, как сама линейная интерполяция. Такое же простое, как дизеринг в DDS.
petrov
Цитата(Krys @ Apr 16 2015, 10:59) *
Чаще конечно будет ЛЧМ. Даже если говорить о генерации ЛЧМ сразу на высокой - памяти надо много, плюс опять же всякие интерполяторы, чтобы её объём уменьшить, а это опять умножители... короче гигантский ресур, которого нет.


Всяких возможностей для трюков больше, по крайней мере таблицу синуса интерполировать проще, поскольку она она с бОльшей передискретизацией, чем произвольный сигнал.
ViKo
Покажите картинку с добавленным шумом.
serjj
Цитата
Мне чудеса и не нужны. Мне не опустить лепестки надо, а размазать их по спектру, т.к. есть половина диапазона сводобная. При размазывании чудес не получится. Опять привожу в пример дизеринг в DDS: добавление шума не уменьшает общую мощность ошибки, а увеличивает её, так что никаких чудес. Но зато декорреляция ошибки делает её спектр более равномерным, за счёт этого горб становится ниже, а SFDR лучше.
Не перестаю надеяться, что и для линейной интерполяции существует возможность размазать ошибку, пусть и увеличив её мощность (чтобы без чудес).


Идеальный NCO выдаёт идеальный сигнал, диззеринг не требуется, так? Зачем вводят диззеринг? Скомпенсировать ошибки неидального NCO, вызванного округлениями на разных стадиях вычислений (например кордика). Действительно тогда происходит перераспределение энергетического спектра вычислительных ошибок.

Теперь возьмём идеальный линейный интерполятор. У идельного интерполятора АЧХ соответствует той, что я выложил постом выше. Полученный вами спектр не результат вычислительных ошибок, а ожидаемый результат интерполяции/фильтрации.

Вы видите, что в двух случаях внеполосные искажения имеют разную природу? При этом в первом случае они зависят от входного сигнала и точности, а во втором от алгоритма интерполяции (основной вклад). Почему вы думаете, что метод перераспределения внеполосной энергии, который подходит для случая 1 подойдет для случая 2?
Fat Robot
"у меня нет ресурсов на то, чтобы реализовать фильтр с умножителем, сплайн или даже CIC звенья, но, чтобы стало лучше, я могу куда-нибудь добавить шум"

Отлично, да.

"Размазывание" шума в DDS связано с нелинейными преобразованиями. У вас же эффекты связаны с линейными преобразованиями. Так что шум никуда не денется. Ну если только попробовать с помощью ПСП управлять коэффициентом интерполяции или фазой интерполятора.

По существу: FIR-фильтр с коэффициентами для "shift-and-add" или "distributed arithmetic"
serjj
Цитата
"у меня нет ресурсов на то, чтобы реализовать фильтр с умножителем, сплайн или даже CIC звенья, но, чтобы стало лучше, я могу куда-нибудь добавить шум"

да, кстати, а как на лету считать коэффициент наклона для интерполяции между точками x(i), x(i+1) : k = (x(i+1)-x(i))/K, это же деление) не очень вяжется с крайне ограниченным ресурсом.
Fat Robot
Положим
Есть также быстрые схемы деления, например на 3.

Цитата(serjj @ Apr 16 2015, 09:37) *
да, кстати, а как на лету считать коэффициент наклона для интерполяции между точками x(i), x(i+1) : k = (x(i+1)-x(i))/K, это же деление) не очень вяжется с крайне ограниченным ресурсом.
blackfin
Цитата(Fat Robot @ Apr 16 2015, 11:49) *
Положим

Это не стыкуется с:
Цитата(Krys @ Apr 16 2015, 09:42) *
Там повышение частоты от 10 до 100 раз (грубо).

Нужно делить на 10.. "(грубо)". wink.gif
Krys
Цитата(ViKo @ Apr 16 2015, 15:15) *
Покажите картинку с добавленным шумом.

Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Fat Robot
10<{16,32,64}<100

а имея делители на и на , где можно в указанных пределах широко развернуться

Цитата(blackfin @ Apr 16 2015, 09:55) *
Это не стыкуется с:

Нужно делить на 10.. "(грубо)". wink.gif
serjj
Цитата
10<{16,32,64}<100

а имея делители на и на , где можно широко развернуться

круто, но всё равно мы себя ограничиваем, если нет делителя...

Krys, и шум правильно сформировался, прям по АЧХ.
Еще подумайте сразу над тем, как в своей полосе скомпенсировать неравномерность в 5-10 дБ без умножителей или объяснить заказчику, что это "ничего страшного".
Krys
Цитата(serjj @ Apr 16 2015, 15:31) *
Почему вы думаете, что метод перераспределения внеполосной энергии, который подходит для случая 1 подойдет для случая 2?


Цитата(Fat Robot @ Apr 16 2015, 15:31) *
"у меня нет ресурсов на то, чтобы реализовать фильтр с умножителем, сплайн или даже CIC звенья, но, чтобы стало лучше, я могу куда-нибудь добавить шум"


Отвечу на оба сообщения: я не хотел сказать, что мне подойдёт именно один в один метод, который используется в DDS. Я лишь хочу верить, что возможно существуют простые в реализации способы разравнивания спектра и для линейной интерполяции, просто я о них не знаю. Поэтому и спросил.
Offtopic: Дополнительно 2 Fat Robot: почему вы позволяете себе поясничать и выставлять себя выше других? Нельзя просто нормально разговаривать?


Цитата(serjj @ Apr 16 2015, 15:37) *
да, кстати, а как на лету считать коэффициент наклона для интерполяции между точками x(i), x(i+1) : k = (x(i+1)-x(i))/K, это же деление) не очень вяжется с крайне ограниченным ресурсом.

Цитата(blackfin @ Apr 16 2015, 15:55) *
Это не стыкуется с:
Нужно делить на 10.. "(грубо)". ;)

Для простоты положим, что апсемплинг на величину степени двойки. Более того, за 10 тактов посчитать один коэффициент наклона всё же можно, даже при минимуме ресурсов и без степени двойки. Тем более за 100 тактов.

Цитата(serjj @ Apr 16 2015, 16:08) *
Еще подумайте сразу над тем, как в своей полосе скомпенсировать неравномерность в 5-10 дБ без умножителей или объяснить заказчику, что это "ничего страшного".
Не понял, откуда неравномерность? У меня по картинке это порядка 1 дБ (я приблизил в матлабе).
serjj
Цитата
Не понял, откуда неравномерность? У меня по картинке это порядка 1 дБ (я приблизил в матлабе).

Неравномерность вытекает из АЧХ линейного интерполятора, т.к. у него в принципе нет плоской вершины в полосе пропускания (в этом плане он подобен CIC фильтру). Вы прогрузите другой сигнал, например ЛЧМ с большей полосой и увидите, что ваш сформированный спектр спадает с ростом частоты. Пренебречь этим эффектом можно только при lfm_bw << fs (частоты формирования lfm)
Fat Robot
Процитирую одного интернет-пользователя с утонченной и ранимой душевной организацией:

Цитата(Krys @ Apr 16 2015, 10:13) *
..я не хотел сказать ..
Я лишь хочу верить, что возможно..
..я о них не знаю..
Поэтому и спросил.

Offtopic: Дополнительно 2 Fat Robot: почему вы позволяете себе поясничать и выставлять себя выше других? Нельзя просто нормально разговаривать?


Если у вас есть еще какие-то вопросы, то вы спрашивайте, не стесняйтесь.

ах, да. Правильно писать "паясничать".
Krys
Цитата(serjj @ Apr 16 2015, 16:21) *
Неравномерность вытекает из АЧХ линейного интерполятора, т.к. у него в принципе нет плоской вершины в полосе пропускания (в этом плане он подобен CIC фильтру). Вы прогрузите другой сигнал, например ЛЧМ с большей полосой и увидите, что ваш сформированный спектр спадает с ростом частоты. Пренебречь этим эффектом можно только при lfm_bw << fs (частоты формирования lfm)


serjj, знаю-знаю. Поэтому интерполяция не даёт хороших результатов, если полоса сигнала занимает всю возможную полосу (т.е. половину частоты семплирования). Поэтому для применения интерполяции полоса должна быть четверть а лучше 1/8 частоты семплирования. Это я процитировал кого-то с этого форума (читал много тем по этому поводу в последнее время).
Так что перед интерполяцией у меня имеется возможность либо задать требования на полосу сигнала, либо произвести предварительное апсемплирование на 2 или даже на 4 (на другом устройстве, в котором есть ресурсы).

Цитата(Fat Robot @ Apr 16 2015, 16:24) *
Если у вас есть еще какие-то вопросы, то вы спрашивайте, не стесняйтесь.
Если у вас больше нечего написать по теме, то просто не пишите сообщений.
Всё же предлагаю перестать пАясничать.
Fat Robot
Когда у нас будет нужна консультация о том, что мне делать, и где мне писать, я к вам обязательно обращусь. Пока такой момент не наступил.

Цитата(Krys @ Apr 16 2015, 10:30) *
Если у вас больше нечего написать по теме, то просто не пишите сообщений.
ViKo
Krys, вы добавили шум ко входному сигналу. А что будет, если добавить на выход?
Вообще, интерполяцию нужно как делать - добавить нулей в недостающие точки, и пропустить через ФНЧ, подавляющий частоты Fs_old, 2Fs_old...
У вас так мало выборок на период сигнала, что линейная интерполяция дает гармоники, доходящие до Fs_new. То есть, линейная интерполяция здесь не работает (или работает очень плохо).

Цитата(Fat Robot @ Apr 16 2015, 11:49) *
Есть также быстрые схемы деления, например на 3.

Подскажите, где подсмотреть.
blackfin
Цитата(ViKo @ Apr 16 2015, 13:28) *
Подскажите, где подсмотреть.

В учебнике по арифметике?

A/3 = A*(65536/3)/65536 = [A*(15'b101010101010101)]>>16;
ViKo
Цитата(blackfin @ Apr 16 2015, 13:33) *
В учебнике по арифметике?
A/3 = A*(65536/3)/65536 = [A*(15'b101010101010101)]>>16;

Дывысь, яка гарна формула!
А на 10 поделить, не подскажете, где почитать? sm.gif А на 11? 12?
blackfin
Цитата(ViKo @ Apr 16 2015, 13:42) *
А на 10 поделить, не подскажете, где почитать? sm.gif А на 11? 12?

С какой целью интересуетесь? biggrin.gif
Fat Robot
Здесь, например.

Цитата(ViKo @ Apr 16 2015, 11:28) *
Подскажите, где подсмотреть.
petrov
Цитата(Krys @ Apr 16 2015, 12:30) *
Так что перед интерполяцией у меня имеется возможность либо задать требования на полосу сигнала, либо произвести предварительное апсемплирование на 2 или даже на 4 (на другом устройстве, в котором есть ресурсы)


Так и интерполируйте в 4 раза на другом устройстве, в FPGA параболический интерполятор Фарроу, раза в 2 сложнее чем ваш линейный.
Krys
petrov, Фарроу не годится в любом случае по ресурсам - сложнее он не раза в 2. Учитывая, что в линейной интерполяции нет умножителей вообще, а в Фарроу их 3 только на полином, да плюс ещё на коэффициенты.

Цитата(ViKo @ Apr 16 2015, 17:28) *
Krys, вы добавили шум ко входному сигналу. А что будет, если добавить на выход?
Это и в уме нетрудно представить: у красного графика на спектральной картинке просто добавится горизонтальная полка шума ))


Цитата(ViKo @ Apr 16 2015, 17:28) *
Вообще, интерполяцию нужно как делать - добавить нулей в недостающие точки, и пропустить через ФНЧ, подавляющий частоты Fs_old, 2Fs_old...
У вас так мало выборок на период сигнала, что линейная интерполяция дает гармоники, доходящие до Fs_new. То есть, линейная интерполяция здесь не работает (или работает очень плохо).
Всё, что Вы написали, совершенно очевидно, уж не обижайтесь ))
ViKo
Зачем обижаться? И почему вы не принимаете во внимание очевидное (что линейная интерполяция не подходит)?
Самая первая картинка в теме, зеленый график, полоса сигнала зарезана - разве это интерполяция?
Hose
Первое что видно из картинок: первичный спектр имеет уровни на краях -55дб, если экстраполировать, то далее идет зеркальный канал. если вы хотите заглянуть ниже чем -55, то вам необходимо додумать исходный сигнал.
Далее из картинки очевидно, что при первичном повышении частоты дискретизации было копирование отчетов вместо добивания нулями, что уже дало искажения спектра в основной полосе. Красная картинка это правильное повышение частоты + сик фильтр с полюсом в центре зеркала. Зато эффект от цика виден... Предлагаю поставить несколько циков с разными по частоте полюсами в зеркалах. Понятно, что при таких коэффициентах интерполяции шаг полюсов будет крупным, поэтому можно предварительно сделать повышение часоты на больше чем нужно, можно не кратно 2 и после фильтрации понизить.

В ддс шум подмешивается к фазе сигнала. В вашем случае вам необходимо подмешать шум к коэффициентам фильтра, если это цик, то заставить двигаться полюс в небольших пределах, с часотой выше чем полоса анализатора спектра, тогда случится визуальное подавление, но это не более чем самообман)
Krys
Цитата(ViKo @ Apr 17 2015, 11:33) *
Зачем обижаться?
за сказанное другими словами "спасибо, Кэп" ))))


Цитата(ViKo @ Apr 17 2015, 11:33) *
И почему вы не принимаете во внимание очевидное (что линейная интерполяция не подходит)?
Потому что все в этой теме пытаются подменить вопрос. Мне не нужен ответ на вопрос, какой тип интерполяции здесь подойдёт. Мне нужен ответ, как размазать спектр. Потому что этот вопрос может быть актуален и для других типов интерполяции. Пусть используем более качественную интерполяцию, получим лучше результат. Но пусть он нас по SFDR не устраивает. Зато мы видим, что спектр ошибки неравномерен, откуда возникает желание его размазать, как это сделано в DDS. Неважно какая интерполяция, т.к. нет предела совершенству.


Цитата(ViKo @ Apr 17 2015, 11:33) *
Самая первая картинка в теме, зеленый график, полоса сигнала зарезана - разве это интерполяция?
Ну там подписано. Это классическая интерполяция через КИХ-фильтр. Полоса зарезана - что Вы имеете в виду? Я использовал ЛЧМ с полосой в половину возможной, я об этом где-то выше упомянул.

Цитата(Hose @ Apr 17 2015, 11:57) *
Далее из картинки очевидно, что при первичном повышении частоты дискретизации было копирование отчетов вместо добивания нулями, что уже дало искажения спектра в основной полосе.
Копирования не было, была линейная интерполяция. Это показывает картинка во временной области. Там и подписи есть, что где.



Цитата(Hose @ Apr 17 2015, 11:57) *
Красная картинка это правильное повышение частоты + сик фильтр с полюсом в центре зеркала. Зато эффект от цика виден...
Это обычный КИХ через fdatool. Он больше нужен, чтобы его считать эталонным, а потом вычесть его из линейно-интерполированного, чтобы увидеть ошибку.


Цитата(Hose @ Apr 17 2015, 11:57) *
Предлагаю поставить несколько циков с разными по частоте полюсами в зеркалах.
Спасибо, идея понятна, но по ресурсам фильтры не годятся. Это во много раз сложнее, чем реализованная линейная интерполяция.
ViKo
Цитата(Krys @ Apr 17 2015, 08:18) *
за сказанное другими словами "спасибо, Кэп" ))))

Я не спрашивал, за что. rolleyes.gif
Цитата
Ну там подписано. Это классическая через КИХ-фильтр. Полоса зарезана - что Вы имеете в виду? Я использовал ЛЧМ с полосой в половину возможной, я об этом где-то выше упомянул.

А, у вас там частота относительная, и полоса синего сигнала равна полосе зеленого. Это же очевидно!
serjj
Цитата
Мне нужен ответ, как размазать спектр.

Я наверное пессимист потому что наверное никак.
Цитата
Спасибо, идея понятна, но по ресурсам фильтры не годятся. Это во много раз сложнее, чем реализованная линейная интерполяция.

В LE/память/умножители/какие_еще_у_нас_там_ресурсы желательно приведите подтверждение этому удтверждению. А то не конструктивно как-то rolleyes.gif
Fat Robot
А как же amplitude dithering?
Он, правда, по очевидным причинам, мало где используется на практике.

Цитата(Hose @ Apr 17 2015, 05:57) *
В ддс шум подмешивается к фазе сигнала.

ViKo
Добавили промежуточных выборок, добавьте к ним шум, пропустите через фильтр. Что мешает проверить?
Krys
Цитата(serjj @ Apr 17 2015, 13:55) *
В LE/память/умножители/какие_еще_у_нас_там_ресурсы желательно приведите подтверждение этому удтверждению. А то не конструктивно как-то
Ну я где-то выше уже расписывал. Типа на линейную интерполяцию не требуется умножитель вообще, только аккумулятор (сумматор) с постоянным инкрементом. А на несколько каскадов CIC требуются много сумматоров. Затем будет требоваться корректирующий КИХ-фильтр на умножителях.


Цитата(ViKo @ Apr 17 2015, 14:25) *
Что мешает проверить?
да зачем?... и так же понятно, что просто горизонтальная шумовая полка поднимется у всего спектра.

Цитата(ViKo @ Apr 17 2015, 14:25) *
пропустите через фильтр
Через какой фильтр?


Цитата(ViKo @ Apr 17 2015, 13:52) *
А, у вас там частота относительная
Дак это ж на графике написано, что относительная ))
serjj
Цитата
Ну я где-то выше уже расписывал. Типа на линейную интерполяцию не требуется умножитель вообще, только аккумулятор (сумматор) с постоянным инкрементом. А на несколько каскадов CIC требуются много сумматоров. Затем будет требоваться корректирующий КИХ-фильтр на умножителях.

По поводу коррекции. Для линейного интерполятора тоже нужна коррекция. А если у вас полоса мала в сравнении с fs, то и для CIC можно попробовать обойтись без коррекции. Вот пример:
Нажмите для просмотра прикрепленного файла
Ставим CIC 4 порядка, видим, что завал АЧХ в полосе пропускания не превышает завал при линейной интерполяции, но боковые лепестки ниже на 25 дБ. Можно получить и лучше, если использовать звенья с разными параметрами и подбирать полюса. Но это как нибудь без меня rolleyes.gif
По ресурсам: CIC 5 порядка в передатчике занимал на 3-м Cyclone около 250 LE на квадратуру + память, которая зависит от задержек.
ViKo
Цитата(Krys @ Apr 17 2015, 10:48) *
да зачем?... и так же понятно, что просто горизонтальная шумовая полка поднимется у всего спектра.
Через какой фильтр?

Шум добавите до фильтра. А фильтр - какой сможете сделать, пользуясь доступными ресурсами, хоть ИГФ, хоть КИХ, хоть оба, а хотя бы и БИХ.
Krys
Цитата(serjj @ Apr 17 2015, 14:51) *
А если у вас полоса мала в сравнении с fs, то и для CIC можно попробовать обойтись без коррекции.
Полоса либо половина возможной, либо четверть, но не меньше.

Цитата(serjj @ Apr 17 2015, 14:51) *
Ставим CIC 4 порядка, видим, что завал АЧХ в полосе пропускания не превышает завал при линейной интерполяции, но боковые лепестки ниже на 25 дБ. Можно получить и лучше, если использовать звенья с разными параметрами и подбирать полюса
Спасибо, убедили. Пожалуй, способ сгодится.

------------

Ещё думал какой-нибудь вариант, на основе того, который выше предлагал Maverick, когда ищем изменение знака производной, считаем эти места макушками синусоид, подменяем их табличными значениями. А между макушками делаем как и раньше линейную интерполяцию.


Цитата(ViKo @ Apr 17 2015, 15:18) *
Шум добавите до фильтра. А фильтр - какой сможете сделать, пользуясь доступными ресурсами, хоть ИГФ, хоть КИХ, хоть оба, а хотя бы и БИХ.
Это какая-то каша из топора получается. Фильтр нельзя из-за отсутствия ресурса. Но если добавить шум, а потом пропустить через фильтр - то так можно ))) Ресурс то на фильтр не возьмётся.
ViKo
Цитата(Krys @ Apr 17 2015, 11:35) *
Спасибо, убедили. Пожалуй, способ сгодится.
Это какая-то каша из топора получается. Фильтр нельзя из-за отсутствия ресурса. Но если добавить шум, а потом пропустить через фильтр - то так можно ))) Ресурс то на фильтр не возьмётся.

Точно, каша... но не из топора, а в голове. На CIC вас убедили, а на фильтр ресурсов нет? rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.