Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Демодулирование
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
xxx
Цитата(xxx @ Feb 7 2005, 14:12)
tongue.gif
*
fontp
Цитата(xxx @ Feb 7 2005, 13:13)
Цитата(xxx @ Feb 7 2005, 14:12)
tongue.gif
*

*



Демодуляция чего?

Для стандартного телефонного модема в Сети раньше был такой Open Source проект - linmodem

The Generic Linux Soft Modem
*
* Copyright © 1999,2000 Fabrice Bellard.
* Copyright © 1999 Pavel Machek

v34, отчасти v90

http://fabrice.bellard.free.fr/linmodem.html

Ну а так, эта область связана с ноу-хау и код обычно не размещают. Да и в чужом разобраться - не подарок. Инженерная область, не программистская
xxx
Хотелось бы научиться писать демодуляторы. Теория в принципе изучена. Необходимо основные методы реализации алгоритмов (фильтрации, БПФ и т.д.)
grau
Цитата(xxx @ Feb 7 2005, 14:34)
Хотелось бы научиться писать демодуляторы. Теория в принципе изучена. Необходимо основные методы реализации алгоритмов (фильтрации, БПФ и т.д.)
*



Поставь MatLab, посмотри исходники..
xxx
MatLab стоит хотелось бы иметь исходники на C++.
andrew_b
Цитата(xxx @ Feb 7 2005, 15:30)
MatLab стоит хотелось бы иметь исходники на C++.


Ну, напрмер:
http://libdsp.sourceforge.net/overview.html
http://itpp.sourceforge.net/latest/
xxx
Ссылки посмотрел. Качаю. Зарание спасибо. Пока ещё не разберался.
andrew_b
Цитата(xxx @ Feb 7 2005, 16:04)
Ссылки посмотрел. Качаю. Зарание спасибо. Пока ещё не разберался.


Тока, чур, вопросами не кидаться smile.gif. Я с этими библиотеками не работал, просто когда на них наткнулся, сохранил линки на всякий случай.
grau
Цитата(xxx @ Feb 7 2005, 15:30)
MatLab стоит хотелось бы иметь исходники на C++.
*


Сам пока не пробовал, но, вроде, он должен уметь делать сишный код.
Но это так, к сведению, если интересно будет попробовать..
angir
Если вы конкретней не поставите вопрос, то и отвечать-то вообщем не о чем.
Какой тип модуляции ? Какова частота несущей, символьная скорость, скольки битные выборки с ацп, есть обе квадратуры или нет, каков тип канала и т.д. и т.п. Нельзя сделать какой-то один, общий для всех и вся тип демодулятора. Планируете ли использовать адаптивный фильтр, или нет, и какого место его включения, какая схема восстановления тактовой и несущей, если она планируется. И что вы понимаете под демодулятором? Просто выборки, сопровождаемые клоком тактовой, или уже дескремблированные\декодированные данные? Видете, как много вопросов, и я думаю, что это далеко не все, что нужно, чтобы сделать некое "подобие" демодулятора.

Кстати, а БПФ в вашем демодуляторе зачем нужен?
Alex2172
Цитата(angir @ Feb 24 2005, 22:08)
Кстати, а БПФ в вашем демодуляторе зачем нужен?
*


Одно приходит на ум - демодуляция DTMF, хотя кто будет использовать FFT, если есть Gortzel.
Jools
Цитата(Alex2172 @ Feb 25 2005, 18:29)
Цитата(angir @ Feb 24 2005, 22:08)

Кстати, а БПФ в вашем демодуляторе зачем нужен?
*


Одно приходит на ум - демодуляция DTMF, хотя кто будет использовать FFT, если есть Gortzel.
*



Просвятите недоучку - что такое Gortzel ? Слышу первый раз.
Anybody
А в чем собственно проблема ?
В свое время делал QPSK радиомодем.
Сейчас опять встала задачка подобная, вот в не рабочее время делаю потихоньку. Надо же и дома шарить рабочий восьми мегабитный канал smile.gif))
На 1.2ГГц диапазоне (позывной есть, диапазон пустой полосы достаточно, что еще для счастья надо) smile.gif))
Щас потихоньку пишу думаю делать OFDM вместе с турбо кодированием smile.gif

