GnuRadio: Урок 4, использование комплексных сигналов и прием SSB

Данная глава посвящена приему SSB сигналов. Она также иллюстрируют некоторые свойства комплексных (аналитических) сигналов и показывает, почему мы используем их в системах связи.

  1. Создайте новый граф в GRC.
  2. Постройте простой граф как показано на рисунке ниже. Установите тип каждого из трех блоков Float.. Остальные значения можно оставить по умолчанию.
    complex1
  3. Выполните граф. Должен открыться график, и отобразить синусоидальный сигнал. Убедитесь, что это сигнал имеет амплитуду и частоту такую, какую вы ожидаете.
  4. Изменить граф путем изменения типа каждого из трех блоков на Complex . Выполните граф. Теперь на графике должно отобразиться две синусоиды, со сдвигом по фазе на 90 ° между собой. Ведущая (канал 1) волна I является фазовой составляющей комплексного сигнала, а запаздывающая (канал 2) волна Q — квадратурная составляющая. Когда источник сигнала установлен в тип Complex, он будет выводить I и Q компоненты.
  5. Измените граф, как показано на рисунке ниже. Источник сигнала должен быть установлен для вывода сигнала вида “Square” (меандр) с типом Float. Соответственно измените блоки Throttle и Scope Sink для работы с плавающей точкой.
    compex2
  6. Блок “Hilbert” (Преобразование Гильберта) находится в раздел Filters. Этот блок берет вещественный входной сигнал, и используя преобразование Гильберта, выводит комплексный сигнал. Оставьте параметр “Num Taps” в его значении по умолчанию 64. Выход этого блока является комплексным, и второй Scope Sink  должен быть настроен для принятия комплексного сигнала.
  7. Выполните граф. Должно открыться два графика. В одном долженсодержатся только прямоугольный сигнал с выхода источника сигнала. В другом, график  должен включать в себя как оригинальный прямоугольный сигнал так и его преобразование Гильберта. Вы понимаете, почему преобразование Гильберта прямоугольного сигнала выглядит таким образом?
    complex5
  8. Как показано выше в шаге 4, источник сигнала может быть установлен для вывода комплексного сигнала и отображать I и Q компоненты. Измените граф, как показано ниже.
    complex3
  9. Установите источник сигнала на вывод комплексного сигнала. Убедитесь в том, что блоки Throttle и Scope Sink  также установлены использовать комплексные значения. Выполните граф. Комплексный сигнала отобразится в данном случае так же, как и полученный преобразованием Гильберта? Ваш ответ должен быть НЕТ (при условии, что вы используете версию GRC 3.2.2 или выше). Это неправильно. GRC не отображает правильную квадратурную Q компоненту комплексного сигнала. Преобразование Гильберта выводило правильный сигнал.
    complex4
  10. Создайте графа потока как показано ниже. Убедитесь, что все блоки устанавливлены в  Float. Этот граф создает две синусоиды, на частоте 1 кГц и 10 кГц и умножает их. Вспомнив тригонометрию  мы можем утверждать, что произведение двух косинусов дает два косинуса (суммы и разности) частот исходных сигналов. В этом случае мы ожидаем выходе 9 кГц (разница) и 11 кГц (сумма).
    complex6
  11. Выполните граф и убедитесь в результате. Обратите внимание, что спектр FFT показывает только положительную часть частотного спектра, когда граф установлен на тип Float. Мы знаем, что для входного сигнала с типом Float отрицательные частотные компоненты такие же как положительные частотные компоненты.
  12. Изменить все блоки на тип Complex и выполнbnt графа потока снова. Теперь вы должны наблюдать один выход на 11 кГц. Это оригинальный сигнал10KHz  сдвинутый на частоту второго сигнала равного 1 кГц. Если мы хотим передвинуть сигнал влево, в отрицательном направлении , то может быть использована частота -1000. Попробуйте это сделать. На этом примере мы видим два из основных преимуществ использования аналитических комплексных сигналов. Сигнал может быть сдвинут (суммирован), не создавая дополнительного разностного сигнала. Кроме того, обратите внимание, что нет отрицательных частотных составляющих. Почему это происходит?

