АЦП+DSP (не могу разобраться с отсчетами)
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
вопрос такой: Входной сигнал частотно манипулированный некогерентный (12 и 16 кГц). Сигнал после ацп проходит детектирование:две ветки каждая из которых состоит из полосового фильтра и детоктора огибающей. После сигнал представлен набором отсчетов (частота дискретизации 96 кГц). Как из этих отсчетов детектировать сигнал, определить где единичный бит где нулевой, какой диапозон отсчетов анализировать,и вообще как с ними работать (с отсчетами). подскажите!
- Реклама
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Видится один способ определения. Пусть например частоте 12 кГц будет соответствовать лог 0, а частоте 16 кГц - лог 1. На один период передачи лог 0 приходится 8 отсчетов, а на период передачи лог 1 - 6 отсчетов.
Т.к. передача будет вестись не один период, то рациональнее было бы организовать свертку из 24 отсчетов (если оперировать массивами одинаковой длины) или 8 и 6 отсчетов при "непрерывном" анализе соответственно. Далее оценка модулей, сравнение их между собой и принятие решения по максимальному модулю.
Вот как-то так
PS. Не надо так громко писать, мы не слепые
Т.к. передача будет вестись не один период, то рациональнее было бы организовать свертку из 24 отсчетов (если оперировать массивами одинаковой длины) или 8 и 6 отсчетов при "непрерывном" анализе соответственно. Далее оценка модулей, сравнение их между собой и принятие решения по максимальному модулю.
Вот как-то так
PS. Не надо так громко писать, мы не слепые
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
ну вот передача каждого бита манчестера длиться в течении 500 мкс.
тогда если рассматривать отсчеты получиться что 12 кГц будет представлен 6-ю периодами по 8 отсчетов, а 16 кГц 8-ю периодами по 6 отсчетов, так как каждые 12 и 16 передаются по 500 мкс.я так понял анализировать нужно по периодам. получается, что нужно насчитывать количество проанализированных периодов и принять решение соответствует нулю или ед-це, так? и еще вопрос. как определить точку (отсчет). с которой начинается период.
тогда если рассматривать отсчеты получиться что 12 кГц будет представлен 6-ю периодами по 8 отсчетов, а 16 кГц 8-ю периодами по 6 отсчетов, так как каждые 12 и 16 передаются по 500 мкс.я так понял анализировать нужно по периодам. получается, что нужно насчитывать количество проанализированных периодов и принять решение соответствует нулю или ед-це, так? и еще вопрос. как определить точку (отсчет). с которой начинается период.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Не известно на чем вы обрабатывать будете.
Но лично я бы предпочел вариант в котором после поступления очередного отсчета с АЦП, запускались процессы анализа частот 12 и 16 кГц (8 и 6 отсчетов). Т.о. можно достаточно оперативно выявить границу перехода с частоты 12 на частоту 16 кГц и обратно. Далее реализовывается "триггер" который устанавливается в одно из устойчивых состояний.
Что касается анализа частей сигналов 12 и 16 кГц (например половина отсчетов 12 и половина отсчетов 16 кГц), то тут произойдет размытие спектра и снижение модуля и анализ даст возможность не перебрасывать триггер в новое состояние.
Но лично я бы предпочел вариант в котором после поступления очередного отсчета с АЦП, запускались процессы анализа частот 12 и 16 кГц (8 и 6 отсчетов). Т.о. можно достаточно оперативно выявить границу перехода с частоты 12 на частоту 16 кГц и обратно. Далее реализовывается "триггер" который устанавливается в одно из устойчивых состояний.
Что касается анализа частей сигналов 12 и 16 кГц (например половина отсчетов 12 и половина отсчетов 16 кГц), то тут произойдет размытие спектра и снижение модуля и анализ даст возможность не перебрасывать триггер в новое состояние.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
Отсчеты после АЦП хранятся в буфере, размер которого 1024 отсчета (в принципе, буфер можно сделать и больше). Процесс их цифровой обработки на DSP вижу следующим образом: две параллельные ветки, каждая состоит из полосового фильтра и детектора огибающей. На данную систему подается весь буфер. Далее каким-либо способом по уровням огибающих нужно определить нули и единицы, и слить две последовательности в одну - отражающую детектированный сигнал. Как оптимальней по огибающей определять наличие высокого уровня и низкого (может быть каждый отсчет сравнивать с некоторым порогом?). Могут ли в данном случае быть "подводные камни" и какие?
- Реклама
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Нельзя сравнивать каждый отсчет.
Делаете свертку - преобразование Фурье для одной частоты, два раза. Первый раз с коэффициентами на ччастоту 12 а второй с коэффициентами на частоту 16 кГц.
Результатом будет два комплексных числа. Модуль каждого из них даст амплитуду. Амплитуды и сравните.
PS. Брать число отсчетов больше 48 - бессмыслица, т.к. при передачи последовательно нулей и единиц получите кашу.
Если брать число отсчетов больше чем укладывается в периоде то придется учитывать "уход" составляющей. Так что оптимум - 6 и 8 отсчетов
Делаете свертку - преобразование Фурье для одной частоты, два раза. Первый раз с коэффициентами на ччастоту 12 а второй с коэффициентами на частоту 16 кГц.
Результатом будет два комплексных числа. Модуль каждого из них даст амплитуду. Амплитуды и сравните.
PS. Брать число отсчетов больше 48 - бессмыслица, т.к. при передачи последовательно нулей и единиц получите кашу.
Если брать число отсчетов больше чем укладывается в периоде то придется учитывать "уход" составляющей. Так что оптимум - 6 и 8 отсчетов
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
может мы друг друга не допонемаем. Хорошо, вот делаем свертку как вы пишете сначала, 48 отсчетов, а дальше то как? следующие 48? где уверенность что в первых 48 период укладывается именно сначала?
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Уже писал еще раз напишу.
Допутим получили первые 48 отсчетов и сделали свертки. Ищем решение.
Поступил отсчет №49, делаем свертку из отсчетов с №2 по №49.
Поступил отсчет №50-свертка из отсчетов с №№ 3...50 и т.д.
Т.о. имеем окно фиксированной длины, в какой-то момент времени все 48 отсчетов будут соответствовать только частоте 12 или 16 кГц.
PS. Пока не поздно (нет еще ответов) уберите дубль из темы "Радиотехника...." тут не принято плодить одну и туже тему в разных местах
Допутим получили первые 48 отсчетов и сделали свертки. Ищем решение.
Поступил отсчет №49, делаем свертку из отсчетов с №2 по №49.
Поступил отсчет №50-свертка из отсчетов с №№ 3...50 и т.д.
Т.о. имеем окно фиксированной длины, в какой-то момент времени все 48 отсчетов будут соответствовать только частоте 12 или 16 кГц.
PS. Пока не поздно (нет еще ответов) уберите дубль из темы "Радиотехника...." тут не принято плодить одну и туже тему в разных местах
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
Ну так понятнее, спасибо!!
еще вот такой вопрос : Рассмотрим первую ветку. Вход:48 отсчетов, фильтр через прямое и обратное БПФ на 12 , построение огибающей также через прямое и обратное БПФ, после получили массив действительных составляющих и мнимых составляющих. как определим мгновенную амплитуду и как определить порог сравнения?
еще вот такой вопрос : Рассмотрим первую ветку. Вход:48 отсчетов, фильтр через прямое и обратное БПФ на 12 , построение огибающей также через прямое и обратное БПФ, после получили массив действительных составляющих и мнимых составляющих. как определим мгновенную амплитуду и как определить порог сравнения?
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Не знаю зачем вам в этой реализации обратное преобразование, ну да пес с ним.
О модуле.
В результате ДПФ или БПФ получили массив комплексных чисел.
Для получения модуля необходимо и достаточно домножить на комплексное сопряженное число, надеюсь где посмотреть знаете.
Об анализе.
Положим что анализируемое окно (48 отсчетов) содержит только частоту 12 кГц, тогда модуль сигнала 12 кГц будет отличен от нуля, в то время как модуль 16 кГц близок к нулю или равен ему.
С частотой 16 кГц произойдет то же самое.
Самая распространенная ситуёвина - часть отсчетов соответствует частоте 12 кГц, а другая часть частоте 16 кГц. Тогда модули будут одновременно отличны от нуля, соотношение заранее предсказать трудно ибо зависит от того с каким количеством входят отсчеты 12 и 16 кГц.
Вот эти 3 ситуации вам и надо анализировать с последующим принятием решения.
О модуле.
В результате ДПФ или БПФ получили массив комплексных чисел.
Для получения модуля необходимо и достаточно домножить на комплексное сопряженное число, надеюсь где посмотреть знаете.
Об анализе.
Положим что анализируемое окно (48 отсчетов) содержит только частоту 12 кГц, тогда модуль сигнала 12 кГц будет отличен от нуля, в то время как модуль 16 кГц близок к нулю или равен ему.
С частотой 16 кГц произойдет то же самое.
Самая распространенная ситуёвина - часть отсчетов соответствует частоте 12 кГц, а другая часть частоте 16 кГц. Тогда модули будут одновременно отличны от нуля, соотношение заранее предсказать трудно ибо зависит от того с каким количеством входят отсчеты 12 и 16 кГц.
Вот эти 3 ситуации вам и надо анализировать с последующим принятием решения.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Довольно необычный способ принимать ФМ, с самого начала надо было сделать комплексный ФАПЧ, выход которого и будет твоим демодулированным сигналом. Ессно надо сначала все отчеты отфильтровать так чтобы туда попадали обе несущих плюс полоса сигнала с обоих сторон.MaLoY22-ne писал(а):Ну так понятнее, спасибо!!
еще вот такой вопрос : Рассмотрим первую ветку. Вход:48 отсчетов, фильтр через прямое и обратное БПФ на 12 , построение огибающей также через прямое и обратное БПФ, после получили массив действительных
ЗЫ А про огибающие идея конечно хорошая но фильтры несущих могут чисто случайно уничтожить полезные данные и создать ISI ака межсимвольную интерференцию.
Информация по RLC mini находится >тут<
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Это ДЧТ- двойная частотная телеграфия, а не фазовая модуляция.Neekeetos писал(а):Довольно необычный способ принимать ФМ...
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
Это не ФМ, а ЧМ. В задании - непосредственно прога для DSP, ФАПЧ использовать нельзя.
Да, имел в виду ЧМ, только русскими буквами FM нарисовал.Meteor писал(а):Это ДЧТ- двойная частотная телеграфия, а не фазовая модуляция.Neekeetos писал(а):Довольно необычный способ принимать ФМ...
Информация по RLC mini находится >тут<
FM имел в виду, дурацкая привычка к обратному транслиту. Если структура как ты описал, то есть с фурье то тебе придется все равно восстанавливать символьную синхронизацию, так что без подстройки не обойтись, чем именно ты будешь отслеживать переходы 1-0 и 0-1 - фазовым детектором или фурье - не важно, но ФД удобнее тем что в нем не требуется искать символы, с фурье надо городить тот же АПЧ или DLL.MaLoY22-ne писал(а):Это не ФМ, а ЧМ. В задании - непосредственно прога для DSP, ФАПЧ использовать нельзя.
ЗЫ С другой стороны если взять сигналы после детекторов огибающей и вычесть их друг из друга и сравнить с нулем получится исходный сигнал, без всяких синхронизаций и АПЧ.
Информация по RLC mini находится >тут<
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
А вот такой вопрос: После двух прямых фурье, получаем комплексные числа. берем диапозон 48 чисел, домножаем каждое на комплексно-сопряженное, а потом находим среднее значение среди них, чтобы определить порог сравнения?
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Не забывайте что максимальная частотная составляющая которую можно получить в результате ПФ будет в 2 раза меньше числа отсчетов.
Если не секрет зачем ам делать 24 свертки (из 48 отсчетов) и поиск постоянной составляющей?
Ведь по условию задачи - нужны только 6 и 8 гармоники, а это только 2 свертки.
И сравнивать надо только эти гармоники.
Если не секрет зачем ам делать 24 свертки (из 48 отсчетов) и поиск постоянной составляющей?
Ведь по условию задачи - нужны только 6 и 8 гармоники, а это только 2 свертки.
И сравнивать надо только эти гармоники.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Ну зачем ты мудришь? Тебеж Метеор подсказал как делать. Надо свертку с небольшим количеством отсчетов и скользящим окном для обоих частот. Потом , когда получишь два комплексных числа , надо найти их модуль , он по теореме пифагора ищется, и затем уже сравнить их между собой. Таким образом ты каждый такт оцифровки будешь получать информацию о состоянии сигнала либо он 0 либо 1. Вот примерный алгоритм с формулами:MaLoY22-ne писал(а):А вот такой вопрос: После двух прямых фурье, получаем комплексные числа. берем диапозон 48 чисел, домножаем каждое на комплексно-сопряженное, а потом находим среднее значение среди них, чтобы определить порог сравнения?
для 6ти семплов:
1) ДПФ
F16re = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*SIN(W16k*i)};
F16im = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*COS(W16k*i)};
F12re = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*SIN(W12k*i)};
F12im = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*COS(W12k*i)};
N это индекс текущего семпла в массиве, на следующей итерации он будет N+1
окно использовать обязательно иначе все будет плохо на таком количестве семплов
W16 и W12 угловые скорости соотв твоим частотам 12к и 16к. 6 семплов в общем то от балды взято, реально нужно брать порядка половины символьного периода+- иначе получишь проблемы с доставанием данных. Кстати какая у тебя символьная скорость?
2) модуль
M16 = sqrt(F16re*F16re + F16im*F16im)
M12 = sqrt(F12re*F12re + F12im*F12im)
3) получение массива данных
if(M16>M12){данные = 1;}else{данные = 0;}
4) натравливаешь алгоритм декодирования манчестера на то что получилось
Информация по RLC mini находится >тут<
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Учится думать, пусть задает вопросы, видно хоть что в голове что-то шевелитсяNeekeetos писал(а):Ну зачем ты мудришь?
Поправлю.Neekeetos писал(а): Вот примерный алгоритм с формулами:
для 6ти семплов:
1) ДПФ
F16re = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*SIN(W16k*i)};
F16im = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*COS(W16k*i)};
F12re = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*SIN(W12k*i)};
F12im = 1/6*СУММА(i = 0 ... 5) {X(N+i-5)*ОКНО(i)*COS(W12k*i)};
N это индекс текущего семпла в массиве, на следующей итерации он будет N+1
окно использовать обязательно иначе все будет плохо на таком количестве семплов
W16 и W12 угловые скорости соотв твоим частотам 12к и 16к. 6 семплов в общем то от балды взято, реально нужно брать порядка половины символьного периода+- иначе получишь проблемы с доставанием данных. Кстати какая у тебя символьная скорость?
Для F12 надо брать 8 отсчетов на период. Т.к. 6 отсчетов это только 75% периода.
F12re = 1/8*СУММА(i = 0 ... 7) {X(N+i-7)*ОКНО(i)*COS(W12k*i)};
F12im = 1/8*СУММА(i = 0 ... 7) {X(N+i-7)*ОКНО(i)*SIN(W12k*i)};
И еще по моему синус - мнимая часть, а косинус - действительная.
Но на характере задачи это не отразится
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Сообщения: 31
- Зарегистрирован: Чт апр 22, 2010 05:36:56
500 мкс на символ.Кстати какая у тебя символьная скорость?


