Rapporto di lavoro Stage Chaudoire - SUPSI

Transcript

Rapporto di lavoro Stage Chaudoire - SUPSI
Scuola universitaria professionale
della Svizzera italiana
Dipartimento
Tecnologie
Innovative
SSL
Stage Chaudoire
Dicembre’05-Giugno’06
Progetto SSL
Andrea Spiga
4 giugno 2006
(Doc. SSL-040606_AS-it)
Revision History
Revision
1
2
Date
22.02.2006
04.04.2006
Author
Andrea Spiga
Andrea Spiga
3
04.06.2006
Andrea Spiga
Description
Creation
New Chapters:
Introduzione, progetto CubeSat
Schede di sviluppo Olimex
Implementazione hardware Encoder Golay
Analisi Alimentazione
Analisi Computer di bordo.
New Chapters:
MSP430
Hamming code
Altera DE2
Indice
1 Introduzione
1.1 Il progetto CubeSat . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Elenco dei lavori svolti . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
10
2 ECSS
11
3 EDAC - Error Detection And Correction
3.1 Campi Finiti, campi di Galois . . . . . . . .
3.2 Codice di Hamming . . . . . . . . . . . . .
3.2.1 Codifica . . . . . . . . . . . . . . . .
3.2.2 Decodifica . . . . . . . . . . . . . . .
3.3 Codifica di Golay . . . . . . . . . . . . . . .
3.3.1 Breve biografia di Marcel J.E. Golay
3.3.2 Codifica . . . . . . . . . . . . . . . .
3.3.3 Implementazione hardware encoder .
3.3.4 Decodifica . . . . . . . . . . . . . . .
3.4 Codifica Reed-Solomon . . . . . . . . . . . .
3.4.1 Codifica . . . . . . . . . . . . . . . .
3.4.2 Decodifca . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 MPLAB ICD2
5 Schede di sviluppo OLIMEX
5.1 Introduzione . . . . . . . . .
5.2 Programmmer PIC-PG1 per
5.3 Scheda PIC-IO-A . . . . . .
5.4 Scheda PIC-ICD2 . . . . . .
17
18
21
22
23
24
24
24
25
32
32
32
32
34
. . . . .
SUPIC
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
38
40
41
43
6 Analisi componenti cubesat
46
7 Analisi sistemi di alimentazione (EPS)
7.1 Cal Poly State University (USA), CP1 . . . . . . .
7.2 University of Texas (USA), CanSat . . . . . . . . .
7.3 University of Stanford (USA), KatySat . . . . . . .
7.4 University of Stanford (USA), QuakeSat . . . . . .
7.5 University of Washington (USA) . . . . . . . . . .
7.6 University of Kansas (USA), KuteSat . . . . . . . .
7.7 University of Toronto (Canada), CanX-1 . . . . . .
7.8 University of Aalborg (Danimarca), AAU Cubesat
7.9 Università di Torino (Italia), PICpot . . . . . . . .
7.10 Tokio Institute of Technology (Japan) . . . . . . .
7.10.1 CUTE-I . . . . . . . . . . . . . . . . . . . .
7.10.2 CUTE-1.7+APD . . . . . . . . . . . . . . .
7.11 National Space Program Office (Taiwan), YamSat .
7.12 Conclusioni . . . . . . . . . . . . . . . . . . . . . .
53
53
54
57
57
58
58
59
59
60
60
60
61
62
62
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8 Computer di bordo (OBC)
8.1 Cal Poly State University (USA), CP1 . . . . . .
8.2 University of Texas (USA), CanSat . . . . . . . .
8.3 University of Stanford (USA), QuakeSat . . . . .
8.4 University of Washington (USA) . . . . . . . . .
8.5 University of Kansas (USA), KuteSat . . . . . . .
8.6 University of Toronto (Canada), CanX-1 . . . . .
8.7 University of Aalborg (Danimarca) . . . . . . . .
8.7.1 AAU CubeSat . . . . . . . . . . . . . . .
8.7.2 AAUSat II . . . . . . . . . . . . . . . . .
8.8 Universität Würzburg (Germany), UWE-1 . . . .
8.9 Norwegian Universities, nCube . . . . . . . . . .
8.10 Delft University (Netherlands), Delfi-C3 . . . . .
8.11 Università di Torino (Italia), PICpot . . . . . . .
8.12 Tokio Institute of Technology (Japan) . . . . . .
8.12.1 CUTE-I . . . . . . . . . . . . . . . . . . .
8.12.2 Cute-1.7+APD . . . . . . . . . . . . . . .
8.13 National Space Program Office (Taiwan), YamSat
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
64
64
64
65
65
66
66
66
66
67
67
68
68
68
68
68
69
69
9 MSP430
9.1 Modalità operative . . . . . . . . . . . . . . . . . . . . . . .
9.1.1 Descrizione . . . . . . . . . . . . . . . . . . . . . . .
9.1.2 Entrare ed uscire dalla modalità lowpower . . . . . .
9.1.3 Test e misura dei consumi . . . . . . . . . . . . . . .
9.2 Impostazione oscillatore interno DCO . . . . . . . . . . . .
9.3 Frequenza DCO in funzione della tensione di alimentazione
9.4 Suggerimenti e problemi riscontrati . . . . . . . . . . . . . .
9.5 Timer A . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.5.1 Impostazioni . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
70
70
70
74
76
81
82
89
90
90
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10 Altera DE2
92
10.1 Messa in funzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
10.2 Modalità di programmazione . . . . . . . . . . . . . . . . . . . . . . . 94
10.3 Periferiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
11 Conclusioni
95
Bibliografia
96
Link
96
4
Elenco delle tabelle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Elenco dei lavori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Numero di standard ECSS pubblicati . . . . . . . . . . . . . . . . . . .
Space project management standard . . . . . . . . . . . . . . . . . . .
Space product assurance standard . . . . . . . . . . . . . . . . . . . . .
Space engineering standard . . . . . . . . . . . . . . . . . . . . . . . .
General standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tavola della somma in GF(24 ) . . . . . . . . . . . . . . . . . . . . . . .
Tavola della moltiplicazione in GF(24 ) con polinomio irriducibile p(x) =
x4 + x3 + 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Peso componenti CubeSat . . . . . . . . . . . . . . . . . . . . . . . . .
Peso componenti principali CubeSat . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari CP1 . . . . . . . . . . . . . . . . . . . . . . .
Confronto caratteristiche chimiche ed elettriche fra alcune tipologie di
batterie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche batteria secondaria CP1 . . . . . . . . . . . . . . . . . . . .
Specifiche batteria primaria CP1 . . . . . . . . . . . . . . . . . . . . .
Specifiche di alcuni modelli di celle solari . . . . . . . . . . . . . . . . .
Specifiche di alcuni modelli di batterie ricaricabili. Produttori: Matsushita Battery e Ultralife . . . . . . . . . . . . . . . . . . . . . . . . .
Combinazioni possibili per CanSat . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari KatySat . . . . . . . . . . . . . . . . . . . . .
Specifiche batterie KatySat . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari QuakeSat . . . . . . . . . . . . . . . . . . . .
Specifiche batterie QuakeSat . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari Cubesat Washington . . . . . . . . . . . . . .
Specifiche batterie Cubesat Washington . . . . . . . . . . . . . . . . .
Specifiche pannelli solari KuteSat . . . . . . . . . . . . . . . . . . . . .
Specifiche batterie KuteSat . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari CanX-1 . . . . . . . . . . . . . . . . . . . . .
Specifiche batterie CanX-1 . . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari AAU Cubesat . . . . . . . . . . . . . . . . . .
Specifiche batterie AAU Cubesat . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari PICpot . . . . . . . . . . . . . . . . . . . . .
Specifiche batterie PICpot . . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari CUTE-I . . . . . . . . . . . . . . . . . . . . .
Specifiche batteria CUTE-I . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari CUTE-1.7+APD . . . . . . . . . . . . . . . .
Specifiche batteria CUTE-1.7+APD . . . . . . . . . . . . . . . . . . .
Specifiche pannelli solari YamSat . . . . . . . . . . . . . . . . . . . . .
Specifiche batterie YamSat . . . . . . . . . . . . . . . . . . . . . . . . .
Statistica progetti analizzati . . . . . . . . . . . . . . . . . . . . . . . .
Lista controllori possibili per progetto CanSat . . . . . . . . . . . . . .
Caratteristiche scheda Prometheus . . . . . . . . . . . . . . . . . . . .
Modi operativi MSP430f149 . . . . . . . . . . . . . . . . . . . . . . . .
Consumi in modalità AM per varie frequenze e tipologie di clock . . .
Serie 1 :Frequenza DCO in funzione di RSELx con DCOx=’111’ . . . .
5
10
13
13
13
15
16
21
21
50
51
53
53
54
54
55
55
56
57
57
58
58
58
58
58
59
59
59
60
60
60
60
61
61
61
62
62
62
63
64
65
72
80
82
44
45
46
47
48
49
Serie 2 :Frequenza DCO in funzione di RSELx con DCOx=’011’ . .
Serie 3 :Frequenza DCO in funzione di DCOx con RSELx=’111’ . .
Serie 4 :Frequenza DCO in funzione di DCOx con RSELx=’100’ . .
Serie 5 :Frequenza DCO in funzione della tensione di alimentazione
Modalità operative Timer A . . . . . . . . . . . . . . . . . . . . . .
Caratteristiche scheda di sviluppo Altera DE2 . . . . . . . . . . . .
6
.
.
.
.
.
.
.
.
.
.
.
.
83
85
86
88
91
92
Elenco delle figure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Architettura degli standard ECSS . . . . . . . . . . . . . . . . . . . . .
Somma modulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Divisione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Moltiplicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Esempio di codifica di Golay . . . . . . . . . . . . . . . . . . . . . . . .
Schema generale della codifica di Golay . . . . . . . . . . . . . . . . .
Convertitore messaggio in sequenza seriale . . . . . . . . . . . . . . . .
Encoder di Golay asincrono . . . . . . . . . . . . . . . . . . . . . . . .
Encoder di Golay con shift register e caricamento messaggio seriale . .
Encoder di Golay con shift register e caricamento messaggio parallelo .
Timing dell’architettura seriale (figura 9) . . . . . . . . . . . . . . . .
Timing dell’architettura parallela (figura 10) . . . . . . . . . . . . . . .
Esempio algoritmo di Euclide esteso . . . . . . . . . . . . . . . . . . .
Modulo ICD2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scheda PICDEM 2 PLUS DEMO BOARD . . . . . . . . . . . . . . . .
Collegamento PC - ICD2 - DEMO BOARD . . . . . . . . . . . . . . .
Supporto per debugger e programmer per vari modelli di PIC . . . . .
Scheda PIC-IO-A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scheda MSP430-H1611 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scheda MSP430-easyWeb2 . . . . . . . . . . . . . . . . . . . . . . . . .
Programmer (PIC-PG1) e JTAG (MSP430-JTAG) per schede di sviluppo
SUPIC con schedino e programmer . . . . . . . . . . . . . . . . . . . .
SUPIC modificato per collegamento diretto con il programmer . . . . .
Scheda PIC-ICD2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Connettore “0.1 step” e RJ45 . . . . . . . . . . . . . . . . . . . . . . .
Collegamento fra SUPIC (destra) e PIC-ICD2 (sinistra) . . . . . . . .
CubeSat (322.16 g) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gancio di attivazione (9.80 g) . . . . . . . . . . . . . . . . . . . . . . .
Faccia del modulo con 4 viti di fissaggio . . . . . . . . . . . . . . . . .
Coperchio del modulo (47.81 g) . . . . . . . . . . . . . . . . . . . . . .
Scheda elettronica montata all’interno del modulo . . . . . . . . . . . .
Involucro laterale del modulo (130.39 g) . . . . . . . . . . . . . . . . .
Base del modulo e scheda elettronica . . . . . . . . . . . . . . . . . . .
Spessori per permettere il montaggio di un’altra scheda (4 × 5.24 g) .
Scheda elettronica con processore M430F149 TI (63.37 g) . . . . . . .
Particolari del punto di appoggio della base . . . . . . . . . . . . . . .
Modulo smontato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scheda con supporto per memorie SD/MMC (43.99 g) . . . . . . . . .
Scheda vuota forata (28.89 g) . . . . . . . . . . . . . . . . . . . . . . .
QuakeSat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dimensioni processore MSP430F149 . . . . . . . . . . . . . . . . . . .
MSP430F149 Status Register . . . . . . . . . . . . . . . . . . . . . . .
Schema a blocchi del sistema di clock per l’MSP430F149 . . . . . . . .
Registro DCOCTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Registro BCSCTL1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Registro BCSCTL2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
12
19
19
20
25
25
26
27
28
29
30
31
33
34
34
35
37
38
38
38
40
40
41
44
44
45
46
46
47
47
47
48
48
48
49
49
50
51
52
57
70
70
71
72
72
72
SSL-040606_AS-it
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Modalità operative MSP430F149 . . . . . . . . . . . . . . . . . . . . .
Schema comportamento di un ipotetico codice nella Memory Map . . .
Schede di sviluppo OLIMEX con processore MSP430F149 e quarzo da
32KHz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consumo di corrente dell’MSP430 per le diverse modalità operative ad
1MHz (datasheet [14]) . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schema sistema di misura . . . . . . . . . . . . . . . . . . . . . . . . .
Consumo di corrente dell’MSP430 per le diverse modalità operative
con oscillatore interno DCO a 105kHz . . . . . . . . . . . . . . . . . .
Scala delle frequenze dell’oscillatore interno . . . . . . . . . . . . . . .
S1: Frequenza DCO in funzione di RSELx con DCOx=’111’ . . . . . .
S1: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di RSELx
con DCOx=’111’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S2: Frequenza DCO in funzione di RSELx con DCOx=’011’ . . . . . .
S2: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di RSELx
con DCOx=’011’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S3: Frequenza DCO in funzione di DCOx con RSELx=’111’ . . . . . .
S3: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di DCOx
con RSELx=’111’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S4: Frequenza DCO in funzione di DCOx con RSELx=’100’ . . . . . .
S4: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di DCOx
con RSELx=’100’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S5: Frequenza DCO in funzione della tensione di alimentazione . . . .
Schema a blocchi del Timer A . . . . . . . . . . . . . . . . . . . . . . .
Scheda di sviluppo Altera DE2 . . . . . . . . . . . . . . . . . . . . . .
Stage Chaudoire
8 / 97
73
76
77
77
79
79
81
82
83
84
84
85
86
87
87
88
91
93
Andrea Spiga
SSL-040606_AS-it
1
Introduzione
Presso il dipartimento DTI della SUPSI è stato recentemente approvato il progetto
SSL1 che prevede lo studio e la realizzazione di un piccolo satellite. Piccolo non per
la tipologia del progetto, ma a causa delle dimensioni dello stesso satellite chiamato
anche con il termine inglese CubeSat. Il satellite2 infatti avrà le dimensioni di un
cubo di 10 centimetri di lato. Verrà realizzato da studenti della SUPSI in parallelo ai
corsi di formazione previste dalle varie discipline.
Altri “progetti CubeSat” sono svolti da diverse università del mondo, ed è facile
reperire molte informazioni sul web in merito.
Questo rapporto ha lo scopo di documentare il lavoro che ho potuto svolgere all’interno del progetto grazie alla borsa di studio messa a disposizione dalla fondazione
Chaudoire e concessami dalla SUPSI.
1.1
Il progetto CubeSat
Lo scopo principale di questo progetto è quello di dare agli studenti SUPSI un’unica
e stimolante opportunità di partecipare ad un vero progetto di ingegneria con i suoi
problemi e difficoltà da superare. Il fatto di lavorare su un progetto satellite-spazio
piuttosto che su un macchina elettronica è un modo per motivare e stimolare maggiormente gli studenti a parteciparvi.
L’idea è che lavorando sul progetto gli studenti vengono coinvolti nei complessi processi di progettazione e di sviluppo che richiede la realizzazione di un satellite; questo
obbliga (insegna) gli studenti a collaborare insieme, a creare dei team di lavoro, a organizzarsi e coordinare i lavori fra i vari gruppi. Per questo al progetto sono coinvolte
tutte le aree del dipartimento DTI, informatica, elettronica e meccanica. Questa è la
missione principale del progetto.
Ci sono chiaramente anche altre missioni che chiamerei missioni tecniche. La prima è
sicuramente quella di stabilire un contatto mono direzionale con i satellite in orbita,
anche solo dei bip che facciano capire che il satellite è in vita; questo costituirebbe
sicuramente un grande traguardo. Altre missioni possono essere l’invio a terra dei
parametri del satellite oppure l’invio delle informazione sull’ambiente circostanze (irradiazione, temperature, ...).
Il concetto di “CubeSat” è stato sviluppato all’università di Stanforf dal professor
R. Twiggs e oggi vi aderiscono decine di università in tutto il mondo compresa la
SUPSI.
CubeSat è una piattaforma standard per lo sviluppo di “small orbital experiments”.
Il peso dell’intero satellite non deve superare il chilogrammo e le sue dimensioni sono
state standardizzate a 10 centimetri di lato. Questi due vincoli permettono di limitare
il costo del progetto soprattuto dal punto di vista del lancio in orbita.
Il sistema di rilascio in orbita dei satelliti è stato sviluppato dal California Polytechnic
State University (CalPoly). Il sistema è chiamato P-POD3 è può contenere 3 CubeSat.
1
SUPSI Space Lab
La figura 27(b) nel capitolo 6 mostra uno di questi moduli
3
Poly Pico-satellite Orbital Deployer
2
Stage Chaudoire
9 / 97
Andrea Spiga
SSL-040606_AS-it
1 INTRODUZIONE
Per ulteriori informazioni in merito al progetto CubeSat consiglio di consultare il sito
ufficiale
http://littonlab.atl.calpoly.edu/
1.2
Elenco dei lavori svolti
La tabella 1 riassume i principali lavori svolti.
Tabella 1: Elenco dei lavori
Lavoro
ECSSa
EDACb
Analisi CubeSat
Analisi EPSc
Analisi OBCd
MPLAB ICD2e
Schede OLIMEX
MSP430
Altera DE2
Descrizione
Analisi degli Standard e valutazione della possibilità
di utilizzo nel progetto SSL
Analisi e ricerca di metodologie per il rilevamento e la
correzione di errori durante la trasmissione di dati da
un sistema ad un’altro.
Analisi della struttura del modulo, peso di tutti i
componenti
Ricerca e analisi delle soluzioni adottate per i sistemi di
alimentazione di altri progetti universitari nel campo
pico-satelliti.
Ricerca e analisi delle soluzioni adottate per i computer
di bordo di altri progetti universitari nel campo picosatelliti.
Breve test di funzionalità, caratteristiche.
Test di funzionalità di alcune schede di sviluppo
prodotte dalla società OLIMEX.
Modalità low Power: analisi e test.
Misura dei consumi in varie modalità operative (Active
Mode, Low Power Mode).
Sistema di clock: analisi e test del modulo di gestione
dei segnali di clock e analisi dell’oscillatore interno
DCO.
Messa in funzione della scheda Altera DE2 con FPGA
Cyclone II
a
European Cooperation for Space Standardization
Error Detection And Correction
c
Energy Power Supply
d
On Board Computer
e
In-Circuit Debugger
b
Stage Chaudoire
10 / 97
Andrea Spiga
SSL-040606_AS-it
2
ECSS
L’European Cooperation for Space Standardization è un gruppo di lavoro europeo
nato nel 1993 con lo scopo di creare, redigere e tenere aggiornato standard in grado
di ricoprire tutti gli aspetti delle missioni e attività europee in ambito spaziale.
Dal punto di vista del progetto SSL è importante valutare l’opportunità di integrare
questi standard in vista di possibili future collaborazioni che saranno necessarie per
portare a termine nel modo migliore il progetto. Basti pensare che il collaudo finale
verrà eseguito al CalPoly in California oppure che il razzo vettore che manderà in
orbita il satellite SSL sarà presumibilmente un vettore russo. In quei frangenti sarà
molto importante “parlare la stessa lingua”.
Occorrerà valutare quali documenti sono vitali per il progetto e quali possono essere
tralasciati. I principali argomenti che al momento potrebbero interessare il progetto
riguardano
• la stesura di documentazione
• la descrizione di procedure
• la descrizione di tutti i processi di controllo
• la descrizione del funzionamento del sistema-satellite completo
Il compito da me svolto è stato quello di raccogliere informazioni riguardo a questi
standard e di fare un raccolta aggiornata di tutti gli standard-ECSS esistenti. La
figura 1 mostra lo schema dell’architettura degli standard.
La struttura di figura 1 è stata creata per facilitare l’organizzazione ed il ritrovamento
degli standard. La documentazione è strutturata in tre principali aree
1. Project Management
2. Product Assurance
3. Engineering
ed è suddivisa secondo una gerarchia a quattro livelli:
Livello 0 Documentazione che descrive la politica, le motivazioni e gli obbiettivi
degli standard ECSS (ECSS-P-00).
Livello 1 Questi standard descrivono la strategia nell’area specifica (project management, product assurance o engineering). Danno una visione globale dei requisiti
e delineano le relazioni esistenti tra gli elementi (ed i documenti) del livello 2
(ECSS-M-00 , ECSS-Q-00 , ECSS-E-00).
Livello 2 Standard che descrivono gli obiettivi richiesti e le funzioni per tutti gli
aspetti nelle aree specifiche (ECSS-M-10 , ECSS-Q-10, ...).
Livello 3 Documentazione che descrive metodi, procedure e tools raccomandati per
soddisfare le specifiche descritte al livello 2. Inoltre definiscono vincoli e requisiti
per lo svolgimento di attività. Questi standard danno una linea guida e possono
essere adattati alle necessità del progetto.
La tabella 2 mostra il numero di standard pubblicati a fine dicembre 2005 mentre le
tabelle 3, 4, 5 e 6 riportano i titoli dei vari standard.
Stage Chaudoire
11 / 97
Andrea Spiga
SSL-040606_AS-it
2 ECSS
Figura 1: Architettura degli standard ECSS
Stage Chaudoire
12 / 97
Andrea Spiga
SSL-040606_AS-it
Tabella 2: Numero di standard ECSS pubblicati
General : ECSS-S-...
General : ECSS-P-...
Space Project Management : ECSS-M-...
Space Product Assurance : ECSS-Q-...
Space Engineering : ECSS-E-...
TOT
1
2
11
45
33
92
Tabella 3: Space project management standard
ID
M-00B
M-00-02A
M-00-03B
M-10B
M-20B
M-30A
M-30-01A
M-40B
M-50A
M-60A
M-70A
Titolo
Policy and principles
Tailoring of space standards
Risk management
Project breakdown structures
Project organization
Project phasing and planning
Organization and conduct of reviews
Configuration management
Information/documentation management
Cost and schedule management
Integrated logistic support
×
×
×
×
×
Tabella 4: Space product assurance standard
ID
Q-00A
Q-20B
Q-20-04A
Q-20-07A
Q-20-09B
Q-30B
Q-30-01A
Q-30-02A
Q-40B
Q-40-02A
Q-40-04
Q-40-04
Q-40-12A
Q-60A
Q-60-01A
Q-60-11A
Q-70B
Q-70-01A
Titolo
Policy and principles
Quality assurance
Critical items control
Quality assurance for test centres
Nonconformance control system
Dependability
Worst case analysis
Failure modes, effects and criticality analysis (FMECA)
Safety
Hazard analysis
Part 1A Sneak analysis - Part 1: Method and procedure
Part 2A Sneak analysis - Part 2: Clue list
Fault tree analysis - Adoption notice ECSS / IEC 61025
EEE components
European preferred parts list (EPPL) and its management
EEE components - Derating and end-of-life parameter drifts
Materials, mechanical parts and processes
Contamination and cleanliness control
Stage Chaudoire
13 / 97
×
×
×
×
×
Andrea Spiga
SSL-040606_AS-it
Q-70-02
Q-70-04A
Q-70-05A
Q-70-07A
Q-70-08A
Q-70-09A
Q-70-10A
Q-70-11A
Q-70-13A
Q-70-18A
Q-70-20A
Q-70-21A
Q-70-22A
Q-70-25A
Q-70-26A
Q-70-28A
Q-70-29A
Q-70-30A
Q-70-33A
Q-70-34A
Q-70-35A
Q-70-36A
Q-70-37A
Q-70-45A
Q-70-46A
Q-70-71A
rev.1
Q-80B
2 ECSS
A Thermal vacuum outgassing test for the screening
of space materials
Thermal cycling test for the screening of space materials
and processes
Detection of organic contamination of surfaces by
IR spectroscopy
Verification and approval of automatic machine wave
soldering
Manual soldering of high-reliability electrical connections
Measurement of thermo-optical properties of
thermal control materials
Qualification of printed circuit boards
Procurement of printed circuit boards
Measurement of the peel and pull-off strength of coatings
and finishes using pressure-sensitive tapes
Preparation, assembly and mounting of RF coaxial cables
Determination of the susceptibility of silver-plated
copper wire and cable to “red-plague” corrosion
Flammability testing for the screening of space materials
The control of limited shelf-life materials
The application of the black coating Aeroglaze Z306
Crimping of high-reliability electrical connections
The repair and modification of printed circuit
board assemblies for space use
The determination of offgassing products from materials
and assembled articles to be used in a manned space
vehicle crew compartment
The wire wrapping of high-reliability electrical
connections
The application of the thermal control coating
PSG 120 FD
The application of the black electrically conductive
coating Aeroglaze H322
The application of the black electrically conductive
coating Aeroglaze L300
Material selection for controlling stress-corrosion cracking
Determination of the susceptibility of metals to
stress-corrosion cracking
Standard methods for mechanical testing of
metallic materials
General requirements for threaded fasteners
×
×
×
×
×
Data for selection of space materials and processe
Software product assurance
Stage Chaudoire
14 / 97
Andrea Spiga
SSL-040606_AS-it
Tabella 5: Space engineering standard
ID
E-00A
E-10 Part 1B
E-10 Part 6A
rev.1
E-10 Part 7A
E-10-02A
E-10-03A
E-10-04A
E-10-05A
E-20A
E-20-01A
E-20-08A
E-30 Part 1A
E-30 Part 2A
E-30 Part 3A
E-30 Part 4A
E-30 Part 5.1A
E-30 Part 6A
E-30 Part 7A
E-30 Part 8A
E-30-01A
E-30-11A
E-40 Part 1B
E-40 Part 2B
E-50 Part 1A
E-50 Part 2A
E-50-02A
E-50-05A
E-50-12A
E-60A
E-70 Part 1A
Stage Chaudoire
Titolo
Policy and principles
System engineering
Part 1: Requirements and process
System engineering
Part 6: Functional and technical specifications
System engineering
Part 7: Product data exchange 25 August 2004
Verification
Testing
Space environment
Functional analysis
Electrical and electronic
Multipaction design and test
Photovoltaic assemblies and components
Mechanical - Part 1: Thermal control
Mechanical - Part 2: Structural
Mechanical
Part 3: Mechanisms
Mechanical
Part 4: Environmental control and life support
Mechanical
Part 5: Propulsion - Liquid and electric propulsion
for spacecraft
Mechanical
Part 6: Pyrotechnics
Mechanical
Part 7: Mechanical parts
Mechanical
Part 8: Materials
Fracture control
Modal survey assessment
Software
Software - Part 2: DRDs
Communications
Part 1: Principles and requirements
Communications
Part 2: DRDs
Ranging and Doppler tracking
Radio frequency and modulation
SpaceWire - Links, nodes, routers and networks
Control engineering
Ground systems and operations
Part 1: Principles and requirements
15 / 97
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
Andrea Spiga
SSL-040606_AS-it
E-70 Part 2A
E-70-11A
E-70-41A
2 ECSS
Ground systems and operations
Part 2: Document requirements definitions (DRD)
Space segment operability
Telemetry and telecommand packet utilization
×
×
Tabella 6: General standard
ID
P-00A
P-001B
S-00A
Stage Chaudoire
Titolo
Standardization policy
Glossary of terms
ECSS System - Description and implemention
16 / 97
Andrea Spiga
SSL-040606_AS-it
3
EDAC - Error Detection And Correction
In informatica e nella teoria dell’informazione, l’intercettazione e la correzione di errori è un campo di di primaria importanza.
L’intercettazione di errori (Error Detection) è la capacità di individuare errori dovuti a disturbi o interferenze durante il corso della trasmissione dal trasmettitore al
ricevitore. Questo però non dice niente su dove l’errore sia avvenuto (in quale posizione). Per questo occorrono metodi in grado anche di correggere tali errori (Error
Correction).
Sistemi di rilevamento e correzione di errori sono implementati nelle trasmissioni
radio (con presenza regolare di disturbi ed interferenze), nei sistemi di salvataggio
dati(RAM, CD, hard disk, ...), ed altri sistemi dove l’integrità dei dati è molto importante.
Questi sistemi aggiungono al messaggio originale dell’altra informazione (bit) di controllo.
Esistono vari metodi per implementare un tale sistema. Alcuni semplice ed altri meno:
Ripetizione : supponiamo di dover inviare il messaggio 1001. Il messaggio viene
replicato un numero conosciuto di volte ed inviato: 100110011001. Il ricevitore
riceve il messaggio 100110111001 e si accorge che il secondo blocco è diverso
dagli altri due ed in questo caso è in grado di correggerlo.
È evidente che un sistema del genere non è molto efficace, soprattutto in trasmissioni molto disturbate in quanto l’errore potrebbe accadere più volte nello stesso
gruppo di blocchi.
Il sistema però è elementare e può essere utilizzato in trasmissione dove gli errori
sono rari.
Parità : dato un messaggio da inviare, vengono contati i bit a 1 e viene aggiunto
un bit di controllo in modo che il numero totale di bit a 1 sia sempre pari (o
dispari).
Questo metodo quindi è in grado di rilevare un errore ma non di correggerlo.
Sfruttando questo principio e utilizzando più bit di parità posizionati all’interno
del messaggio in posizioni determinate, si riesce ad ottenere un codice in grado
sia di rilevare errori, sia di correggerli: Hamming.
Codici ciclici ridondanti : metodi più complessi per il rilevamento e la correzione
di errori sfruttano la teoria dei campi finiti e dei polinomi applicati a questi
campi.
Il principio matematico è di considerare un messaggio da inviare come un polinomio dove i coefficienti sono i simboli che compongono il messaggio (nel caso
più semplice sono bit, ma si può implementare anche con simboli a più bit).
Questo messaggio/polinomio viene diviso4 per un altro polinomio ben definito
(polinomio generatore). Il risultato5 è di nuovo un polinomio/messaggio che
viene aggiunto al messaggio originale come ridondanza di controllo.
L’elenco seguente riporta alcune di queste codifiche:
• codice di Hamming
4
5
Divisione secondo le regole dei campi finiti, vedi 3.1
Il risultato di una divisone nei campi finiti corrisponde al resto
Stage Chaudoire
17 / 97
Andrea Spiga
SSL-040606_AS-it
3 EDAC - ERROR DETECTION AND CORRECTION
• codice di Hagelbarger
• codice Reed-Muller
• codice di Golay
• codice Reed-Solomon
• codice Turbo
• algoritmo di Viterbi
• ...
Ho svolto una ricerca sulla codifica Reed-Solomon, sulla codifica di Golay e sul codice
di Hamming. Il primo infatti è molto performante in quanto è in grado di correggere
delle sequenze relativamente lunghe di errori all’interno di un messaggio. Nella mia
ricerca su internet questo codice veniva spesso associato alle trasmissione nelle missioni spaziali.
La codifica di Golay è interessante perché molto semplice da implementare ed è quindi
molto veloce ma in grado di rilevare al massimo 4 errori e di correggerne 3 su un totale
di 24 bit trasmessi (12 bit di messaggio + 12 bit di controllo). Questa codifica inoltre
era oggetto di studio in un lavoro di semestre da parte di studenti di informatica
dell’ultimo anno.
Infine la codifica di Hamming è la più conosciuta e facile da implementare ed il principio matematico non è così complicato come per gli altri due metodi.
Questi algoritmi sono stati utilizzati in diverse missioni spaziali della NASA come
ad esempio:
• 1969-1977: la sonda spaziale Mariner utilizzava una codifica Reed-Muller
• 1979-1980: le sonde Voyager 1 e 2 trasmettevano immagini di Giove e Saturno ed
utilizzavano la codifica di Golay(24,12,8). La sonda Voyager 2 inoltre si diresse
verso Urano e Nettuno e la trasmissione fu modificata utilizzando la codifica
Reed-Solomon in quanto più performante per il rilevamento a la correzione.
Per capire in dettaglio i passaggi di questi metodi è necessario possedere alcune nozioni
sulla teoria dei campi finiti ed in particolare sui campi di Galois. L’argomento è molto
vasto e abbastanza complicato; mi sono quindi concentrato sugli argomenti che mi
permettevano di capire i passaggi della codifica e della decodifica.
3.1
Campi Finiti, campi di Galois
La teoria sui campi di Galois GF6 è abbastanza complicata ma nello stesso tempo
affascinante e coinvolgente. Consiglio quindi a chi volesse approfondire questo argomento di consultare dei libri di testo. In questo sottocapitolo mi limito a descrivere
le operazioni base che vengono utilizzate nelle varie codifiche.
Valgono in generale le regole dei campi finiti, quindi operazioni con modulo. I campi
di Galois sono una “variazione” dei campi finiti dove tutte le operazioni vengono svolte
6
Galois Field
Stage Chaudoire
18 / 97
Andrea Spiga
SSL-040606_AS-it
3.1 Campi Finiti, campi di Galois
tramite polinomi. I GF sono definiti con GF(q n ) dove q è un numero primo e q n − 1
corrisponde al valore massimo dei coefficienti dei polinomi. Ad esempio se prendiamo
il simbolo ’e’ che corrisponde al valore ASCII 0x65 o al valore binario 0b1100101
possiamo associarlo al seguente polinomio:
1x6 + 1x5 + 0x4 + 0x3 + 1x2 + 0x + 1 = x6 + x5 + x2 + 1
Le 4 operazione principali7 avvengono tutte tramite operazioni fra polinomi. La
somma e la sottrazione avviene a modulo 2 (exor). Da questo deriva che somma e
sottrazione sono la stessa operazione. Per semplificare gli esempi ho riportato tutte
le operazioni in GF(21 )
La figura 2 mostra un’esempio di somma.
Figura 2: Somma modulo 2
La divisione viene svolta regolarmente in colonna secondo le regole generali, ma con
la sottrazione secondo le regole dei campi finiti (exor, modulo 2).
La figura 3 mostra un’esempio di divisione.
Figura 3: Divisione
7
somma, sottrazione, moltiplicazione e divisione
Stage Chaudoire
19 / 97
Andrea Spiga
SSL-040606_AS-it
3 EDAC - ERROR DETECTION AND CORRECTION
Infine anche per la moltiplicazione valgono le regole generali, ma bisogna tenere conto
che si lavora in un campo finito e quindi il risultato sarà anche lui “finito”. Ad esempio
se lavorassimo in Z(8) il campo degli elementi sarebbe compreso tra 0 e 7. Nei campi
di Galois il principio è lo stesso solo che invece di un numero naturale abbiamo un
polinomio chiamato polinomio irriducibile. Questo polinomio come dice la parola
stessa non può essere “ridotto”, ovvero non può essere fattorizzato.
La figura 4 mostra un’esempio di moltiplicazione. Il polinomio irriducibile corrisponde
in questo esempio a p(x) = x4 + x3 + 1 = 11001.
Figura 4: Moltiplicazione
Quasi tutte le operazioni descritte in questo capitolo avvengono in GF(2). Per curiosità ho riportato nelle tabelle 7 e 8 le tavole per la somma e la moltiplicazione in
GF(24 )
Stage Chaudoire
20 / 97
Andrea Spiga
SSL-040606_AS-it
3.2 Codice di Hamming
Tabella 7: Tavola della somma in GF(24 )
+
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
0
1
1
0
2
2
3
0
3
3
2
1
0
4
4
5
6
7
0
5
5
4
7
6
1
0
6
6
7
4
5
2
3
0
7
7
6
5
4
3
2
1
0
8
8
9
A
B
C
D
E
F
0
9
9
8
B
A
D
C
F
E
1
0
A
A
B
8
9
E
F
C
D
2
3
0
B
B
A
9
8
F
E
D
C
3
2
1
0
C
C
D
E
F
8
9
A
B
4
5
6
7
0
D
D
C
F
E
9
8
B
A
5
4
7
6
1
0
E
E
F
C
D
A
B
8
9
6
7
4
5
2
3
0
F
F
E
D
C
B
A
9
8
7
6
5
4
3
2
1
0
Tabella 8: Tavola della moltiplicazione in GF(24 ) con polinomio irriducibile
p(x) = x4 + x3 + 1
×
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
3.2
0
0
1
0
1
2
0
2
4
3
0
3
6
5
4
0
4
8
C
9
5
0
5
A
F
D
8
6
0
6
C
A
1
7
D
7
0
7
E
9
5
2
B
C
8
0
8
9
1
B
3
2
A
F
9
0
9
B
2
F
6
4
D
7
E
A
0
A
D
7
3
9
E
4
6
C
B
B
0
B
F
4
7
C
8
3
E
5
1
A
C
0
C
1
D
2
E
3
F
4
8
5
9
6
D
0
D
3
E
6
B
5
8
C
1
F
2
A
7
E
0
E
5
B
A
4
F
1
D
3
8
6
7
9
2
F
0
F
7
8
E
1
9
6
5
A
2
D
B
4
C
3
Codice di Hamming
Ho voluto iniziare la descrizione con questa codifica in quanto abbastanza semplice da
implementare e capire dal punto di vista matematico. Inoltre alcuni concetti vengono
poi ripresi nei capitoli 3.3 e 3.4 nella descrizione degli altri duce codici.
Il codice di Hamming (7,4) è un codice lineare a blocchi che produce un messaggio
Stage Chaudoire
21 / 97
Andrea Spiga
SSL-040606_AS-it
3 EDAC - ERROR DETECTION AND CORRECTION
codificato di 7 bit ogni 4 di messaggio originale. Questo codice ha distanza d = 3 ed
è in grado quindi di correggere 1 bit.
3.2.1
Codifica
Lavorando con i polinomi in GF(2) si ottiene:
• Prendiamo un messaggio di 4 bit:
m = 0110
m(x) = 0 ∗ 1 + 1 ∗ x + 1 ∗ x2 + 0 ∗ x3 = x + x2
(1)
• Il polinomio generatore per H(7,4) è:
g(x) = 1 + x + x3 = 1 ∗ 1 + 1 ∗ x + 0 ∗ x2 + 1 ∗ x3
(2)
g = 1101
• La codifica si ottiene moltiplicando m(x) per g(x):
c(x) = m(x) ∗ g(x) = (x + x2 )(1 + x + x3 )
c(x) = x + x2 + x4 + x2 + x3 + x5 = x + x3 + x4 + x5
(3)
c = 0101110
Un altro metodo di lavoro è quello matriciale:
• Prendiamo lo stesso messaggio di 4 bit: m = 0110
• La matrice generatrice corrispondente al polinomio generatore (2) è:




