Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перенос частотстоты вниз
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
sup-sup
Цитата(SergiRF @ Dec 4 2011, 00:14) *
Тогда еще придется два два смесителя делать, скажем на операционниках. В качестве гетеродина - сигналы от PIC (CCP modul). Но не получится использовать встроенный в PIC ADC, так как нельзя одновременно захватывать два канала I & Q

ДА И вообще, если уже использовать внешний смеситель - просто переносим сигнал на новую ПЧ (скажем 5 кГц), далее полосовой фильр и просто оцифровываем. Так как скорость семплирования небольшая, можно вообще в baseband не переносить.
У меня задача - оцифровать, запомнить и проиграть, так что главная задача - понизить скорость семплирования и все.
Хотя этот вариант конечно не очень. Можно эффективнее

Я не знал, что у PIC нет мультиплексора ADC. Или, все-таки, есть?
Если перенести на 5 кГц, то это действительно, будет сигнал, а не огибающая.
А фильтр, наверняка, лучше применить БИХ (рекурсивный), так как он более легкий по реализации не на dsp-контроллере.
Фильтр то должен, по крайней мере, первый каскад, работать на Fs, поэтому хороший КИХ будет длинным.
SergiRF
Цитата(sup-sup @ Dec 4 2011, 00:46) *
Я не знал, что у PIC нет мультиплексора ADC. Или, все-таки, есть?

Каналов то много, но одновременно не работают, только по очереди, а это внесет искажения
Поясните плиз про работу в верхних зонах Найквиста
sup-sup
Цитата(SergiRF @ Dec 4 2011, 00:54) *
Каналов то много, но одновременно не работают, только по очереди, а это внесет искажения
Поясните плиз про работу в верхних зонах Найквиста

Параллельно и не надо. Такой же подход - учетверенная, но более низкая частота Fs для IQ.
***
Про верхние зоны Найквиста не понял. Если про то, что первый каскад децимирующего фильтра должен работать на Fs, то это для чисто цифровой реализации, когда сигнал сразу поступает на АЦП.
***
Извиняюсь, про это ivan219 сказал. Мне этот подход не нравится. Хороший фильтр нужен на нужную полосу, а это дороже, чем смеситель и простенький фнч (фпч)
ivan219
Цитата(SergiRF @ Dec 4 2011, 01:45) *
Вы имеете в виду работать в N ой зоне Найквиста?
Правильно ли я понимаю: при условии хорошего полосового фильтра , можно семплировать 9 кГц, несущая 50 кГц попадает в 5ю зону. И сигнал на выходе АЦП будет как будто несущая 5 кГц и не потребуется дополнительной обработки?

И может подскажете где почитать про предложенный вами фильтр, как коэф. посчитать?

Ну да можно работать в N зонах только там расчёт идёт от верхней полосы и нижней есть тонкости в противном случае может произойти наложение. Serg76 двал с сылку.

В гугле в бейте фильтры на переключаемых конденсаторах.
Там фильтры больших порядков на одном кристалле + небольшая обвязка резисторами.
Можно организовать хороший ПФ но по цене конечно дорого.
SergiRF
Цитата(sup-sup @ Dec 4 2011, 00:59) *
Про верхние зоны Найквиста не понял. Если про то, что первый каскад децимирующего фильтра должен работать на Fs, то это для чисто цифровой реализации, когда сигнал сразу поступает на АЦП.

Это я имею ввиду когда частота семплирования ниже частоты сигнала
"Правильно ли я понимаю: при условии хорошего полосового фильтра , можно семплировать 9 кГц, несущая 50 кГц попадает в 5ю зону. И сигнал на выходе АЦП будет как будто несущая 5 кГц и не потребуется дополнительной обработки?
"
ivan219
Цитата(sup-sup @ Dec 4 2011, 01:59) *
Про верхние зоны Найквиста не понял. Если про то, что первый каскад децимирующего фильтра должен работать на Fs, то это для чисто цифровой реализации, когда сигнал сразу поступает на АЦП.

