SONAR-INFO-p56
Le matrici di correlazione a 16 bit 1)Generalità 2)Cenno sulle matrici di correlazione a 8 bit 3)Il software per la costruzione della matrice a 8 bit 4)Il software per la costruzione della matrice a 16 bit 5)Le routine di controllo per le matrici a 16 bit 6)Conclusioni
Le matrici di correlazione sono la soluzione via software dei processi per la ricerca della coerenza
tra segnali a due stati ( si veda p5 : par. 1.4; par. 2.3 ).
L'impiego delle matrici, tramite la loro interrogazione, si rivela il metodo molto più
veloce che non il richiamo di una subroutine che svolga, al momento, tutto l'iter di calcolo richiesto
per la correlazione a due stati da svolgere su un considerevole numero di coppie di segnali idrofonici.
Le citate soluzioni sono state alla base dello studio FALCON ( si veda p4 ), attraverso il
quale si sono elaborati a mezzo P.C. gruppi di 8 segnali mediante matrici di correlazione a 8 bit.
Il processo menzionato, illustrato sommariamente secondo la disposizione circuitale di figura 1, è
indicativo di un qualsiasi diverso impiego; in figura 1 è mostrata la differenza tra la correlazione
via hardware ( in celeste ) e la correlazione di matrice su P.C. ( in giallo ) .
E' fondamentale osservare che per la realizzazione di più fasci, come normalmente accade, l'hardware viene
moltiplicato per il numero di essi con un notevole appesantimento dell'elettronica di processo;
a ciò si sopperisce invece con un più fattibile incremento del numero delle matrici software.
Nel continuo sviluppo della tecnica dei calcolatori il passaggio dalle matrici a 8 bit a quelle a 16 bit è uno
strumento in più nelle mani del progettista.
Il confronto tra la soluzione di correlazione in hardware per basi a 16 sensori e la soluzione con
matrici di correlazione a 16 bit è riportata in figura 2.
La maggiore difficoltà nel passaggio tra le 8 bit e le
16 bit consiste nel controllo di quest'ultime che implicando ben 65536 dati non consentono la loro
tabulazione così come fatto, invece, per le 8 bit che coinvolgono soltanto 256 dati.
Vediamo come risolvere questo problema iniziando da un esame sommario del concetto di matrice di correlazione.
Se i segnali di una base ricevente a 8 idrofoni ( 4 coppie di sensori ) sono amplificati, filtrati, limitati in ampiezza
a due stati ( 0 = 0V; 1 = +5V ) possono essere inviati ad un P.C. ( vedi figura 1 ) che è in grado di leggere la sequenza
dei segni 0 ed 1, come un valore numerico Y in forma binaria, e ricavare da esso il corrispondente
grado di correlazione C esistente tra le 4 coppie di tensioni idrofoniche.
Questo processo utilizza una matrice di correlazione a 8 bit, implementata nel P.C, mediante la quale
si esegue la conversione immediata tra numero all'ingresso del P.C. stesso e il valore corrispondente
della somma dei quattro valori di correlazione tra i segnali delle quattro coppie d'idrofoni simmetriche
rispetto al centro della base.
E' naturale che un processo così complicato non possa essere illustrato chiaramente in poche righe ;
una descrizione completa è visionabile su p4 - par. 11.
Un esempio della matrice ad 8 bit, riportata su p4, è di seguito mostrata sotto forma di tabella di
riferimento e controllo:
Nella tabella si leggono le 256 corrispondenze tra i numeri Y all'ingresso del P.C. e la somma dei quattro
coefficienti di correlazione attribuibili alle quattro coppie di segnali idrofonici; se ad esempio
il valore decimale del numero binario all'ingresso del P.C. è y = 235 il valore della somma
dei quattro coefficienti di correlazione sarà pari a C = 2.
Il software per la costruzione della matrice, sviluppato in VB, è sotto riportato e commentato :
Dim I8(256) As Integer 'dichiarazione dimensione matrice
For x = 0 To 255 ' inizio anello di calcolo
Y1 = x And 15 'si isolano i 4 bit msb di x
Y2 = x And 240 'si isolano i 4 bit MSB di x
y3 = Int(Y2 / 16)'si spostano i 4 bit MSB al posto di msb creando y3
' si capovolge l'ordine dei bit di y3 per ottenere y4
y4 = Int((y3 And 1) * 8) + Int((y3 And 2) * 2) + Int((y3 And 4) / 2) + Int((y3 And 8) / 8)
Y5 = Abs((Y1 Xor y4) - 15) ' si esegue EXOR tra y1 e y4
' si sommano i quattro contributi di correlazione
Y6 = (Y5 And 1) + ((Y5 And 2) / 2) + ((Y5 And 4) / 4) + ((Y5 And 8) / 8)
I8(x) = Y6 'si carica la matrice I8 con i 256 valori del calcolo
Next x 'chiusura del ciclo di calcolo
Se la matrice viene interrogata via software, ad esempio con le istruzioni:
C36 = I8(36)
Print "C36 ="; C36
la stampa indicherà, in conformità alla tabella mostrata nel 2),
C36 = 4
In modo analogo può essere interrogata tutta la matrice controllandola, con relativa semplicità,
secondo la tabella di riferimento mostrata nel paragrafo 2).
Il software della matrice a 16 bit è più complicato di quello a 8 bit pur seguendo la
stessa logica d'impostazione; la routine in oggetto è la seguente:
Dim I16(65536) As Integer ' dichiarazione matrice
For x = 0 To 65535 ' inizio ciclo di calcolo
Y1 = x And 255 ' si isolano gli 8 bit msb di x
Y2 = x And 65280 ' si isolano gli 8 bit MSB di x
y3 = Int(Y2 / 256) 'si spostano gli 8 bit MSB al posto di msb creando y3
' si capovolge l'ordine dei bit di y3 per ottenere y4
y4 = Int((y3 And 1) * 128) + Int((y3 And 2) * 32) + Int((y3 And 4) * 8) + Int((y3 And 8) * 2) +
+ Int((y3 And 16) / 2) + Int((y3 And 32) / 8) + Int((y3 And 64) / 32) + Int((y3 And 128) / 128)
' si esegue EXOR tra y1 e y4
Y5 = Abs((Y1 Xor y4) - 255)
' si sommano gli 8 contributi di correlazione
Y6 = (Y5 And 1) + ((Y5 And 2) / 2) + ((Y5 And 4) / 4) + ((Y5 And 8) / 8) + ((Y5 And 16) / 16) +
+ ((Y5 And 32) / 32) + ((Y5 And 64) / 64) + ((Y5 And 128) / 128)
I16(x) = Y6 ' si carica la matrice I16 con i 65536 valori del calcolo
Next x 'chiusura dell'anello
L'interrogazione della matrice a 16 bit, a scopo di controllo, è difficoltosa mancando la tabella delle corrispondenze
disponibile invece per gli 8 bit. D'altra parte non è pensabile l'accettazione della matrice ottenuta
dal software sopra indicato senza alcun riscontro sulla sua corretta implementazione sul P.C.
A questo scopo sono state studiate due routine in VB che consentono un ottimo controllo a campione;
questo argomento è trattato nel seguente paragrafo.
La prima routine per il controllo consiste in una copia, assolutamente fedele, della routine di costruzione
della matrice implementata nel P.C. nel quale la matrice stessa deve essere utilizzata.
Alla copia del programma si aggiungono poche istruzioni d'interrogazione della matrice stessa:
Private Sub Command1_Click()
k = Val(Text1.Text)
Print I16(k)
End Sub
Inserendo nel TextBox un qualsiasi numero Y inferiore od uguale ad 65535 e la successiva pressione
di Command1 si ha la presentazione video del valore di correlazione C ottenuto dopo l'interrogazione
della matrice in esame.
Ripetendo l'interrogazione per qualsivoglia numero della gamma indicata è possibile registrare diverse
coppie Yn - Cn per la successiva fase di controllo.
La seconda routine di controllo si avvale del pannello di lavoro mostrato in figura 3:
questo richiede:
a)- l'abilitazione di OptionButton " man."
b)- l'inserzione nel TextBox dei primo dei valori Y1 registrato in precedenza con C1 (con la prima
routine di controllo)
c)- il click sul Form
compaiono, in due Label, sia la stringa binaria relativa al decimale Y1, sia il valore di C1'
( come numero di coincidenze) dedotto dal programma di controllo in base alle simmetrie della stringa
menzionata; il valore di C1' dovrà essere uguale a C1.
Procedendo in tal modo per un considerevole numero di coppie Y - C, registrate con la prima routine,
si potrà avere la certezza che la matrice di correlazione implementata nel P.C. risponde alle attese.
Con l'abilitazione di OptionButton " cas.", invece, si può computare una coppia casuale Y1'- C1' con la quale,
in modo inverso al precedente, interrogare la matrice in fase di controllo, tale matrice con il valore
di Y = Y1' deve dare come risposta C = C1'.
Nella schermata di figura 3 è stato inserito, a piacere, Y = 21865 ; da esso scaturisce la stringa
binaria 01010101 01101001 e il corrispondente valore delle coincidenze di segno : C = 4.
La routine è disponibile in file exe cliccando su mtr16
Abbiamo visto nel paragrafo 2) come una matrice ad 8 bit, impiegata a suo tempo per la formazione dei
fasci del sonar FALCON con base circolare, sia utilizzabile per una base rettilinea o qualsivoglia
struttura idrofonica nella quale si ricerchi la coerenza tra segnali provenienti da idrofoni tra
loro simmetrici.
Con l'esame condotto al paragrafo 4) è stata illustrata la struttura e la procedura software per
la costruzione di una matrice a 16 bit applicabile ad una base rettilinea o ad altra configurazione
della quale si voglia cercare il legame di coerenza tra le tensioni degli idrofoni simmetrici.
Generalmente, sia con una matrice a 8 bit che con una a 16 bit si realizza un solo fascio di
scoperta, per realizzare più fasci è necessario implementare nel software più matrici di correlazione.
Se le matrici hanno un numero di bit inferiore al numero delle tensioni idrofoniche da correlare
(il FALCON impiega ad esempio matrici da 8 bit con base da 18 idrofoni) i segnali devono essere
selezionati in gruppi, o in hardware prima dell'inserzione nel P.C, o via software all'interno del P.C.
Un metodo per evitare o l'una a l'atra procedura consiste nel formare matrici di correlazione con un
numero di bit pari al numero delle tensioni idrofoniche da correlare.
Il FALCON, ad esempio, potrebbe essere realizzato con 36 matrici da 18 bit ciascuna; in tal caso
l'hardware di selezione idrofoni sarebbe completamente eliminato a tutto vantaggio dei consumi e
dell'affidabilità.
Lo studio del software necessario per lo sviluppo di una matrice ad "n" bit potrà sempre essere
sviluppato secondo le linee guida mostrate nel paragrafo 4) cercando di trovare in esse le
motivazioni e i criteri di base che informano tutta la routine.