Skip to content

Commit

Permalink
Added 6 more Tutorials
Browse files Browse the repository at this point in the history
  • Loading branch information
vikram6G committed Feb 21, 2024
1 parent 2bc3031 commit 12e0d32
Show file tree
Hide file tree
Showing 432 changed files with 139,167 additions and 14,541 deletions.
2 changes: 1 addition & 1 deletion .buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 62e59e99f07b900b85cf1d61203e374a
config: 84341d3e078343b2af0ff3c5ac054b6b
tags: 645f666f9bcd5a90fca523b33c5a78b7
284 changes: 243 additions & 41 deletions GettingStarted.html

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,19 @@ The details about the transmitter side of the PDSCH are provided in [3GPPTS38211
[COMST.2021.3057017]_. The chain is bi-parted into upper physical layer and lower physical layer section to entertain
both the link-level and system level simulations. The details of the APIs is provided in following sub-sections.


.. image:: ../../figures/PhysicalChannels/PSCCHE2ETx.png
:width: 800
:alt: Alternative text
:align: center


.. autoclass:: toolkit5G.PhysicalChannels.PSCCH.pscchUpperPhy.PscchUpperPhy
.. autoclass:: toolkit5G.PhysicalChannels.PSCCHUpperPhy
:members:
:exclude-members: call, build


.. autoclass:: toolkit5G.PhysicalChannels.PSCCH.pscchLowerPhy.PscchLowerPhy
.. autoclass:: toolkit5G.PhysicalChannels.PSCCHLowerPhy
:members:
:exclude-members: call, build

Expand All @@ -42,12 +43,12 @@ both the link-level and system level simulations. The details of the APIs is pro
:align: center


.. autoclass:: toolkit5G.PhysicalChannels.PSCCH.pscchLowerPhyDecoder.PscchLowerPhyDecoder
.. autoclass:: toolkit5G.PhysicalChannels.PSCCHUpperPhyDecoder
:members:
:exclude-members: call, build


.. autoclass:: toolkit5G.PhysicalChannels.PSCCH.pscchUpperPhyDecoder.PscchUpperPhyDecoder
.. autoclass:: toolkit5G.PhysicalChannels.PSCCHLowerPhyDecoder
:members:
:exclude-members: call, build

Expand All @@ -73,4 +74,4 @@ PSCCH Components
PSCCH/subcomponents/physicalChannels.pdcch.components.polar.rst
PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.rst
PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.rst
PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.rst
PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
Gradient Descent for DoA
=========================
The :math:`\text{5G}^\text{th}` generation of wireless networks are equipped with
increased number of antennas and radio frequency RF chains at the transmitter and receiver. This allows the 5G systems
to estimate the angles with improved resolution. In release-15, 3GPP defined standards to enable methods for estimating
UE location based on angle of departure and angle of arrival measurements for 5G-NR systems. The nomenclature of the
methods is detailed below.


.. list-table:: Table-1: Angle od Departure and Arrival based Positioning in 5G Networks
:widths: 25 25 25 25
:header-rows: 1

* - Generation
- Method
- Measurement
- Optimization methods
* - 5G
- DL-AoD
- Beam-ID and RSRP
- Newton-Raphson, Gradient-Descent
* - 5G
- UL-AoA
- AOA, RToA, Beam-ID, and RSRP
- Newton-Raphson, Gradient-Descent

Its not possible to find a close form estimator for 2D-DoAs. Hence, DoA based positioning methods rely on iterative
optimization methods. One such optimization method is **Gradient Descent** (GD) which has low complexity iteration in
comparison to **Newton Raphson** (NR) method but needs more iterations to converge to local/global optima. The
comparison between the two methods is shown below:

.. list-table:: Table-2: Performance comparison between Gradient Descent and Newton Raphson optimization algorithm.
:widths: 25 25 25 25
:header-rows: 1

* - Method
- Per iteration complexity
- Convergence
- Utility
* - Gradient Descent
- :math:`\text{N}`
- Slow
- Low power
* - Newton Raphson
- :math:`\text{N}^2`
- Fast
- Low latency

where N denotes the number of measurements used for positioning. The implementation of both these methods provided in 5G
Toolkit is inspired by [3gppDoA]_.

------------

**Code example**

.. code-block:: Python
# shape of refLocations: Nref x 3
# shape of xoA: Nref x 2
numEpoches = 1
tolerance = 10**-5
numIterations = 10000
stepsize = 1
posEstimator = GradientDescentDoA(numEpochs = numEpoches, numIterationPerEpoch = numIterations,
stepsize = stepsize, tolerance = tolerance, isd = 100)
positionEstimate = posEstimator(xoA, refLocations)
------------

The input output interface for usage of Gradient Descent algorithm is provided below.

.. autoclass:: toolkit5G.Positioning.GradientDescentDoA
:members:
:exclude-members: call, build

------------

Newton Raphson for DoA
=======================
The details of input output interface for usage is detailed below.

.. note::
The documentation and API for ``NewtonRaphsonDoA`` are not active yet. It will be provided in patch 23a.0.11 by July 28, 2023.

.. autoclass:: toolkit5G.Positioning.NewtonRaphsonDoA
:members:
:exclude-members: call, build


References:
.. [3gppDoA] Y. Wang, Z. Shi, Y. Yu, S. Huang and L. Chen, "Enabling Angle-based Positioning to 3GPP NR Systems," 2019 16th Workshop on Positioning, Navigation and Communications (WPNC), Bremen, Germany, 2019, pp. 1-7, doi: 10.1109/WPNC47567.2019.8970182.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
Round Robin Scheduler
=====================

In 5G networks, a Round Robin scheduler is a type of scheduling algorithm used by the base station (gNodeB) to allocate
resources among multiple user equipment (UEs) in a fair and equitable manner. The Round Robin scheduler ensures that
each UE gets an equal opportunity to access network resources over time, regardless of factors such as channel
conditions or priority levels.

Here's how the Round Robin scheduler works:

- **Resource Allocation**: The Round Robin scheduler allocates resources, such as frequency bands, time slots, or transmission power, to UEs in a sequential manner, cycling through each UE in a round-robin fashion.

- **Fairness**: The scheduler ensures fairness by giving each UE an equal share of available resources during each scheduling cycle. This prevents any single UE from monopolizing network resources and ensures that all UEs have an opportunity to transmit data or receive service.

- **Scheduling Cycles**: In each scheduling cycle, the Round Robin scheduler iterates through the list of active UEs and assigns resources to each UE in turn. Once all UEs have been served, the scheduler begins a new cycle, repeating the process.

- **Efficiency**: While the Round Robin scheduler provides fairness among UEs, it may not always be the most efficient scheduling algorithm in terms of maximizing system throughput or meeting quality of service (QoS) requirements. Other scheduling algorithms, such as proportional fair scheduling or dynamic scheduling based on channel conditions, may be employed to optimize resource allocation and improve overall system performance.

- **Use Cases**: Round Robin scheduling is often used in scenarios where fairness is a primary concern and there are no strict QoS requirements or variations in channel conditions among UEs. It is commonly employed in low-complexity systems or in situations where the network load is relatively balanced across UEs.

Overall, the Round Robin scheduler provides a simple and straightforward approach to resource allocation in 5G networks,
ensuring fairness among UEs while maintaining a relatively uniform distribution of network resources. However, in more
complex scenarios, alternative scheduling algorithms may be employed to achieve better performance and efficiency.


.. autoclass:: toolkit5G.Scheduler.RoundRobinScheduler
:members:
:exclude-members: call, build, displayUEallocation


.. automethod:: toolkit5G.Scheduler.RoundRobinScheduler.displayUEallocation
:noindex:

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Link Adaptation
===============

Link adaptation in 5G networks refers to the process of dynamically adjusting transmission parameters, such as
modulation, coding, and transmit power, to optimize the communication link between the base station (gNodeB) and the
user equipment (UE). The goal of link adaptation is to maximize spectral efficiency, throughput, and reliability while
adapting to changing channel conditions and user requirements.

Key aspects of link adaptation in 5G networks include:

- **Modulation and Coding Scheme (MCS) Selection**: Link adaptation involves selecting the appropriate modulation and coding scheme based on channel conditions, signal-to-noise ratio (SNR), and interference levels. Higher modulation schemes offer higher data rates but require better channel conditions, while lower modulation schemes provide greater robustness in adverse conditions.

- **Transmit Power Control**: Link adaptation also includes adjusting the transmit power level to optimize signal quality and coverage while minimizing interference and power consumption. Transmit power control helps maintain a balance between signal strength and interference levels, particularly in dense network deployments.

- **Channel Quality Feedback**: Link adaptation relies on feedback mechanisms to provide information about channel conditions, such as channel state information (CSI), received signal strength (RSSI), and signal-to-interference-plus-noise ratio (SINR). This feedback allows the gNodeB to make informed decisions about modulation, coding, and power adjustments.

- **Adaptive Modulation and Coding (AMC)**: AMC is a key feature of link adaptation that dynamically adjusts modulation and coding parameters based on real-time channel conditions. By adapting to variations in channel quality, AMC maximizes data rate and spectral efficiency while ensuring reliable communication.

- **Fast Link Adaptation**: In fast-changing channel environments, such as high-mobility scenarios or fading channels, fast link adaptation techniques are employed to quickly adjust transmission parameters in response to channel fluctuations. This helps maintain a stable and reliable communication link despite varying channel conditions.

Overall, link adaptation plays a crucial role in optimizing the performance of wireless communication systems by
continuously adjusting transmission parameters to match the prevailing channel conditions and user requirements. By
maximizing spectral efficiency and reliability, link adaptation contributes to achieving high data rates, low latency,
and seamless connectivity in 5G networks.

.. important::
Currently, link adaptation doesn't support power control.

.. autoclass:: toolkit5G.Scheduler.LinkAdaptation
:members:
:exclude-members: call, build, minSNRvalue

.. automethod:: toolkit5G.Scheduler.LinkAdaptation.minSNRvalue
:noindex:
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Rank Adaptation
===============

Rank adaptation in 5G MIMO (Multiple Input Multiple Output) systems refers to the dynamic adjustment of the number of
spatial streams or transmit/receive antennas used for communication based on the channel conditions and system
requirements. In simpler terms, it involves determining the optimal number of antennas or spatial streams to utilize
for transmitting and receiving data in a MIMO system.

Key aspects of rank adaptation in 5G MIMO systems include:

- **Channel Conditions**: Rank adaptation takes into account the quality of the wireless channel between the transmitter (base station) and receiver (user equipment). By monitoring channel characteristics such as signal-to-noise ratio (SNR), channel fading, and interference levels, the system can determine the appropriate rank or number of spatial streams to use for optimal communication.

- **Spatial Multiplexing**: MIMO systems exploit spatial diversity by transmitting multiple data streams simultaneously over multiple antennas. Rank adaptation adjusts the number of spatial streams to maximize data throughput while maintaining reliable communication under varying channel conditions. In favorable channel conditions, higher ranks with more spatial streams can be used for increased data rates, while in challenging conditions, lower ranks may be more suitable for improved reliability.

- **Spectral Efficiency**: Rank adaptation aims to maximize spectral efficiency by selecting the optimal rank configuration that achieves the highest data rate per unit of bandwidth. By dynamically adjusting the number of spatial streams, the system can adapt to changing channel conditions and traffic demands, thereby optimizing the utilization of available spectrum resources.

- **Feedback Mechanisms**: Rank adaptation relies on feedback mechanisms, such as channel state information (CSI) feedback from the receiver to the transmitter, to provide information about the channel conditions and enable adaptive transmission strategies. Based on the feedback, the transmitter can adjust the rank configuration to maximize performance and efficiency.

Overall, rank adaptation in 5G MIMO systems plays a critical role in optimizing system performance by dynamically
adjusting the spatial multiplexing configuration to match the prevailing channel conditions, traffic requirements,
and quality of service (QoS) constraints. By effectively utilizing spatial diversity, rank adaptation helps achieve
higher data rates, improved reliability, and enhanced spectral efficiency in wireless communication systems.




.. autoclass:: toolkit5G.Scheduler.RankAdaptation
:members:
:exclude-members: call, build


Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Resource Allocation
===================

This is the module which provides functions and classes that implement scheduler functionality at Tx or Base Station (BS) side of a communication link.
Typically a lower MAC functionality, using which a BS chooses a particular mcs index, code rate etc,. to each serving UE in a cell.

.. toctree::
:maxdepth: 5

ResourceAllocation/roundRobinScheduler.rst
26 changes: 20 additions & 6 deletions _sources/api/5G_Toolkit/[N]Scheduler/scheduler.rst.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,34 @@

Scheduler
=========
The Physical Layer (PHY) scheduler in a 5G base station (gNodeB) is responsible for managing the transmission of data
over the radio interface. It operates at the PHY layer, which is the lowest layer in the protocol stack and deals
directly with the transmission and reception of radio signals. The PHY scheduler makes decisions about how to allocate
radio resources, such as frequency, time, and transmit power, to different users or services to maximize system
performance and meet Quality of Service (QoS) requirements.

Components of the Physical Layer Scheduler in a 5G base station typically include:

- Resource Allocation: The scheduler determines which resources (frequency bands, time slots, etc.) to allocate to each user or service based on factors such as channel conditions, data rate requirements, and Quality of Service (QoS) constraints.

This is the module which provides functions and classes that implement scheduler functionality at Tx or Base Station (BS) side of a communication link.
Typically a lower MAC functionality, using which a BS chooses a particular mcs index, code rate etc,. to each serving UE in a cell.
- Precoder Matrix Selection for Beam-forming and MIMO (Multiple Input Multiple Output): In systems with multiple antennas, the scheduler may also decide on the beamforming weights or MIMO transmission schemes to improve signal quality and spatial efficiency.

- Link Adaptation: The scheduler dynamically adjusts transmission parameters such as modulation, coding, and transmit power to adapt to changing channel conditions and optimize spectral efficiency. The scheduler selects the appropriate modulation and coding scheme for each transmission based on channel conditions and user requirements. Higher modulation and coding schemes offer higher data rates but may be less robust in noisy or fading channels.

- Interference Management: The scheduler may also consider interference from other cells or users and mitigate its effects through techniques such as interference coordination, power control, or resource partitioning.

- PDCCH Scheduling: In 5G, monitoring and optimizing the blocking probability for PDCCH are essential for ensuring efficient resource allocation, maximizing system capacity, and delivering satisfactory performance in wireless networks. PDCCH Scheduler allocates resource for DCI transmission based on the coverage, resource available, QoS and scheduling strategy.

- Scheduling Metrics: Various metrics such as throughput, fairness, delay, and packet error rate are considered by the scheduler to make efficient scheduling decisions that optimize overall system performance and user experience.

Overall, the Physical Layer Scheduler plays a critical role in managing the radio resources of a 5G base station to
ensure efficient and reliable communication for all users and services within the network.


.. toctree::
:maxdepth: 5

PDCCHScheduler/pdcchScheduler


PDSCHScheduler/linkAdpatation
PDSCHScheduler/rankAdaptation
PDSCHScheduler/ResourceAllocation/roundRobinScheduler


Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ toolkit, please don't hesitate to contact us at toolkit5G@gigayasa.com. We would
.. toctree::
:maxdepth: 4

5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.ipynb
1.Time_Synchronization_using_PSS/Time_Synchronization.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Integration with SDRs
=====================
5G Toolkit can be easily integrated with most of the available software-defined radios (SDRs) boards which support
Python-based application programming interfaces (APIs). The users can replace the wireless channel models from our
tutorials or projects with the SDR for simulations and prototyping. Currently, we have integrated and tested only with
the following SDRs:


- Xilinx Zynq UltraScale + RFSoC Boards and other similar boards
- Boards compatible with `PYNQ API <https://nvlabs.github.io/sionna/api/mapping.html#demapping>`_.
- NI USRPs (B200, B205-mini, B210)
- SDR Boards Compatible with `UHD Python API <https://kb.ettus.com/UHD_Python_API>`_.
- Analog Devices SDR Boards such as Pluto, Phasor
- SDR Boards compatible with `ADI Python API <https://analogdevicesinc.github.io/pyadi-iio/>`_.

.. note::
In any form, the above list of SDRs is not exhaustive. There are many SDRs outside of above list which can be integrated with the 5G Toolkit but are not included solely because of their unavailability with us at this point of time.

This section contains tutorials that demonstrate how to integrate various SDRs with the 5G Toolkit. Our goal is to
provide at least one tutorial for each SDR family mentioned above. For SDRs belonging to the same family, the
implementation process should be similar. However, if you encounter any difficulties while integrating your SDR with our
toolkit, please don't hesitate to contact us at toolkit5G@gigayasa.com. We would be glad to assist you.

.. note::

All the tutorials will be organized in three scripts where
- Script-1: End to End emulation using a single SDR.
- Script-2: Transmitter side script implemented over SDR-1.
- Script-3: Receiver side script implemented over SDR-2.



** Tutorial **


.. toctree::
:maxdepth: 4

1.Time_Synchronization_using_PSS/Time_Synchronization.rst
2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.rst

Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,6 @@ toolkit, please don't hesitate to contact us at toolkit5G@gigayasa.com. We would
.. toctree::
:maxdepth: 4

5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.ipynb
1.Time_Synchronization_using_PSS/Time_Synchronization.rst
2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.rst
3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.rst
Loading

0 comments on commit 12e0d32

Please sign in to comment.