Этот пример показывает реализацию цифрового приемника, который синхронизирует с широковещательной передачей информации о временном коде по радио станцию 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 и отображенное текущее время (показанный ниже в том порядке.)
Когда параметр времени Отображения устанавливается на 'Текущий', модель продолжает отображать текущее время, которое обновляется один раз в минуту. Можно изменить параметр времени Отображения Переданной подсистемы к 'Пользовательскому' и задать любое время, которое вы хотите отобразить.