ArPhy: Difference between revisions

From ciapini
Jump to navigation Jump to search
No edit summary
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
''physical layer per canali di comunicazione disperati''
[[Category:Telecom]]
''physical layer (OSI/1+2) per canali di comunicazione disperati''


http://nebbia.esiliati.org/repos/cesco/armando/armando.X/phy/arphy/
arPhy si occupa di:
* line coding
* symbol sync
* [[#Framing|framing]]
* modulation
* [[#FEC|FEC]]
* [[#Interleaver]]
caratteristiche:
* input PDU: 32 bit
* input PDU: 32 bit
* modulation alphabet sizes: 2,4,16
* modulation alphabet sizes: 2,4,16
* baud rate: 0.5,1,5,10,50,100,500,1000 bps


== FEC ==
== Framing ==


algoritmo di FEC: [[Hadamard code]]
http://nebbia.esiliati.org/repos/cesco/armando/armando.X/modem/preamble.c


la dimensione del blocco di uscita del FEC e' di 2^input-1
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}.


il grado di ridondanza del FEC puo essere scelto a seconda della dimensione del blocco di input:
== FEC ==
* k = 4bit -> 8 bit
le opzioni sono:
* k = 6bit -> 32 bit (come allinearlo?)
* nessun FEC
* k = 8bit -> 128 bit
* [http://pub.svn.esiliati.org/repos/ciapini/armando/armando.X/phy/arphy/arphy_fec.c Hadamard code]: la dimensione del blocco di uscita del FEC e' di 2^input-1, e' non-ottimale per ''k'' maggiore di 7 [http://www.math.unl.edu/~djaffe2/papers/sevens.html].
 
applicato a una PDU arNet 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 [http://www.math.unl.edu/~djaffe2/papers/sevens.html].''


letture:
letture:
Line 26: Line 32:
* http://www.ece.ualberta.ca/~hcdc/Library/ErrorContrClass/DecodingBasic.pdf
* http://www.ece.ualberta.ca/~hcdc/Library/ErrorContrClass/DecodingBasic.pdf
* https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction
* 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 ==
== Interleaver ==
http://pub.svn.esiliati.org/repos/ciapini/armando/armando.X/phy/arphy/arphy_interleaver.c


i possibili problemi 'descrivibili' del path di trasmissione sono:
i possibili problemi 'descrivibili' del path di trasmissione sono:
Line 42: Line 51:


che comportano la perdita di piu simboli contigui o la perdita sistematica di un determinato simbolo.
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.
il sistema piu rudimentale e' l'interleaving elicoidale, ad esempio una rotazione nel senso della sequenza combinata con una rotazione nel senso del simbolo.
l'incremento sarebbe di un bit/simbolo in senso verticale e di un sottoblocco + un simbolo in senso orizzontale
<source lang="C">
uint8_t InterleaveBlock(uint8_t *InData, int16_t *DataMatrix, uint8_t *ModulationSymbolsBuffer){
  uint8_t BitPos, SymbolOffset, BitOffset;
  for (uint8_t FECBlock = 0; FECBlock < HadamardCodesPerInterleaverBlock; FECBlock++){
      BlockEncodeChar(DataMatrix, InData[FECBlock]);
      for (uint8_t FECBit = 0; FECBit < HadamardCodeSize; FECBit++){
BitPos = (FECBlock * HadamardCodeSize) + FECBit;
BitOffset = BitPos % BitsPerModulationSymbol;
SymbolOffset = ((FECBit * HadamardCodeSize) + FECBlock) % SymbolsPerInterleaverBlock;
ModulationSymbolsBuffer[SymbolOffset] |= (DataMatrix[FECBit] & 0b1) << BitOffset;
// printf("%u,%u,%u\n", SymbolOffset, BitOffset, BitPos);
      }
//      printf("\n in FEC: ");
//      printbuf(DataMatrix, HadamardCodeSize, 8);
  }
}
</source>
che produce una disposizione [http://ciapini.contaminati.net/wiki/images/Interleaver8.png], dove il colore e' l'ordine dei bit in ingresso (dal blu al rosso), la x e' il tempo e la y il simbolo in uscita


i parametri rilevanti  da passare all'interleaver sono:
i parametri rilevanti  da passare all'interleaver sono:
Line 73: Line 56:
*  numero di simboli per interleaver block
*  numero di simboli per interleaver block


http://cgit.brokenbydesign.org/cgit.cgi/armando.git/plain/interleaver.c
Letture:
* http://arxiv.org/abs/0805.1598
* https://web.njit.edu/anl/papers/04CASMag.pdf


== Soft-Decision ==
== Soft-Decision ==
Line 80: Line 65:
* rapporto tra il tono di picco e la media degli altri toni
* rapporto tra il tono di picco e la media degli altri toni
* valore del picco carattere nella trasformata di hadamard
* valore del picco carattere nella trasformata di hadamard
una cosa MOLTO carina da fare (dato che siamo in uno dei pochi casi in cui le risorse di calcolo sono ben piu grandi della banda) e' avere una qualche strategia di soft-decision pilotata dai valori in uscita dalla fft, magari triggerata da differenze tra l'energia nei bin inferiori a una data soglia.


== Controllo di Flusso ==
== Controllo di Flusso ==
vedi [[#Global Routed Transport Header]]


=== Start Block ===
=== Start Block ===
Line 92: Line 73:


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.
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.
lunghezza 8 simboli. alternando  simboli alla frequenza/fase 0 e simbolo all'estremo opposto della costellazione di simboli (frequenza massima/fase +180).


letture:  
letture:  
Line 99: Line 78:
* http://www.argreenhouse.com/society/TaCom/papers99/32_5.pdf
* http://www.argreenhouse.com/society/TaCom/papers99/32_5.pdf
* https://en.wikipedia.org/wiki/Gold_code
* https://en.wikipedia.org/wiki/Gold_code
 
* https://en.wikipedia.org/wiki/Barker_code
http://www.qsl.net/zl1bpu/
* http://www.qsl.net/zl1bpu/

Latest revision as of 19:28, 10 April 2017

physical layer (OSI/1+2) per canali di comunicazione disperati

http://nebbia.esiliati.org/repos/cesco/armando/armando.X/phy/arphy/

arPhy si occupa di:

caratteristiche:

  • input PDU: 32 bit
  • modulation alphabet sizes: 2,4,16
  • baud rate: 0.5,1,5,10,50,100,500,1000 bps

Framing

http://nebbia.esiliati.org/repos/cesco/armando/armando.X/modem/preamble.c

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
  • Hadamard code: la dimensione del blocco di uscita del FEC e' di 2^input-1, e' non-ottimale per k maggiore di 7 [1].

letture:

Interleaver

http://pub.svn.esiliati.org/repos/ciapini/armando/armando.X/phy/arphy/arphy_interleaver.c

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.

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: