Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: алгоритм модуляции и демодуляции многочастотной посылки
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Alla_student
Здравствуйте!

Необходимо написать алгоритм обработки сигнала для ARM Cortex M4, а именно следующее:
На вход АЦП приходит многочастотная посылка длительностью td. Частоты выбраны с шагом 5кГц от 55кГц до 135кГц (16 фиксированных частот). Каждая из частот побитно промодулирована по амплитуде двоичным 16-разрядным числом Nd.
Вопрос:
Как проще написать алгоритм модуляции и демодуляции многочастотной посылки?
Какое выбрать время посылки (критерии выбора)?
Serg76
Цитата(Alla_student @ Jan 30 2013, 22:53) *
Вопрос:
Как проще написать алгоритм модуляции и демодуляции многочастотной посылки?

для начала рекомендую разобраться с демодуляцией хотя бы двухпозиционной ЧМ, а уже затем перейти к многопозиционным.
и даже в этом случае в двух словах Вам этого не объяснить, сначала надо почитать книжек sm.gif
Alla_student
Цитата(Serg76 @ Jan 30 2013, 22:04) *
для начала рекомендую разобраться с демодуляцией хотя бы двухпозиционной ЧМ, а уже затем перейти к многопозиционным.
и даже в этом случае в двух словах Вам этого не объяснить, сначала надо почитать книжек sm.gif

А вы попытайтесь, если знаете суть вопроса. А книжки я читала и читаю и это как бы разумеется и без вашей подсказки, уважаемый Serg76.
Serg76
Цитата(Alla_student @ Jan 31 2013, 01:58) *
А вы попытайтесь, если знаете суть вопроса. А книжки я читала и читаю и это как бы разумеется и без вашей подсказки, уважаемый Serg76.

суть вопроса я знаю, уважаемая(ый) Alla_student, но для начала хотелось бы знать, что вы сделали для решения этой проблемы.
Lmx2315
Первое что в голову приходит :
сдвинуть спектр в "ноль", продецемировать если надо и проделать БПФ чтобы обеспечить разрешение по частоте .
По результатам БПФ - делать выводы о состоянии информационных палок в спектре.

А можно все палки по отдельности скидывать в ноль, фильтровать и демодулировать через огибающую сигнала.
Serg76
Цитата(Lmx2315 @ Jan 31 2013, 12:35) *
А можно все палки по отдельности скидывать в ноль, фильтровать и демодулировать через огибающую сигнала.

Как правило, так и делается.
_4afc_
Цитата(Alla_student @ Jan 30 2013, 22:53) *
Какое выбрать время посылки (критерии выбора)?


Чем длиннее будет посылка - тем легче будет демодулировать.

В случае демодуляции через БПФ - возрастёт разрешение по частоте. Вам какое надо?
ИМХО для получения 16 палок вам надо иметь 32 периода минимальной частоты.
Это в теории.

На практике будет ещё мешать межсимвольная интерференция. В вашем случае наибольшее влияние на длительность посылки будет оказывать разность в приходе в демодулятор 55кГц и 135кГц, т.к. скорость распространения этих частот (через выходные цепи передатчика - среду передачи - входные цепи приёмника/АЦП) различна.
KalashKS
Цитата(_4afc_ @ Jan 31 2013, 14:38) *
Чем длиннее будет посылка - тем легче будет демодулировать.

В случае демодуляции через БПФ - возрастёт разрешение по частоте. Вам какое надо?
ИМХО для получения 16 палок вам надо иметь 32 периода минимальной частоты.
Это в теории.

На практике будет ещё мешать межсимвольная интерференция. В вашем случае наибольшее влияние на длительность посылки будет оказывать разность в приходе в демодулятор 55кГц и 135кГц, т.к. скорость распространения этих частот (через выходные цепи передатчика - среду передачи - входные цепи приёмника/АЦП) различна.


