Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 36

Тема: Модуль демодуляции для SDR

  1. #1

    Регистрация
    21.06.2006
    Адрес
    Екатеринбург
    Сообщений
    3,191
    Позывной
    RX9CIM

    Модуль демодуляции для SDR

    Всем доброго времени суток!
    Стал экспериментировать с DSP и пришла в голову мысль о разработке портативного независимого СДР-приемника. Т.е. чтобы обработка сигналов I/Q была реализована на встроенном микроконтроллере.
    Поначалу хотел просто сделать цифровой ФНЧ. В качестве микроконтроллера выбрал временно (жду пока появятся в продаже stm32f4) процессор stm32f205. Довольно "могучая машинка". Тактовая частота - 120МГц, 32 разряда, аппаратный акселератор для работы с флэшью, наличие кэша данных и команд. Был реализован цифровой ФНЧ 3кГцс характеристикой фильтра Баттерворта 19-го порядка путем использования КИХ-фильтра с N=200 и целочисленной математики (с плавающей точкой особо не игрался, но как понял она больше влияет на точность описания АЧХ, чем на затухания за пределами полосы пропускания). При этом частота дискретизации - 44100Гц. На общет такого алгоритма, оцифровку с использованием встроенного АЦП и выдачу на встроенный ЦАП у процессора уходит примерно 1000 циклов (8 мкс), т.е. в резерве остается примерно 60% при данной частоте дискретизации (44100). Затем пришла собственно мысль - сделать вседиапазонный портативный приемник с использованием данного процессора. Структура примерно такая:
    -СДР-приемник;
    -синтезатор на AD9834-35;
    -процессор STM32F205;
    -УНЧ.
    Т.к. не предъявляю требований к динамике, то планирую испльзовать встроенные в процессор АЦП и ЦАП.
    А теперь суть темы - я полный профан в алгоритмах обработки I/Q сигналов. Опишите пожалуйста методы демодуляции разных сигналов (AM, SSB, FM) из I/Q. Желательны картинки и формулы, ссылки на аналогичные проекты, комментарии и пояснения, исходные коды программ. Книжки по ЦОС потихоньку читаю, но в голове только одна каша пока.


  2. #2
    Последний раз редактировалось ivan219; 22.10.2011 в 18:25.

  3. #3

    Регистрация
    21.06.2006
    Адрес
    Екатеринбург
    Сообщений
    3,191
    Позывной
    RX9CIM
    Правильно ли я понял:
    I и Q сигналы нужно разложить в ряд Фурье (сумма синусов и косинусов), просуммировать мнимые и действительные части (мнимая I с действительной Q), выполнить преобразование Гильберта, а там в зависимости от полосы (нижней или верхней) сложить или вычесть I и Q сигналы? Вопрос: а нужно ли делать именно дискретное преобразование Фурье? Возможно ли просто отфильтровать сигналы I и Q, затем I пропустить через ПГ и провести операцию сложения (вычитания)?

  4. #4
    Цитата Сообщение от rx9cim Посмотреть сообщение
    Правильно ли я понял:
    I и Q сигналы нужно разложить в ряд Фурье
    Нет не правильно там в скобочке буковка (t) означает время а не спектр.
    Вся обработка ведётся во временной области.
    Первые 4 умножителя и 2 сумматора это комплексный гетеродин позволяет двигаться по спектру и выводить в 0 ту частоту которая нужна. Т.е. если вам не нужно бегать по полосе то от них можно отказаться. Но тогда получится не SDR а скорее ППП
    Можно просто отфильтровать полосу в 3 кГц канал I повернуть относительно Q на 90 градусов и сложить. Получите одну боковую полосу. Если поменять знак получите другую боковую. Какую именно верхнею или нижнею зависит и от входных цепей.

  5. #5

    Регистрация
    21.06.2006
    Адрес
    Екатеринбург
    Сообщений
    3,191
    Позывной
    RX9CIM
    Вопрос по сдвигу фазы - сигналы I и Q - сдвинуты по фазе на 90гр (I (sin) отстает от Q (cos) ). I нужно сдвигать на 90гр. вперед? Как программно можно реализовать фазовращатель? Возможен ли вариант с использованием всепропускающих фильтров (т.е. фактически линий задержек).

  6. #6
    Цитата Сообщение от rx9cim Посмотреть сообщение
    Вопрос по сдвигу фазы - сигналы I и Q - сдвинуты по фазе на 90гр (I (sin) отстает от Q (cos) ). I нужно сдвигать на 90гр. вперед? Как программно можно реализовать фазовращатель? Возможен ли вариант с использованием всепропускающих фильтров (т.е. фактически линий задержек).
    При демодуляции SSB сигнала не важно какой из сигналов и в какую сторону либо Q либо I +90 -90 можно да же оба по 45 градусов повернуть. Разница будет только в полосе верхняя или нижняя
    По поводу все пропускающих фильтров не знаю мне что то эксперименты в цифре не понравились. Что бы добиться хороших результатов пришлось подымать частоту дискретизации а это дополнительные ресурсы.

    Так что могу посоветовать сделать вот так http://www.dsplib.ru/content/hilbert...lbertquad.html
    Во вложении не много исправил что бы была именно де модуляция но принцип такой же.
    Вся загвоздка в этом алгоритме это ФНЧ от него зависит уровень подавления зеркального канала.
    Частоту дискретизации рекомендую сделать 6600 Гц тогда сигнал получится полосой в 3.3 кГц 300 Гц будет зона перехода у фильтра и итоговая полоса получится 300...3000 Гц стандарт для SSB

    Коэффициенты БИХ фильтра удовлетворяющие этому условию. Подавление зеркального канала 90 дБ. Для 16 битного АЦП достаточно. Не равномерность в полосе пропускания 0.2 дБ

    b0 = 2.610913712914522000 e-003;
    b1 = 8.503272144845284300 e-003;
    b2 = 1.975856076208071600 e-002;
    b3 = 3.202134270736686800 e-002;
    b4 = 4.067074319038086600 e-002;
    b5 = 4.067074319038086600 e-002;
    b6 = 3.202134270736686800 e-002;
    b7 = 1.975856076208071600 e-002;
    b8 = 8.503272144845284300 e-003;
    b9 = 2.610913712914522000 e-003;

    a0 = 1;
    a1 = -3.698293454728026000 e+000;
    a2 = 8.294765559817305300 e+000;
    a3 = -1.256257548155342200 e+001;
    a4 = 1.408632366772260100 e+001;
    a5 = -1.184240971511153600 e+001;
    a6 = 7.458660460095362800 e+000;
    a7 = -3.389542778494385500 e+000;
    a8 = 1.018464393886882700 e+000;
    a9 = -1.582629865996050500 e-001;
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	hilbertquad_html_m42e48807.gif 
Просмотров:	1598 
Размер:	20.5 Кб 
ID:	94326  
    Последний раз редактировалось ivan219; 24.10.2011 в 02:09.

  7. #7

    Регистрация
    21.06.2006
    Адрес
    Екатеринбург
    Сообщений
    3,191
    Позывной
    RX9CIM
    Спасибо Вам ivan219 за ответы
    Пока только программно реализовал с помощью КИХ - фильтров (для преобразователя Гильберта - с 400 ответвителями, для ФНЧ - с 200). На железе еще пока ничего не проверял, но сразу возникло три вопроса -
    1) как обеспечить автоматическую подстройку фазы I и Q сигналов? мгновенную фазу можно вычислить как арктангенс I/Q, но как в этом уберечься от разбаланса по аплитуде в i и Q каналах?
    2) При сложении сигнала Q с сдвинутым сигналом I после преобразования Гильберта фактически выходная амплитуда получится равной сумме действительных значений (отфильтрованных) амплитуд I и Q , а при вычитании (другой полосе) - разности. Т.е. При одной из боковых полос выходная амплитуда будет в два раза меньше?
    3) Какие существуют наиболее эффективные методы автоматического баланса амплитуд каналов I и Q?

  8. #8
    Заблокирован навсегда
    Регистрация
    10.12.2005
    Адрес
    Одесса
    Сообщений
    2,325
    Записей в дневнике
    1
    Позывной
    UR5FFR
    Цитата Сообщение от rx9cim Посмотреть сообщение
    Какие существуют наиболее эффективные методы автоматического баланса амплитуд каналов I и Q?
    в любом аналоговом SDR тракте какие бы вы меры не применяли будет иметь место разбаланс амплитуд и фаз IQ-каналов. более того, сбалансировать тракт "докручивая" фазу и амплитуду на константу в одном из каналов можно, но только для одной частоты приема относительно гетеродина. алгоритмы балансировки есть. и я их делал - они таки да работают. но сложность их такова что меня гложат сомнения по поводу возможности их реализации в "железе". очень тонкий момент в алгоритме - выяснить что есть шум а что есть сигнал.

  9. #9

    Регистрация
    21.06.2006
    Адрес
    Екатеринбург
    Сообщений
    3,191
    Позывной
    RX9CIM
    Пришла в голову одна идея - при использовании для формирования сигналов гетеродина, сдвинутых на 90 градусов, DDS, можно же будет двигать фазу уже на программно, а аппаратно.


  10. #10
    Цитата Сообщение от rx9cim Посмотреть сообщение
    1) как обеспечить автоматическую подстройку фазы I и Q сигналов? мгновенную фазу можно вычислить как арктангенс I/Q, но как в этом уберечься от разбаланса по аплитуде в i и Q каналах?
    Насчёт автоматики не знаю а вот руками это дело легко можно сделать.
    самое сложное это разбаланс фаз разбаланс амплитуды решается просто усилением одного канала. В большинстве случаев это достаточно особенно если брать полосу в 0...3 кГц.

    Цитата Сообщение от rx9cim Посмотреть сообщение
    2) При сложении сигнала Q с сдвинутым сигналом I после преобразования Гильберта фактически выходная амплитуда получится равной сумме действительных значений (отфильтрованных) амплитуд I и Q , а при вычитании (другой полосе) - разности. Т.е. При одной из боковых полос выходная амплитуда будет в два раза меньше?
    Не много не понял.
    Внизу формулы описывающие этот процесс.

    Q = (Cos1 + Cos2);
    I = (Sin1 - Sin2);
    Q(90) <- Пеобразование Гильберта сигнала Q
    Q(90) = (Cos1(90) + Cos2(90)) = (-Sin1 - Sin2);
    I + Q(90) = Sin1 - Sin2 - Sin1 - Sin2 = - 2 * Sin2; Нижняя боковая
    I - Q(90) = Sin1 - Sin2 + Sin1 + Sin2 = 2 * Sin1; Верхняя боковая

    Цитата Сообщение от rx9cim Посмотреть сообщение
    3) Какие существуют наиболее эффективные методы автоматического баланса амплитуд каналов I и Q?
    Relayer ответил. Но не рекомендую так как ресурсов уйдёт много.

    Цитата Сообщение от rx9cim Посмотреть сообщение
    Пришла в голову одна идея - при использовании для формирования сигналов гетеродина, сдвинутых на 90 градусов, DDS, можно же будет двигать фазу уже на программно, а аппаратно.
    Вот это то же не понятно.

    В общем я понял вы делает по первой моей блок схеме?
    По второй было бы проще! И мене затратно по ресурсам.
    Последний раз редактировалось ivan219; 28.10.2011 в 22:45.

Страница 1 из 4 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. модуль RA60H1317M1A
    от US4MEZ в разделе УКВ усилители
    Ответов: 11
    Последнее сообщение: 10.06.2011, 16:52
  2. Модуль M68702H
    от UA3YOB в разделе Технический кабинет
    Ответов: 4
    Последнее сообщение: 19.10.2010, 06:13
  3. Модуль к WriteLog-у
    от ew3ds в разделе Программное обеспечение
    Ответов: 1
    Последнее сообщение: 11.08.2006, 08:37
  4. AA контест модуль
    от Дедушка в разделе Программное обеспечение
    Ответов: 2
    Последнее сообщение: 27.07.2006, 10:34
  5. модуль ВЧ
    от ГЕША в разделе Технический кабинет
    Ответов: 1
    Последнее сообщение: 25.02.2005, 11:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •