ArPhy
physical layer (OSI/1) per canali di comunicazione disperati
arPhy si occupa di:
- line coding
- symbol sync
- #Framing
- modulation
- #FEC
- #Interleaver
caratteristiche:
- input PDU: 32 bit
- modulation alphabet sizes: 2,4,16
- baud rate: 0.5,1,5,10,50,100,500,1000 bps
Framing
Il preambolo di un frame arphy e' un Wikipedia:Barker code con N=13, ossia {1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1}.
FEC
le opzioni sono
- nessun FEC
- FEC con Hadamard code
la dimensione del blocco di uscita del FEC e' di 2^input-1
il grado di ridondanza del FEC puo essere scelto a seconda della dimensione del blocco di input:
- k = 4bit -> 8 bit
- k = 8bit -> 128 bit
applicato a una PDU di 32bit:
- k = 4, 8*4 -> 8*8 -> 64bit
- k = 8, 4*8 -> 128*8 -> 1024bit
forse ha senso considerare dei block codes diversi da quello di Hadamrd, che e' non-ottimale per k maggiore di 7 [1].
letture:
- http://www.ece.ualberta.ca/~hcdc/Library/ErrorContrClass/DecodingBasic.pdf
- https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction
- http://hal.univ-brest.fr/docs/00/61/78/81/PDF/cortex_prototyping.pdf
Interleaver
i possibili problemi 'descrivibili' del path di trasmissione sono:
problemi di spettro:
- interferenze coerenti (toni sovrapposti a uno dei nostri bin)
- errori della risposta in frequenza (equalizzazione..)
entrambi comportano il danneggamiento sistematico di una o piu determinate lettere dell'alfabeto in ogni simbolo
problemi nella sequenza di simboli:
- disturbo impulsivo prolungato su tutto lo spettro
- disturbo impulsivo ciclico su tutto lo spettro
che comportano la perdita di piu simboli contigui o la perdita sistematica di un determinato simbolo.
per mitigare questi problemi puo essere conveniente una qualche forma di interleaving sia nel dominio del tempo che in quello del codice.
uint16_t arphy_index_interleave(uint16_t in, uint8_t x, uint8_t y) { uint16_t out; out = in * (x + 1); out = out % (x * y); return out; } uint16_t arphy_index_deinterleave(uint16_t in, uint8_t x, uint8_t y) { uint16_t out; out = in + (in * x); out = out % (x * y); return out; }
i parametri rilevanti da passare all'interleaver sono:
- dimensione della costellazione
- numero di simboli per interleaver block
Letture:
Soft-Decision
nella catena di demodulazione si possono ottenere diversi indici di affidabilita
- rapporto tra il tono di picco e la media degli altri toni
- valore del picco carattere nella trasformata di hadamard
Controllo di Flusso
Start Block
indica l'inizio di una trasmissione. precede sempre un #Header Block.
questo riferimento deve avere autocorrelazione tendente a zero, essere abbastanza lungo (raro) da evitare false partenze, abbastanza corto da non creare overhead. viene usato per la sincronizzazione di simbolo e per l'equalizzazione.
letture: