Моделирование систем ЦОС
Генерация сигналов и построение спектров
Аналоговые и цифровые сигналы
Сигнал – это физический процесс, несущий в себе информацию.
Например, сигналом может быть зависимость температуры от времени в какой-либо точке, запись электрокардиограммы, речь человека, изображение (изменение цвета и освещенности в пространстве) и т.д.
Обработка сигналов – выполнение действий над сигналом для изменения его характеристик или получения информации.
Цифровая обработка сигналов (ЦОС) – это способ обработки сигналов на основе численных методов с использованием цифровой вычислительной техники.
Различают аналоговые и цифровые сигналы. Аналоговый сигнал является непрерывным. Его значение можно вычислить в любой момент времени. Для того чтобы представить его в цифровом виде, надо осуществить две операции – дискретизацию и квантование. При дискретизации сигнал представляется в виде последовательности отсчетов, взятых в определенные (дискретные) моменты времени. Дискретный сигнал записывается как , где – номер отсчета. Шаг по времени, на котором расположены отсчеты, называется периодом дискретизации . Величина, обратная периоду дискретизации, называется частотой дискретизации :
Квантование – это представление значений сигнала конечным числом уровней.
Цифровой сигнал является квантованным по уровню и дискретным по времени.
В этом разделе мы рассмотрим, как в Engee можно сгенерировать простые сигналы и провести их спектральный анализ.
Обзор блоков Engee – источников сигналов
В Engee имеются следующие блоки, генерирующие сигналы различного типа (они находятся во вкладке Базовые, на палитре Источники):
- Ограниченный полосой белый шум – блок генерирует последовательность нормально распределенных случайных чисел.
- Синусоида с линейно изменяющейся частотой – блок генерирует синусоидальный сигнал, частота которого линейно меняется со временем (чирп-сигнал).
- Часы – блок выводит текущее время симуляции на каждом шаге.
- Константа – блок генерирует действительный или комплексный сигнал, имеющий постоянное значение.
- Автономный счетчик – инкрементный счетчик со сбросом к нулю после достижения максимального значения для указанного количества битов. Блок считает до достижения максимального значения, равного , где — количество битов. Затем счетчик сбрасывается до нуля и начинает отсчет заново.
- Счетчик со сбросом – счетчик со сбросом при достижении верхнего предела. Блок считает до тех пор, пока не будет достигнут указанный верхний предел. Затем счетчик возвращается к нулю и начинает отсчет заново.
- Дискретные часы – блок выводит время симуляции только в моменты времени, кратные заданному интервалу.
- Из рабочей области – загрузка данных из рабочей области в виде сигнала.
- Нулевой сигнал – блок предназначен для соединения с блоками, чьи входные порты никуда не подключены.
- Генератор прямоугольных импульсов – блок генерирует прямоугольные импульсы заданной частоты с регулярными интервалами.
- Линейный сигнал – генератор линейно увеличивающегося или уменьшающегося сигнала. Блок генерирует сигнал, который начинается в указанное время с заданного значения и изменяется с заданной скоростью.
- Генератор случайных чисел – генератор нормально распределенных случайных чисел со средним значением 0 и дисперсией 1.
- Случайный источник – блок генерирует случайный сигнал с равномерным или нормальным псевдослучайным распределением.
- Генератор периодического сигнала – генератор периодического сигнала произвольной формы. Блок генерирует периодический скалярный сигнал, форма которого задается параметрами Значения времени и Выходные значения. Параметр Значения времени задает вектор моментов времени, параметр Выходные значения – вектор амплитуд сигнала в эти моменты.
- Генератор дискретного периодического сигнала – блок выводит и повторяет последовательность значений, заданных параметром Вектор выходных значений.
- Генератор сигнала – блок может генерировать одну из четырех различных форм сигнала: синусоидальная, прямоугольная, пилообразная, случайная.
- Генератор синусоиды – генератор синусоидального сигнала.
- Ступенчатая функция – генератор ступенчатой функции. Блок обеспечивает изменение сигнала между двумя заданными уровнями в заданное время.
- Равномерное случайное число – блок генерирует равномерно распределенные случайные числа в заданном интервале.
Во вкладке Обработка сигналов на палитре Источники также имеются блоки:
- Генератор синусоиды (ЦОС) или DSP Sine Wave – генератор непрерывной или дискретной синусоиды. Блок генерирует многоканальный действительный или комплексный синусоидальный сигнал с независимой амплитудой, частотой и фазой в каждом выходном канале.
- Chirp – генератор косинусоидального сигнала с изменяющейся частотой.
Во вкладке Системы связи на палитре Источники -> Генераторы случайных чисел имеется следующий блок:
- Random Integer Generator – генератор случайных целых чисел, равномерно распределенных в некотором диапазоне.
Спектральный анализ сигнала в Engee
В Engee существует простой способ построить график спектра того или иного сигнала: в окне графиков на панели инструментов нужно нажать на кнопку Меню сигналов и в поле Выбор типа отображения выбрать Сигналы в частотной области. Если после этого запустить модель на выполнение, то в окне графиков построится спектр выбранного вами сигнала.
Если в окне графиков на панели инструментов нажать на кнопку Настройки, то откроется окно настроек графика. Во вкладке Анализ спектра можно настроить параметры встроенного анализатора спектра:
Для построения спектра необходимо, чтобы число отсчетов сигнала было не менее чем 1536. Поэтому необходимо выбирать в модели такие значения времени выборки (в отсчетах в секунду) и времени моделирования (в секундах), чтобы их произведение превышало 1536.
Генерация гауссовского шума
✏️Задание 1
Сгенерируйте последовательность нормально распределенных случайных чисел. Для этого выполните следующие действия:
- Создайте новую модель. Добавьте в модель блок Генератор случайных чисел. В окне настроек блока задайте значения параметра Среднее (среднее значение) равным
0.0, Дисперсия –1.0, Период дискретизации –0.01с. - Добавьте в модель блок Заглушка. Соедините его с выходом блока Генератор случайных чисел. Залогируйте выходной сигнал.
- В окне настроек модели задайте время моделирования равным
20с. - Запустите модель. Постройте график выходного сигнала во временной области.
Решение
Модель:
График шумового сигнала:
Генерация битовой последовательности
✏️Задание 2
Чтобы сгенерировать битовую последовательность (последовательность нулей и единиц), модифицируйте модель из Задания 1:
- Удалите из модели блок Генератор случайных чисел.
- Добавьте в модель блок Random Integer Generator (генератор случайных целых чисел). Соедините выход этого блока со входом блока Заглушка.
- Установите значения параметров блока Random Integer Generator: Sample Time (время выборки) равным
0.01с, Set Size (число различных значений ) равным2. Генерируемые случайные целые числа принимают значения от 0 до , т.е. в нашем случае от 0 до 1. Остальные параметры блока оставьте заданными по умолчанию. - Запустите модель. Постройте график выходного сигнала во временной области.
Решение
Модель:
График битовой последовательности:
Генерация синусоидального сигнала
✏️Задание 3
Сгенерируйте синусоидальный (гармонический) сигнал. Для этого модифицируйте модель из Задания 2:
- Удалите из модели блок Random Integer Generator.
- Добавьте в модель блок Генератор синусоиды. Соедините выход этого блока со входом блока Заглушка.
- В окне настроек блока Генератор синусоиды задайте следующие значения параметров: Период дискретизации равным
0.01с, Угловая частота –2*piрад/с. Остальные параметры оставьте заданными по умолчанию: Смещение (постоянная составляющая колебания) –0.0, Амплитуда –1.0, Фаза (начальная фаза) –0.0рад. - Запустите модель. Постройте график выходного сигнала во временной и в частотной области.
Решение
Модель:
График синусоидального сигнала:
Спектр синусоидального сигнала:
Генерация суммы синусоидальных сигналов
✏️Задание 4
Сгенерируйте сумму синусоидальных сигналов и постройте ее спектр.
- Создайте новую модель. Добавьте в модель два блока Генератор синусоиды.
В окне настроек первого блока задайте значения параметров: Период дискретизации равным0.01с, Угловая частота –2*piрад/с, Амплитуда –1.0. Остальные параметры оставьте заданными по умолчанию. - В окне настроек второго блока задайте значения параметров: Период дискретизации равным
0.01с, Угловая частота –8*piрад/с, Амплитуда –0.5. Остальные параметры оставьте заданными по умолчанию. - Добавьте в модель блок Сложение. Соедините выходы двух генераторов синусоиды со входами блока Сложение.
- Добавьте в модель блок Заглушка и соедините его с выходом блока Сложение. Залогируйте выходной сигнал.
- Задайте время моделирования равным
20с. - Запустите модель. Постройте график выходного сигнала во временной и в частотной области.
Решение
Модель:
График суммы двух синусоид:
Спектр суммы двух синусоид:
Попробуйте увеличить частоту синусоиды во втором блоке Генератор синусоиды до 20*pi рад/с. Посмотрите, как изменится спектр суммарного сигнала.
Генерация синусоиды с линейно изменяющейся частотой
✏️Задание 5
Сгенерируйте синусоиду с линейно изменяющейся частотой с помощью блока Chirp. В течение времени моделирования, равного 10 с, частота колебания должна увеличиваться от 0,1 Гц до 20 Гц.
-
Создайте новую модель. Добавьте в модель блок Chirp из библиотеки Обработка сигналов -> Источники. Задайте следующие значения параметров блока Chirp:
Параметр
Initial frequency (Hz)
(начальная частота)
Target frequency (Hz)
(целевая частота)
Target time (s)
(целевое время изменения частоты)
Sweep time (S)
(время изменения частоты)
Период дискретизации
Значение
0.12010100.001Остальные параметры блока оставьте равными по умолчанию.
-
Добавьте в модель блок Заглушка. Соедините выход блока Chirp со входом блока Заглушка. Залогируйте выходной сигнал.
-
Задайте время моделирования равным
10с. -
Запустите модель. Постройте график выходного сигнала во временной и в частотной области.
Решение
Модель:
График синусоиды с линейно изменяющейся частотой:
Спектр синусоиды с линейно изменяющейся частотой:
Генерация пилообразного и прямоугольного сигналов
✏️Задание 6
Исследуйте возможности блока Генератор сигнала. Сгенерируйте с его помощью пилообразный и прямоугольный сигналы. Постройте графики и спектры этих сигналов.
Модифицируйте модель из Задания 5:
- Удалите из модели блок Chirp.
- Добавьте в модель блок Генератор сигнала. Соедините выход этого блока со входом блока Заглушка.
- В окне настроек блока Генератор сигнала задайте следующие значения параметров: Амплитуда равным
1.0, Частота –10.0рад/с, Форма сигнала –Пилообразная. - Запустите модель. Постройте график получившегося пилообразного сигнала во временной и в частотной области.
- В окне настроек блока Генератор сигнала задайте значение параметра Форма сигнала равным
Прямоугольная. - Снова запустите модель. Постройте график получившегося прямоугольного сигнала во временной и в частотной области.
Решение
Модель:
График пилообразного сигнала:
Спектр пилообразного сигнала:
График прямоугольного сигнала:
Спектр прямоугольного сигнала:
Обработка сигнала по кадрам и отсчетам
Обработака по отсчетам
В случае обработки по отсчетам сигналы обрабатываются по одному элементу данных (по одному значению) за единицу времени. Такая обработка характеризуется обновлением данных на каждом временном шаге, соответствущем периоду дискретизации. Временной шаг равен периоду дискретизации . Частота дискретизации определяется как величина, обратная периоду дискретизации:
Таким образом, данные обновляются и обрабатываются на каждом шаге.
Обработка по отсчетам лучше подходит для систем реального времени, требующих немедленной реакции на каждое новое измерение данных (аудиообработка, мониторинг в режиме реального времени).
По умолчанию Engee обрабатывает все сигналы на основе отсчетов, если не указано иное.
Обработка по кадрам
В случае покадровой обработки сигналы обрабатываются пакетами (кадрами), где каждый кадр содержит несколько элементов данных. Покадровая обработка обновляет данные на каждом временном шаге, равном периоду кадра. Период кадра определяется как произведение числа элементов в кадре на период дискретизации , т.е.
Соответственно, частота кадров равна частоте дискретизации, деленной на число элементов в кадре: . Это позволяет обрабатывать большие объемы данных за один временной шаг.
Покадровая обработка использует возможности матричных вычислений в Engee для снижения вычислительных затрат. Она эффективна для обработки больших объемов данных. Примеры использования: преобразование Фурье, цифровая фильтрация, обработка изображений и видео.
Следующий рисунок демонстрирует пример обработки сигнала по отсчетам и по кадрам.
Блоки Buffer и Unbuffer
Вам может потребоваться организовать сигналы на основе отсчетов в кадры для дальнейшей обработки. Это обычная ситуация для моделирования аналоговых или смешанных сигналов, когда используется аналого-цифровой преобразователь (АЦП), генерирующий дискретные выборки для цифровой обработки. АЦП генерирует по одной выборке за раз, и вам может потребоваться объединить их в кадры для обработки.
Различным частям модели может потребоваться обрабатывать фрагменты данных разной длины. Для этого необходимо изменить размер кадра.
Обе эти операции выполняются с помощью блока Buffer (буфер). Он находится в библиотеке Обработка сигналов -> Управление сигналом -> Буферы.
Блок осуществляет покадровую обработку сигнала. Он перераспределяет данные в каждом столбце входного сигнала для получения выходного сигнала с другим размером кадра. Буферизация сигнала до большего размера кадра приводит к тому, что на выходе получается сигнал с меньшей частотой кадров, чем на входе. Буферизация сигнала до меньшего размера кадра дает на выходе более высокую частоту кадров, чем на входе.
Блок Buffer имеет следующие настраиваемые параметры:
- Output buffer size (per channel) — размер буфера (число отсчетов на кадр), по умолчанию он равен
64, - Buffer overlap — перекрытие буфера,
- Начальные условия – значения, которыми инициализируется блок.
Обратная операция, то есть получение сигнала на основе выборки из сигнала на основе кадров, может быть выполнена с помощью блока Unbuffer из той же библиотеки.
Блок выполняет распаковку входного кадра в последовательность скалярных выходов. Другими словами, он преобразует входной сигнал в выходной сигнал .
Блок Unbuffer не имеет настраиваемых параметров.
✏️Задание 7
Постройте модель, в которой генерируется синусоидальный сигнал, затем буферизуется (размер буфера равен 5 отсчетам) и обратно распаковывается в последовательность отсчетов.
- Создайте новую модель. Добавьте в модель блок Генератор синусоиды (ЦОС). В окне настроек блока задайте значение параметра Период дискретизации равным
0.1, а значение параметра Выборок на кадр (число отсчетов на кадр) –5. Значения остальных параметров оставьте заданными по умолчанию. - Добавьте в модель блок Buffer. В окне настроек блока задайте значение параметра Output buffer size (per channel) (размер буфера) равным
5. - Добавьте в модель блок Unbuffer.
- Добавьте в модель блок Заглушка.
- Последовательно соедините 4 блока в том порядке, в котором вы добавляли их в модель.
- Залогируйте выходы блоков Buffer и Unbuffer.
- В окне настроек модели во вкладке Отладка включите параметры Частота дискретизации сигнала и Выделение цветом.
- Запустите модель. Постройте на одном полотне график сигнала на выходе блока Buffer, а на втором полотне – график сигнала на выходе блока Unbuffer.
Решение
Модель:
График буферизованного сигнала:
График распакованного сигнала:
Анализ результатов работы модели
На первом графике показан результат работы блока Buffer, который принудительно сохраняет заданное количество элементов данных в одном кадре. Каждый кадр содержит 5 элементов данных, представленных цветными линиями на графике. Эти линии отображают состояние каждого элемента в кадре.
Горизонтальные ступенчатые участки линий показывают, что значения элементов данных остаются постоянными в течение каждого кадра. Значения обновляются каждые 0,5 с, что соответствует интервалу обновления кадра (5 элементов данных * 0,1 с/элемент = 0,5 с). Блок Buffer группирует элементы данных по пять штук и отображает их как единый кадр, в котором каждый цвет соответствует определенному элементу данных.
На втором графике показан результат работы блока Unbuffer, который превращает любое количество кадров в отсчеты. Каждый кадр, содержащий пять элементов данных, разбивается на отдельные элементы данных и передается на выход блока Unbuffer по одному. В результате график показывает последовательные элементы данных синусоидального сигнала, возвращенные к исходному дискретному виду.
График имеет ступенчатый вид, поскольку значения элементов данных изменяются каждые 0,1 с. Это соответствует периоду дискретизации, с которым генерируется синусоидальный сигнал.
Тест для получения сертификата
Если вы впервые проходите тестирование на платформе Этюд по ссылке из Engee, то, нажав на ссылку ниже, вы увидите следующее диалоговое окно:
Нажмите на кнопку «Предоставить», чтобы авторизоваться на платформе Этюд с данными вашего профиля Engee ID.
Если вы раньше уже проходили тестирование по ссылке из Engee, то ваша авторизация выполнится автоматически и тестирование начнется сразу же после нажатия на ссылку.