Однополосная (SSB) демодуляция

  1. Скачайте архив ssb_lsb_256k_complex2.dat  отсюда или отсюда и распакуйте его на диск.
  2. Создайте новый граф, как показано на рисунке ниже. В блоке File Source выберете файл, который вы только что скачали. Переменная которая устанавливает частоту дискретизации (samp_rate) должна быть установлена равной 256000, так как это частота дискретизации скачанного файла. Параметры Throttle и FFT Sink  можно оставить  по умолчанию.
    complex7
  3. Выполните граф. В открывшемся окне спектра, отрегулируйте опорный уровень так чтобы ось амплитуды начиналась с 10 дБ, и установите параметры оси в 10dB на одно деление. Вы должны увидеть кусок спектра шириной в 256 кГц (согласно с частотой дискретизации). Обратите внимание, что наблюдается один видимый сигнал между 40 и 60 кГц.
  4. Когда этот сигнал записывался, USRP был установлен на частоте 50.3MHz. Таким образом, точка 0 кГц на дисплее соответствует до 50,3 МГц. На спектре наведите курсор на сигнал и обратите внимание на частоту вдоль его правого края. Она должна быть примерно 53 кГц. Поскольку это нижняя боковая полоса (LSB) сигнала, она соответствует несущей частоте. Поскольку «нулевая» частота соответствует 50,3 МГц, оригинальная несущая частота сигнала была 50.3MHz + 53 кГц = 50,353 МГц. Однако сейчас, когда спектр был сдвинут вниз на 50,3 МГц, мы используем несущую частоту 53 кГц.
  5. Первый шаг в построении приемника заключается в испольщовании канального филтра для выделния инетересующего сигнала, и отфильтровывания всех  остальных сигналов в полосе частот. Первым шагом в этом процессе является перенос сигнала интерес вниз до нулевой частоты, как это показано ниже.
    complex8
  6. Вторым шагом является применение фильтра низких частот, так что другие сигналы будут отфильтрованы.
    complex9
  7. В Gnuradio есть блок Frequency Xlating FIR Filter (раздел Channelizers) который может выполнить обе эти операции. Вставьте этот блок между исходным файлом и Throttle блоком. Настройте параметры фильтра, как показано ниже. Параметр Center Frequency равный -51500 перенесет весь спектр вниз на 51500 Гц. Функция firdes.low_pass указанная в параметре Taps генерирует настройки для фильтра низких частот: коэффициент усиления 1 (в полосе пропускания), частоту дискретизации равной samp_rate(256k), частоту среза 2 кГц и ширину переходного периода равной 100 Гц.
    complex10
  8. Выполните граф. Вы увидите, что ваш сигнал теперь сдвинулся и является единственным представленным на спектре сигналом. Теперь, когда мы извлекли интересующий нас сигнал, мы можем не обращать внимания на остальной спектр. Мы можем уменьшить  обрабатываемый диапазон частот, за счет снижения частоты дискретизации (выполнив прореживание). Снова откройте параметры Frequency Xlating FIR Filter и измените параметр Decimation до 8. Это позволит снизить частоту дискретизации до 256000/8 = 32000. Не забудьте изменить частоты дискретизации блоку Throttle и WX GUI FFT Sink. Какой диапазон частот для вы ожидаете увидеть на спектре сейчас?
  9. Выполните граф снова, чтобы убедиться в своей правоте. Теперь вы должны наблюдать расширенную версию вашего сигнала. Нажмите кнопку Autoscale для автомасштаирования, чтобы все пики сигнала могли наблюдаться. Обратите внимание, что через какое-то время уровень сигнала упадет на несколько секунд. Это происходит когда станция прекращает передачу.
  10. Напомним что наш сигнал является комплексным (аналитическим) сигналом. Для того чтобы демодулировать SSB мы должны обработать на реальную и мнимую части сигнала раздельно. Блок Complex to Float будет принимать комплексный сигнал и выдавать его реальную (вверху) и мнимую (внизу) часть отдельно. Измените граф как показано на рисунке ниже. Выводы блока Complex to Float выдают значения с плавающей точкой, и следовательно подключенные к выходам блоки Throttle и WX GUI FFT Sink должны быть изменены на тип Float.
    complex11
  11. Выполните граф. Теперь вы должны наблюдать спектры действительной и мнимой части сигнала. Обратите внимание, что сигналы простираются до 2 кГц, частоты среза фильтра.
  12. Один из методов демодуляции этом SSB сигнал, известный как метод Уивера, принимает действительные и мнимые части сигнала и обрабатывает их как показано ниже. Используйте Signal Source в Gnuradio для создания косинуса и синуса, необходимых для реализации этого демодулятора. Блоки Add и Multiply находятся в разделе Math Operators.
    complex12
  13. Обратите внимание на выход сумматора на раковине FFT. Это сигнал основной полосы частот, который был извлечен из модулированного сигнала SSB.
  14. Последним шагом будет прислушивание  демодулированного сигнала. Добавьте блок Audio Sink  как показано в уроке 3. Напомним, что вам потребуется Rational Resampler, чтобы уравнять частоту дискретизации выходного сигнала и ту которую использует ваша звуковая карта в блоке Audio Sink. Кроме того, вам понадобится регулятор громкости, чтобы уменьшить амплитуду сигнала до его прихода в  Audio Sink.
    Подсказка: попробуйте значения от 0 до 0,0001 для постоянного множителя сигнала.

GnuRadio: Урок 4, использование комплексных сигналов и прием SSB: 6 комментариев

  1. Руслан

    Параметры фильтра:
    Decimation 8
    Taps: firdes.low_pass(1,samp_rate,3000,100)
    Center Freq: 50000
    SampRate: samp_rate
    Параметры генераторов:
    Samp Rate 32000(32k)
    Freq 3000Hz(3khz)
    После смесителей и сумматора троттл 32к и выхлоп в аудиокарту 32к. Проверено.
    p.s. multiply_const 0.000015

  2. Евгений

    Параметры фильтра:
    Decimation 8
    Taps: firdes.low_pass(1,samp_rate,2000,100)
    Center Freq: 51500
    Центральная частота у Frequency Xlating FIR Filter: 51500 без минуса.
    SampRate: samp_rate

    Параметры генераторов:
    Samp Rate 32000(32k)
    Freq 12000Hz(12khz)
    После смесителей и сумматора throttle 32к, Rational resampler (Decimation 2, interpolation 3 «32k*3=96k/2=48k ) и в карту с 48к.

    multiply_const 0.000015
    Демодуляция идет на ура с этими параметрами.
    Схему прилагаю.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">