Этот пример показывает реализацию цифрового получателя, который синхронизирует с широковещательной передачей информации о временном коде по радио станцию WWV и декодирует его, чтобы отобразить информацию времени. Пример использует Simulink®, DSP System Toolbox™ и продукты Stateflow® с Функциональным блоком MATLAB®, чтобы достигнуть простого некогерентного цифрового получателя.
WWV является позывным станции правительственной радиостанции США, запущенной Национальным институтом стандартов и технологий в Форт-Коллинзе, Колорадо. WWV передает стандарты ссылки частоты и информацию о временном коде. На переданный временной код ссылаются к Цезиевым часам с точностью синхронизации 10 микросекунд и точностью частоты 1 части в 100 миллиардах. Временной код передается с помощью звукового сигнала на 100 Гц с модуляцией длительности импульса с помощью формата временного кода IRIG-B.
Можно найти больше информации о WWV на Радиостанции WWV.
Синхронизация является типичной проблемой в Приложениях связи. Этот пример показывает вам один способ реализовать решение этой проблемы в Simulink. Рассмотрите следующую простую модель:
Блок Buffer Samples поддерживает внутренний кольцевой буфер для эффективной буферизации входных выборок. Это использует режим, где допустимый выходной кадр вычисляется только, когда это получает булевскую переменную, 'верную' во входном порту En_Out. Логическая подсистема Синхронизации Кадра выводит булевскую переменную, 'верную', когда соответствующий кадр, как ожидалось Получателем, был буферизован. Тот же булев сигнал также действует как триггер к подсистеме Получателя, которая обрабатывает допустимый кадр. Из-за этого расположения, выходных разделов блока Buffer Samples и подсистемы Получателя, только запущенной при необходимости. Это расположение используется в двух местах в этом примере, однажды для синхронизации символа и демодуляции и с другой стороны для синхронизации кадра и декодирования.
Модель в качестве примера состоит из следующих частей, которые описаны в разделах ниже:
Передатчик - Генерирует и передает временной код BCD
Случайная Задержка Канала - Добавляет случайную задержку с переданным сигналом
Модель - Ссылки dspwwv_receiver модель через блок модели - ссылки. Эта модель состоит из:
Получатель - Демодулирует полученный временной код, синхронизируется и привязывается с полученным сигналом и обнаруживает символы BCD
Декодер - Декодирует символы BCD
Отображение - отображает соответствующую информацию о времени и дате
Обратите внимание на то, что dspwwv
не поддерживает генерацию кода, но dspwwv_receiver
делает.
Эта подсистема генерирует временной код Двоично-десятичного числа (BCD) на тоне на 100 Гц. Уровень выборки (Ts), используемый моделью Simulink, является 8 000 выборок/секунда. Временной код, широковещательно переданный WWV, обеспечивает UTC (Всемирное координированное время) информация последовательно со скоростью 1 бита в секунду. Требуется 60 битов, или одна минута, чтобы отправить целый временной код. Различные биты в каждом временном коде передают следующую информацию:
24-часовое время (UTC)
Исправление времени UT1
Год
День года
Индикаторы Перехода на летнее время
Исправление секунд прыжка
Обратитесь к 'Битам Временного кода WWV' и 'разделам' Формата Временного кода WWV в веб-сайте NIST для получения дополнительной информации о временном коде. В зависимости от того, выбираете ли вы 'Current' или 'User-specified' для параметра времени Отображения на маске подсистемы передатчика, подсистема генерирует соответствующие 60 символов временного кода BCD. Каждый символ представлен с помощью Модуляции ширины импульса (PWM) тона на 100 Гц и выводится от подсистемы Передатчика. Один из следующих возможных символов передается каждую секунду:
MISS - Никакой импульс не отправляется в начале каждого кадра, чтобы указать на запуск нового кадра
НУЛЬ - импульс на 170 мс указывает на 0 битов
ONE - Импульс на 470 мс указывает на 1 бит
MARKER - Импульс на 770 мс отправляется каждые 10 секунд за синхронизацией
Переданные символы сопоставлены со следующими целочисленными значениями в модели Simulink:
0 - МИСС
1 - НУЛЬ
2 - ОДИН
3 - МАРКЕР
Этот переданный тон идентичен тону, переданному на поднесущей WWV.
Эта подсистема добавляет случайную задержку с переданным сигналом. Раздел получателя синхронизируется с переданными символами и декодирует код подходящего времени, даже в присутствии неизвестной задержки.
dspwwv_receiver
модель, на которую ссылаются,Дважды кликните блок Model, чтобы открыть модель dspwwv_receiver
. Эта модель имеет все компоненты для того, чтобы соответственно демодулировать, синхронизировать и обнаружить переданный сигнал. Это состоит из следующих трех подсистем:
Дважды кликните Подсистему Получателя, чтобы просмотреть ее подсистемы компонента:
1) Downconvert и Downsample принимают как вход ширину импульса модулируемый сигнал. Подсистема демодулирует полученный сигнал путем выполнения обнаружения конверта, затем выполняет фильтрацию lowpass и субдискретизирует 80. Поэтому существует 100 выборок для каждого переданного символа в демодулируемом сигнале (dm
). Вывод этой подсистемы является последовательностью импульсов квадрата переменной длины.
2) AGC (Автоматическое Управление Усилением) оценивает амплитуду сигнала dm
, который позже используется в пороговой обработке сигнал dm
.
3) Восстановление Синхронизации символа и Буфер для Demod используются, чтобы достигнуть синхронизации символа и буферизовать символы для демодуляции. Это содержит следующие подсистемы:
3.1) Ведущий Детектор берет в демодулируемом dm
сигнала и квантует его в булев сигнал. Выходной сигнал Detect
'верен', если значение сигнала dm
больше, чем значение AGC, в противном случае это является 'ложным'. Подсистема также выводит булев Edge
сигнала, который содержит возрастающие ребра сигнала dm
.
3.2) Синхронизация символа достигает синхронизации символа и создает сигнал часов, синхронизируемый с сигналом WWV. Обратите внимание на то, что синхронизация кадра сделана позже в разделе Decoder. Синхронизация использует Stateflow временная логическая функция. Эта диаграмма Stateflow состоит из трех частей:
SymbolSync - Этот график далее разделен на Синхронизирующее состояние и Диаграммы состояний Блокировки
Тактовая синхронизация
Интегрирование
Ниже показаны Восстановление Синхронизации Символа и Буфер для подсистемы Demod и диаграммы состояний Синхронизации Символа.
3.2.1) SymbolSync выполняет синхронизацию символа. График берет в качестве входа возрастающие ребра (Edge
) сигнала dm
, которые являются приблизительно 100 выборками независимо.
Внутренние параметры этого графика:
N1 - Фактическое количество выборок между двумя ребрами
N1est - Оценка количества выборок между двумя ребрами (начальное значение 100)
Nwin - Окно, в котором можно найти другое ребро после выборок N1est (значение по умолчанию 11 выборок)
Nhalfwin - Половина длины окна (значение по умолчанию 6)
Синхронизирующее состояние - Чтобы запустить синхронизацию, этот график ищет возрастающее ребро, сопровождаемое периодом тишины (никакие ребра) приблизительно для 100 выборок, и затем ищет другое возрастающее ребро в окне, сосредоточенном в той точке. Если график преуспевает в том, чтобы делать это, система утверждает, что синхронизировалась и принимает, что остальная часть символов является допустимыми символами. В противном случае график ожидает такого шаблона, чтобы произойти снова и заставляет ждать, пока это не успешно выполняется:
'Синхронизирующая' диаграмма состояний ожидает ребра и затем ищет тишину (никакое другое ребро) для, по крайней мере, dly = 'N1est - Nhalfwin + 1' выборка.
Если этот график не видит тишины в той длительности (dly выборки) и находит другое ребро, это обрабатывает новое ребро как ссылочное ребро и снова ищет тишину.
Этот график повторяет шаги 1 и 2, пока он не преуспевает в том, чтобы искать тишину для следующих dly выборок после ссылочного ребра.
Если тишина для dly выборок обнаруживается, этот график вычисляет, сколько выборок (cnt) после dly выборки это нашло другим ребром. Если следующее ребро найдено в окне Nwin, оно переходит к состоянию 'Блокировки', чтобы начать получать последующие символы. Если следующее ребро не найдено в рамках выборок окна Nwin, оно отбрасывает ссылочное ребро и начинает искать ссылочное ребро снова, как описано на шагах 1-3.
Состояние блокировки - Когда-то синхронизировалось, этот график ищет следующий символ в окне, сосредоточенном приблизительно на каждых 100 выборках, и остается синхронизируемым, пока это находит символы. Если график не находит символов в течение двух раз подряд (приблизительно 200 выборок), то он больше не синхронизируется и пытается установить синхронизацию снова, как описано выше:
После того, как перешедший в состояние 'Блокировки', этот график принимает, что ребра должны теперь периодически входить (приблизительно каждый выборки N1est).
График обновляет N1 к N1+Nhalfwin-cnt и игнорирует следующий dly = N1-Nhalfwin+1 выборки, и затем ищет следующее ребро в окне выборок Nwin после этого.
Это отслеживает количество выборок в окне (cnt), после которого это нашло следующее ребро. Если это нашло ребро в окне, это снова обновляет N1, как упомянуто выше.
На основе нового cnt значения это вычисляет новый dly и начинает искать новое ребро, как упомянуто выше.
График допускает не находивший ребро в окне Nwin однажды составлять символ MISS, но если это происходит два раза подряд, это выходит из Блокировки, утверждают, и запускает синхронизацию символа снова путем перехода в Синхронизирующее состояние.
3.2.2) Тактовая синхронизация генерирует сигнал часов, когда новое возрастающее ребро сигнала dm
получено. Таким образом, часы синхронизируются с вхождением нового ребра, а не с часами Simulink, запускающимися периодически по фиксированной процентной ставке.
3.2.3) Интегрирование генерирует ступенчатую функцию шаблона с шириной с 17 выборками, чтобы представлять НУЛЕВОЙ символ, когда ребро найдено, это, каждый раз, когда часы сгенерированы. Этот сигнал используется подсистемой AGC.
3.3) Буфер символа для нисходящего Demod буферизует выборки, соответствующие символу, когда это получает сигнал часов (вычисленный выше в 3.2.2).
4) Символ Demod и Кадровый буфер инициированы каждый раз, это получает ненулевой сигнал часов. Это использует блок Vector Quantization, чтобы выполнить демодуляцию символа путем сравнения буфера входа 'Symbols' с четырьмя возможными кандидатами символа (MISS, НУЛЬ, ONE и MARKER). Это выводит символ с лучшим соответствием. Блок Delay Line используется, чтобы буферизовать 60 последовательных символов, чтобы создать 'кадровый буфер WWV'. Синхронизация Кадра Логическая подсистема, предшествующая блоку Delay Line, ищет вхождение последовательного MARKER и символа MISS, начиная с этого шаблона, указывает на запуск нового кадра WWV. Блок Delay Line выводит допустимый буфер только когда этот шаблон в найденном. Последующий декодер IRIG-B также инициирован в тот момент.
Инициированная подсистема Декодера Кадра IRIG-B состоит из блока MATLAB function, который используется, чтобы декодировать кадры символа формата IRIG-B в отдельные элементы временного кода. Эта подсистема инициирована только, когда допустимый кадр WWV принимается.
Переданные символы отображены на Декодируемом осциллографе Символов, и декодируемая информация о временном коде отображена на отображении 'Временного кода' и окне 'WWV time code'. Поля на окне 'WWV time code' представляют светодиоды, которые освещают, когда соответствующий сигнал верен. LED, соответствующий Переходу на летнее время, разделен в две части, где первая часть является 'Индикатором 1 перехода на летнее время', и вторая часть является 'Индикатором 2 перехода на летнее время'. График Дрейфа Часов показывает количество выборок между возрастающими ребрами последовательных символов (symbolClk
), когда они получены. Этот график отличается между 95 и 105 выборками.
dspwwv
в качестве примераМоделируйте модель. Вы будете видеть, что часы дрейфуют, соответствующие символы временного кода BCD и отображенное текущее время (показанный ниже в том порядке.)
Когда параметр времени Отображения устанавливается на 'Текущий', модель продолжает отображать текущее время, которое обновляется один раз в минуту. Можно изменить параметр времени Отображения Переданной подсистемы к 'Пользовательскому' и задать любое время, которое вы хотите отобразить.