XXX, вы сударь кокретнее говорите какие проблемы может и поможем.
А так ... Да что вам того FIR'f то задача на 60 секунд (и то писать больше, чем думать)
#define TAPS 32
/*FIR Filter*/
float *CoeffPtr;
float *DataPtr;

//выделяем память под CoeffPtr, DataPtr
//ну тут уже смотря где сидим под что пишем и т.д.

float fir (*DataPtr, *CoeffPtr)
{
float res;
for (int k = 0; k < TAPS; k++)
res += *(CoeffPtr+ k) * *(DataPtr+ k);
return res;
}

//вот Вам и весь FIR smile.gif
Anybody
Цитата(Jools @ Mar 5 2005, 17:55)
Цитата(Alex2172 @ Feb 25 2005, 18:29)
Цитата(angir @ Feb 24 2005, 22:08)

Кстати, а БПФ в вашем демодуляторе зачем нужен?
*


Одно приходит на ум - демодуляция DTMF, хотя кто будет использовать FFT, если есть Gortzel.
*



Просвятите недоучку - что такое Gortzel ? Слышу первый раз.
*



А Герцель очень приятная штука, позволяет узнать спектр в одной точке.
Например для того же DTMF что бы узнать с 1.5% точностью можность в какой то точке спектра при 8кГц дискретизации нужен 256-FFT.

А Герцель достаточно запустить восемь раз с различными коэффициентами.
Плюс ко всему стандар DTMF декодирования преписывает, что необходимо так же анализировать уровень второй гармоники всех из 8 тонов.
Так как DTMF - это чистые синусойды, уровень второй гармоники у них будет маленький, а вот если речь (если даже будет случайно принята за тон), будет иметь уровень второй гармоники в десятки раз больше.
Да и нужно то для Герцеля, если память не изменяет три сложения, три умножения и две задержки.
Fast
Цитата(Anybody @ Apr 6 2005, 14:10)
В свое время делал QPSK радиомодем.
Щас потихоньку пишу думаю делать OFDM вместе с турбо кодированием smile.gif

Доброе время суток всем!
Anybody, если не секрет, для каких целей радиомодем? Любительский?
Как Вы с замираниями справлялись, как АРУ строили?

И про OFDM+турбо-код - что за система связи?
Я делал DMT-демодулятор +сверт.код+перемежитель+РС, остро стоит вопрос по тактовой синхронизации.
Если Вы лит-ру искали, может ссылкой поделитесь?
Да и я могу сказать все, что знаю, правда ни OFDM, ни турбо-код не строил.
Anybody
Да цель простая smile.gif Да боли ...
-------------------------------------
Есть измерительные приборы, есть море СВЧ комплектухи на любой лад smile.gif
Есть уйма плисок всяких разных, уйма DSP процессоров smile.gif
Мозги вроде то же где-то завалялись smile.gif))
А так же на работе есть безлимитный 8Мб канал в интернет, а вот дома его нету )) DSL поставить то не сложно, но я квартиру снимаю, нет нет приходится бегать по квартирам, как следствие каждый раз за установку ADSL не настачиться smile.gif)) IEEE802.11 a/b не стреляют в условиях города. :-)
Так что цель ясна до боли smile.gif Плюс позывной есть, AX25 прикрутить не проблема. И хрен ко мне госсвязьнадзор докопается smile.gif Хоть я и 5Вт прокачивать буду :-)
-------------------------------------
Литература - Лучше всего Проакинс, там про синхронизацию много всего было.
Я решал в свое время по дурному - ФАПЧ на преамбулу 0xAA, 0xAA. При этом ФАПЧ хватался на частоту в два раза менььшую чем битовая, ну а дальше все понятно. Работало достаточно стабильно, просто времена изменились, комплектуха новая появилась, вот и захотелось переделать, да и болванку со старыми проектами найти не могу sad.gif CRC и Viterbi кодирование.
--------------------------------------
А турбо кодирование - это в принципе те же сверточные коды, с одной разницей, что так сказать Около лимита Шеннона. smile.gif Это лучше видеть smile.gif
Правда такой декодер как показан будет ну очень медленный но работает .. дааааа ... В гугле ищите Turbo MAP Log-MAP BCJR ... Вообще применяется в 3G телефонии, какой то из DSP TI 64xx оснащен турбо декодером, кстати smile.gif
Fast
Цитата(Anybody @ Apr 7 2005, 11:23)
Литература - Лучше всего Прокис, там про синхронизацию много всего было...
--------------------------------------
А турбо кодирование - это в принципе те же сверточные коды
Вообще применяется в 3G телефонии, какой то из DSP TI 64xx оснащен турбо декодером, кстати smile.gif

