Automazione_Strumentazione_3_2014 - page 77

RETI INDUSTRIALI
tecnica
Automazione e Strumentazione
Aprile 2014
77
di arbitraggio compostodall’identificatore
del messaggio (ID) e dal bit di richiesta
remota (RTR). Seguonopoi 2bit riservati,
il campo lunghezza dei dati (DLC) codi-
ficato su 4 bit, il campo dati (DATA) nel
quale sono memorizzate le informazioni
che devono essere scambiate e un campo
di controllo (CRC) di 15 bit. Concludono
la trama il delimitatore di CRC (CDEL),
il campo di acknowledgement (ACK slot)
e il relativo delimitatore (ADEL), ognuno
codificato su un bit, e infine il campo di
fine trama (EOF) di 7bit.
È importante notare che il meccanismo di
bit stuffing opera solo sulla prima parte
della trama, ovvero sulla porzione com-
presa tra il bit SOF e il campoCRC com-
preso. Le uniche parti della trama il cui
valore può essere effettivamente manipo-
latodalle applicazioni che si interfacciano
al controller CAN sono il campo di arbi-
traggio (ed in particolare l’identificatore)
e il campo dati. Infatti, il campo CRC è
calcolato autonomamente dal controller
mentre il campo DLC dipende diretta-
mente dalla lunghezza (in byte) dei dati.
Ne consegue che l’unicomodoper ridurre
ilnumerodi stuffbit èselezionare inmodo
opportuno l’identificatore del messaggio
(configurato staticamente) e adottare una
codificadinamicaper il campodati.
Codifica8B9B
La codifica 8B9B è particolarmente sem-
plice. Ogni singolo byte del payload ori-
ginale del messaggio viene convertito
separatamente in una sequenza di 9 bit
(
codeword
), Tali codeword, opportuna-
mente concatenate, costituiranno il conte-
nuto finale del campo dati da trasmettere.
Ovviamente, questo procedimento non
si applica nel caso molto particolare (ma
lecito) in cui il payload non sia presente,
poiché nessuna conversione è di fatto
necessaria.
Le codeword utilizzate
per la conversione devono
soddisfare i due requisiti
seguenti:
1)esse non devono conte-
nere sequenze di 5 bit
consecutivi allo stesso
livello. Per esempio, la
sequenza 010000011 è
illegale.
2)Durante il processo
di concatenazione, la
condizione precedente
non deve verificarsi
neppure a cavallo di
codeword adiacenti. A
tal fine, è sufficiente
scartare anche tutte
quelle sequenze di 9 bit
che iniziano o termi-
nanocon3bit dello stesso
valore. Per esempio, la
sequenza 010101000 è inadatta poiché,
sedovesseessere seguitadalla sequenza
(valida) 001010101, darebbe luogo
alla stringa complessiva 010101000
001010101 (che include 5 bit uguali in
successione).
Le sequenze valide possono essere age-
volmente determinate mediante un sem-
plicissimoalgoritmo. I risultati indicano la
disponibilità di
258 codeword.
Di queste, 256
sono utilizzate
per codificare
ogni possibile
valore espri-
mibile su un
byte, mentre le
due rimanenti,
denominate J
(001000010 e
K(110111101)
possono essere utilizzate come sequenze
di escape. L’insieme ordinato delle
codeword costituisce una tabella di tra-
duzione diretta, altrimenti denominata
forward lookup table
(FLT), che può
essere impiegataper il processodi conver-
sione (codifica) dei byte del payload. Un
possibile esempio di FLT è riportato nella
υ
tabella1
.
FLTgodeper costruzionedi unaproprietà
di
simmetria
, ovvero seY=FLT[X] allo-
ra
not
Y = FLT[
not
X]. Questa proprietà
può essere utilizzata per dimezzare la di-
mensione della tabella e la relativa occu-
pazione di memoria senza impatto alcuno
sulleprestazioni del codec.
Breakbit e campodi Padding
Il campo dati di ogni messaggio CAN è
preceduto dal campo DLC, il cui conte-
nuto non può essere in alcun modo rico-
dificato in quanto usato per indicare al
ricevitore la dimensione dei dati stessi.
Questo implica che, in particolari condi-
zioni, potrebbero apparire 5 bit adiacenti
uguali a cavallo fra i campi DLC e dati.
Per evitare che ciò accada è possibile uti-
lizzare il primo bit del campo dati ridefi-
nendolo come
break bit
(BB). BB viene
impostato conunvalore complementare a
quello del bit meno significativo di DLC.
In pratica, BB è 1 quando DLC è pari
mentre è0 in caso contrario.
Un secondo aspetto da considerare nel
processo di codifica è che la sequenza
di bit ottenuta tramite concatenazione di
codeword non occupa un numero intero
di byte. Si può porre rimedio a questo
problema ridefinendo la porzione inuti-
lizzata dell’ultimo byte del campo dati
come campo di
padding
(PAD). Per evi-
tare l’aggiuntadi stuff bit, il contenutodel
campo PAD viene impostato dal trasmet-
titore ad una sequenza alternata di bit (ad
esempio, 0101…).
Il formato completo della codifica 8B9B
è illustrato nella parte superiore della
υ
figura1
.
Figura 1– Formato della trama CAN e 8B9B.
Tabella 1 - Forward Lookup Table usata per la codifica 8B9B.
1...,67,68,69,70,71,72,73,74,75,76 78,79,80,81,82,83,84,85,86,87,...102
Powered by FlippingBook