Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перенос частотстоты вниз
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
SergiRF
Hi
Я новичок в ЦОС, поэтому прошу не гнобить сразу!
Задача:
Есть сигнал на несущей частоте 50 кГц, узкрполосный - ширина спектра по уровню -3дБ = 2 кГц
Сигнал требуется оцифровать и передать
Сигнал семплируется АЦП с частотой 150 кГц
Требуется написать алгоритм на С позволяющий перенести частоту вниз, НО не без использования IQ, тоесть это НЕ DDC
На входе алгоритма будет семплирование 150 кГц, а на выходе должна быть в пределах 10 кГц.
И большое ограничение - алгоритм не должен быть требовательным к ресурсам, код будет компилится под 8и битный pic18, но и требований к точности нет.
Вообще то, как бы понятно - опорник, смеситель, ФНЧ. Но не представляю как это можно на С описать.
Есть идеи?

sup-sup
Цитата(SergiRF @ Dec 2 2011, 23:27) *
Hi
Я новичок в ЦОС, поэтому прошу не гнобить сразу!
Задача:
Есть сигнал на несущей частоте 50 кГц, узкрполосный - ширина спектра по уровню -3дБ = 2 кГц
Сигнал требуется оцифровать и передать
Сигнал семплируется АЦП с частотой 150 кГц
Требуется написать алгоритм на С позволяющий перенести частоту вниз, НО не без использования IQ, тоесть это НЕ DDC
На входе алгоритма будет семплирование 150 кГц, а на выходе должна быть в пределах 10 кГц.
И большое ограничение - алгоритм не должен быть требовательным к ресурсам, код будет компилится под 8и битный pic18, но и требований к точности нет.
Вообще то, как бы понятно - опорник, смеситель, ФНЧ. Но не представляю как это можно на С описать.
Есть идеи?

Если нет требований к точности, то может быть, лучше и вовсе не делать ничего. rolleyes.gif
Если делать один смеситель с переносом на 10 кГц, то будет зеркальный канал приема (30 или 70 кГц).
Значит, лучше всего IQ.
Если бы частота сэмплирования была 200 кГц (вчетверо выше от требуемой), то для канала I все сводится к прореживанию вдвое, каждый раз с переменой знака (умножение на .. 1 0 -1 0 1 0 -1 0 1 0 ..), а канал Q - то же самое со сдвигом на один сэмпл (что соответствует 90 градусам).
SergiRF
Цитата(sup-sup @ Dec 2 2011, 23:48) *
Если бы частота сэмплирования была 200 кГц (вчетверо выше от требуемой), то IQ сводится к прореживанию вдвое, каждый раз с переменой знака, а канал Q - то же самое со сдвигом на один сэмпл.

выборки номер:
1 2 3 4 5 6 7 8
берется каждая вторая для I 1 3 5 7
для Q 2 4 6 8
На счет смены знака не понял. Допустим АЦП 8 бит - от 0 до 3 В. Сигнал смещен на 1.5 (центрирован). На выходе АЦП получим signed char, смена знака - вы имеете ввиду с + на - и наоборот для каждой выборки?
А фильтрация в данном случае не нужна?

Этот алгоритм конечно хорош если только точно известна несущая и есть возможность частоту дескретизации повысить, а если всетаки нет?
Serg76
ADC (Fs=150 kHz) -> ПЧ (гетеродин + смеситель) в ноль -> ресамплер (полифазник на КИХ) на Fs2=10 kHz
SergiRF
Цитата(Serg76 @ Dec 3 2011, 00:50) *
ADC (Fs=150 kHz) -> ПЧ (гетеродин + смеситель) в ноль -> ресамплер (полифазник на КИХ) на Fs2=10 kHz

Круто. Спасибо blink.gif Все стало предельно понятно. Грамотные и развернутые комментарии - конек этого форума.

"Я новичок в ЦОС, поэтому прошу не гнобить сразу!"
Serg76
Цитата(SergiRF @ Dec 3 2011, 01:59) *
Круто. Спасибо blink.gif Все стало предельно понятно. Грамотные и развернутые комментарии - конек этого форума.

Чего не понятно? или сразу код выложить?
SergiRF
Цитата(Serg76 @ Dec 3 2011, 10:55) *
Чего не понятно? или сразу код выложить?

Для примера было бы неплохо!
Может ссылочку полезную.
И если бы ваш комент для меня был бы понятен, я вообще бы ни чего не спрашивал!!!
Это если ты в теме давно, то все понятно, а когда только начинаешь хочется дельного и простого совета.

