АЦП+DSP (не могу разобраться с отсчетами)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

Meteor писал(а):Для F12 надо брать 8 отсчетов на период. Т.к. 6 отсчетов это только 75% периода
Строго говоря ему надо брать чтото в районе половины периода тактовой манчестера, скажем 96к/2к/2 = 24 семпла, я так и писал :).
Meteor писал(а):Но на характере задачи это не отразится
Ну да, ему же модуль нужен.
MaLoY22-ne писал(а):500 мкс на символ.
Пробуй, потом расскажешь как оно.
Информация по RLC mini находится >тут<
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Спасибо что помогаете. Начал делать, быстрая свертка 256 коэффициентов полосового фильтра с центральной частотой 12 кГц и 256 отсчетов входного ЧМ сигнала дают непонятные результаты. Подскажите в чем может быть дело?
Вот картинки:
Изображение
Это отсчеты снятые после АЦП с отладочной платы DSK6416, без фильтра и не по радио каналу, а соеденил на прямую проводульками.
След картинка: тот же сигнал подаю на фильтр(ну тоже по проводам):
Изображение

А если на фильтр подаю только 12 кГц, то фильтр работает нормально, правильно.
Поэтому, я так понимаю, если на фильтр я подал ЧМ, он должен был 12 кГц пропустить а 16 кГц заглушить.
Или я не правильно понимаю как фильтр работает? Коэффициенты полосового фильтра считал в матлабе.
Просто прежде чем пробовать детектировать по вашим методам, мне нужно отфильтровать сигнал, сигнал будет принимается по радиоканалу. Сигнал сильно зашумлен. Или может фильтр не нужен?
Вложения
NEW_21.JPG
(42.43 КБ) 721 скачивание
NEW_11.JPG
(35.22 КБ) 772 скачивания
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Честно не понял насчет быстрой свертки на частоте и пр.
Зачем 256 отсчетов? Ведь страницей раньше написано было, что ДПФ выборки длинее 48 отсчетов приведет к "каше"...
И то ли вы отображаете на графиках?
Мог бы предположить, что у вас происходит наложение спектра.

Для точного "диагностирования" необходимо знать характеристики ПФ на 12 и 16 кГц, их частоты среза, ширину полос фильтров.
PS про отсчеты особенно поясните.
И еще нарисуйте блок схему вашей системы.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MaLoY22-ne писал(а):А если на фильтр подаю только 12 кГц, то фильтр работает нормально, правильно.
Поэтому, я так понимаю, если на фильтр я подал ЧМ, он должен был 12 кГц пропустить а 16 кГц заглушить.
Или я не правильно понимаю как фильтр работает? Коэффициенты полосового фильтра считал в матлабе.
Определенно ты чтото делаешь не так. Фильтры равно как и детекторы огибающей не требуются если ты делаешь ДПФ. По отсчетам - никаких 256 понятное дело не нужно - максимум - половина периода символа, то есть в районе 24 семплов, это минимальная длительность одного состояния твоей системы.
Информация по RLC mini находится >тут<
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Давайте я объясню с самого начала. Есть отладочная плата DSK 6416. Для нее необходимо написать программу обработки сигнала. Сигнал оцифровывается следующим образом. Имеются два буфера. Как только первый заполнится отсчетами с ацп, начинает накапливаться второй. В это время отсчеты первого обрабатываются и выводятся на выход, первый буфер пуст. Как только заполнился второй, начинает заполняться первый. В это время отсчеты второго обрабатываются, выводятся на выход, второй буфер пуст. И так далее.
Цифровой фильтр на 12 кГц реализован с помощью быстрой свертки (БПФ коэффициентов фильтра, БПФ входного сигнала, их комплексные результаты умножаются в частотной области, и обратное БПФ для получения результата во временной области). Параметры фильтра при генерации коэффициентов в мат лабе показаны на картинке.
Изображение
Так вот, на отладочную плату подали сигнал 12 кГц. В режиме реального времени на плате фильтруется сигнал методом быстрой свертки. Результат фильтрации хороший. У же на частоте 11900 или 12100 сигнал практически погашен.
В стопор вводит следующее. Как только подаю чм сигнал(12 кГц, 16 кГц, 500мкс), результат не могу понять какой.
Сигнал после АЦП до фильтра на 12:
Изображение
Сигнал после фильтра:
Изображение
Еще раз повторюсь. Разве там где присутствует 16 кГц, эта частота не должна быть погашена?
По идеи сигнал будет передаваться по радиоканалу и будет достаточно зашумленный. По этому предполагаю что фильтр использовать нужно. Возможно ошибаюсь?
И далее….после фильтрации -детектирование. Вот таким образом устроен алгоритм работы с частью на 12 кГц. Ну на 16 аналогично.
Или как то подругому все это делать, я просто первый раз с этим столкнулся и не все допонимаю?
Вложения
2.JPG
(30.89 КБ) 784 скачивания
NEW_21.JPG
(42.43 КБ) 588 скачиваний
NEW_11.JPG
(35.22 КБ) 380 скачиваний
1.JPG
(44.23 КБ) 797 скачиваний
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Согласен с Neekeetos, что фильтры скорее надуманы тут.
Лучше сначала добиться правильной работы "декодера" при подаче ЧМ сигналов.
Фильтрация может быть представлена как параллельные узкополосные фильтры на 12 и 16 кГц. Но так ли они сейчас нужны?
PS Делал "фильтрацию" путем наложения окна на спектральную характеристику. Давил сетевые наводки - жутко понравился метод. Но там делалось полное преобразование Фурье. В Вашем случае результат свертки - почти тот же фильтр
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Т. е. вы считаете что пока нужно отказаться от фильтра и следовать алгоритму предложенному Neekeetos выше?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Да. Вам достаточно выполнить дискретизацию (АЦП) и затем делать свертки 2-х частотных составляющих.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Вот что получается
Изображение
Получаются какие-то "фибры")) при переходах? Не четко как то?!
Вложения
rezult.JPG
(56.24 КБ) 716 скачиваний
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Видимо недостаточно хорошо реализован программный "триггер"
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

