주요 콘텐츠

RIS(지능형 재구성 표면) 소개

5G 무선 시스템의 도입과 함께, 산업계는 6G 무선 네트워크와 같이 5G를 넘어서는 시스템을 탐색하기 시작했습니다. 결국 더 높은 데이터 레이트에 대한 탐구는 끝없이 이어지고 있습니다. 최근 몇 년간 RIS(지능형 재구성 표면)는 6G 시스템의 핵심 기반 기술로 떠올랐습니다. 이 예제에서는 Phased Array System Toolbox™를 사용하여 이러한 시스템을 모델링하는 방법을 보여줍니다. 이 예제는 결정적 채널 모델을 사용하여 RIS를 모델링하는 것에 중점을 둡니다. 확률적 RIS 채널 모델에 대해서는 Model Reconfigurable Intelligent Surfaces with CDL Channels (5G Toolbox) 예제를 참조하십시오.

소개

4G 시스템이 등장한 이후로, 안테나 배열은 기지국과 사용자 단말(UE) 모두에서 핵심적인 부분이 되었습니다. 5G 시스템에 채택된 mmWave 대역은 (요소 개수 측면에서) 더 큰 배열을 좁은 공간에 집적할 수 있게 해 줍니다. 따라서 이러한 배열이 제공하는 빔포밍 이득은 mmWave 대역에서의 심각한 전파 손실을 보완해 주며, 이를 통해 원하는 데이터 레이트와 용량을 달성할 수 있습니다.

반면, mmWave 대역으로 전환한다는 것은 5G 이후의 무선 시스템이 6GHz 미만 대역의 산란체가 많은 환경과는 달리 가시선(LOS) 링크에 점점 더 의존하게 됨을 의미합니다. 따라서 LOS 링크를 확보할 수 없는 경우 시스템 성능이 저하됩니다. 이로 인해 엔지니어들은 전파 환경을 개선할 방법을 모색하게 되었습니다. 이 과정에서 RIS(Reconfigurable Intelligent Surface: 지능형 재구성 표면) 기법이 이러한 목적에 적합한 후보로 부상했습니다.

RIS는 IRS(Intelligent Reflecting Surface: 지능형 반사 표면)라고도 하며, 다수의 요소로 구성된 수동 평면 배열입니다. 표면이 수동 방식이라는 점이 중요한데, 이는 표면에 RF(무선 주파수) 회로를 포함할 필요가 없어 비용을 낮게 유지할 수 있기 때문입니다. 하지만 각 요소는 반사된 신호의 위상을 조정할 수 있으므로, 제어기가 각 요소에서 위상을 조정하여 신호를 코히어런트하게 결합할 수 있습니다. 현재 이러한 표면을 구성하는 접근 방식은 두 가지가 있습니다[1]. 첫 번째 접근 방식은 각 요소에 대해 위상 변환기가 있는 반사배열(reflectarray)을 사용하는 것입니다. 이는 전통적인 수동 위상 배열과 매우 유사하게 작동합니다. 또 다른 접근 방식은 메타표면(metasurface)을 이용하여 표면을 구성하는 것입니다. 메타 물질의 특성을 수정함으로써, 각 요소에서 반사되는 신호를 수정할 수 있습니다. 반사배열과 비교할 때 메타표면에서는 요소를 서로 훨씬 더 가깝게 배치할 수 있어, 전체 개구(aperture)를 더 컴팩트하게 만들 수 있습니다.

다음 섹션에서는 무지향성 요소가 반파장 간격으로 배치된 10×20 RIS를 생성합니다. 반송 주파수는 28GHz로 설정됩니다. 원하는 경우 사용자 지정 요소 패턴을 사용할 수 있습니다. RIS 표면의 전자기 해석을 수행하는 방법에 대한 자세한 내용은 Electromagnetic Analysis of Reconfigurable Intelligent Surface (Antenna Toolbox) 예제를 참조하십시오.