Может поясните пост:
"Если бы частота сэмплирования была 200 кГц (вчетверо выше от требуемой), то для канала I все сводится к прореживанию вдвое, каждый раз с переменой знака (умножение на .. 1 0 -1 0 1 0 -1 0 1 0 ..), а канал Q - то же самое со сдвигом на один сэмпл (что соответствует 90 градусам)."

Тяжело понять как это на С или ASM реализовать
Фильтр не нужен?

И может подскажете как для данного случая UP converter сделать?
Serg76
Цитата(SergiRF @ Dec 3 2011, 11:32) *
Может поясните пост:
"Если бы частота сэмплирования была 200 кГц (вчетверо выше от требуемой), то для канала I все сводится к прореживанию вдвое, каждый раз с переменой знака (умножение на .. 1 0 -1 0 1 0 -1 0 1 0 ..), а канал Q - то же самое со сдвигом на один сэмпл (что соответствует 90 градусам)."

Тяжело понять как это на С или ASM реализовать
Фильтр не нужен?

чтобы не переносить, вот ссылка на способы формирования квадратурного потока, там ответ на этот вопрос (рис.4).

Цитата(SergiRF @ Dec 3 2011, 11:32) *
И может подскажете как для данного случая UP converter сделать?

да все с помощью той же полифазной структуры, есть еще полиномиальные интерполяторы в виде структуры Farrow. кстати вот неплохой ресурс dsplib
Pavel_SSS
Цитата(SergiRF @ Dec 3 2011, 12:32) *
Для примера было бы неплохо!
Может ссылочку полезную.
И если бы ваш комент для меня был бы понятен, я вообще бы ни чего не спрашивал!!!
Это если ты в теме давно, то все понятно, а когда только начинаешь хочется дельного и простого совета.

Может поясните пост:
"Если бы частота сэмплирования была 200 кГц (вчетверо выше от требуемой), то для канала I все сводится к прореживанию вдвое, каждый раз с переменой знака (умножение на .. 1 0 -1 0 1 0 -1 0 1 0 ..), а канал Q - то же самое со сдвигом на один сэмпл (что соответствует 90 градусам)."

Тяжело понять как это на С или ASM реализовать
Фильтр не нужен?

Вам надо для начала убрать из входного потока постоянное смещение - отнимите известное смещение или (что лучше) усредняйте значение входного сигнала и отнимайте среднее. далее отсчеты сигнала умножаете на отсчеты косинуса с частотой 60 кгц, которые заранее вычисляете. Если бы частота семплирования была бы кратна этим 60 кгц, то последовательность косинуса состояла бы из нулей и +-1,что существенно бы упростило вычисления. Далее применяете фильтр КИХ 16 или выше порядка с полосой пропускания 2 кгц и с полосой задержания какой Вам нужно (моделируете с помощью матлабовского FDATool), для фильтра вычисляете не все отсчеты, только каждый 15 отсчет, получаете последовательность с частотой дискретизации 10 кгц и спектром 2 кгц.
ivan219
Я что то так и не понял в чём проблема.
Автору нужно всего лишь перенести полосу в 2 кГц с 50 кГц на 0.
И что тут сложного? Один программный умножитель на 50 кГц.
У него частота дискретизации 150 кГц значит 75 кГц весь диапазон.
При переносе в них появится зеркальная составляющая на частоте 50 кГц которую легко можно отфильтровать НЧ фильтром.
Serg76
Цитата(ivan219 @ Dec 3 2011, 14:27) *
Я что то так и не понял в чём проблема.
Автору нужно всего лишь перенести полосу в 2 кГц с 50 кГц на 0.
И что тут сложного? Один программный умножитель на 50 кГц.
У него частота дискретизации 150 кГц значит 75 кГц весь диапазон.
При переносе в них появится зеркальная составляющая на частоте 50 кГц которую легко можно отфильтровать НЧ фильтром.

невнимательно прочитали условие задачи. перенести в ноль не проблема, надо еще децимировать до 10 кГц.
ivan219
Ааа извиняюсь sm.gif
Тогда после фильтра каждый 15 отсчёт. Нужно брать. Как выше и рекомендовали.
Я бы ещё добавил полосовой фильтр на 2 кГц в самом начал ведь о сигнале мы ничего не знаем. Возможно там есть помехи и при переносе может произойти наложение.
Serg76
Цитата(ivan219 @ Dec 3 2011, 17:04) *
Ааа извиняюсь sm.gif
Тогда после фильтра каждый 15 отсчёт. Нужно брать. Как выше и рекомендовали.
Я бы ещё добавил полосовой фильтр на 2 кГц в самом начал ведь о сигнале мы ничего не знаем. Возможно там есть помехи и при переносе может произойти наложение.

