Klasa za reprezentaciju LTE resource grid-a i mapiranje PSS i PBCH simbola.
Resource grid je dvodimenzionalna matrica kompleksnih brojeva dimenzija
(12 * NDLRB, broj_OFDM_simbola), gdje redovi predstavljaju podnosioca
(subcarriere), a kolone OFDM simbole.
Parametri
----------
ndlrb : int, opcionalno
Broj downlink resource blokova (NDLRB). Za 1.4 MHz LTE vrijedi 6.
num_subframes : int, opcionalno
Broj LTE subfrejmova u gridu.
normal_cp : bool, opcionalno
Ako je True, koristi se normalni CP (14 simbola po subfrejmu),
u suprotnom prošireni CP (12 simbola po subfrejmu).
Atributi
--------
ndlrb : int
Broj downlink resource blokova.
num_subframes : int
Broj subfrejmova u gridu.
normal_cp : bool
Označava da li se koristi normalni ili prošireni CP.
num_subcarriers : int
Ukupan broj podnosioca (12 * ndlrb).
num_symbols_per_subframe : int
Broj OFDM simbola po subfrejmu (14 ili 12).
num_symbols_total : int
Ukupan broj OFDM simbola u gridu.
grid : np.ndarray (complex128)
Kompleksna matrica oblika (num_subcarriers, num_symbols_total)
koja predstavlja LTE resource grid.
Primjer
-------
>>> from transmitter.resource_grid import ResourceGrid
>>> rg = ResourceGrid(ndlrb=6, num_subframes=1, normal_cp=True)
>>> rg.grid.shape
(72, 14)
| None transmitter.resource_grid.ResourceGrid.map_pbch |
( |
| self, |
|
|
np.ndarray | pbch_symbols, |
|
|
Iterable[int] | pbch_symbol_indices, |
|
|
Optional[np.ndarray] | reserved_re_mask = None ) |
Mapira PBCH QPSK simbole u resource grid (centar 6 RB).
PBCH se mapira na zadane OFDM simbole (tipično l = 7, 8, 9, 10
u subfrejmu 0 za normalni CP), u centralnih 6 resource blokova
(NDLRB = 6). Ako je zadana `reserved_re_mask`, PBCH preskače te RE.
Parametri
----------
pbch_symbols : np.ndarray (complex128)
Jednodimenzionalni niz kompleksnih QPSK simbola (npr. 240 simbola
za normalni CP nakon CRC, konvolucijskog kodiranja i
rate matchinga).
pbch_symbol_indices : Iterable[int]
Indeksi OFDM simbola (kolone u gridu) u koje se PBCH mapira.
reserved_re_mask : np.ndarray (bool), opcionalno
Bool matrica istih dimenzija kao `grid`, gdje je True na
pozicijama koje su rezervisane (CRS itd.). PBCH se ne mapira
na te resource elemente.
Povratna vrijednost
-------------------
None
Funkcija radi in-place i mijenja atribut `grid` unutar objekta.
Izuzeci
-------
AssertionError
Ako dimenzije grida ne odgovaraju 12 * NDLRB,
ako je neki indeks u pbch_symbol_indices van opsega,
ili ako reserved_re_mask nije istih dimenzija kao grid.
Primjer
-------
>>> from transmitter.resource_grid import ResourceGrid
>>> import numpy as np
>>> rg = ResourceGrid(ndlrb=6)
>>> pbch = np.ones(240, dtype=complex)
>>> rg.map_pbch(pbch_symbols=pbch, pbch_symbol_indices=[7, 8, 9, 10])
| None transmitter.resource_grid.ResourceGrid.map_pss |
( |
| self, |
|
|
np.ndarray | pss_sequence, |
|
|
int | symbol_index ) |
Mapira PSS sekvencu u centar resource grid-a na zadati OFDM simbol.
PSS sekvenca dužine 62 se mapira na 62 uzastopna resource elementa
(RE) oko DC komponente, u skladu sa specifikacijom za NDLRB = 6.
Za normalni CP i subfrejm 0, PSS je u zadnjem simbolu slota 0 (l = 6).
Parametri
----------
pss_sequence : np.ndarray (complex128)
Kompleksni niz dužine 62 koji predstavlja PSS sekvencu
u frekvencijskom domenu (Zadoff–Chu).
symbol_index : int
Indeks OFDM simbola (kolona) u koji se PSS mapira.
Mora biti u opsegu [0, broj_OFDM_simbola - 1].
Povratna vrijednost
-------------------
None
Funkcija radi in-place i mijenja atribut `grid` unutar objekta.
Izuzeci
-------
AssertionError
Ako dimenzije grida ne odgovaraju 12 * NDLRB.
Ako PSS sekvenca nema tačno 62 elementa.
Ako je symbol_index van važećeg opsega.
Primjer
-------
>>> from transmitter.resource_grid import ResourceGrid
>>> import numpy as np
>>> rg = ResourceGrid(ndlrb=6)
>>> pss = np.ones(62, dtype=complex)
>>> rg.map_pss(pss_sequence=pss, symbol_index=6)
>>> rg.grid[0, 6] # jedan od mapiranih RE
(1+0j)