Нет это дело происходит во время оцифровки сигнала. Мы как бы оцифровываем сигнал на гармониках. Одновременно перенося его в 0.

Цитата(SergiRF @ Dec 4 2011, 02:16) *
Это я имею ввиду когда частота семплирования ниже частоты сигнала
"Правильно ли я понимаю: при условии хорошего полосового фильтра , можно семплировать 9 кГц, несущая 50 кГц попадает в 5ю зону. И сигнал на выходе АЦП будет как будто несущая 5 кГц и не потребуется дополнительной обработки?
"

Той литературе которая у меня немного иначе. Есть формулы для расчёта. И получается что бы оцифровать сигнал полосой 50...52 кГц нужна частота дискретизации 4 кГц
Если интересно могу выложить скан.
SergiRF
Цитата(ivan219 @ Dec 4 2011, 01:22) *
Той литературе которая у меня немного иначе. Есть формулы для расчёта. И получается что бы оцифровать сигнал полосой 50...52 кГц нужна частота дискретизации 4 кГц
Если интересно могу выложить скан.

Вы имеете в виду 4 кГц - это минимальная частота, но можно и повыше? Главное что бы сигнал полностью попадал в зону найквиста
sup-sup
Цитата(ivan219 @ Dec 4 2011, 01:20) *
Нет это дело происходит во время оцифровки сигнала. Мы как бы оцифровываем сигнал на гармониках. Одновременно перенося его в 0.

Да, я потом понял про что и ниже отписался, что это не я предлагал, а Вы (ivan219).
Но здесь получается, что нужно хорошо отфильтровать все остальные зоны и перенести в '0' - это надо применить IQ эквивалентно, как для исходного сигнала. Еще один недостаток - уменьшение уровня сигнала, так как энергия распределена равномерно по всем зонам, что может ухудшить прием, если это важно. Перенос прямым методом (квадратурный) наиболее эффективный). Ничего не теряется. И нет паразитных каналов. А реализация может быть как прямая, так и с помощью навесных дополнительных компонентов.
ivan219
Цитата(SergiRF @ Dec 4 2011, 02:26) *
Вы имеете в виду 4 кГц - это минимальная частота, но можно и повыше? Главное что бы сигнал полностью попадал в зону найквиста

По выводу из книги должно быть именно 4 кГц тогда никаких наложений не будет.
И сигнал оцифруется без искажений.

sup-sup первоначальная идея то же не мне принадлежит. Я её немного раскрыл.
Serg76
Цитата(sup-sup @ Dec 4 2011, 02:27) *
Да, я потом понял про что и ниже отписался, что это не я предлагал, а Вы (ivan219).

вообще вроде бы как о субдискретизации я первый "заикнулся", но щас не об этом. если я нигде не ошибся, то можно взять Fs=8 кГц и ПЧ 49 кГц, тогда одна из копий сигнала окажется в полосе 0...2 кГц, затем конечно же это все фильтруем ФНЧ и вроде как дополнительного гетеродина не потребуется для коррекции.

Цитата(ivan219 @ Dec 4 2011, 02:22) *
Нет это дело происходит во время оцифровки сигнала. Мы как бы оцифровываем сигнал на гармониках. Одновременно перенося его в 0.

Я бы здесь немного подкорректировал, на самом деле при этом методе мы оцифровываем НЧ огибающую ВЧ сигнала, а то sup-sup может думает о гармониках ПЧ?
ivan219
Если интересна тема вот скан листов из книги.
Про дискретизацию полосовых сигналов.
Это то о чём говорил Serg76
Serg76
Цитата(ivan219 @ Dec 4 2011, 03:06) *
Это то о чём говорил Serg76

Ага, еще на второй странице топика, автор только щас обратил внимание sm.gif
ivan219
Цитата(Serg76 @ Dec 4 2011, 03:28) *
Ага, еще на второй странице топика, автор только щас обратил внимание sm.gif

Я и сам не сразу понял что вы предложили.
Да думаю что многие с этим не сталкивались.
По этому и не поняли. Надо было более раскрыто объяснить.
SergiRF
Всем большое спасибо. Буду пробовать на следующей неделе:
Выберу частоту дескретизации, что бы сигнал полностью попал по центру зоны найквиста.
Пересчет в IQ - смысла нет.

Только еще вопрос:
При проигровании сигнала (генерация ЦАП - 8 бит, семплирование как минимум 120 - 150 кГц) придется переносить сигнал вверх в цифре. Делаю просто умножитель (каждый семпл умножаю на табличное значение sin). Для простоты лучше переносить несущую в 4 раза (1 0 -1 0 1....) . Исходя из этого и оцифровывать сигнал лучше в 4 ой зоне.
Правильно я рассуждаю?
sup-sup
Цитата(Serg76 @ Dec 4 2011, 03:00) *
вообще вроде бы как о субдискретизации я первый "заикнулся", но щас не об этом. если я нигде не ошибся, то можно взять Fs=8 кГц и ПЧ 49 кГц, тогда одна из копий сигнала окажется в полосе 0...2 кГц, затем конечно же это все фильтруем ФНЧ и вроде как дополнительного гетеродина не потребуется для коррекции.


Я бы здесь немного подкорректировал, на самом деле при этом методе мы оцифровываем НЧ огибающую ВЧ сигнала, а то sup-sup может думает о гармониках ПЧ?

Все-таки, это не огибающая, а сигнал с перенесенной частотой заполнения. Огибающую надо получить программно в контроллере.
Преимущество - низкая частота дискретизации и связанные с ней затраты контроллера.
Недостатки (в общем случае).
Если есть помехи в других зонах, их надо фильтровать, что трудно и дорого реализовать для такого соотношения частоты и полосы (центральная частота 50 кГц, а полоса не более 4 кГц). Попытка реализации такого полосового фильтра приводит к применению не самых дешевых ОУ и их нужно много. В сравнение с этим подходом, перенос спектра в ноль (а это возможно только с применением IQ) дает максимально простой НЧ фильтр (два штуки LPF гораздо проще чем один полосовой). Смесители - это простые аналоговые ключи (4066, например) - тоже просто и недорого. Конечно, умножение на синус/косинус чище, чем на меандр, но по паразитным каналам приема лучше размножения спектра, так как разнос частот составляет удвоенную и половинную частоту гетеродина, что легче фильтровать преселектором. Вывод - обвес для приема сигнала IQ получается дешевле и стабильнее, чем для приема в зоне Найквиста. Затраты контроллера примерно одинаковые.
Второе, это уже упоминалось, что при частоте дискретизации 8 кГц мы берем только каждый шестой период ожидаемого сигнала, а остальные игнорируем. Таким образом коэффициент преобразования такого 'смесителя' очень низкий и отношение сигнал/помеха еще ухудшается.




Цитата(SergiRF @ Dec 4 2011, 13:08) *
Всем большое спасибо. Буду пробовать на следующей неделе:
Выберу частоту дескретизации, что бы сигнал полностью попал по центру зоны найквиста.
Пересчет в IQ - смысла нет.

Только еще вопрос:
При проигровании сигнала (генерация ЦАП - 8 бит, семплирование как минимум 120 - 150 кГц) придется переносить сигнал вверх в цифре. Делаю просто умножитель (каждый семпл умножаю на табличное значение sin). Для простоты лучше переносить несущую в 4 раза (1 0 -1 0 1....) . Исходя из этого и оцифровывать сигнал лучше в 4 ой зоне.
Правильно я рассуждаю?

