В этом разделе описываются модель Simulink® системы связи и предназначается, чтобы ознакомить вас с основной функциональностью моделей Simulink.. Модель отображает график рассеивания сигнала с добавленным шумом и выполняет расчеты коэффициента ошибок.
Чтобы открыть модель, сначала запустите MATLAB®. В Окне Команды MATLAB введите doc_commphasenoise
в подсказке. Это открывает модель, показанную здесь в новом окне.
doc_commphasenoise
модель, симулирует эффект шума фазы на квадратурной амплитудной модуляции (QAM) сигнала. Модель Simulink является графическим представлением математической модели системы связи, которая генерирует случайный сигнал, модулирует его с помощью QAM и добавляет шум, чтобы симулировать канал. Модель также содержит компоненты для отображения коэффициента ошибок символа и графика рассеивания модулируемого сигнала.
Блоки и линии в модели Simulink описывают математические отношения среди сигналов и состояний.
Блок Bernoulli Binary Generator, пометил Bernoulli Binary, генерирует сигнал, состоящий из последовательности 8-битных двоичных значений между нулем и 255
Блок Rectangular QAM Modulator Baseband, справа от блока Bernoulli Binary Generator, модулирует сигнал с помощью основополосного 256-ary QAM.
Блок AWGN Channel моделирует шумный канал путем добавления белого Гауссова шума в модулируемый сигнал.
Блок Phase Noise вводит шум в углу его комплексного входного сигнала.
Блок Rectangular QAM Demodulator Baseband, справа от блока Phase Noise, демодулирует сигнал.
Дополнительные блоки в справке модели вы интерпретируете симуляцию.
Блок Constellation Diagram, пометил AWGN plus Phase Noise, отображает график рассеивания сигнала с добавленным шумом.
Блок Error Rate Calculation считает символы, которые отличаются между полученным сигналом и переданным сигналом.
Блок To Workspace, помеченные outputBER выходные параметры результаты к рабочей области, чтобы использовать при графическом выводе результатов.
Display Figur e блок, в ультраправом из окна модели, отображает частоту ошибок по битам (BER), общее количество ошибок и общее количество символов, обработанных во время симуляции.
Все эти блоки включены в Communications Toolbox™. Можно найти более подробную информацию об этих блоках путем щелчка правой кнопкой по блоку и выбора Help из контекстного меню.
Эта модель симулирует квадратурную амплитудную модуляцию (QAM), которая является методом для преобразования цифрового сигнала к комплексному сигналу. Модель модулирует сигнал на последовательность комплексных чисел, которые лежат на решетке точек в комплексной плоскости, названной созвездием сигнала. Созвездие для основополосного 256-ary QAM с показывают в следующем рисунке.
Созвездие для 256-ary QAM
Чтобы запустить симуляцию, нажмите на кнопку Run наверху окна модели. Длительность запуска установлена в inf
, который задан Stop time в диалоговом окне Configuration Parameters. Моделирование конфигурировано в блоке Error Rate Calculation, чтобы запуститься, пока 100 битовых ошибок не происходят. Можно остановить симуляцию в любое время путем выбора Stop из меню Simulation наверху окна модели или путем нажатия кнопки Stop на панели инструментов.
Когда вы запускаете модель, новое окно появляется, отображая график рассеивания модулируемого сигнала с добавленным шумом. Для высокой установки EbN0 нарушение шума фазы очевидно как показано в этом рисунке.
График поля точек сигнала плюс шум
Точки в графике рассеивания не лежат точно на созвездии, показанном на рисунке из-за добавленного шума. Радиальное смещение точек происходит из-за сложения шума фазы, который изменяет угол комплекса модулируемый сигнал.
Блок Display отображает количество ошибок, введенных шумом канала. Когда вы запускаете симуляцию, три маленьких поля появляются в блоке, как показано в следующем рисунке, отображая векторный вывод от блока Error Rate Calculation.
Изображение ниже является представительным примером и не может точно совпадать с результатами, которые вы видите при выполнении в Simulink.
Блок отображает вывод можно следующим образом:
Первая запись является частотой ошибок по битам (BER).
Вторая запись является общим количеством ошибок.
Третья запись является общим количеством сделанных сравнений. Обозначение 8.92e+005
сокращение для 8.92×105.
Можно управлять способом, которым блок Simulink функционирует путем установки его параметров. Чтобы просмотреть или изменить параметры блока, дважды кликните блок. Это открывает диалоговое окно, иногда названное маской блока. Например, диалоговое окно для блока Phase Noise показывают в следующем рисунке.
Диалоговое окно для блока шума фазы
Чтобы изменить сумму шума фазы, щелкните в поле Phase noise level (dBc/Hz) и введите новое значение. Затем нажмите OK.
В качестве альтернативы можно ввести имя переменной, такое как phasenoise
, в поле. Можно затем установить значение для той переменной в Окне Команды MATLAB, например, путем ввода phasenoise = -60
. Установка параметров в Командном окне удобна, если необходимо запустить несколько симуляций с различными значениями параметров.
Можно также изменить количество шума в блоке AWGN Channel. Дважды кликните блок, чтобы открыть его диалоговое окно и изменить значение в поле параметра Eb/No. Это изменяет сигнал в шумовое отношение в дБ. Уменьшение значения Eb/No увеличивает уровень шума.
Можно также использовать функции обратного вызова, чтобы конфигурировать моделирование. Настройка по умолчанию для нескольких параметров в этой модели установлена с помощью функции обратного вызова PreLoadFcn. Чтобы получить доступ к функциям обратного вызова под File, откройте Model Properties, затем выберите вкладку Callbacks.
Для получения дополнительной информации о Model Properties и функциях обратного вызова, смотрите Коллбэки Модели (Simulink).
Можно экспериментировать с моделью путем изменения их или других параметров и затем выполнения симуляции. Например,
Измените Phase noise level (dBc/Hz) в -150
в диалоговом окне для блока Phase Noise.
Измените Eb/No в 100
в диалоговом окне для блока AWGN Channel.
Настройкой по умолчанию на время симуляции является inf
с Error Rate Calculation собирается остановиться, когда 100 ошибок произошли. Путем сокращения шума фазы и увеличения Eb/No, почти весь шум удален из модели. Это будет означать, что симуляция, возможно, должна запуститься в течение долгого времени, прежде чем 100 ошибок происходят. Так, прежде, чем запустить модель почти ни с каким шумом, можно хотеть изменить длительность запуска от inf до меньшего значения, такого как 10
. Когда вы теперь запускаете симуляцию, график рассеивания появляется как в фигуре Созвездие для 256-ary QAM.
Чтобы отобразить фигуру, которая строит результаты симуляции BER по сравнению с кривыми EbNo для области значений настроек шума фазы, дважды кликните блок Display Figure в левой нижней части окна модели.
График BER на различном уровне шума
Каждая кривая является графиком частоты ошибок по битам как функция сигнала к шумовому отношению для установленной суммы шума фазы.
Можно создать графики как это путем выполнения нескольких симуляций с различными значениями для параметров Eb/No и Phase noise level (dBc/Hz). Чтобы сгенерировать график, показанный в этом примере, запустите этот код. Поскольку случайные числа сгенерированы при выполнении симуляции, результаты не могут точно совпадать с результатами, показанными здесь.
%% Plot 256QAM BER vs EbN0dB % Helper script to generate EbN0 vs. BER curves plotting phase % noise performance of 256 QAM for a frequency offset of 1000 Hz. % This script generates the 'Display Figure' for the doc_commphasenoise model. clear; open_system('doc_commphasenoise'); %% % Set the frequency offset to 1000 Hz in the Phase Noise block and % number of bits per symbol to 8 thoughout the model. freqOffset = 1000; Nbps = 8; % Define EbNo and phase noise ranges for simulation and plotting. EbNoRng=(20:0.5:23); PhNoiseRng=-88:3:-76; % Specify the target number of bit errors. tgtMaxErr = 200; %% % Sweep phase noise and EbNo ranges to generate results, then plot. ber = zeros(length(PhNoiseRng),length(EbNoRng)); for ip=1:length(PhNoiseRng) phaseNoise = PhNoiseRng(ip); for ies=1:length(EbNoRng) EbN0 = EbNoRng(ies); sim('doc_commphasenoise') ber(ip,ies) = outputBER(1); end end semilogy(EbNoRng,ber,'*-'); axis([EbNoRng(1) EbNoRng(end) 1e-6 1e-2]) xlabel('EbNo in dB') ylabel('BER') legend([num2str(PhNoiseRng(:)) repmat(' dBc/Hz',[length(PhNoiseRng),1])],'Location','southwest') title(['Performance of 256-QAM for Frequency Offset of ' num2str(freqOffset) ' Hz']) hold off grid on