exponenta event banner

Модуляция одной боковой полосы через преобразование Гильберта

В этом примере показано, как использовать дискретное преобразование Гильберта для реализации модуляции одной боковой полосы.

Преобразование Гильберта находит применение в модуляторах и демодуляторах, обработке речи, медицинской визуализации, измерениях направления поступления (DOA), по существу, где-либо комплексно-сигнальная (квадратурная) обработка упрощает конструкцию.

Введение

Модуляция одной боковой полосы (SSB) является эффективной формой амплитудной модуляции (AM), которая использует половину полосы пропускания, используемой AM. Этот метод наиболее популярен в таких приложениях, как телефония, радио HAM и связь HF, т.е. связь на основе речи. В этом примере показано, как реализовать модуляцию SSB с использованием трансформатора Гильберта.

Чтобы мотивировать необходимость использования трансформатора Гильберта в модуляции SSB, полезно сначала быстро просмотреть модуляцию двойной боковой полосы.

Двухсторонняя модуляция

Простой формой AM является модуляция двойной боковой полосы (DSB), которая обычно состоит из двух сдвинутых по частоте копий модулированного сигнала на каждой стороне несущей частоты. Более точно это называется несущей, подавленной DSB, и определяется как

f (n) = m (n) cos (2āf0n/fs)

где m (n) обычно называют сигналом сообщения, а f 0 - несущей частотой. Как показано в уравнении выше, модуляция DSB состоит из умножения сигнала сообщения m (n) на несущую cos (2securityf0n/fs), поэтому мы можем использовать теорему модуляции преобразований Фурье для вычисления преобразования f (n)

F (f) = 12 [M (f-f0) + M (f + f0)]

где M (f) - дискретное временное преобразование Фурье (DTFT) m (n). Если сигнал сообщения является низкочастотным с полосой пропускания W, то F (f) является полосовым сигналом с удвоенной полосой пропускания. Рассмотрим пример DSB-сигнала и его спектр.

% Define and plot a message signal which contains three tones at 500, 600,
% and 700 Hz with varying amplitudes.
Fs = 10e3;
t = 0:1/Fs:0.1-1/Fs;
m = sin(2*pi*500*t) + 0.5*sin(2*pi*600*t) + 2*sin(2*pi*700*t);
plot(t,m)

grid
xlabel('Time')
ylabel('Amplitude')
title('Message Signal m(n)')

Figure contains an axes. The axes with title Message Signal m(n) contains an object of type line.

Ниже мы вычисляем и строим график спектра мощности сигнала сообщения.

periodogram(m,[],4096,Fs,'power','centered')
ylim([-75 12])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

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

xlim([0.1 1])
ylim([-18 2])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Мощность для тонального сигнала 500 Гц составляет приблизительно -6 дБ, для тонального сигнала 600 Гц - -12 дБ, а для тонального сигнала 700 Гц - 0 дБ, что соответствует амплитудам тонального сигнала сообщения 1, 0,5 и 2 соответственно.

Используя этот сигнал сообщения m (n), давайте умножим его на несущую, чтобы создать сигнал DSB, и посмотрим на его спектр .

fo = 3.5e3; % Carrier frequency in Hz
f = m.*cos(2*pi*fo*t);
idx = 100;
plot(t(1:idx),f(1:idx),t(1:idx),m(1:idx),':')
grid

xlabel('Time')
ylabel('Amplitude')
title('Message Signal and Message Signal Modulated')
legend('Modulated Message Signal','Message Signal m(n)')

Figure contains an axes. The axes with title Message Signal and Message Signal Modulated contains 2 objects of type line. These objects represent Modulated Message Signal, Message Signal m(n).

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

periodogram(f,[],4096,Fs,'power','centered')
ylim([-75 0])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Мы видим, что сигнал сообщения (три тона) был сдвинут на центральную частоту f0. Кроме того, мощность каждого компонента была уменьшена до одной четверти из-за уменьшения амплитуд вдвое, как показано DTFT модулированного m (n). Давайте увеличим изображение, чтобы прочитать новые значения мощности

