MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Обработка сигналов и изображений\Communications Toolbox

Очерк А.Б.Сергиенко "Аналоговая модуляция (MATLAB 7)"

При создании систем передачи информации в большинстве случаев оказывается, что спектр исходного сигнала, подлежащего передаче, сосредоточен отнюдь не на тех частотах, которые эффективно пропускает имеющийся канал связи. Кроме того, во многих случаях требуется, чтобы передаваемый сигнал был узкополосным, то есть эффективная ширина его спектра должна быть намного меньше центральной частоты. Перечисленные причины приводят к необходимости такой трансформации исходного сигнала, чтобы требования, предъявляемые к занимаемой сигналом полосе частот, были выполнены, а сам исходный сигнал можно было восстановить.

Решение указанной проблемы достигается путем использования модуляции, сущность которой заключается в следующем. Формируется некоторое колебание (чаще всего гармоническое), называемое несущим колебанием или просто несущей, и какой-либо из параметров этого колебания изменяется во времени пропорционально исходному сигналу. Исходный сигнал называют модулирующим, а результирующее колебание с изменяющимися во времени параметрами - модулированным сигналом. Обратный процесс - выделение модулирующего сигнала из модулированного колебания - называется демодуляцией.

У гармонического несущего колебания s(t) = A cos(ω0t + φ0) есть три параметра: амплитуда A, частота ω0 и начальная фаза φ0. Каждый из них можно связать с модулирующим сигналом, получив таким образом три основных вида аналоговой модуляции: амплитудную, частотную и фазовую. Частотная и фазовая модуляция очень тесно взаимосвязаны, поскольку обе они влияют на аргумент функции cos. Поэтому эти два вида модуляции имеют общее название - угловая модуляция. Используется также квадратурная модуляция, при которой одновременно изменяются амплитуда и фаза сигнала.

Амплитудная модуляция

При амплитудной модуляции (АМ) в соответствии с модулирующим сигналом изменяется амплитуда несущего колебания:

sAM(t) = (A0 + ksM(t)) cos(ω0t + φ0).

Постоянная составляющая A0 добавляется к модулирующему сигналу для того, чтобы обеспечить неотрицательность амплитуды. Множитель k - коэффициент пропорциональности между модулирующим сигналом и вариациями амплитуды. Таким образом, огибающая АМ-сигнала имеет вид

A(t) = A0 + ksM(t).

При амплитудной модуляции спектр огибающей сдвигается в область несущей частоты ±ω0, "раздваиваясь" и уменьшаясь в два раза по уровню:

.

По этой причине ширина спектра АМ-сигнала оказывается в два раза больше, чем у модулирующего сигнала.

В общем случае спектр АМ-сигнала содержит несущую частоту (уровень которой определяется постоянной составляющей огибающей), а также верхнюю и нижнюю боковые полосы.

Пример

Для примеров реализации АМ и ее рассматриваемых далее разновидностей будем использовать модулирующий сигнал длительностью 2 с, мгновенная частота которого линейно изменяется от нуля до 1 кГц (ЛЧМ-сигнал). Такой сигнал генерируется функцией chirp пакета Signal Processing:

>> Fs = 8e3; % частота дискретизации
>> T = 2; % длительность сигнала
>> t = 0:1/Fs:T;% вектор значений времени
>> f0 = 0;% начальнаЯ частота
>> f1 = 1e3; % конечнаЯ частота
>> s_M=chirp(t, f0, T, f1); % ЛЧМ-сигнал

Построим график начального фрагмента этого сигнала (при попытке изобразить весь сигнал точки на графике просто сольются - в сигнале содержится слишком много колебаний). Мгновенная частота такого сигнала меняется достаточно медленно, что позволяет хорошо отслеживать эти изменения на спектрограмме (для построения спектрограммы используется функция specgram пакета Signal Processing):

>> plot(t(1:2000), s_M(1:2000))
>> figure
>> specgram(s_M, [], Fs)

Амплитудная модуляция осуществляется функцией ammod пакета Communications. Необязательные параметры ini_phase и carramp задают соответственно начальную фазу несущего колебания и амплитуду несущего колебания (то есть постоянную составляющую, добавляемую к модулирующему сигналу перед умножением его на несущее колебание). По умолчанию значение параметра carramp, в отличие от того, что было в устаревших функциях amod и amodce, равно нулю, поэтому амплитуду несущего колебания всегда необходимо задавать принудительно.

Реализуем амплитудную модуляцию для сформированного ранее модулирующего ЛЧМ-сигнала. Значение несущей частоты выберем равным 2 кГц и используем минимально возможное значение амплитуды несущего колебания, рассчитав его как max(abs(s_M)). Построим график начального фрагмента полученного АМ-сигнала и спектрограмму этого сигнала:

>> Fc = 2e3; % несущая частота
>> s_AM = ammod(s_M, Fc, Fs, [], max(abs(s_M)));
>> figure
>> plot(t(1:2000), s_AM(1:2000))
>> figure
>> specgram(s_AM, 256, Fs)

На спектрограмме хорошо видны несущее колебание (горизонтальная линия) и две боковые полосы (наклонные линии, отслеживающие медленно меняющуюся мгновенную частоту модулирующего ЛЧМ-сигнала).

АМ с подавленной несущей

При использовании АМ с подавленной несущей к модулирующему сигналу не добавляется постоянная составляющая:

sAM-ПН(t) = ksM(t) cos(ω0t + φ0).

Если модулирующий сигнал является знакопеременным, множитель перед функцией cos может становиться отрицательным (это называется перемодуляцией). В моменты смены знака модулирующего сигнала фаза АМ-сигнала с подавленной несущей претерпевает скачки на 180°.

Ширина спектра АМ-сигнала с подавленной несущей, как и в случае обычной АМ, в два раза больше, чем у модулирующего сигнала.

Несущая частота будет действительно подавлена только в том случае, если модулирующий сигнал не имеет постоянной составляющей. Тогда спектр АМ-сигнала с подавленной несущей будет содержать только верхнюю и нижнюю боковые полосы.

Пример

АМ с подавленной несущей осуществляется функцией ammod пакета Communications по умолчанию, то есть при отсутствии входного параметра carramp (его значение по умолчанию равно нулю).

Реализуем АМ с подавленной несущей для сформированного ранее модулирующего ЛЧМ-сигнала. Построим график начального фрагмента полученного сигнала и спектрограмму этого сигнала:

>> s_AM_SC = ammod(s_M, Fc, Fs);
>> figure
>> plot(t(1:2000), s_AM_SC(1:2000))
>> figure
>> specgram(s_AM_SC, 256, Fs)

При сравнении спектрограмм обычной АМ и АМ с подавленной несущей хорошо видно, что различие состоит только в отсутствии несущего колебания во втором случае.

Однополосная модуляция

Рассмотренная в предыдущем разделе двухполосная АМ с подавленной несущей имеет преимущества перед обычной АМ только в энергетическом плане - за счет устранения несущего колебания. Ширина спектра при этом по-прежнему вдвое больше, чем у модулирующего сигнала. Однако спектры двух боковых полос АМ-сигнала являются зеркальным отражением друг друга, то есть они несут одну и ту же информацию. Поэтому одну из боковых полос можно удалить. Получающаяся модуляция называется однополосной (английский термин - Single Side Band, SSB).

В зависимости от того, какая боковая полоса сохраняется, говорят об однополосной модуляции с использованием верхней или нижней боковой полосы. Формирование однополосного сигнала проще всего пояснить, приведя несколько спектральных графиков:

Рис. 1. Однополосная модуляция: а - спектр модулирующего сигнала, б - спектр однополосного сигнала с верхней боковой полосой, в - то же с нижней боковой полосой

По сути дела при однополосной модуляции происходит просто сдвиг спектра сигнала в окрестности частоты несущего колебания. В отличие от АМ, каждая <половинка> спектра смещается в своем направлении: область положительных частот - к +ω0, а область отрицательных частот - к -ω0. При формировании сигнала с нижней боковой полосой спектр модулирующего сигнала инвертируется (зеркально переворачивается вдоль оси частот).

Очевидно, что ширина спектра однополосного сигнала равна ширине спектра модулирующего сигнала. Таким образом, спектр однополосного сигнала оказывается в два раза уже, чем при обычной АМ.

В отличие от предыдущих случаев, здесь нельзя простыми средствами выразить связь между модулированным и модулирующим сигналами. Чтобы сделать это, придется воспользоваться преобразованием Гильберта и понятием аналитического сигнала.

Итак, прежде всего мы формируем из модулирующего сигнала аналитический сигнал, имеющий односторонний спектр. Умножение этого сигнала на exp(-jw0t) сдвигает его односторонний спектр на ω0 вправо (вверх по частоте), формируя односторонний спектр однополосного сигнала с верхней боковой полосой. Наконец, чтобы перейти от аналитического сигнала обратно к вещественному, нужно взять вещественную часть. Формирование сигнала с нижней боковой полосой описывается аналогично, только умножать аналитический сигнал нужно на exp(jω0t) (тогда его спектр сдвинется влево, в область отрицательных частот, и займет положение нижней боковой полосы). Запишем все сказанное математически:

sSSB(t) = Re((x(t) + jx^(t)) exp(mjω0t)) =
x(t) cos ω0t + x^(t) sin ω0t.

Знак "плюс" в окончательной формуле соответствует выделению верхней боковой полосы, "минус" - нижней.

Итак, однополосный сигнал можно представить как сумму двух АМ-сигналов, несущие колебания которых имеют одну и ту же частоту, но сдвинуты по фазе друг относительно друга на 90°. Амплитудными функциями этих АМ-сигналов являются модулирующий сигнал и его квадратурное дополнение. В зависимости от того, складываются эти два АМ-сигнала или вычитаются (а точнее, какая из двух несущих опережает другую по фазе), формируется однополосный сигнал с верхней или нижней боковой полосой.

Пример

АМ с подавленной несущей осуществляется функцией ssbmod пакета Communications. При этом используется формирование сигнала с помощью преобразования Гильберта, выполняемого в частотной области с использованием функции hilbert пакета Signal Processing.

По умолчанию функция ssbmod формирует сигнал с нижней боковой полосой. Для формирования сигнала с верхней боковой полосой необходимо указать дополнительный параметр - строку 'upper'. Перед этим параметром следует еще один необязательный параметр - начальная фаза несущего колебания ini_phase. Поэтому значение этой фазы при формировании сигнала с верхней боковой полосой необходимо обязательно задать - хотя бы в виде пустой матрицы (для использования значения по умолчанию, равного нулю).

Реализуем однополосную модуляцию для сформированного ранее модулирующего ЛЧМ-сигнала. Создадим однополосные сигналы с нижней и верхней боковой полосой и построим их спектрограммы:

>> s_SSB_LOW = ssbmod(s_M, Fc, Fs);
>> s_SSB_HI = ssbmod(s_M, Fc, Fs, [], 'upper');
>> figure
>> specgram(s_SSB_LOW, [], Fs)
>> figure
>> specgram(s_SSB_HI, [], Fs)

На спектрограммах однополосного сигнала хорошо видно отсутствие одной из боковых полос; правда, наблюдаются и неподавленные остатки несущего колебания.

Квадратурная модуляция

Сигнал с квадратурной модуляцией (КАМ) представляет собой сумму двух несущих колебаний одной и той же частоты, сдвинутых по фазе друг относительно друга на 90°, каждая из которых модулирована по амплитуде своим модулирующим сигналом:

sКАМ(t) = a(t) cos(ω0t) + b(t) sin(ω0t).

Косинусная составляющая называется синфазной, синусная - квадратурной.

Сигнал с КАМ можно представить в следующем виде:

.

Таким образом, у КАМ-сигнала зависят от времени и амплитуда, и начальная фаза.

Спектр КАМ-сигнала можно записать следующим образом:

.

Аналогично тому, что происходит при амплитудной модуляции, спектры модулирующих сигналов "раздваиваются" и "переезжают" в окрестности несущей частоты ±ω0. Если спектры модулирующих сигналов a(t) и b(t) занимают одну и ту же полосу частот (как обычно и бывает), то они будут перекрываться и после сдвига в область несущей частоты. Однако при этом спектр, соответствующий синусной несущей, дополнительно умножается на ±j. Именно это дает возможность разделить квадратурные составляющие при приеме сигнала.

Пример

Среди новых функций модуляции пакета Communications нет функции для осуществления аналоговой квадратурной модуляции. Однако реализовать такую модуляцию можно, сформировав и сложив два АМ-сигнала с фазами несущих колебаний, отличающимися на 90°.

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

>> Fs = 16e3;% частота дискретизации
>> T = 2; % длительность сигнала
>> t = 0:1/Fs:T;% вектор значений времени
>> F_a = 200;% частота синфазного модулирующего сигнала
>> F_b = 500;% частота квадратурного модулирующего сигнала
>> s_M_a = cos(2*pi*F_a*t); % синфазный модулирующий сигнал
>> s_M_b = cos(2*pi*F_b*t); % квадратурный модулирующий сигнал
>> Fc = 2e3; % несущая частота
>> s_AM_a = ammod(s_M_a, Fc, Fs, 0); % канал A - начальная фаза равна нулю
>> s_AM_b = ammod(s_M_b, Fc, Fs, pi/2); % канал B - начальная фаза равна pi/2
>> s_QAM = s_AM_a + s_AM_b; % КАМ-сигнал
>> figure
>> subplot(1, 2, 1)
>> plot(t(1:200), s_QAM(1:200))% график сигнала
>> hold on
>> A_m = abs(complex(s_M_a, s_M_b)); % огибающая
>> plot(t(1:200), A_m(1:200), 'r-') % график верхней огибающей
>> plot(t(1:200), -A_m(1:200), 'r-') % график нижней огибающей
% >> ylim([-1.1 1.1])
>> hold off
>> N = floor(length(t)/2);
>> f = (0:N)/length(t) * Fs; % вектор значений частот для графиков
>> spec_QAM = fft(s_QAM); % расчет спектра
>> subplot(1, 2, 2)
>> plot(f, abs(spec_QAM(1:N+1))) % график спектра

График КАМ-сигнала (слева) показывает, что огибающая действительно представляет собой корень из суммы квадратов модулирующих сигналов. На графике спектра (справа) видно, что в спектре действительно содержатся боковые частоты от обоих модулирующих сигналов, имеющие частоты 2000 ± 200 Гц и 2000 ± 500 Гц.

Демодуляция сигналов с амплитудной модуляцией

Демодуляция сигналов с аналоговой модуляцией производится функциями amdemod (двухполосная АМ, в том числе с подавленной несущей) и ssbdemod (однополосная АМ) пакета Communications.

Демодуляция сигналов со всеми разновидностями амплитудной модуляции выполняется указанными функциями одинаково - путем умножения модулированного сигнала на гармоническое несущее колебание. Результат такого умножения содержит две составляющих - низкочастотную, пропорциональную модулирующему сигналу, и высокочастотную, представляющую собой модулированный сигнал с удвоенной частотой несущего колебания. Затем полезная составляющая выделяется с помощью фильтра нижних частот (по умолчанию используется фильтр Баттерворта 5-го порядка с частотой среза, равной несущей частоте модулированного сигнала).

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

Демодуляцию сигнала с квадратурной модуляцией можно выполнить, два раза вызвав функцию amdemod и указав при этом различающиеся на 90° значения начальной фазы несущего колебания. Они должны совпадать со значениями начальной фазы, использованными в процессе модуляции.

Угловая модуляция

Как уже говорилось, фазовая и частотная модуляция тесно взаимосвязаны и вместе называются угловой модуляцией. Сигнал с угловой модуляцией имеет вид колебания, начальная фаза которого зависит от времени:

sУМ(t) = A0 cos(ω0 + φ(t)).

Различие между фазовой и частотной модуляцией заключается лишь в том, как именно начальная фаза j(t) связана с модулирующим сигналом.

При фазовой модуляции (ФМ) начальная фаза колебания прямо пропорциональна модулирующему сигналу:

φ(t) = ksM(t).

Сам сигнал с фазовой модуляцией, таким образом, имеет вид

sФМ(t) = A0 cos(ω0t + ksM(t)).

Для сигналов с угловой модуляцией вводится понятие мгновенной частоты, определяемой как производная от полной фазы (то есть всего аргумента косинуса):

.

При частотной модуляции (ЧМ) мгновенная частота связана с модулирующим сигналом линейным соотношением:

ω(t) = ω0 + ksM(t).

Сам сигнал с частотной модуляцией записывается так:

.

Итак, в случае сигнала с угловой модуляцией любого типа от времени зависят и начальная фаза, и мгновенная частота, а полная фаза является нелинейной функцией времени. Формулы, показывающие зависимость этих параметров от времени для фазовой и частотной модуляции, приведены в следующей таблице.

Параметр

ФМ

ЧМ

Начальная фаза

&966;(t) = ksM(t)

Полная фаза

ω0t + ksM(t)

Мгновенная частота

ω(t) = ω0 + ksM(t)

При произвольном модулирующем сигнале спектр сигнала с угловой модуляцией не удается рассчитать аналитически. Проанализируем спектр сигнала с угловой модуляцией для случая гармонического модулирующего сигнала:

s(t) = A0 cos(ω0 t + β sin(Ωt)).

Параметр β называется индексом угловой модуляции. Мгновенная частота такого сигнала меняется по закону

ω(t) = ω0 + βΩ cos(Ωt).

Максимальное отклонение мгновенной частоты от значения ω0 называется девиацией частоты и обозначается Δω:

Δω = βω, .

Сигнал с гармонической угловой модуляцией можно представить в виде ряда:

.