G=
1
0
0
0
1
1
0
0
0
1
1
0
1
0
1
1
0
1
0
1
0
0
1
0
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0





(4)
• La codifica risultante è:

c=m∗G=
h
0 1 1 0
=
Stage Chaudoire
h
i



∗
0 1 0 1 1 1 0
22 / 97
1
0
1
1
0
1
0
1
0
0
1
0
0
0
0
1





i
Andrea Spiga
SSL-040606_AS-it
3.2.2
3.2 Codice di Hamming
Decodifica
Ogni codice lineare a blocchi (n,k) è associato ad una matrice H di dimensione (n −
k) × n chiamata parity check matrix 8 con la seguente caratteristica:
v ∗ HT = 0
(5)
solo se v è un elemento della codifica
Questa matrice H non è unica ma dipende dalla matrice generatrice G. Per G (4) vale


1 0 1 1 1 0 0


H= 0 1 0 1 1 1 0 
0 0 1 0 1 1 1
(6)
e vale la relazione
G ∗ HT = 0
Rappresentando la matrice H come
H=
h
h1 h2 h3 h4 h5 h6 h6
i
si può osservare che le colonne di H riportano non in ordine la rappresentazione binaria dei numeri da 1 a 7.
Questa caratteristica vale per tutti i codici di Hamming di lunghezza c = 2m − 1
Supponiamo di ricevere un codice r. Se il codice trasmesso non contiene errori avremo
che r = c. Nel caso invece contrario abbiamo che r = c + n dove n è il vettore degli
errori.
La prima operazione da eseguire è calcolare la sindrome s:
s = r ∗ H T = (c + n) ∗ H T = c ∗ H T + n ∗ H T
e grazie alla proprietà (5) si ottiene
s = n ∗ HT
Hamming(7,4) è in grado di correggere al massimo un errore; il vettore n sarà quindi
composto da tutti 0 tranne che in una posizione i dove sarà presente un 1.
n = [n1 , n2 , ..., n7 ] = [0, ..0, 1, 0, .., 0]
La posizione i dove si trova l’1 rappresenta la posizione dell’errore.
Rappresentando la matrice H (6) secondo le sue righe si ottiene

