docs(architecture): Remove HTML Formatting: retain only the contents and not styling

This commit is contained in:
Shubhika Garg
2026-01-22 10:55:05 +01:00
committed by Shubhika Garg
parent ed2acc135c
commit a9ba6290b9
+29 -58
View File
@@ -1,21 +1,3 @@
<style type="text/css" rel="stylesheet">
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 18px;
color: #fff;
background-color: #110F14;
}
h2 { margin-left: 20px; }
h3 { margin-left: 40px; }
h4 { margin-left: 60px; }
.func2 { margin-left: 20px; }
.func3 { margin-left: 40px; }
.func4 { margin-left: 60px; }
</style>
```mermaid ```mermaid
flowchart TB flowchart TB
@@ -83,7 +65,6 @@ end
``` ```
This tuto for 5G gNB design, with Open Cells main This tuto for 5G gNB design, with Open Cells main
{: .text-center}
# The main thread is in ru_thread() # The main thread is in ru_thread()
The infinite loop: The infinite loop:
@@ -97,10 +78,10 @@ The infinite loop:
(each sample has a incremental number representing a very accurate timing) (each sample has a incremental number representing a very accurate timing)
raw incoming data is in buffer called "rxdata" raw incoming data is in buffer called "rxdata"
We derivate frame number, slot number, ... from the RX timestamp We derivate frame number, slot number, ... from the RX timestamp
{: .func2}
## gNB_top() ## gNB_top()
only compute frame numbre, slot number, ... only compute frame number, slot number, ...
{: .func3}
## ocp_rxtx() ## ocp_rxtx()
main processing for both UL and DL main processing for both UL and DL
start by calling oai_subframe_ind() that trigger processing in pnf_p7_subframe_ind() purpose ??? start by calling oai_subframe_ind() that trigger processing in pnf_p7_subframe_ind() purpose ???
@@ -110,90 +91,87 @@ but not actual coherency (see below handle_nr_rach() assumes data is up-to-date)
The first part (in NR_UL_indication, uses the data computed by the lower part (phy_procedures_gNB_uespec_RX), but for the **previous** slot The first part (in NR_UL_indication, uses the data computed by the lower part (phy_procedures_gNB_uespec_RX), but for the **previous** slot
Then, phy_procedures_gNB_uespec_RX will hereafter replace the data for the next run Then, phy_procedures_gNB_uespec_RX will hereafter replace the data for the next run
This is very tricky and not thread safe at all. This is very tricky and not thread safe at all.
{: .func3}
### NR_UL_indication() ### NR_UL_indication()
This block processes data already decoded and stored in structures behind UL_INFO This block processes data already decoded and stored in structures behind UL_INFO
{: .func4}
* handle_nr_rach() * handle_nr_rach()
process data from RACH primary detection process data from RACH primary detection
if the input is a UE RACH detection if the input is a UE RACH detection
{: .func4}
* nr_schedule_msg2() * nr_schedule_msg2()
{: .func4}
* handle_nr_uci() * handle_nr_uci()
handles uplink control information, i.e., for the moment HARQ feedback. handles uplink control information, i.e., for the moment HARQ feedback.
{: .func4}
* handle_nr_ulsch() * handle_nr_ulsch()
handles ulsch data prepared by nr_fill_indication() handles ulsch data prepared by nr_fill_indication()
{: .func4}
* gNB_dlsch_ulsch_scheduler () * gNB_dlsch_ulsch_scheduler ()
the **scheduler** is called here, see dedicated chapter the **scheduler** is called here, see dedicated chapter
{: .func4}
* NR_Schedule_response() * NR_Schedule_response()
process as per the scheduler decided process as per the scheduler decided
{: .func4}
### L1_nr_prach_procedures() ### L1_nr_prach_procedures()
???? ????
{: .func4}
### phy_procedures_gNB_uespec_RX() ### phy_procedures_gNB_uespec_RX()
* nr_decode_pucch0() * nr_decode_pucch0()
actual CCH channel decoding form rxdataF (rx data in frequency domain) actual CCH channel decoding form rxdataF (rx data in frequency domain)
populates UL_INFO.uci_ind, actual uci data is in gNB->pucch populates UL_INFO.uci_ind, actual uci data is in gNB->pucch
{: .func4}
* nr_rx_pusch() * nr_rx_pusch()
{: .func4}
* extracts data from rxdataF (frequency transformed received data) * extracts data from rxdataF (frequency transformed received data)
{: .func4}
* nr_pusch_channel_estimation() * nr_pusch_channel_estimation()
{: .func4}
* nr_ulsch_extract_rbs_single() * nr_ulsch_extract_rbs_single()
{: .func4}
* nr_scale_channel() * nr_scale_channel()
{: .func4}
* nr_ulsch_channel_level() * nr_ulsch_channel_level()
{: .func4}
* nr_ulsch_channel_compensation() * nr_ulsch_channel_compensation()
{: .func4}
* nr_ulsch_compute_llr() * nr_ulsch_compute_llr()
this function creates the "likelyhood ratios" this function creates the "likelyhood ratios"
{: .func4}
* nr_ulsch_procedures() * nr_ulsch_procedures()
{: .func4}
* actual ULsch decoding * actual ULsch decoding
{: .func4}
* nr_ulsch_unscrambling() * nr_ulsch_unscrambling()
{: .func4}
* nr_ulsch_decoding() * nr_ulsch_decoding()
{: .func4}
* nr_fill_indication() * nr_fill_indication()
populate the data for the next call to "NR_UL_indication()" populate the data for the next call to "NR_UL_indication()"
it would be better to call **NR_UL_indication()** now instead of before (on previous slot) it would be better to call **NR_UL_indication()** now instead of before (on previous slot)
{: .func4}
### phy_procedures_gNB_TX() ### phy_procedures_gNB_TX()
* nr_common_signal_procedures() * nr_common_signal_procedures()
generate common signals generate common signals
{: .func4}
* nr_generate_dci() * nr_generate_dci()
generate DCI: the scheduling informtion for each UE in both DL and UL generate DCI: the scheduling informtion for each UE in both DL and UL
{: .func4}
* nr_generate_pdsch() * nr_generate_pdsch()
generate DL shared channel (user data) generate DL shared channel (user data)
{: .func4}
### nr_feptx_prec() ### nr_feptx_prec()
tx precoding tx precoding
{: .func3}
### nr_feptx0 ### nr_feptx0
do the inverse DFT do the inverse DFT
{: .func3}
### tx_rf() ### tx_rf()
send radio signal samples to the RF board send radio signal samples to the RF board
the samples numbers are the future time for these samples emission on-air the samples numbers are the future time for these samples emission on-air
{: .func3}
# Scheduler # Scheduler
@@ -483,12 +461,5 @@ NGAP would be a itti thread as is S1AP (+twin thread SCTP that is almost void pr
About all messages are exchanged with RRC thread About all messages are exchanged with RRC thread
<div class="panel panel-info">
**Note**
{: .panel-heading}
<div class="panel-body">
</div>
</div>