В соседней теме девушка говорит про OFDM. Если это та же задача, то да, все решается через БПФ на 32 (или, может быть, 24) отсчета, плюс защитные интервалы и схемы синхронизации и эквалайзера.
Alla_student
Цитата(KalashKS @ Jan 31 2013, 14:20) *
В соседней теме девушка говорит про OFDM. Если это та же задача, то да, все решается через БПФ на 32 (или, может быть, 24) отсчета, плюс защитные интервалы и схемы синхронизации и эквалайзера.

Спасибо
Вопросы:
Как определяется защитный интервал?
Назначение эквалайзера и какая математика в нем?
Это все выше было сказано для декодера, а кодер из чего состоит?
STAR_IK
Защитный интервал выбирается в зависимости от времени прихода отраженных от чего-либо копий сигнала. Следовательно защитный интервал должен быть больше чем задержка в отраженном канале. Эквалайзер нужен для выравнивания АФЧХ канала, которая в условиях замираний постоянно искажается, вплоть до полного подавления сигнала на некоторых частотах. Если не выравнивать, то сигнал придет кривой. Подробно про эквалайзеры можно глянуть книги Б. Скляра , Дж. Прокиса. И та и другая называется "Цифровая связь"
novchok
Цитата(STAR_IK @ Feb 1 2013, 08:32) *
Подробно про эквалайзеры можно глянуть книги Б. Скляра , Дж. Прокиса. И та и другая называется "Цифровая связь"


Я бы не стал советовать студентам эти книжки. Конечно это очень модно, на каждом углу слышишь "Скляр". Но на самом деле написано там настолько сжато, что больше похоже на то, что Скляр хочет сказать "я в теме, приходите ко мне на лекции все расскажу подробно".
Материал бакграунда, который надо знать, читая книгу Скляра такой, что если ты знаешь этот материал, то и Скляр не нужен.
Написано просто жесть, только мозги сломать. Ищите что нибудь попроще и по доступнее.
STAR_IK
Цитата(novchok @ Feb 1 2013, 11:26) *
Я бы не стал советовать студентам эти книжки. Конечно это очень модно, на каждом углу слышишь "Скляр". Но на самом деле написано там настолько сжато, что больше похоже на то, что Скляр хочет сказать "я в теме, приходите ко мне на лекции все расскажу подробно".
Материал бакграунда, который надо знать, читая книгу Скляра такой, что если ты знаешь этот материал, то и Скляр не нужен.
Написано просто жесть, только мозги сломать. Ищите что нибудь попроще и по доступнее.



Открыл Скляра, просмотрел еще раз... по моему для начала самое оно. А альтернатива какая? Чего тогда читать студентам для ввода в курс дела??
KalashKS
Цитата(Alla_student @ Feb 1 2013, 02:05) *
Спасибо
Вопросы:
Как определяется защитный интервал?
Назначение эквалайзера и какая математика в нем?
Это все выше было сказано для декодера, а кодер из чего состоит?


У вас известная система, или вы ее параметры сами подбираете? В первом случае уточните дллину ЗИ у того, кто ставил вам задание.

Схема OFDM модулятора проста: помехоустойчивое кодирование - задание комплексных амплитуд несущих (т.н. mapper)- ОБПФ - вставка ЗИ - то же самое для всех символов. Потом подъем на несущую.
Демодулятор: сброс на нулевую частоту (квадратурный демодулятор) - синхронизация и отброс ЗИ - БПФ - эквалайзер - демодуляция (demapper) - декодер.
Эквалайзер как правило строится по следующей схеме. В сигнале должны быть несущие с известными амплитудами. По ним вычисляется ЧХ канала на соответствующих частотах в соответствующих символах и потом интерполируруется на все нужные частоты и символы. Потом ЧХ правится простым делением, МСКО-алгоритмом (MMSE), или еще каким другим. Воббще информации разной степени подробности - полный интернет.
SyncLair
Уважаемые знатоки! Внимание вопрос! -- А кортекс то справиться с такой задачей если её сильно не оптимизировать, ибо начинающий чаще всего не может сразу выдасть неоптимизированный вариант?
Aner
QUOTE (SyncLair @ Feb 15 2013, 17:26) *
Уважаемые знатоки! Внимание вопрос! -- А кортекс то справиться с такой задачей если её сильно не оптимизировать, ибо начинающий чаще всего не может сразу выдасть неоптимизированный вариант?