ylim([-20 0])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Наши положительные частотные компоненты теперь находятся на уровне -6 дБ, -18 дБ и -12 дБ.

Теперь, когда мы определили модуляцию DSB, давайте рассмотрим модуляцию одной боковой полосы.

Модуляция одной боковой полосы

Модуляция одной боковой полосы (SSB) аналогична модуляции DSB, но вместо использования всего спектра она использует фильтр для выбора нижней или верхней боковой полосы. Выбор нижней или верхней боковой полосы приводит к модуляции нижней боковой полосы (LSB) или верхней боковой полосы (USB) соответственно. Существует два подхода к устранению одной из боковых полос, один из которых является методом фильтрации, а другой - методом фазирования. Процесс селективной фильтрации верхней или нижней боковой полосы затруднен из-за требуемых жестких фильтров, особенно если содержание сигнала близко к постоянному току. В этом примере показано, как использовать метод фазирования, который использует трансформатор Гильберта для реализации модуляции SSB.

Модуляция SSB требует сдвига сигнала сообщения на другую центральную частоту без создания пар частотных составляющих X (f-f0) и X (f + f0), как в случае модуляции DSB, т.е. без необходимости фильтрации верхней или нижней боковой полосы. Это можно сделать с помощью трансформатора Гильберта.

Давайте сначала рассмотрим определение и свойства идеального преобразования Гильберта, прежде чем обсуждать его использование в модуляции SSB. Это поможет мотивировать его использование в модуляции SSB.

Идеальное преобразование Гильберта

Дискретное преобразование Гильберта - это процесс, с помощью которого отрицательные частоты сигнала увеличиваются по фазе на 90 градусов, а положительные частоты задерживаются по фазе на 90 градусов. Смещение результатов преобразования Гильберта (+ j) и добавление его к исходному сигналу создает сложный сигнал, как мы увидим ниже.

Если mi (n) является преобразованием Гильберта mr (n), то:

mc (n) = mr (n) + jmi (n)

- комплексный сигнал, известный как Аналитический сигнал. На диаграмме ниже показана генерация аналитического сигнала посредством идеального преобразования Гильберта.

Одной из важных характеристик аналитического сигнала является то, что его спектральное содержание лежит в положительном интервале Найквиста. Это потому, что если мы сдвинем мнимую часть нашего аналитического (комплексного) сигнала на 90 градусов (+ j) и добавим его в действительную часть, отрицательные частоты будут отменяться, а положительные - прибавляться. Кроме того, величина частотной составляющей в комплексном сигнале вдвое превышает величину частотной составляющей в реальном сигнале. Это аналогично одностороннему спектру, который содержит суммарную мощность сигнала в положительных частотах.

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

Спектральный сдвиг

Используя сигнал m (n) сообщения, определенный выше, мы создадим аналитический сигнал, используя преобразование Гильберта, которое затем будет модулировано до требуемой центральной частоты. Схема показана на схеме ниже.

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

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

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

mc = hilbert(m);

Мы также можем вычислить и построить график спектрального содержания аналитического сигнала, построенного из нашего сигнала m (n) сообщения.

periodogram(mc,[],4096,Fs,'power','centered')
ylim([-75 6])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

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

xlim([0.1 1])
ylim([-10 6])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Мы видим, что мощность частотных составляющих аналитического (комплексного) сигнала 500 Гц, 600 Гц и 700 Гц приблизительно равна 0, -6 дБ и 6 дБ соответственно, что является суммарной мощностью исходного сигнала. Эти значения соответствуют нашему исходному реальному сигналу, который имеет три тона с амплитудами 1, 0,5 и 2 соответственно.

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

Чтобы модулировать сигнал до несущей частоты f0, мы умножим аналитический сигнал на экспоненциальный.

mcm = mc.*exp(1i*2*pi*fo*t);

Как показано на диаграмме спектрального сдвига, после модуляции нашего сигнала мы вычисляем действительную часть.

periodogram(real(mcm),[],4096,Fs,'power','centered')
ylim([-75 0])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

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

Если сравнить приведенный выше спектральный график с графиком модуляции DSB, можно увидеть, что спектральный сдвиг выполнил модуляцию SSB.

Эффективная реализация модуляции SSB

Из нашего предыдущего вывода можно видеть, что сигнал, модулированный SSB, f (n) может быть записан как

f (n) =ℜ[mc (n) exp (j2āf0n/fs)]

где mc (n) - аналитический сигнал, определенный как

mc (n) = m (n) +jm∼ (n)

Расширяя это уравнение и принимая реальную часть мы получаем

f (n) = [m (n) cos (2āf0n/fs) - m∼ (n) sin (2āf0n/fs)]

в результате получается одна боковая полоса, верхняя боковая полоса (SSBU). Аналогично, мы можем определить нижнюю боковую полосу SSB (SSBL) по

f (n) =ℜ[mc (n) exp (-j2āf0n/fs)]

f (n) = [m (n) cos (2āf0n/fs) +m∼ (n) sin (2āf0n/fs)]

Приведенное выше уравнение SSBU предлагает более эффективный способ реализации SSB. Вместо выполнения комплексного умножения mc (n) с exp (j2āf0n/fs), а затем отбрасывания мнимой части, мы можем вычислить только необходимые величины, внедрив SSBU, как показано ниже.

Для реализации модуляции SSB, показанной выше, нам необходимо вычислить преобразование Гильберта нашего сигнала сообщения m (n) и модулировать оба сигнала. Но прежде, чем мы сделаем это, мы должны указать на тот факт, что идеальные трансформаторы Гильберта не реализуемы. Тем не менее, были разработаны алгоритмы, аппроксимирующие трансформатор Гильберта, такие как технология конструирования FIR-фильтра Паркса-Макклеллана, которые могут быть использованы. Toolbox™ обработки сигналов обеспечивает firpm функция, которая проектирует такие фильтры. Кроме того, поскольку фильтр вводит задержку, нам нужно компенсировать эту задержку, добавляя задержку (N/2, где N - порядок фильтрации) к сигналу, который умножается на член косинуса, как показано ниже.

Для FIR Hilbert трансформатора мы будем использовать фильтр нечетной длины, который вычислительно более эффективен, чем фильтр четной длины. Хотя даже фильтры длины имеют меньшие погрешности полосы пропускания. Экономия фильтров нечетной длины является результатом того, что эти фильтры имеют несколько коэффициентов, которые равны нулю. Кроме того, использование фильтра нечетной длины потребует сдвига на целочисленную временную задержку, в отличие от дробной временной задержки, которая требуется фильтру четной длины. Для фильтра нечётной длины отклик величины трансформатора Гильберта равен нулю для w = 0 и w = δ. Для фильтров четной длины отклик величины не обязательно должен быть 0 при δ, поэтому они имеют увеличенные полосы пропускания. Таким образом, для фильтров нечетной длины полезная полоса пропускания ограничена

0 < w < δ

Давайте сконструируем фильтр и построим график его нулевого отклика.

Hd = designfilt('hilbertfir','FilterOrder',60, ...
    'TransitionWidth',0.1,'DesignMethod','equiripple');

hfv = fvtool(Hd,'MagnitudeDisplay','Zero-phase', ...
    'FrequencyRange','[-pi, pi)');
hfv.Color = 'white';

Figure Filter Visualization Tool - Zero-phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Zero-phase Response contains 2 objects of type line.

Для аппроксимации преобразования Гильберта мы будем фильтровать сигнал сообщения с помощью фильтра.

m_tilde = filter(Hd,m);

Сигнал верхней боковой полосы затем

G = filtord(Hd)/2;   % Filter delay
m_delayed = [zeros(1,G),m(1:end-G)];
f = m_delayed.*cos(2*pi*fo*t) - m_tilde.*sin(2*pi*fo*t);

и спектр равен

periodogram(f,[],4096,Fs,'power','centered')
ylim([-75 0])

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Как видно на графике выше, мы успешно модулировали сигнал сообщения (три тона) до несущей частоты 3,5 кГц и поддерживали только верхнюю боковую полосу.

Резюме

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

См. также

| |