При каком переносе? Не нужен никакой полосовой фильтр, перед АЦП антиалиасинговый фильтр на частоту Найквиста, затем сдвигаем уже оцифрованный сигнал в ноль, а потом децимируем вместе с НЧ фильтрацией до 10 кГц и все, вроде все просто.
sup-sup
Цитата(ivan219 @ Dec 3 2011, 16:04) *
Ааа извиняюсь sm.gif
Тогда после фильтра каждый 15 отсчёт. Нужно брать. Как выше и рекомендовали.
Я бы ещё добавил полосовой фильтр на 2 кГц в самом начал ведь о сигнале мы ничего не знаем. Возможно там есть помехи и при переносе может произойти наложение.

Если частота сэмплирования 150 кГц, то фнч 'обязан быть', чтобы выше 75 кГц подавить сколько надо (можно).
Автор не сказал, что дальше делать с этим сигналом. Что значит 'передать'. Возможно, нужна только огибающая в заданной полосе. Возможно, сложная модуляция. Если IQ 'не надо', то что это значит? Наиболее общий подход (при неопределенности задачи) брать IQ с последующей фильтрацией и децимацией, что подходит для всех случаев, так как сохраняется полная информация о сигнале в заданной полосе. Задача упрощается, если Fs ровно в 4 раза больше частоты, которую надо 'перенести в ноль'. Синус вырождается в 0 1 0 -1 , а косинус в 1 0 -1 0.
ivan219
Нет вы не верно поняли.
Ни до АЦП а поле. Перед переносом.
Так как полоса в 75 кГц может содержать кроме нужной полосы в 2 кГц ещё и мусор.
Вот от него я и предложил поставить ПФ. Если конечно автором у же это не сделано.
sup-sup
..сидели, пили вразнобой,
мадеру, старку, зверобой...
Serg76
Цитата(ivan219 @ Dec 3 2011, 17:45) *
Ни до АЦП а поле. Перед переносом.
Так как полоса в 75 кГц может содержать кроме нужной полосы в 2 кГц ещё и мусор.
Вот от него я и предложил поставить ПФ. Если конечно автором у же это не сделано.

Ну тогда это полная ерунда, т.к. при сдвиге сигнала по частоте никакого перекрытия не будет, это обычное умножение сигнала на комплексную экспоненту, а весь "мусор" отфильтруется ФНЧ.
SergiRF
Спасибо за дельные коменты
Есть еще одна немаловажная проблема - компилится код будет под PIC18, 8 бит. есть правда перемножитель.
Не так много циклов на обработку между семплами - порядка сотни команд, а то и меньше.
Благодаря коментам, я осознал проблему a14.gif .
В итоге конечно лучше получить набор квадратур по 8 бит.
То есть уже класический DDC
Для упрощения задачи - частоту семплирования сделаю ровно в 4 раза выше несущей.
Возращаясь к 1ому посту sup-sup:
"Если бы частота сэмплирования была 200 кГц (вчетверо выше от требуемой), то для канала I все сводится к прореживанию вдвое, каждый раз с переменой знака (умножение на .. 1 0 -1 0 1 0 -1 0 1 0 ..), а канал Q - то же самое со сдвигом на один сэмпл (что соответствует 90 градусам).
"
Вопросы к спецам:
- На самом ли деле этот частный случай снижает требования к алгоритму?
- Нужен ли будет ФНЧ? (я всетаки думаю, что да rolleyes.gif )
- Как этот алгоритм наиболее лучшим способом положить на 8 битный RISC контроллер (АЦП тоже 8 бит)
Был признателен за простенький код на С или matlab для DDC cheers.gif rolleyes.gif
Спасибо большое
Serg76
SergiRF Хотел бы еще уточнить такой момент: в изначальной реализации сигнал, который расположен на 50 кГц (некоторая ПЧ допустим), присутствует один или имеются еще некоторые паразитные составляющие? Я к чему это спрашиваю, если сигнал один и остальные паразиты незначительны, то можно применить субдискретизацию сигнала, в результате не надо будет оцифровывать сигнал с такой достаточно большой частотой Fs=200 кГц и затем децимировать его, достаточно будет сразу выставить Fs=10 кГц, зачем семплы впустую лопатить, а полученную в результате частотную отстройку убрать все тем же гетеродином, реализация которого не так и сложна.
Pavel_SSS
Цитата(SergiRF @ Dec 3 2011, 18:45) *
Вопросы к спецам:
- На самом ли деле этот частный случай снижает требования к алгоритму?
- Нужен ли будет ФНЧ? (я всетаки думаю, что да rolleyes.gif )
- Как этот алгоритм наиболее лучшим способом положить на 8 битный RISC контроллер (АЦП тоже 8 бит)
Был признателен за простенький код на С или matlab для DDC cheers.gif rolleyes.gif
Спасибо большое