fc = 28e9;
c = physconst('lightspeed');
lambda = c/fc;
rng(2023);

% Setup surface
Nr = 10;
Nc = 20;
dr = 0.5*lambda;
dc = 0.5*lambda;

% construct surface
ris = phased.RectangularRIS('Size',[Nr Nc],'Spacing',[dr dc],'UnitCell',phased.IsotropicAntennaElement)
ris = 
  phased.RectangularRIS with properties:

    UnitCell: [1×1 phased.IsotropicAntennaElement]
        Size: [10 20]
     Spacing: [0.0054 0.0054]

시뮬레이션 시나리오

RIS 사용 시 이점을 확인하기 위해 아래 표시된 대로 장면을 설정합니다[2]. 일반성을 잃지 않기 위해, 기지국, RIS, UE가 모두 정지 상태이며 xy 평면에 있다고 가정합니다. 기지국은 원점에 있고, RIS는 x축을 따라 dbr 미터 떨어져 있으며, UE는 x축을 따라 du 미터, y축을 따라 5미터 떨어져 있습니다. dbrdu를 모두 50으로 설정합니다.

ris.png

% scene
dbr = 50;
pos_ap = [0;0;0];
pos_ris = [dbr;0;0]; 
v = zeros(3,1);

du = 50;
dv = -5;
pos_ue = [du;dv;0];

% compute the range and angle of the RIS from the base station and the UE
[r_ap_ris,ang_ap_ris] = rangeangle(pos_ap,pos_ris);
[r_ue_ris,ang_ue_ris] = rangeangle(pos_ue,pos_ris);

단순화를 위해, 이 예제에서는 SISO(단일 입력 단일 출력) 시스템, 즉 하나의 송신 안테나와 하나의 수신 안테나를 사용합니다. 송신 전력은 50mW이고 수신기 잡음 전력은 -60dBm이라고 가정합니다. 신호는 샘플 레이트가 10MHz인 BPSK 신호입니다.

% signal
fs = 10e6;
x = 2*randi(2,[100 1])-3;
tx = phased.Transmitter('PeakPower',50e-3,'Gain',0);
xt = tx(x);
N0dB = -60-30;

% channel
chanAPToRIS = phased.FreeSpace('SampleRate',fs,'PropagationSpeed',c,'MaximumDistanceSource','Property','MaximumDistance',500);
chanRISToUE = phased.FreeSpace('SampleRate',fs,'PropagationSpeed',c,'MaximumDistanceSource','Property','MaximumDistance',500);
chanAPToUE = phased.FreeSpace('SampleRate',fs,'PropagationSpeed',c,'MaximumDistanceSource','Property','MaximumDistance',500);

RIS 기반 통신 시뮬레이션

먼저 기준(reference)으로, 직접 경로에 대한 SNR을 계산합니다.

% LOS path propagation
yref = chanAPToUE(xt,pos_ap,pos_ue,v,v);
SNRref = pow2db(bandpower(yref))-N0dB
SNRref = 
18.5972

이제 환경에 RIS를 추가합니다. 그 결과, 신호는 LOS 경로와 RIS를 통한 반사 경로 둘 다 해당 경로를 통해 수신기에 도달합니다. 먼저 최적의 위상 제어가 없는 경우, 즉 RIS의 각 요소가 단순히 신호를 반사하는 경우를 살펴봅니다.

risreflector = phased.RISReflector('Surface',ris,'OperatingFrequency',fc);
rcoeff_ris = ones(Nr*Nc,1);
x_ris_in = chanAPToRIS(xt,pos_ap,pos_ris,v,v);
x_ris_out = risreflector(x_ris_in,ang_ap_ris,ang_ue_ris,rcoeff_ris);
ylosris = chanRISToUE(x_ris_out,pos_ris,pos_ue,v,v)+chanAPToUE(xt,pos_ap,pos_ue,v,v);
SNRlosris = pow2db(bandpower(ylosris))-N0dB
SNRlosris = 
18.6079