А 'проигрывание' нужно сделать в том же диапазоне, то есть, вернуть сигнал на прежний частотный диапазон?
В этом случае правильно применить сохранение в виде IQ, а потом их же использовать в квадратурном модуляторе, как раз с применением табличных синуса и косинуса.
***
Вообще-то, тут тоже можно упрощенный синус и косинус применить.
И еще, нужно сделать интерполяцию сохраненной выборки для приведения к частоте DAC.
Нужна ли тогда децимация?
Может быть, просто памяти добавить?
SergiRF
Цитата(sup-sup @ Dec 4 2011, 12:36) *
А 'проигрывание' нужно сделать в том же диапазоне, то есть, вернуть сигнал на прежний частотный диапазон?
В этом случае правильно применить сохранение в виде IQ, а потом их же использовать в квадратурном модуляторе, как раз с применением табличных синуса и косинуса.
Вообще-то, тут тоже можно упрощенный синус и косинус применить.
И еще, нужно сделать интерполяцию сохраненной выборки для приведения к частоте DAC.
Нужна ли тогда децимация?
Может быть, просто памяти добавить?

Проиграть нужно опять на 50 кГц
Расчет IQ даже на пониженной частоте синхронизации займет время на реализацию. А мне в принципе в каком виде хранить = IQ или на низкой ПЧ все равно. Для расчеты IQ ФНЧ придется делать, лучше процессорное время оставить для вспомогательных алгоритмов.

Так после семплирования в N ой зоне, получим сигнал на новой несущей, уже низкой.
Как потом при проигровании восстановить частоту несущей?

Если просто перемножить на син, то получим зеркальный канал, но его можно уже после ЦАП отфильтровать ФНЧ, если конечно будет достаточная отстройка по частоте между сигналом и копией.
Fast
Цитата(SergiRF @ Dec 4 2011, 01:54) *
Каналов то много, но одновременно не работают, только по очереди, а это внесет искажения
про это можно поподробнее,
т.е. могут быть сигналы на другой частоте, кроме 50 кГц ?
Pavel_SSS
Цитата(SergiRF @ Dec 4 2011, 14:19) *
Проиграть нужно опять на 50 кГц

Если памяти хватает - просто сохраните выборки и "проиграйте" их. Если не хватает - напишите простейший архиватор - это будет проще, чем с нуля изучить всю теорию и научиться писать программы для ЦОС. Тем более тут ресурсы ЦП ограничены - библиотеки не поприменяешь и на Си не напишешь - тут придется на ассемблере писать и считать каждый такт.
sup-sup
Цитата(SergiRF @ Dec 4 2011, 14:19) *
Проиграть нужно опять на 50 кГц
Расчет IQ даже на пониженной частоте синхронизации займет время на реализацию. А мне в принципе в каком виде хранить = IQ или на низкой ПЧ все равно. Для расчеты IQ ФНЧ придется делать, лучше процессорное время оставить для вспомогательных алгоритмов.

Так после семплирования в N ой зоне, получим сигнал на новой несущей, уже низкой.
Как потом при проигровании восстановить частоту несущей?

Если просто перемножить на син, то получим зеркальный канал, но его можно уже после ЦАП отфильтровать ФНЧ, если конечно будет достаточная отстройка по частоте между сигналом и копией.

Если оцифрованными данными не нужно пользоваться, кроме как 'проиграть', то незачем с переносом возиться, как и написал Pavel_SSS.
Если же надо пользоваться, то тоже может быть, что лучше проигрывать исходную оцифровку. Если сделать чтобы Fs ADC и DAC совпадали, то совсем нормально.
***
Зеркального канала не будет при квадратурном переносе вверх (с применением IQ).
SergiRF
Цитата(sup-sup @ Dec 4 2011, 13:58) *
Если оцифрованными данными не нужно пользоваться, кроме как 'проиграть', то незачем с переносом возиться, как и написал Pavel_SSS.
Если же надо пользоваться, то тоже может быть, что лучше проигрывать исходную оцифровку. Если сделать чтобы Fs ADC и DAC совпадали, то совсем нормально.
***
Зеркального канала не будет при квадратурном переносе вверх (с применением IQ).

laughing.gif
Так тогда частота семплирования будет очень высокой, если ни чего не переносить. Я бы тогда вообще бы тему не открывал
sup-sup
Цитата(SergiRF @ Dec 4 2011, 15:22) *
laughing.gif
Так тогда частота семплирования будет очень высокой, если ни чего не переносить. Я бы тогда вообще бы тему не открывал