Для того, чтобы сказать, нужны ли Вам квадратуры, нужно понимать, что Вы собираетесь желать потом с перенесенным сигналом - нужна ли Вам информация о фазе сигнала или нет, если не нужна и Вы будете мерить только амплитуду - то и квадратуры не нужны, лучше подберите так частоты, чтобы табличные значения косинуса были 1,0,-1,0... - т.е. частота дискретизации в 4 раза больше чем центральная частота сигнала. Если нужна информация о фазе - например при разного рода BPSK и подобных модуляций, то без квадратур и не обойтись. но их можно уже после децимации использовать, ибо тащить сигнал с полосой 2 кгц при частоте выборок 150 кгц в квадратурах - расточительно.
Нужен ли ФНЧ - зависит от задачи. В принципе, если этот сигнал - АМ, то применив перенос частоты и фильтр получите эффективную разрядность порядка 14 бит и динамический диапазон больше 40 дб, если этого не надо, то можете просто семплировать на частоте 10 кгц, как предлагал предыдущий оратор, - и все получится, но с диапазоном менее 20 дб...
sup-sup
Цитата(Pavel_SSS @ Dec 3 2011, 21:03) *
Для того, чтобы сказать, нужны ли Вам квадратуры, нужно понимать, что Вы собираетесь желать потом с перенесенным сигналом - нужна ли Вам информация о фазе сигнала или нет, если не нужна и Вы будете мерить только амплитуду - то и квадратуры не нужны, лучше подберите так частоты, чтобы табличные значения косинуса были 1,0,-1,0... - т.е. частота дискретизации в 4 раза больше чем центральная частота сигнала. Если нужна информация о фазе - например при разного рода BPSK и подобных модуляций, то без квадратур и не обойтись. но их можно уже после децимации использовать, ибо тащить сигнал с полосой 2 кгц при частоте выборок 150 кгц в квадратурах - расточительно.
Нужен ли ФНЧ - зависит от задачи. В принципе, если этот сигнал - АМ, то применив перенос частоты и фильтр получите эффективную разрядность порядка 14 бит и динамический диапазон больше 40 дб, если этого не надо, то можете просто семплировать на частоте 10 кгц, как предлагал предыдущий оратор, - и все получится, но с диапазоном менее 20 дб...

С IQ решение самое 'правильное' в том смысле, что этот узел можно сделать и 'забыть'. IQ годятся для всех сигналов, так как нет потерь, а только перенос спектра. Получив IQ, мы не теряем ничего из исходного сигнала. Посмотрите сами - все сэмплы 200 кГц не только применены, но и не искажены - все они есть в двух квадратурных потоках. Применение sin (0 1 0 -1) и cos (1 0 -1 0) совершенно не ущербно, а просто частный случай, позволяющий не применять умножение и отказаться от нулевых значений, если это уменьшит затраты. Больше ничего не поменялось.
Для получения огибающей нужно векторно сложить IQ (после фильтрации), то есть 'сумма квадратов под корнем'. Критично по времени извлечение корня.
ivan219
Цитата(Serg76 @ Dec 3 2011, 17:51) *
Ну тогда это полная ерунда, т.к. при сдвиге сигнала по частоте никакого перекрытия не будет, это обычное умножение сигнала на комплексную экспоненту, а весь "мусор" отфильтруется ФНЧ.

Я не комплексную экспоненту имел в виду. А вещественный сигнал на вещественный синус. Один умножитель а не IQ на выходе.
SergiRF
Цитата(Serg76 @ Dec 3 2011, 17:57) *
SergiRF Хотел бы еще уточнить такой момент: в изначальной реализации сигнал, который расположен на 50 кГц (некоторая ПЧ допустим), присутствует один или имеются еще некоторые паразитные составляющие? Я к чему это спрашиваю, если сигнал один и остальные паразиты незначительны, то можно применить субдискретизацию сигнала, в результате не надо будет оцифровывать сигнал с такой достаточно большой частотой Fs=200 кГц и затем децимировать его, достаточно будет сразу выставить Fs=10 кГц, зачем семплы впустую лопатить, а полученную в результате частотную отстройку убрать все тем же гетеродином, реализация которого не так и сложна.

Будет сигнал с произвольным видом модуляции
Сигнал в последствии надо проиграть, то есть квадратуры нужны
То есть вы предлагаете семплировать 10 кГц? Что значит:
"а полученную в результате частотную отстройку убрать все тем же гетеродином, реализация которого не так и сложна."??????
Можно алгоритм чуть чуть подробнее
Serg76
Цитата(ivan219 @ Dec 3 2011, 22:00) *
Я не комплексную экспоненту имел в виду. А вещественный сигнал на вещественный синус. Один умножитель а не IQ на выходе.

