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

[email protected]

Участник
  • Постов

    24
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о [email protected]

  • Звание
    Участник
    Участник

Посетители профиля

507 просмотров профиля
  1. Так ну хорошо, там 2 фильтра после демодулятора. Один из них rrc второй просто сглаживающий. Там везде фигурирует частота в Гц, видимо. Мне, что, получается мгновенную частоту вычислять именно в Гц?
  2. Так речь то не о созвездии, а о компенсации частотного смещения, как советовал petrov. Берём ожидаемые уровни, например, изменения фазы, в данном случае pi*h, либо 2pi*h. И пытаемся вычислить постоянную разницу с этими уровнями. Вот для обычной cpfsk с любым индексом это работает. А для cpfsk с памятью - нет. Вот я и спрашиваю, как же сделать - там разброс относительно опорного уровня очень велик. Как компенсировать смещение несущей? Или, может быть, для mlse не нужно компенсировать частотное смещение??
  3. Сделал фапч, как Вы предлагаете с разницей между текущей разностью фаз и одной из предполагаемых. Понятно, что разница фаз считается на длительности 1 символа. Ожидаемо, работает только с cpfsk без памяти. На первом фото ошибка по частоте, рассчитанная таким способом и пид воздействие на DDS (зелёным) на втором фото сигнал, симметрично позиционированный около 0. А вот на 3ем фото ошибка, сгенерированная точно таким же сигналом, но с фильтром с памятью на 8 символов. И уже не работает. В связи с этим, у меня 2 вопроса: 1) можно ли сделать, что такой фапч работал для модуляции с памятью?
  4. интересное предложение. Спасибо!
  5. Так вот я описал структуру. Можно использовать atan-1 для psk модуляций и так далее. Можете описать хотя бы словами такой детектор? Не надо общих слов, я своими руками делаю приёмники на плис, мне нужно понимать очень конкретно.
  6. Ну вот Вам конкретный вопрос. Для psk4 мы берём фазовый детектор, управляемый решениями. Функция sign в обоих I и Q ветвях и перемножаем на значения сигналов, вычитаем. Вот сигнал ошибки по фазе, потом его используем, чтобы управлять DDS. Как такой сигнал ошибки сгенерировать для cpfsk4?
  7. Это все здорово, но как же быть с памятью? Я так демодулирую и вижу, что амплитуда текущего символа зависит от того, какие символы были перед этим. Причём, довольно сильно зависит, при шумах будет очень сложно отличить -1 от -3, например. 2) как с таким сигналом синхронизироваться по частоте. Приходит пока только одна мысль - вычислять мгновенную частоту и сильно её усреднять. Но это очень медленно будет.
  8. Ну есть такой открытый американский стандарт dPMR. Там скорость передачи 2400 и девиация 700 Гц между "уровнями" (-1050, -350, 350,1050 Гц) вот получается, что индекс 700/2400=0, 291666. Но я вообще хотел узнать, как умные люди такое демодулируют. Mlse это maksimum likelihood что то? Я так понял, что это то же, что Витерби, только более ёмкая в вычислениях. Есть ли какой то проект с этим алгоритмом? Каков принцип?
  9. Добрый день! Прошу помочь разобраться, как можно ДЕМОДУЛИРОВАТЬ сигнал с модуляцией FSK4 и с индексом h=0, 29166666. Вообще, какие есть методы синхронизации и приёма. Я нашёл приёмник Витерби, но для такого индекса неинтересно совсем. Я хорошо знаю, как сделать фапч для qpsk модуляции, например. Поэтому ещё раз, мои вопросы: 1) как синхронизироваться по частоте для cpfsk4 сигнала с индексом 0,291666 2) как выделить символы, не используя алгоритм витерби. (Производную арктангенса знаю, но для такого сигнала слишком большой разброс мгновенной частоты для одного и того же символа в разном месте в сообщении получается) Может быть есть ссылка на реально работающий проект?
  10. Всем спасибо за ответы и версии. Проблема решена. Причина оказалась в том, что хоть в документации на ядро и указано что tready можно держать в нуле и использовать tready в качестве подтверждения приема с целью выдачи следующего пакета на шину, на деле же стабильно это работает только если держать tready постоянно в единице. Всё работает без дублирования если принять заголовок пакета, сохранить его содержимое, и пока идет обработка первого пакета, tready висит в нуле, а на шине при этом уже будет следующий пакет. Это удалось выяснить с помощью симуляции с задействованием PCI root, при этом тест был изменен таким образом, чтобы уже на стороне PCI root отправлялись два пакета в соседних тактах.
  11. Спасибо за ответы! Сразу встречный вопрос- если запись в драйвере однократная. Что же в таком случае идёт из шины акси после завершения цикла? Что он там досылает, если из драйвера ничего не отправляли? Может ли быть дело в том, что у нас райзер для pcie 30 см?
  12. Добрый день! Создали тестовый проект на kintex ultra scale. Обмен по pcie работает, но смущает одна проблема. Иногда при записи в адрес пакеты повторяются. То есть, другими словами, я вижу valid, принимаю пакет, поднимаю ready и опускаю его в 0, а valid и last от ядра pcie продолжают висеть в "1". Это шина ПК дублирует пакет или это висит предыдущий? И если это происходит, то почему и как это исправить? Прилагаю фото из даташита как должно быть и фото Ila как есть
  13. Хорошо, что тогда делать? Использовать несколько каскадов? И еще: как то же люди собирают сигналы на частоте даже 200 МГц. Даже китайский лазерный дальномер излучает и принимает синус на 190-210 МГц без особых усилий. Я же не могу банальные 6 МГц принять на расстоянии больше 2 метров. Может быть я вообще что-то неправильно делаю? Может быть в оптике дело? Я не использую никаких линз. Поделитесь опытом!
  14. Но что может быть приичной несинусоидальности тока? НАпример ток в форме пилы даже на малых оборотах?Почему так?
×
×
  • Создать...