Цель системы радиосвязи состоит в том, чтобы служить как можно большему числу пользователей с максимально возможной скоростью передачи данных, заданной ограничениями, такими как предел степени излучения и рабочий бюджет. Чтобы улучшить скорость передачи данных, ключ состоит в том, чтобы улучшить отношение сигнал/шум (ОСШ). Чтобы обслуживать больше пользователей, ключ состоит в том, чтобы повторно использовать ресурсы. За последние несколько десятилетий были приняты многочисленные алгоритмы, чтобы улучшить ОСШ и повторно использовать ресурсы во времени, частоте и пространствах кодирования. Этот пример показывает, как принятие антенных решеток может помочь улучшить ОСШ и пропускную способность беспроводной ссылки.
Антенные решетки стали частью стандартного строения во 5G системах радиосвязи. Поскольку в антенной решетке имеется несколько элементов, такие беспроводные коммуникационные системы часто называются системами с несколькими входами и множеством выходов (MIMO). Антенные решетки могут помочь улучшить ОСШ, исследуя избыточность по нескольким каналам передачи и приема. Они также позволяют повторно использовать пространственную информацию в системе для улучшения покрытия.
В данном примере предположим, что система развернута на частоте 60 ГГц, что является частотой, рассматриваемой для 5G системы.
c = 3e8; % propagation speed fc = 60e9; % carrier frequency lambda = c/fc; % wavelength rng(6466);
Без потерь общего характера поместите передатчик в источник и разместите приемник примерно в 1,6 км от него.
txcenter = [0;0;0]; rxcenter = [1500;500;0];
На протяжении всего этого примера scatteringchanmtx
функция будет использоваться, чтобы создать матрицу канала для различных строений массива передачи и приема. Функция моделирует несколько рассеивателей между передающими и приёмными массивами. Сигнал сначала перемещается от передающего массива ко всем рассеивателям, а затем отскакивает от рассеивателей и приходит к приёмному массиву. Поэтому каждый рассеиватель определяет путь сигнала между передачей и приемом массива и полученная матрица канала описывает многолучевое окружение. Функция работает с антенными решетками произвольного размера в любом назначенной полосе частот.
Самым простым беспроводным каналом является распространение линии визирования (LOS). Хотя это и просто, такие каналы часто можно найти в сельских районах. Принятие антенной решетки в такой ситуации может улучшить отношение сигнал/шум в приемнике и, в свою очередь, улучшить связь ссылки частоту битовой ошибки (BER).
Канал SISO LOS
Перед обсуждением эффективности системы MIMO полезно создать базовую линию с одной входной одной выходной (SISO) системой связи. Канал SISO LOS имеет прямой путь от передатчика к приемнику. Такой канал может быть смоделирован как особый случай многолучевого канала.
[~,txang] = rangeangle(rxcenter,txcenter);
[~,rxang] = rangeangle(txcenter,rxcenter);
txsipos = [0;0;0];
rxsopos = [0;0;0];
g = 1; % gain for the path
sisochan = scatteringchanmtx(txsipos,rxsopos,txang,rxang,g);
Используя BPSK модуляцию, вероятность битовой ошибки (BER) для такого канала SISO может быть нанесена как
Nsamp = 1e6;
x = randi([0 1],Nsamp,1);
ebn0_param = -10:2:10;
Nsnr = numel(ebn0_param);
ber_siso = helperMIMOBER(sisochan,x,ebn0_param)/Nsamp;
helperBERPlot(ebn0_param,ber_siso);
legend('SISO')
Канал SIMO LOS
С помощью базовой линии, установленной для системы SISO, этот раздел фокусируется на системе с одним входом и несколькими выходами (SIMO). В такой системе имеется одна передающая антенна, но несколько приемных антенн. Снова, принято, что существует прямой путь между передатчиком и приемником.
Предположим, что приёмный массив является ULA с 4 элементами с полуволновым интервалом, тогда канал SIMO может быть смоделирован как
rxarray = phased.ULA('NumElements',4,'ElementSpacing',lambda/2); rxmopos = getElementPosition(rxarray)/lambda; simochan = scatteringchanmtx(txsipos,rxmopos,txang,rxang,g);
В системе SIMO, поскольку принятые сигналы через приемные элементы массива когерентны, можно направлять массиву приема к передатчику, чтобы улучшить ОСШ. Обратите внимание, что это принимает, что направление входного сигнала известно приемнику. В действительности угол часто получается с помощью алгоритмов оценки направления прибытия.
rxarraystv = phased.SteeringVector('SensorArray',rxarray,... 'PropagationSpeed',c); wr = conj(rxarraystv(fc,rxang)); ber_simo = helperMIMOBER(simochan,x,ebn0_param,1,wr)/Nsamp; helperBERPlot(ebn0_param,[ber_siso(:) ber_simo(:)]); legend('SISO','SIMO')
Кривая BER показывает коэффициент усиления 6 дБ, обеспечиваемый приёмным массивом.
Канал MISO LOS
Система с одним выходом ввода (MISO) работает аналогичным образом. В этом случае передатчик является ULA с 4 элементами с полуволновым интервалом.
txarray = phased.ULA('NumElements',4,'ElementSpacing',lambda/2); txmipos = getElementPosition(txarray)/lambda; misochan = scatteringchanmtx(txmipos,rxsopos,txang,rxang,g);
Система MISO линии визирования достигает наилучшего ОСШ, когда передатчик знает о приемнике и направляет луч к приемнику. В сложение, для справедливого сравнения с системой SISO, общая степень передатчика должна быть одинаковой в обеих ситуациях.
txarraystv = phased.SteeringVector('SensorArray',txarray,... 'PropagationSpeed',c); wt = txarraystv(fc,txang)'; ber_miso = helperMIMOBER(misochan,x,ebn0_param,wt,1)/Nsamp; helperBERPlot(ebn0_param,[ber_siso(:) ber_simo(:) ber_miso(:)]); legend('SISO','SIMO','MISO')
Обратите внимание, что при предварительном управлении эффективность MISO соответствует эффективности системы SIMO, набирая 6 дБ в ОСШ. Это может быть не так интуитивно понятно по сравнению со случаем SIMO, потому что общая степень передачи не увеличивается. Однако путем замены одной изотропной антенны на 4-элементную передающий массив достигается коэффициент усиления 6 дБ.
Канал MIMO LOS
Поскольку система SIMO обеспечивает коэффициент усиления массива от полученного массива, а система MISO обеспечивает коэффициент усиления массива от передающего массива, система MIMO с распространением LOS может быть полезной как от усиления передающей, так и от усиления приёмного массива.
Предположим, что система MIMO с 4-элементной передающим массивом и 4-элементным приёмным массивом.
mimochan = scatteringchanmtx(txmipos,rxmopos,txang,rxang,g);
Чтобы достичь наилучшего ОСШ, передающий массив и приёмный массив должны быть направлены друг к другу. При этом строении кривая BER может быть вычислена как
wt = txarraystv(fc,txang)'; wr = conj(rxarraystv(fc,rxang)); ber_mimo = helperMIMOBER(mimochan,x,ebn0_param,wt,wr)/Nsamp; helperBERPlot(ebn0_param,[ber_siso(:) ber_simo(:) ber_mimo(:)]); legend('SISO','SIMO','MIMO')
Как ожидалось, кривая BER показывает, что и передающий массив, и приёмный массив вносят вклад в усиление массива на 6 дБ, получая общий коэффициент усиления 12 дБ по случаю SISO.
Все каналы в предыдущих разделах являются каналами прямой видимости. Хотя такие каналы находятся в некоторых системах радиосвязи, в целом беспроводная связь происходит в окружениях с замираниями. Остальная часть этого примера исследует, как использование массивов может помочь в многолучевом окружении.
Многолучевой канал SISO
Предположим, что в канале 10 случайным образом размещенных рассеивателей, тогда будет 10 путей от передатчика к приемнику, как показано на следующем рисунке.
Nscat = 10; [~,~,~,scatpos] = ... helperComputeRandomScatterer(txcenter,rxcenter,Nscat); helperPlotSpatialMIMOScene(txsipos,rxsopos,... txcenter,rxcenter,scatpos);
Для простоты примите, что сигналы, перемещающиеся по всем путям, поступают в течение одного и того же периода символа, поэтому канал является плоским по частоте.
Чтобы симулировать кривую BER для затухающего канала, канал должен изменяться с течением времени. Предположим, что у нас есть 1000 системы координат, и каждая система координат имеет 10000 биты. Базовая SISO многолучевая кривая BER канала сконструирована как
Nframe = 1e3; Nbitperframe = 1e4; Nsamp = Nframe*Nbitperframe; x = randi([0 1],Nbitperframe,1); nerr = zeros(1,Nsnr); for m = 1:Nframe sisompchan = scatteringchanmtx(txsipos,rxsopos,Nscat); wr = sisompchan'/norm(sisompchan); nerr = nerr+helperMIMOBER(sisompchan,x,ebn0_param,1,wr); end ber_sisomp = nerr/Nsamp; helperBERPlot(ebn0_param,[ber_siso(:) ber_sisomp(:)]); legend('SISO LOS','SISO Multipath');
По сравнению с кривой BER, полученной из канала LOS, BER падает намного медленнее с увеличением энергии на бит в отношении шума степени коэффициента спектральной плотности (Eb/N0) из-за замираний, вызванных многолучевым распространением.
Многолучевой канал SIMO
Поскольку в массиве используется больше приемных антенн, в приемнике доступно больше копий принятых сигналов. Снова примите ULA с 4 элементами в приемнике.
Оптимальные веса объединения могут быть выведены путем согласования отклика канала. Такая схема объединения часто называется объединением с максимальным отношением (MRC). Хотя в теории такая схема требует знания канала, на практике реакция канала часто может быть оценена в приёмном массиве.
nerr = zeros(1,Nsnr); for m = 1:Nframe simompchan = scatteringchanmtx(txsipos,rxmopos,Nscat); wr = simompchan'/norm(simompchan); nerr = nerr+helperMIMOBER(simompchan,x,ebn0_param,1,wr); end ber_simomp = nerr/Nsamp; helperBERPlot(ebn0_param,[ber_sisomp(:) ber_simomp(:)]); legend('SISO Multipath','SIMO Multipath');
Обратите внимание, что принятый сигнал больше не взвешивается вектором управления в определенном направлении. Вместо этого веса приемного массива в этом случае задаются комплексным сопряжением отклика канала. В противном случае возможно, что многолучевой канал может сделать принятый сигнал несовпадающим по фазе с переданным сигналом. Это принимает, что реакция канала известна приемнику. Если характеристика канала неизвестна, пилот-сигналы могут использоваться, чтобы оценить характеристику канала.
Из кривой BER видно, что не только система SIMO обеспечивает некоторые усиления ОСШ по сравнению с системой SISO, но и наклон кривой BER системы SIMO также круче по сравнению с кривой BER системы SISO. Коэффициент усиления, вызванный изменением наклона, часто упоминается как коэффициент усиления разнесения.
MISO многолучевой канал
Вещи становятся более интересными, когда происходит многолучевое распространение в системе MISO. Во-первых, если канал известен передатчику, то стратегия улучшения ОСШ подобна объединению максимальных коэффициентов. Сигнал, излучаемый от каждого элемента передающего массива, должен быть взвешен так, чтобы распространенный сигнал мог быть когерентно добавлен в приемник.
nerr = zeros(1,Nsnr); for m = 1:Nframe misompchan = scatteringchanmtx(txmipos,rxsopos,Nscat); wt = misompchan'/norm(misompchan); nerr = nerr+helperMIMOBER(misompchan,x,ebn0_param,wt,1); end ber_misomp = nerr/Nsamp; helperBERPlot(ebn0_param,[ber_sisomp(:) ber_simomp(:) ber_misomp(:)]); legend('SISO Multipath','SIMO Multipath','MISO Multipath');
Обратите внимание на коэффициент усиления разнесения передачи, показанный на кривой BER. По сравнению с случаем многолучевого канала SIMO, эффективность многолучевой системы MISO не так хороша. Это связано с тем, что существует только одна копия принятого сигнала, но степень передачи распределяется между несколькими путями. Безусловно, возможно усилить сигнал на стороне передачи для достижения эквивалентного усиления, но это вводит дополнительные затраты.
Если канал не известен передатчику, все еще существуют способы исследовать разнесение посредством пространственного временного кодирования. Например, код Аламути является хорошо известной схемой кодирования, которая может использоваться для достижения коэффициента усиления разнесения, когда канал не известен. Заинтересованным читателям рекомендуется изучить пример Введения в системы MIMO в Toolbox™ систем связи.
Многолучевой канал MIMO
Остальная часть этого примера фокусируется на многолучевом канале MIMO. В частности, этот раздел иллюстрирует случай, когда количество рассеивателей в окружении больше, чем количество элементов в передающих и приёмных массивах. Такие окружения часто называют богатым рассеивающим окружением.
Перед погружением в конкретные показатели эффективности полезно получить быстрый рисунок того, как выглядит канал. Следующая вспомогательная функция создает канал MIMO 4x4, где и передатчик, и приемник являются ULA с 4 элементами.
[txang,rxang,scatg,scatpos] = ...
helperComputeRandomScatterer(txcenter,rxcenter,Nscat);
mimompchan = scatteringchanmtx(txmipos,rxmopos,txang,rxang,scatg);
Существует несколько путей, доступных между передающим массивом и приёмным массивом из-за существования рассеивателей. Каждый путь состоит из единственного отскока от соответствующего рассеивателя.
helperPlotSpatialMIMOScene(txmipos,rxmopos,txcenter,rxcenter,scatpos);
Существует два способа воспользоваться преимуществами канала MIMO. Первый способ - исследовать коэффициент усиления разнесения, предлагаемый каналом MIMO. Если предположить, что канал известен, следующий рисунок показывает коэффициент усиления разнесения с помощью кривой BER.
nerr = zeros(1,Nsnr); for m = 1:Nframe mimompchan = scatteringchanmtx(txmipos,rxmopos,Nscat); [u,s,v] = svd(mimompchan); wt = u(:,1)'; wr = v(:,1); nerr = nerr+helperMIMOBER(mimompchan,x,ebn0_param,wt,wr); end ber_mimomp = nerr/Nsamp; helperBERPlot(ebn0_param,[ber_sisomp(:) ber_simomp(:) ber_mimomp(:)]); legend('SISO Multipath','SIMO Multipath','MIMO Multipath');
Сравните кривую BER из канала MIMO с кривой BER, полученной из системы SIMO. В многолучевом случае коэффициент усиления разнесения от канала MIMO не обязательно лучше, чем коэффициент усиления разнесения, обеспечиваемый каналом SIMO. Это связано с тем, что для получения наилучшего усиления разнесения используется только доминирующий режим в канале MIMO, но в канале существуют другие режимы, которые не используются. Так есть ли альтернативный способ использовать канал?
Ответ на предыдущий вопрос лежит в схеме, называемой пространственным мультиплексированием. Идея пространственного мультиплексирования заключается в том, что многолучевой канал MIMO с богатым окружением рассеяния может отправлять несколько потоков данных одновременно по каналу. Для примера матрица канала канала 4x4 MIMO становится полной рангом из-за рассеивателей. Это означает, что можно отправить целых 4 потока данных сразу. Цель пространственного мультиплексирования состоит меньше в увеличении ОСШ, но больше в увеличении пропускной способности информации.
Идея пространственного мультиплексирования состоит в том, чтобы разделить матрицу канала на несколько режимов, так что поток данных, посланный от различных элементов передающего массива, может быть независимо восстановлен из принятого сигнала. Для достижения этого поток данных предварительно кодируется перед передачей и затем объединяется после приема. Веса предварительного кодирования и объединения могут быть вычислены из матрицы канала
[wp,wc] = diagbfweights(mimompchan);
Чтобы увидеть, почему комбинация весов предварительного кодирования и объединения может помочь передавать несколько потоков данных одновременно, исследуйте продукт весов и матрицы канала.
wp*mimompchan*wc
ans = 10.3543 + 0.0000i -0.0000 + 0.0000i 0.0000 - 0.0000i -0.0000 - 0.0000i 0.0000 + 0.0000i 6.0693 + 0.0000i 0.0000 + 0.0000i 0.0000 - 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i 2.4446 + 0.0000i -0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 1.1049 - 0.0000i
Обратите внимание, что продукт является матрицей диагонали, что означает, что информация, принятая каждым приемным элементом массива, является просто масштабированной версией передающим элементом массива. Таким образом, он ведет себя как несколько ортогональных подканалов в исходном канале. Первый подканал соответствует доминирующим направлениям передачи и приема, поэтому нет потерь в усилении разнесения. В сложение теперь можно использовать другие подканалы для переноса информации, как показано на кривой BER для первых двух подканалов.
Ntx = 4; Nrx = 4; x = randi([0 1],Nbitperframe,Ntx); nerr = zeros(Nrx,Nsnr); for m = 1:Nframe mimompchan = scatteringchanmtx(txmipos,rxmopos,Nscat); [wp,wc] = diagbfweights(mimompchan); nerr = nerr+helperMIMOMultistreamBER(mimompchan,x,ebn0_param,wp,wc); end ber_mimompdiag = nerr/Nsamp; helperBERPlot(ebn0_param,[ber_sisomp(:) ber_mimomp(:)... ber_mimompdiag(1,:).' ber_mimompdiag(2,:).']); legend('SISO LOS','MIMO Multipath','MIMO Multipath Stream 1',... 'MIMO Multipath Stream 2');
Хотя второй поток не может обеспечить такой высокий коэффициент усиления, как первый поток, поскольку он использует менее доминирующий подканал, общая пропускная способность информации улучшается. Поэтому в следующем разделе измеряется эффективность по емкости канала вместо кривой BER.
Самый интуитивно понятный способ передачи данных в системе MIMO - равномерно разделить степень между элементами передачи. Однако емкость канала может быть дополнительно улучшена, если канал известен в передатчике. В этом случае передатчик может использовать алгоритм заполнения воды, чтобы сделать выбор передачи только в подканалах, где может быть получен удовлетворяющий ОСШ. Следующий рисунок показывает сравнение пропускной способности системы между двумя схемами распределения степени. Результат подтверждает, что алгоритм заполнения воды обеспечивает лучшую пропускную способность системы по сравнению с равномерным распределением степени. Когда ОСШ уровня системы улучшается, различие становится меньше.
C_mimo_cu = zeros(1,Nsnr); C_mimo_ck = zeros(1,Nsnr); Ntrial = 1000; for m = 1:Nsnr for n = 1:Ntrial mimompchan = scatteringchanmtx(txmipos,rxmopos,Nscat); N0 = db2pow(-ebn0_param(m)); [~,~,~,~,cu] = diagbfweights(mimompchan,1,N0,'uniform'); [~,~,~,~,ck] = diagbfweights(mimompchan,1,N0,'waterfill'); C_mimo_cu(m) = C_mimo_cu(m)+cu; C_mimo_ck(m) = C_mimo_ck(m)+ck; end end C_mimo_cu = C_mimo_cu/Ntrial; C_mimo_ck = C_mimo_ck/Ntrial; plot(ebn0_param,C_mimo_cu(:),'-*',ebn0_param,C_mimo_ck(:),'-^'); xlabel('SNR (dB)'); ylabel('Capacity (bps/Hz)'); legend('Uniform Power Distribution','Waterfill Power Distribution'); grid on;
Для получения дополнительной информации о пространственном мультиплексировании и его методах обнаружения, смотрите пример Пространственного Мультиплексирования в Communication System Toolbox.
Наконец, стоит посмотреть, как эти различные способы использования массивов связаны друг с другом. Начиная с канала LOS, как упоминалось в предыдущих разделах, преимуществом, обеспечиваемым массивом, является улучшение ОСШ.
[~,txang] = rangeangle(rxcenter,txcenter);
[~,rxang] = rangeangle(txcenter,rxcenter);
mimochan = scatteringchanmtx(txmipos,rxmopos,txang,rxang,1);
wt = txarraystv(fc,txang)';
wr = conj(rxarraystv(fc,rxang));
helperPlotSpatialMIMOScene(txmipos,rxmopos,txcenter,rxcenter,...
(txcenter+rxcenter)/2,wt,wr)
Из эскиза ясно, что в этом случае веса передачи и приема образуют два луча, которые указывают друг на друга. Таким образом, коэффициент усиления массива достигается методом формирования луча. С другой стороны, если попытаться создать подобный эскиз для канала MIMO, это выглядит как следующий рисунок.
[txang,rxang,scatg,scatpos] = ... helperComputeRandomScatterer(txcenter,rxcenter,Nscat); mimompchan = scatteringchanmtx(txmipos,rxmopos,txang,rxang,scatg); [wp,wc] = diagbfweights(mimompchan); helperPlotSpatialMIMOScene(txmipos,rxmopos,txcenter,rxcenter,... scatpos,wp(1,:),wc(:,1))
Обратите внимание, что рисунок изображает только шаблон для первого потока данных, но тем не менее ясно, что шаблон больше не обязательно имеет доминирующий основной луч. Однако, если количество рассеивателей уменьшается до единицы, то сцена становится
[txang,rxang,scatg,scatpos] = ... helperComputeRandomScatterer(txcenter,rxcenter,1); mimompchan = scatteringchanmtx(txmipos,rxmopos,txang,rxang,scatg); [wp,wc] = diagbfweights(mimompchan); helperPlotSpatialMIMOScene(txmipos,rxmopos,txcenter,rxcenter,... scatpos,wp(1,:),wc(:,1))
Поэтому случай канала LOS, или, более точно, случай с одним рассеивателем, может быть рассмотрен как особый случай предварительного кодирования. Когда между передающими и приёмными массивами доступен только один путь, предварительное кодирование вырождается до схемы формирования луча.
Этот пример объясняет, как обработка массивов может использоваться, чтобы улучшить качество системы радиосвязи MIMO. В зависимости от природы канала, массивы могут использоваться, чтобы либо улучшить ОСШ через усиление массива или усиление разнесения, либо улучшить пропускную способность через пространственное мультиплексирование. Пример также показывает, как использовать функции, подобные scatteringchanmtx
и diagbfweights
для моделирования этих сценариев. Для получения дополнительной информации о моделировании систем MIMO заинтересованные читатели могут обратиться к примерам, представленным в Communications Toolbox™.
[1] David Tse and Pramod Viswanath, Основы беспроводной связи, Кембридж, 2005
[2] Arogyswami Paulraj, Введение в Space-Time Wireless Communication, Кембридж, 2003