какая разница? есть цифровой сигнал с периодом повторения Fs, в этом диапазоне можете двигать сигнал как угодно без всяких перекрытий. и вообще о каких перекрытиях идет речь? физику происходящего объясните.

Цитата(SergiRF @ Dec 3 2011, 22:09) *
Будет сигнал с произвольным видом модуляции
Сигнал в последствии надо проиграть, то есть квадратуры нужны

вы внимательно читаете, о чем вас спрашивают, вроде по-русски пишу?
ivan219
Цитата(Serg76 @ Dec 3 2011, 22:15) *
какая разница? есть цифровой сигнал с периодом повторения Fs, в этом диапазоне можете двигать сигнал как угодно без всяких перекрытий. и вообще о каких перекрытиях идет речь? физику происходящего объясните.

Конструкция как на картинке.
А по поводу перекрытия это когда нет умножения на комплексную экспоненту.
То отрицательные частоты пройдя через ноль завернутся и пойдут в верх по частоте.
Если есть частота 48 кГц и мы её умножим на 50 кГц то получим то же самое если бы мы умножили 52 кГц на 50 кГц т.е. на частоте 2 кГц получится сумма сигналов 48 кГц и 52 кГц.
Не перекрытие а наложение.
sup-sup
Цитата(ivan219 @ Dec 3 2011, 21:22) *
Конструкция как на картинке.
А по поводу перекрытия это когда нет умножения на комплексную экспоненту.
То отрицательные частоты пройдя через ноль завернутся и пойдут в верх по частоте.
Если есть частота 48 кГц и мы её умножим на 50 кГц то получим то же самое если бы мы умножили 52 кГц на 50 кГц т.е. на частоте 2 кГц получится сумма сигналов 48 кГц и 52 кГц.
Не перекрытие а наложение.

Получается зеркальный канал, что хуже, чем принимать еще и квадратурный канал.
Но если это устраивает, а ресурсов совсем мало, то смеситель в виде МОП-ключа можно вынести наружу, после него аналоговый фильтр ПЧ (на 1-2 кГц), а оцифровка уже на частоте 10 кГц. Сдвоенного ОУ за $0.1 хватит. Гетеродин формируется контроллером с помощью таймера.
ivan219
Цитата(sup-sup @ Dec 3 2011, 22:51) *
Получается зеркальный канал, что хуже, чем принимать еще и квадратурный канал.
Но если это устраивает, а ресурсов совсем мало, то смеситель в виде МОП-ключа можно вынести наружу, после него аналоговый фильтр ПЧ (на 1-2 кГц), а оцифровка уже на частоте 10 кГц. Сдвоенного ОУ за $0.1 хватит. Гетеродин формируется контроллером с помощью таймера.


Нет квадратурный канал конечно лучше будет. Тут я не спорю.
Я ответил на вопрос с первого поста о том что ему не нужно IQ и предложил вариант реализации этого.
А так конечно IQ, гетеродин на 1/4 частоты дискретизации и грамотно сделанный НЧ фильтр с децимацией. Будет выгоднее.
Serg76
Цитата(ivan219 @ Dec 3 2011, 22:22) *
Конструкция как на картинке.
А по поводу перекрытия это когда нет умножения на комплексную экспоненту.
То отрицательные частоты пройдя через ноль завернутся и пойдут в верх по частоте.
Если есть частота 48 кГц и мы её умножим на 50 кГц то получим то же самое если бы мы умножили 52 кГц на 50 кГц т.е. на частоте 2 кГц получится сумма сигналов 48 кГц и 52 кГц.
Не перекрытие а наложение.

вы меня конечно извините, но вы тут какой-то бред пишите.
во-первых, нет никакой разницы в каком базисе работать - вещественном или комплексном, главное условие, чтобы выполнялось условие теоремы Найквиста-Котельникова, которая гласит, что сигнал можно восстановить без потерь по последовательности выборок следующих с частотой в два раза больше, чем полоса сигнала. это что касается вещественного сигнала. для комплексного (квадратурного) сигнала эта частота должна быть больше, чем полоса сигнала, ибо информация заложена в обоих квадратурах и они дополняют одна другую.
во-вторых, по поводу переноса сигнала. есть сигнал на частоте 50 кГц с полосой 2 кГц. есть опорный гетеродин с такой же частотой 50 кГц. после перемножения этих двух сигналов наш полезный сигнал окажется в области нуля, который мы и отфильтровываем ФНЧ с частой среза 1 кГц. какие наложения/перекрытия, откуда они могут взяться?

Цитата(sup-sup @ Dec 3 2011, 21:51) *
Но если это устраивает, а ресурсов совсем мало, то смеситель в виде МОП-ключа можно вынести наружу, после него аналоговый фильтр ПЧ (на 1-2 кГц), а оцифровка уже на частоте 10 кГц. Сдвоенного ОУ за $0.1 хватит. Гетеродин формируется контроллером с помощью таймера.