в смысле? я каждый раз сравниваю получение модули
if(M16>M12){данные = 1;}else{данные = 0;}
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Ранее Вам я написал, что триггер хорошо ведет себя когда выборка полностью соответствует одной из частот. Но при частичном "миксе" программный триггер требует более тонкой настройки.
Для начала выведите значения модулей. В идеальных условиях д.б. одна из частот = 0. Вот это условие и выявляйте. При смешанной выборке М12 и М16 будут отличны от 0 и то больше, то меньше друг друга
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MaLoY22-ne писал(а):Вот что получается
Изображение
Получаются какие-то "фибры")) при переходах? Не четко как то?!
А по моему именно так как и ожидалось. Так и должны быть зашумлены фронты тк момент перехода соответствует самому плохому варианту когда уровни частот примерно равны, то есть выборка захватывает половину пакета одной частоты и половину другой. Отфильтровывается достаточно просто - достаточно запретить последовательности 0 и единиц короче чем несколько отсчетов - обычный антидребезг. Можно до кучи сделать запоминание точки перехода, и брать данные на половине периода дальше, тогда и дребезга не будет и своеобразная синхронизация улучшит декодирование тк там по середине максимум с/ш должен быть.
Информация по RLC mini находится >тут<
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Спасибо большое! Буду пробовать! Ну думаю ваши советы еще понадобятся))))
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Здравствуйте! А еще вопрос не в тему))
Начал делать сверточное кодирование, нашел методы, алгоритмы, но не понял как выбрать порождающий многочлен?
Из каких соображений, и по каким критериям?
При учете что сообщение у меня 16 бит. Ну а символьная скорость 1мс на символ.
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MaLoY22-ne писал(а):Здравствуйте! А еще вопрос не в тему))
Начал делать сверточное кодирование, нашел методы, алгоритмы, но не понял как выбрать порождающий многочлен?
Из каких соображений, и по каким критериям?
При учете что сообщение у меня 16 бит. Ну а символьная скорость 1мс на символ.
Да выбери какой попадется, все равно это чудо не будет работать. У тебя и так манчестер зачем то используется, который удваивает символьную скорость без всякого смысла, ты еще хочешь поверх него сделать сверточный код, который еще ее удвоит. Кроме того для декодирования сверточного кода требуется демодулированный поток символов, которого у тебя нету как нету и синхронизации. Если же ты захочешь сначала декодировать манчестер с ошибками а уже потом раскодировать сверточный код то тебя ожидает интересный сюрприз связанный с тем что в манчестере присутствует неопределенность начальной полярности, и при наличии ошибок эта полярность будет неизвестна что нарушит работу и декодера светочного кода, делая его применение бессмысленным.

Резюме -
- если делать символ-манчестер-сверточный кодер , то нету никакого смысла применять манчестер, тк весь смысл его присутствия - облегчение синхронизации, но ты ее не сможешь восстановить на приемной стороне именно по манчестеру - сначала потребуется качественная символьная синхронизация для декодера сверточного кода, у которого на выходе будет бесполезный манчестер.
- если делать символ-сверточный кодер-манчестер, то ошибки декодирования манчестера на приеме уничтожат информацию требуемую для декодера сверточного кодера.
так что оба варианта - не фонтан.
Информация по RLC mini находится >тут<
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Нет, нет, Вы не так поняли немного.
Код будет формироваться так:
Сообщение -> сверточный код -> манчестер --> резильтирующий код.
то что в канал будет так: баркер+результирующий.
на стороне приемника: демодулятор-> поиск баркера - декодер манчестера - декодер сверточного кода.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Получается сверточный для защищенности, а манчестер для того чтоб убрать постоянную составляющую.
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MaLoY22-ne писал(а):Получается сверточный для защищенности, а манчестер для того чтоб убрать постоянную составляющую.
Звучит как фраза из рекламы. а 24 часа защиты от микробов он не дает? Яж написал что после того как ты декодируешь манчестер с ошибками сверточный декодер ничего не декодирует. Баркер ты написал складывается с сигналом, зачем?
Информация по RLC mini находится >тут<
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Чт апр 22, 2010 05:36:56

Сообщение MaLoY22-ne »

Баркер не складывается с сигналом, а добовляется к началу посылки для синхронизации.
А последовательность применения кодов такая потому что в задании надо так сделать.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»