Правильно подметили, не справиться кортекс М4. Не для этой задачи этот проц, не потянет и 1/3. Смотрите в сторону матриц.
Lmx2315
QUOTE (Aner @ Feb 15 2013, 23:11) *
Правильно подметили, не справиться кортекс М4. Не для этой задачи этот проц, не потянет и 1/3. Смотрите в сторону матриц.

может речь идёт не о реальном времени, запишет сколько сможет и будет жувать не спеша.
Rst7
QUOTE
Правильно подметили, не справиться кортекс М4. Не для этой задачи этот проц, не потянет и 1/3. Смотрите в сторону матриц.


Я уж не знаю, какой нужно написать говнокод, чтобы не справилось, но у меня модем на LPC1768 обеспечивает обработку OFDM туда и сюда (правда, на уже на нулевой ПЧ, перенос с/на несущую - в аналоге) с размером окна 256 отсчетов (реально используется 150, если мне не изменяет память) и общей скоростью в 140кБод. При этом загрузка процессора порядка 20 процентов.
Lmx2315
QUOTE (Rst7 @ Feb 16 2013, 11:30) *
Я уж не знаю, какой нужно написать говнокод, чтобы не справилось, но у меня модем на LPC1768 обеспечивает обработку OFDM туда и сюда (правда, на уже на нулевой ПЧ, перенос с/на несущую - в аналоге) с размером окна 256 отсчетов (реально используется 150, если мне не изменяет память) и общей скоростью в 140кБод. При этом загрузка процессора порядка 20 процентов.


в исходном сообщении верхняя частота 135 кгц итого поток больше чем 300 ксемплов в секунду, надо писать в память , брать кусками перемножать для сброса в ноль, фильтровать. Допустим что перемножать мы можем на лету без задержки, чтобы отфильтровать надо порядка сотни операций - итого 300 ксемплов превращаются в 30 мгц , ещё нужно проделать БПФ 256 - это 4000 тактов итого 30 мгц х 4000 = 30 ГГц .
Где я не прав?
Rst7
QUOTE
ещё нужно проделать БПФ 256 - это 4000 тактов итого 30 мгц х 4000 = 30 ГГц.
Где я не прав?


Глобально - тут. БПФ выполняется один раз на 256 отсчетов. Более того, я думаю, что для озвученной задачи нет смысла сносить в 0, надо делать сразу БПФ.
Aner
Конечно, в OFDM перенос до - это обегчает. Но там и размер окна поболее и скорость повыше.

Хотя вопрос может быть чисто теоретический ( студенческий, не практичный) для архитектуры котрекса М4.
Да и архитектура котрекса М4 в матрицу ложиться без проблем.

... Как проще написать алгоритм модуляции и демодуляции многочастотной посылки?
Вот о простоте алгоритма скорее всего вопрос. БПФ сразу или что-то другое.
Но ведь архитектура котрекса М4 далеко не DSP, чтобы умножением заниматься в какой-то ветке.

... Какое выбрать время посылки (критерии выбора)?
И о времени. Вот и подсказка - для длительной посылки.
--------------
... итого 30 мгц х 4000 = 30 ГГц .
... Где я не прав?
Наверное неправы тут вы в арифметике.
Lmx2315
QUOTE (Aner @ Feb 16 2013, 16:27) *
Наверное неправы тут вы в арифметике.

..это было очевидно, расчёт был на то - что кто-нить прикинет "реальные" возможности М4 для данного случая.
Мне тоже интересно.
Rst7
QUOTE
..это было очевидно, расчёт был на то - что кто-нить прикинет "реальные" возможности М4 для данного случая.
Мне тоже интересно.