Я эту структуру ему уже выше предлагал, когда спрашивал о паразитных составляющих
ivan219
Цитата(Serg76 @ Dec 3 2011, 23:19) *
вы меня конечно извините, но вы тут какой-то бред пишите.
во-первых, нет никакой разницы в каком базисе работать - вещественном или комплексном, главное условие, чтобы выполнялось условие теоремы Найквиста-Котельникова, которая гласит, что сигнал можно восстановить без потерь по последовательности выборок следующих с частотой в два раза больше, чем полоса сигнала. это что касается вещественного сигнала. для комплексного (квадратурного) сигнала эта частота должна быть больше, чем полоса сигнала, ибо информация заложена в обоих квадратурах и они дополняют одна другую.
во-вторых, по поводу переноса сигнала. есть сигнал на частоте 50 кГц с полосой 2 кГц. есть опорный гетеродин с такой же частотой 50 кГц. после перемножения этих двух сигналов наш полезный сигнал окажется в области нуля, который мы и отфильтровываем ФНЧ с частой среза 1 кГц. какие наложения/перекрытия, откуда они могут взяться?

Теперь я не понял.
Зачем вы сдюа теорему Найквиста-Котельникова приплили???
Хорошо.
Допустим у нас есть сигнал полосой 50...52 кГц тогда умножив на 50 кГц мы перенесём этот сигнал в полосу 0...2 кГц
А теперь подумайте и скажите куда попадёт сигнал с половой 48...50 кГц если его также умножить на 50 кГц????
Serg76
Цитата(ivan219 @ Dec 3 2011, 22:32) *
А теперь подумайте и скажите куда попадёт сигнал с половой 48...50 кГц если его также умножить на 50 кГц????

в ту же полосу 0...2 кГц только с инверсией спектра.
ivan219
Цитата(Serg76 @ Dec 3 2011, 23:35) *
в ту же полосу 0...2 кГц только с инверсией спектра.

Ну вот я про это и говорил.
После переноса в 0 произойдёт наложение полосы 48...50 кГц на полосу 50..52 кГц
SergiRF
Ок
Семплирую на скорости 4x 8бит.
сигнал центрирован по амплитуде на 1/2 Uref, то есть АЦП как бы вадает signed char.
Четные отчеты перемножаю на синус 0 1 0 -1 (где -1 меняю знак, где 0 - выборка = 0 , то есть перемножение)
Нечетные отчеты перемножаю на кос 1 0 -1 0 (где -1 меняю знак)
Далее два ФНЧ для I&Q
Далее децемация и готово, вроде?
В этом букваре http://www.hunteng.co.uk/pdfs/tech/ddctheory.pdf на Figure 8 показано, что после децемации возникают вроде паразитные спектры или нет?
И может подскажете ссылочку на описание простого ФНЧ, только просьба не забывать, что нет вычислительной мощности (PIC18)
И ФНЧ придется делать на 200 кГц. Может можно ФНЧ сделать после децемации?
ivan219
Цитата(SergiRF @ Dec 3 2011, 23:41) *
И ФНЧ придется делать на 200 кГц. Может можно ФНЧ сделать после децемации?

Можно делать вместе с децимацией но ни как не после.
И децимацию можно проводить в несколько этапов.
Сначала в 5 раз потом в 4 раза.
Или в 5 -> 2 -> 2
Так и порядок фильтров будет меньше.
Из простых можно CIC фильтры но у них АЧХ завалевается но её можно востановить последующий КИХ фильтром.
http://www.dsplib.ru/content/cicid/cicid.html
Serg76
Цитата(ivan219 @ Dec 3 2011, 22:40) *
Ну вот я про это и говорил.
После переноса в 0 произойдёт наложение полосы 48...50 кГц на полосу 50..52 кГц

я все равно не понимаю зачем вы в тракт впихнули фильтр ПЧ, если сигнал все равно с таким же успехом отфильтруется на НЧ?

Цитата(ivan219 @ Dec 3 2011, 22:46) *
Можно делать вместе с децимацией но ни как не после.
И децимацию можно проводить в несколько этапов.
Сначала в 5 раз потом в 4 раза.
Или в 5 -> 2 -> 2
Так и порядок фильтров будет меньше.
Из простых можно CIC фильтры но у них АЧХ завалевается но её можно востановить последующий КИХ фильтром.
http://www.dsplib.ru/content/cicid/cicid.html

