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

Перенос частотстоты вниз

Hi

Я новичок в ЦОС, поэтому прошу не гнобить сразу!

Задача:

Есть сигнал на несущей частоте 50 кГц, узкрполосный - ширина спектра по уровню -3дБ = 2 кГц

Сигнал требуется оцифровать и передать

Сигнал семплируется АЦП с частотой 150 кГц

Требуется написать алгоритм на С позволяющий перенести частоту вниз, НО не без использования IQ, тоесть это НЕ DDC

На входе алгоритма будет семплирование 150 кГц, а на выходе должна быть в пределах 10 кГц.

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

Вообще то, как бы понятно - опорник, смеситель, ФНЧ. Но не представляю как это можно на С описать.

Есть идеи?

 

 

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


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

Hi

Я новичок в ЦОС, поэтому прошу не гнобить сразу!

Задача:

Есть сигнал на несущей частоте 50 кГц, узкрполосный - ширина спектра по уровню -3дБ = 2 кГц

Сигнал требуется оцифровать и передать

Сигнал семплируется АЦП с частотой 150 кГц

Требуется написать алгоритм на С позволяющий перенести частоту вниз, НО не без использования IQ, тоесть это НЕ DDC

На входе алгоритма будет семплирование 150 кГц, а на выходе должна быть в пределах 10 кГц.

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

Вообще то, как бы понятно - опорник, смеситель, ФНЧ. Но не представляю как это можно на С описать.

Есть идеи?

Если нет требований к точности, то может быть, лучше и вовсе не делать ничего. :rolleyes:

Если делать один смеситель с переносом на 10 кГц, то будет зеркальный канал приема (30 или 70 кГц).

Значит, лучше всего IQ.

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

Изменено пользователем sup-sup

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


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

Если бы частота сэмплирования была 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, смена знака - вы имеете ввиду с + на - и наоборот для каждой выборки?

А фильтрация в данном случае не нужна?

 

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

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


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

ADC (Fs=150 kHz) -> ПЧ (гетеродин + смеситель) в ноль -> ресамплер (полифазник на КИХ) на Fs2=10 kHz

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


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

ADC (Fs=150 kHz) -> ПЧ (гетеродин + смеситель) в ноль -> ресамплер (полифазник на КИХ) на Fs2=10 kHz

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

 

"Я новичок в ЦОС, поэтому прошу не гнобить сразу!"

Изменено пользователем SergiRF

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


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

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

Чего не понятно? или сразу код выложить?

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


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

Чего не понятно? или сразу код выложить?

Для примера было бы неплохо!

Может ссылочку полезную.

И если бы ваш комент для меня был бы понятен, я вообще бы ни чего не спрашивал!!!

Это если ты в теме давно, то все понятно, а когда только начинаешь хочется дельного и простого совета.

 

Может поясните пост:

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

 

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

Фильтр не нужен?

 

И может подскажете как для данного случая UP converter сделать?

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


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

Может поясните пост:

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

 

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

Фильтр не нужен?

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

 

И может подскажете как для данного случая UP converter сделать?

да все с помощью той же полифазной структуры, есть еще полиномиальные интерполяторы в виде структуры Farrow. кстати вот неплохой ресурс dsplib

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


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

Для примера было бы неплохо!

Может ссылочку полезную.

И если бы ваш комент для меня был бы понятен, я вообще бы ни чего не спрашивал!!!

Это если ты в теме давно, то все понятно, а когда только начинаешь хочется дельного и простого совета.

 

Может поясните пост:

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

 

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

Фильтр не нужен?

Вам надо для начала убрать из входного потока постоянное смещение - отнимите известное смещение или (что лучше) усредняйте значение входного сигнала и отнимайте среднее. далее отсчеты сигнала умножаете на отсчеты косинуса с частотой 60 кгц, которые заранее вычисляете. Если бы частота семплирования была бы кратна этим 60 кгц, то последовательность косинуса состояла бы из нулей и +-1,что существенно бы упростило вычисления. Далее применяете фильтр КИХ 16 или выше порядка с полосой пропускания 2 кгц и с полосой задержания какой Вам нужно (моделируете с помощью матлабовского FDATool), для фильтра вычисляете не все отсчеты, только каждый 15 отсчет, получаете последовательность с частотой дискретизации 10 кгц и спектром 2 кгц.

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


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

Я что то так и не понял в чём проблема.

Автору нужно всего лишь перенести полосу в 2 кГц с 50 кГц на 0.

И что тут сложного? Один программный умножитель на 50 кГц.

У него частота дискретизации 150 кГц значит 75 кГц весь диапазон.

При переносе в них появится зеркальная составляющая на частоте 50 кГц которую легко можно отфильтровать НЧ фильтром.

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


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

Я что то так и не понял в чём проблема.

Автору нужно всего лишь перенести полосу в 2 кГц с 50 кГц на 0.

И что тут сложного? Один программный умножитель на 50 кГц.

У него частота дискретизации 150 кГц значит 75 кГц весь диапазон.

При переносе в них появится зеркальная составляющая на частоте 50 кГц которую легко можно отфильтровать НЧ фильтром.

невнимательно прочитали условие задачи. перенести в ноль не проблема, надо еще децимировать до 10 кГц.

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


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

Ааа извиняюсь :)

Тогда после фильтра каждый 15 отсчёт. Нужно брать. Как выше и рекомендовали.

Я бы ещё добавил полосовой фильтр на 2 кГц в самом начал ведь о сигнале мы ничего не знаем. Возможно там есть помехи и при переносе может произойти наложение.

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


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

Ааа извиняюсь :)

Тогда после фильтра каждый 15 отсчёт. Нужно брать. Как выше и рекомендовали.

Я бы ещё добавил полосовой фильтр на 2 кГц в самом начал ведь о сигнале мы ничего не знаем. Возможно там есть помехи и при переносе может произойти наложение.

При каком переносе? Не нужен никакой полосовой фильтр, перед АЦП антиалиасинговый фильтр на частоту Найквиста, затем сдвигаем уже оцифрованный сигнал в ноль, а потом децимируем вместе с НЧ фильтрацией до 10 кГц и все, вроде все просто.

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


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

Ааа извиняюсь :)

Тогда после фильтра каждый 15 отсчёт. Нужно брать. Как выше и рекомендовали.

Я бы ещё добавил полосовой фильтр на 2 кГц в самом начал ведь о сигнале мы ничего не знаем. Возможно там есть помехи и при переносе может произойти наложение.

Если частота сэмплирования 150 кГц, то фнч 'обязан быть', чтобы выше 75 кГц подавить сколько надо (можно).

Автор не сказал, что дальше делать с этим сигналом. Что значит 'передать'. Возможно, нужна только огибающая в заданной полосе. Возможно, сложная модуляция. Если IQ 'не надо', то что это значит? Наиболее общий подход (при неопределенности задачи) брать IQ с последующей фильтрацией и децимацией, что подходит для всех случаев, так как сохраняется полная информация о сигнале в заданной полосе. Задача упрощается, если Fs ровно в 4 раза больше частоты, которую надо 'перенести в ноль'. Синус вырождается в 0 1 0 -1 , а косинус в 1 0 -1 0.

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


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

Нет вы не верно поняли.

Ни до АЦП а поле. Перед переносом.

Так как полоса в 75 кГц может содержать кроме нужной полосы в 2 кГц ещё и мусор.

Вот от него я и предложил поставить ПФ. Если конечно автором у же это не сделано.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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