Beamforming implementation - How does it work?

434 views
Skip to first unread message

Antonio Tarrias

unread,
Jan 18, 2021, 9:55:20 AM1/18/21
to 5G-LENA-users
Hi all,

I am working with beamforming on 5G-LENA, concretely I am using CellScanQuasiOmniBeamforming type.

To describe my situation, I have 2 UEs (or more) starting on the same X position, but different Y position, i.e. in the same vertical line. When the simulation starts, they start moving in axis X and later on axis Y until they finished on the same Y position, but different X (with the same separation as start). gNB is in position (0,0,10) and bearingAngle of 0.523599 (i.e. pointing to the upper right corner).
I have implemented a trace collection of beamID per UE with a timestamp, and later I can represent a map with the reported beamIDs on each position (See Figures).
Due to the fact that they are moving with the same speed (3 m/s), the one closer to gNB finishes its trajectory earlier.
Nevertheless, it seems like both UEs are reporting the same beamIDs in each time, which means that beams are not uniformly distributed in space (beamIDs should coincide with the position even if one UE is further from the gNB).
The pictures show 2 simulations where 2 UEs move at 20m and 40m, respectively, with a separation of 5 meters between them in both cases. BeamIDs are mapped to colors for plotting.
I would be thankful if you could explain me on this. I am not sure of what is happening, maybe some objects are shared between UEs, or there is a implementation factor unknown to me.

Thank you in advance.

KR,
Antonio

Map_Beamforming_Tx_All 40m.pdf
Map_Beamforming_Tx_All 20m.pdf

David Segura

unread,
Mar 19, 2021, 7:00:14 AM3/19/21
to 5G-LENA-users
Any update on this? 
I am also trying this with realistic beamforming, and I am not sure where the pre-defined beam set mentioned in documentation is coming from.

BR,
David

Antonio Tarrias

unread,
Mar 30, 2021, 4:21:28 AM3/30/21
to 5G-LENA-users
I have another question regarding this topic: Is beamforming analog or digital?

I think you are not modelling this at RF levels, but the question is related to how the beams are radiated: are the beams simultaneous or the gNB is continuously sweeping on each direction?

Thank you again!

Kind regards,
Antonio

Rima Benelmir

unread,
Apr 25, 2021, 8:48:05 PM4/25/21
to 5G-LENA-users
Hello Antonio, 
Did you get the response if it is beamfoming analog or digital ?

kind regards, 
Rima

Antonio Tarrias

unread,
Apr 26, 2021, 2:48:33 AM4/26/21
to 5G-LENA-users
Hi Rima,

No, I did not get any response yet.

Best regards,
Antonio

Sandra Lagén

unread,
Apr 26, 2021, 4:42:19 AM4/26/21
to Antonio Tarrias, 5G-LENA-users
Hi all,
Sorry for the late replies. Here some answers:
- Beamforming in the module, as it is implemented as of today, is analog. Each node can use a single beam at a time, and the gNB (as you said) is sweeping the beams in time based on the scheduled UEs and its selected beams.
- In the beamSearch method, the beam is chosen for each UE based on a set of pre-defined beams, in which the beam codebook is defined based on a set of angles in horizontal (depending on number of antennas) and vertical (depending on a predefined angle step, an attribute) domains. In the LosPath method, the beam is pointed towards the LOS path of the serving UE, for each UE. In the realistic beamforming (some updates on this will come in the next release), we use SRS to estimate the channel and then select the beam from a set of pre-defined beams (similar to the ideal beamSearch method).
So far we do not support digital beamforming, just one beam at a time per node, and we have the mentioned methods available. However, you can implement new methods to determine the beamforming (BF) vectors. Strictly speaking, you can change in the module (at simulation) both phase and amplitude of each value in the BF vector. Our constraint is that we can use a single beam at a time and a single layer/stream per UE.
BR,
Sandra


Missatge de Antonio Tarrias <antoniota...@gmail.com> del dia dl., 26 d’abr. 2021 a les 8:48:
--
You received this message because you are subscribed to the Google Groups "5G-LENA-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 5g-lena-user...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/5g-lena-users/395bfad8-f7a8-4fba-93ef-b708fdba242dn%40googlegroups.com.

Antonino Masaracchia

unread,
May 7, 2021, 4:44:56 PM5/7/21
to 5G-LENA-users
Hi everyone, 
I found this topic related to my doubt. 

Basically I am trying to understand how the following line of code works:

DynamicCast<NrGnbNetDevice>(gnbNetDev.Get(0))->GetPhy(0)->GetBeamManager ()->SetSector (sector, theta);