Зачем городить такой огород, который вряд-ли влезет в PIC, если сразу можно оцифровать на 10 кГц. Ведь понятно, что вычислительная нагрузка напрямую зависит от соотношения частоты дискретизации и полосы сигнала?
SergiRF
Цитата(Serg76 @ Dec 3 2011, 23:06) *
Зачем городить такой огород, который вряд-ли влезет в PIC, если сразу можно оцифровать на 10 кГц. Ведь понятно, что вычислительная нагрузка напрямую зависит от соотношения частоты дискретизации и полосы сигнала?

Уже писали про это, но без пояснений.
ivan219
Цитата(Serg76 @ Dec 4 2011, 00:01) *
я все равно не понимаю зачем вы в тракт впихнули фильтр ПЧ, если сигнал все равно с таким же успехом отфильтруется на НЧ?

Просто у нас случилось не до понимание.

Вы считаете полосу 2 кГц с несущей 50 кГц т.е. полоса 49...51 кГц как в АМ модуляции верхняя и нижняя полоса одинаковы и при наложении они друг другу не мешают.
А я посчитал как полоса 50...52 кГц как в SSB модуляции.

Так что вопрос автору.
Спектр сигнала относительно несущей 50 кГц одинаков в полосах 50...49 и 50...51 кГц по типу АМ модуляции или вся полоса в 2 кГц это разный сигнал не имеющий симметрии относительно 50 кГц?
Serg76
Цитата(SergiRF @ Dec 4 2011, 00:13) *
Уже писали про это, но без пояснений.

так если не спрашивали, то какие могут быть пояснения? ладно, делайте как считаете нужным.
ivan219
Цитата(SergiRF @ Dec 4 2011, 00:13) *
Уже писали про это, но без пояснений.

Тут предполагается ещё одно преобразование частоты в низ до оцифровки.
Усложняется аналоговая часть эл. схемы.
Serg76
Цитата(ivan219 @ Dec 4 2011, 00:15) *
Просто у нас случилось не до понимание.

Вы считаете полосу 2 кГц с несущей 50 кГц т.е. полоса 49...51 кГц как в АМ модуляции верхняя и нижняя полоса одинаковы и при наложении они друг другу не мешают.
А я посчитал как полоса 50...52 кГц как в SSB модуляции.

Так что вопрос автору.
Спектр сигнала относительно несущей 50 кГц одинаков в полосах 50...49 и 50...51 кГц по типу АМ модуляции или вся полоса в 2 кГц это разный сигнал не имеющий симметрии относительно 50 кГц?

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

Цитата(ivan219 @ Dec 4 2011, 00:19) *
Тут предполагается ещё одно преобразование частоты в низ до оцифровки.
Усложняется аналоговая часть эл. схемы.

да нет, я как раз имел ввиду оцифровку непосредственно по ПЧ (50 кГц) с последующим переносом, но уже в цифре, это же сделать легче как мне думается. ваша схема несколько отличается от моей как раз в части касающейся аналогового тракта.
ivan219
Цитата(Serg76 @ Dec 4 2011, 00:22) *
обычно тракты для формирования оцифрового сигнала строят вне зависимости от используемого типа модуляции, а иначе что получается, что если надо будет поменять модуляцию, то входной тракт менять будем? так не делается, взять к примеру те же SDR.

Да нет.
Про модуляцию я сказал только для примера.
Что бы было проще понять какого рода сигнал.
Если АМ то мы имеет полосу в 2 кГц семеричную относительно 50 кГц что даёт нам сигнал полосу в 1 кГц так как верхняя и нижняя полоса в 1 кГц будут одинаковы.
А если SSB то вся полоса в 2 кГц различна. Т.е. я видел этот сигнал именно как полосу в 2 кГц. Вот тут и вышел косяк sm.gif

Цитата(Serg76 @ Dec 4 2011, 00:22) *
да нет, я как раз имел ввиду оцифровку непосредственно по ПЧ (50 кГц) с последующим переносом, но уже в цифре, это же сделать легче как мне думается. ваша схема несколько отличается от моей как раз в части касающейся аналогового тракта.