SNR의 개선이 거의 없음을 알 수 있습니다. 이 결과는 예상과 다소 다를 수 있지만, 적절한 위상 제어가 없으면 RIS에서 반사된 신호가 직접 경로 신호를 상쇄할 수 있음을 보여줍니다. 따라서 RIS에서 요소의 위상을 제어하는 것이 매우 중요합니다. 직관적으로, RIS의 최적 위상은 모든 요소에서 반사된 신호가 코히어런트하게 결합되어 수신기에 도달할 때 직접 경로 신호와 동일한 위상을 갖도록 하는 것이라고 추측할 수 있습니다. 이렇게 하면 직접 경로 신호와 반사 경로의 신호 역시 코히어런트하게 결합됩니다. 이를 위해서는 채널 정보가 있어야 합니다. 채널 추정에 사용할 수 있는 많은 알고리즘이 있지만, 이는 이 예제의 범위를 벗어납니다. 이 예제의 단순한 시나리오를 바탕으로, 다음 코드 섹션에서는 채널을 도출한 후 RIS의 최적 위상을 적용하여 시뮬레이션을 다시 실행합니다.

% channel estimation
stv = phased.SteeringVector('SensorArray',ris);
r_ue_ap = norm(pos_ap-pos_ue);
hd = db2mag(-fspl(r_ue_ap,lambda))*exp(1i*2*pi*r_ue_ap/c);
g = db2mag(-fspl(r_ap_ris,lambda))*exp(1i*2*pi*r_ap_ris/c)*stv(fc,ang_ap_ris);
hr = db2mag(-fspl(r_ue_ris,lambda))*exp(1i*2*pi*r_ue_ris/c)*stv(fc,ang_ue_ris);

% compute optimal phase control
rcoeff_ris = exp(1i*(angle(hd)-angle(hr)-angle(g)));

% rerun simulation
x_ris_in = chanAPToRIS(xt,pos_ap,pos_ris,v,v);
x_ris_out = risreflector(x_ris_in,ang_ap_ris,ang_ue_ris,rcoeff_ris);
ylosriso = chanRISToUE(x_ris_out,pos_ris,pos_ue,v,v)+chanAPToUE(xt,pos_ap,pos_ue,v,v);
SNRlosriso = pow2db(bandpower(ylosriso))-N0dB
SNRlosriso = 
28.4933

이번에는 수신 SNR이 크게 개선된 것을 확인할 수 있습니다.

LOS가 없는 경우의 RIS 기반 통신

RIS의 배치는 반사 신호를 직접 경로 신호와 일치시킴으로써 SNR을 향상시킬 수 있지만, RIS의 진정한 장점은 LOS 링크를 사용할 수 없을 때 더욱 두드러집니다. 이러한 상황은 도시의 무선 통신 환경에서 드물지 않으며, 모바일 사용자의 이동으로 인해 기존 LOS 링크가 사라지는 경우도 발생할 수 있습니다. 다음 섹션은 수신기에서 직접 링크를 제거하여 이러한 시나리오를 시뮬레이션합니다.

rcoeff_ris = exp(1i*(-angle(hr)-angle(g)));
x_ris_in = chanAPToRIS(xt,pos_ap,pos_ris,v,v);
x_ris_out = risreflector(x_ris_in,ang_ap_ris,ang_ue_ris,rcoeff_ris);
yriso = chanRISToUE(x_ris_out,pos_ris,pos_ue,v,v);
SNRriso = pow2db(bandpower(yriso))-N0dB
SNRriso = 
27.9490

결과에서 링크 품질이 0.5dB만 저하된 것을 볼 수 있습니다. 이는 RIS가 LOS 경로 없이도 통신 링크를 성공적으로 유지할 수 있음을 의미합니다. 주기적으로 링크를 추정하고 최적의 위상 제어를 적용하면 사용자 이동으로 인한 성능 저하도 완화할 수 있습니다.