Я вообще не вижу проблем.

Берем частоту дискретизации 320кГц. Каждые 64 выборки - БПФ32, имеем 32 I- и Q- составляющие (32 из 64, ибо мнимая часть сигнала равна 0). Составляющие как раз с шагом 5кГц. Берем только те, которые интересуют (соответствующие диапазону от 55 до 135кГц). Декодер можно делать самый простой - bit=sqrt(I^2+Q^2)>Threshold?1:0.

На межсимвольные дела можно положить, скажем, 16 отсчетов (более грамотно выбирать исходя из данных по дисперсии в канале связи).

Итого каждые 80 отсчетов (250мкс) нужно сделать БПФ на 32 точки как самое ресурсоемкое. На частоте 50МГц имеем на все про все 12500 тактов, что перекрывает с огромным запасом.
Alla_student
Пока я болела, тема продолжала обсуждаться.
Попробую использвать предложенные здесь варианты реализации и сделать что то практическое.
Спасибо всем за обсуждение!
Alla_student
Цитата(Rst7 @ Feb 16 2013, 21:58) *
Я вообще не вижу проблем.

Rst7 личную почту посмотрите пожалуйста!
Kluwert
Цитата(Rst7 @ Feb 16 2013, 21:58) *
Я вообще не вижу проблем.

Берем частоту дискретизации 320кГц. Каждые 64 выборки - БПФ32, имеем 32 I- и Q- составляющие (32 из 64, ибо мнимая часть сигнала равна 0). Составляющие как раз с шагом 5кГц. Берем только те, которые интересуют

Какой БПФ, какие I и Q, вы вообще о чём? Пусть хоть ожидаемое ОСШ для начала назовёт. Раз речь идёт об АМ, то явно ОСШ должно быть дицибелл 20 как минимум. Где это всё работать будет? Если это надо диффпарой на несколько сотен метров передать, то нахрена огород городить - обычный частотомерный способ: мерьте частоты по пересечению уровня и будет вам счастье. С такой задачей даже "восьмерёночек" справится.
Lmx2315
..жёстко вы нас всех, вот так вот - мордой об стол.
Т.е. если справится восьмерёночек (кто это?) то никак иначе и делать нельзя?
БПФ реализовать гораздо интереснее и пользы больше, особливо если самому(самой) реализовать.
А комплексную форму сигнала за что не любите?
Aner
Незнает он про БПФ, какие-то I и Q, ... всего то. Да и как пишутся эти единицы не знает ...дицибелл. И что вы от него хотите?
Вон интересно как "восьмерёночек" потянет это ...промодулирована по амплитуде двоичным 16-разрядным числом Nd.
Kluwert
Цитата(Aner @ Mar 5 2013, 17:11) *
Незнает он про БПФ, какие-то I и Q, ... всего то. Да и как пишутся эти единицы не знает ...дицибелл. И что вы от него хотите?
Вон интересно как "восьмерёночек" потянет это ...промодулирована по амплитуде двоичным 16-разрядным числом Nd.

Зато вы профессионал, сразу видно: предрались к опечатке, браво, поздравляю! Я ещё раз поясню, если не понятно: профессионалы отличаются тем, к вашему сведению, что начинают разговор с постановки задачи, а не действуют по принципу "слышу звон - не знаю где он". Или вы тоже так свои проекты делаете? Сначала делаете абы делать, а потом начинаете о ТЗ думать?
Aner
QUOTE (Kluwert @ Mar 5 2013, 18:50) *
Зато вы профессионал, сразу видно: предрались к опечатке, браво, поздравляю! Я ещё раз поясню, если не понятно: профессионалы отличаются тем, к вашему сведению, что начинают разговор с постановки задачи, а не действуют по принципу "слышу звон - не знаю где он". Или вы тоже так свои проекты делаете? Сначала делаете абы делать, а потом начинаете о ТЗ думать?

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