Выложите свою схему тогда будет наглядней.
sup-sup
Нельзя 'в общем случае' применить только один смеситель. Нужен обязательно квадратурный. Например, если АМ 50 кГц, то 50 кГц 'гетеродин' нельзя брать для переноса в ноль, так как две боковушки будут скомпенсированы друг дружкой. Так как фаза случайная, то постоянная составляющая будет произвольной величины и знака, а при небольшой расстройке - биения. Нужно гетеродин взять с расстройкой, чтобы получилась ПЧ, в полосу которого влез бы весь полезный спектр, то есть 2*dF. И связанный с таким подходом зеркальный канал. А IQ позволяет получить вокруг нуля и положительную и отрицательную боковушки. Для других модуляций - то же полное разруливание.
Serg76
2 ivan219 если честно, то схему рисовать лень самому, дам первую попавшуюся ссылку о субдискретизации, если найду схему кину ссылку, но пока только это
SergiRF
На счет схемы: использовать внешние аналоговые смесители не хочется совсем. Сначала попробую все таки всунуть ФНЧ с децемацией в PIC18. Хотя сильно сомневаюсь.
ivan219
sup-sup спасибо за разъяснение.
Только я так и не понял как боковушки друг друга компенсируют?
Ведь изначально там противоположные фазы а после перехода через 0 они станут синфазны?
Serg76 вы имеете в виду полосовую дискретизацию с недостаточной выборкой?
Т.е. оцифровываем полосу сигнала на частоте дискретизации, меньшей чем частота сигнала.
sup-sup
Цитата(SergiRF @ Dec 3 2011, 23:44) *
На счет схемы: использовать внешние аналоговые смесители не хочется совсем. Сначала попробую все таки всунуть ФНЧ с децемацией в PIC18. Хотя сильно сомневаюсь.

Кроме резкого сокращения вычислительных затрат добавка такого аналогового 'сопроцессора' позволит увеличить динамический диапазон (если надо) за счет аналоговой фильтрации после смесителя или снизить требования к применяемому контроллеру. Недостатки, кроме зеркального канала, дополнительные паразитные каналы приема на кратных сигналу и гетеродину частотах, что легче подавить преселектором, в отличие от зеркального канала. В принципе, можно сдублировать аналоговую часть и для канала Q, только два таймера надо для гетеродинов I и Q. Зато контроллер слабенький и нежрущий.
Serg76
Цитата(ivan219 @ Dec 4 2011, 00:49) *
Serg76 вы имеете в виду полосовую дискретизацию с недостаточной выборкой?
Т.е. оцифровываем полосу сигнала на частоте дискретизации, меньшей чем частота сигнала.

наверное да, только уже в этом случае сигнал должен быть предварительно отфильтрован аналоговым ПЧ.
sup-sup
Цитата(ivan219 @ Dec 4 2011, 00:49) *
sup-sup
Только я так и не понял как боковушки друг друга компенсируют?
Ведь изначально там противоположные фазы а после перехода через 0 они станут синфазны?

Да, так и есть. Не подумал. Дело только в случайной фазе.
SergiRF
Цитата(sup-sup @ Dec 3 2011, 23:50) *
Кроме резкого сокращения вычислительных затрат добавка такого аналогового 'сопроцессора' позволит увеличить динамический диапазон (если надо) за счет аналоговой фильтрации после смесителя или снизить требования к применяемому контроллеру. Недостатки, кроме зеркального канала, дополнительные паразитные каналы приема на кратных сигналу и гетеродину частотах, что легче подавить преселектором, в отличие от зеркального канала. В принципе, можно сдублировать аналоговую часть и для канала Q, только два таймера надо для гетеродинов I и Q. Зато контроллер слабенький и нежрущий.

Тогда еще придется два два смесителя делать, скажем на операционниках. В качестве гетеродина - сигналы от PIC (CCP modul). Но не получится использовать встроенный в PIC ADC, так как нельзя одновременно захватывать два канала I & Q

ДА И вообще, если уже использовать внешний смеситель - просто переносим сигнал на новую ПЧ (скажем 5 кГц), далее полосовой фильр и просто оцифровываем. Так как скорость семплирования небольшая, можно вообще в baseband не переносить.
У меня задача - оцифровать, запомнить и проиграть, так что главная задача - понизить скорость семплирования и все.
Хотя этот вариант конечно не очень. Можно эффективнее
ivan219
SergiRF если будете делать дециматор на КИХ фильтре то делайте как на структуре ниже.
Вычислений будет в М раз меньше.
Можно ещё в 2 раз снизить вычисления за счёт симметрии ИХ фильтра.
Предложенный Serg76 вариант то же хорошь частота дискретизации в этом случае получается порядка 4 кГц и вы переносите всю полосу прямо в 0 но при этом до АЦП должен стоять хороший ПФ фильтр.
SergiRF
Цитата(ivan219 @ Dec 4 2011, 00:24) *
Предложенный Serg76 вариант то же хорошь частота дискретизации в этом случае получается порядка 4 кГц и вы переносите всю полосу прямо в 0 но при этом до АЦП должен стоять хороший ПФ фильтр.

Вы имеете в виду работать в N ой зоне Найквиста?
Правильно ли я понимаю: при условии хорошего полосового фильтра , можно семплировать 9 кГц, несущая 50 кГц попадает в 5ю зону. И сигнал на выходе АЦП будет как будто несущая 5 кГц и не потребуется дополнительной обработки?

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