Automazione_Strumentazione_3_2014 - page 78

Aprile 2014
Automazione e Strumentazione
RETI INDUSTRIALI
tecnica
78
Esempiodi codifica8B9B
Un breve esempio permette di chiarire il
funzionamento pratico del codec e di evi-
denziarne l’intrinseca semplicità. Si con-
sideri il valore
0xf0
, che inCAN verrebbe
codificatosuunsolobyte (quindi conDLC
= 1). La sequenza di bit trasmessa sul bus
che corrisponde ai campi DLC e dati in
questo caso è
0001
1111000001
. Come si
può vedere, in fase di trasmissione il con-
trollerCANaggiunge2 stuff bit (sottoline-
ati).
Dalla
υ
tabella 2
si ricava che, per la
codifica 8B9Bdello stessodato,DLC=2.
Essendo il valore di DLC pari, BB viene
impostato a 1. Ogni singolo byte del pay-
load (solo uno, in questo caso)
viene quindi codificato usando
laFLT.Poiché0xf0èmaggiore
di 127, e si intende sfruttare
la simmetria della FLT della
υ
tabella 1
, occorre comple-
mentare tale valore (not 0xf0
A
0x0f
) prima di usarlo come
indice nella tabella (FLT
[0x0f]
A
001010110
). La codeword
8B9B relativa al byte 0xf0 si
ottiene tramite ulteriore com-
plementazione (
110101001
).
Per i valori minori o uguali a
127 la codifica è ottenuta effet-
tuando direttamente l’accesso
in
tabella
.
Concatenando poi BB, la (sin-
gola) codeword su 9 bit e il
campoPAD, si ottiene il conte-
nuto del campo dati che dovrà
essere passato al controller
CAN per la trasmissione. La
sequenza di bit trasmessa sul
bus che corrisponde ai campi
DLCedatiè
00101110101001
010101
. Come si può vedere,
la dimensione del messaggio è
aumentata a causa della codi-
fica 8B9B. Tuttavia, grazie
ad essa nessuno stuff bit
viene inseritonel campodati
in fase di trasmissione, otte-
nendo quindi una notevole
riduzione dei jitter di comu-
nicazione. Questo significa
anche che la durata delmes-
saggio può essere stimata in
fase di progetto con mag-
gioreaccuratezza.
Prestazioni
Occorre separare chiaramente le presta-
zioni della
codifica
da quelle del rela-
tivo
codec
. La codifica 8B9B permette
di ridurre il numero di stuff bit
aggiunti in fase di trasmissione
dal controller CAN. L’entità del
miglioramento dipende anche dal
contenuto dei messaggi scambiati.
In
[6]
sono state considerate 3
leggi di generazione per il traffico,
che modellano rispettivamente
dispositivi di I/O digitali (D) e
analogici (A), nonché una genera-
zionecasualedi valori (R).
La
υ
figura 2
mostra la distribu-
zione statistica delle latenze di trasmis-
sione per CAN con e senza 8B9B. Come
si può notare, il jitter (larghezza della
distribuzione) si riduce inmodo tangibile
graziead8B9B, soprattuttoconun traffico
di tipoanalogico (nel qual caso si passada
fluttuazionimassimedi 18bit a soli 4bit).
Ridurre il numero di stuff bit è tuttavia
scarsamente utile se il codec introduce
esso stesso una variabilità nella codifica
e decodifica del campo dati. È quindi
necessario utilizzare soluzioni hardware
o, in alternativa, codec software altamente
ottimizzati
come quello da noi realizzato
e testato. Occorre considerare inoltre l’ul-
teriore jitter introdotto a livellodell’
inter-
faccia
fra il software e il controller CAN,
problemaaffrontatoe risolto in
[7]
.
Il codec, più diffusamente descritto in
[4]
, è costituito da un modulo software
realizzato in linguaggio ANSI C. Le sue
caratteristiche, in termini di occupazione
dimemoriae ritardodi elaborazione, sono
state analizzate sui microcontrollori NXP
LPC2468 (basato su processore ARM7 a
72 MHz) e LPC1768 (basato su proces-
sore Cortex-M3 a 100 MHz), entrambi
rappresentativi della classe di sistemi
embedded cui la tecnica di codifica qui
descrittaprevalentementeè rivolta.
La
υ
figura 3
illustra le prestazioni del
codec per le due architetture conside-
rate, dopo le opportune ottimizzazioni,
mostrando il ritardo di codifica e decodi-
fica (in ordinata) in funzione della dimen-
sione del payload originale (in ascissa).
Si osservi come il ritardo complessivo
di codifica non superi mai gli 8 μs per
il processore ARM7 e i 5 μs per il più
veloce processore CM3. Tuttavia, aspetto
di ancor maggiore rilevanza è che, sem-
pre grazie alle ottimizzazioni effettuate
sul codice sorgente, il ritardo del codec è
Figura 2 - Distribuzione delle latenze in CAN e 8B9B.
Figura 3 - Ritardo di elaborazione del codec 8B9B.
Tabella 2 - Confronto fra payload originale e codifica 8B9B.
1...,68,69,70,71,72,73,74,75,76,77 79,80,81,82,83,84,85,86,87,88,...102
Powered by FlippingBook