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