I am using it to reproduce the beam radiated by an 1X3 (1 row 3 columns) ULA array placed at the gNodeB side. Both vertical and horizontal spacing are 0.5 m by default. In other words I am using the REM script with the BEAM_SHAPE option. 

Transmissions are performed within a UMa scenario (hBS = 25 m and hUt = 1.5 m ). The UE is single antenna and and the CreateQuasiOmniBfv is used. Then its coefficient is always 1.

I looked the implementation of SetSector method and it is my understanding that theta is the vertical angle with its unit vector normal to z-axis. Then my question is why sector has been defined as integer? . In particular, the implementation of SetSector defines the following steering vector phases:

    double phase = -2 * M_PI * (sin (vAngle_radian) * cos (hAngle_radian) * loc.x

                                + sin (vAngle_radian) * sin (hAngle_radian) * loc.y

                                + cos (vAngle_radian) * loc.z);

    tempVector.push_back (exp (std::complex<double> (0, phase)) * power);

This for my results in :

sin (vAngle_radian) * cos (hAngle_radian) * loc.x always zero due to the convention on the local coordinates for the antennas

-  sin (vAngle_radian) * sin (hAngle_radian) * loc.y which represent the phase difference between the elements along y-axis

cos (vAngle_radian) * loc.z represents the phase difference of users along z axis. Then in my case is always zero as well

Then, in order to steer the beam generated by my array in the x-y plane I should keep v_angle=90° and change h_angle. However, according with its definition:

double hAngle_radian = M_PI * (static_cast<double> (sector) / static_cast<double> (uintValueNumRows.Get ())) - 0.5 * M_PI;

I always obtain the same attached figure independently from the value of sector (I excluded both fast and slow fading).

I would really appreciate if someone have some insights on this. Maybe I am considering the coordinate system not correctly?

Best regards,

Antonino 




nr-rem-sigleCell_64670_0_15_15_0-ipsd.png

Ycaro Ravel

unread,
Mar 7, 2022, 8:20:26 AM3/7/22
to 5G-LENA-users
Hi everyone,

Would anyone support with the questions below?

As it is implemented today, is there any way to use different beamforming algorithms (or algorithm attributes) for different gNBs in the same simulation scenario?
I'm under the impression that when we call nrHelper->SetBeamformingHelper(beamformingHelper) it initializes that beamforming helper for all the gNBs. Also, looks like it can't change after UEs are attached to gNBs. Am I getting it right?

And related to the beam codebook mentioned above, we see in the code that it relies in an elevation angle step (attribute accessible for changes), and an azimuth angle derived from the antenna's number of rows.
Regarding the method to get the azimuth angle, is it based in any theoretical model? Is it consistent for the user to change it for his own customized codebook (e.g.: different number of angle steps and angle values in horizontal direction)?

Thank you and BR,
Ycaro

Biljana B.

unread,
Apr 22, 2022, 5:44:15 AM4/22/22
to 5G-LENA-users
Dear Ycaro,

you are right, the configured beamforming algorithm is the same for all gNBs. 

If you finally develop a different design and allow different level of granularity for the beamforming algorithm that would be great. For example,  you can consider setting the beamforming algorithm type to the BeamManager of the gNB. So, the beam helper can obtain the pointer to the algorithm from the beam manager. But I am not sure how to allow the configuration in the same simulation to be ideal and realistic. But for sure it can be done.

Regarding the angles, you can set the angle angles, and angle steps as you wish.

If you develop some new feature related to the configuration of the beamforming algorithms or a new beamforming method, it would be great if you consider contributing your code.

Cheers,
Biljana

afifa ishtiaq

unread,
Jul 2, 2024, 10:35:29 AM7/2/24
to 5G-LENA-users

Hallo everyone,
I'm trying to do beamsweeping at the base station but with customized beamforming weight vectors for an Indoor scenario.  I have created an example file for that in which I generate a simple phase array steering vector. However I have some concerns:
1. Even by using ThreeGppAntenna elements I see multi-lobes. Why is that? It can be seen in the attached image1.
2. Why the high intensity SNR (labeled with red dots) is scattered outside the main lobe area?
3. Does beamshape of rem show the SNR based on both LoS/NLoS?
4. While using SectorAz(45,0) why don't I see the beam pointing in the direction of 45 degrees? image 2
Cheers,
Afifa
rem_IndoorBeamShape.cc
image1.PNG
image2.PNG
Reply all
Reply to author
Forward
0 new messages