이 결과를 고려할 때, RIS의 크기가 링크 품질에 어떤 영향을 미치는지 살펴보는 것은 의미가 있습니다. 아래 곡선은 달성 가능한 데이터 레이트가 어떻게 변화하는지를 RIS의 크기에 대한 함수로 보여줍니다. 여기서는 직접 경로의 데이터 레이트가 기준으로 사용되었습니다. 이 플롯에서 주목할 만한 점은 다음 두 가지입니다.

  1. 전체 링크 품질을 개선할 수 있으려면 RIS가 특정 크기를 초과해야 합니다.

  2. RIS의 요소 개수가 증가할수록 직접 경로의 유무와 관계없이 링크 품질을 유지할 수 있습니다. 이는 RIS가 커질수록 이득이 높아지며, 따라서 LOS 링크에서의 이득의 중요성은 낮아지기 때문입니다.

Ncparam = 5:5:50;
[SNRlosris_param,SNRris_param,SNRlos_param] = helperRISSimulation(xt,Ncparam,chanAPToUE,chanAPToRIS,chanRISToUE,pos_ap,pos_ris,pos_ue,v,fc,c,SNRref);
plot(Ncparam.'*10,log2(1+db2pow([SNRlosris_param;SNRris_param;SNRlos_param])));
legend('LOS+RIS','RIS','LOS');
xlabel('Number of Elements');
ylabel('Data Rate (bps/Hz)')

Figure contains an axes object. The axes object with xlabel Number of Elements, ylabel Data Rate (bps/Hz) contains 3 objects of type line. These objects represent LOS+RIS, RIS, LOS.

RIS 배치

RIS의 이점에 대한 이해를 바탕으로, 다음 섹션에서는 RIS의 배치 전략을 평가합니다. 이 시뮬레이션에서는 RIS를 x축을 따라 다양한 위치에 배치하고, 그에 따른 UE에서의 SNR을 플로팅합니다.

dbrparam = 5:5:50;
SNRris_param = helperRISPlacementSimulation(xt,dbrparam,risreflector,chanAPToUE,chanAPToRIS,chanRISToUE,pos_ap,pos_ue,v,fc,c);
plot(dbrparam,SNRris_param);
xlabel('RIS Position along X (m)');
ylabel('SNR (dB)')

Figure contains an axes object. The axes object with xlabel RIS Position along X (m), ylabel SNR (dB) contains an object of type line.

결과를 보면 RIS의 효과를 최대화하기 위해서는, 곡선 왼쪽에 보이는 것처럼 RIS를 기지국 근처에 배치하거나, 곡선 오른쪽에 해당하는 모바일 근처에 배치해야 함을 알 수 있습니다.

요약

이 예제에서는 지능형 재구성 표면의 기본 개념을 소개하고, 미래 무선 시스템의 전파 환경을 개선할 수 있는 방법을 살펴보았습니다.

참고 문헌

[1] Mohamed A. Elmossallamy, Hongliang Zhang, Lingyang Song, Karim Seddik, Zhu Han, and Geoffrey Li, Reconfigurable Intelligent Surfaces for Wireless Communications: Principles, Challenges and Opportunities, IEEE Trans. on Cognitive Communications and Networking, V9l. 6, No. 3, September 2020

[2] Qingqing Wu, Shuowen Zhang, Beixiong Zheng, Changsheng You, and Rui Zhang, Intelligent Reflecting Surface-Aided Wireless Communications: A Tutorial, IEEE Trans. on Communications, Vol. 9, No. 5, May 2021

헬퍼 함수

RIS를 사용한 수신 SNR 시뮬레이션

function [SNRlosriso,SNRriso,SNRlos] = helperRISSimulation(xt,Ncparam,chanlos,chanap2ris,chanris2ue,pos_ap,pos_ris,pos_ue,v,fc,c,SNRref)

lambda = c/fc;
Nr = 10;
dr = 0.5*lambda;
dc = 0.5*lambda;

N0dB = -90;
Nparam = numel(Ncparam);
SNRlosriso = zeros(1,Nparam);
SNRriso = zeros(1,Nparam);
for m = 1:Nparam
    release(chanap2ris);
    release(chanlos);
    release(chanris2ue);

    ris = phased.RectangularRIS('Size',[Nr Ncparam(m)],'Spacing',[dr dc],...
        'UnitCell',phased.IsotropicAntennaElement);
    risreflector = phased.RISReflector('Surface',ris,'OperatingFrequency',fc);

    [r_ap_ris,ang_ap_ris] = rangeangle(pos_ap,pos_ris);
    [r_ue_ris,ang_ue_ris] = rangeangle(pos_ue,pos_ris);

    % channel estimation
    stv = phased.SteeringVector('SensorArray',ris);
    r_ue_ap = norm(pos_ap-pos_ue);
    hd = db2mag(-fspl(r_ue_ap,lambda))*exp(1i*2*pi*r_ue_ap/c);
    g = db2mag(-fspl(r_ap_ris,lambda))*exp(1i*2*pi*r_ap_ris/c)*stv(fc,ang_ap_ris);
    hr = db2mag(-fspl(r_ue_ris,lambda))*exp(1i*2*pi*r_ue_ris/c)*stv(fc,ang_ue_ris);


    rcoeff_losriso = exp(1i*(angle(hd)-angle(hr)-angle(g)));
    ylosriso = chanris2ue(risreflector(chanap2ris(xt,pos_ap,pos_ris,v,v),ang_ap_ris,ang_ue_ris,rcoeff_losriso),pos_ris,pos_ue,v,v)+...
        chanlos(xt,pos_ap,pos_ue,v,v);
    SNRlosriso(m) = pow2db(bandpower(ylosriso))-N0dB;

    rcoeff_ris = exp(1i*(-angle(hr)-angle(g)));
    yriso = chanris2ue(risreflector(chanap2ris(xt,pos_ap,pos_ris,v,v),ang_ap_ris,ang_ue_ris,rcoeff_ris),pos_ris,pos_ue,v,v);
    SNRriso(m) = pow2db(bandpower(yriso))-N0dB;

end

SNRlos = SNRref*ones(1,Nparam);
end

RIS 위치 변화에 따른 SNR 영향 시뮬레이션

function SNRris = helperRISPlacementSimulation(xt,drparam,risreflector,chanlos,chanap2ris,chanris2ue,pos_ap,pos_ue,v,fc,c)

lambda = c/fc;
stv = phased.SteeringVector('SensorArray',risreflector.Surface);
N0dB = -90;
Nparam = numel(drparam);
SNRris = zeros(1,Nparam);
for m = 1:Nparam
    release(chanap2ris);
    release(chanlos);
    release(chanris2ue);
    
    pos_ris = [drparam(m);0;0];
    
    [r_ap_ris,ang_ap_ris] = rangeangle(pos_ap,pos_ris);
    [r_ue_ris,ang_ue_ris] = rangeangle(pos_ue,pos_ris);
    
    % channel estimation
    g = db2mag(-fspl(r_ap_ris,lambda))*exp(1i*2*pi*r_ap_ris/c)*stv(fc,ang_ap_ris);
    hr = db2mag(-fspl(r_ue_ris,lambda))*exp(1i*2*pi*r_ue_ris/c)*stv(fc,ang_ue_ris);
    
    rcoeff_ris = exp(1i*(-angle(hr)-angle(g)));
    yriso = chanris2ue(risreflector(chanap2ris(xt,pos_ap,pos_ris,v,v),ang_ap_ris,ang_ue_ris,rcoeff_ris),pos_ris,pos_ue,v,v);
    SNRris(m) = pow2db(bandpower(yriso))-N0dB;
end
end