Так и да. С переносом туда и обратно затрат получается больше. А результат хуже.
Перенос вниз, а потом вверх делают тогда, когда нужна обработка сигнала. А если этого не требуется, то и вопроса нет.
Serg76
Цитата(sup-sup @ Dec 4 2011, 12:36) *
Преимущество - низкая частота дискретизации и связанные с ней затраты контроллера.
Недостатки (в общем случае).
Если есть помехи в других зонах, их надо фильтровать, что трудно и дорого реализовать для такого соотношения частоты и полосы (центральная частота 50 кГц, а полоса не более 4 кГц). Попытка реализации такого полосового фильтра приводит к применению не самых дешевых ОУ и их нужно много. В сравнение с этим подходом, перенос спектра в ноль (а это возможно только с применением IQ) дает максимально простой НЧ фильтр (два штуки LPF гораздо проще чем один полосовой). Смесители - это простые аналоговые ключи (4066, например) - тоже просто и недорого. Конечно, умножение на синус/косинус чище, чем на меандр, но по паразитным каналам приема лучше размножения спектра, так как разнос частот составляет удвоенную и половинную частоту гетеродина, что легче фильтровать преселектором. Вывод - обвес для приема сигнала IQ получается дешевле и стабильнее, чем для приема в зоне Найквиста. Затраты контроллера примерно одинаковые.
Второе, это уже упоминалось, что при частоте дискретизации 8 кГц мы берем только каждый шестой период ожидаемого сигнала, а остальные игнорируем. Таким образом коэффициент преобразования такого 'смесителя' очень низкий и отношение сигнал/помеха еще ухудшается.

Так в том то все и дело, что нужно получить как можно меньше вычислительных затрат, а при вашей схеме лопатить впустую выборку на 200 кГц ну никак не вяжется с возможностями PICа. Кроме того, те же I/Q можно получить и при субдискрете, схемы формирования квадратур остаются те же самые, но уже на более низкой тактовой. Я тоже всеми руками "ЗА" квадратуры, в принципе я по-другому никогда и не работал, здесь же сейчас вопрос в простоте реализации и уменьшении вычислительной нагрузки. Единственный минус при таком подходе это конечно же ПЧ, так как все искажения и потери будут определяться скорее на ПЧ, чем в полосе основного сигнала, но простоты реализации и дешевизны здесь не отнять. Не думаю, что реализация фильтра ПЧ потребует больших затрат, чем тот же смеситель, который тоже должен быть достаточно малошумящим и линейным, т.е. с большим ДД прежде всего по интермодуляции в режиме "большого" сигнала (смесители как правило всегда работают в таком режиме, а на аналоговом ключе вы получите только мощный набор продуктов нелинейного преобразования на выходе), ибо мы не знаем какие сигналы потребуется в дальнейшем демодулировать, может КАМ для которой нужен линейный тракт. так что реализация смесителя на простом ключе здесь точно не прокатит, я даже думаю, что качественная его реализация потребует бОльших вложений, чем того же фильтра ПЧ. Да и вообще надо стараться как можно дальше уходить от обработки в аналоге и двигаться в сторону цифры. Где-то так.
sup-sup
Цитата(Serg76 @ Dec 4 2011, 14:45) *
Так в том то все и дело, что нужно получить как можно меньше вычислительных затрат, а при вашей схеме лопатить впустую выборку на 200 кГц ну никак не вяжется с возможностями PICа. Кроме того, те же I/Q можно получить и при субдискрете, схемы формирования квадратур остаются те же самые, но уже на более низкой тактовой. Я тоже всеми руками "ЗА" квадратуры, в принципе я по-другому никогда и не работал, здесь же сейчас вопрос в простоте реализации и уменьшении вычислительной нагрузки. Единственный минус при таком подходе это конечно же ПЧ, так как все искажения и потери будут определяться скорее на ПЧ, чем в полосе основного сигнала, но простоты реализации и дешевизны здесь не отнять. Не думаю, что реализация фильтра ПЧ потребует больших затрат, чем тот же смеситель, который тоже должен быть достаточно малошумящим и линейным, т.е. с большим ДД прежде всего по интермодуляции в режиме "большого" сигнала (смесители как правило всегда работают в таком режиме, а на аналоговом ключе вы получите только мощный набор продуктов нелинейного преобразования на выходе), ибо мы не знаем какие сигналы потребуется в дальнейшем демодулировать, может КАМ для которой нужен линейный тракт. так что реализация смесителя на простом ключе здесь точно не прокатит, я даже думаю, что качественная его реализация потребует бОльших вложений, чем того же фильтра ПЧ. Да и вообще надо стараться как можно дальше уходить от обработки в аналоге и двигаться в сторону цифры. Где-то так.