H
T



=


hT1
hT2
.
.
hT7







8
Ho preferito lasciare il termine inglese in quanto i libri consultati erano tutti in lingua inglese.
Forse in italiano potrebbe essere: ‘matrice di controllo di parità’
Stage Chaudoire
23 / 97
Andrea Spiga
3 EDAC - ERROR DETECTION AND CORRECTION
SSL-040606_AS-it
La sindrome s risulta quindi:

T
T
s=r∗H =n∗H =
h
n1 h2 ... n7
i



∗


hT1
hT2
.
.
hT7




 = hTi


Si ottiene così che la posizione i della colonna della matrice H (6) è uguale al valore
della sindrome (trasposta) sT .
3.3
3.3.1
Codifica di Golay
Breve biografia di Marcel J.E. Golay
Marcel J.E. Golay nacque a Neuchatel nel 1902. Matematico, fisico e informatico
teorico studiò ingegneria elettronica al politecnico federale di Zurigo. Nel 1924 si
trasferì a New York presso i laboratori BELL. Nel 1931 ricevette il dottorato in fisica
all’università di Chicago. Dopo questa esperienza si trasferì nel New Jersey per l’US
Army Signal Corps. Nel 1963 passò alla compagnia Perkin-Elmer ricoprendo il ruolo
di Senior Research Scientist. Lavorò a diversi progetti quali la gas-cromatografia e
la spettroscopia ottica. Rimase in questa compagnia per il resto della sua vita. Morì
nel 1989
Alcuni dei suoi lavori:
• Coautore insieme a Abraham Savitzky del Savitzkyy-Golay Smoothing Filter
• Codice di Golay (1949)
• Generalizzazione del codice binario perfetto di Hamming per codice non binari
• Inventore della Golay cell, un tipo di rilevatore a infrarossi.
3.3.2
Codifica
Durante i suoi lavori di ricerca sui codici perfetti, Golay notò la relazione matematica
!
P3
i=0
!
!
!
!
23
23
23
23
23
=
+
+
+
= 223−12 = 211
i
0
1
2
3
Da questa relazione Golay ricavò il codice binario perfetto (23,12,7)9 con t = 3 in
grado di rilevare e correggere appunto un massimo di 3 errori su un totale di 23 bit.
Questo codice (23,12) può essere generato attraverso 2 possibili polinomi generatori:
g1 (X) = X 11 + X 10 + X 6 + X 5 + X 4 + X 2 + 1 = hC75
g2 (X) = X 11 + X 9 + X 7 + X 6 + X 5 + X + 1 = hAE2
La codifica avviene aggiungendo al messaggio-polinomio di 12 bit altri 11 bit di controllo ottenuti dalla divisione fra m(x)x11 e g(x). La figura 5 mostra un esempio di
codifica con le seguenti caratteristiche:
• messaggio = hF AC
• polinomio generatore = hC75
9
12 bit di messaggio + 11 bit di ridondanza = 23 bit totali, distanza di Hamming = 7
Stage Chaudoire
24 / 97
Andrea Spiga
SSL-040606_AS-it
3.3 Codifica di Golay
Figura 5: Esempio di codifica di Golay
3.3.3
Implementazione hardware encoder
Sui libri di testo consultati l’implementazione hardware è sempre implementata con
un sistema di registri a scorrimento. La figura 6 mostra lo schema che viene presentato in tutti i libri di testo che ho consultato.
Figura 6: Schema generale della codifica di Golay
Durante la prima fase di studio ho avuto delle difficoltà a capire il funzionamento di
questi schemi ed ho realizzato una mia versione completamente asincrona senza la
dipendenza da registri. Con l’aiuto del tool tkgate ho realizzato il sistema di figura 8
a pagina 27.
Dopo uno studio più dettagliato sono riuscito a capire il funzionamento dello schema
di figura 6 ed ho implementato due versioni: il primo (figura 9, pagina 28) carica il
messaggio da codificare sequenzialmente un bit dopo l’altro, mentre il secondo (figura
10, pagina 29) carica il messaggio in parallelo al primo colpo di clock. Il modulo
denominato “ConvMessSer ” è un modulo che prende in entrata il messaggio e mette
in uscita i suoi bit uno dopo l’altro. La figura 7 mostra l’implementazione di questo
modulo. L’ho costruito in modo da poter scegliere se iniziare dal bit più significativo
Stage Chaudoire
25 / 97
Andrea Spiga
SSL-040606_AS-it
3 EDAC - ERROR DETECTION AND CORRECTION
o da quello meno significativo agendo sul segnale “ShiftSel ”.
Figura 7: Convertitore messaggio in sequenza seriale
Gli schemi di figura 8, 9 e 10 sono generali e valgono per qualsiasi polinomio generatore. Utilizzando il polinomio generatore fisso 0xC75 oppure 0xAE2, gli schemi
verrebbero molto semplificati.
La figura 11 mostra il timing dell’architettura di figura 9 mentre la figura 12 mostra
il timing dell’architettura di figura 10. Il messaggio utilizzato in entrambe le simulazioni è 0xF AC mentre il polinomio generatore è 0xC75.
Sul timing di figura 11 è possibile seguire i seguenti passaggi.
t1 : Reset = 1.
t1 → t2 : Vengono caricati un clock dopo l’altro i bit del messaggio da codificare a
partire dal bit più significativo. Osservando il segnale BitIn si può osservare
questo processo.
t2 : Una volta caricato il messaggio, il segnale BitSel vine messo a 0 in modo che i
prossimi bit che vengono caricati siano sempre 0.
t3 : All’uscita dei registri (bit r10 ↔ r0) si ha la codifica da aggiungere al messaggio
(0x06A).
Sul timing di figura 12 è possibile seguire i seguenti passaggi.
t1 : Reset = 1.
t2 : Il messaggio viene caricato.
t3 : Il segnale Sel viene messo a 1.
t4 : All’uscita dei registri (bit r10 ↔ r0) si ha la codifica da aggiungere al messaggio
(0x6A).
Stage Chaudoire
26 / 97
Andrea Spiga
3.3 Codifica di Golay
Figura 8: Encoder di Golay asincrono
SSL-040606_AS-it
Stage Chaudoire
27 / 97
Andrea Spiga
SSL-040606_AS-it
3 EDAC - ERROR DETECTION AND CORRECTION
Figura 9: Encoder di Golay con shift register e caricamento messaggio seriale
Stage Chaudoire
28 / 97
Andrea Spiga
Figura 10: Encoder di Golay con shift register e caricamento messaggio parallelo
SSL-040606_AS-it
Stage Chaudoire
3.3 Codifica di Golay
29 / 97
Andrea Spiga
SSL-040606_AS-it
3 EDAC - ERROR DETECTION AND CORRECTION
Figura 11: Timing dell’architettura seriale (figura 9)
Stage Chaudoire
30 / 97
Andrea Spiga
3.3 Codifica di Golay
Figura 12: Timing dell’architettura parallela (figura 10)
SSL-040606_AS-it
Stage Chaudoire
31 / 97
Andrea Spiga
3 EDAC - ERROR DETECTION AND CORRECTION
SSL-040606_AS-it
3.3.4
Decodifica
In sospeso.
3.4
Codifica Reed-Solomon
Il codice Reed-Solomon RS(k, t) è formato da n simboli con n = q − 1 al massimo
e q = 2k . k rappresenta il numero di bit per simbolo. t rappresenta il numero di
simboli errati che il codice è in grado di correggere. Il numero di simboli di controllo
da aggiungere al messaggio sarà pari a 2t.
Supponendo di lavorare a byte avremmo che k = 8, q = 28 = 256 e quindi n = 255.
Se invece lavorassimo a bit avremmo k = 1, q = 21 = 2 e quindi n = 1.
Come già accennato il messaggio viene associato ad un polinomio m(x) dove i simboli
corrispondono ai coefficienti. Ad esempio se lavorassimo con k = 4 e volessimo inviare
il dato h9F461C5, il polinomio corrispondente risulterebbe
m(x) = 9x6 + F x5 + 4x4 + 6x3 + x2 + Cx + 5
Se lavorassimo invece con k = 1 otterremmo il polinomio
m(x) = x27 + x24 + x23 + x22 + x21 + x20 + x18 + x14 + x13 + x8 + x7 + x6 + x2 + 1
3.4.1
Codifica
Come per la codifica di Golay si aggiunge al messaggio-polinomio m(x) un’altro polinomio di controllo p(x) ottenuto grazie ad un polinomio generatore g(x) definito di
grado 2t. Questo polinomio generatore è un polinomio con la seguente caratteristica
g(x) = (x + a)(x + a2 )(x + a3 )...(x + a2 t)
dove a è un elemento primitivo di GF(2k ) conosciuto.
L’informazione completa da inviare sarà a sua volta un nuovo polinomio c(x). Il
principio è il seguente:
c(x) = m(x)x2t + p(x)
con p(x) che si ottiene dall’operazione di divisione fra m(x)x2t e g(x) secondo le regole
dei campi di Galois spiegate nella sezione 3.4.
L’operazione m(x)x2t corrisponde semplicemente ad uno shift a sinistra di 2t.
3.4.2
Decodifca
Questa parte è abbastanza complicata e necessita di diversi algoritmi. Il primo passo
da eseguire una volta ricevuta l’informazione c(x) è di calcolare la sindrome s(x) =
S2t x2t−1 + ... + S3 x2 + S2 x + S1 . I coefficienti di questo polinomio si calcolano nel
seguente modo:
Si = c(ai ) con i = 1...2t
Se s(x) = 0 l’informazione ricevuta è corretta.
Se invece s(x) 6= 0 si procede per prima cosa al rilevamento degli errori. Per conoscere
la posizione degli errori si utilizza un nuovo polinomio chiamato polinomio locatore
definito
Stage Chaudoire
32 / 97
Andrea Spiga
SSL-040606_AS-it
3.4 Codifica Reed-Solomon
l(x) = (1 − ap1 x)(1 − ap2 x)(1 − ap3 x)...
Per calcolare questo polinomio esistono un paio di metodi. Qui di seguito descrivo
quello che utilizza l’algoritmo di Euclide (massimo comune divisore) e l’identità di
Bezout.
Algoritmo di Euclide e identità di Bezout: dati due numeri naturali
a e b e il loro massimo comune divisore d, esistono due numeri α e β tali
che αa + βb = d.
L’algoritmo di Euclide procede nel seguente modo:
• Dividere a per b, si ottiene un quoziente q1 ed un resto r1 .
• se r1 = 0, allora d=b.
altrimenti dividere b per r1 ,si ottiene in quoziente q2 ed un resto r2 .
• ripetere questa operazione fino ad ottenere ri = 0. Il numero cercato
d sarà uguale a d = ri−1 .
Per ottenere anche i valori α e β si può sfruttare la procedura dell’algoritmo di Euclide introducendo anche α e β e procedendo nella seguente
maniera:
• Nelle due colonne α e β si inizializza la procedura con 1 e 0 per la
riga 0 e 0 e 1 per la riga 1.
• per le righe successive si ottiene:
α = qriga−1 αriga−1 + αriga−2
β = qriga−1 βriga−1 + βriga−2
La figura 13 mostra un esempio con i valori a = 1290 e b = 465.
Figura 13: Esempio algoritmo di Euclide esteso
Da questa procedura si ottiene infatti che 15 = −9 · 1290 + 25 · 465.
Questo teorema è valido anche nei campi di Galois ed è quindi possibile utilizzarlo
con i polinomi in GF.
Sostituendo a = s(x) e b = x2t e applicando l’algoritmo di Euclide e l’identità di
Bezout si ottiene il polinomio locatore l(x) = β.
Per il momento purtroppo non sono ancora riuscito a capire il principio matematico
che permette di ottenere l(x) attraverso questo algoritmo e inoltre ottenere le posizioni
degli errori dai suoi coefficienti. Però sembra funzionare.
.......
In sospeso.
Stage Chaudoire
33 / 97
Andrea Spiga
SSL-040606_AS-it
4
4 MPLAB ICD2
MPLAB ICD2
L’In-Circuit Debbuger è uno strumento che permette di fare debugging direttamente
sul processore o più precisamente sul processore montato su una scheda di sviluppo
creata appositamente per questo scopo. L’ICD è una alternativa all’MPLAB ICE10
o al simulatore MPLAB Sim presente nell’ambiente di sviluppo MPLAB della Microchip.
La figura 14(a) mostra il modulo ICD2. Come mostra la figura 14(b) il modulo
(a)
(b)
Figura 14: Modulo ICD2
può essere collegato al PC tramite collegamento USB oppure tramite la più classica
trasmissione seriale RS232.
La figura 15 mostra la scheda utilizzata in combinazione con l’ICD2.
Figura 15: Scheda PICDEM 2 PLUS DEMO BOARD
Per l’installazione del sistema ho seguito la documentazione allegata (vedi allegato
A). I punti seguenti permettono di evitare problemi durante l’installazione.
10
In-Circuit Emulator
Stage Chaudoire
34 / 97
Andrea Spiga
SSL-040606_AS-it
• Non collegare al PC l’ ICD2 prima di aver installato i driver della connessione
altrimenti windows cercherà di installarlo con i propri driver.
• Installare l’ultima versione di MPLAB, nel mio caso la 7.22.
• Procedere all’installazione dei driver USB. È possibile anche utilizzare la trasmissione seriale RS232; in questo caso non si necessita di driver aggiuntivi.
Una volta fatto partire MPLAB attivare come debugger l’MPLAB ICD2 selezionandolo nel menù Debugger/Select Tool.
L’ICD2 può essere utilizzato anche per programmare il processore. Quindi una volta finito di debuggare il programma è possibile attivare l’ICD2 come programmer
selezionandolo nel menù Programmer/Select Programmer. Prima però deve essere disattivato come debugger altrimenti il sistema non funziona più correttamente
(evidentemente).
La figura 4 mostra i collegamenti del sistema.
Figura 16: Collegamento PC - ICD2 - DEMO BOARD
Per esercitarmi ho seguito il tutorial disponibile in rete al sito della Microchip. Viene
utilizzato un programma p16demo.asm per il PIC16F877 (ma è disponibile una versione anche per il PIC18) che permette al processore di sfruttare le periferiche presenti
sulla scheda di sviluppo come il display LCD, il sensore di temperatura, il piezo-buzzer
per generare dei suoni, il potenziometro che permette di utilizzare il convertitore AD
integrato nel PIC16 ed il clock real-time.
La scheda dispone di 3 sedi che permettono di posizionare vari modelli PIC con piedinatura diversa: 18, 28 e 40 piedini. Nella figura 15 si può osservare il PIC16F628
montato sull’attacco più piccolo.
Ho provato 3 differenti modelli di PIC: il PIC16F877 (40 piedini), il PIC16F84 (16
piedini) e il PIC16F628 (16 piedini). Per gli ultimi due però non ho potuto utilizzare
il programma del tutorial in quanto dispongono unicamente di 2 porte IN/OUT. Ho
realizzato quindi un semplice programma che sfruttava i 4 led attraverso la porta B
del processore. Il listato seguente riporta il programma.
list p =16 f628 , t = ON
# include " p16f628 . INC "
res_vec
int_vec
start
W
F
equ
equ
equ
equ
equ
0
4
5
0
1
cblock 0 x20
var1
Stage Chaudoire
35 / 97
Andrea Spiga
SSL-040606_AS-it
4 MPLAB ICD2
var2
var3
endc
ORG res_vec
nop
goto start
ORG start
banksel TRISB
movlw 0 x00
movwf TRISB
banksel PORTB
movlw 0 x00
movwf PORTB
call cont
incf PORTB , F
movlw 0 x0F
andwf PORTB , F
goto $ -4
cont movlw 0 xFF
movwf var1
movwf var2
movwf var3
decfsz var1
goto $ -1
decfsz var2
goto $ -3
; decfsz var3
; goto $ -5
retlw 0 x00
end
Durante queste fasi mi sono accorto che l’ICD2 non può essere usato come debugger
per il PIC16F628, ma può essere utilizzato solo come programmer mentre il PIC16F84
non viene supportato. Quindi non tutti i PIC permettono il debugging con l’ICD2.
Per stabilire quali PIC possono essere utilizzati con l’ICD2 è sufficiente selezionare
il menù Configure/Select Divice dal quale appare una finestra in cui è possibile
selezionare il modello di PIC per vedere quali debugger e programmer supporta. Le
figure11 17(a), 17(b) e 17(c) mostrano le finestre dei 3 PIC.
11
Nel caso la stampa di questo documento sia stata fatta in bianco e nero, i pallini chiari indicano
il colore verde mentre quelli più scuri il rosso
Stage Chaudoire
36 / 97
Andrea Spiga
SSL-040606_AS-it
(a)
(b)
(c)
Figura 17: Supporto per debugger e programmer per vari modelli di PIC
Stage Chaudoire
37 / 97
Andrea Spiga
SSL-040606_AS-it
5
5.1
5 SCHEDE DI SVILUPPO OLIMEX
Schede di sviluppo OLIMEX
Introduzione
La società OLIMEX è una azienda con sede in Bulgaria che realizza schede di sviluppo
con diversi modelli di microcontrollori e una grande varietà di tipologie di schede.
Principalmente i microcontrollori utilizzati sono gli ARM, gli MSP430 ed i PIC. I
prodotti offerti da questa azienda sono molto interessanti soprattutto per il prezzo
che risulta essere molto inferiore rispetto alle schede prodotte dalle case madri dei
microcontrollori.
Presso il dipartimento DTI sono stati acquistate alcune di queste schede. Le figure
18, 19 e 20 mostrano alcuni di questi prodotti.
Figura 18: Scheda PIC-IO-A
Figura 19: Scheda MSP430-H1611
Figura 20: Scheda MSP430-easyWeb2
Stage Chaudoire
38 / 97
Andrea Spiga
SSL-040606_AS-it
5.1 Introduzione
Nell’elenco seguente ho riportato le principali caratteristiche delle schede:
PIC-IO-A (figura 18)
• Scheda di sviluppo per PIC a 18 piedini
• 4 relays OUT con relativi 4 led di controllo output
• 4 optocoupler IN con relativi 4 led di controllo input
• Connettore ICSP/ICD per programmazione tramite PIC-PG1 o PIC-PG3B
e debugging tramite PIC-ICD1-B (Solo per i PIC che lo supportano)
• Power supply +12V
• Quarzo a 20Mhz
• Connettore RS232
MSP430-H1611 (figura 19)
• Microcontrollore MSP430F1611 con 48 KBytes Program Flash, 256 Bytes
data Flash, 10K Bytes RAM
• Connettore JTAG
• Oscillatore a 32768 Hz
• Power supply filtering capacitor
MSP430-easyWeb2 (figura 20)
• MSP430F149 con stack TCPIP open Source
• CS8900 LAN controller + LAN transformer, connettore LAN RJ45 LAN
• 3 led per il controllo dello stato della LAN
• 2 relay OUT 10A/240VAC
• 4 optocoupled IN
• 4 push button switches
• RS232
• Buzzer
• Display LCD 16x2
• Memoria eprom 64k (24LC515)
• Porta di estensione per ADC
• Connettore JTAG
• Oscillatore 8Mhz
Il collegamento fra scheda e PC avviene tramite un programmer 12 per le schede con
controllore PIC e tramite JTAG per le schede con controllore MSP430. Le figure
21(a) e 21(b) mostrano i 2 componenti. Riguardo al componente PIC-PG1 è stato
possibile applicarlo al SUPIC-01. La sezione 5.2 riporta questa operazione.
12
In italiano sarebbe “programmatore” ma preferisco lasciare il termine inglese
Stage Chaudoire
39 / 97
Andrea Spiga
SSL-040606_AS-it
5 SCHEDE DI SVILUPPO OLIMEX
(a)
(b)
Figura 21: Programmer (PIC-PG1) e JTAG (MSP430-JTAG) per schede di sviluppo
5.2
Programmmer PIC-PG1 per SUPIC
L’elettronica del programmer PIC-PG1 è completamente integrata nel connettore
RS232 (figura 21(a). È stato quindi possibile utilizzarlo per il SUPIC. Sfruttando
questo componente infatti si può eliminare il bootloader pre-programmato sul PIC
che oltre ad occupare spazio in memoria rende l’operazione di programmazione leggermente macchinosa.
Con l’aiuto di uno studente di elettronica è stato costruito un piccolo schedino da
montare sopra la SUPIC che permette l’interfacciamento con il programmer PIGPG1. La figura 22(a) mostra lo schedino mentre la figura 22(b) riporta la SUPIC
con montato lo schedino di interfacciamento ed il programmer. A causa di problemi
(a)
(b)
Figura 22: SUPIC con schedino e programmer
elettronici è stato necessario apportare una piccola modifica alla SUPIC scollegando
un diodo13 .
Lo schedino (figura 22(a)) non ha nessun componente elettronico. Ho quindi apportato una modifica ad una SUPIC integrando l’attacco del programmer sul bordo della
scheda e provvedendo a collegare l’attacco con i piedini del PIC14 . La figura 23 mostra
la SUPIC modificata.
13
14
Sullo schema elettrico della SUPIC: diodo D1
Il collegamento avviene tramite 6 piedini
Stage Chaudoire
40 / 97
Andrea Spiga
SSL-040606_AS-it
5.3 Scheda PIC-IO-A
(a)
(b)
Figura 23: SUPIC modificato per collegamento diretto con il programmer
Per la programmazione del controllore ho utilizzato il software IC-Prog Prototype
Programmer scaricabile gratuitamente dal sito http://www.ic-prog.com.
Il programma è molto semplice e permette la programmazione di parecchi controllori. È possibile leggere la memoria, cancellarla e riprogrammarla caricando un file
in formato binario .hex magari compilato in precedenza tramite il software MPLAB.
Esistono anche delle altre funzionalità che non ho ancora testato.
I test che ho eseguito sono
• Lettura, cancellazione della memoria di programma
• Caricamento di un paio di programmi sviluppati durante i corsi di formazione
e verifica del corretto funzionamento
• Caricamento solo del bootloader e programmazione alla vecchia maniera tramite
Tera-Term
Durante questi test non ho riscontrato nessun problema di funzionamento. L’unico
inconveniente che mi è capitato è quando ho utilizzato il portatile personale che non
avendo nessuna uscita COM utilizza un adattatore USB-COM. La comunicazione non
funziona correttamente. Ad esempio durante la lettura della memoria di programma
il processo inizia a leggere ma dopo alcuni secondi si blocca. Non mi è ancora chiaro
se si tratta di un problema software o hardware.
5.3
Scheda PIC-IO-A
La scheda PIC-IO-A (figura 18) permette il montaggio di un PIC con 18 piedini. Ho
provveduto quindi a montare il PIC16F628. Durante la ricerca di documentazione su
questa scheda mi sono imbattuto su di un compilatore C per PIC: CC5X. È possibile
scaricare in versione gratuita limitato a 1024 istruzioni oppure un versione test fino a
circa 8000 istruzioni ma che non genera il file binario .hex ma solo il file assembler 15 .
Ho quindi studiato velocemente la sintassi ed il suo funzionamento è l’ho utilizzato
per creare un programma da utilizzare sulla scheda PIC-IO-A. Funziona da linea di
comando oppure si può integrarlo nell’MPLAB. In questi test ho lavorato solo da linea
15
Però basta prendere il file assembler e compilarlo con l’MPLAB
Stage Chaudoire
41 / 97
Andrea Spiga
SSL-040606_AS-it
5 SCHEDE DI SVILUPPO OLIMEX
di comando.
Il programma che ho realizzato per testare la scheda è abbastanza semplice. Il controllore si mette in attesa di messaggi sulla seriale ed in base al messaggio che riceve
attiva o disattiva uno dei 4 relay. Il messaggio da inviare è composto da 2 caratteri
ASCII: un numero da 1 a 4 che identifica uno dei 4 relay ed il carattere ’a’ oppure ’d’
che identifica l’operazione di attivazione rispettivamente disattivazione del relay.
Il listato seguente mostra il programma.
# include " .\ CC5X \16 F628 . h "
// Header file fpr PIC16F628
# include " .\ CC5X \ int16CXX . H " // General Interrupts header file
# pragma
# define
# define
# define
# define
# define
# define
# define
# define
config |= 0 x3F02 // HS Oscillator , CProtect off , WDT off
HS_Osc
Serial_Out_BB RB2
Serial_In_BB RB7
Baud_9600
TRUE 1
FALSE 0
STATE0 0
STATE1 1
bit
data_rx ;
uns8 data_in , STATE , numero , lettera , tmp ;
uns16 contatoreBlink Led ;
# pragma origin 4
interrupt serverX ( void ){
in t_s ave _r egi ste rs
char sv_FSR = FSR ;
if ( RCIF ){
data_in = RCREG ;
data_rx = TRUE ;
RCREG = 0;
}
FSR = sv_FSR ;
int_restore_registers
// interrupt
// save FSR if required
// UART Recieve Interrupt
// No clearing RCIF , must clear RCREG
// restore FSR if saved
}
# include " .\ CC5X \ Delay . c "
# include " .\ CC5X \ stdio . c "
// Delays
// Software and Hardware based RS232 Signals
void main (){
PORTA = 0;
TRISA = 0;
PORTB = 0;;
TRISB = 0 x02 ;
// Nell ’ 16 F628 RB1 e ’ RX dell ’ UART
RB5
= 1; // LED
STATE = STATE0 ;
numero = 0;
lettera = 0;
tmp
=0;
contatoreBl inkLed = 0;
enable_uart_TX (0); // Turn on Transmit UART with TX Interupts Disabled
enable_uart_RX (1); // Turn on Receive UART with RX Interupts Enabled
Stage Chaudoire
42 / 97
Andrea Spiga
SSL-040606_AS-it
5.4 Scheda PIC-ICD2
while (1){
if ( data_rx == TRUE ){
GIE = 0;
data_rx = FALSE ;
contatoreBl inkLed = 0; // Reset LED
switch ( STATE ){
case STATE0 : if ( data_in == ’1 ’ || data_in == ’2 ’ ||
data_in == ’3 ’ || data_in == ’4 ’ ){
numero = data_in ;
STATE = STATE1 ;
}
break ;
case STATE1 : if ( data_in == ’a ’ || data_in == ’d ’ ){
switch ( numero ){
case ’1 ’: if ( data_in == ’a ’) tmp |=
else tmp &= 0 xF7 ;
break ;
case ’2 ’: if ( data_in == ’a ’) tmp |=
else tmp &= 0 xFB ;
break ;
case ’3 ’: if ( data_in == ’a ’) tmp |=
else tmp &= 0 xFD ;
break ;
case ’4 ’: if ( data_in == ’a ’) tmp |=
else tmp &= 0 xFE ;
break ;
default : break ;
}
// Trasmetti operazione eseguita
TXREG = numero ; TXREG = data_in ;
}
PORTA = tmp ;
STATE = STATE0 ;
}
GIE = 1;
}
// Blink LED
if ( contatoreBlinkLed == 0 xFFFF ) RB5 ^= 1;
contatoreBl inkLed ++;
}
0 x08 ;
0 x04 ;
0 x02 ;
0 x01 ;
}
Ho programmato la scheda tramite il programmer PIC-PG1 ed il software IC-Prog.
5.4
Scheda PIC-ICD2
La scheda PIC-ICD2 visibile in figura 24 come dice il nominativo ha la stessa funzione
del debugger/programmer ICD2 della Microchip (vedi capitolo 4). La società dichiara
che è compatibile al 100% con l’ICD2 originale. L’unica differenza sta nel connettore
ICSP che permette il collegamento alla scheda di sviluppo: Microchip utilizza un connetore RJ45, mentre la Olimex utilizza un connettore da loro denominato“0.1 step”.
La figura 25 mostra i due modelli di connettori.
La connessione al PC avviene tramite cavo USB o seriale come per l’ICD2 della Microchip. Collegandolo al computer, il sistema lo riconosce come se fosse l’originale.
Come test ho creato un semplice programma in C in modo da testare ancora il compilatore CC5X. Ho utilizzato la scheda SUPIC. Il programma fa lampeggiare il led
Stage Chaudoire
43 / 97
Andrea Spiga
SSL-040606_AS-it
5 SCHEDE DI SVILUPPO OLIMEX
Figura 24: Scheda PIC-ICD2
Figura 25: Connettore “0.1 step” e RJ45
rosso presente sul bordo della SUPIC.
Il listato seguente riporta il programma.
# define
# define
# define
# define
# define
# define
HS_Osc
Serial_Out_BB RB2
Serial_In_BB RB7
Baud_9600
TRUE 1
FALSE 0
# include " .\ CC5X \16 F877 . h "
// Compiler specific header file
# include " .\ CC5X \ int16CXX . H " // General Interrupts header file
# pragma origin 4
# pragma bit RA4 @ PORTA .4
// interrupt
void main (){
PORTA = 0 x00 ;
TRISA = 0 x00 ;
PORTB = 0 x00 ;
TRISB = 0 x00 ;
uns16 x =0 xFFFF ;
RA4 = 1;
while ( TRUE ){
while (x >0 x10 ){
Stage Chaudoire
44 / 97
Andrea Spiga
SSL-040606_AS-it
5.4 Scheda PIC-ICD2
x -= 1;
}
RA4 ^=1;
x =0 xFFFF ;
}
}
Invece di creare il file binario .hex, ho creato il file assembler grazie ad una delle
opzioni del compilatore16 . Infine ho caricato il file nell’MPLAB e ho provveduto a
debuggare in-line il programma e a programmare la SUPIC.
Non ho riscontrato nessun tipo di problema, il software MPLAB riconosce la scheda
PIC-ICD2 come se fosse l’originale. La figura 26 mostra il collegamento fra PIC-ICD2
e SUPIC.
Figura 26: Collegamento fra SUPIC (destra) e PIC-ICD2 (sinistra)
16
Da linea di comando: >CC5X -a CodiceTestPIC16F87.c
Stage Chaudoire
45 / 97
Andrea Spiga
SSL-040606_AS-it
6
6 ANALISI COMPONENTI CUBESAT
Analisi componenti cubesat
Nell’ambito dell’ottimizzazione della struttura e del peso dei componenti che costituiranno il satellite ho analizzato il cubesat fornito dalla società Pumpkin smontandolo
in tutti i suoi singoli componenti e pesando ogni elemento. Le figure 27(a) e 27(b)
mostrano il satellite analizzato.
(a)
(b)
Figura 27: CubeSat (322.16 g)
Si osserva un gancio collegato al modulo con la scritta “REMOVE BEFORE FLIGHT”.
Questo gancio è collegato ad un interruttore interno montato sulla scheda elettronica
che presumibilmente servirà per l’attivazione di tutto il sistema.
Figura 28: Gancio di attivazione (9.80 g)
Per pesare gli elementi ho utilizzato una bilancia da laboratorio con una precisione
fino al centesimo di grammo (modello Metler PM2000).
Il peso totale del modulo è di 322.21 g.
La figura 29 mostra le 4 viti necessarie per togliere il coperchio. Questo elemento
(46.61 g) è composto da una lamiera (40.55 g) e da 4 piedini (5.32 g) fissati a loro
volta con 4 viti (0.73 g). La figura 30(a) riporta questa parte mentre la figura 30(b)
mostra sempre lo stesso pezzo completamente smontato. Il materiale utilizzato per i
piedini è una lega molto leggera.
In figura 31 si osserva la scheda elettronica montata all’interno del modulo.
Sotto la scritta “PUMPKIN” si osserva un’interruttore nero che viene attivato/disattivato dal gancio di figura 28.
L’involucro laterale (32(a)) è fissato alla base con 6 viti. Questo pezzo è una lamiera
unica piegata in prossimità degli spigoli.
La figura 32(b) riporta il particolare del fissaggio di questo pezzo. Non vengono utilizzate viti ma viene fissato meccanicamente ad incastro con probabilmente della colla.
Il peso di questo elemento è di 130.39 g mentre quello delle sei viti utilizzate per il
Stage Chaudoire
46 / 97
Andrea Spiga
SSL-040606_AS-it
Figura 29: Faccia del modulo con 4 viti di fissaggio
(a)
(b)
Figura 30: Coperchio del modulo (47.81 g)
Figura 31: Scheda elettronica montata all’interno del modulo
fissaggio alla base è di 1.79 g.
Le figure 33(a) e 33(b) mostrano la base del modulo insieme alla scheda elettronica.
La scheda è fissata alla base attraverso 4 viti ed ha un peso di 63.37 g. Per permettere
il montaggio di altre schede sono stati posizionati 4 spessori cilindrici.
Stage Chaudoire
47 / 97
Andrea Spiga
SSL-040606_AS-it
6 ANALISI COMPONENTI CUBESAT
(a)
(b)
Figura 32: Involucro laterale del modulo (130.39 g)
(a)
(b)
Figura 33: Base del modulo e scheda elettronica
Figura 34: Spessori per permettere il montaggio di un’altra scheda (4 × 5.24 g)
Stage Chaudoire
48 / 97
Andrea Spiga
SSL-040606_AS-it
La figura 35 mostra la scheda elettronica sulla quale è presente il processore M430F149
della Texas Instrument.
Figura 35: Scheda elettronica con processore M430F149 TI (63.37 g)
Sulla base sono montati ad incastro diversi dadi filettati che non ho potuto smontare.
Il suo peso è di 52.40 g.
I punti di appoggio della base consistono in un piedino normale fissato con una vite ,
2 piedini con sistema a molla incorporato fissati con dei dadi ed un interruttore fissato
con 2 viti. Le figure 36(a) e 36(b) mostrano i particolari del piedino ammortizzato e
dell’interruttore. I 2 piedini ammortizzati dovrebbero servire per garantire il distacco
(a)
(b)
Figura 36: Particolari del punto di appoggio della base
del modulo dagli altri moduli al momento del rilascio nello spazio. L’interruttore
segnala al sistema che il modulo è stato rilasciato (interruttore generale).
La figura 37 mostra il modulo completamente smontato.
La tabella 9 riporta i pesi di tutti i singoli componenti. L’ultima colonna riporta
la percentuale sul peso totale. La colonna Peso Tot. riporta il peso di tutte le
quantità del componente (pesati insieme). Alcune di queste posizioni differiscono dal
prodotto fra le colonne Quantità per Peso singolo per un paio di centesimi di gramStage Chaudoire
49 / 97
Andrea Spiga
SSL-040606_AS-it
6 ANALISI COMPONENTI CUBESAT
Figura 37: Modulo smontato
mo. Questo è dovuto alla risoluzione della bilancia. La tabella 10 mostra gli stessi
componenti suddivisi per categoria.
Tabella 9: Peso componenti CubeSat
Pos.
1
Fig.
28
Componente
Gancio esterno
Qtà
1
Peso (g)
Singolo
Tot.
9.80
9.80
%
3.0
2
3
4
5
6
7
8
30(a), 30(b)
29, 30(a)
30(a), 30(b)
30(b)
Coperchio
Viti fissaggio coperchio
Piedino
Vite fissaggio piedino
1
4
4
4
40.55
0.30
1.33
0.18
40.55
1.21
5.32
0.73
12.6
0.4
1.6
0.2
32(a), 32(b)
37
Involucro lamiera laterale
Viti x fissaggio alla base
1
6
130.39
0.30
130.39
1.79
40.5
0.5
9
10
11
12
13
14
15
33(a), 33(b)
36(b)
37
36(a)
37
37
37
Base
Interruttore nero
Viti fissaggio interruttore
Piedino con molla
Dado fissaggio piedino
Piedino
Vite fissaggio piedino
1
1
2
2
2
1
1
52.40
2.90
0.26
1.74
0.21
1.33
0.37
52.40
2.90
0.52
3.48
0.41
1.33
0.37
1.6
0.9
0.2
1.1
0.1
0.4
0.1
16
17
18
19
20
35
37
34
34
34
Scheda con processore
Vite fissaggio scheda
Spessore cilindrico
Viti corte per spessore
Viti lunghe per spessore
TOT
1
4
4
4
4
63.37
0.58
0.51
0.36
0.43
63.37
2.35
2.04
1.47
1.73
322.16
19.7
0.7
0.6
0.4
0.5
Peso CubeSat montato
∆
Stage Chaudoire
50 / 97
322.21
0.05
Andrea Spiga
SSL-040606_AS-it
Tabella 10: Peso componenti principali CubeSat
Struttura
Scheda
Elettronica
Materiale
montaggio
Accessori
meccanici
Elettromeccanica
Componente
Coperchio
Involucro lamiera laterale
Base
Qtà
1
1
1
Peso (g)
40.55
130.39
52.40
Scheda con processore
1
63.37
Viti fissaggio coperchio
Vite fissaggio piedino
Viti fissaggio base
Viti fissaggio interruttore
Dado fissaggio piedino
Vite fissaggio piedino
Vite fissaggio scheda
Spessore cilindrico
Viti corte per spessore
Viti lunghe per spessore
Piedino
Piedino con molla
Gancio esterno
4
4
6
2
2
1
4
4
4
4
5
2
1
1.21
0.73
1.79
0.52
0.41
0.37
2.35
2.04
1.47
1.73
6.65
3.48
9.80
Interruttore nero
1
2.90
Totale (g)
%
223.34
69.3
63.37
19.7
12.62
3.9
19.93
6.2
2.90
0.9
Insieme al cubesat sono state acquistate alcune schede da poter inserire all’interno
del modulo. Le figure 38(a) e 38(b) mostrano una scheda con montato un supporto
per memorie SD/MMC mentre la figura 39 mostra una scheda vuota già forata pronta
per il montaggio di componenti.
(a)
(b)
Figura 38: Scheda con supporto per memorie SD/MMC (43.99 g)
Stage Chaudoire
51 / 97
Andrea Spiga
SSL-040606_AS-it
6 ANALISI COMPONENTI CUBESAT
Figura 39: Scheda vuota forata (28.89 g)
Stage Chaudoire
52 / 97
Andrea Spiga
SSL-040606_AS-it
7
Analisi sistemi di alimentazione (EPS)
In questa sezione presento i risultati della ricerca sulle soluzioni adottate da altri
progetti universitari nel campo pico-satelliti per il sistema EPS17 . Questa ricerca
servirà a valutare meglio la scelta sulla tipologia di prodotti da utilizzare per le celle
solari e le batterie.
7.1
Cal Poly State University (USA), CP1
Le informazioni riportate nelle tabelle 11, 12, 13 e 14 sono prese dal documento [8].
Tabella 11: Specifiche pannelli solari CP1
Type/Technology
Manufacturer
Quantity
Nominal voltage (tot)
Efficiency
V
%
Dual Junction GaAs
Spectrolab
2
4.2
>19
In questo progetto sono state confrontate varie tipologie di batterie.
Tabella 12: Confronto caratteristiche chimiche ed elettriche fra alcune tipologie di batterie
Modello
Nominal Voltage
Gravimetric Energy
Density
Volumetric Energy
Density
Self-Discharge Rate
Temperature Range
V
Wh/Kg
Wh/l
%month
◦C
NiCd
1.2
45
NiMH
1.25
55
LiIon
3.6
100+
LiMetal
3.0
140+
150
180
225+
300+
25
0 ↔ 50
20 ↔ 25
-10 ↔ 50
8
-10 ↔ 50
1↔2
-30 ↔ 55
La scelta è caduta sulle batterie al litio per la loro altissima densità di energia volumetrica e gravimetrica18 . Sono state previsti due modelli di batterie: una secondaria
a ioni di litio che viene ricaricata dai pannelli solari ed una primaria di sicurezza.
Quest’ultima entra in funzione solo in caso di difetti ai pannelli solari che non sono
più in grado di caricare la batteria secondaria. La batteria ha la forma di una normale
batteria tipo ”C” 19 ed ha una capacità molto più grande rispetto alla secondaria in
modo da permettere il funzionamento del sistema in modalità low-power per diverse
settimane. Le tabelle 13 e 14 riportano alcune caratteristiche di queste batterie.
17
Energy Power System
Tradotto liberamente dalla frase “extremely high volumetric and gravimetric energy densities”
19
Forma cilindrica: 26.2 mm diametro, 50 mm altezza
18
Stage Chaudoire
53 / 97
Andrea Spiga
SSL-040606_AS-it
7 ANALISI SISTEMI DI ALIMENTAZIONE (EPS)
Tabella 13: Specifiche batteria secondaria CP1
Type/Technology
Manufacturer
Dimension (W,T,H)
Capacity
Nominal Voltage
Weight
mm
Ah
V
g
PSC340848 Lithium Ion
Polystor
8.5 × 34.2 × 48.0
1.2
3.6
38
Tabella 14: Specifiche batteria primaria CP1
Type/Technology
Manufacturer
Size
Capacity
7.2
Ah
Lithium-Metal
Electrochem
Type “C”
7.0
University of Texas (USA), CanSat
In questo progetto sono stati analizzati vari prodotti di società differenti. La tabella
15 mostra i dati di alcuni modelli di celle solari.
Anche per le batterie è stata fatta una raccolta di informazioni per diverse tipologie.
La tabella 16 mostra questi dati.
Analizzando le varie caratteristiche sono state proposte 3 soluzioni possibili, dalla prima più conveniente all’ultima più costosa. La tabella 17 riporta i 3 livelli di soluzione.
Le informazioni riportate in questa sezione sono state prese dal sito:
http://www.ae.utexas.edu/courses/ase463q/design_pages/spring03/cubesat/
web/table%20of%20contents.htm
Stage Chaudoire
54 / 97
Andrea Spiga
SSL-040606_AS-it
7.2 University of Texas (USA), CanSat
Tabella 15: Specifiche di alcuni modelli di celle solari
Technolgy
Supply Voltage
V
Spectrolab
Dual
Junction
2.05
EmCore
Dual
Triple
Junction
Junction
2.08
2.57
Supply Current mA
230 ↔ 286
427.50
427.50
Power mW
471 ↔ 586
889.20
1096.54
Energy Conversion
Efficiency
%
16.1 ↔ >20
23.2
28.6
Size cm
3.12 × 6.91
3.72 × 7.61
3.72 × 7.61
140
-
155
2.4
155
2.4
260.00
260.00
Thickness (Microns)
Wieght
g
5.40 ↔ 12.60
Cost per Cell $
Min. Ord. 50
Silicon Solar
Single
Junction
0.51
3500
1300
250
75
1785
663
127.5
38.25
12.4
10.3 × 10.3
6.25 × 6.25
1.7 × 6.25
2.6 × 1.7
6.00
3.00
1.50
1.00
Tabella 16: Specifiche di alcuni modelli di batterie ricaricabili. Produttori: Matsushita
Battery e Ultralife
Energy
Density
(mWh/g)
Charge Cycles
Difficulty of
Charge
Susceptible
to
Over
Charge
Temperature
Range (◦ C)
Cost
per
Cell ($)
Stage Chaudoire
Nickel Metal
Hydridel
Cylindrical Prismatic
64
60
1000
Lithium
Ion
Cylindrical Prismatic
147
142
1000
500
Easy
500
Lithium
Polymer
Prismatic
152
300
Difficult, due to safety concerns
No
No
Yes
Yes
Yes
0 ↔ 45
0 ↔ 45
-10 ↔ 45
-10 ↔ 45
-20 ↔ 60
5
8
30
30
99
55 / 97
Andrea Spiga
SSL-040606_AS-it
7 ANALISI SISTEMI DI ALIMENTAZIONE (EPS)
Tabella 17: Combinazioni possibili per CanSat
Celle Solari:
Batteria:
Stage Chaudoire
Type
Efficiency
%
Cell Coverage cm2
Energy
Wh
Part Number
Voltage
V
Capacity
Ah
Energy
Wh
Charge Current mA
Charge Time min
Weight
g
Volume
cm2
Chemistry
Configuration
Option 1
Spectrolab
17.00
388.00
2.07
HHR120AA
3.6
1.15
4.14
1200
70
69.0
21.3
NiMH
3 Cells in series
56 / 97
Option 2
Option 3
Spectrolab Spectrolab
18.00
20.00
388.00
388.00
2.19
2.43
SLPB523462
3.7
1.02
3.774
980
70
20.50
11.58
Li Poly
Single Cell
Andrea Spiga
SSL-040606_AS-it
7.3
7.3 University of Stanford (USA), KatySat
University of Stanford (USA), KatySat
Le informazioni riportate nelle tabelle 18 e 19 sono prese dalla pagina web
http://www.katysat.org.
Tabella 18: Specifiche pannelli solari KatySat
Manufacturer
Efficiency %
Descrizione
Spectrolab
28
Ognuno delle 6 facce del cubo è ricoperto da pannelli solari. Ogni pannello è composto da 2 celle
in serie
Tabella 19: Specifiche batterie KatySat
Type/Technolgy
Manifacturer
Thermal charge environment ◦ C
7.4
Dual pack lithium-ion
Panasonic
0 ↔ 45
University of Stanford (USA), QuakeSat
Le informazioni riportate nelle tabelle 20 e 21 son prese dal documento [10]. Questo
progetto è una variazione sul tema Cubesat. Infatti come mostra la figura 40 il modulo
è più grande di un CubeSat standard.
Figura 40: QuakeSat
Stage Chaudoire
57 / 97
Andrea Spiga
SSL-040606_AS-it
7 ANALISI SISTEMI DI ALIMENTAZIONE (EPS)
Tabella 20: Specifiche pannelli solari QuakeSat
Type/Technolgy
Quantity
Dimension (W,T) mm
Efficiency
%
Multi-junction GaAs
12
330 × 86
22.9
Tabella 21: Specifiche batterie QuakeSat
Type/Technolgy
Quantity
7.5
Lithium+ Ion
4
University of Washington (USA)
Le informazioni riportate nelle tabelle 22 e 23 son prese dal documento [11].
Tabella 22: Specifiche pannelli solari Cubesat Washington
Type/Technolgy
Manifacturer
Efficiency
%
Triple-junction
Tecstar
26.5
Tabella 23: Specifiche batterie Cubesat Washington
Type/Technology
7.6
Lithium polymer
University of Kansas (USA), KuteSat
Le informazioni riportate nelle tabelle 24 e 25 sono prese da una presentazione del
progetto KuteSat consultabile sul sito
http://www.engr.ku.edu/ae/kutesat.htm.
Tabella 24: Specifiche pannelli solari KuteSat
Type/Technolgy
Manifacturer
Output Voltage V
Output Current mA
Efficiency
%
Dimensions
mm
Weight
g
Quantity
Stage Chaudoire
Rectangular Dual Junction GaAs/Ge
Spectrolab
2.05
260
21.5
69×32×2
<2
2 on side A, D; 3 on side B, C; 1 on side E
58 / 97
Andrea Spiga
SSL-040606_AS-it
7.7 University of Toronto (Canada), CanX-1
Tabella 25: Specifiche batterie KuteSat
Type/Technology
Model
Manufacturer
Operating Voltage
V
Capacity
mAh
Dimensions
mm
Weight
g
Operating Temperature ◦ C
Charging Temperature ◦ C
Quantity
7.7
Li-Ion
VC497165
Valence Technology Inc.
3.7
1860
71×65×4.9
42
-20 ↔ 60
>0
2
University of Toronto (Canada), CanX-1
Le informazioni riportate nelle tabelle 26 e 27 sono prese dal documento [9].
Tabella 26: Specifiche pannelli solari CanX-1
Type/Technology
Quantity
Minimum efficiency
Output voltage
Power (worst case)a
a
%
V
W
Triple-junction gallium arsenide
6, parallel connected
18
4.4 ↔ 5.0
1.63 (everyone)
Caso peggiore che si otterrebbe nelle seguenti condizioni:
• operating Temperature of 80◦ C
• end-of-life efficiency of 25%
• on-orbit sun radiative power flux of 1367 W/m2
Tabella 27: Specifiche batterie CanX-1
Type/Technolgies
Manufacturer of battery
Manufacturer of battery pack
Quantity
Nominal capacity (total)
Nominal Voltage
Charge Temperatur Range
Discharge Temperatur Range
Weight (total)
7.8
mAh
V
◦C
◦C
g
Lithium-Ion
Polystor
Nexergy Inc.
3, parallel connected
3600
3.7
0 ↔ 40
-20 ↔ 60
114
University of Aalborg (Danimarca), AAU Cubesat
Le informazioni riportate nelle tabelle 28 e 29 sono prese dalla pagina web
Stage Chaudoire
59 / 97
Andrea Spiga
SSL-040606_AS-it
7 ANALISI SISTEMI DI ALIMENTAZIONE (EPS)
http://cubesat.auc.dk/.
Tabella 28: Specifiche pannelli solari AAU Cubesat
Type/Technology
Manufacturer
Efficiency
Maximum power point of
%
V
Triple junction GaAs
EMCORE
28
4.2
Tabella 29: Specifiche batterie AAU Cubesat
Type/Technolgy
Quantity
Capacity (each)
7.9
mAh
Lithium-Ion polymer
4
940
Università di Torino (Italia), PICpot
Le informazioni riportate nelle tabelle 30 e 31 sono prese dalla pagina web
http://polimage.polito.it/picpot/
Tabella 30: Specifiche pannelli solari PICpot
Type/Technology
Output Voltage
Output Current
Price
V
mA
$
Polycrystalline Silicon
0.54
700
2.50
Sono state utilizzate due tipi di batteria
Tabella 31: Specifiche batterie PICpot
Type/Technolgy
Manufacturer
Voltage (each/tot)
Capacity (each/tot)
Dimension
Quantity
7.10
7.10.1
V
mAh
mm
Ni-Cd
Sanyo
1.2/7.2
850/850
2 battery packages,
each package 6 cells
in series
Lithium Polymer
Ultralife
3.6/7.2
1600/1600
86×51×4.7
4 battery packages,
each package 2 cells
in series
Tokio Institute of Technology (Japan)
CUTE-I
Le informazioni riportate nelle tabelle 32 e 33 sono prese dal documento [7].
Stage Chaudoire
60 / 97
Andrea Spiga
SSL-040606_AS-it
7.10 Tokio Institute of Technology (Japan)
Tabella 32: Specifiche pannelli solari CUTE-I
Type/Technology
Manufacturer
Cell Size (W,T,H)
Voc
Isc
IL(5.0 V)
IL(4.5 V)
P(4.5 V)
Temp. (operation)
Efficiency
Silicon
SHARP
27 × 24 × 0.1
6180
321
304
313
1.4085
-150 ↔ 140
16.9
mm
mV
mA
mA
mA
W
◦C
%
Tabella 33: Specifiche batteria CUTE-I
Type/Technology
Manufacturer
Nominal Capacity
Nominal Voltage
Charging Voltage
Cathode Materials
Anode Materials
Dimension (W,T,H)
Cycle Life
Operating Temp Range Charge
Operating Temp Range Discharge
Weight
7.10.2
mAh
V
V
mm
Cycles
◦C
◦C
g
Li-Ion
NEC
1040
3.8
4.2 ∓ 0.05
Mn
Graphite
33.8 × 6.5 × 66.6
500
0 ↔ 45
-20 ↔ 60
32
CUTE-1.7+APD
Questo modulo è il successore del CUTE-I ed ha dimensioni raddoppiate (20×10×10).
La sigla APD sta per Avalanche Photo Diode.
Le informazioni riportate nelle tabelle 34 e 35 sono prese dalla pagine internet
http://lss.mes.titech.ac.jp/ssp/cute1.7/index_e.html
Tabella 34: Specifiche pannelli solari CUTE-1.7+APD
Type/Technology
Manufacturer
Cell Size
Voltage
Current
Efficiency
Stage Chaudoire
mm
mV
mA
%
61 / 97
GaAs
Emcor
38.4 × 63.2
2120±1.0
363
23.2
Andrea Spiga
SSL-040606_AS-it
7 ANALISI SISTEMI DI ALIMENTAZIONE (EPS)
Tabella 35: Specifiche batteria CUTE-1.7+APD
Type/Technology
Manufacturer
Nominal Capacity (each)
Nominal Voltage
Dimension
Weight
Quantity
7.11
mAh
V
mm
g
Li-Ion
NEC-TOKIN
1120
3.8
33.6 × 8.7 × 47.0
39.0
4 parallel connected
National Space Program Office (Taiwan), YamSat
Anche se non si tratta di una università ma di un progetto promosso dal governo
di Taiwan ho ritenuto opportuno riportare anche questi dati. Il progetto YamSat
prevedeva lo sviluppo di 3 Cubesat 1A, 1B e 1C ognuno con una diversa missione da
compiere.
Le informazioni riportate nelle tabelle 36 e 37 son prese dal documento [12].
Tabella 36: Specifiche pannelli solari YamSat
Type/Technolgy
Manufacturer
Efficiency (tot) %
1 Silicon + 5 GaAs
Shih-Lin & engineering Corp.
13
Tabella 37: Specifiche batterie YamSat
Type/Technolgy
Model
7.12
Lithium
E-ONE ICR18500A
Conclusioni
Riassumendo posso quindi constatare che sia per i pannelli solari che per le batterie
sono state sempre utilizzate le stesse tecnologie. Per la maggioranza dei pannelli solari infatti viene utilizzata la tecnologia “Multi-junction GaAs” mentre per quanto
riguarda le batterie viene utilizzata la tecnologia a ioni di litio.
Sarebbe stato interessante avere informazioni su eventuali problemi di questi componenti, ma sui documenti da me consultati non è stato riportato nessun tipo di
problematica ne durante il corso della missione, ne durante i test. Magari non ci sono
stati problemi oppure hanno volutamente omesso l’argomento (molto più probabile).
La tabella 38 riporta una statistica dei progetti analizzati:
Stage Chaudoire
62 / 97
Andrea Spiga
SSL-040606_AS-it
7.12 Conclusioni
Tabella 38: Statistica progetti analizzati
Batteria
Celle solari
Stage Chaudoire
Tecnolgia
Li_Ion
Lithium-Metal
N◦ progetti
11
1
%
100
-
NiMH
1
-
NiCd
1
-
Silicon
GaAs
2
9
16.7
83.3
63 / 97
Commenti
Batteria di emergenza per
progetto CP1
Scelta alternativa a quella a
ioni di litio nel progetto AAU
CubeSat
Batteria aggiuntiva per progetto PICpot
Andrea Spiga
SSL-040606_AS-it
8
8 COMPUTER DI BORDO (OBC)
Computer di bordo (OBC)
Questa sezione riporta i risultati della ricerca sui computer di bordo (OBC20 ) utilizzati da altri progetti universitari nel campo pico-satelliti.
8.1
Cal Poly State University (USA), CP1
Il computer di bordo è un modulo Netmedia BasicX24. Il core di questo modulo è un
Atmel 8535 RISC.
Questo modulo è programmabile in Basic, è dotato di 16 linee di I/O di cui 8 configurabili come ingressi AD a 10bit, multitasking, gestione matematica in virgola mobile,
orologio di sistema, ecc. Le dimensioni sono ridottissime. Il range di temperatura supportato e compreso fra 0 e 70 ◦ C.
Consultando il sito web di questo prodotto ho trovato una versione aggiornata denominata BX24p che oltre ad essere più veloce21 , supporta un range di temperatura
più alto per l’utilizzo industriale compreso fra -40 e +85 ◦ C.
Ulteriori informazioni riguardo questa scheda si possono trovare sul sito
http://www.basicx.com/
Le informazioni in questa sezione sono prese dal documento [8].
8.2
University of Texas (USA), CanSat
L’OBC utilizzato in questo progetto è un microcontrollore ATMEL ATmega163. La
selezione di questo controllore è stata fatta scartando diversi altri modelli. La tebella
39 riporta i controllori presi in considerazione.
Tabella 39: Lista controllori possibili per progetto CanSat
Company
Motorola
Hitachi
Intel
Microchip, PIC
ATMEL
Reason for Rejection or Selection
Hard to solder because of BMG configuration
Programming skills very limited
High power consumption
Nothing wrong
Nothing wrong
Dalla tabella 39 risulta che i controllori possibili erano 2. La scelta è finita su un
ATMEL a causa di esperienze già avute con i progetti precedenti.
L’elenco seguente riporta le principali caratteristiche del controllore:
• 16 KB in system Programmable Flash
• 1024 Bytes of SRAM
• 512 Bytes of Programmable EEPROM
20
21
On Board Computer
82000 al posto di 65000 BIPS (Basic Instruction Per Second)
Stage Chaudoire
64 / 97
Andrea Spiga
SSL-040606_AS-it
8.3 University of Stanford (USA), QuakeSat
• One 8 bit timer/counter
• One 16 bit timer/counter
• 8 channels and 10 bit Analog/Digital Converter
• Programmable watch-dog timer
• Programmable Serial UART
• Master/Slave SPI serial interface
• 32 programmable I/O lines
• Cost only 6.42$
8.3
University of Stanford (USA), QuakeSat
L’OBC utilizzato in questo progetto è una scheda prodotta dalla società Diamond
Systems sulla quale è montato addirittura un processore ZFx86. La tabella 40 mostra
le principali caratteristiche della scheda.
Tabella 40: Caratteristiche scheda Prometheus
Features
Low-power ZFx86 processor
Integrated Ethernet and
system I/O
Integrated data acquisition
-40 ↔ +85 o C operation
Benefits
Reduced heat dissipation / no fan required
Small size, Light weight
Single-board solution for increased reliability
Guaranteed compatibility
Compatible with vehicle and outdoor applications
Dispone di una memoria da 32 MB e di una memoria FLASH da 192 MB. La scheda
è stata scelta per la su capacità di lavorare in condizioni di temperatura non standard
(-40 ↔ +85 o C) e per la presenza di 16 canali analogici a 16 bit in entrata.
È stato utilizzato il sistema operatvo LINUX.
Informazioni più dettagliate riguardo alla scheda sono consultabili al sito
http://www.diamondsystems.com/products/prometheus#desc
8.4
University of Washington (USA)
In questo progetto è stato utilizza una scheda Tattletale 8v2. La documentazione
riguardante questa scheda è consultabile al sito
http://www.onsetcomp.com/Products/Product_Pages/Tattletale_pages/TT8.html
La scheda è stata scelta per le seguenti caratteristiche:
• 9 linee analogiche
• 2 porte RS232
Stage Chaudoire
65 / 97
Andrea Spiga
SSL-040606_AS-it
8 COMPUTER DI BORDO (OBC)
• richiede poco lavoro per l’integrazione elettronica
• basso costo (circa 500 $)
• capacità di regolare la velocità del clock e di conseguenza la potenza in entrata
al processore. Questo permette al CubeSat di minimizzare il consumo di energia
dei sistemi C&DH22 a dipendenza dello stato (operating mode) in cui si trova.
I processori montati sulla scheda sono un motorola 68332 ed un coprocessore PIC16C64.
8.5
University of Kansas (USA), KuteSat
Il controllore utilizzato è un PIC18F41420.
8.6
University of Toronto (Canada), CanX-1
L’OBC del CANX-1 è basato su di un microcontrollore ARM7 a 40 MHz, una memoria esterna RAM da 2MB, una memoria FLASH da 32MB ed una piccola memoria
ROM da 128 KB.
La memoria ROM è una componente resistente alle radiazioni in cui viene inserito un
codice di avvio (boot-strap code) in grado di garantire le operazioni base del modulo,
codice di inizializzazione, funzionalità base per restare in vita e codice per la comunicazione. Inoltre contiene delle routine per il rilevamento e la correzione di errori
(EDAC).
Una parte della memoria FLASH viene utilizzata per salvare e scrivere grandi quantità
di dati mentre un’altra parte per salvare software di alto livello e firmware aggiornato
proveniente dalla stazione base. L’EDAC provvede a controllare quest’ultima parte.
Le informazioni in questa sezione sono prese dal documento [9].
8.7
8.7.1
University of Aalborg (Danimarca)
AAU CubeSat
In questo progetto è stato utilizzato il microcontrollore low power C161 della Siemens.
Lavora ad una velocità di 10MHz con 4 MB di memoria RAM metà della quale
viene utilizzata per salvare le immagini prese con la camera di bordo. Una memoria
PROM da 512kB contiene il software iniziale ed una memoria FLASH da 256KB viene
utilizzata per eseguire upload di nuovo software dopo il lancio.
L’elenco seguente riporta le principali caratteristiche del controllore:
• High Performance 16-bit CPU with 4-stage pipeline
• 125 ns Instruction Cycle Time at 16 MHz CPU Clock
• 625 ns Multiplication (16 x 16 bit)
• 1,25 µs Division (32/16 bit)
• Clock Generation via Prescaler or via Direct Clock Input
• Enhanced Boolean Bit Manipulation Facilities
22
Comunication & Data Handling
Stage Chaudoire
66 / 97
Andrea Spiga
SSL-040606_AS-it
8.8 Universität Würzburg (Germany), UWE-1
• Additional Instructions to Support HLL and Operating Systems
• Register-Based Design with Multiple Variable Register Banks
• Single-Cycle Context Switching Support
• Up to 4 MBytes Linear Address Space for Code and Data
Le informazioni in questa sezione sono prese dalle pagine internet
http://cubesat.auc.dk/
http://www.nalanda.nitc.ac.in/industry/appnotes/siemens/cdrom/siemens/
www/hl_local/index.htm
8.7.2
AAUSat II
Questa seconda versione di CubeSat monta un processore diverso rispetto al primo
modello. L’OBC è un Atmel AT91SAM7A1 basato su un processore ARM7 con un
controllore CAN integrato. Tutte le interfacce con gli altri sottosistemi avvengono
infatti tramite bus CAN.
Le caratteristiche principali di questo OBC sono:
• High speed 32 bit RISC CPU at 40MHz
• 2 MB static low-power RAM
• 4 MB Data storage (FLASH-RAM)
• 4 MB Code storage (FLASH-ROM)
• CAN bus interface @125kbps
• RS232 debugging/SW-upload interface
• Power monitor/power-on reset
• Full eCos/RedBoot support
Ulteriori informazioni sono consultabili sul sito
http://www.aausatii.aau.dk
8.8
Universität Würzburg (Germany), UWE-1
Il processore di questo CubeSat è un Hitachi H8S-2674R su cui è stato carico il sistema
operativo µCLinux. Maggiori dettagli sono consultabili al sito
http://www7.informatik.uni-wuerzburg.de/cubesat/
Sul sito non sono riuscito a trovare documenti da poter scaricare, ma soltanto informazioni online e purtroppo molto poco dettagliate.
Stage Chaudoire
67 / 97
Andrea Spiga
SSL-040606_AS-it
8.9
8 COMPUTER DI BORDO (OBC)
Norwegian Universities, nCube
L’OBC è un Atmel AVR 8 bits RISC. Maggiori informazioni sono rintracciabili sul
sito
http://www.ncube.no/
Il progetto nCube è cominciato nel 2001 per merito di Andøya Rocket Range e del
Norwegian Space Centre. Al progetto hanno partecipato più di 80 studenti di diverse
università e collegi norvegesi. Quindi il progetto non coinvolgeva solo una università
ma bensì tutta la nazione.
8.10
Delft University (Netherlands), Delfi-C3
L’OBC è un controllore ultra low pawer MSP430 della Texas Instruments. La scheda
su cui è montato il microcontrollore è quella fornita dalla società Pumpkin Inc. insieme
al “Cubesat kit”.
Gli altri sottosistemi utilizzano dei PIC per comunicare con l’OBC (tramite bus seriale
I2C). Nel caso si presentasse un problema all’OBC, i PIC sono in grado di trasmettere
un minimo di informazioni vitali direttamente al sottosistema di comunicazione in
modo da poter essere trasmesso alla ground station.
Queste informazioni sono prese dal documento [13]. Ulteriori informazioni sul sito
http://www.delfic3.tudelft.nl/
8.11
Università di Torino (Italia), PICpot
L’OBC del satellite è composta da due processori di bordo A e B uno per ogni
ricetrasmettitore23 . I processori sono degli MSP430.
Altri processori sono presenti nel satellite per i sottosistemi. Ad esempio una scheda
è dedicata alla gestione delle immagini (compressione JPEG) ed utilizza un DSP
BlackFin della Analog Devices, dotato di 2MB di memoria RAM e altri 2MB di
memroia FLASH. Ulteriori informazioni possono essere consultate alla pagina web
http://polimage.polito.it/picpot/
8.12
8.12.1
Tokio Institute of Technology (Japan)
CUTE-I
L’OBC consiste in una 8bitMPU24 H8/300 con 32 KB di memoria ROM e 1 KB di
memoria RAM. I sottosistemi hanno due tipi di memoria: una SRAM da 4 Mbit che
viene utilzzata per salvare dati provenienti da vari sensori, ed una memoria EEPROM
da 256 kbit dove sono salvati i dati per la sequenza iniziale dei vari sottosistemi.
Ulteriori informazioni al sito
http://lss.mes.titech.ac.jp/ssp/cubesat/index_e.html
23
24
La comunicazione a terra avviene su due frequenze: 437.485 MHz e 2.44GHz
Micro Processing Unit)
Stage Chaudoire
68 / 97
Andrea Spiga
SSL-040606_AS-it
8.12.2
8.13 National Space Program Office (Taiwan), YamSat
Cute-1.7+APD
Questo modulo è il succesore del CUTE-I. Il volume è raddoppiato (20×10×10 cm).
La sigla APD sta per Avalanche Photo Diode.
Il computer di bordo consiste in una scheda PDA. Le caratteristiche di questa scheda
sono le seguenti:
CPU : ARMV4I 400 MHz
Sitema Operativo : Microsoft Windows CE.NET
Memoria RAM : 32 MB
Memoria FLASH : SD Card da 128MB
Interfaccie : USB, MMC/SD Card slot
Dimensioni : 70×100×5 mm
Ulteriori informazioni al sito
http://lss.mes.titech.ac.jp/ssp/cute1.7/index_e.html
8.13
National Space Program Office (Taiwan), YamSat
L’OBC previsto per i tre satelliti YamSat25 1A, 1B e 1C è un microcontrollore 80C52
con 32 KB di memoria esterna.
25
La sigla YAM sta per: Young, developed by young people; Amateur Radio Comminication;
Micro-spectrometer payload and Micro Electro Mechanical Systems Technolgies
Stage Chaudoire
69 / 97
Andrea Spiga
SSL-040606_AS-it
9
9 MSP430
MSP430
La famiglia di processori MSP430 è prodotta dalla società Texas Instruments. Sono
caratterizzati da un gran numero di periferiche (Timers, UART, convertitori AD, ..)
per vari tipi di applicazioni. L’architettura è un RISC 16bit. Questa categoria di
processori è stata disegnata per l’utilizzo in applicazioni ultralow power e dispone
infatti di 5 modalità low power.
Questa sua caratteristica di basso consumo lo rende interessante per il progetto CubeSat. Nel CubeSat Kit fornito dalla società Pumpkin viene utilizzato sulla scheda
madre, e per l’esattezza il modello MSP430F149 (figura 41).
Figura 41: Dimensioni processore MSP430F149
9.1
9.1.1
Modalità operative
Descrizione
Il processore dispone di 5 modalità operative. Le modalità LPM0...4 vengono attivate agendo sui bit CPUOFF, OSCOFF, SCG0 e SCG1 che si trovano nello Status
Register (SR). La figura 42 mostra la posizione di questi bit nell’SR.
Figura 42: MSP430F149 Status Register
Quando viene impostato uno dei bit, la modalità selezionata viene attivata immediatamente.
Il principio è di attivare/disattivare i segnali di clock disponibili nel processore con
la conseguente disabilitazione delle periferiche collegate ad esso. La disattivazione di
periferiche è comunque sempre possibile tramite i registri di controllo associati alla
periferica.
Stage Chaudoire
70 / 97
Andrea Spiga
SSL-040606_AS-it
9.1 Modalità operative
L’MSP430F149 dispone di un modulo-clock raffigurato in figura 43 da cui partono
3 segnali di clock interni: ACLK, MCLK e SMCLK. Questo modulo consente all’utente una serie di combinazioni che permette di trovare un buon compromesso fra
performance e basso consumo. Può essere configurato per funzionare senza nessun
componente esterno (utilizzo dell’oscillatore interno DCO) oppure con 1 o 2 componenti esterni (Quarzi, blocco oscillatore LFXT1, risp. XT2). Durante l’esecuzione di
un programma è possibile passare da una sorgente all’altra a piacere.
Figura 43: Schema a blocchi del sistema di clock per l’MSP430F149
Agendo sui bit dei registri DCOCTL, BCSCTL1 e BCSCTL2 si seleziona la sorgente
e frequenza desiderata. Le figure 44, 45 e 46 mostrano la posizione dei vari bit nei 3
registri.
La figura 47 mostra un diagramma con le varie modalità operative.
La tabella 41 riassume i vari modi operativi.
Stage Chaudoire
71 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
Figura 44: Registro DCOCTL
Figura 45: Registro BCSCTL1
Figura 46: Registro BCSCTL2
Tabella 41: Modi operativi MSP430f149
Mode
SCG1
SCG0
OSCOFF
CPUOFF
CPU
MCLK
SMCLK
ACLK
DCOa
DC Gen.
a
AM
0
0
0
0
ON
ON
ON
ON
ON
ON
LPM0
0
0
0
1
LPM1
0
1
0
1
LPM2
1
0
0
1
LPM3
1
1
0
1
LPM4
1
1
1
1
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
ON
ON
ON
ON
ON
ON
OFF
OFF
OFF
ON
ON
OFF
OFF
OFF
OFF
OFF
OFF
ON
OFF
OFF
Digitally-Controlled Oscillator: vedi figura 43
Stage Chaudoire
72 / 97
Andrea Spiga
SSL-040606_AS-it
9.1 Modalità operative
Figura 47: Modalità operative MSP430F149
Stage Chaudoire
73 / 97
Andrea Spiga
SSL-040606_AS-it
9.1.2
9 MSP430
Entrare ed uscire dalla modalità lowpower
L’uscita da una qualsiasi modalità LPM avviene attraverso le interruzioni abilitate
(Timer, porte esterne, reset, ecc..).
Le operazioni base che vengono eseguite sono:
• Entra nella routine di interruzione:
– Il PC e l’ SR vengono salvati nello stack.
– I bit CPUOFF, SCG1, SCG0 e OSCOFF vengono automaticamente messi
a 0.
• Uscita dalla routine di interruzione:
– L’ SR originale (prima dell’interruzione) viene ripristinato dallo stack, riabilitando la vecchia modalità. Prima però occorre modificarlo altrimenti
verrebbe ripristinata la modalità LPM (a meno che non si voglia questo
comportamento).
– L’ SR salvato nello stack può essere modificato in quanto si può accedere
sia in lettura che in scrittura allo memoria di stack. In questo modo è
possibile modificare nello stack i bit del SR in maniera che al momento
dell’istruzione RETI (Return from Interrupt Routine), la modalità che
viene ripristinata sia diversa (altrimenti si ritornerebbe in modalità LPM).
I codici assembler seguenti mostrano due esempi che permettono queste operazioni:
• Es1: LPM0
;Modalità AM
...........
...........
;Entrare in modalità LPM0
BIS #GIE+CPUOFF , SR ;Viene impostato a 1 il bit GIE e
;CPUOFF del SR
...........
;Il processore entra in modalità
;LPM0 e si ferma in questa posizione
;in attesa di una interruzione
;Uscire dalla modalità LPM0: Routine di interruzione
BIC #CPUOFF, 0(SP)
;Viene modificato (messo a 0) il bit
;CPUOFF nella copia di SR che si trova
;nello stack.
;dove è salvato l’ SR che verrà ripristinato
RETI
;Viene caricato l’SR dallo stack
;precedentemente modificato
• Es2: LPM3
;Modalità AM
...........
...........
;Entrare in modalità LPM3
BIS #GIE+CPUOFF+SCG1+SCG0 , SR ;Vengono impostati i bit nel SR
Stage Chaudoire
74 / 97
Andrea Spiga
SSL-040606_AS-it
...........
9.1 Modalità operative
;che attivano la modalità LPM3.
;Il processore entra in modalità
;LPM3 e si ferma in questa posizione
;in attesa di una interruzione
;Uscire dalla modalità LPM3: Routine di interruzione
BIC #CPUOFF+SCG1+SCG0, 0(SP) ;Vengono messi a 0 i bit CPUOFF,
;SCG1 e SCG0 nel SR salvato
;nello stack.
RETI
;Viene caricato l’SR dallo stack
;precedentemente modificato
La figura 48 schematizza il comportamento di un ipotetico codice che esegue le
seguenti operazioni:
1. Il programma viene eseguito regolarmente.
2. Questa istruzione imposta il bit CPUOFF a 1 nel SR. Questa operazione mette
immediatamente in modalità LPM0 il processore che si mette in attesa di un
evento che lo risvegli.
3. Il PC non viene più incrementato e si blocca puntando a questa posizione.
4. Avviene una interruzione generata da una delle periferiche abilitate (ad esempio
un Timer). La CPU si risveglia e nello stack vengono salvati prima il PC e poi
l’SR.
5. Il processore ritorna in modalità AM. Nel PC viene caricato l’indirizzo associato
alla routine di interruzione da dove il programma riprende.
6. Viene eseguita questa istruzione che mette a 0 il bit CPUOFF (bit4) all’indirizzo
puntato dallo stack pointer (SP) dove è stato salvato l’SR prima di rientrare in
modalità AM (punto 4).
7. Return from Interrupt: si esce dall routine di interruzione; dallo stack vengono
caricati prima l’SR e poi il PC. Il programma quindi riprende da dove si era
bloccato (punto 3).
8. Il programma continua la sua esecuzione.
Stage Chaudoire
75 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
Figura 48: Schema comportamento di un ipotetico codice nella Memory Map
9.1.3
Test e misura dei consumi
Per i test e le misure ho utilizzato delle schede di sviluppo prodotte dalla società
OLIMEX sulle quali sono montati degli MSP430F149. Le figura 49(a) e 49(b) mostrano le due schede utilizzate.
La figura 50 riporta i consumi di corrente forniti dal manuale del processore ([14]) per
le diverse modalità operative.
Da osservare che questi consumi sono stati misurati con frequenza di 1 MHz.
Per mandare il processore nelle modalità LPM ho realizzato un breve programma che
dopo avere eseguito alcune operazioni entra in modalità low power; il risveglio avviene
tramite l’interruzione generata dal Timer A (vedi sezioone 9.5) che ripristina l’Active
Mode.
Sulla scheda di figura 49(a) ho controllato fisicamente il corretto funzionamento del
Stage Chaudoire
76 / 97
Andrea Spiga
SSL-040606_AS-it
9.1 Modalità operative
(a)
(b)
Figura 49: Schede di sviluppo OLIMEX con processore MSP430F149 e quarzo da 32KHz
Figura 50: Consumo di corrente dell’MSP430 per le diverse modalità operative ad 1MHz
(datasheet [14])
programma facendo lampeggiare un led ogni volta che il processore usciva dalla modalità LPM.
Per le misure invece ho utilizzato la scheda di figura 49(b) in quanto oltre al processore
non dispone di nessun altro elemento e quindi la corrente misurata è effettivamente
quella consumata dal processore.
Il listato seguente mostra il programma di test.
#include <msp430.h>
bit0
equ BIT0
contatore equ 0x0200
var1
equ 0x0202
tempo
equ 0x7D00 ;=32000
.code
init:
bis.b #bit0, &P6DIR
;Imposta il bit0 della porta 6 in OUT
bis.b #bit0, &P6OUT
;Spengo il led
;Impostazioni Timer A
Stage Chaudoire
77 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
mov.w #tempo, &TACCR0
mov.w #TASSEL_1+ID_3+MC_1+TACLR+TAIE, &TACTL
;TASSEL_1 : Sorgente clock = ACLK
;ID_x
: Divisore clock
;MC_1
: Modalità UP
;TACLR
: Reset TimerA
;TAIE
: Abilita interruzione timer
bis.w #GIE, SR ;abilita interruzioni
main:
mov.w #0x0A, &var1
start:
mov.w #tempo, &contatore
attesa:
dec.w &contatore
jnz attesa
dec.w &var1
jnz start
lpmode:
;Entra in modalità lowPower
;bis #GIE+CPUOFF, SR
//LPM0
;bis #GIE+CPUOFF+SCG0, SR
//LPM1
;bis #GIE+CPUOFF+SCG1, SR
//LPM2
bis #GIE+CPUOFF+SCG0+SCG1, SR
//LPM3
;bis #GIE+CPUOFF+OSCOFF+SCG0+SCG1, SR //LPM4
jmp main
timerA_isr
bic.w #TAIFG, &TACTL
xor.b #bit0, &P6OUT
bic #CPUOFF, 0(SP) ;modifica dello SR salvato nello stack per
;uscire dalla modalità low power che viene
reti
;ricaricato con l’istrzione RETI
reset:
mov.w #0x210, sp
mov.w #WDTPW + WDTHOLD, &WDTCTL
jmp init
// Stop watchdog.
.vectors
org TIMERA1_VECTOR
dw timerA_isr
.keep
org RESET_VECTOR
dw
reset
In questo codice non ho impostato nessun bit del modulo-clock (figura 43), in questa
maniera il processore utilizza le impostazioni di default26 . La frequenza è di circa 105
Kz (vedi figura 53).
La figura 51 mostra lo schema di misurazione con le apparecchiature utilizzate e il
26
Al reset la CPU utilizza il segnale di clock DCOCLK proveniente dal DCO (SELM x = 00)
impostato con DCOx = 011 e RSELx = 000
Stage Chaudoire
78 / 97
Andrea Spiga
SSL-040606_AS-it
9.1 Modalità operative
grafico di figura 52 riporta i valori misurati per le diverse modalità operative.
Figura 51: Schema sistema di misura
Figura 52: Consumo di corrente dell’MSP430 per le diverse modalità operative con
oscillatore interno DCO a 105kHz
Il quarzo esterno che alimenta il segnale LFTX1CLK nel modulo-clock di figura 43
montato sulle scheda OLIMEX ha una frequenza di 32.768 Hz. È possibile collegare
un secondo quarzo per attivare il segnale XT2CLK. Ho provveduto quindi a montare
un secondo quarzo da 1 MHz.
Da notare che la frequenza del DCOCLK è impostabile via software (vedi 9.2).
Infine ho misurato i consumi in modalità AM con diverse impostazioni dei segnali di
clock per la CPU (segnale MCLK). La tabella 42 riassume i valori misurati nella varie
situazioni.
Stage Chaudoire
79 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
Tabella 42: Consumi in modalità AM per varie frequenze e tipologie di clock
Clock
DCO
kHz
78
µA
35
DCO
105
44
DCO
105
47
DCO
1179
320
DCO
2020
451
DCO
4999
1404
LFXT1CLK
32,768
12
LFXT1CLK
16,384
7.4
LFXT1CLK
8,192
5.1
LFXT1CLK
4,096
3.9
XT2CLK
1000
303
XT2CLK
500
190
XT2CLK
125
97
Stage Chaudoire
Impostazioni
DCOx=000
RSELx=000
OSCOFF=1
XT2OFF=1
DCOx=011
RSELx=000
OSCOFF=1
XT2OFF=1
DCOx=011
RSELx=000
OSCOFF=0
XT2OFF=1
DCOx=111
RSELx=100
OSCOFF=1
XT2OFF=1
DCOx=111
RSELx=101
OSCOFF=1
XT2OFF=1
DCOx=111
RSELx=111
OSCOFF=1
XT2OFF=1
DIVMx=00
SCG0=1
XT2OFF=1
DIVMx=01
SCG0=1
XT2OFF=1
DIVMx=10
SCG0=1
XT2OFF=1
DIVMx=11
SCG0=1
XT2OFF=1
DIVMx=00
SCG0=1
OSCOFF=1
DIVMx=01
SCG0=1
OSCOFF=1
DIVMx=11
SCG0=1
OSCOFF=1
80 / 97
Commento
LFXT1CLK e XT2CLK disattivati. Frequenza minima per
DCO
LFXT1CLK e XT2CLK disattivati.
LFXT1CLK
attivo
XT2CLK disattivato.
e
LFXT1CLK e XT2CLK disattivati.
LFXT1CLK e XT2CLK disattivati.
LFXT1CLK e XT2CLK disattivati. Frequenza massima per
DCO
DCO e XT2CLK disattivati.
Divisore segnale MCLK con
rapporto 1:1
DCO e XT2CLK disattivati.
Divisore segnale MCLK con
rapporto 1:2
DCO e XT2CLK disattivati.
Divisore segnale MCLK con
rapporto 1:4
DCO e XT2CLK disattivati.
Divisore segnale MCLK con
rapporto 1:8
DCO e LFXT1CLK disattivati. Divisore segnale MCLK
con rapporto 1:1
DCO e LFXT1CLK disattivati. Divisore segnale MCLK
con rapporto 1:2
DCO e LFXT1CLK disattivati. Divisore segnale MCLK
con rapporto 1:8
Andrea Spiga
SSL-040606_AS-it
9.2
9.2 Impostazione oscillatore interno DCO
Impostazione oscillatore interno DCO
La frequenza del DCO viene impostata agendo sui bit DCOx e RSELx del registro
DCOCTL (figura 44). Il grafico di figura 53 ripreso dal manuale [14] mostra le varie
frequenze per le varie impostazioni. In rosso all’interno del grafico sono marcate alcune
frequenze che ho misurato con l’aiuto di un oscilloscopio. Si osserva che i valori forniti
dal manuale sono molto indicativi. Per calcolare le varie frequenze ho proceduto nel
Figura 53: Scala delle frequenze dell’oscillatore interno
seguente modo:
• Ho fatto eseguire al processore le seguenti 2 istruzioni:
l1:
xor.b #bit0, &P6out
jmp l1
• Utilizzando il quarzo da 32768 Hz per il segnale MCLK ho misurato il tempo
di esecuzione di queste due istruzioni con l’oscilloscopio.
• Il rapporto fra tempo e clock rimane sempre costante. Il tempo misurato era
183.10 µs ed il rapporto è quindi: k = 183.10 ∗ 32.768 = 5.9998.
• Per calcolare i valori delle frequenze ho proceduto quindi a misurare il tempo
di esecuzione delle 2 istruzioni e con la costante k ho ricavato la frequenza di
oscillazione del segnale DCOCLK: f = k/t
Misurando questo tempo con il quarzo da 1MHz ho ottenuto un valore di 6 µs da cui
si ricava infatti f = k/t = 5.9998/(6 ∗ 10−6 ) = 999970Hz ∼
= 1M Hz.
Stage Chaudoire
81 / 97
Andrea Spiga
SSL-040606_AS-it
9.3
9 MSP430
Frequenza DCO in funzione della tensione di alimentazione
Queste misure mettono in evidenza la dipendenza dell’oscillatore interno dalla tensione di alimentazione. Ho misurato le frequenze di oscillazione con lo stesso metodo
utilizzato nel capitolo precedente 9.2.
I valori riportati nelle tabelle e grafici seguenti possono variare leggermente da quelli riportati in figura 53 a pagina 81. Questo è dovuto alle approssimazioni utilizzate
nelle misure. I tempi misurati con l’oscilloscopio nel capitolo 9.2 hanno una tolleranza
di ±0.05 µs che si può ripercuotere nel calcolo delle frequenze fino ad una variazione
di ±10 kHz.
Le prime due serie di misure mantengono costante il valore dei flag DCOx mentre
variano i flag RSELx.
Tabella 43: Serie 1 :Frequenza DCO in funzione di RSELx con DCOx=’111’
DCOx
RSELx
7
7
7
7
7
7
7
7
0
1
2
3
4
5
6
7
2.2 (V) 3.0 (V)
(KHz)
169
167
262
255
408
400
732
714
1176
1176
1935
2000
3000
3158
4615
5000
Figura 54: S1: Frequenza DCO in funzione di RSELx con DCOx=’111’
Stage Chaudoire
82 / 97
Andrea Spiga
SSL-040606_AS-it 9.3 Frequenza DCO in funzione della tensione di alimentazione
Figura 55: S1: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di RSELx con
DCOx=’111’
Tabella 44: Serie 2 :Frequenza DCO in funzione di RSELx con DCOx=’011’
Stage Chaudoire
DCOx
RSELx
3
3
3
3
3
3
3
3
0
1
2
3
4
5
6
7
2.2 (V) 3.0 (V)
(KHz)
111
110
173
169
271
264
488
472
779
769
1277
1304
1935
2069
2857
3158
83 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
Figura 56: S2: Frequenza DCO in funzione di RSELx con DCOx=’011’
Figura 57: S2: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di RSELx con
DCOx=’011’
Stage Chaudoire
84 / 97
Andrea Spiga
SSL-040606_AS-it 9.3 Frequenza DCO in funzione della tensione di alimentazione
Dalle 2 serie di misure S1 e S2 si osserva che il comportamento è simile indipendentemente dal valore di DCOx. Inoltre per valori di RSELx < 5 risulta che il DCO
ha una frequenza più alta con tensione di 2.2 Volt rispetto a 3.0 Volt. Per avere una
conferma ho eseguito un’altra serie di misure mantenendo costante il valore di RSELx
e variando DCOx.
Tabella 45: Serie 3 :Frequenza DCO in funzione di DCOx con RSELx=’111’
RSELx
DCOx
7
7
7
7
7
7
7
7
0
1
2
3
4
5
6
7
2.2 (V) 3.0 (V)
(KHz)
2206
2469
2409
2715
2643
2955
2898
3243
3174
3571
3550
3973
3947
4411
4444
5000
Figura 58: S3: Frequenza DCO in funzione di DCOx con RSELx=’111’
Stage Chaudoire
85 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
Figura 59: S3: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di DCOx con
RSELx=’111’
Dal grafico di figura 58 si deduce quindi che la differenza fra le tensioni 3.0 e 2.2
Volt ha un comportamento abbastanza lineare. Il valore medio del grafico di figura 59
è pari a circa 383 KHz mentre tratteggiato in rosso è evidenziata la linea di tendenza27 .
Osservando i grafici delle figure 55 e 57 posso dedurre che la variazione sarà minima
per RSELx=4. Infatti il valore medio del grafico di figura 61 è di circa -12 KHz.
Tabella 46: Serie 4 :Frequenza DCO in funzione di DCOx con RSELx=’100’
27
RSELx
DCOx
4
4
4
4
4
4
4
4
0
1
2
3
4
5
6
7
2.2 (V) 3.0 (V)
(KHz)
594
588
645
638
706
698
779
769
857
845
937
923
1034
1017
1176
1154
Linea polinomiale di secondo grado
Stage Chaudoire
86 / 97
Andrea Spiga
SSL-040606_AS-it 9.3 Frequenza DCO in funzione della tensione di alimentazione
Figura 60: S4: Frequenza DCO in funzione di DCOx con RSELx=’100’
Figura 61: S4: Differenza frequenze DCO fra 3.0 e 2.2 Volt in funzione di DCOx con
RSELx=’100’
L’ultima serie di misure riportate nella tabella 47 e nel grafico di figura 62 mostrano l’andamento della frequenza in funzione della tensione di alimentazione. Ho Impostato il DCO al massimo del suo potenziale con RSELx=’111’ e DCOx=’111’. Il
manuale del processore fornisce un margine di funzionamento compreso fra 1.8 e 3.6
Volt mentre le misure partono da 1.4 Volt.
Stage Chaudoire
87 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
Tabella 47: Serie 5 :Frequenza DCO in funzione della tensione di alimentazione
Tensione
(Volt)
3.6
3.5
3.4
3.3
3.2
3.1
3.0
2.9
2.8
2.7
2.6
2.5
2.4
2.3
2.1
2.0
1.9
1.8
1.7
1.6
1.5
1.4
Frequenza
(kHz)
5085
5085
5085
5042
5042
5000
4959
4918
4878
4800
4762
4687
4615
4511
4286
4138
3921
3727
3509
3243
2927
2620
Figura 62: S5: Frequenza DCO in funzione della tensione di alimentazione
Stage Chaudoire
88 / 97
Andrea Spiga
SSL-040606_AS-it
9.4 Suggerimenti e problemi riscontrati
Tutti i rilevamenti sono stati eseguiti a temperatura ambiente. Un’altra serie di
misure che sarebbe interessante effettuare è quella relativa alla frequenza in funzione
della temperatura. Il manuale [14] del processore a pagina 4-8 riporta un grafico che
visualizza il comportamento del DCO in funzione della temperatura.
9.4
Suggerimenti e problemi riscontrati
Impostazione bit RSELx Il cambiamento di questi bit può dar luogo in certi casi
ad un mal funzionamento della CPU. Ho riscontrato il problema impostando
RSELx=111. Per ovviare a questo problema impostavo prima RSELx=100 ed
in seguito con un’altra istruzione RSELx=111. In questo modo il problema
sparisce.
Questo comportamento è stato riscontrato dalla Texas e dopo una ricerca sul
loro sito mi sono imbattuto nel documento [15] che riporta il seguente baco:
BCL5 - Bug Description Module: Basic Clock, Function: RSELx
bit modifications can generate high frequency spikes on MCLK
When DIVMx = 00 or 01 and the RSELx bits of the Basic Clock
Module are incremented or decremented in steps of 2 or greater,
the DCO output may momentarily generate high frequency spikes
at MCLK, which may corrupt CPU operation. This is not an issue when DIVMx = 10 or 11.
Workaround:
Set DIVMx = 10 or 11 to divide the MCLK input prior to modifying RSELx. Once the RSELx bits are configured as desired,
the DIVMx setting can be returned to the original selection.
Selezione sorgente clock Il manuale del processore [14] a pagina 4-12 suggerisce
una procedura per la selezione delle due sorgenti di clock esterni LFXT1 e XT2.
La seguente seleziona la sorgente LFXT1:
bic
#OSCOFF,SR
;Turn on osc.
bic.b #XTS,&BCSCTL1 ;HF mode
l1: bic.b #OFIFG,&IFG1
;Clear OFIFG
mov
#0FFh,R15
;Delay
l2: dec R15
jnz l2
bit.b #OFIFG,&IFG1
;Re-test OFIFG
jnz l1
;Repeat test if needed
bis.b #SELM1+SELM0,&BCSCTL2 ;Select LFXT1CLK
Il processore dispone di un sistema chiamato “oscillator-fault detection. Questo
sistema è un circuito analogico che controlla i segnali LFXT1CLK (solo in
modalità HF28 ) e XT2CLK. Un errore di oscillazione viene rilevato quando uno
dei due segnali non viene rilevato per circa 50 µs ed il segnale per MCLK (segnale per la CPU) viene impostato automaticamente sul DCO interno. Questo
permette al programma di non essere interrotto. Questo sistema può essere
28
Hight Frequency
Stage Chaudoire
89 / 97
Andrea Spiga
SSL-040606_AS-it
9 MSP430
associato ad una routine di interruzione quando i flag OFIE e OFIFG sono impostati. OFIFG andrà rimesso a 0 via software.
La procedura descritta sopra in pratica controlla che il flag OFIFG sia a 0 prima
di cambiare il segnale di clock.
Durante i test ho riscontrato che la procedura descritta sopra è superflua se si
seleziona il segnale LFXT1CLK, mentre è necessaria per il segnale XT2CLK.
Consiglio comunque di utilizzarla sempre anche perché suggerita dal manuale.
9.5
Timer A
Questo modulo è un contatore/timer a 16 bit con 3 registri ‘capture/compare’. Genera
delle interruzioni quando si presenta una certa condizione in base alle impostazioni
dei registri di configurazione. Caratteristiche:
• 4 modalità operative.
• Possibilità di selezionare e configurare la sorgente di clock.
• 3 registri ‘capture/compare’
• 2 Vettori di interruzione per tutti i tipi di interruzione generati.
La figura 63 mostra lo schema a blocchi del timer.
9.5.1
Impostazioni
Contatore 16bit : i 16 bit del contatore si trovano nel registro TAR che viene
incrementato ad ogni fianco di salita del segnale di clock. Il registro può essere
sia letto che scritto via software.
Impostando a 1 il flag TACLR viene azzerato il registro TAR e il divisore di
clock posizionato fra la sorgente e il registro TAR.
Sorgente di clock e divisore : la sorgente di clock viene selezionata attraverso un
MUX attivato dai flag TASSELx che permette la selezione fra 2 segnali interni
ACLK e SMCLK (vedi figura 43) oppure esternamente da altri 2 segnali TACLK
o INCLK.
La sorgente di clock selezionata passa attraverso un divisore (/1, /2, /4, /8) che
viene impostato attraverso i flag IDx.
START/STOP e modalità di funzionamento : l’avvio del timer avviene impostando i flag MCx > 00 e assicurandosi che la sorgente di clock sia attiva.
Se il timer si trova in modalità ‘UP’ oppure ‘UP/DOWN’, può essere fermato
scrivendo nel registro TACCR0 il valore 0x0000. Scrivendo invece un valore
diverso da 0x0000 il timer si riavvia.
Le 4 modalità operative vengono impostate agendo sui flag MCDx. La tebella
48 riporta le 4 modalità.
Stage Chaudoire
90 / 97
Andrea Spiga
SSL-040606_AS-it
9.5 Timer A
Figura 63: Schema a blocchi del Timer A
Tabella 48: Modalità operative Timer A
MCx
00
01
Mode
STOP
UP
10
Continuous
11
UP/DOWN
Stage Chaudoire
Descrizione
Il timer si ferma
Il Timer incrementa da 0x0000 al valore impostato nel registro TACCR0 ripartendo ogni
volta da 0x0000
Il timer incrementa sempre partendo da 0x000 a
0xFFFF
Il Timer incrementa da 0x0000 al valore impostato nel registro TACCR0 per poi decrementare fino a 0x0000 e ripartire di nuovo.
91 / 97
Andrea Spiga
SSL-040606_AS-it
10
10 ALTERA DE2
Altera DE2
La scheda altera DE2 29 è stata sviluppata prevalentemente per scopi didattici. Monta
una FPGA Cyclone II e dispone di una grande varietà di periferiche che la rende ideale
per l’utilizzo in ambienti universitari in quanto permette di svolgere diverse tipologie
di esercitazioni. Sul CD allegato (ev. sul sito www.altera.com) sono disponibili un
gran numero di progetti che utilizzano le periferiche della scheda. Fra i più interessanti
è presente un convertitore video che prende il segnale DVD proveniente dall’entrata
VIDEO IN per convertirlo in formato per schermi CRT/LCD connessi sulla porta
VGA.
La tabella 49 riporta le principali caratteristiche della scheda mentre la figura 64
mostra la scheda di sviluppo con evidenziato le periferiche.
Tabella 49: Caratteristiche scheda di sviluppo Altera DE2
Tipo
FPGA
I/O
Memoria
Displays
Switches
Leds
Clocks
29
Descrizione
Cyclone II EP2C35F672C6 con EPCS16 16 Mbit serial
configuration device
Cavo ‘Built-in USB-BlasterT M ’ per configurazione
FPGA
10/100 Ethernet
RS232
Video OUT (VGA 10-bit DAC)
Video IN (formati NTSC/PAL/Multi-format)
USB 2.0 (tipo A e B)
Porta PS/2 per mouse o tastiera
Line In/Out, Microphone In (24-bit Audio CODEC)
Expansion headers (76 signal pins)
Porta infrarossi
8 MB SDRAM, 512 KB SRAM, 4 MB Flash
Slot per SD memory card
16 x 2 LCD
8 7-segmenti
18 toggle switches
4 pushbotton con sistema antirimbalzo
18 rossi
9 verdi
50 MHz crystal per clock FPGA
27 MHz crystal per applicazioni video
SMA clock IN esterno
Development and Education
Stage Chaudoire
92 / 97
Andrea Spiga
SSL-040606_AS-it
Figura 64: Scheda di sviluppo Altera DE2
Stage Chaudoire
93 / 97
Andrea Spiga
SSL-040606_AS-it
10.1
10 ALTERA DE2
Messa in funzione
La scheda viene alimentata con una tensione di 9 Volt. Sulla scheda è già presente
un programma che fa lampeggiare i led ed incrementa gli 8 7-segmenti da 0 a F.
La programmazione del FPGA avviene tramite connessione USB. Il cavo va inserito
nel connettore USB più a sinistra (quello vicino alla presa di alimentazione). Una volta
collegato il cavo al computer, windows individuerà una nuova periferica. Occorre
quindi specificare i driver che si trovano nella cartella di installazione del software
Quartus II seguendo il percorso ‘ .../altera/quartus51/drivers/USB-blaster/’. Occorre
evidentemente aver installato Quartus II. Per la licenza ho richiesto direttamente sul
sito dell’ALTERA un licenza a scopo universitario che viene rilasciata gratuitamente
ed ha una scadenza di 6 mesi.
10.2
Modalità di programmazione
Esistono 2 modi di programmazione:
• JTAG30 programming: il flusso di bit di configurazione viene scaricato direttamente sulla FPGA.
• AS31 programming: sulla scheda è montata una EEPROM che permette di
salvare la configurazione della FPGA. Il flusso di bit di configurazione viene
quindi scaricato sul chip EEPROM EPCS16. Questa configurazione viene caricata automaticamente dalla EEPROM ogni volta che la scheda viene alimenta.
Il tipo di programmazione viene selezionato agendo sull’interruttore posizionato alla
sinistra dell’LCD. Posizionandolo su ‘RUN ’ si attiva la programmazione JTAG mentre su ‘’PROG’ si attiva la programmazione AS. In quest’ultima modalità una volta
programmata la EEPPROM occorre riposizionare l’interruttore su ‘RUN ’ ed in seguito premere il bottone rosso reset. In questo modo i bit di configurazione vengono
scaricati sulla FPGA.
10.3
Periferiche
• PUSH BUTTON: utilizzano un circuito Schmitt-Trigger che permette il fenomeno
di antirimbalzo. Sono presenti 4 tasti ed hanno logica inversa: a tasto non
premuto corrisponde una tensione di 3.3 Volt.
• CLOCK: la scheda dispone di 2 clock da 27 e 50 MHz. Inoltre è incluso un
connettore SMA che permette di connettere la FPGA ad una sorgente di clock
esterno.
Se si utilizza la sorgente da 27 MHz è necessario impostare il piedino PIC-C4
(TD_reset) a ’1’.
30
31
Joint Test Action Group
Active Serial
Stage Chaudoire
94 / 97
Andrea Spiga
SSL-040606_AS-it
11
Conclusioni
L’attività in questi sei mesi è stata molto interessante e variata. Ho potuto lavorare
su diversi argomenti non strettamente legati all’informatica e questo mi ha permesso
di acquisire nuove conoscenze e capacità lavorative.
Una parte molto interessante del lavoro è stata quella relativa al rilevamento e correzioni di errori (EDAC). Nonostante l’argomento ha suscitato in me molta curiosità,
ho trovato difficoltà a redigere una documentazione in merito in quanto la teoria
sui campi di Galois è abbastanza contorta e complicata e le mie conoscenze matematiche non sono sufficienti per permettermi di redigere un documento su questo tipo
di argomenti. Mi sono limitato perciò alla descrizione delle principali operazioni che
avvengono nei campi finiti in modo da poter capire il funzionamento dei vari metodi
per il rilevamento e la correzione degli errori.
Un’altro argomento molto interessante è stato lo studio sul processore MSP430 che
mi ha permesso di entrare in profondità nelle potenzialità di questo microcontrollore.
Durante questo periodo mi è stata data anche la possibilità di collaborare in qualità
di assistente ad alcune esercitazioni degli studenti in laboratorio. In una di queste ho
presentato una breve descrizione dell’utilizzo del software Quartus II. Anche questa
esperienza è stata molto positiva e spero in futuro di avere ancora la possibilità di
mettere a disposizione la mia esperienza a favore degli studenti.
Un’aspetto molto importante che tengo a sottolineare è l’ottimo gruppo di lavoro
in cui mi sono trovato a lavorare composto dai due neo laureati ing. Ivano Bonesana
(informatica) e ing. Stjepan Puseljic (elettronica) con cui è stato possibile instaurare
un ottimo rapporto di lavoro e collaborazione. Un ringraziamento anche al prof. Ceppi e prof. Weston che grazie alla loro esperienza e disponibilità mi hanno permesso
di acquisire nuove conoscenze sicuramente utili per il mio curriculum formativo.
Infine ringrazio nuovamente il prof. Ceppi e la SUPSI per avermi dato la possibilità
di partecipare a questo progetto e la fondazione Chaudoire per il suo finanziamento.
Stage Chaudoire
95 / 97
Andrea Spiga
SSL-040606_AS-it
RIFERIMENTI BIBLIOGRAFICI
Riferimenti bibliografici
[1] The Art of Error Correcting Coding,
Robert H.Morelos-Zaragosa.
[2] Introduction to error correcting codes,
Michael Purser.
[3] Error-Control Block Codes for Communications Engineers, L.H. Charles Lee.
[4] Reed-Solomon Codes and their applications, Stephen B. Wicker, Vijay K.
Bhargava.
[5] Cryptography, Information Theory, and Error-correction,
Aiden A. Bruen, Mario A. Forcinito.
[6] Error Correction Coding, Matematical Methods and Algorithms,
Todd K. Moon.
[7] Tokyo Tech CubeSat: CUTE-I - Design & Development of Flight Model and Future Plan -,
Koji Nakaya, Kazuya Konoue, Hirotaka Sawada, Kyoichi Ui, Hideto Okada, Naoki Miyashita, Masafumi Iai, Tomoyuki Urabe, Nobumasa Yamaguchi, Munetaka
Kashiwa, Kuniyuki Omagari, Ikutaro Morita and Saburo Matunaga,
Laboratory for Space Systems, Tokyo Institute of Technology.
[8] The Electronic System Design, Analysis, Integration, and Construction of the Cal
Poly State University CP1 CubeSat,
Jake A. Schaffner Electrical Engineering Departement Project Manager, Advisor:
Dr. J. Puig-Suari Aerospace Engineering Dept,
California Polytechnic State University.
[9] Canada’s Smallest Satellite: The Canadian Advanced Nanospace eXperiment
(CanX-1),
G. James Wells, Luke Stras, Tiger Jeans, Advisors: Dr. R. E. Zee Manager Space
Flight Laboratory, F. M. Prannajaya CanX Program Manager, D. G. Foisy SFL
Computer Engeneer,
Space Flight Laboratory, University of Toronto Institute for Aerospace Studies.
[10] A cubesat derived design for a unique academic research mission in earthquake
signature detection,
Matthew Long, Allen Lorenz, Greg Rodgers, Eric Tapio, Glenn Tran, Keoki Jackson, Robert Twiggs,
Aeronautics & Astronautics, Stanford University, T. Bleier Stellar Solutions,
SSC02-IX-6.
[11] CubeSat Design for LEO-Based Earth Science Missions,
Stephen Waydo, Daniel Henry, Mark Campbell,
University of Washington, Department of Aeronautics & Astronautics.
[12] Lessons Learned of NSPO’s Picosatellite Mission: YamSat - 1A, 1B & 1C,
Chen-Joe Fong, Albert Lin, Allen Shie, Marco Yeh, Wen-Chen Chiou, Ming-Hsien
Stage Chaudoire
96 / 97
Andrea Spiga
SSL-040606_AS-it
RIFERIMENTI BIBLIOGRAFICI
Tsai, Pei-Yi Ho, Chin-Wen Liu, Ming-Shong Chang, Hsu-Pan Pan, Steven Tsai,
Chiuder Hsiano,
National Space Program Office, Taiwan, R.O.C..
[13] Delfi-C3: a Student Nanosatellite Test-bed for in-orbit Demonstration of Micro
Systems Technology,
J. Rotteveel, G.T. Aalbers, A.R. Bonnema, E.D. van Breukelen, J.H. Doorn, R.
van den Eikhoff, E. Van der Linden, W.J. Ubbels, R.J. Hamann, C.J.M. Verhoeven, G.L.E. Monna,
Delft University of Technology.
[14] MSP430x1xx Family, User’s Guide,
Texas Instruments Incorporated, 2006.
[15] MSP430F13x/14x/14x1 Device Erratasheet,
Texas Instruments Incorporated, 2005-2006.
Link
The European Cooperation for Space
Standardization
The Error Correcting Codes Page
Encoding/Decoding Reed Solomon
Codes
Codes de Reed-Solomon
Dispense di Teoria di Galois
Using the Golay Detection And Correction Code
Olimex
CC5X Compiler for PIC
Programmatore IC-Prog
Jens’File Editor
http://www.ecss.nl
http://www.eccpage.com
http://the-art-of-ecc.com/topics.html
http://www.ee.ucla.edu/~matache/rsc/slide.html
http://lgl.epfl.ch/~barras/projects/Reed-Solomon/rs.html
http://www.mat.uniroma1.it/people/machi/Galois/
http://www.aqdi.com/golay.html
http://www.olimex.com
http://www.bknd.com
http://www.ic-prog.com
http://home.arcor.de/jensaltmann/JFE/jfe_eng.htm
Simulazioni
Reed Solom coding in DVD players
Golay Error Correcting Coding
Galois Field
Stage Chaudoire
http://www2.mat.dtu.dk/info/experiencing/err_corr_codes/
http://www.soe.ucsc.edu/~hongwang/ECC/golay.html
http://jeans.studentenweb.org/study/tai/galois/galois.html
97 / 97
Andrea Spiga