Про тактовую для ДМТ сигналов Проакинс ничего не скажет, есть он у меня.
А турбо-коды кроме 3G телефонии (CDMA-2000) используются в DVB, Inmatsat, Eutelsat и др.,- тоже знаю, как их юзать.
Просто интересно было, для чего ОФДМ+турбо-код. Если самому делать, то cool.gif. Лучше для начала ADSL почитать (G.992.x G.DMT G.Lite) - толковые вещи ИМХО. И к ним еще турбо-код если - шайтан машина получиться.

Насчет DSP TI 64xx спасибо, на заметку возьму. Собираюсь AD или TI осваивать, но пока не знаю, с чего начать (работодатели все требуют DSP-процы). вот хожу-брожу-посты смотрю.
Anybody
Ненаю в свое время начинал с AD, сейчас челиком и полностью сижу на TI.
trofim
Что такое Gortzel, ничего не могу найти?
Fast
Цитата(trofim @ Apr 7 2005, 16:56)
Что такое Gortzel, ничего не могу найти?
*

Алгоритм Goеrtzel (Герцеля) - просто умножение на комплексную синусоиду заданной частоты для получения соотв. спектральной составляющей
Спешу, вот ссылка
http://ptolemy.eecs.berkeley.edu/papers/96.../www/node3.html
я еще довешивал к этому алгоритму (для опред. тонов и дем. DTMF) итегратор с усренением на длине неск. десятков-сотен отсчетов(ms), чтобы ложных подработок было поменьше.
Anybody
Цитата(Fast @ Apr 7 2005, 17:08)
Цитата(trofim @ Apr 7 2005, 16:56)
Что такое Gortzel, ничего не могу найти?
*

Алгоритм Goеrtzel (Герцеля) - просто умножение на комплексную синусоиду заданной частоты для получения соотв. спектральной составляющей
Спешу, вот ссылка
http://ptolemy.eecs.berkeley.edu/papers/96.../www/node3.html
я еще довешивал к этому алгоритму (для опред. тонов и дем. DTMF) итегратор с усренением на длине неск. десятков-сотен отсчетов(ms), чтобы ложных подработок было поменьше.
*




На самом деле для полного соответствия и что бы уложиться в 30dB динамики надо делать еще:
Magnitude Test
Twist Test
Frequency Offset Test
Tone-to-Tone Energy Test
Second Harmonic Test
Digit Decoder
Fast
Цитата(Anybody @ Apr 7 2005, 17:13)
На самом деле для полного соответствия и что бы уложиться в 30dB динамики надо делать еще:
Magnitude Test
Twist Test
Frequency Offset Test
Tone-to-Tone Energy Test
Second Harmonic Test
Digit Decoder

И выйдет, что дешевле для здоровья будет БПФ + сравнение с эталоном (образом) посылки и выбор ближайшей по расстоянию rolleyes.gif
Anybody
НЕ поможет, на самом деле тесты там очень простые, производительности много не занимают.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.