Хотя, кажется, что актуальность переноса вниз падает, прицепил картинку аппаратной поддержки для работы с квадратурами. Ключ нормально подходит. Можно посмотреть как это сделано в SDR http://uu4jgi.ucoz.ua/SDR/SMTSDRRXDR2G-YU1LM.pdf
Только там два ключа, сдвинутых на 180 градусов, что позволяет получить полную передачу энергии при переносе. Это практически эквивалентно 'честному' IQ
***
Про загрузку контроллера. Гетеродин генерится таймерами, которые только запустить надо и все. А частота оцифровки после аналогового ФНЧ выбирается максимально низкая. 8 кГц вполне подойдет. Зато цифровой фильтрации не нужно делать. И не нужен полосовой фильтр. Кстати, это хорошо работало на макете с atmega168. Лучше, чем схема с одним каналом и с ПЧ.
RA1TEX
мужики че вы тут выдумаываете все уже давно решено sm.gif
OH2NLT решил данную проблему на DSpic там есть примеры исходники http://www.kolumbus.fi/~ks9292/Cheap_dsp/Cheap_dsp.htm сделана квадратурой на фильтре гильберта 69 порядка
Fast
Цитата(RA1TEX @ Dec 8 2011, 11:26) *
OH2NLT решил данную проблему на DSpic там есть примеры исходники http://www.kolumbus.fi/~ks9292/Cheap_dsp/Cheap_dsp.htm сделана квадратурой на фильтре гильберта 69 порядка
и какую же проблему он решил ?
RA1TEX
решил задачу выделения нужной боковой взял с квадратурного смесителя I и Q на "нуле" пропустил через гильберта и выделил нужную боковую и все это на микроконтроллере.
sup-sup
Цитата(RA1TEX @ Dec 8 2011, 16:33) *
решил задачу выделения нужной боковой взял с квадратурного смесителя I и Q на "нуле" пропустил через гильберта и выделил нужную боковую и все это на микроконтроллере.

Но это же не RISC, а DSC.
RA1TEX
а на 18 пике это утопия.
Fast
Цитата(RA1TEX @ Dec 8 2011, 16:33) *
решил задачу выделения нужной боковой взял с квадратурного смесителя I и Q на "нуле" пропустил через гильберта и выделил нужную боковую и все это на микроконтроллере.
а нужен не просто гильберт, а децимация.
а перед децимацией нужно все качественно отфильтровать выше полосы полезного сигнала
а фильтровать трудно, поскольку Fd в 25раз больше полосы сигнала и нужен жутко-добротный фильтр
либо на БИХ, либо на каскаде фильтров (CIC+FIR)

субдескретизация по N-окну найквиста здесь в тему, если сигнал всегда находится на частоте 50 кГц (т.е. можно поставить жестко рассчитанный преселектор)
а есть или нет сигналы на других частотах и нужно ли их обрабатывать - неизвестно- мне на этот вопрос не ответили...

поэтому спасибо, конечно, за дружеское похлопывание по плечу =) но эта штуковина проблему не решает
RA1TEX
дело не в похлопывании. пытаюсь сообразить примерно тоже самое но на TMS 5502-м. думаю требование к преселектору облегчатся. кварцевый фильтр полюбому в приемнике стоять должен. на второй ПЧ получается уже нужная боковая.допустим 50..53кгц. но в моем случае субдескритезация наверное не актуальна.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.