Цифровой приемник WWV - синхронизация и обнаружение

Этот пример показывает реализацию цифрового приемника, который синхронизирует с информацией временного кода, транслируемой радиостанцией WWV, и декодирует ее для отображения временной информации. Пример использует продукты Simulink ®, DSP System Toolbox™ и Stateflow ® с блоком MATLAB ® Function, чтобы получить простой некогерентный цифровой приемник.

Что такое WWV?

WWV - позывной правительственной радиостанции США, управляемой Национальным институтом стандартов и технологий в Форт-Коллинз, штат Колорадо. WWV передает стандарты частотной ссылки и информацию о временном коде. Переданный временной код ссылается на часы Cesium с точностью синхронизации 10 микросекунд и точностью частоты 1 части в 100 миллиарда. Временной код передается с помощью 100-Hz аудиосигнала с модуляцией ширины импульса с использованием формата временного кода IRIG-B.

Вы можете найти больше информации на WWV на радиостанции WWV.

Введение в синхронизацию

Синхронизация является распространенной проблемой в приложениях Communications. Этот пример показывает один из способов реализации решения этой задачи в Simulink. Рассмотрим следующую простую модель:

Блок Buffer Samples поддерживает внутренний кольцевой буфер для эффективной буферизации входа выборок. Он использует режим, в котором допустимая выходная система координат вычисляется только тогда, когда он получает логический 'true' в En_Out входном порте. Логическая подсистема Frame Sync выводит логический 'true', когда соответствующая система координат, как ожидалось Приемником, был буферизуема. Тот же Логический сигнал также действует как триггер к Подсистеме Приемника, которая обрабатывает допустимую систему координат. В связи с этим, выходные разделы блока Buffer Samples и подсистемы приемника выполняются только при необходимости. Эта схема используется в этом примере в двух местах, один раз для синхронизации и демодуляции символов, а затем снова для синхронизации и декодирования систем координат.

Исследование примера

Пример модели состоит из следующих частей, которые описаны в разделах ниже:

  • Передатчик - Генерирует и передает временной код BCD

  • Задержка случайного канала - добавляет случайную задержку к переданному сигналу

  • Модель - Ссылки dspwwv_receiver модель через блок модели-ссылки. Эта модель состоит из:

  1. Приемник - Демодулирует полученный временной код, синхронизирует и блокирует с полученным сигналом и обнаруживает символы BCD

  2. Декодер - Декодирует символы BCD

  • Отображение - отображает соответствующую информацию о времени и дате

Обратите внимание, что dspwwv не поддерживает генерацию кода, но dspwwv_receiver делает.

Передатчик

Эта подсистема генерирует временной код Binary Coded Decimal (BCD) для 100-Hz тонального сигнала. Значение частоты дискретизации (Ts), используемое моделью Simulink, составляет 8000 сэмплов/сек. Временной код, транслируемый WWV, обеспечивает информацию UTC (скоординированное универсальное время) последовательно со скоростью 1 бит в секунду. Для отправки всего временного кода требуется 60 биты или одна минута. Различные биты в каждом временном коде передают следующую информацию:

  • 24 час (UTC)

  • UT1 коррекцию времени

  • Год

  • День года

  • Индикаторы Сохранения дневного света

  • Коррекция високосных секунд

Дополнительные сведения о временном коде см. в разделах 'WWV Time Code Bits' и 'WWV Time Code Format' на веб-сайте NIST. В зависимости от того, выбираете ли вы 'Current' или 'User-defined' для параметра Display time в маске подсистемы передатчика, подсистема генерирует соответствующие символы временного кода 60 BCD. Каждый символ представлен с помощью Импульсной Модуляции Ширины (PWM) 100-Hz тонального сигнала и выводится из Подсистемы Передатчика. Каждую секунду передается один из следующих возможных символов:

  1. MISS - Импульс не посылается в начале каждой системы координат, чтобы указать начало новой системы координат

  2. НУЛЬ - Импульс 170 мс указывает на бит 0

  3. ONE - Импульс 470 мс указывает на 1 бит

  4. МАРКЕР - Импульс 770 мс отправляется каждые 10 секунд на синхронизацию

Переданные символы преобразуются в следующие целочисленные значения в модели Simulink:

  • 0 - MISS

  • 1 - НУЛЬ

  • 2 - ОДИН

  • 3 - МАРКЕР

Этот переданный тональный сигнал идентичен тональному сигналу, переданному на поднесущей WWV.

Задержка в случайном канале

Эта подсистема добавляет случайную задержку к переданному сигналу. Блок приемника синхронизируется с переданными символами и декодирует соответствующий временной код, даже при наличии неизвестной задержки.

Модель - dspwwv_receiver Ссылочная модель

Дважды кликните блок Model, чтобы открыть dspwwv_receiver модель. Эта модель имеет все компоненты для соответствующей демодуляции, синхронизации и обнаружения переданного сигнала. Он состоит из следующих трех подсистем:

R1 - Приемник

Дважды кликните Подсистему Приемника, чтобы просмотреть ее подсистемы компонентов:

1) Downconvert и Downsample принимают как вход модулированный сигнал ширины импульса. Подсистема демодулирует принятый сигнал путем выполнения обнаружения огибающей, затем выполняет фильтрацию lowpass и понижает дискретизацию на 80. Поэтому существует 100 выборок для каждого переданного символа в демодулированном сигнале (dm). Выходы этой подсистемы являются последовательностью квадратных импульсов переменной длины.

2) AGC (автоматическое управление усилением) оценивает амплитуду dm сигнал, который позже используется в пороге dm сигнал.

3) Восстановление временных параметров символа и буфер для Демода используется для достижения синхронизации символа и буферизации символов для демодуляции. Он содержит следующие подсистемы:

3.1) Детектор переднего ребра принимает демодулированный сигнал dm и квантует его в логический сигнал. The Detect выходной сигнал 'true', если значение dm сигнал больше, чем значение AGC, в противном случае это 'false'. Подсистема также выводит логический сигнал Edge который содержит восходящие ребра dm сигнал.

3.2) Symbol Sync достигает символьной синхронизации и создает синхросигнал, синхронизируемый с WWV сигналом. Обратите внимание, что синхронизация систем координат выполняется позже, в разделе Decoder. Синхронизация использует временную логическую функцию Stateflow. Эта диаграмма Stateflow состоит из трех частей:

  1. SymbolSync - Этот график далее разделяется на состояние синхронизации и состояние блокировки графиков

  2. Синхронизация синхроимпульсов

  3. Интегрирование

Ниже показаны Восстановление временных параметров символа и буфер для подсистемы Demod и график состояния Symbol Sync.

3.2.1) SymbolSync выполняет синхронизацию символов. График принимает за вход восходящие ребра (Edge) dm сигнал, которые являются приблизительно 100 выборками друг от друга.

Внутренние параметры этого графика:

  • N1 - Фактическое количество выборок между двумя ребрами

  • N1est - Оценка количества выборок между двумя ребрами (начальное значение 100)

  • Nwin - Окно, в котором можно найти другое ребро после N1est выборок (значение по умолчанию 11 выборок)

  • Nhalfwin - Половина длины окна (значение по умолчанию 6)

Состояние синхронизации - Чтобы начать синхронизацию, этот график ищет поднимающийся край, за которым следует период молчания (без ребер) для приблизительно 100 выборок, а затем ищет другой поднимающийся край в окне с центром в этой точке. Если график преуспевает в этом, система утверждает, что она синхронизируется и принимает, что остальные символы являются допустимыми символами. В противном случае график ожидает повторения такого шаблона и продолжает ждать, пока он не преуспеет:

  1. График состояния 'Sync' ожидает ребра и затем ищет молчание (без другого ребра) для сэмплов по крайней мере dly = 'N1est - Nhalfwin + 1'.

  2. Если этот график не видит молчания в этой длительности (длительные образцы) и находит другой край, он обрабатывает новый край как ссылка край и снова ищет молчания.

  3. Этот график повторяет шаги 1 и 2, пока он не преуспеет в поиске молчания для следующих dly образцов после ссылки ребра.

  4. После обнаружения молчания для нечетких выборок этот график вычисляет, сколько выборок (cnt) после нечетких выборок она нашла другое ребро. Если следующее ребро найдено в окне Nwin, он переходит в состояние 'Lock', чтобы начать прием последующих символов. Если следующий край не найден в выбороках окна Nwin, он отбрасывает опорный край и снова начинает поиск опорного края, как описано на шагах 1-3.