Здесь Jk(β) - функция Бесселя порядка k от аргумента β. Таким образом, спектр сигнала с угловой модуляцией содержит бесконечное количество составляющих. Однако при фиксированной величине аргумента значения функций Бесселя с ростом порядка убывают по абсолютной величине. Если β >> 1 (при этом Δω >> Ω и угловую модуляцию называют широкополосной), то можно пренебречь составляющими с номерами |k| > b. Эффективная ширина спектра сигнала с широкополосной угловой модуляцией, таким образом, равна 2βΩ = Δω, то есть равна удвоенной девиации частоты.

Если β << 1 (при этом Δω << Ω и угловую модуляцию называют узкополосной), то можно приближенно считать, что в спектре сигнала с угловой модуляцией присутствуют только компоненты с k = -1, 0 и 1. Эффективная ширина спектра сигнала с узкополосной угловой модуляцией, таким образом, равна 2Ω, то есть удвоенной частоте модулирующего сигнала.

Пример

Угловая модуляция осуществляется функциями pmmod (фазовая модуляция) и fmmod (частотная модуляция) пакета Communications. Сигнал с ФМ формируется согласно приведенной выше формуле, для формирования сигнала с ЧМ вектор модулирующего сигнала приближенно интегрируется с помощью функции cumsum (фактически это соответствует численному интегрированию методом прямоугольников). Необязательные параметры phasedev (при ФМ) и freqdev (при ЧМ) соответствуют коэффициенту k в приведенных выше формулах - на них умножается модулирующий сигнал перед выполнением собственно модуляции.

В качестве примера сформируем два сигнала с гармонической угловой модуляцией при разных индексах модуляции и построим графики сигналов и их спектров.

>> Fs = 8e3; % частота дискретизации
>> T = 2; % длительность сигнала
>> t = 0:1/Fs:T;% вектор значений времени
>> F = 100; % частота модулирующего сигнала
>> s_M = cos(2*pi*F*t); % гармонический модулирующий сигнал
>> Fc = 2e3; % несущая частота
>> s_PM_1 = pmmod(s_M, Fc, Fs, 0.1); % узкополосный сигнал
>> s_PM_2 = pmmod(s_M, Fc, Fs, 10); % широкополосный сигнал
>> figure
>> subplot(1, 2, 1)
>> plot(t(1:200), s_PM_1(1:200))
>> ylim([-1.1 1.1])
>> title('\beta=0.1')
>> subplot(1, 2, 2)
>> plot(t(1:200), s_PM_2(1:200))
>> ylim([-1.1 1.1])
>> title('\beta=10')

Как видите, на графике узкополосного УМ-сигнала (β = 0,1, слева) отклонения начальной фазы визуально не заметны, а на графике широкополосного сигнала (β = 10, справа) они хорошо видны. Неравномерность амплитуды возникает из-за дискретного характера расчета - дискретные значения времени попадают не во все максимумы сигнала.

Теперь строим графики спектров:

>> N = floor(length(t)/2);
>> f = (0:N)/length(t) * Fs; % вектор значений частот для графиков
>> spec_PM_1 = fft(s_PM_1); % расчет спектров
>> spec_PM_2 = fft(s_PM_2);
>> figure
>> subplot(1, 2, 1)
>> plot(f, abs(spec_PM_1(1:N+1)))
>> title('\beta=0.1')
>> subplot(1, 2, 2)
>> plot(f, abs(spec_PM_2(1:N+1)))
>> title('\beta=10')

Графики показывают, что спектр узкополосного сигнала (слева) действительно можно считать содержащим лишь три составляющих. В широкополосном случае (справа) ширина спектра примерно равна удвоенной девиации частоты, то есть 2βF = 2´10´100 Гц = 2 кГц.

Демодуляция сигналов с угловой модуляцией

Демодуляция сигналов с угловой модуляцией производится функциями pmdemod (фазовая модуляция) и fmdemod (частотная модуляция) пакета Communications.

Для демодуляции в обоих случаях используется формирование комплексного аналитического сигнала с помощью функции hilbert пакета Signal Processing. Затем аналитический сигнал умножается на комплексную экспоненту с частотой несущего колебания - таким образом формируется комплексная огибающая сигнала. Далее вычисляется фаза полученной комплексной огибающей с помощью функций angle и unwrap. В случае ФМ эта фаза и является результатом демодуляции, при ЧМ для формирования выходного сигнала производится приближенное дифференцирование фазы с помощью функции diff. В заключение выходной сигнал делится на константы, задающие интенсивность модуляции - phasedev при ФМ или freqdev при ЧМ.


Поиск по сайту:

Система Orphus

Яндекс.Метрика