Состояние блокировки - после синхронизации этот график ищет следующий символ в окне с центром приблизительно каждые 100 выборок и остается синхронизированной, пока она находит символы. Если график не находит никаких символов два раза подряд (приблизительно 200 выборок), то он больше не синхронизируется и пытается установить синхронизацию снова, как описано выше:

  1. После перехода в состояние 'Lock' этот график принимает, что ребра теперь должны приходить периодически (приблизительно каждые N1est выборки).

  2. График обновляется до N1 N1 + Nhalfwin-cnt и игнорирует следующие образцы dly = N1-Nhalfwin + 1, а затем ищет следующее ребро в окне выборок Nwin после этого.

  3. Он отслеживает количество выборок в окне (cnt), после чего нашел следующее ребро. Если он нашел ребро в окне, он снова обновляется N1 как упомянуто выше.

  4. Основываясь на новом значении cnt, он вычисляет новое слабо и начинает искать новое ребро, как упомянуто выше.

  5. График позволяет не найти ребро в окне Nwin один раз для учета символа MISS, но если это происходит два раза подряд, он выходит из состояния Lock и снова начинает синхронизацию символа путем перехода в состояние Sync.

3.2.2) Синхронизация синхроимпульса генерирует тактовый сигнал, когда новый возрастающее ребро dm принимается сигнал. Таким образом, часы синхронизируются с появлением нового ребра, а не с синхроимпульсом Simulink, работающим периодически с фиксированной скоростью.

3.2.3) Интегрирование генерирует функцию шага шаблона с шириной 17 выборок, чтобы представлять символ ZERO, когда ребро найдено, это, каждый раз, когда часы генерируются. Этот сигнал используется подсистемой AGC.

3.3) Буфер символов для буферов Demod в нисходящем направлении выборок соответствующий символу, когда он принимает синхросигнал (вычисленный выше в 3.2.2).

4) Демод символа и буфер системы координат срабатывает каждый раз, когда он принимает ненулевой синхросигнал. Он использует блок Вектора Quantization, чтобы выполнить демодуляцию символов путем сравнения буфера входа 'Symbols' с четырьмя возможными кандидатами символов (MISS, НУЛЬ, ONE и МАРКЕР). Это выводит символ с лучшим соответствием. Блок Линия используется для буферизации 60 последовательных символов, чтобы создать буфер системы координат. Подсистема Frame Sync Logic, предшествующая блоку Delay Line, ищет вхождение последовательного МАРКЕР и символа MISS, поскольку этот шаблон указывает на начало новой системы координат WWV. Блок Линия выводит допустимый буфер только тогда, когда этот шаблон найден. Последующий декодер IRIG-B также запускается в этот момент.

R2 - декодер системы координат IRIG-B

Триггируемая подсистема системой координат IRIG-B, состоит из блока MATLAB function, который используется для декодирования систем координат формата IRIG-B на отдельные элементы временного кода. Эта подсистема запускается только при получении допустимой системы координат WWV.

Отображение

Переданные символы отображаются на декодированных символах возможностей а декодированная информация временного кода отображается в окне 'Time code' и 'WWV time code' отображения. Поля в окне «WWV time code» представляют светодиодные индикаторы, которые загораются, когда соответствующий сигнал равен true. Светодиодный индикатор, соответствующий Daylight Savings, разделен на две части, где первая часть является индикатором сбережения Daylight 1, а вторая часть - индикатором сбережения Daylight 2. График Дрейфа Часов указывает количество выборок между восходящими ребрами последовательных символов (symbolClk ) по мере их получения. Этот график изменяется между 95 и 105 выборками.

Использование dspwwv Пример модели

Симулируйте модель. Вы увидите дрейф синхроимпульса, соответствующие символы кода времени BCD и текущее время, отображаемое ниже в этом порядке.

Когда для параметра Display time задано значение 'Current', модель продолжает отображать текущее время, которое обновляется один раз в минуту. Можно изменить параметр Display time подсистемы Transmitted на 'User-defined' и указать любое время, которое вы хотите отобразить.