30.08.2013 Views

Untitled - MRTC

Untitled - MRTC

Untitled - MRTC

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Intern realtidskommunikation i framtida Svenska satelliter sid 5<br />

Martin Normark<br />

MMK<br />

Master Project MMK 2003:29 MDA 197<br />

Internal Real-Time Communication in future Swedish<br />

satellites.<br />

Machine Design KTH<br />

Mechatronics Martin Normark<br />

Approved<br />

2003-03-11<br />

Examiner<br />

Martin Törngren<br />

Commissioner<br />

Swedish Space Corporation<br />

Supervisor<br />

Martin Törngren<br />

Contact person<br />

Gunnar Andersson<br />

Abstract<br />

The Swedish Space Corporation, SSC, or Rymdbolaget as it is called in Swedish recently designed<br />

and delivered a satellite named SMART-1. The satellite will be launched in July 2003 and will be the<br />

first satellite in the world using CAN, Controller Area Network, for its internal communication.<br />

However, SSC now wishes to compare the CAN-bus to other potential future networks in order to find<br />

out if any of those handles real-time communication in a satellite better than CAN does. The<br />

investigated networks are:<br />

• CAN<br />

• TTCAN<br />

• FlexRay<br />

• MOST<br />

• Spacewire<br />

• TTP/C<br />

• USB 2.0<br />

Of the networks listed above, FlexRay is the best suited to fulfil the demands defined in collaboration<br />

with- the SSC. FlexRay and TTP/C are the only two networks that are believed to get approval for<br />

steer-by-wire usage, but TTP/C does not pass the SSC demands due to its inflexible TDMA, Time<br />

Division Multiple Acces.<br />

Steer-by-wire means that, for example a car or an airplane is not steered with the steering wheel or the<br />

steering stick mechanically attached to the wheel or the rudder via a steering column but rather<br />

through a digital network communicating with a microprocessor, controlling a steering servo on its<br />

part. One problem with FlexRay is that it has not yet been commercialised.<br />

FlexRay will probably be commercialised earliest in 2004 or 2005, and the SSC will then need to<br />

evaluate FlexRay concerning functionality, whether it will fulfill its specification or not, and how<br />

widely spread it has become; something that is of importance for SSC. Until then the CAN-bus is the<br />

best alternative. The CAN-bus should however be upgraded with better protection against babbling<br />

idiots, i.e. malfunctioning nodes that destroys all other traffic on the network, a method for<br />

synchronizing the nodes and desirable is also a EDF function.<br />

EDF, Earliest Deadline First, is a method that gives the message closest to its deadline access to the<br />

network. By using a simplified version of EDF, every node can be guaranteed a certain bandwidth, a<br />

maximum access delay and can also be offered spare bandwidth if any node choose not to use all its<br />

allocated bandwidth. This thesis shows, by the use of computer-aided simulations and production of a<br />

prototype EDF-CAN-controller implemented in a FPGA, not only that the simplified EDF method<br />

works in a CAN network but also that EDF can be included inside an SSC-designed CAN-controller<br />

as well.<br />

Beside the studied networks, recommended as steer-by-wire networks, USB and Spacewire are also<br />

very potential communication links between two nodes. The great benefit with USB is its wide<br />

commercial spread. What makes Spacewire a good choice is that it is ESA-approved for space usage.<br />

Spacewire is also already integrated in some components as DSP´s, cameras and mass-memories for<br />

space use.


Intern realtidskommunikation i framtida Svenska satelliter sid 6<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 7<br />

Martin Normark<br />

Innehållsförteckning<br />

1 INLEDNING................................................................................................................................. 9<br />

2 EX-JOBBSBESKRIVNING...................................................................................................... 11<br />

2.1 MÅL...................................................................................................................................... 11<br />

2.2 METOD.................................................................................................................................. 11<br />

2.2.1 Intervjuer med Rymdbolaget-personal ......................................................................... 11<br />

2.2.2 Skapande av kravspecifikation ..................................................................................... 11<br />

2.2.3 Studie av befintliga nätverksprotokoll.......................................................................... 11<br />

2.2.4 Val och implementation av nätverksprotokoll .............................................................. 11<br />

3 INTERVJUER MED RYMDBOLAGET-PERSONAL.......................................................... 13<br />

3.1 INTERVJU MED SYTZE VELDMAN .......................................................................................... 13<br />

3.2 INTERVJU MED BENGT HOLMQVIST ...................................................................................... 13<br />

3.3 INTERVJU MED GUNNAR ANDERSSON ................................................................................... 13<br />

4 KRAV PÅ NÄSTA SATELLITGENERATIONS<br />

INTERNKOMMUNIKATIONSNÄTVERK................................................................................... 15<br />

4.1 SYSTEMBUSSEN .................................................................................................................... 15<br />

4.2 PAYLOADBUSSEN.................................................................................................................. 15<br />

4.3 TIDSSTYRDA RESPEKTIVE HÄNDELSESTYRDA NÄTVERK OCH NODER .................................... 16<br />

4.4 TESTNING OCH UTVECKLING................................................................................................. 16<br />

4.5 RYMDENS KRAV.................................................................................................................... 16<br />

4.5.1 Vakuum......................................................................................................................... 16<br />

4.5.2 Strålning.......................................................................................................................16<br />

4.5.3 Rymdskrot..................................................................................................................... 17<br />

4.6 REDUNDANS OCH FELHANTERING ......................................................................................... 17<br />

4.7 ELEKTRISKT GRÄNSSNITT ..................................................................................................... 18<br />

4.8 SAMMANFATTNING AV KRAV................................................................................................ 18<br />

5 KORT BESKRIVNING AV BEFINTLIGA NÄTVERK SOM KAN KOMMA IFRÅGA . 19<br />

5.1 CAN ..................................................................................................................................... 19<br />

5.1.1 Protokoll.......................................................................................................................19<br />

5.1.2 Elektriskt interface ....................................................................................................... 20<br />

5.2 USB...................................................................................................................................... 20<br />

5.2.1 Protokoll.......................................................................................................................20<br />

5.2.2 Elektriskt gränssnitt...................................................................................................... 21<br />

5.3 SPACEWIRE ........................................................................................................................... 21<br />

5.3.1 Protokoll.......................................................................................................................22<br />

5.3.2 Elektriskt gränssnitt...................................................................................................... 23<br />

5.4 TTP/C................................................................................................................................... 23<br />

5.4.1 Protokoll.......................................................................................................................23<br />

5.4.2 Elektriskt gränssnitt...................................................................................................... 24<br />

5.5 TTCAN ................................................................................................................................ 24<br />

5.5.1 Protokoll.......................................................................................................................25<br />

5.5.2 Elektriskt gränssnitt...................................................................................................... 27<br />

5.6 FLEXRAY .............................................................................................................................. 27<br />

5.7 MOST................................................................................................................................... 28<br />

5.7.1 Protokoll.......................................................................................................................28<br />

5.7.2 Elektriskt gränssnitt...................................................................................................... 29<br />

6 VAL AV NÄTVERK..................................................................................................................31<br />

6.1 BEDÖMNINGSMALL............................................................................................................... 31<br />

6.2 GALLRING AV NÄTVERK ....................................................................................................... 31<br />

6.3 SLUTLIGT NÄTVERKSFÖRSLAG FÖR STEAM......................................................................... 31<br />

6.4 SLUTLIGT GENERELLT NÄTVERKSFÖRSLAG FÖR KOMMANDE SATELLITER ............................ 32


Intern realtidskommunikation i framtida Svenska satelliter sid 8<br />

Martin Normark<br />

7 TESTIMPLEMENTATION AV CAN SOM ANVÄNDER EARLIEST DEADLINE FIRST<br />

33<br />

7.1 KORT BESKRIVNING AV EDF ................................................................................................ 33<br />

7.2 BESKRIVNING AV ANVÄND EDF-ALGORITM ......................................................................... 34<br />

7.3 MÅL MED TEST...................................................................................................................... 35<br />

7.4 SIMULERING AV CAN MED EDF........................................................................................... 36<br />

7.5 IMPLEMENTATION I VHDL ................................................................................................... 37<br />

7.6 SIMULERING AV FUNKTION HOS KOD SKRIVEN I VHDL ........................................................ 38<br />

7.7 PRODUKTION AV TESTHÅRDVARA IMPLEMENTERAT I EN FPGA........................................... 41<br />

7.8 TEST AV FPGA ..................................................................................................................... 42<br />

7.8.1 Testprocedur................................................................................................................. 44<br />

7.8.2 Testresultat................................................................................................................... 45<br />

8 RESULTAT ................................................................................................................................ 49<br />

8.1 REKOMMENDERAT NÄTVERK I FRAMTIDA SATELLITER ......................................................... 49<br />

8.2 TEST AV FÖRBÄTTRAD CAN-BUSS........................................................................................ 49<br />

8.2.1 Simulering av EDF-CAN-buss ..................................................................................... 49<br />

8.2.2 Simulering av funktion hos EDF-CAN-Shellet ............................................................. 50<br />

8.2.3 Test av EDF-CAN-controller implementerad i FPGA ................................................. 50<br />

9 SLUTSATS ................................................................................................................................. 51<br />

10 DISKUSSION OCH MÖJLIGHETER FÖR FRAMTIDA UTREDNINGAR................. 53<br />

11 TACK TILL............................................................................................................................ 55<br />

12 BEGREPP OCH FÖRKORTNINGAR SOM ANVÄNDS I DENNA RAPPORT............ 57<br />

13 REFERENSER....................................................................................................................... 59<br />

13.1 MUNTLIGA KÄLLOR OCH INTERVJUER................................................................................... 60<br />

13.2 LITTERATURTIPS ................................................................................................................... 60<br />

APPENDIX A SIMULERING AV EDF-ALGORITM................................................................... 61<br />

APPENDIX B INTERVJUER AV RYMDBOLAGSPERSONAL ................................................ 71<br />

FRÅGOR ............................................................................................................................................ 71<br />

Svar på frågor Sytze Veldman...................................................................................................... 71<br />

Svar på frågor Bengt Holmqvist................................................................................................... 72<br />

Svar på frågor Gunnar Andersson ............................................................................................... 73<br />

APPENDIX C VHDL-KOD I CAN-SHELL.................................................................................... 75<br />

TRANSMISSION_STATE_MACHINE.................................................................................................... 75<br />

RETRANSMISSION_BUFFER ............................................................................................................... 79<br />

APPENDIX D VHDL-KOD FÖR TEST 5.1 OCH 6.1.................................................................... 81<br />

APPENDIX E……………………………………….…………………………………………Se utvikbar bild


Intern realtidskommunikation i framtida Svenska satelliter sid 9<br />

Martin Normark<br />

1 Inledning<br />

Rymdbolaget, eller Swedish Space Corporation, SSC, som bolaget heter på engelska, jobbar precis<br />

som namnet antyder, med tjänster och produkter inriktade mot rymdindustrin. Som exempel kan<br />

nämnas: Kommunikationslänkar till satelliter, service på rymdbasen Esrange strax utanför Kiruna,<br />

experiment som utförs i viktlöst tillstånd samt utveckling av satelliter. Rymdbolagets huvudsakliga<br />

kunder är Svenska Rymdstyrelsen och ESA, European Space Agency, men många andra kunder<br />

förekommer.<br />

Den senaste satelliten heter SMART-1 och får betraktas som en försökssatellit. SMART-1 är utrustad<br />

med en nyutvecklad solcellsdriven jonmotor som skall föra satelliten från en bana nära jorden ut till<br />

månen för att där placeras i en bana kring densamma. SMART-1 är även unik på ett annat sätt, den är<br />

nämligen den första satellit som utrustats med CAN-bussen för sin interna kommunikation mellan<br />

instrument och datorer ombord.<br />

CAN, Controller Area Network, utvecklades av BOSCH 1989 och var i första hand tänkt som ett<br />

tvåtråds-nätverk mellan diverse mikrokontrollers i bilar. Dock har standarden spridits till ett flertal<br />

olika industriella tillämpningar och har nu även tagit steget upp i rymden. En elektronisk<br />

nätverksstandard utvecklad för bilindustrin måste vara mycket robust och okänslig för störningar, då<br />

en bil är en mycket svår miljö med avsevärda vibrationer, smuts, fukt och inte minst elektroniska<br />

störningar. Dessa egenskaper har CAN, som inbyggt i protokollet har funktioner för såväl<br />

feldetektering som felhantering, där felaktiga meddelanden automatiskt sänds om m.m.<br />

CAN-protokollet är, i sitt grundutförande, dock behäftat med ett antal svagheter som kan medföra<br />

problem och/eller begränsningar ombord på en satellit. Som exempel kan nämnas att CAN är ett så<br />

kallat händelsestyrt protokoll, vilket innebär att varje nod i nätet kan försöka sända när som helst och<br />

en på förhand fastställd prioritering avgör vilken nod som skall få sända först. Detta passar inte så bra<br />

i ett realtidsstyrt reglersystem där det är viktigt med väl synkroniserade noder som kräver tillgång till<br />

ett deterministiskt nätverk där det i förhand är känt vilken nod som i en given tidpunkt har tillgång till<br />

nätverket. Vidare erbjuder CAN-protokollet endast en begränsad bandbredd, 1 Mbps, vilket kan vara<br />

för lite för instrument som kontinuerligt sänder mycket information, t.ex. en kamera. CAN-protokollet<br />

erbjuder heller ingen inbyggd redundans, vilket är nödvändigt ombord på en satellit. Det skall dock<br />

tilläggas att CAN-protokollet genom att det har funktioner på en låg nivå tillåter den enskilde<br />

designern att själv lägga till funktionalitet såsom exempelvis sändscheman, det är bland annat denna<br />

strategi som lett till CAN´s stora framgång.<br />

Rymdbolaget har fått i uppdrag av Rymdstyrelsen att presentera ett förslag till design för en eventuell<br />

framtida satellit, STEAM, vars uppgift kommer att bli att mäta växthusgaser i atmosfären i en cirkulär,<br />

solsynkron bana 700 km över jordytan. Rymdbolaget avser att i STEAM uppgradera CAN-bussen till<br />

en buss som inte bara passar STEAM´s mission samt eliminerar ovan nämnda svagheter, utan även<br />

kan tänkas i framtida generationer av satelliter.<br />

Detta examensarbete avser utreda huruvida det är möjligt att delvis eller helt ersätta nuvarande CANbuss<br />

med en alternativ buss, alternativt komplettera CAN-bussen med mjukvara, i syfte att tillgodose<br />

framtida behov.


Intern realtidskommunikation i framtida Svenska satelliter sid 10<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 11<br />

Martin Normark<br />

2 Ex-jobbsbeskrivning<br />

2.1 Mål<br />

Målet med examensarbetet är att finna den lämpligast möjliga designen för de interna nätverken<br />

ombord på Rymdbolagets framtida satelliter. Med framtida satelliter avses främst STEAM som<br />

projekteras just nu. Men nätverket bör även designas på sådant sätt att det kan användas i framtida, i<br />

dagsläget ej planerade, satelliter. Nätverket skall vara så robust att funktionen kan garanteras under<br />

satellitens hela livslängd, vidare skall det uppfylla kraven på nästa satellitgenerations<br />

internkommunikationsnätverk, närmare beskrivet i kap 4.<br />

2.2 Metod<br />

2.2.1 Intervjuer med Rymdbolaget-personal<br />

Arbetet inleds med intervjuer av Rymdbolaget-personal. Intervjuerna fokuseras kring följande<br />

punkter:<br />

• Systemkrav<br />

• Bandbreddsbehov<br />

• Behov av tidsstyrda respektive händelsestyrda nätverk och noder<br />

• Synkronisering av noder<br />

• Redundans och felhantering<br />

• Rymdens krav<br />

• Skillnader mellan Systembussen och Payloadbussen<br />

• Dagens design i SMART-1<br />

• Vikten av återanvändning av tidigare nätverk<br />

• Elektriskt gränssnitt<br />

2.2.2 Skapande av kravspecifikation<br />

Intervjuerna syftar dels till att skapa förståelse för designen hos framtida sateliter men framför allt till<br />

att formulera kraven på nästa satellitgenerations internkommunikationsnätverk (se kap 4).<br />

Kravspecifikationen skall styra in studierna av befintliga nätverk åt rätt håll samt ligga till grund för<br />

eventuella mjukvarutillägg till det nätverksprotokoll som slutligen väljs.<br />

2.2.3 Studie av befintliga nätverksprotokoll<br />

Följande nätverk kommer att studeras:<br />

• USB<br />

• Spacewire<br />

• TTP/C<br />

• CAN/TTCAN<br />

• FlexRay<br />

• MOST<br />

Inledningsvis inriktas studierna mot en översiktlig förståelse av protokollens huvudsakliga<br />

egenskaper, vilka sedan jämförs i en jämförelsemall (se bilaga). Därvid sker en första gallring,<br />

varefter de återstående 2-3 nätverksprotokollen studeras närmare.<br />

2.2.4 Val och implementation av nätverksprotokoll<br />

I samråd med Rymdbolaget-personal väljs det lämpligaste nätverksprotokollet. Detta implementeras<br />

sedan i syfte att visa att kravspecifikationen efterlevs. Vikt läggs därvid att implementera de nya<br />

egenskaperna och då framför allt de som eventuellt måste läggas till mjukvarumässigt.


Intern realtidskommunikation i framtida Svenska satelliter sid 12<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 13<br />

Martin Normark<br />

3 Intervjuer med Rymdbolaget-personal<br />

Intervjuformulär, samt de intervjuades svar på frågorna finns utskrivet i sin helhet i Appendix B.<br />

3.1 Intervju med Sytze Veldman<br />

Sytze Veldman [16] arbetar med systemutveckling inom Space Systems på Rymdbolaget.<br />

Enligt Sytze finns planer på att separera satellitplattform och instrumentering varvid instrumenten<br />

förses med eget mass-minne.<br />

Veldman är mycket nöjd med CAN-bussen som den används i SMART-1.<br />

Om endast radioskopet används räcker CAN-bussen gott och väl. Detta under förutsättning att 1<br />

Mbps-länk finnes mellan mass-minne och TMTC.<br />

3.2 Intervju med Bengt Holmqvist<br />

Bengt Holmqvist [17] jobbar bl.a. med kommunikation mellan GS (ground station) och satellit.<br />

Han skulle gärna se en kommunikationsmetod i satelliten som är kompatibel med vanliga<br />

kommunikationsmetoder på jorden t.ex. USB 2.0 eller TCP/IP. Fördelen med det är att den enskilde<br />

forskaren kan använda samma protokoll vid testning på jorden samt vid kommunikation med det<br />

enskilda experimentet i realtid, via exempelvis Internet, då satelliten ligger i sin bana. Bengt menar<br />

dock att en sådan förändring kan bli alltför stor, såtillvida att den tar för lång tid och kostar för mycket<br />

att implementera, och kan ställa för höga krav på såväl mjuk- som hårdvara ombord på satelliten.<br />

Bengt betonar att ett nätverk som erbjuder god testbarhet för såväl instrument som nätet självt sparar<br />

mycken tid i utveckling och testning.<br />

Bengt tycker även att USB 2.0 kan vara intressant, främst med tanke på utveckling och testning, då<br />

USB 2.0 är så pass kompatibel med en vanlig PC på jorden.<br />

Han gör bedömningen att en trolig överföringshastighet, inom en överblickbar framtid, mellan GS<br />

och Rymdbolaget-tillverkad satellit med banhöjder motsvarande STEAM blir ca 1 Mbps.<br />

Ett framtida de facto standard-gränssnitt på rymdinstrument och avancerade komponenter kan tänkas<br />

bli TCP/IP eller Spacewire.<br />

CAN-bussen är ett bra alternativ, såtillvida att den uppfyller de krav som ställs. Dock kan<br />

felhanteringen förbättras. En bättre synkronisering av noderna kan dock vara önskvärd, detta medför<br />

även att nuvarande sekund-tick som idag sänds, i SMART-1, på en enskild förbindelse kan läggas<br />

över nätet istället.<br />

3.3 Intervju med Gunnar Andersson<br />

Gunnar Andersson [18] arbetar med systemdesign och har bl.a. designat CAN-bussen på SMART-1.<br />

Gunnars många men relativt kortfattade riktlinjer för ett nätverk är att det skall vara:<br />

• Säkert<br />

• Redundant<br />

• Standardiserat på något sätt<br />

• Tillräckligt EMC-tyst<br />

• Effektsnålt<br />

• Tillräckligt bredbandigt<br />

• Avlyssningsbart i en punkt<br />

Gunnar anser att det som borde förbättras/läggas till jämfört med nuvarande CAN-buss är<br />

• Redundansen, använd två linor kontinuerligt<br />

• Global klockdistribution<br />

• Synkronisering av noder, 0,1 ms<br />

• Om bandbredden skall ökas skall den minst tiofaldigas


Intern realtidskommunikation i framtida Svenska satelliter sid 14<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 15<br />

Martin Normark<br />

4 Krav på nästa satellitgenerations<br />

internkommunikationsnätverk<br />

Generellt kan sägas att det finns ett självändamål med att återanvända så mycket som möjligt av<br />

tidigare design, då detta sparar tid och pengar framför allt i utvecklingsfasen. Samtidigt måste givetvis<br />

kraven som ställs på nätverket uppfyllas. Dock är vissa krav mer att betrakta som önskemål även om<br />

gränsen är tämligen flytande. Vissa kombinationer av krav kan också vara mer eller mindre omöjliga<br />

att realisera samtidigt. Sedermera kommer alltså krav att ställas mot återanvändning, men även krav<br />

som ställs emot andra krav kommer att förekomma, på samma sätt som det är svårt att bygga en<br />

fjäderlätt pansarvagn med gott skydd. Det skall tilläggas att ingen idag vet hur nästa satellit eller<br />

satellitgeneration ser ut. Därför får kraven en ganska allmän karaktär och många grundläggande<br />

designdrag, varav många givetvis från SMART-1 [1], såsom den av Rymdbolaget ganska flitiga<br />

uppdelningen mellan last, (payload) som ofta består av instrument och kameror, och satellitens egna<br />

system.<br />

4.1 Systembussen<br />

Systembussens uppgift är som namnet antyder att erbjuda kommunikation mellan alla delar i<br />

satellitens systemdelar, t.ex. de delar som sköter kommunikationen med jorden, positionsangivning,<br />

attitydstyrning, elkraftreglering, huvuddator. Systembussens meddelandekaraktär är således till större<br />

delen av typen periodiskt återkommande kontrollmeddelanden. Perioden ligger idag kring 1 Hz. I<br />

framtida satelliter där det kan komma att ställas allt högre krav på positions- och attitydstyrningen<br />

kommer periodfrekvensen att öka, en ökning med tio gånger ska nog inte ses som orealistisk, även om<br />

detta är spekulationer. Detta gäller dock inte den/de närmaste i tiden kommande satelliterna. Trots en<br />

ökad periodicitet, kommer inte mängden information per cykel att minska, dock kan tänkas att<br />

noggrannheten, d.v.s. antalet databitar, i kontrolldatameddelandena ökar varför även mängden data per<br />

cykel kan tänkas öka med upp till 50%. I dagens CAN-buss lösning används 3,25 % av tillgänglig<br />

bandbredd, en framtida satellit kan därför tänkas använda:<br />

10 ⋅ ( 1,<br />

5⋅<br />

3,<br />

25%)<br />

= 48,<br />

75%<br />

≈ 50%<br />

av tillgänglig bandbredd.<br />

Att i princip 50 % av tillgänglig bandbredd används kan tyckas ligga på den övre gränsen av vad som<br />

bör allokeras i ett nätverk. Dock kan i ett tidsschememässigt uppstyrt nätverk höga nätlaster tillåtas, då<br />

inga toppar och dalar i kommunikationen tillåts. Det är dock stor risk att systemet växer ur nätverket<br />

om ytterligare funktionalitet läggs till. Därför kan en bandbreddshöjning tänkas vara klok då nästa<br />

nätverksgeneration skall designas.<br />

Med större noggrannhet i position och attityd följer ett större noggrannhetskrav vad gäller<br />

synkroniseringen noderna emellan och att en distribuerad global tid med hög noggrannhet når alla<br />

noder. Ett minsta krav, enligt Gunnar Andersson på Rymdbolaget [18], på noggrannheten är 100µs,<br />

gärna bättre. Styrsystem med hög prestanda kräver dessutom att tiden det tar att sända ett meddelande<br />

på förhand är känd och kan garanteras för viktiga meddelanden. Detta kräver alltså ett tämligen<br />

deterministiskt nätverk.<br />

Nätverket bör dessutom vara distribuerat, d.v.s. att alla noder skall höra samtliga meddelanden, detta<br />

då flera noder än en sannolikt behöver ta del av information som position, tid och globala uppgifter<br />

vid en given tidpunkt.<br />

Systembussen är idag skild från payloadbussen av två skäl: Framför allt ökas säkerheten, såtillvida att<br />

ett instrument som ”löper amok” inte saboterar trafiken på systembussen utan istället kan stängas av,<br />

genom att strömmen till enheten kopplas bort med hjälp av ett kommando från jorden eller från<br />

huvuddatorn ombord. Det andra skälet är att en högsta fördröjning av viktiga meddelanden lättare kan<br />

garanteras. Kan säkerheten på ett framtida nät höjas, genom att t.ex en busguardian bevakar varje nod<br />

och stänger av en skenande dylik, samt den garanterade sändningstiden för viktiga meddelanden hålls<br />

låg, kan de både näten slås samman.<br />

4.2 Payloadbussen<br />

Syftet med satelliten är i allmänhet att bära en nyttolast. Lasten består ofta av diverse instrument<br />

och/eller sambandsutrustning. Payloadbussen erbjuder dessa typer av noder<br />

kommunikationsmöjligheter instrumenten emellan men framför allt med controllern, satellitens<br />

huvuddator. Då det i själva verket är nyttolasten som ställer de allt högre kraven på satellitens position


Intern realtidskommunikation i framtida Svenska satelliter sid 16<br />

Martin Normark<br />

och attityd, är det rimligt att anta att nyttolasten kräver tillgång till samma distribuerade globala tid<br />

med samma noggrannhet som systemenheterna d.v.s. 100 µs, gärna bättre. Vad beträffar determinism i<br />

kommunikationen ställs inte samma krav som på systemsidan. Ett flexibelt sätt att få tillgång till<br />

nätverket kan i själva verket vara att föredra. Ett av skälen är att vissa instrument t.ex. en kamera<br />

kanske bara ibland, typiskt när ett foto precis har tagits, vill ha tillgång till bussen och snabbt tömma<br />

sin minnesbuffert för att tillåta fler bilder att tas. Flexibiliteten kan lösas antingen genom att<br />

arbitrering avgör vilken nod som får sända vid vilket ögonblick, alternativt genom att tidsschemat kan<br />

byta mode såtillvida att olika noder får olika tillgång till nätet beroende av vilken huvudsaklig uppgift<br />

satelliten löser vid ett givet tillfälle eller genom att bandbredden är så pass stor att alla noder ständigt<br />

har tillgång till sin toppbelastning. Den senare av dessa lösningar kan av andra skäl, såsom EMC,<br />

effektförbrukning och störningskänslighet, dock vara mindre lämplig<br />

Bandbredden är svår att sia om då den är helt beroende av lasten, alla de intervjuade på rymdbolaget<br />

är dock överens om att en för liten bandbredd inte får tillåtas begränsa verksamheten. Då<br />

payloadbussen ofta utsätts för punktlaster kan det vara lämpligt att dimensionera efter dessa och en<br />

bandbredd uppemot 10 Mbps kan vara lämpligt även om 1Mbps räcker gott och väl för SMART-1 och<br />

för STEAM.<br />

4.3 Tidsstyrda respektive händelsestyrda nätverk och noder<br />

Även om trenden inom inbäddade system går mot mer och mer tidsstyrda noder, planeras systemet<br />

bestå av både tidsstyrda- och händelsestyrda noder. Därför bör nätverksprotokollet stödja såväl<br />

schemalagd- som spontan sändning av meddelanden. Nätverket skall distribuera global tid samt<br />

synkronisera noderna med en noggrannhet om minst 100 µs. Om ett nätverk med endast schemastyrd<br />

tilldelning till bussen ändå väljs, måste det ha tillräcklig bandbredd för att de noder som bara behöver<br />

sända ibland ändå tilldelas minst en tidslucka i varje TDMA-omgång. Dessutom kan dessa noder<br />

behöva ett gränssnitt mellan applikation och nätverk som säkerställer att applikationen använder sina<br />

egna tidsluckor även om applikationen i sig inte "känner till" att dessa finns, då applikationen är helt<br />

händelsstyrd.<br />

4.4 Testning och utveckling<br />

Vikt skall läggas vid att nätverksprotokollet redan tidigare är väl använt och spritt, då detta medger att<br />

kringutrustning och kunnig personal är lättare att få tag på.<br />

All trafik på en buss skall gå att avlyssna från en punkt i nätet, i syfte att möjliggöra testning och<br />

diagnostisering.<br />

4.5 Rymdens krav<br />

Att sateliten skall skickas upp i rymden ställer mycket höga krav på utrustningen. Inte bara förhåller<br />

det sig så att reparationer i praktiken är helt otänkbara för de flesta satelliter, rymdmiljön i sig är<br />

mycket krävande. Nedan tas de ur elektronikutvecklingshänseende besvärligaste aspekterna upp.<br />

4.5.1 Vakuum<br />

Elektronik påverkas av vakuum på sådant sätt att komponenter som i vanliga fall använt luft för<br />

kylning inte kan göra det. Detta kan leda till överhettning och det problemet löses lättast genom att<br />

använda energisnåla komponenter. Värmet kan även ledas till radiatorer där det strålas ut i rymden.<br />

Vakuum leder även till att många material, däribland många plaster, gasar ur. Det vill säga att det<br />

obefintliga omgivande trycket får materialet att sakta men säkert förgasas. Detta är givetvis inte<br />

önskvärt, utan material som klarar vakuum måste användas till isolering, kretskort,<br />

komponentinneslutningar m.m.<br />

4.5.2 Strålning<br />

Det finns, enligt Leif Granholm [19] på Rymdbolaget, många sorters strålning och de kan delas upp i<br />

Gamma- och partikelstrålning. Partikelstrålningen kan i sin tur delas upp i protonstrålning,<br />

elektronstrålning och tunga joner.<br />

Gammastrålningen, som består av högenergetiska fotoner, skapar bl.a. dislokationer i<br />

komponenternas kiselstrukturer, varför komponenterna degenererar vilket leder till ökade<br />

läckströmmar, minskade förstärkningar och allmänna defekter. Gammastrålningens intensitet kan<br />

minskas med blysköldar men det är knappast aktuellt inom rymdindustrin, med tanke på sköldarnas<br />

vikt.


Intern realtidskommunikation i framtida Svenska satelliter sid 17<br />

Martin Normark<br />

Protonstrålning orsakar inte bara samma skador som gammastrålning utan dess elektriska laddning<br />

kan dessutom leda till att databitar, d.v.s. logiska ettor resp. nollor, kan byta värde i såväl kablar,<br />

processorer som minnen. Detta fenomen kallas ibland för bit-flip. Ett centimetertjockt aluminiumhölje<br />

utgör dock ett gott skydd mot protonstrålning.<br />

Tunga joner är elektriskt laddade och har höga energier, ibland över 1GeV. De orsakar i stort sett<br />

samma skador som gammastrålning och protonstrålning, d.v.s. degenerering och bit-flips. De tunga<br />

jonerna är p.g.a. dess höga energier, i praktiken omöjliga att skärma av rent fysiskt.<br />

Uppladdning av dielektrikum förekommer också, detta orsakas av alla laddade partiklar och kan<br />

leda till elektriska överslag i och mellan kretsar.<br />

Även s.k. Latch-up kan förekomma, detta kan liknas vid en kortslutning i chipet som mycket<br />

snabbt leder till haveri i kretsen om inte strömmen bryts mycket snabbt. En strömåtgångsövervakare<br />

kan dock användas för att i förekommande fall bryta strömmen till den felande kretsen. Efter att<br />

strömmen brutits kan kretsen startas upp igen på normalt sätt.<br />

Stråldoser mäts i rad eller gray (100 rad = 1 gray) där gray är en SI-enhet [J/kg]. Strålningen<br />

varierar med avståndet till jordytan och generellt kan sägas att den ökar med höjden, då jordens<br />

magnetfält minskar. Men även andra faktorer spelar in, som t.ex. strålningsbälten runt jorden, solens<br />

aktivitet, dag- respektive nattsida av jorden m.m. Den närmast, i tiden, planerade svenska satelliten<br />

STEAM skall cirkla runt jorden i en cirkulär solsynkron bana, 700 km över jordytan i 4 år. STEAM<br />

beräknas då exponeras för en strålningsdos om högst 100 Gray. I sammanhanget kan nämnas att 4<br />

Gray betraktas som en dödlig dos för en människa.<br />

Då ett normalt mikrochip av kisel klarar en dos om cirka 20 Gray kan dessa inte nyttjas utan<br />

strålningståliga komponenter måste användas. Strålningståliga komponenter finns och de klarar<br />

strålning i olika klasser mellan 30 och 10.000 Gray. Komponenterna tillverkas dock i små serier och<br />

endast ett fåtal olika komponenter och kretsar ges ut i strålningstålig modell. Att ta fram en ny<br />

strålningstålig modell är mycket kostsamt, varför detta sällan sker. Detta leder till att till synes triviala<br />

komponentval kan bli relativt komplexa. Dock finns strålningsklassade FPGA:er på marknaden.<br />

FPGA:er är logiska programmerbara grindnätverk i vilka det är möjligt att programmera instruktioner,<br />

kod och information. Dessa kan sedan användas som mikrokontrollers. Storleken och hastigheten på<br />

dessa är dock begränsade. En rimlig storlek för en nätverkskontroller är, enligt Gunnar Andersson på<br />

Rymdbolaget, kring 100 000 grindar.<br />

Då det är svårt att skärma alla kablar mot protonstrålning och omöjligt att begränsa tungajonstrålningen<br />

är bit-flippar inte möjliga att undvika. I stället måste datorerna ombord vara<br />

programmerade för att upptäcka och rätta till skadad information.<br />

4.5.3 Rymdskrot<br />

I jordens närhet finns en mängd partiklar från dammkornsstorlek och uppåt. En del av dessa partiklar<br />

är rester av tidigare mänsklig rymdverksamhet. En satellit som ligger i STEAM´s bana rör sig med ca<br />

7 km/s, det är troligt att en partikel i dess närhet håller minst samma hastighet. Det innebär att<br />

hastighetsskillnaden mellan två kolliderande föremål med stor sannolikhet är flera tusen m/s, detta kan<br />

jämföras med en gevärskula vars hastighet, när den träffar målet, sällan överstiger 900 m/s. Att<br />

resultatet av en dylik träff är förödande inses lätt -minst det delsystem som direktträffas kan slås ut.<br />

Det finns i praktiken bara två sätt att minska risken för katastrofer av detta slag: Genom att undvika<br />

banor där mycket rymdskrot förekommer samt att bygga in redundans i systemet. Redundansen<br />

innebär ofta att varje delsystem finns duplicerat.<br />

4.6 Redundans och felhantering<br />

Med tanke på rymdens krav är i stort sett hela satelliten redundant. Det vill säga, att om en komponent<br />

(single point of failure) eller, i de flesta fall, ett delsystem faller bort av någon anledning, finns minst<br />

ett alternativt sätt att lösa den bortfallna komponentens uppgift. Detta gäller även nätverket, som<br />

därför alltid skall sända över två parallella, av varandra oberoende linjer. Controllern skall sedan, om<br />

så är fallet, sortera bort det felaktiga meddelandet.<br />

Protokollet skall ha funktioner för att finna och automatiskt rätta till enskilda fel som beror av sändfel<br />

eller störningar. Systemet skall vidare kunna identifiera samt stänga av och/eller möjligöra<br />

avstängning av en nod, en så kallad babbling idiot, som kontinuerligt skapar sändfel och på så sätt stör<br />

ut bussen.


Intern realtidskommunikation i framtida Svenska satelliter sid 18<br />

Martin Normark<br />

4.7 Elektriskt gränssnitt<br />

CAN-bussen i SMART-1[1] använder RS-485, ett standardiserat, differentierat elektriskt gränssnitt<br />

som erbjuder ca 10Mbit/s i överföringshastighet och förbrukar ca 0,3 W per nod. Ett snabbare och<br />

säkrare nät kan tillåtas förbruka något mer men effektuttag över 1 W bör undvikas. Vidare skall<br />

bussen vara tålig mot kortslutning och ESD och ej heller stråla ut för mycket EMC.<br />

4.8 Sammanfattning av krav<br />

Nedan sammanfattas de krav som redovisats i detta kapitel i fallande prioritetsordning.<br />

• Alla komponenter ingående i nätverket skall vara rymdklassade eller rymmas i en FPGA med<br />

högst 100 000 grindar.<br />

• Feldetektion samt felhantering skall vara minst lika bra som i CAN.<br />

• En babbling idiot, eller ”död nod” skall gå att identifiera och åtgärder vidtagas.<br />

• Bandbredden på systemsidan skall vara minst 1Mbps, gärna mer, med mindre än ca 50 %<br />

overhead,.<br />

• Bussen geografiska totala längd skall kunna uppgå till minst 5m.<br />

• Nätverken skall kunna distribuera global tid och kunna synkronisera noderna noggrannare än 100µs.<br />

• Nätverket skall stödja såväl tidsstyrda som händelsestyrda applikationer.<br />

• Nätverket skall kunna allokera bandbredd till den nod som anses behöva den mest, alternativt<br />

erbjuda samtliga noder toppbelastning vid varje tillfälle.<br />

• Hela nätverket skall vara redundant, såtillvida att all information ständigt sänds över två linor<br />

alternativt ha möjlighet att byta lina om det går ner.<br />

• All nätverkstrafik skall vara avlyssningsbar i en punkt.<br />

• Alla noder på respektive buss skall kunna sända meddelanden till varandra, om så krävs via en<br />

bussmaster<br />

• Nätverket skall vara väl spritt.<br />

• Payload bussen kan ha en bandbredd om 1Mbps men bör ha en bandbredd om minst 10 Mbps.<br />

Även här med ca 50 % overhead.<br />

• System- och payloadbuss kan, men måste inte vara separerade.<br />

Vidare skall stor vikt läggas vid att finna en robust lösning där tillförlitlighetstänkande dominerar.


NOD<br />

A<br />

Intern realtidskommunikation i framtida Svenska satelliter sid 19<br />

Martin Normark<br />

5 Kort beskrivning av befintliga nätverk som kan komma<br />

ifråga<br />

5.1 CAN<br />

Can används idag i satelliten SMART-1 [1] och utgör såväl payload- som systembuss. CAN som är<br />

utvecklat av BOSCH som ett inbäddat nätverk för bilar, sprids nu mycket snabbt även bland<br />

användare utanför bilindustrin. Anledningarna till dess stora användning är dess robusthet, felsäkerhet<br />

och enkelhet. CAN-controllers finns numera inbyggda i många av de microcontrollers som säljs på<br />

marknaden, varför dessa kan kopplas ihop till ett nätverk utan alltför stort besvär. CAN implementerar<br />

OSI-modellens lager 1-2 och passar bra för korta frekventa kontrollmeddelanden.<br />

5.1.1 Protokoll<br />

CAN är [3] ett distribuerat nätverk, d.v.s. alla noder ingående i nätverket hör vad alla andra noder<br />

sänder.<br />

NOD<br />

B<br />

Figur 5.1 CAN´s topologi<br />

NOD<br />

C<br />

NOD<br />

D<br />

All information sänds i paketform, paketen kallas meddelanden. Meddelandet har ingen explicit adress<br />

utan snarare en ID-kod som beskriver dess innehåll. De noder som är programmerade att läsa en viss<br />

typ av meddelanden gör det, de andra låter bli. En nod kan både lyssna på och sända iväg flera olika<br />

meddelandetyper. ID-koden som är 11 (CAN 2.0A) eller 29 bitar (CAN 2.0B) beskriver även<br />

meddelandets prioritet om flera noder önskar sända samtidigt. Då sker en så kallad arbitrering där<br />

meddelandet med högst prioritet får sända först. Av den anledningen kallas den del av meddelandet<br />

som innehåller ID-koden för arbitreringsfält. Efter arbitreringsfältet följer ett kontrollfält som anger<br />

meddelandets typ och längd, följt av ett datafält. Datafältet innehåller 0-8 bytes data. Efter datafältet<br />

följer en 15 bitars CRC-checksumma som används för feldetektering. Sist kommer en lucka som heter<br />

ACK-slot, i den meddelar de noder som uppfattat -och inte hittat något fel på- meddelandet, detta.<br />

Med andra ord räcker det med att en nod uppfattar meddelandet för att sändarnoden skall uppfatta<br />

meddelandet som uppfattat av alla. Det finns dock ingen garanti för att den tilltänkta noden verkligen<br />

uppfattat meddelandet.<br />

Figur 5.2 Meddelandepaketets utseende för CAN<br />

Vilken nod som helst kan, om den uppfattar något fel, avbryta pågående sändning varvid sändande<br />

nod avbryter och automatiskt sänder om. Om ingen nod uppfattar meddelandet sänds det också om.<br />

CAN HI<br />

CAN LOW


Intern realtidskommunikation i framtida Svenska satelliter sid 20<br />

Martin Normark<br />

Arbitreringen ställer krav på samtidighet bland noderna, därför är den högsta tillåtna hastigheten<br />

1 Mbps och då måste bussens sammanlagda längd understiga 40 m. Med ökande fysisk längd, på<br />

bussen, minskar den högsta möjliga hastigheten.<br />

CAN har inget inbyggt stöd för tidsscheman eller synkronisering av noder, det finns heller ingen<br />

inbyggd funktion för att identifiera, och tysta, en så kallad babbling idiot.<br />

5.1.2 Elektriskt interface<br />

ISO 11898, 5 V differentierad tvinnat par terminerad med två 120 ohms motstånd i vardera änden,<br />

rekommenderas av CAN-standarden. RS-485 eller motsvarande går också att använda.<br />

5.2 USB<br />

USB 2.0 har på kort tid blivit mycket populär inom hemdatorindustrin, detta framför allt på grund av<br />

dess stora spridning bland kringkomponenter, dess höga bandbredd samt att den är mycket enkel att<br />

använda för slutanvändaren. USB 2.0 [4] synkroniserar alla noder varje 1 ms (125 µs för USB High<br />

Speed) men är detta till trots inte lämpad för schemastyrda realtidsapplikationer. Dock kan USB 2.0<br />

tänkas vara ett bra alternativ på payloadsidan då det får betraktas som mycket flexibelt och erbjuder<br />

hög bandbredd.<br />

5.2.1 Protokoll<br />

USB [4] kan beskrivas som en pyramid-hierarki med stjärnnät, där en master i toppen pollar upp till<br />

127 noder anslutna till högst 7 hubbar. Varje nivå i pyramiden ytgörs av minst en hub, men flera<br />

hubbar kan ligga på samma nivå.<br />

Figur 5.3 Topologin hos USB<br />

Protokollet stödjer in- och urkoppling av noder och hubbar utan att nätverket behöver stängas ned.<br />

Det finns tre hastighetsstandarder:<br />

- USB Low Speed: 1,5 Mbps<br />

- USB Full Speed: 12 Mbps, vanligt i PC<br />

- USB High Speed: 480 Mbps


Intern realtidskommunikation i framtida Svenska satelliter sid 21<br />

Martin Normark<br />

Feldetektering erbjuds med hjälp av CRC för både controll- och datafält, enligt tillverkaren skall<br />

CRC:n upptäcka 100% av alla enkel- eller dubbelbitsfel. Då ett fel upptäcks erbjuder standarden<br />

automatisk omsändning och/eller rapport om fel.<br />

Det finns fyra dataflödestyper:<br />

- Control Transfers: Används då en ny nod kopplas in eller då nätet startas upp. En applikation<br />

kan tillåtas välja att använda Control Transfers till ytterligare inställningar även efter att den<br />

blivit inkopplad.<br />

- Bulk Transfers: Överföring av en större mängd data t.ex. en bild eller motsvarande. Bulk<br />

Transfer använder automatisk feldetektion. Hur stor del av den totala bandbredden som används<br />

regleras automatiskt med hänsyn till annan trafik på bussen d.v.s. ej allokerad bandbredd tilldelas<br />

Bulk transfers. 8, 16, 32 eller 64 bytes kan sändas per paket.<br />

- Interupt Transfers: Litet meddelande som kan skjutas in när som helst av vem som helst med<br />

en garanterad högsta fördröjning. Max 64 bytes (1024 bytes för USB High Speed) kan överföras<br />

i en transfer.<br />

- Isochronous Transfers: Kontinuerlig realtidssändning t.ex. audio eller video. Helt utan<br />

feldetektering och felkorrigering. Högst 90% av bandbredden kan allokeras för Interupt- och<br />

Isochronous Transfers.<br />

När ett device eller en function (USB-termer för nod) ansluts till nätet upprättas en pipe, en virtuell<br />

ledning mellan host och device. En device kan kopplas in när som helst, även då andra sändningar<br />

pågår på bussen. Det finns två sorters pipes:<br />

- Streampipe, ett flöde av paket, på vilka det inte ställs några krav att följa några USBstrukturregler,<br />

till en eller flera mottagare som inte kommer att synkroniseras. Streampipe<br />

används av Bulk-, Interupt- och Isochronous Transfers.<br />

- Message pipe, är mer uppstyrd till sin natur och kommunicerar på följande sätt: Applikationens<br />

mjukvara, på mastersidan, skickar ett IRP (I/O Request Packet). Detta följs av dataöverföring i<br />

önskad riktning, för att slutligen avslutas med ett statusmeddelande. Message pipen används för<br />

Control transfers.<br />

Bussens tid delas sedan upp i 1ms långa timeframes (125 µs i USB High Speed). I varje timeframe<br />

kan flera olika transfers sändas. 10% (20 % i USB High Speed) av bandbredden i varje timeframe<br />

reserveras för Control transfers, denna andel minskas dock om behovet minskas och ökas om<br />

utrymmet på bussen tillåter detta. Maximalt antal controlltransfers, innehållande 8 bytes, som kan<br />

sändas inom en timeframe är 28 (32 st 64 bytes för USB High Speed). USB-protokollet är inte<br />

deterministiskt i det avseendet att antalet transfers av olika slag alltid kan förutsägas<br />

5.2.2 Elektriskt gränssnitt<br />

USB använder differentierade skärmade tvinnade kablar terminerade av ett 45Ω motstånd.<br />

Fördröjningen i kabeln får ej uppgå till mer än 26 ns och den differentierade spänningen över<br />

termineringsmotståndet skall vara +/- 400 mV.<br />

5.3 Spacewire<br />

Spacewire är en blivande standard som tas fram av ECSS (European Cooperation for Space<br />

Standardization) [5] som i sin tur opererar under ESA (European Space Agency). Standarden är så<br />

gott som helt fastställd, utkast 3 håller i skrivande stund på att korrekturläsas. Standarden<br />

implementerar skikt 1-2 i OSI-modellen. Redan idag finns rymdkvalificerade noder, "SMCS332" eller<br />

"SMCS lite", implementerade i kameror, massminnen och DSP-kort. Vissa av dessa är operativa i<br />

missioner idag. Även rymdkvalificerade routrar, liksom tranceiver-receiver-par med kabel finns att<br />

köpa idag.<br />

Spacewire är en full-duplex, seriell, punkt-till-punkt datalänk. Om routrar används bildar Spacewire<br />

ett nätverk. Spacewire erbjuder dataöverföringshastigheter mellan 2-400 Mbps.


Intern realtidskommunikation i framtida Svenska satelliter sid 22<br />

Martin Normark<br />

Figur 5.4 Nätverkstopologin hos Spacewire<br />

Spacewire erbjuder synkronisering av noderna med en noggrannhet av ca 10 µs vid 100 Mbps. Dock<br />

stöder standarden i sig ingen tidsschedulering. Spacewire skulle kunna ersätta payloadbussen, om<br />

tidsschedulering läggs till kan ett spacewirenätverk ersätta såväl system- som payloadbuss.<br />

5.3.1 Protokoll<br />

Definierat i protokollet finns två teckentyper:<br />

- Datatecken, består av totalt tio bitar, varav en paritetsbit, en data-kontroll-flagg och åtta<br />

databitar. Paritetsbiten ser till att antalet ettor alltid är udda och data-kontroll-flaggen indikerar<br />

huruvida tecknet är ett datatecken eller ett Kontrolltecken.<br />

- Kontrolltecken, består av fyra bitar. En paritetsbit, en data-kontroll-flaggsbit och två<br />

värdetecken. De fyra kombinationerna blir då: FCT (Flow Control Token), EOP (normal End Of<br />

Packet), EEP (Error End of Packet) samt ESC (Escape). Escape kan sedan byggas på i syfte att<br />

skapa tecknet NULL (totalt 8 bitar) som används för handskakning eller Time-Code-tecken<br />

(totalt 14 bitar) som används för synkronisering av noderna i nätet.<br />

Spacewire använder paketstrukturer som består av tre delar:<br />

= där adressen kan delas upp i följande:<br />

= … <br />

Paketet innehåller ingen CRC. Vilket innebär att dubbla bitfel i ett datatecken eller kontrolltecken inte<br />

nödvändigtvis upptäcks. Paketen kan enligt tillverkaren ganska enkelt göras om till TCP/IP.<br />

Spacewire-nätverket byggs upp av minst två noder, noll eller flera routrar samt länkar mellan dessa.<br />

Ett nätverk utan router använder inte adressdelen i meddelandepaketet, då det endast existerar en<br />

mottagare. Adresseringen i ett routat nätverk är dock tämligen enkel till sin natur; deladresserna består<br />

helt enkelt av ett heltal som talar om genom vilken utgång respektive router skall skicka vidare<br />

meddelandet.<br />

Då ett paket skall sändas genomförs en handskakning mellan noderna, följt av sändning av paketet,<br />

efter paketslut skickas ett statusmeddelande tillbaka. För att mottagarnoden inte skall drabbas av<br />

överfull minnesbuffert meddelar mottagaren sändaren då denne är redo att ta emot ytterligare åtta<br />

byte. Skulle förbindelsen brytas eller störas under en sändning upptäcks detta varvid meddelandet<br />

termineras och en ny handskakning, anpassad för återupprättande av förbindelse, inleds och<br />

meddelandet sänds om.<br />

På ett tämligen enkelt sätt skapas redundans genom att lägga upp parallella routrar, som möjliggör<br />

flera vägar för meddelandet. Meddelandet kan då skickas genom en eller flera ledningar samtidigt för<br />

att sedan jämföras, mjukvarumässigt, när det kommer fram.


Intern realtidskommunikation i framtida Svenska satelliter sid 23<br />

Martin Normark<br />

Tidssynkronisering stöds av protokollet. Vid varje "tidstick" sänds en 6-bitars tidskod ut, denna kod<br />

kan ses som systemtidens lägst signifikanta bitar. Vid varje tick räknas värdet upp med ett (modulo<br />

64). Tidsmeddelandet har förtur gentemot andra meddelanden i nätet, dock måste tidsmeddelandet<br />

vänta på att ett eventuellt tecken som håller på att sändas skall sändas klart, samt självt sändas klart.<br />

Detta upprepas sedan genom varje routerlager. Tillverkaren anser inte att en användare skall räkna<br />

med att få en större noggrannhet än 10 µs.<br />

Tidsschedulering stöds ej av Spacewire-protokollet.<br />

5.3.2 Elektriskt gränssnitt<br />

Det elektriska gränssnittet utgörs av Low Voltage Differential Signalling (LVDS ANSI/TIA/EIA-<br />

644). Kabeln har fyra tvinnade par, totalt 8 trådar. Detta för att full duplex skall uppnås. LVDS<br />

använder spänningsnivåer på 350 mV, vilket erbjuder en hastighet upp till 400 Mbps i upp till 10 m<br />

långa kablar. Varje tranceiver-receiver-par förbrukar 50mW. LVDS är ESA-godkänd beträffande<br />

EMC,ESD,EMI.<br />

Även RS-422 eller RS-485 kan användas, men erbjuder då endast 10 Mbps.<br />

5.4 TTP/C<br />

TTP/C står för Time Triggered Protokoll och tros [20] bli/vara en av kombattanterna som konkurrerar<br />

om att bli nästa de facto standard inom området "mycket säkra inbäddade nätverk". Denna typ av<br />

nätverk planeras att inom bl.a. bil och flygindustrin användas som s.k. Steer-By-Wire protokoll.<br />

TTP/C är operativt sedan 1998 och har nyligen kommit ut i en andra version. TTP/C [7] stödjer<br />

sändning med bithastigheterna 5 respektive 25 Mbps och reglerar skikt 2 i OSI-modellen. Nätverket<br />

stöds av ett flertal stora företag såsom: Airbus, Wolksvagen, Audi med flera. TTP/C är ett tänkbart<br />

alternativ som systembuss men skulle även kunna användas som payloadbuss.<br />

5.4.1 Protokoll<br />

TTP/C implementerar OSI modellens skikt 2-3. Detta sker medelst sammankopplade noder i ett<br />

broadcastat redundant nätverk. Nätverket är redundant såtillvida att varje nod sänder, respektive tar<br />

emot över två, av varandra oberoende, parallella fysiska nätverk, den emottagna informationen<br />

jämförs sedan i syfte att upptäcka eventuella fel. Olika information kan också sändas i syfte att öka<br />

bandbredden, denna information blir dock inte redundant. En annan mycket viktig aspekt inom<br />

säkerhetstänkandet är vad som händer då en komponent slås ut av olika skäl. I TTP/C garanteras<br />

nätverkets fortlevnad, oavsett vilket enskilt hårdvarufel som inträffar. Detta löses bl.a. genom dubbla<br />

sändningskanaler, multipla klockor, membership service, skuggnoder som kan ta över om en viktig<br />

nod faller ifrån. TTP/C-noderna kan kopplas ihop till en buss eller med hjälp av en stjärnkopplare<br />

kopplas ihop till stjärnnät eller kombinationer av dessa.


Intern realtidskommunikation i framtida Svenska satelliter sid 24<br />

Martin Normark<br />

Figur 5.5 Möjliga topologier hos TTP/C<br />

Ett tidsschema, vid namn TDMA (Time-Division Multiple Acces), reglerar vilken nod som sänder<br />

när, vilket innebär att inga krockar sker på nätet utan detsamma kan användas effektivt. Detta<br />

kontrolleras även av en busguardian som har möjlighet att tysta ned en nod som försöker sända då den<br />

inte skall göra det. En annan följd av tidsschemat är att användaren redan i förväg känner till, och kan<br />

bestämma, när meddelandet sänds, hur lång tid det kommer att ta och med vilken fördröjning det<br />

kommer att ske. Detta är givetvis en stor fördel vid reglersystemdesign. Minst fyra av varandra<br />

oberoende klockor finns utspridda bland noderna och definierar tillsammans nätverkets tid, som<br />

synkroniseras mellan noderna i storleksordningen 1 µs.<br />

Membership service är en funktion där varje nod en gång under varje TDMA-runda,<br />

storleksordningen 1-10ms, med hjälp av en Membership vector informeras om alla andra noders<br />

status. Med hjälp av detta kan därför åtgärder, t.ex. att systemet går in i felsäkert läge eller att en<br />

skuggnod tar över den trasiges plats, vidtas inom högst 2-3 TDMA-rundor från det att en nod fallit<br />

ifrån.<br />

Sänd- och mottagningsfel upptäcks inom en TDMA-runda av alla noder eftersom den sändande noden<br />

inte kommer att ingå i membership vektorn. Applikationen kan då omedelbart avgöra vilken åtgärd<br />

som vidtas. All applikationsdata och alla kontrolldata sänds i paketform. Applikationspaketen kan<br />

innehålla 0-239 bytes data och kontrollpaketens storlek varierar med uppgiften.<br />

5.4.2 Elektriskt gränssnitt<br />

Det elektriska gränssnittet regleras inte av TTP/C [7] standarden men för asynkron sändning<br />

rekommenderas ISO-11898 (samma som CAN-standarden förordar) för hastigheter 1-2 Mbps och RS-<br />

485 för hastigheter upp till 5Mbps.<br />

TTP/C stöder även synkron sändning över 100 Mbit/s Ethernet (IEEE 802.3) medium.<br />

Maxhastigheten är då 25 Mbps.<br />

5.5 TTCAN<br />

TTCAN [9] är en utveckling av CAN 2.0, där ett logiskt lager lagts ovanför den fortfarande orörda<br />

CAN-standarden. Tilläggen syftar till att göra CAN mer deterministiskt genom att tidsschemastyra<br />

alla sändningar samt synkronisera noderna. TTCAN får trots sitt tidsschema betraktas som tämligen<br />

flexibelt då tidsluckor kan läggas in där alla CAN-noder kan arbitrera på samma sätt som i CAN 2.0.<br />

TTCAN är i skrivande stund i princip färdigutvecklat och provkretsar finns att tillgå. Spridningen är<br />

ännu inte särskilt stor men mycket av den testutrustning som finns för CAN 2.0 fungerar även för


Intern realtidskommunikation i framtida Svenska satelliter sid 25<br />

Martin Normark<br />

TTCAN. TTCAN´s svaghet ligger i dess något låga bandbredd (1 Mbps) samt dess bristande förmåga<br />

att identifiera och tysta ned en babbling idiot. TTCAN kan tänkas användas där CAN används idag,<br />

d.v.s. som systembuss och ev. som payloadbuss.<br />

5.5.1 Protokoll<br />

Utöver att erbjuda allting (med vissa undantag, som omsändning av felaktiga meddelanden) som CAN<br />

2.0 erbjuder, delar TTCAN [8] in tiden i cykler, som kallas basic cycle. I varje cykel finns av<br />

användaren fördefinierade separerade tidsfönster. Verksamheten inom varje tidsfönster är reglerad av<br />

användaren under utvecklingen av nätverket. Möjliga verksamheter inom ett tidsfönster är exklusiv<br />

sändning från en viss nod, arbitrering mellan alla noder, eller ett tomt fönster där ingen nod är tillåten<br />

att sända. Syftet med tomma fönster är att kunna reservera bandbredd till kommande applikationer.<br />

Flera ”basic cycles” av samma längd, men innehållande olika långa- med olika typer av tidsfönster,<br />

kan läggas efter varandra. Dessa bildar då en systemmatris.<br />

Alla noder inom nätverket är programmerade med systemmatrisen, vilket innebär att de vet när de<br />

skall sända respektive kan tänkas få ett meddelande.<br />

För att tidsscheduleringen skall fungera korrekt måste noderna synkroniseras noggrant.<br />

Synkroniseringen sker kring en tidsmasternod som backas upp av en eller flera redundanta noder som<br />

omedelbart tar över om mastern faller ifrån. Början av varje basic cycle definieras av att tidsmastern<br />

skickar ett tidsreferensmeddelande.<br />

Figur 5.6 Synkronisering av nod<br />

Varje nod är försedd med en klocka som anger lokal tid (local Time). Vid varje mottaget eller sänt<br />

meddelandes synkroniseringsbit sparas automatiskt värdet på den lokala tiden undan i ett register som<br />

heter Sync_Mark (se fig 5.6 ovan). Om meddelandet visar sig vara ett giltigt tidsreferensmeddelande<br />

sparas värdet i Sync_Mark undan till ett register vid namn Ref_Mark. En variabel vid namn Cycle<br />

Time (Cycle Time=Local Time-Ref_Mark) visar sedan hur lång tid som, vid ett givet tillfälle, förflutit<br />

i den aktuella cykeln. Noden jämför sedan värdet i Cycle Time mot systemmatrisen i syfte att se vad<br />

den förväntas vidta för åtgärder.<br />

TTCAN kan också distribuera en global tid. Mastern skickar då ett meddelande vid namn<br />

Master_Ref_Mark, som är en kopia av tidsmasterns lokala tid då Ref_Mark skickades. I den enskilda<br />

noden jämförs sedan (se fig 5.7 nedan) nodens egna Ref_Mark med Master_Ref_Mark varefter felet<br />

(Local_Offset) läggs till/dras ifrån den lokala tiden, vilken sedan kommer att visa samma tid som<br />

tidsmastern.


Intern realtidskommunikation i framtida Svenska satelliter sid 26<br />

Martin Normark<br />

Figur 5.7 Synkronisering av global tid<br />

Dessvärre gäller detta endast för synkroniseringsögonblicket. Då klockor i allmänhet alltid går olika<br />

fort, kommer synkroniseringen att bli felaktig med en okänd tidsdifferans intill nästa<br />

Tidsreferensmeddelande. Detta löser dock TTCAN medelst en driftkompensation.<br />

Kompensationskoefficienten (Time Unit Ratio) skapas (se fig 5.8) genom att differensen mellan den<br />

aktuella och den tidigare Master_Ref_Mark divideras med differensen mellan den aktuella och den<br />

tidigare Ref_Mark. Genom att ta den lokala klockans hastighet multiplicerat med<br />

kompensationskoefficienten erhålles en klockhastighet som väl överensstämmer med tidsmasterns.<br />

Figur 5.8 Klockdriftskompensation i TTCAN<br />

Om kompensationskoefficienten varierar kraftigt är detta ett tecken på att den lokala klockan är<br />

mycket ostadig, varför controllern flaggar upp detta för datorn som styr densamme. För att tidschemat<br />

skall hålla tillåts ingen omsändning av skadade eller felaktiga meddelanden, denna funktion är därför<br />

avstängd i TTCAN. Dock flaggas även detta fel upp för datorn som själv får vidta åtgärder.


Intern realtidskommunikation i framtida Svenska satelliter sid 27<br />

Martin Normark<br />

5.5.2 Elektriskt gränssnitt<br />

TTCAN använder samma elektriska gränssnitt som CAN 2.0 d.v.s. ISO 11898 eller RS 485.<br />

5.6 FlexRay<br />

Även FlexRay gör anspråk på att bli den nya de facto standarden inom området "mycket säkra<br />

nätverk" [20]. Många nätverksprotokoll, t.ex. TTP/C, tar hjälp av determinism, som ett sätt att<br />

undvika krockar och detektera felaktigheter, i syfte att nå upp till önskad säkerhetsnivå. Även FlexRay<br />

[10], som ännu inte är färdigutvecklat, avser göra detta till viss del men har även ambitionen att<br />

tillföra en rejäl dos flexibilitet. En flexibilitet som är hett efterlängtad av vissa användare, medan<br />

andra hävdar att säkerhet och flexibilitet inte kan kombineras och att säkerheten alltid måste sättas<br />

först. Skulle FlexRay lyckas, vilket på intet sätt får anses orealistiskt, nå upp till nödvändig säkerhet<br />

utan att för den skull bli för krånglig, kan flexibiliteten bli den avgörande faktorn som gör att FlexRay<br />

tar hem vinsten i striden om en framtida de facto standard, åtminstone i bilindustrin.<br />

Konsortiet FlexRay har många stora medlemmar t.ex. BMW, DaimlerChrysler, BOSCH och General<br />

Motors för att nämna några.<br />

Tillverkarna räknar med att nätverket skall finnas tillgängligt på marknaden i slutet av 2004 och att<br />

den första serietillverkade bilen som innehåller FlexRay skall säljas 2006.<br />

FlexRay skulle i en framtid mycket väl kunna agera som en sammanslagen payload- och systembuss i<br />

nästa generation av satelliter. Ett problem vid utvärdering av FlexRay är att tillverkarna är tämligen<br />

tystlåtna och inte gärna delar med sig av algoritmer och metoder som används i protokollet.<br />

- Lager i OSI-modellen: FlexRay definierar lager 1-3 i OSI-modellen<br />

-Topologi: Tre topologier stöds, nämligen passiv buss, passivt stjärnnät samt aktivt stjärnnät med eller<br />

utan passiv buss. FlexRay stödjer dessutom samtidig sändning över en parallell redundant buss eller<br />

ett stjärnnät. Nätverket kan konfigureras för att innehålla endast statiska meddelanden, endast<br />

dynamiska meddelanden eller en godtycklig blandning av de båda typerna.<br />

-Paketutseende: Det finns två pakettyper, dels FlexRay Frame Format som används för såväl statiska<br />

som dynamiska meddelanden och dels Byteflight Frame Format som endast används för dynamiska<br />

meddelanden och då krävs dessutom att nätverket är konfigurerat för endast dynamiska meddelanden.<br />

FlexRay-paketet (se fig 5.9) innehåller en header om 5 bytes, som beskriver bl.a. identiteten och<br />

storleken på paketet. Identiteten beskiver även paketets prioritet då det sänds. Därefter följer 0-246<br />

bytes data som är skyddat av 24 bitars CRC. Det är även möjligt att använda de två första byten i<br />

datafältet som ytterligare ett ID-fält men i det här fallet mer av formen meddelande-ID.<br />

Figur 5.9 FlexRays meddelandepaket<br />

Byteflight-paketet (se fig 5.10), som finns med för att skapa bakåtkompabilitet med just det BMWägda<br />

nätverket Byteflight, är något enklare till sitt utförande och innehåller i princip bara ett 8-bitars<br />

ID-fält, ett 0-12 bytes datafält samt en 15-bitars CRC.<br />

Figur 5.10 Byteflight´s meddelandepaket


Intern realtidskommunikation i framtida Svenska satelliter sid 28<br />

Martin Normark<br />

-Klocksynkronisering och schedulering av meddelanden: Metoderna för synkroniseringen går<br />

tillverkarna inte särskilt djupt in på, i den senaste specifikationen. Dock dikteras ett antal krav,<br />

däribland att synkroniseringen av den globala tiden mellan noderna skall vara minst 1µs. Vidare skall<br />

nätverket vara feltolerant såtillvida att den/de noder som distribuerar tiden skall kunna haverera utan<br />

att nätverkets trafik eller synkronisering gör det. Synkroniseringsmeddelandet är ett vanligt FlexRaypaket<br />

där SYNC-biten sätts till 1. Synkroniseringen i den dynamiska delen skall följa rutinerna för<br />

Byteflight. Så mycket mer är svårt att få fram, om såväl FlexRay´s som Byteflight´s dynamiska delar,<br />

i nuläget.<br />

-Arbitrering: Den statiska delen använder en TDMA för att avgöra vilken nod som skall sända när,<br />

noderna kontrolleras av en bus-guardian. Den dynamiska delen är ännu något höljd i dunkel, men<br />

skall garantera en högsta fördröjning för vissa meddelanden och även använda sig av en<br />

prioriteringsordning mellan meddelandetyperna.<br />

-Feldetektering och felhantering: FlexRay-paketet har ett tämligen kraftfullt CRC-skydd, bestående<br />

av 9+24 bitar. Andra typer av feldetekteringar som planeras är på media-, bit-, topology-,<br />

synkroniserings- och tidsnivå. Vidare skall en FlexRaycontroller genast meddela mikrocontrollern<br />

som styr noden om ett meddelande inte sänts, eller mottagits korrekt.<br />

-Elektriskt gränssnitt: Det fysiska gränssnittet är inte helt definierat ännu, men skall stödja såväl<br />

elektriskt som optiskt media. Vidare får nätverkscontroller, med tillbehör, inte dra mer ström än 60mA<br />

vid kontinuerlig användning.<br />

5.7 MOST<br />

MOST (Media Oriented Systems Transport) [12] är ett nätverk främst framtaget för överföring av<br />

digitala media såsom audio och video. Samtidigt skall nätverket även transportera<br />

kontrollmeddelanden mellan dessa digitala enheter som kan bestå av datorer, video, DVD, CD,<br />

mobiltelefoner och displayer i ett fordon eller hem. MOST kan maximalt överföra 24.8 Mbps<br />

(tillräckligt för 15 st stereoöverföringar av CD-kvalitet), varav 700 kbps är dedikerat till<br />

kontrollmeddelanden. MOST är framtaget för att använda optisk fiber som medium men koaxialkabel<br />

eller twisted pair går också att använda. MOST får i första hand betraktas som ett alternativ till<br />

payloadbuss men kan tänkas ersätta även dagens systembuss tack vare förmågan att överföra<br />

kontrollmeddelanden. Mer information om MOST finns på deras hemsida: http://www.mostnet.de/<br />

eller http://www.mostcooperation.com<br />

5.7.1 Protokoll<br />

MOST implementerar alla lager i OSI-modellen men en applikationsutvecklare kan själv välja på<br />

vilken nivå gränssnittet mot den egna applikationen skall ligga. Endast nivå 1-3 kommer att beskrivas<br />

här.<br />

Nätverket styrs av en master som delar upp tiden i block. Blocken håller en frekvens motsvarande<br />

samplingshastigheten på en audio-CD, nämligen 44.1 kHz (kan dock ställas in mellan 30-50 kHz).<br />

Dessa block delas sedan upp i 16 MOST-paket (frames) om vardera 64 bytes. Detta paket är i sig<br />

uppdelat i en administrativ del om 2 bytes, en datadel om 60 bytes samt en kontrolldel om 2 bytes.<br />

Datadelen består dels av synkron data och dels av asynkron data, proportionerna dessemellan (kan)<br />

ändras efter hand. MOST-paketet i sig skyddas endast av en paritetsbit.<br />

De administrativa byten används för synkronisering av noder, bestämning av proportionerna mellan<br />

asynkron- och synkron data samt distribution av TDM; tidsschemat som bestämmer när respektive<br />

nod skall sända.<br />

De två kontrollbyten från varje MOST-paket bildar, tillsammans inom ett block, ett 16*2 bytes stort<br />

kontrollpaket. Kontrollpaketet innehåller bl.a. arbitrering, avsändar- samt mottagaradress, CRC samt<br />

17 bytes data. Vid sänd eller mottagarfel meddelas applikationen.<br />

Den synkrona delen är till för att i en jämn ström skicka över data från t.ex. en CD-spelare till en<br />

högtalare eller en förstärkare och är inte skyddat på något sätt, är ett paket skadat accepteras det felet<br />

och lyssnaren märker antagligen inget ändå. Det skickas typiskt 44 100 samples per sekund och nod<br />

eller färre.<br />

De asynkrona delarna bildar paket på ett sätt som liknar kontrollpaketens, datamängden varierar dock<br />

mellan 24 och 1014 bytes. De asynkrona paketen har samma CRC-skydd och adressering som<br />

kontrollpaketen. De asynkrona paketen är tänkta att snabbt kunna transportera datamängder som inte<br />

sänds kontinuerligt t.ex. datafiler eller bilder från en kamera eller motsvarande. Den faktiska databandbredden<br />

för asynkron sändning ligger, beroende på inställningar och data paketstorlek, mellan 1-<br />

11,8 Mbps.


Intern realtidskommunikation i framtida Svenska satelliter sid 29<br />

Martin Normark<br />

Då dessa paket sätts samman av hårdvaran i MOST-controllern är det svårt om inte omöjligt att<br />

förutse exakt när ett meddelande sänds och i vilka MOST-paket det kommer att delas upp i. Vid hög<br />

nätbelastning är det dessutom svårt att garantera sändning av prioriterade meddelanden inom en viss<br />

tidsram.<br />

Figur 5.11 Diverse noder i MOST-ring<br />

Nätverket kopplas i en ring, eller två ringar om redundans önskas, där alla medlemmar känner till sin<br />

egen fördröjning i förhållande till mastern. På så sätt kan noderna synkroniseras. Om en nod havererar<br />

går oftast tranceivern in i bypassmode vilket innebär att informationen bara passerar den trasiga<br />

noden. Skulle den dock misslyckas med detta kommer informationen att stanna vid den trasiga noden<br />

och nätverket är trasigt. Dock kan en controller som tidigare varit slav gå in som master på den<br />

eventuella del som saknar master då nätet gått sönder, varvid nätet eller de olika nätdelarna kan<br />

fortsätta leva.<br />

5.7.2 Elektriskt gränssnitt<br />

MOST är ursprungligen designat för att använda POF (Plastic Optical Fiber) [11] med rött laserljus,<br />

men även koaxialkabel eller twisted pair kan användas.


Intern realtidskommunikation i framtida Svenska satelliter sid 30<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 31<br />

Martin Normark<br />

6 Val av nätverk<br />

Med hjälp av en grafisk bedömningsmall (Appendix E), konsultation av Håkan Sivencrona [20]på<br />

Sveriges Provnings- och Forskningsinstitut och dialog med Gunnar Andersson [18] på Rymdbolaget<br />

väljs här ett nätverk ut för vidare tester.<br />

6.1 Bedömningsmall<br />

I syfte att skapa en överblick skapas en grafisk bedömningsmall där de viktigaste<br />

kraven/egenskaperna hos nätverken sammanställs (se Appendix E). I fälten för egenskaperna har<br />

tillgänglig information lagts in. Dock är vissa fält tomma, detta beror på att informationen med en<br />

rimlig arbetsinsats inte gått att finna. Vissa fält är färgkodade, detta för att enkelt påvisa huruvida<br />

egenskaperna klarar av de krav som ställs på nätverket. Ett grönt fällt skall tolkas som att nätverket<br />

klart klarar det aktuella kravet och ett rött som att nätverket alls icke klarar tidigare ställda krav. Ett<br />

gult fält innebär att kravet i fråga inte uppfylls men att det går att gå runt problemet eller genom<br />

tillägg lösa detsamma.<br />

6.2 Gallring av nätverk<br />

Följande nätverk kommer av nedanstående skäl inte i fråga som controllnätverk i kommande svenska<br />

satelliter:<br />

MOST: Av bedömningsmallen syns tydligt att MOST inte är lämpligt för Rymdbolagets ändamål,<br />

vilket inte är så konstigt då det ursprungligen är tänkt att operera som transportör av media och inte<br />

som kontrollnätverk i känsliga och dyrbara system.<br />

USB lämpar sig heller inte särskilt bra för ett nätverk till ett distribuerat styrsystem, då det är toppstyrt<br />

snarare än distribuerat. Dessutom är det svårt att avlyssna all trafik på ett enkelt sätt för en utvecklare.<br />

Programvara och drivrutiner bedöms ta stor plats i varje nod och i huvuddatorn. Dock tycks USB vara<br />

ett bra alternativ till Payloadbussen i de fall mycket data skall flyttas från ett ställe till ett annat.<br />

Särskilt som det har en mycket stor spridning och många tillämpningar kommersiellt.<br />

Spacewire: Är fortfarande endast i sin linda med begränsad uppbackning från stora kommersiella<br />

användare/utvecklare. Spacewire definierar endast en tämligen låg nivå av kommunikationen, vilket<br />

innebär att en stor del av utvecklingen kvarstår för användaren. Spacewire är i grunden till för<br />

kommunikation mellan endast två punkter och där kan det i framtiden lämpa sig mycket väl för<br />

Rymdbolaget då kretsarna redan finns för rymdbruk och även är integrerade i vissa komponenter<br />

såsom kameror, minnen och datorer för rymdbruk.<br />

TTCAN: Är mycket flexibelt och tycks minst lika säkert som CAN. TTCAN erbjuder en god<br />

tidssynkronisering men ärver de svagheter, såsom låg bandbredd och dålig övervakning av babbling<br />

idiots, som CAN redan från början har. Det har i skrivande stund ej heller synts några tecken på något<br />

kommersiellt genomslag något som Rymdbolaget anser vara viktigt.<br />

Kvar som förslag till framtida nätverk är därför FlexRay, TTP/C och ett egenhändigt förbättrat CAN.<br />

6.3 Slutligt nätverksförslag för STEAM<br />

För att få en uppfattning om säkerhetsnivåerna hos FlexRay, TTP/C och CAN kontaktas Håkan<br />

Sivencrona på SP, Sveriges Provnings- och Forskningsinstitut. Håkan har genomfört omfattande tester<br />

på TTP/C, medelst felinjektioner i syfte att testa tillförlitligheten. Håkan har också en god uppfattning<br />

om FlexRay´s kommande kapacitet. Han menar att TTP/C, idag, är ett mycket tillförlitligt<br />

kontrollnätverk, det säkraste på marknaden. Han menar också att FlexRay´s tillförlitlighett kommer att<br />

komma upp i motsvarande nivå den dag det lanseras. Detta kommer enligt Håkan ske tidigast 2004.<br />

Enligt Håkan kommer såväl TTP/C som FlexRay, med stor sannolikhet, kunna godkännas för<br />

högkritiska tillämpningar såsom steer-by-wire applikationer i bilar och flygplan, vilket varken CAN<br />

eller TTCAN kommer godkännas för. Det enda befintliga nätverk som uppfyller den säkerhet som<br />

efterfrågas är alltså TTP/C. Då FlexRay inte är operativt kan detta dessvärre inte användas.<br />

TTP/C är dock behäftat med en svaghet; TDMA, d.v.s. schemat som styr vilken nod som sänder när,<br />

till stor del helt saknar flexibilitet. Detta innebär att en nod som önskar sända mer än normalt


Intern realtidskommunikation i framtida Svenska satelliter sid 32<br />

Martin Normark<br />

förhindras göra detta. Detta medför att satelliten hindras arbeta inom olika arbetsmoder, då detta<br />

sannolikt innebär olika användningsmönster för noderna på bussen. Efter en dialog med Gunnar<br />

Andersson på Rymdbolaget konstateras att försök har gjorts tidigare med liknande TDMA. Resultatet<br />

av dessa tester var att dylikt schema ej skall användas på svenska satelliter på grund av dess dåliga<br />

flexibilitet. Gunnar Andersson föreslår därför att nuvarande CAN-buss vidareutvecklas och förses<br />

med tillägg för att synkronisera noderna samt med ett köhanteringssystem vars namn är EDF, Earliest<br />

Deadline First, vilket skall tjäna till att öka användningsgraden på bussen samt se till att det för<br />

stunden viktigaste meddelandet får sända först.<br />

Det slutliga Nätverksförslaget för STEAM blir därför ett CAN-nätverk med tillägg av EDF och<br />

tidssynkronisering. CAN-bussen<br />

6.4 Slutligt generellt nätverksförslag för kommande satelliter<br />

För kommande satelliter rekommenderas dock FlexRay, då detta nätverk väntas bli mycket spritt [20]<br />

och dessutom uppfylla Rymdbolagets krav.


Intern realtidskommunikation i framtida Svenska satelliter sid 33<br />

Martin Normark<br />

7 Testimplementation av CAN som använder Earliest<br />

Deadline First<br />

I SMART-1 används ett pollat CAN-nätverk [2]. I STEAM kan dock ett Earliest Deadline First (EDF)<br />

baserat sändschema komma att testas. I detta kapitel beskrivs teorin bakom EDF. Dessutom undersöks<br />

huruvida detta är möjligt att använda i ett CAN-nätverk.<br />

Testerna inleds med en datasimulering där ett tiotal noder simuleras i syfte att kontrollera att alla<br />

noder ständigt får sända inom sin garanterade sändtid och att överbliven bandbredd kan utnyttjas av<br />

noder som önskar sända mer än garanterad bandbredd.<br />

Därefter skall ett riktigt CAN-nät testas i syfte att visa att teorin fungerar även i praktiken. Till det<br />

kommer SMART-1´s CAN-nät att förses med tillägg i de CAN-controllers som ingår i nätet. Genom<br />

att göra förändringen i CAN-controllern är inga förändringar i övriga datorer i satelliten nödvändiga.<br />

Controllern består idag av en FPGA, ACTEL A54SX32PQ208, i vilken VHDL-kod implementeras.<br />

Det är alltså denna VHDL-kod som skall förses med tillägg, för att sedan brännas ned i en ny FPGA<br />

av samma typ som den tidigare. Den nya FPGA´n ersätter därefter den ordinarie controllern i de<br />

prototypdatorkort som finns kvar sedan SMART-1-utvecklingen. De slutliga hårdvarutesten<br />

genomförs sedermera på ett av dessa protypdatakort, närmare bestämt GRWRTU-kortet (Gyro and<br />

Reaction Wheel Real Time Unit), försett med den nya EDF-CAN-controllern..<br />

7.1 Kort beskrivning av EDF<br />

Earliest Deadline First eller EDF är, precis som det låter, en tämligen enkel teori som bygger på att<br />

ingen process skall bli försenad genom att helt enkelt exekvera den process som har mest bråttom<br />

först. EDF kan tillämpas i en mängd sammanhang men här kommer främst kommunikation på en<br />

broadcastad kommunikationsbuss med arbitrering, i det här fallet CAN, att behandlas.<br />

För enkelhetens skull antas i det här exemplet att alla meddelanden har samma längd. Alla noder eller<br />

meddelandetyper erhåller en på förhand bestämd, individuellt garanterad bandbredd, exempelvis kan<br />

nod A garanteras en bandbredd UA=1/6 av bussens totala kapacitet, nod B kan garanteras UB=1/8<br />

o.s.v. Detta innebär att en given nod, t.ex. Nod A, i genomsnitt och om behov finnes, får sända minst<br />

var sjätte meddelande på bussen. Den längsta accesstiden för noden kan också garanteras men kan<br />

givetvis inte bli kortare än tiden mellan två garanterade meddelanden, i det här fallet alltså tiden det<br />

tar att sända 6 meddelanden på bussen. Detta gäller endast för en nod, alla de övriga erhåller en längre<br />

garanterad accesstid, mer om accesstider för EDF i kap 7.2.<br />

Ju närmare tidpunkten för nodens deadline ju högre prioritet erhåller noden ifråga. Omedelbart före<br />

deadline, erhåller därför noden den högsta just då, på bussen, förekommande prioriteten och får sända.<br />

Teorin om Earliest Deadline First presenterades första gången 1973 i artikeln ”Scheduling Algorithms<br />

for Multiprogramming in a Hard-Real-Time Environment” av C. L. LIU, MIT Massachusetts Institute<br />

of Technology, och James W. Layland, California Institute of Technology [14]. Enligt artikeln ställs<br />

ett antal krav på systemet, nämligen att den högsta prioriteten delas ut till den nod som har närmast till<br />

deadline, att meddelandena är oberoende av varandra, att de sänds periodiskt samt att den totalt<br />

garanterade bandbredden Utot inte överstiger bussens maximala bandbredd, det vill säga:<br />

U tot = ∑U<br />

i ≤ 1 (1)<br />

i=<br />

A,<br />

B,<br />

C...<br />

Att vid varje tillfälle jämföra alla noders kvarvarande tid till deadline kräver antingen en central<br />

övervakning eller en hög upplösning i prioritetsangivningen. Det finns dessvärre varken utrymme för<br />

någon av dessa funktioner ombord på den satellit som skissas, det enda tillgängliga medel för att ändra<br />

prioriteten på meddelandena är en enda prioritetsbit i CAN-meddelandets ID-fält (se även kap. 7.2).<br />

Därmed uppfylls inte det första kravet för att EDF skall fungera. Det finns dock en metod som heter<br />

”Dual Priority Assignment” [15] som beskrivs i en artikel med samma namn, skriven av Alan Burns,<br />

University of York. Grundförutsättningarna för Dual Priority Assignment är desamma som för EDF,<br />

dock räcker det, enligt Burns, att n-1 noder i ett system innehållandes n noder kan växla mellan en<br />

standardprioritet och en högre prioritet, för att alla noder skall få sända i tid. Den n:te noden behöver<br />

endast en prioritet. Vidare finns det för varje system där (1) uppfylles minst en konfiguration, av<br />

kombinationer mellan grundprioriteter, högre prioriteter och när noden skall växla mellan dessa, där<br />

alla noderna får sända i tid. Vid höga garanterade laster, där U är nära ett, kan det dock vara svårt att<br />

finna denna kombination. Den rätta kombinationen kan dock bli betydligt enklare att finna om en<br />

periodicitet används där alla meddelanden kan sändas inom en periodtid, vars längd är en multipel av


Intern realtidskommunikation i framtida Svenska satelliter sid 34<br />

Martin Normark<br />

den minsta gemensamma nämnaren hos alla Ui. Om en nod avstår från att sända innebär detta i sig<br />

inget problem, det är däremot inte säkert att noden senare kan ta igen de missade sändtillfällena.<br />

Detta kan låta avskräckande men fördelarna med EDF är stora. Dels kan en större del av bandbredden<br />

scheduleras, med statisk prioritet går den högsta möjliga utnyttjandegraden mot U ≤ Ln2 ≈ 0,69 då<br />

många noder används [14] och dels kan eventuell överbliven bandbredd enkelt utnyttjas av övriga<br />

noder.<br />

7.2 Beskrivning av använd EDF-algoritm<br />

Alla noder erhåller en garanterad minsta tillgång Ui till den totala bussbandbredden enligt ovanstående<br />

resonemang. Därefter kontrolleras att den totalt garanterade bandbredden Utot inte överstiger 1.<br />

Som beskrivet i kapitel 5.1 om CAN-protokollet, använder sig CAN av ett 29 bitars ID-fält i början av<br />

varje meddelande. Dessa 29 bitar används dels för att identifiera meddelandetypen men även för att<br />

avgöra meddelandets prioritet. Vilken nod som får sända avgörs genom arbitrering där den nod med<br />

det lägsta binära värdet på de 29 ID-bitarna har högst prioritet och får sända först. D.v.s. ett<br />

meddelande med ID-fältet ”00101…” får sända före ett meddelande med ID-fältet ”01101…”.<br />

I Rymdbolagets satellit SMART-1 används ID-fältet enligt figur 7.1 nedan.<br />

Originator Destination Message type S P<br />

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />

Figur 7.1 ID-fältets utseende i SMART-1<br />

Som synes finns två bitar markerade med P respektive S. P står för ”paritetsbit” och skyddar resten av<br />

ID-fältet mot enkelbitsfel. S är en s.k. spare-bit, dvs den är reserverad för senare bruk. Denna spare-bit<br />

flyttas nu längst fram och används som en EDF-bit som går från 1 till 0 då den sändande noden<br />

kommer nära sin deadline. Nodens prioritet höjs alltså då den närmar sig deadline. Upplösningen blir<br />

dock inte så hög och det blir endast två prioritetsområden: hög och normal. Inom dessa gäller dock<br />

ordinarie prioritetsordning där den nod med högst tilldelad bandbredd också tilldelas högst prioritet.<br />

Det nya ID-fältet får således utseendet enligt figur 7.2 nedan:<br />

EDF Originator Destination Message type P<br />

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />

Figur 7.2 ID-fältets framtida utseende i STEAM<br />

-Metod för att avgöra huruvida deadline är nära: Noden/Meddelandetypen (varje nod kan ju sända<br />

flera meddelandetyper) förses med en räknare, vars initialvärde är lika med det inverterade värdet av<br />

Ui , i fallet nod A (där UA=1/6) i kap 7.1 blir initialvärdet alltså 6. Vid varje arbitrering, då noden<br />

försöker sända minskas värdet på räknaren med 1, varje gång arbitreringen lyckas ökas värdet på<br />

räknaren med initialvärdet. I samband med varje arbitrering jämförs värdet på räknaren med dess<br />

initialvärde; om värdet är mindre eller lika med initialvärdet sätts den första biten (EDF-Biten) i IDfältet<br />

till 0 (högprioområdet) annars till 1 (lågprio). Se även flödesschema, figur 7.3, nedan.


Intern realtidskommunikation i framtida Svenska satelliter sid 35<br />

Martin Normark<br />

Figur 7.3 Flödesschema för räknare i EDF<br />

-Garanterad Accesstid: Högsta värdet på räknaren begränsas till 2*initialvärdet i syfte att hålla ned<br />

den garanterade accesstiden. Då noden är garanterad att få sända senast då räknaren nått noll, blir<br />

således den högsta accesstiden, generellt, just tiden det tar att sända 2*initialvärdet st meddelanden.<br />

För Nod A, som har högre prioritet än B, i exemplet alltså maximalt tiden det tar för tolv meddelanden<br />

att sändas. Detta gäller dock generellt, för noder med hög ordinarie prioritet minskar accesstiden ända<br />

ned till 1*initialvärdet för den högst prioriterade noden. Med hänsyn tagen till detta sänks den<br />

garanterade accesstiden för nod A (UA=1/6) till 6 meddelandetidsrymder och för nod B (UB=1/8) till 9<br />

meddelandetidsrymder. Att det för nod B blir 9 tidsrymder beror på att nod A kommer att tränga sig<br />

före Nod B , vid ett och endast ett sändtillfälle, om de båda noderna befinner sig i respektive<br />

högprioritetsområde. På samma sätt kommer den garanterade accesstiden att fortsätta öka för de lägre<br />

prioriterade noderna. Detta gäller dock endast för periodiskt återkommande meddelanden. För<br />

meddelanden som sänds spontant kan den minsta accesstiden bli mycket komplex och tämligen lång.<br />

Aperiodiska meddelanden påverkar även de periodiska meddelandena med lägre prioritet om sådana<br />

finnes. För värdena ovan förutsätts även att bussen är ledig, om så inte är fallet tvingas den nod som<br />

önskar sända vänta intill dess det meddelande som sänds har sänts klart. Detta oavsett vilken prioritet<br />

de olika meddelandena har.<br />

-Överbliven bandbredd: Det är ju inte nödvändigtvis så att all tillgänglig bandbredd på bussen<br />

allokeras till noderna, det kan ju också tänkas att vissa noder avstår från att sända sin garanterade<br />

andel. Båda dessa fall leder till överbliven bandbredd. Denna bandbredd kan givetvis nyttjas av de<br />

noder som så önskar, dock kommer den nod med högst ordinarie prioritet få exklusiv rätt att nyttja<br />

den överblivna bandbredden, därefter erbjuds den i fallande prioritetsordning till lägre prioriterade<br />

noder. Med en högre upplösning i prioritetsförändringarna kan överbliven bandbredd fördelas mer<br />

”rättvist” mellan alla noder, detta är dock inte möjligt med endast en bits upplösning, som i<br />

Rymdbolagets fall.<br />

7.3 Mål med test<br />

Om EDF-funktionaliteten kan implementeras i CAN-controllern slipper CPU:n i varje nod ägna sig åt<br />

att räkna ut när och hur noden i fråga får sända, utan kan ägna sig åt viktigare saker. Vidare skall<br />

EDF-CAN-controllern ha samma gränssnitt som den ordinarie CAN-controllern mot CPU:n i syfte att<br />

nätverket skall kunna uppgraderas utan att övriga systemet byggs om.<br />

Målet med testet är med andra ord att utröna huruvida det är möjligt att komplettera en CANcontroller<br />

med med en EDF-funktion. Vidare skall testet visa om EDF-algoritmen fungerar i<br />

praktiken, hur stor plats funktionaliteten tar på en FPGA samt visa om gränssnittet mellen FPGA och<br />

övrig hårdvara behöver förändras eller inte.


Intern realtidskommunikation i framtida Svenska satelliter sid 36<br />

Martin Normark<br />

7.4 Simulering av CAN med EDF<br />

I syfte att visa att det är möjligt att det är möjligt att tillämpa EDF i ett CAN-nätverk skapas ett<br />

simuleringsprogram i C (se Appendix A). Programmet simulerar ett nätverk med 8 noder, nod A till<br />

nod H. Nod A har en garanterad bandbredd UA motsvarande 1/3 av total bandbredd, vilket med andra<br />

ord innebär att nod A får initialvärde 3 på sin räknare. För att förenkla hanteringen av grundprioriteten<br />

erhåller nod A grundprio=0 som är den högsta möjliga prioriteten, för de övriga noderna noderna<br />

stegas grundprioriteten upp med 1 för varje nod. Den garanterade bandbredden samt övrig data för<br />

samtliga noder är:<br />

UA=1/3. Grundprio=0. Initialvärde för räknare=3.<br />

UB=1/6. Grundprio=1. Initialvärde för räknare=6.<br />

UC=1/10. Grundprio=2. Initialvärde för räknare=10.<br />

UD=1/13. Grundprio=3. Initialvärde för räknare=13.<br />

UE=1/22. Grundprio=4. Initialvärde för räknare=22.<br />

UF=1/23. Grundprio=5. Initialvärde för räknare=23.<br />

UG=1/24. Grundprio=6. Initialvärde för räknare=24.<br />

UH=1/25. Grundprio=7. Initialvärde för räknare=25.<br />

Vilket ger<br />

U<br />

tot<br />

= ∑U<br />

i<br />

i=<br />

A,<br />

B,<br />

C...<br />

=<br />

0.<br />

848<br />

≤ 1<br />

Vilket uppfyller villkoret om maximalt garanterad bussbandbredd.<br />

Vid simuleringen testas tre varianter, den första där värdet på räknaren förhindras att anta värden<br />

högre än dubbla initialvärdet, en andra variant där värdet tillåts gå högre men där noden avstår från att<br />

sända då värdet på räknaren är dubbelt så högt som initialvärdet eller högre samt en tredje där 100<br />

procent av tillgänglig bussbandbredd garanteras.<br />

Syftet med de två första varianterna är dels att kontrollera om det ställer till problem då accesstiden<br />

begränsas (jfr kap 7.2) medelst en övre gräns för räknaren, respektive att studera hur tillgänglig<br />

bandbredd kan röra sig nedåt i hierarkin då de högst prioriterade noderna avstår från att sända.<br />

Simuleringen nedan visar på komplexiteten då U går mot 1. Där ändras värdena till:<br />

UA=1/3. Grundprio=0. Initialvärde för räknare=3.<br />

UB=1/5. Grundprio=1. Initialvärde för räknare=5.<br />

UC=1/6. Grundprio=2. Initialvärde för räknare=6.<br />

UD=1/11. Grundprio=3. Initialvärde för räknare=11.<br />

UE=1/13. Grundprio=4. Initialvärde för räknare=13.<br />

UF=1/22. Grundprio=5. Initialvärde för räknare=22.<br />

UG=1/23. Grundprio=6. Initialvärde för räknare=23.<br />

UH=1/24. Grundprio=7. Initialvärde för räknare=24.<br />

Vilket ger<br />

U<br />

tot<br />

= ∑U<br />

i<br />

i=<br />

A,<br />

B,<br />

C...<br />

=<br />

0.<br />

998<br />

Då prioriteterna tydligen inte är rätt ordnade noderna emellan blir resultatet av körningen ovan<br />

katastrofalt med totalt 897 missade deadlines efter 2000 sändomgångar. De missade sändningarna<br />

beror alltså på operiodicitet och ickeharmoniska perioder.<br />

≤ 1


Intern realtidskommunikation i framtida Svenska satelliter sid 37<br />

Martin Normark<br />

Med relativt små ändringar kan dock en lyckad konfiguration finnas, test nr 2 av samma simulering<br />

har värdena:<br />

UA=1/4. Grundprio=0. Initialvärde för räknare=4.<br />

UB=1/4. Grundprio=1. Initialvärde för räknare=4.<br />

UC=1/5. Grundprio=2. Initialvärde för räknare=5.<br />

UD=1/10. Grundprio=3. Initialvärde för räknare=10.<br />

UE=1/20. Grundprio=4. Initialvärde för räknare=20.<br />

UF=1/20. Grundprio=5. Initialvärde för räknare=20.<br />

UG=1/20. Grundprio=6. Initialvärde för räknare=20.<br />

UH=1/20. Grundprio=7. Initialvärde för räknare=20.<br />

Vilket ger<br />

U<br />

tot<br />

= ∑U<br />

i<br />

i=<br />

A,<br />

B,<br />

C...<br />

Med denna fördelning syns tydligt att sändningarna kommer att delas in i perioder om 20<br />

meddelanden inom vilka alla meddelanden kommer att kunna sändas. Simuleringen ger också ett gott<br />

resultat med inga missade deadlines. Detta trots att bussen nyttjas i en högre grad.<br />

Simuleringskörningarna, som finns utskrivna i Appendix A, visar att ingen nod missar sin deadline<br />

vid någon av tidigare beskrivna körningar om prioriteterna ställs in rätt mellan noderna. Simuleringen<br />

visar även att 100% av bussens kapacitet kan allokeras till noderna då all garanterad bandbredd kan<br />

användas av de noder som blivit tilldelad denna, vidare kan all övrig tillgänglig bandbredd som<br />

uppstår av att en nod inte utnyttjar sin tilldelade bandbredd eller inte är allokerad till någon nod,<br />

användas. Dock kommer de högst grundprioriterade noderna att få tillgång till detta extra utrymme på<br />

bussen i första hand.<br />

7.5 Implementation i VHDL<br />

Som CAN-controller används på Rymdbolaget en FPGA (Field Programmable Gate Array) i vilken<br />

BOSCH´s CAN-kärna tillsammans med, för övrig hård- och mjukvara, lämpliga skal, logik och<br />

gränsnitt programmerats. Alla dessa komponenter programmeras i VHDL (Very high speed integrated<br />

circuit (VHSIC) Hardware Description Language ). Vid programmeringen av tilläggen i den nya EDF-<br />

CAN-controllern sker de flesta förändringarna i den modul som Rymdbolaget kallar CAN-Shell.<br />

CAN-Shellet ligger som ett skal kring CAN-Kärnan, se fig 7.4, och hanterar input och output av<br />

kommandon och data till kärnan. CAN-Shellet utgör därför en bra plats för implementering av EDFtilläggen.<br />

Då den garanterade bandbreddstilldelningen är individuell för varje CAN-controller samt att<br />

denna kan komma att behöva ändras måste dock samtliga lager utanför CAN-Shellet designas om<br />

något för att tillåta transport av denna information från de fysiska pinnarna på FPGA´ns utsida in till<br />

CAN-Shellet.<br />

I denna rapport kommer av copyright-skäl endast de större förändringarna i CAN-Shellet att<br />

redovisas, det skall dock tilläggas att de redovisade förändringarna är de som i stora drag förändrar<br />

karaktäristika hos CAN-controllern.<br />

= 1


Intern realtidskommunikation i framtida Svenska satelliter sid 38<br />

Martin Normark<br />

Figur 7.4 Delar av CAN-Shellet.<br />

Figur 7.5 Transmission_State_Machine ombyggd för EDF<br />

7.6 Simulering av funktion hos kod skriven i VHDL<br />

Rymdbolaget tog i samband med utvecklingen av SMART-1 fram en testbänk vars syfte var att testa<br />

funktionaliteten hos CAN-Shellet. Även testbänken är skriven i VHDL och körs tillsammans med<br />

koden för CAN-Shellet i simuleringsprogrammet Modelsim PE. Efter att testbänken modifierats för


Intern realtidskommunikation i framtida Svenska satelliter sid 39<br />

Martin Normark<br />

att passa EDF-CAN-controldesignen kördes samtliga tester med lyckat resultat. Dessutom skapades<br />

nya tester (test 5.1 och test 6.1) vars syfte var att testa funktionen hos initialvärdet (här kallat ”PRIO”),<br />

räknaren (”counter”) och EDF-ID-biten (här kallat”ID_bit_28”). VHDL-koden för testerna 5.1 och 6.1<br />

finns återgivna i Appendix D.<br />

Test 6.1<br />

Nedan (fig 7.6 och 7.7) visas urklipp ur testet 6.1 där CAN-Shellets beteende vid övergång från<br />

nodens lågprio- till högrio-område testas:<br />

Figur 7.6 Simulering av CAN-Shell<br />

• Vid tiden 59300 ns laddas samtliga ID-, Kontroll- och databitar från CAN-Shellet till CAN-<br />

Kärnan i och med att signalen ”load_shift_reg_int” går hög. Observera att vid detta tillfälle är<br />

EDF-biten (”ID_bit_28”) hög vilket innebär att noden jobbar i sitt lågprio-område. Detta<br />

illustreras även med att ”send_identfiier” har värdet ”1000011…”.<br />

• En klockcykel senare vid tiden 59450 beordras CAN-Kärnan, medelst ”tx_request” =1, att<br />

försöka sända det nyss laddade meddelandet på CAN-bussen.<br />

• Vid tiden 60200 är bussen ledig och CAN-Kärnan går ut och arbitrerar på CAN-bussen. Detta<br />

indikeras med att insignalen ”transmitter” sätts hög av CAN-Kärnan.<br />

• ”transmitter” =1 triggar CAN-Shellet att byta state till ”cur_state” = ”0010” –<br />

”Sending_or_Receiving”. Detta leder till att räknaren, ”counter”, räknas ned ett steg till<br />

”0001100b”. Observera att räknarens värde numera överensstämmer med initialvärdets (”PRIO”)<br />

”01100b”


Intern realtidskommunikation i framtida Svenska satelliter sid 40<br />

Martin Normark<br />

Figur 7.7 Simulering av CAN-Shell. Vid tiden 62050 går noden in i sitt<br />

högprio-område<br />

• Vid tiden 62050 ns går ”transmitter” låg vilket innebär att CAN-Kärnan förlorat arbitreringen.<br />

Vid samma tillfälle jämförs också värdet för ”counter” och ”PRIO”, då dessa numera har samma<br />

värde går ”ID_bit_28” låg. Därmed går noden in i sitt högprio-område enligt EDF-algoritmen<br />

(kap 7.2).<br />

• Vid tiden 62100 ändras därför ”send_identifier” till ”0000011…”.<br />

• Därefter påbörjas en ny sändcykel där samma meddelande sänds om. Numera dock med den<br />

högre prioriteten.<br />

Test 6.1 får därmed betraktas som lyckat.<br />

Test 5.1<br />

I test 5.1 testas CAN-Shellets beteende vid en vunnen arbitrering där meddelandet sänds iväg på<br />

bussen. Nedan (Fig 7.8) visas ett urklipp även ur detta test.


Intern realtidskommunikation i framtida Svenska satelliter sid 41<br />

Martin Normark<br />

Figur 7.8 Vid tiden 11100 ns går noden in i sitt lågprio-område<br />

• Vid urklippets början (10250 ns) har CAN-kärnan redan beordrats att sända iväg ett meddelande<br />

(jfr Fig 7.8 ovan). Noden var då i sitt högprio-område och befinner sig i state ”0010” –”<br />

Sending_or_Receiving ” och väntar på besked från CAN-kärnan som skall tillkännage huruvida<br />

arbitreringen vunnits eller förlorats.<br />

• Vid tiden 10600 ns meddelar CAN-kärnan genom att sätta signalen ”tx-complete” hög att<br />

arbitreringen vunnits samt att meddelandet är sänt.<br />

• CAN-Shellet byter state till ”0100” –”Counter_addition” där räknarens (”counter”) värde räknas<br />

upp (jfr EDF-algoritm kap 7.2) med initialvärdets (”PRIO”). Räknarens nya värde blir därför<br />

0001010b + 01100b = 0010110b.<br />

• Vid tiden 11100 ns leder detta till att att ”ID_bit_28” går hög och noden går in i sitt lågprioområde.<br />

• Detta bekräftas vid tiden 11150 ns genom att ”send_identifier” ändras till ”0000011…”.<br />

• Därefter är CAN-Shellet redo att sända ett nytt meddelande.<br />

Även Test 5.1 får därmed betraktas som godkänt.<br />

7.7 Produktion av Testhårdvara implementerat i en FPGA<br />

Vid produktion av FPGA måste VHDL-koden koden syntiseras till nätlistor, nätlistorna sättas ihop<br />

(merge), en chipdesign skapas och integreras med en beskrivning av FPGA´ns fysiska pinnplaceringar<br />

och slutligen brännas ned i en tom FPGA.<br />

Syntetisering:<br />

När VHDL-koden är testad och befunnits kodkänd kan syntetisering av hårdvaran ske. Syntetisering<br />

innebär att en koden kompileras och en nätlista över alla ledningar och grindar skapas. Till detta<br />

används i detta projekt programmet Synplify 7.0.


Intern realtidskommunikation i framtida Svenska satelliter sid 42<br />

Martin Normark<br />

De moduler som syntiseras är:<br />

CAN-Core innehåller CAN-Kärnan, designad av BOSCH<br />

CAN-Shell servar kärnan med kommandon, data och EDF-logik för sändning, omsändning och<br />

mottagning<br />

CAN-Shell-int Kopplar ihop de två ovanstående modulerna<br />

GRWRTU Innehåller logik för Gyro Reaction Wheel Real Time Unit meddelanden.<br />

GRWRTU_Can Kopplar ihop samtliga ovanstående moduler och utgör gränssnitt mot de fysiska<br />

pinnarna på FPGA´n.<br />

Mergning:<br />

De syntiserade modulerna slås ihop med hjälp av ett program som heter Merge. ”Mergningen”<br />

innebär att nätlistorna sätts ihop till en stor lista som beskriver hela chiparkitekturen.<br />

Nätlistorna sätts ihop i följande ordning:<br />

CAN-Core + CAN-Shell + CAN-Shell-int => CAN-Shell-int_merged<br />

CAN-Shell-int_merged + GRWRTU + GRWRTU_can => GRWRTU_can_merged<br />

Design av hårdvaran:<br />

Hårdvaran designas i ett program avsett för aktuell chiptyp, i det fallet ACTEL Designer v. 4. I<br />

designern placeras de fysiska grindarna och ledningarna på så sätt att dragning av dessa blir möjlig,<br />

dessutom optimeras chipets egenskaper på så sätt som önskas, idet här fallet för storlek. Detta är<br />

nödvändigt då ytterligare logik är tillförd varför det annars inte får plats på chipets yta. Detta medför<br />

dessvärre att designen inte är lämpat för rymdbruk då denna optimering ökar risken för problem<br />

orsakade av strålning (jfr kap 4.5.2).<br />

Utöver detta kopplas alla signaler ihop med de pinnar som finns beskrivna i pin-filen. Samma pin-fil<br />

används till EDF-CAN-chipet som till det ordinarie chipet, använt i SMART-1. Detta medför att EDF-<br />

CAN-chipet kan testas och användas i befintlig testhårdvara framtagen vid utvecklingen av SMART-1.<br />

Chipdesignen är en omfattande process och kräver mycket datakraft, med en modern PC tar<br />

processen, som är automatisk då den väl startats, ca 2 timmar i anspråk.<br />

Bränning av FPGA:<br />

Då designen är klar kan logiken slutligen brännas ned på en FPGA.. Detta sker med hjälp av såväl<br />

hård- som mjukvara från ACTEL.<br />

FPGA´n som används heter ACTEL A54SX32PQ208 och är en vanlig, kommersiell, kiselkrets, ej<br />

lämpad för rymdbruk. De chip som används i rymden är 50-100 gånger dyrare och används därför inte<br />

vid prototyptillverkning och tester.<br />

FPGA´n innehåller 20 000 st vippor och en stor mängd ledningar mellan dessa. Genom att belasta<br />

dessa ledningar med högre strömmar än de nominella bränns de oönskade ledningarna bort, varefter<br />

endast de önskade ledningarna kvarstår. Om brännprocessen lyckas, vilken den oftast gör, och<br />

designen är rätt erhålles därefter ett chip med den logik som designern skapat.<br />

Bränningen är irreversibel, d.v.s. efter att bränning är genomförd kan chipegenskaperna inte förändras<br />

igen. Detta innebär att om chipets egenskaper behöver ändras, exempelvis efter ett mindre lyckat test,<br />

måste alla moment fr.o.m. implementation i VHDL (kap 7.5) göras om.<br />

7.8 Test av FPGA<br />

Vid test av EDF-CAN-controllern används en testrigg bestående av:<br />

• Controllerkort till SMART-1 styrt via JTAG från en PC. Detta är en kopia på SMART-1´s<br />

huvuddator. Controllerkortet är utrustat med sin ordinarie CAN-controller.<br />

• Ett GRWRTU-kort från SMART-1 utrustat med ett ordinarie CAN-Controllerchip och ett EDF-<br />

CAN-controllerchip. GRWRTU-kortet innehåller en nominell arkitektur och en i stort sett<br />

identisk redundant del. Vid test hålls båda delarna aktiva, vilket förklarar varför två CANcontrollers<br />

finns på samma kort.<br />

• Ett oscilloscope som lyssnar på bussen samt på sändpinnen på EDF-CAN-controllern.<br />

• Samt en test-PC med avlyssnar/sändarutrustning anpassad för tester på SMART-1, bestående av<br />

en PC med ett CAN-kort, som utgör en egen nod i nätverket.<br />

Totalt finns alltså 4 noder i testnätverket varav 1 utgörs av en ny EDF-CAN-controller.


Intern realtidskommunikation i framtida Svenska satelliter sid 43<br />

Martin Normark<br />

Som synes förekommer i stort sett enbart utrustning designad för SMART-1. Detta innebär vissa<br />

komplikationer, dels måste EDF-CAN-controllern anpassas så att den förstår SMART-1´s ordinarie<br />

ID-fält och sänder meddelanden som har relevans för testutrustningen. Dessutom måste en förståelse<br />

för SMART-1´s användning av ID-fälten skapas i syfte att förstå hur resultaten skall tolkas.<br />

Tabellen nedan visar hur ID-fältet används i SMART-1 [2]<br />

Bit No of bits Function Note<br />

ID28 - ID24 5 Originator<br />

ID23 – ID9 15 Destination<br />

ID8 – ID2 7 Message Type<br />

ID1 1 Spare bit = 1<br />

ID0 1 ID field destination<br />

sub-field (ID23-ID9)<br />

parity bit<br />

En del av de avsändare (Originators) som förekommer i SMART-1 är följande:<br />

Addresses<br />

ID28-ID24<br />

Node abbr. Node name<br />

Even parity = number<br />

of ones even<br />

00000 CON1 Spacecraft controller<br />

00001 CON2<br />

00010 GRWRTU1 Gyro/reaction wheel remote terminal unit<br />

00011 GRWRTU2<br />

…<br />

…<br />

För testet ovidkommande adresser mellan 00100-<br />

01111<br />

10000 PCDU1 Power control and distribution unit<br />

10001 PCDU2<br />

10010 PCDU3<br />

En del av de i SMART-1 förekommande mottagare, där en nolla i destinationsbiten adresserar noden<br />

ifråga:<br />

Destination bit Node name Node type<br />

ID23 CON1 and CON 2 Bus master<br />

ID22 GRWRTU1 AOCS<br />

ID21 GRWRTU2 AOCS<br />

… ID 20-ID 11 är för testet<br />

… ointressanta mottagare<br />

ID12 TMTC1 and TMTC2 TMTC<br />

ID11 PCDU1 Power<br />

ID10 PCDU2 Power<br />

ID9 PCDU3 Power<br />

Ett meddelande med godtyckligt innehåll från CON2 till GRWRTU1 och PCDU1 skulle därför ha<br />

följande utseende:<br />

Originator Destination Message type S P<br />

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />

0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 X X X X X X X 1 1


Intern realtidskommunikation i framtida Svenska satelliter sid 44<br />

Martin Normark<br />

I ett EDF-CAN-meddelande har ju dock, som tidigare beskrivet i kap 7.2, spare-biten tagits bort och<br />

ersatts av EDF-biten som flyttats till Bit 28. Motsvarande EDF-meddelande får därför följande<br />

utseende:<br />

EDF Originator Destination Message type P<br />

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />

X 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 X X X X X X X 1<br />

Där EDF-biten är en nolla då noden befinner sig i sitt högprio-område och en etta då den befinner sig i<br />

sitt lågprio-område.<br />

En CAN-nod i Smart-1, liksom de som används i testutrustningen, skulle dock uppfatta meddelandet<br />

som antingen ursprunget från CON1, vid högprio-mode, eller från PCDU1 vi lågprio-mode. Resten av<br />

ID-fältet skulle också uppfattas fel, sannolikt skulle pariteten bli vanställd och meddelandet kastas<br />

bort. Därför specialtillverkas en EDF-CAN-controller där bit 28 fortfarande utgör EDF-bit, bit 27-24<br />

är satta till noll och bitarna 23-0 har samma egenskaper som i övriga ID-fält förekommande i<br />

SMART-1. Initialvärdet hos EDF-CAN-controllerns räknare är satt till 4. Därmed kan EDF-CANchipet<br />

kommunicera med de andra noderna i testnätverket.<br />

7.8.1 Testprocedur<br />

EDF-CAN-controllern testas enligt följande testschema:<br />

Testnr Beskrivning av test Förväntad respons<br />

1 Ett godtyckligt meddelande skickas iväg<br />

på bussen från test-PC´n.<br />

2 Meddelandet RIBUS* sänds, av test-<br />

PC´n, periodiskt (1 gång per sekund) på<br />

den nominella bussen. Avsändare: CON1<br />

3 PING** skickas till GRWRTU1 från test-<br />

PC´n. Avsändare: CON1<br />

4*** Kontroll att EDF-CAN-controllern går<br />

från hög- till lågprio-område. POLL-<br />

GRWRTU**** sänds från test-PC´n med<br />

avsändare CON1<br />

5 Kontroll att EDF-CAN-controllern går<br />

från låg- till högprio-område. Ingen<br />

åtgärd; GRWRTU-noderna är redan<br />

engagerade i att besvara POLLen från test<br />

4.<br />

6 Samma som test 1, dock sänder<br />

Controllerkortet till SMART-1 ständigt<br />

meddelanden med avsändare CON2 på<br />

bussen. Bussen fylls till 100%.<br />

Meddelandet har ingen destination.<br />

7 Samma som test 2, dock sänder<br />

Controllerkortet till SMART-1 ständigt<br />

meddelanden med avsändare CON2 på<br />

EDF-CAN-controllern sänder en ACKnoledgebit<br />

vid rätt tillfälle.<br />

EDF-CAN-controllern uppfattar meddelandet<br />

och stannar kvar på den nominella bussen.<br />

EDF-CAN-controllern besvarar PINGet, dock<br />

torde avsändaren tolkas som CON1 eller<br />

PCDU1.<br />

EDF-CAN-controllern svarar som CON1, går<br />

därefter in i lågprio område. Där förloras<br />

arbitreringen mot GRWRTU1 som svarar 3<br />

gånger…<br />

…varefter EDF-CAN-controllern åter går in i<br />

sitt högprio-område och vinner arbitreringen<br />

med ett, och endast ett, meddelande från<br />

CON1. EDF-CAN-controllern går därefter<br />

återigen in i sitt lågprio-område varvid<br />

GRWRTU1 sänder 3 meddelanden. Följt av<br />

CON1 och GRWRTU1 med sina 2 sista<br />

meddelanden. Slutligen sänder EDF-CANcontrollern<br />

sina sista 5 meddelanden, varav ett<br />

som CON1 och därefter som avsändare<br />

PCDU1 då controllern är i sitt lågprio-område.<br />

EDF-CAN-controllern sänder ACKnoledgebitar<br />

vid rätt tillfälle, vid varje meddelande.<br />

EDF-CAN-controllern uppfattar RIBUSmeddelandet<br />

och stannar kvar på den nominella<br />

bussen.


Intern realtidskommunikation i framtida Svenska satelliter sid 45<br />

Martin Normark<br />

bussen. Bussen fylls till 100%.<br />

Meddelandet har ingen destination.<br />

8 Samma som test 3, dock sänder<br />

Controllerkortet till SMART-1 ständigt<br />

meddelanden med avsändare CON2 på<br />

bussen. Bussen fylls till 100%.<br />

Meddelandet har ingen destination.<br />

9 Samma som test 4, dock sänder<br />

Controllerkortet till SMART-1 ständigt<br />

meddelanden med avsändare CON2 på<br />

bussen. Bussen fylls till 100%.<br />

Meddelandet har ingen destination.<br />

10 Samma som test 5, dock sänder<br />

Controllerkortet till SMART-1 ständigt<br />

meddelanden med avsändare CON2 på<br />

bussen. Bussen fylls till 100%.<br />

Meddelandet har ingen destination.<br />

EDF-CAN-controllern besvarar PINGet, som<br />

CON1<br />

EDF-CAN-controllern svarar som CON1, går<br />

därefter in i lågprio-område. Där förloras<br />

arbitreringen mot Controllerkortet för SMART-<br />

1 som sänder 3 gånger…<br />

EDF-CAN-controllern går in i sitt högprioområde<br />

och sänder ytterligare ett meddelande<br />

som CON1. Detta beteende fortsätter cykliskt<br />

intill dess att CON1 sänt 8 meddelanden.<br />

GRWRTU1 kommer inte in med sina<br />

meddelanden förrän controllerkortets<br />

sändningar som CON2 avbryts.<br />

* RIBUS= RIght BUS. Ett meddelande som i SMART-1-sytemet sänds av controllern varje sekund<br />

och upplyser RTU-noderna att de lyssnar på rätt buss. Upffattas inget RIBUS inom 4 sekunder byter<br />

noden buss till den redundanta CAN-bussen.<br />

** PING är ett meddelande som beordrar samtliga noder att svara som ett bekräftande att de är<br />

operativa.<br />

*** Inför test nr 4 startas GRWRTU-noden om i syfte att sätta räknaren i sitt initialvärde.<br />

**** . POLL-GRWRTU beordrar GRWRTU-noden att sända data om nodens status. Datat uppgår till<br />

8 st CAN-meddelanden. Under testet är såväl GRWRTU1 och GRWRTU2 aktiverade varför båda<br />

försöker svara. GRWRTU2 är dock utrustad med ett EDF-CAN-controllerkort och kommer därför att<br />

identifiera sig som CON1 eller PCDU1.<br />

7.8.2 Testresultat<br />

Testnr Respons Godkänt/icke godkänt<br />

Kommentarer<br />

1 EDF-CAN-controllern ACKar samtliga meddelanden Godkänt<br />

2 EDF-CAN-controllern stannar kvar på bussen intill dess att RIBUS<br />

meddelandena upphör då noden efter fyra sekunder byter buss<br />

Godkänt<br />

3 EDF-CAN-controllern besvarar pinget som CON1 eller PCDU1. Godkänt<br />

4 EDF-CAN-controllern svarar som CON1 och går sedan in i låg- Godkänt såtillvida att EDFpriomode<br />

där tillåts dock GRWRTU sända 4 gånger i stället för CAN-controllern faktiskt går<br />

förväntade 3 gånger. Se även fig. 7.9<br />

in i sitt låg-prioområde, dock<br />

beter sig inte räknaren som<br />

förväntat.<br />

5 EDF-CAN-controllern går åter in i sitt hög-prioområde. Fortsätter Godkänt. Se dock kommentar<br />

dock att bete sig enligt kommentar i test 4.<br />

ovan.<br />

6 EDF-CAN-controllern ACKar samtliga meddelanden Godkänt<br />

7 EDF-CAN-controllern stannar kvar på bussen intill dess att RIBUS<br />

meddelandena upphör då noden efter fyra sekunder byter buss<br />

Godkänt<br />

8 EDF-CAN-controllern besvarar pinget som CON1 Godkänt<br />

9 EDF-CAN-controllern svarar som CON1 och går sedan in i låg- Godkänt, se dock kommentar<br />

priomode där tillåts dock controllerkortet sända 4 gånger i stället för<br />

förväntade 3 gånger. Se även diagram i fig. 7.10<br />

test 4.<br />

10 EDF-CAN-controllern går åter in i sitt hög-prioområde, där den Godkänt, se dock kommentar<br />

sänder ett meddelande som CON1. Därefter sänder den var femte,<br />

istället för förväntade var fjärde, meddelande intill dess att samtliga<br />

åtta meddelanden sänts. Då controllerkortets sändningar avbryts<br />

sänder GRWRTU1 sina 8 meddelanden i tät följd.<br />

test 4.


Intern realtidskommunikation i framtida Svenska satelliter sid 46<br />

Martin Normark<br />

Figur 7.9 EDF-CAN-controllern sänder ett meddelande som CON1 varje<br />

gång den går in i sitt högprio-område.<br />

Figur 7.10 Bussen är helt fylld med meddelanden (övre<br />

diagrammet), dock kommer EDF-CAN-controllern (undre<br />

grafen) in vid var femte meddelande. Det syns tydligt att EDF-<br />

CAN-controllern ACKar samtliga meddelanden.


Intern realtidskommunikation i framtida Svenska satelliter sid 47<br />

Martin Normark<br />

Testerna visar tydligt att CAN-kärnan i EDF-CAN-controllern är operativ samt att gränssnittet mot<br />

GRWRTU-kortet fungerar tillfredställande. Vidare visar testet att det är möjligt att ” i farten” ändra<br />

prioritet på meddelandet, något som inte är möjligt med alla kommersiella CAN-controllers.<br />

Dock sker förändringen av prioriteten senare än tidigare simuleringar visat. Anledningen till detta är<br />

ännu okänd men skulle kunna ha sitt ursprung i att den nya prioriteten helt enkelt inte hinner laddas in<br />

i eller att koden i blocket ” Sending_or_Receiving ” i VHDL-koden inte exekveras på så sätt som<br />

önskas och därför inte räknar ned räknaren de gånger som arbitreringen vinns.


Intern realtidskommunikation i framtida Svenska satelliter sid 48<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 49<br />

Martin Normark<br />

8 Resultat<br />

Resultaten från den här utredningen kan delas upp i två delar:<br />

8.1 Rekommenderat nätverk i framtida satelliter<br />

FlexRay är det enda nätverk som både bedöms bli ett godkänt X-by-wire nätverk [20] och är<br />

tillräckligt flexibelt för att passa i Rymdbolagets satelliter[18]. FlexRay uppfyller dessutom så gott<br />

som alla krav som Rymdbolaget ställer på ett framtida nätverk. De kraven som inte uppfylls är att<br />

nätverket inte bedöms kommersialiseras förrän tidigast 2004 och därför av naturliga skäl inte heller<br />

idag har någon spridning bland användare. Dock väntas nätverket bli ordentligt spritt och väl använt<br />

då stora bolag som t.ex. BMW, DaimlerChrysler, BOSCH och General Motors alla ger sitt stöd till<br />

nätverksstandarden.<br />

FlexRay rekommenderas därför som framtida nätverk, dock måste innan FlexRay används en<br />

utvärdering beträffande dess verkliga förmåga och spridning i praktiken genomföras. Det är med<br />

andra ord knappast sannolikt att FlexRay kan ingå i något tillverkningsprojekt före 2006.<br />

TTP/C har efter tester genomförda av SP, även det visat sig vara ett mycket tillförlitligt nätverk [20],<br />

dock lämpar sig TTP/C mindre väl för användning av Rymdbolaget i dess satelliter [18]. Den<br />

huvudsakliga anledningen till det är TTP/C´s TDMA som bedöms alltför inflexibelt.<br />

Fram till dess bör därför CAN fortsätta att användas. Anledningarna till att CAN bör användas även i<br />

den närmaste framtiden är att en stor del av tidigare design kan återanvändas, varför det sannolikt kan<br />

bli både säkrare och billigare än andra, aldrig av Rymdbolaget använda, koncept. Vid sidan av detta<br />

finns det inga tecken på en omedelbar mycket stor förändring i mängden information som skall<br />

spridas i näten. Möjligen kan tänkas ett stort informationsflöde mellan ett instrument och en dator men<br />

detta kan i sådana fall lösas med en informationslänk mellan dessa två enheter. CAN-bussen bör dock,<br />

om så är möjligt, kompletteras med tidsdistribution, bättre bevakning mot babbling idiots och ett<br />

system för att bättre utnyttja tillgänglig bandbredd samtidigt som de viktigaste meddelandena får<br />

sändas först. Det senare skulle kunna lösas med s.k. EDF (Earliest Deadline First).<br />

Ett annat tekniskt bra sätt att uppgradera CAN-bussen kan vara att byta ut den mot TTCAN. Dock<br />

bedöms den ekonomiska och tidsmässiga kostnaden alltför stor i förhållande till de tekniska<br />

förbättringar som de facto erhålles vid en dylik uppgradering.<br />

Vid sidan om de rekommenderade nätverken har framkommit att såväl USB som Spacewire kan<br />

utgöra mycket kraftfulla kommunikationslänkar mellan två noder. Där den stora fördelen med USB är<br />

dess stora kommersiella spridning, medan det som talar för Spacewire är att rymdkretsar redan finns<br />

framtagna samt också finns integrerade med diverse komponenter, såsom DSP´s, Kameror och<br />

massminnen, som används i rymdsammanhang.<br />

8.2 Test av förbättrad CAN-buss<br />

Efter dialog med Gunnar Andersson på Rymdbolaget bestämdes att försök med att utveckla en CANbuss<br />

med EDF (Earliest Deadline First) skulle genomföras. Försöken kan delas upp i tre delmoment:<br />

8.2.1 Simulering av EDF-CAN-buss<br />

Simuleringskörningarna, som finns utskrivna i Appendix A, visar att ingen nod missar sin deadline<br />

vid någon av tidigare beskrivna körningar. Simuleringen visar vidare att all garanterad bandbredd kan<br />

användas av de noder som blivit tilldelad denna, vidare kan all övrig tillgänglig bandbredd som<br />

uppstår av att en nod inte utnyttjar sin tilldelade bandbredd eller inte är allokerad till någon nod,<br />

användas. Dock kommer de högst grundprioriterade noderna att få tillgång till detta extra utrymme på<br />

bussen i första hand.<br />

Nedan visas en sammanställning av resultatet från en simuleringskörning där noderna hela tiden sände<br />

så mycket de kunde:


Intern realtidskommunikation i framtida Svenska satelliter sid 50<br />

Martin Normark<br />

number of transmissions rounds: 6360<br />

node 0: 0.485 used bandwidth, 0.333 guaranteed bandwidth<br />

node 1: 0.167 used bandwidth, 0.167 guaranteed bandwidth<br />

node 2: 0.100 used bandwidth, 0.100 guaranteed bandwidth<br />

node 3: 0.077 used bandwidth, 0.077 guaranteed bandwidth<br />

node 4: 0.046 used bandwidth, 0.045 guaranteed bandwidth<br />

node 5: 0.044 used bandwidth, 0.043 guaranteed bandwidth<br />

node 6: 0.042 used bandwidth, 0.042 guaranteed bandwidth<br />

node 7: 0.040 used bandwidth, 0.040 guaranteed bandwidth<br />

guaranteed bus utilisation = 0.848<br />

actual bus utilisation = 1.000<br />

number of missed deadlines 0<br />

Vidare en sammanställning av resultatet från en simuleringskörning där noder ibland avstod från att<br />

sända då de blev erbjudna mer bandbredd utöver den garanterade.<br />

number of transmissions rounds: 8273<br />

node 0: 0.412 used bandwidth, 0.333 guaranteed bandwidth<br />

node 1: 0.240 used bandwidth, 0.167 guaranteed bandwidth<br />

node 2: 0.100 used bandwidth, 0.100 guaranteed bandwidth<br />

node 3: 0.077 used bandwidth, 0.077 guaranteed bandwidth<br />

node 4: 0.046 used bandwidth, 0.045 guaranteed bandwidth<br />

node 5: 0.044 used bandwidth, 0.043 guaranteed bandwidth<br />

node 6: 0.042 used bandwidth, 0.042 guaranteed bandwidth<br />

node 7: 0.040 used bandwidth, 0.040 guaranteed bandwidth<br />

guaranteed bus utilisation = 0.848<br />

actual bus utilisation = 1.000<br />

number of missed deadlines 0<br />

Simuleringarna visar att det är möjligt att använda EDF i ett CAN-nätverk och att genom att endast<br />

dedicera en bit från ID-fältet få tillräcklig upplösning för att alla noder skall hinna sända innan dess<br />

deadline nåtts. Simuleringen visar vidare att överbliven bandbredd fördelas, nedåt genom hierarkien,<br />

på så sätt att den nod som har högst prioritet först får chansen att nyttja den.<br />

8.2.2 Simulering av funktion hos EDF-CAN-Shellet<br />

Det nya EDF-CAN-shellet testades först i Rymdbolagets testbänk för CAN-Shell, skriven i VHDL.<br />

Simuleringsprogrammet som användes var Modelsim PE. Samtliga av Rymdbolagets tester lyckades.<br />

Därefter kompletterades testbänken med ytterligare tester, test 5.1 samt test 6.1, vars uppgift är att<br />

kontrollera att räknaren och EDF-priobiten i ID-fältet uppförde sig som de skulle, se även kap 7.6.<br />

Simuleringen visar att det är möjligt att integrera en EDF-funktion i Rymdbolagets CAN-Shell.<br />

Simuleringen visar dessutom att EDF-shellet är rätt programmerat såtillvida att räknare och EDF-IDbiten<br />

beter sig som den skall då noden vinner resp. förlorar en arbitrering och därmed på ett<br />

tillfredsställande sätt växlar mellan låg- och hög-prioområde.<br />

Test 5.1 och Test 6.1 finns återgivna i sin helhet i Appendix D<br />

8.2.3 Test av EDF-CAN-controller implementerad i FPGA<br />

Testerna, som finns beskrivna i kap. 7.8, visar tydligt att CAN-kärnan i EDF-CAN-controllern är<br />

operativ samt att gränssnittet mot GRWRTU-kortet fungerar tillfredsställande. Vidare visar testet att<br />

det är möjligt att ” i farten” ändra prioritet på meddelandet. Dock sker ändringen av prioriteten upp till<br />

nodens hög-prioområde ett meddelande senare än tidigare simuleringar visat. Vilket får till följd att<br />

EDF-noden endast sänder var femte meddelande istället för var fjärde. Anledningen till detta är ännu<br />

okänd men skulle kunna ha sitt ursprung i att den nya prioriteten helt enkelt inte hinner laddas in i<br />

eller att koden i blocket ”Tranceiver_or_receiver” i VHDL-koden inte exekveras på så sätt som önskas<br />

och därför inte räknar ned räknaren de gånger som arbitreringen vinns. Detta ses dock inte som något<br />

större problem utan kan lösas med lite traditionell debuggning, något som dock inte är aktuellt för<br />

denna prototypcontroller.


Intern realtidskommunikation i framtida Svenska satelliter sid 51<br />

Martin Normark<br />

9 Slutsats<br />

CAN-bussen, på det sätt den används i SMART-1, är inte idealisk i en framtida satellit. Anledningen<br />

till detta är dels att bandbredden är begränsad till 1Mbps men framför allt därför att CAN-bussen<br />

saknar teknik för att hantera bortfallna noder, noder som stör ut bussen, s.k. babbling idiots, på olika<br />

sätt samt teknik för synkronisering av noderna ingående i nätverket. Avsaknaden av inbyggt stöd för<br />

tidssynkronisering leder till att en separat kommunikationsväg för tidssynkronisering användas på<br />

SMART-1, vilket tar upp onödig vikt och datakraft. Avsaknad av teknik för att hantera babbling idiots<br />

kan i värsta fall leda till systemkollaps där inga i satelliten ingående noder kan kommunicera med<br />

varandra.<br />

Ett framtida nätverk skulle kunna utgöras av FlexRay, ett nytt nätverk med stort stöd från bilindustrin.<br />

FlexRay hanterar ovanstående problem på ett säkert sätt, så säkert att det bedöms bli ett av de första<br />

nätverk i världen som godkänns för säkerhetskritiska X-by-wire applikationer. Säkerheten till trots är<br />

FlexRay, till skillnad från andra lika säkra nätverk, tillräckligt flexibelt för att passa i en satellit<br />

tillverkad av Rymdbolaget. FlexRay uppfyller Rymdbolagets alla tekniska krav på ett framtida<br />

nätverk men är dock inte färdigutvecklat för kommersiell användning ännu. Tidigast år 2004 beräknas<br />

FlexRay ha nått dit. Därefter återstår att återigen utvärdera FlexRay innan det kan komma till bruk<br />

inom Rymdbolaget.<br />

Fram till dess framstår CAN-bussen som det bästa alternativet, då om möjligt med förstärkt skydd mot<br />

babbling idiots, tidssynkronisering och gärna EDF.<br />

EDF, Earliest Deadline First, är en metod där det meddelande som mest skyndsamt måste levereras<br />

vid varje tillfälle erhåller högst prioritet på bussen. Dessutom har EDF de fördelarna att alla noder kan<br />

garanteras en viss andel an bussens totala kapacitet med en garanterad maximal fördröjning. EDF är<br />

möjligt att använda i ett CAN-nätverk. Det är dessutom möjligt att integrera i Rymdbolagets CANcontroller,<br />

vilket leder till att EDF kan användas utan förändringar i datorerna och gränssnitten hos<br />

satelliten. Detta visas genom framgångsrika datasimuleringar samt produktion av en fungerande<br />

prototyp-CAN-controller med EDF.


Intern realtidskommunikation i framtida Svenska satelliter sid 52<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 53<br />

Martin Normark<br />

10 Diskussion och möjligheter för framtida utredningar<br />

I efterhand frågar jag mig gärna varför inte fler, eller ibland också andra, nätverk studerades. Svaret är<br />

helt enkelt, och riktigt, att tiden inte bedömdes räcka till, respektive okunnighet från min sida då<br />

projektet startades och nätverken valdes. Några av de nätverk som hade varit intressanta att studera är<br />

ju TCP/IP, tänk själv att enkelt kunna accessa satelliten från Internet, med intressanta<br />

tillförlitlighetsjämförelser mot TTP/och FlexRay men även Firewire som kunnats jämföras mot såväl<br />

USB som Spacewire. Firewire hade varit extra intressant då Honeywell i dagarna släppt en ny<br />

strålningstålig krets för just Firewire. Vad som heller inte framgår av rapporten är det formidabla krig<br />

som pågår mellan FlexRay och TTP/C. Båda parter slåss om den åtråvärda titeln som de facto<br />

standard inom x-by-wire industrin. Ett krig där TTP/c har tagit täten genom att redan nu ha ett<br />

operativt, kommersiellt nätverk som av erkänd testare som exempelvis SP anses vara säkert. Många<br />

anser dock att FlexRay kan gå om TTP/C då de dels har en flexiblare lösning på sin schedulering,<br />

något som var värdefullt för exempelvis Rymdbolaget, och dels har fler och större företag som backar<br />

upp dem.<br />

Näten har också kommit till på lite olika sätt, där TTP/C tämligen kompromisslöst skapats på ett<br />

universitet i Österrike för att sedan erbjudas marknaden designat och klart. Tvärtom har FlexRay<br />

tillkommit på initiativ från ett antal aktörer inom biltillverkningsmarknaden, där de tillsammans<br />

försöker att tillgodose de krav och önskemål som inkommer från olika håll. Rykten säger till och med<br />

att FlexRay uppkom på grund av att tillverkaren av TTP/C vägrade tillgodose vissa biltillverkares<br />

krav på förändringar av TTP/C. Det är alltså på intet sätt självklart vilket nätverk som faktiskt kommer<br />

att bli bäst, det vetenskapligt strikta nätverk, TTP/C, som kanske inte passar någon eller det av<br />

kompromisser, mellan flexibilitet, säkerhetskrav och övriga tillverkarkrav ihoppusslade nätverk som<br />

heter FlexRay.<br />

Det kunde också vara intressant att undersöka CANopen som inte blev undersökt. Det verkar kunna<br />

bli riktigt spritt och har ju därför en stor potential, extra synd eftersom CANopen under resans gång<br />

dessutom utsågs till en rymdstandard av ESA.


Intern realtidskommunikation i framtida Svenska satelliter sid 54<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 55<br />

Martin Normark<br />

11 Tack till<br />

Leif Granholm, utan vars hjälp, med VHDL-programmeringen, detta examensarbete inte skulle ha<br />

varit möjligt att genomföra.<br />

Mats Rehnström, för hjälp med hårdvara, inspiration och nya intressanta teorier rörande det mesta.<br />

Håkan Sivencrona och Per Johannessen för att ni låtit mig ta del av såväl Sveriges Provnings- och<br />

Forskningsinstituts som delar av VOLVO´s erfarenheter beträffande säkerhet och användning av<br />

TTP/C, FlexRay och CAN. Detta trots mitt morgonhumör…<br />

Martin Törngren för en föredömligt genomförd handledning.<br />

Gunnar Andersson som trots en, särskilt inledningsvis, kraftig tidspress hjälpte mig på rätt väg.<br />

Sist men inte minst min förtjusande flickvän Jenny Sperens som stått ut med mig och dessutom<br />

korrekturläst denna rapport.


Intern realtidskommunikation i framtida Svenska satelliter sid 56<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 57<br />

Martin Normark<br />

12 Begrepp och förkortningar som används I denna rapport<br />

Busguardian Separat hårdvara som kontrollerar att en nod endast sänder då den<br />

skall sända.<br />

CAN Controller Area Network<br />

CON1, CON2 SMART-1´s två huvuddatorer<br />

DSP Digital Signal Processor<br />

EDF Earliest Deadline First<br />

ESA European Space Agency<br />

ESD Electro Static Discharge<br />

FlexRay Namn på ett nätverk<br />

FPGA Field Programmable gate array<br />

GRWRTU-kort Gyro and Reaction Wheel Real Time Unit<br />

GS Ground Station (vid radiokommunikation)<br />

Mbps Mega bits per second<br />

MOST Media Oriented Systems Transport<br />

NTU Node Timer Unit<br />

Payloadbussen Databuss för transport av information till och från intrument ombord<br />

på SMART-1<br />

RIBUS You are on the right bus<br />

SMART-1 Rymdbolagets senaste satellit<br />

SP Sveriges Provnings- och Forskningsinstitut<br />

Spacewire Namn på ett datanätverk<br />

SSC Swedish Space Corporation (Rymdbolagets engelska namn)<br />

STEAM Arbetsnamn på en eventuell framtida satellit hos rymdbolaget<br />

Systembussen Databuss för transport av information till och från systemdelar<br />

ombord på SMART-1<br />

TMTC Transponderenheten på en satellit<br />

TTCAN Time Triggered CAN<br />

TTP/C Time Triggered Protocoll version C<br />

USB Universal Serial Bus<br />

VHDL Very high speed integrated circuit (VHSIC) Hardware Description<br />

Language<br />

x-by-wire Samlingsnamn för bl.a. steer-, throttle-, och brake-by-wire.


Intern realtidskommunikation i framtida Svenska satelliter sid 58<br />

Martin Normark


Intern realtidskommunikation i framtida Svenska satelliter sid 59<br />

Martin Normark<br />

13 Referenser<br />

1. SMART-1 CAN Bus Hardware Architectural Description<br />

Document ID: S1-SU-HAD-26 Version 1.3 Swedish Space Corporation<br />

2. SMART-1 CAN controller user manual<br />

Document ID: S1-SU-MA-1 Version 3.5 Swedish Space Corporation<br />

3. CAN Specification 2.0B från http://www.can.bosch.com/content/Literature.html den 14/10-02<br />

4. Universal Serial Bus Specification Revision 2.0 från http://www.usb.org/developers/docs.html den<br />

25/9-02<br />

5. Space engineering, SpaceWire -Links, nodes routers and network. ECSS-E-50-12 Draft 3<br />

Utgiven av ESA Publication Division 22 april 2002<br />

http://www.estec.esa.nl/tech/spacewire/ den 24/8 -02<br />

6. Time-Triggered Protocol TTP/C Bus-Compatibility Specification<br />

Document number D-032-S-10-032<br />

TTTech Computerrechnik AG<br />

http://www.tttech.com<br />

7. TTP/C-C1 Communications Controller<br />

Austriamicrosystems<br />

http://www.tttech.com<br />

8. TTCAN IP Module User´s Manual Revision 1.5<br />

BOSCH<br />

http://www.can.bosch.com/content/Literature.html den 23/8 -02<br />

9. CAN Network with Time Triggered Communication<br />

av B. Müller, T Führer, F. Hartwich, R. Hugel och H. Weiler<br />

http://www.can.bosch.com/content/Literature.html den 23/8 -02<br />

10. FlexRay Requirements Specification ver.2.0.2<br />

http://www.flexray.com/<br />

11. OS8104 MOST Network Tranceiver, final data sheet, Dec 2000.<br />

Utgiven OASIS SiliconSystems AG<br />

http://www.mostnet.de/downloads/Specifications/ den 7/10 -02<br />

12. MOST Specification Rev 2.1 02/2001<br />

Utgiven av MOST Cooperation<br />

http://www.mostnet.de/downloads/Specifications/ den 7/10 –02<br />

13. EDF applied to CAN<br />

Gunnar Andersson<br />

Swedish Space Corporation<br />

14. ”Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment”<br />

C. L. LIU, MIT Massachusetts Institute of Technology, och James W. Layland, California Institute of<br />

Technology<br />

Kan laddas ned från: http://www.vmars.tuwien.ac.at/courses/betriebssysteme/artikel_liu73.pdf<br />

15. Dual Priority Assignment<br />

Alan Burns, University of York<br />

Kan laddas ned från: ftp://ftp.cs.york.ac.uk/pub/realtime/papers/dual.ps.Z


Intern realtidskommunikation i framtida Svenska satelliter sid 60<br />

Martin Normark<br />

13.1 Muntliga källor och Intervjuer<br />

16. Sytze Veldman, Rymdbolaget den 2/9 -02<br />

17. Bengt Holmqvist, Rymdbolaget den 4/9 -02<br />

18. Gunnar Andersson, Rymdbolaget 10/9 -02<br />

19. Leif Granholm, Rymdbolaget 8/9 -02<br />

20. Håkan Sivencrona SP, Statens Provningsinstitut<br />

13.2 Litteraturtips<br />

End-to-end arguments in system design<br />

J.H. Saltzer et. al.<br />

Laboratory for Computer Science, MIT.<br />

Från http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf<br />

Bus Architectures For Safety-Critical Embedded Systems<br />

John Rushby, Computer Science Laboratory<br />

SRI International.<br />

Probabilistic End-to-End Delay Bound for Earliest Deadline First Scheduling.<br />

Matthew Andrews, Bell Laboratories.<br />

Från www.ieee-infocom.org/2000/papers/483.pdf<br />

Schemaläggning.<br />

Peter Loborg<br />

Institutionen för Datavetenskap, Universitetet i Linköping.<br />

Från www.ida.liu.se/~m_reap/TDDI80/OH-Fo5.ps samt<br />

www.ida.liu.se/~m_reap/TDDI80/OH-Fo6.ps<br />

SMART-1 System Unit Hardware Architectural Design Description<br />

Document ID: S1-SU-HAD-33 Version:1.2 Swedish Space Corporation<br />

CAN-skola på nätet:<br />

www.kvaser.com<br />

Information om Spacewire<br />

http://www.estec.esa.nl/tech/spacewire/<br />

Time Triggered Communication on CAN<br />

Timing in the TTCAN Network<br />

Fault tolerant TTCAN network<br />

Ovanstående artiklar är författade av B. Müller, T Führer, F. Hartwich, R. Hugel och H. Weiler från<br />

BOSCH och kan laddas ned från http://www.can.bosch.com/content/Literature.html<br />

TTCAN Testchip på http://www.can.bosch.com/content/TTCAN_TC.html<br />

Advantages with a global clock in CAN system av Lars-Berno Fredriksson, Kvaser AB


Intern realtidskommunikation i framtida Svenska satelliter sid 61<br />

Martin Normark<br />

Appendix A Simulering av EDF-algoritm<br />

Nedan återfinns utdrag ur simuleringskörningarna, varje rad motsvarar ett meddelande och under<br />

nodernas respektive kolumn finns räknarens värde samt aktuell prioritet redovisat som (räknarens<br />

värde : grundprio + lågprio/högprio) värdet för låg- resp högprio är 0 resp. 64. Sist i varje rad<br />

redovisas vilken nod som fick sända under aktuell runda, dvs den nod med lägst aktuell prioritet. Av<br />

praktiska skäl är en stor del av sändingarna ej redovisade, dock finns alla med i den sammanfattning<br />

som avslutar varje körning.<br />

De två första körningarna har följande inställningar:<br />

UA=1/3. Grundprio=0. Initialvärde för räknare=3.<br />

UB=1/6. Grundprio=1. Initialvärde för räknare=6.<br />

UC=1/10. Grundprio=2. Initialvärde för räknare=10.<br />

UD=1/13. Grundprio=3. Initialvärde för räknare=13.<br />

UE=1/22. Grundprio=4. Initialvärde för räknare=22.<br />

UF=1/23. Grundprio=5. Initialvärde för räknare=23.<br />

UG=1/24. Grundprio=6. Initialvärde för räknare=24.<br />

UH=1/25. Grundprio=7. Initialvärde för räknare=25.<br />

Vilket ger<br />

U<br />

tot<br />

= ∑U<br />

i<br />

i=<br />

A,<br />

B,<br />

C...<br />

=<br />

0.<br />

848<br />

≤ 1<br />

Körning där räknaren värde begränsas till dubbla initialvärdet.<br />

setting up initial conditions<br />

nod-A nod-B nod-C nod-D nod-E nod-F nod-G nod-H s„ndare<br />

--------------------------------------------------------<br />

2: 0 5: 1 9: 2 12: 3 21: 4 22: 5 23: 6 24: 7 tx = 0<br />

4:64 4: 1 8: 2 11: 3 20: 4 21: 5 22: 6 23: 7 tx = 1<br />

3:64 9:65 7: 2 10: 3 19: 4 20: 5 21: 6 22: 7 tx = 2<br />

2: 0 8:65 16:66 9: 3 18: 4 19: 5 20: 6 21: 7 tx = 0<br />

4:64 7:65 15:66 8: 3 17: 4 18: 5 19: 6 20: 7 tx = 3<br />

3:64 6:65 14:66 20:67 16: 4 17: 5 18: 6 19: 7 tx = 4<br />

2: 0 5: 1 13:66 19:67 37:68 16: 5 17: 6 18: 7 tx = 0<br />

4:64 4: 1 12:66 18:67 36:68 15: 5 16: 6 17: 7 tx = 1<br />

3:64 9:65 11:66 17:67 35:68 14: 5 15: 6 16: 7 tx = 5<br />

2: 0 8:65 10:66 16:67 34:68 36:69 14: 6 15: 7 tx = 0<br />

4:64 7:65 9: 2 15:67 33:68 35:69 13: 6 14: 7 tx = 2<br />

3:64 6:65 18:66 14:67 32:68 34:69 12: 6 13: 7 tx = 6<br />

2: 0 5: 1 17:66 13:67 31:68 33:69 35:70 12: 7 tx = 0<br />

4:64 4: 1 16:66 12: 3 30:68 32:69 34:70 11: 7 tx = 1<br />

3:64 9:65 15:66 11: 3 29:68 31:69 33:70 10: 7 tx = 3<br />

2: 0 8:65 14:66 23:67 28:68 30:69 32:70 9: 7 tx = 0<br />

4:64 7:65 13:66 22:67 27:68 29:69 31:70 8: 7 tx = 7<br />

3:64 6:65 12:66 21:67 26:68 28:69 30:70 32:71 tx = 0<br />

5:64 5: 1 11:66 20:67 25:68 27:69 29:70 31:71 tx = 1<br />

4:64 10:65 10:66 19:67 24:68 26:69 28:70 30:71 tx = 0<br />

5:64 9:65 9: 2 18:67 23:68 25:69 27:70 29:71 tx = 2<br />

4:64 8:65 18:66 17:67 22:68 24:69 26:70 28:71 tx = 0<br />

5:64 7:65 17:66 16:67 21: 4 23:69 25:70 27:71 tx = 4<br />

4:64 6:65 16:66 15:67 42:68 22: 5 24:70 26:71 tx = 5<br />

3:64 5: 1 15:66 14:67 41:68 44:69 23: 6 25:71 tx = 1


Intern realtidskommunikation i framtida Svenska satelliter sid 62<br />

Martin Normark<br />

2: 0 10:65 14:66 13:67 40:68 43:69 22: 6 24: 7 tx = 0<br />

4:64 9:65 13:66 12: 3 39:68 42:69 21: 6 23: 7 tx = 3<br />

3:64 8:65 12:66 24:67 38:68 41:69 20: 6 22: 7 tx = 6<br />

2: 0 7:65 11:66 23:67 37:68 40:69 43:70 21: 7 tx = 0<br />

4:64 6:65 10:66 22:67 36:68 39:69 42:70 20: 7 tx = 7<br />

3:64 5: 1 9: 2 21:67 35:68 38:69 41:70 44:71 tx = 1<br />

2: 0 10:65 8: 2 20:67 34:68 37:69 40:70 43:71 tx = 0<br />

4:64 9:65 7: 2 19:67 33:68 36:69 39:70 42:71 tx = 2<br />

3:64 8:65 16:66 18:67 32:68 35:69 38:70 41:71 tx = 0<br />

5:64 7:65 15:66 17:67 31:68 34:69 37:70 40:71 tx = 0<br />

5:64 6:65 14:66 16:67 30:68 33:69 36:70 39:71 tx = 0<br />

5:64 5: 1 13:66 15:67 29:68 32:69 35:70 38:71 tx = 1<br />

4:64 10:65 12:66 14:67 28:68 31:69 34:70 37:71 tx = 0<br />

5:64 9:65 11:66 13:67 27:68 30:69 33:70 36:71 tx = 0<br />

5:64 8:65 10:66 12: 3 26:68 29:69 32:70 35:71 tx = 3<br />

4:64 7:65 9: 2 24:67 25:68 28:69 31:70 34:71 tx = 2<br />

|<br />

|<br />

|<br />

|<br />

number of transmissions rounds: 6360<br />

node 0: 0.485 used bandwidth, 0.333 guaranteed bandwidth<br />

node 1: 0.167 used bandwidth, 0.167 guaranteed bandwidth<br />

node 2: 0.100 used bandwidth, 0.100 guaranteed bandwidth<br />

node 3: 0.077 used bandwidth, 0.077 guaranteed bandwidth<br />

node 4: 0.046 used bandwidth, 0.045 guaranteed bandwidth<br />

node 5: 0.044 used bandwidth, 0.043 guaranteed bandwidth<br />

node 6: 0.042 used bandwidth, 0.042 guaranteed bandwidth<br />

node 7: 0.040 used bandwidth, 0.040 guaranteed bandwidth<br />

guaranteed bus utilisation = 0.848<br />

actual bus utilisation = 1.000<br />

number of missed deadlines 0<br />

Körning där nod avstår från sändning då räknaren överstiger dubbla initialvärdet<br />

setting up initial conditions<br />

nod-A nod-B nod-C nod-D nod-E nod-F nod-G nod-H s„ndare<br />

--------------------------------------------------------<br />

2: 0 5: 1 9: 2 12: 3 21: 4 22: 5 23: 6 24: 7 tx = 0<br />

4:64 4: 1 8: 2 11: 3 20: 4 21: 5 22: 6 23: 7 tx = 1<br />

3:64 9:65 7: 2 10: 3 19: 4 20: 5 21: 6 22: 7 tx = 2<br />

2: 0 8:65 16:66 9: 3 18: 4 19: 5 20: 6 21: 7 tx = 0<br />

4:64 7:65 15:66 8: 3 17: 4 18: 5 19: 6 20: 7 tx = 3<br />

3:64 6:65 14:66 20:67 16: 4 17: 5 18: 6 19: 7 tx = 4<br />

2: 0 5: 1 13:66 19:67 37:68 16: 5 17: 6 18: 7 tx = 0<br />

4:64 4: 1 12:66 18:67 36:68 15: 5 16: 6 17: 7 tx = 1<br />

3:64 9:65 11:66 17:67 35:68 14: 5 15: 6 16: 7 tx = 5<br />

2: 0 8:65 10:66 16:67 34:68 36:69 14: 6 15: 7 tx = 0<br />

4:64 7:65 9: 2 15:67 33:68 35:69 13: 6 14: 7 tx = 2<br />

3:64 6:65 18:66 14:67 32:68 34:69 12: 6 13: 7 tx = 6<br />

2: 0 5: 1 17:66 13:67 31:68 33:69 35:70 12: 7 tx = 0


Intern realtidskommunikation i framtida Svenska satelliter sid 63<br />

Martin Normark<br />

4:64 4: 1 16:66 12: 3 30:68 32:69 34:70 11: 7 tx = 1<br />

3:64 9:65 15:66 11: 3 29:68 31:69 33:70 10: 7 tx = 3<br />

2: 0 8:65 14:66 23:67 28:68 30:69 32:70 9: 7 tx = 0<br />

4:64 7:65 13:66 22:67 27:68 29:69 31:70 8: 7 tx = 7<br />

3:64 6:65 12:66 21:67 26:68 28:69 30:70 32:71 tx = 0<br />

5:64 5: 1 11:66 20:67 25:68 27:69 29:70 31:71 tx = 1<br />

4:64 10:65 10:66 19:67 24:68 26:69 28:70 30:71 tx = 0<br />

6:64 9:65 9: 2 18:67 23:68 25:69 27:70 29:71 tx = 2<br />

5:64 8:65 18:66 17:67 22:68 24:69 26:70 28:71 tx = 0<br />

6:64 7:65 17:66 16:67 21: 4 23:69 25:70 27:71 tx = 4<br />

5:64 6:65 16:66 15:67 42:68 22: 5 24:70 26:71 tx = 5<br />

4:64 5: 1 15:66 14:67 41:68 44:69 23: 6 25:71 tx = 1<br />

3:64 10:65 14:66 13:67 40:68 43:69 22: 6 24: 7 tx = 6<br />

2: 0 9:65 13:66 12: 3 39:68 42:69 45:70 23: 7 tx = 0<br />

4:64 8:65 12:66 11: 3 38:68 41:69 44:70 22: 7 tx = 3<br />

3:64 7:65 11:66 23:67 37:68 40:69 43:70 21: 7 tx = 7<br />

2: 0 6:65 10:66 22:67 36:68 39:69 42:70 45:71 tx = 0<br />

4:64 5: 1 9: 2 21:67 35:68 38:69 41:70 44:71 tx = 1<br />

3:64 10:65 8: 2 20:67 34:68 37:69 40:70 43:71 tx = 2<br />

2: 0 9:65 17:66 19:67 33:68 36:69 39:70 42:71 tx = 0<br />

4:64 8:65 16:66 18:67 32:68 35:69 38:70 41:71 tx = 0<br />

6:64 7:65 15:66 17:67 31:68 34:69 37:70 40:71 tx = 1<br />

5:64 12:65 14:66 16:67 30:68 33:69 36:70 39:71 tx = 0<br />

6:64 11:65 13:66 15:67 29:68 32:69 35:70 38:71 tx = 1<br />

5:64 12:65 12:66 14:67 28:68 31:69 34:70 37:71 tx = 0<br />

6:64 11:65 11:66 13:67 27:68 30:69 33:70 36:71 tx = 1<br />

5:64 12:65 10:66 12: 3 26:68 29:69 32:70 35:71 tx = 3<br />

4:64 11:65 9: 2 24:67 25:68 28:69 31:70 34:71 tx = 2<br />

3:64 10:65 18:66 23:67 24:68 27:69 30:70 33:71 tx = 0<br />

5:64 9:65 17:66 22:67 23:68 26:69 29:70 32:71 tx = 0<br />

6:64 8:65 16:66 21:67 22:68 25:69 28:70 31:71 tx = 1<br />

5:64 12:65 15:66 20:67 21: 4 24:69 27:70 30:71 tx = 4<br />

4:64 11:65 14:66 19:67 42:68 23:69 26:70 29:71 tx = 0<br />

6:64 10:65 13:66 18:67 41:68 22: 5 25:70 28:71 tx = 5<br />

5:64 9:65 12:66 17:67 40:68 44:69 24:70 27:71 tx = 0<br />

6:64 8:65 11:66 16:67 39:68 43:69 23: 6 26:71 tx = 6<br />

5:64 7:65 10:66 15:67 38:68 42:69 46:70 25:71 tx = 0<br />

6:64 6:65 9: 2 14:67 37:68 41:69 45:70 24: 7 tx = 2<br />

5:64 5: 1 18:66 13:67 36:68 40:69 44:70 23: 7 tx = 1<br />

4:64 10:65 17:66 12: 3 35:68 39:69 43:70 22: 7 tx = 3<br />

3:64 9:65 16:66 24:67 34:68 38:69 42:70 21: 7 tx = 7<br />

2: 0 8:65 15:66 23:67 33:68 37:69 41:70 45:71 tx = 0<br />

4:64 7:65 14:66 22:67 32:68 36:69 40:70 44:71 tx = 0<br />

6:64 6:65 13:66 21:67 31:68 35:69 39:70 43:71 tx = 1<br />

|<br />

|<br />

|<br />

|<br />

number of transmissions rounds: 8273<br />

node 0: 0.412 used bandwidth, 0.333 guaranteed bandwidth<br />

node 1: 0.240 used bandwidth, 0.167 guaranteed bandwidth


Intern realtidskommunikation i framtida Svenska satelliter sid 64<br />

Martin Normark<br />

node 2: 0.100 used bandwidth, 0.100 guaranteed bandwidth<br />

node 3: 0.077 used bandwidth, 0.077 guaranteed bandwidth<br />

node 4: 0.046 used bandwidth, 0.045 guaranteed bandwidth<br />

node 5: 0.044 used bandwidth, 0.043 guaranteed bandwidth<br />

node 6: 0.042 used bandwidth, 0.042 guaranteed bandwidth<br />

node 7: 0.040 used bandwidth, 0.040 guaranteed bandwidth<br />

guaranteed bus utilisation = 0.848<br />

actual bus utilisation = 1.000<br />

number of missed deadlines 0<br />

Körning där 100% av bussbandbredden allokeras och fördelas på ett dåligt sätt<br />

Inställningar:<br />

UA=1/3. Grundprio=0. Initialvärde för räknare=3.<br />

UB=1/5. Grundprio=1. Initialvärde för räknare=5.<br />

UC=1/6. Grundprio=2. Initialvärde för räknare=6.<br />

UD=1/11. Grundprio=3. Initialvärde för räknare=11.<br />

UE=1/13. Grundprio=4. Initialvärde för räknare=13.<br />

UF=1/22. Grundprio=5. Initialvärde för räknare=22.<br />

UG=1/23. Grundprio=6. Initialvärde för räknare=23.<br />

UH=1/24. Grundprio=7. Initialvärde för räknare=24.<br />

Vilket ger<br />

U<br />

tot<br />

= ∑U<br />

i<br />

i=<br />

A,<br />

B,<br />

C...<br />

=<br />

0.<br />

998<br />

≤ 1<br />

setting up initial conditions<br />

nod-A nod-B nod-C nod-D nod-E nod-F nod-G nod-H s„ndare<br />

--------------------------------------------------------<br />

2: 0 4: 1 5: 2 10: 3 12: 4 21: 5 22: 6 23: 7 tx = 0<br />

4:14 3: 1 4: 2 9: 3 11: 4 20: 5 21: 6 22: 7 tx = 1<br />

3:14 7:13 3: 2 8: 3 10: 4 19: 5 20: 6 21: 7 tx = 2<br />

2: 0 6:13 8:12 7: 3 9: 4 18: 5 19: 6 20: 7 tx = 0<br />

4:14 5:13 7:12 6: 3 8: 4 17: 5 18: 6 19: 7 tx = 3<br />

3:14 4: 1 6:12 16:11 7: 4 16: 5 17: 6 18: 7 tx = 1<br />

2: 0 8:13 5: 2 15:11 6: 4 15: 5 16: 6 17: 7 tx = 0<br />

4:14 7:13 4: 2 14:11 5: 4 14: 5 15: 6 16: 7 tx = 2<br />

3:14 6:13 9:12 13:11 4: 4 13: 5 14: 6 15: 7 tx = 4<br />

2: 0 5:13 8:12 12:11 16:10 12: 5 13: 6 14: 7 tx = 0<br />

4:14 4: 1 7:12 11:11 15:10 11: 5 12: 6 13: 7 tx = 1<br />

3:14 8:13 6:12 10: 3 14:10 10: 5 11: 6 12: 7 tx = 3<br />

2: 0 7:13 5: 2 20:11 13:10 9: 5 10: 6 11: 7 tx = 0<br />

4:14 6:13 4: 2 19:11 12: 4 8: 5 9: 6 10: 7 tx = 2<br />

3:14 5:13 9:12 18:11 11: 4 7: 5 8: 6 9: 7 tx = 4<br />

2: 0 4: 1 8:12 17:11 23:10 6: 5 7: 6 8: 7 tx = 0<br />

4:14 3: 1 7:12 16:11 22:10 5: 5 6: 6 7: 7 tx = 1<br />

3:14 7:13 6:12 15:11 21:10 4: 5 5: 6 6: 7 tx = 5<br />

2: 0 6:13 5: 2 14:11 20:10 25: 9 4: 6 5: 7 tx = 0<br />

4:14 5:13 4: 2 13:11 19:10 24: 9 3: 6 4: 7 tx = 2


Intern realtidskommunikation i framtida Svenska satelliter sid 65<br />

Martin Normark<br />

3:14 4: 1 9:12 12:11 18:10 23: 9 2: 6 3: 7 tx = 1<br />

2: 0 8:13 8:12 11:11 17:10 22: 9 1: 6 2: 7 tx = 0<br />

4:14 7:13 7:12 10: 3 16:10 21: 5 0: 6 1: 7 tx = 3<br />

3:14 6:13 6:12 20:11 15:10 20: 5 -1: 6 0: 7 tx = 5<br />

2: 0 5:13 5: 2 19:11 14:10 41: 9 -2: 6 -1: 7 tx = 0<br />

4:14 4: 1 4: 2 18:11 13:10 40: 9 -3: 6 -2: 7 tx = 1<br />

3:14 8:13 3: 2 17:11 12: 4 39: 9 -4: 6 -3: 7 tx = 2<br />

2: 0 7:13 8:12 16:11 11: 4 38: 9 -5: 6 -4: 7 tx = 0<br />

4:14 6:13 7:12 15:11 10: 4 37: 9 -6: 6 -5: 7 tx = 4<br />

3:14 5:13 6:12 14:11 22:10 36: 9 -7: 6 -6: 7 tx = 6<br />

2: 0 4: 1 5: 2 13:11 21:10 35: 9 15: 6 -7: 7 tx = 0<br />

4:14 3: 1 4: 2 12:11 20:10 34: 9 14: 6 -8: 7 tx = 1<br />

3:14 7:13 3: 2 11:11 19:10 33: 9 13: 6 -9: 7 tx = 2<br />

2: 0 6:13 8:12 10: 3 18:10 32: 9 12: 6-10: 7 tx = 0<br />

4:14 5:13 7:12 9: 3 17:10 31: 9 11: 6-11: 7 tx = 3<br />

3:14 4: 1 6:12 19:11 16:10 30: 9 10: 6-12: 7 tx = 1<br />

2: 0 8:13 5: 2 18:11 15:10 29: 9 9: 6-13: 7 tx = 0<br />

4:14 7:13 4: 2 17:11 14:10 28: 9 8: 6-14: 7 tx = 2<br />

3:14 6:13 9:12 16:11 13:10 27: 9 7: 6-15: 7 tx = 6<br />

2: 0 5:13 8:12 15:11 12: 4 26: 9 29: 8-16: 7 tx = 0<br />

4:14 4: 1 7:12 14:11 11: 4 25: 9 28: 8-17: 7 tx = 1<br />

3:14 8:13 6:12 13:11 10: 4 24: 9 27: 8-18: 7 tx = 4<br />

2: 0 7:13 5: 2 12:11 22:10 23: 9 26: 8-19: 7 tx = 0<br />

4:14 6:13 4: 2 11:11 21:10 22: 9 25: 8-20: 7 tx = 2<br />

3:14 5:13 9:12 10: 3 20:10 21: 5 24: 8-21: 7 tx = 3<br />

2: 0 4: 1 8:12 20:11 19:10 20: 5 23: 8-22: 7 tx = 0<br />

4:14 3: 1 7:12 19:11 18:10 19: 5 22: 6-23: 7 tx = 1<br />

3:14 7:13 6:12 18:11 17:10 18: 5 21: 6-24: 7 tx = 5<br />

2: 0 6:13 5: 2 17:11 16:10 39: 9 20: 6-25: 7 tx = 0<br />

4:14 5:13 4: 2 16:11 15:10 38: 9 19: 6-26: 7 tx = 2<br />

3:14 4: 1 9:12 15:11 14:10 37: 9 18: 6-27: 7 tx = 1<br />

2: 0 8:13 8:12 14:11 13:10 36: 9 17: 6-28: 7 tx = 0<br />

4:14 7:13 7:12 13:11 12: 4 35: 9 16: 6-29: 7 tx = 4<br />

3:14 6:13 6:12 12:11 24:10 34: 9 15: 6-30: 7 tx = 6<br />

2: 0 5:13 5: 2 11:11 23:10 33: 9 37: 8-31: 7 tx = 0<br />

4:14 4: 1 4: 2 10: 3 22:10 32: 9 36: 8-32: 7 tx = 1<br />

3:14 8:13 3: 2 9: 3 21:10 31: 9 35: 8-33: 7 tx = 2<br />

2: 0 7:13 8:12 8: 3 20:10 30: 9 34: 8-34: 7 tx = 0<br />

4:14 6:13 7:12 7: 3 19:10 29: 9 33: 8-35: 7 tx = 3<br />

3:14 5:13 6:12 17:11 18:10 28: 9 32: 8-36: 7 tx = 7<br />

2: 0 4: 1 5: 2 16:11 17:10 27: 9 31: 8-13: 7 tx = 0<br />

4:14 3: 1 4: 2 15:11 16:10 26: 9 30: 8-14: 7 tx = 1<br />

3:14 7:13 3: 2 14:11 15:10 25: 9 29: 8-15: 7 tx = 2<br />

2: 0 6:13 8:12 13:11 14:10 24: 9 28: 8-16: 7 tx = 0<br />

4:14 5:13 7:12 12:11 13:10 23: 9 27: 8-17: 7 tx = 7<br />

3:14 4: 1 6:12 11:11 12: 4 22: 9 26: 8 6: 7 tx = 1<br />

2: 0 8:13 5: 2 10: 3 11: 4 21: 5 25: 8 5: 7 tx = 0<br />

4:14 7:13 4: 2 9: 3 10: 4 20: 5 24: 8 4: 7 tx = 2<br />

|<br />

|<br />

|<br />

|<br />

number of transmissions rounds: 18324


Intern realtidskommunikation i framtida Svenska satelliter sid 66<br />

Martin Normark<br />

node 0: 0.333 used bandwidth, 0.333 guaranteed bandwidth<br />

node 1: 0.200 used bandwidth, 0.200 guaranteed bandwidth<br />

node 2: 0.167 used bandwidth, 0.167 guaranteed bandwidth<br />

node 3: 0.091 used bandwidth, 0.091 guaranteed bandwidth<br />

node 4: 0.077 used bandwidth, 0.077 guaranteed bandwidth<br />

node 5: 0.045 used bandwidth, 0.045 guaranteed bandwidth<br />

node 6: 0.043 used bandwidth, 0.043 guaranteed bandwidth<br />

node 7: 0.043 used bandwidth, 0.042 guaranteed bandwidth<br />

guaranteed bus utilisation = 0.998<br />

actual bus utilisation = 1.000<br />

number of missed deadlines 897<br />

Körning där 100% av bussbandbredden allokeras och fördelas på ett bra sätt<br />

Inställningar:<br />

UA=1/4. Grundprio=0. Initialvärde för räknare=4.<br />

UB=1/4. Grundprio=1. Initialvärde för räknare=4.<br />

UC=1/5. Grundprio=2. Initialvärde för räknare=5.<br />

UD=1/10. Grundprio=3. Initialvärde för räknare=10.<br />

UE=1/20. Grundprio=4. Initialvärde för räknare=20.<br />

UF=1/20. Grundprio=5. Initialvärde för räknare=20.<br />

UG=1/20. Grundprio=6. Initialvärde för räknare=20.<br />

UH=1/20. Grundprio=7. Initialvärde för räknare=20.<br />

Vilket ger<br />

U<br />

tot<br />

= ∑U<br />

i<br />

i=<br />

A,<br />

B,<br />

C...<br />

= 1<br />

Som synes ger detta en tydlig periodicitet som är markerad med tjockare stil.<br />

setting up initial conditions<br />

nod-A nod-B nod-C nod-D nod-E nod-F nod-G nod-H s„ndare<br />

--------------------------------------------------------<br />

3: 0 3: 1 4: 2 9: 3 19: 4 19: 5 19: 6 19: 7 tx = 0<br />

6:64 2: 1 3: 2 8: 3 18: 4 18: 5 18: 6 18: 7 tx = 1<br />

5:64 5:65 2: 2 7: 3 17: 4 17: 5 17: 6 17: 7 tx = 2<br />

4:64 4:65 6:66 6: 3 16: 4 16: 5 16: 6 16: 7 tx = 3<br />

3: 0 3: 1 5:66 15:67 15: 4 15: 5 15: 6 15: 7 tx = 0<br />

6:64 2: 1 4: 2 14:67 14: 4 14: 5 14: 6 14: 7 tx = 1<br />

5:64 5:65 3: 2 13:67 13: 4 13: 5 13: 6 13: 7 tx = 2<br />

4:64 4:65 7:66 12:67 12: 4 12: 5 12: 6 12: 7 tx = 4<br />

3: 0 3: 1 6:66 11:67 31:68 11: 5 11: 6 11: 7 tx = 0<br />

6:64 2: 1 5:66 10:67 30:68 10: 5 10: 6 10: 7 tx = 1<br />

5:64 5:65 4: 2 9: 3 29:68 9: 5 9: 6 9: 7 tx = 2<br />

4:64 4:65 8:66 8: 3 28:68 8: 5 8: 6 8: 7 tx = 3<br />

3: 0 3: 1 7:66 17:67 27:68 7: 5 7: 6 7: 7 tx = 0<br />

6:64 2: 1 6:66 16:67 26:68 6: 5 6: 6 6: 7 tx = 1


Intern realtidskommunikation i framtida Svenska satelliter sid 67<br />

Martin Normark<br />

5:64 5:65 5:66 15:67 25:68 5: 5 5: 6 5: 7 tx = 5<br />

4:64 4:65 4: 2 14:67 24:68 24:69 4: 6 4: 7 tx = 2<br />

3: 0 3: 1 8:66 13:67 23:68 23:69 3: 6 3: 7 tx = 0<br />

6:64 2: 1 7:66 12:67 22:68 22:69 2: 6 2: 7 tx = 1<br />

5:64 5:65 6:66 11:67 21:68 21:69 1: 6 1: 7 tx = 6<br />

4:64 4:65 5:66 10:67 20:68 20:69 20:70 0: 7 tx = 7<br />

3: 0 3: 1 4: 2 9: 3 19: 4 19: 5 19: 6 19: 7 tx = 0<br />

6:64 2: 1 3: 2 8: 3 18: 4 18: 5 18: 6 18: 7 tx = 1<br />

5:64 5:65 2: 2 7: 3 17: 4 17: 5 17: 6 17: 7 tx = 2<br />

4:64 4:65 6:66 6: 3 16: 4 16: 5 16: 6 16: 7 tx = 3<br />

3: 0 3: 1 5:66 15:67 15: 4 15: 5 15: 6 15: 7 tx = 0<br />

6:64 2: 1 4: 2 14:67 14: 4 14: 5 14: 6 14: 7 tx = 1<br />

5:64 5:65 3: 2 13:67 13: 4 13: 5 13: 6 13: 7 tx = 2<br />

4:64 4:65 7:66 12:67 12: 4 12: 5 12: 6 12: 7 tx = 4<br />

3: 0 3: 1 6:66 11:67 31:68 11: 5 11: 6 11: 7 tx = 0<br />

6:64 2: 1 5:66 10:67 30:68 10: 5 10: 6 10: 7 tx = 1<br />

5:64 5:65 4: 2 9: 3 29:68 9: 5 9: 6 9: 7 tx = 2<br />

4:64 4:65 8:66 8: 3 28:68 8: 5 8: 6 8: 7 tx = 3<br />

3: 0 3: 1 7:66 17:67 27:68 7: 5 7: 6 7: 7 tx = 0<br />

6:64 2: 1 6:66 16:67 26:68 6: 5 6: 6 6: 7 tx = 1<br />

5:64 5:65 5:66 15:67 25:68 5: 5 5: 6 5: 7 tx = 5<br />

4:64 4:65 4: 2 14:67 24:68 24:69 4: 6 4: 7 tx = 2<br />

3: 0 3: 1 8:66 13:67 23:68 23:69 3: 6 3: 7 tx = 0<br />

6:64 2: 1 7:66 12:67 22:68 22:69 2: 6 2: 7 tx = 1<br />

5:64 5:65 6:66 11:67 21:68 21:69 1: 6 1: 7 tx = 6<br />

4:64 4:65 5:66 10:67 20:68 20:69 20:70 0: 7 tx = 7<br />

3: 0 3: 1 4: 2 9: 3 19: 4 19: 5 19: 6 19: 7 tx = 0<br />

6:64 2: 1 3: 2 8: 3 18: 4 18: 5 18: 6 18: 7 tx = 1<br />

5:64 5:65 2: 2 7: 3 17: 4 17: 5 17: 6 17: 7 tx = 2<br />

4:64 4:65 6:66 6: 3 16: 4 16: 5 16: 6 16: 7 tx = 3<br />

3: 0 3: 1 5:66 15:67 15: 4 15: 5 15: 6 15: 7 tx = 0<br />

6:64 2: 1 4: 2 14:67 14: 4 14: 5 14: 6 14: 7 tx = 1<br />

5:64 5:65 3: 2 13:67 13: 4 13: 5 13: 6 13: 7 tx = 2<br />

4:64 4:65 7:66 12:67 12: 4 12: 5 12: 6 12: 7 tx = 4<br />

3: 0 3: 1 6:66 11:67 31:68 11: 5 11: 6 11: 7 tx = 0<br />

|<br />

|<br />

|<br />

|<br />

number of transmissions rounds: 2765<br />

node 0: 0.250 used bandwidth, 0.250 guaranteed bandwidth<br />

node 1: 0.250 used bandwidth, 0.250 guaranteed bandwidth<br />

node 2: 0.200 used bandwidth, 0.200 guaranteed bandwidth<br />

node 3: 0.100 used bandwidth, 0.100 guaranteed bandwidth<br />

node 4: 0.050 used bandwidth, 0.050 guaranteed bandwidth<br />

node 5: 0.050 used bandwidth, 0.050 guaranteed bandwidth<br />

node 6: 0.050 used bandwidth, 0.050 guaranteed bandwidth<br />

node 7: 0.050 used bandwidth, 0.050 guaranteed bandwidth<br />

guaranteed bus utilisation = 1.000<br />

actual bus utilisation = 1.000


Intern realtidskommunikation i framtida Svenska satelliter sid 68<br />

Martin Normark<br />

number of missed deadlines 0<br />

C-Kod för simulering av EDF-noder i CAN-nätverk<br />

#include <br />

#include<br />

#include <br />

#define max_nodes 8<br />

#define low_prio_base 80<br />

#define sparebit 64 //High or low prio<br />

char deadline[max_nodes] = {3,6,10,13,22,23,24,25};<br />

char basic_prio[max_nodes] = {0,1,2,3,4,5,6,7};<br />

char prio[max_nodes];<br />

int counter[max_nodes];<br />

int number_of_transmissions[max_nodes] = {0,0,0,0,0,0,0,0};<br />

char over_active_node[max_nodes] = {1,1,1,1,1,1,1,1};<br />

char tx_request[max_nodes] = {0,0,0,0,0,0,0,0};<br />

int missed_deadlines = 0;<br />

long number_of_rounds = 0;<br />

/*********************NYA<br />

KONSTANTER************************************/<br />

char rescent_tx[max_nodes] = {0,0,0,0,0,0,0,0};<br />

/*******************************************************************<br />

****/<br />

/*******************************************************************<br />

****/<br />

void handle_prio(int node)<br />

{<br />

if (counter[node] > 2*deadline[node])<br />

{<br />

tx_request[node] = 0;<br />

counter[node] = 2*deadline[node]+1;<br />

}<br />

else tx_request[node] = 1;<br />

if (counter[node]


Intern realtidskommunikation i framtida Svenska satelliter sid 69<br />

Martin Normark<br />

// prio[node] = low_prio_base + basic_prio[node]; //basic<br />

idea<br />

// #endif<br />

// }<br />

// }<br />

//}<br />

/*******************************************************************<br />

****/<br />

void next_round(void)<br />

{<br />

int i,j;<br />

char next_to_transmit = 0;<br />

char earliest_deadline = 127;<br />

number_of_rounds++;<br />

for(i=0;i


Intern realtidskommunikation i framtida Svenska satelliter sid 70<br />

Martin Normark<br />

float actual =0;<br />

float utilisation = 0;<br />

printf("setting up initial conditions\n");<br />

printf(" nod-A nod-B nod-C nod-D nod-E nod-F nod-G nod-H<br />

s„ndare\n");<br />

printf("--------------------------------------------------------<br />

\n");<br />

for(i=0;i


Intern realtidskommunikation i framtida Svenska satelliter sid 71<br />

Martin Normark<br />

Appendix B Intervjuer av Rymdbolagspersonal<br />

Frågor<br />

Genom att intervjua SSC-personal måste följande frågor få svar:<br />

1. Framtida bandbreddsbehov<br />

2. Behov av redundans, parallella sändningar på flera linor med röstning eller gå över till redundant<br />

bus vid problem eller helt annan typ av lösning<br />

3. Kan det finnas anledning att endast förändra system bussen och inte payload bussen.<br />

4. Fysiska avstånd -kabellängder<br />

5. Felhantering??? Krävs det mer än det CAN erbjuder idag<br />

6. Feldetektion??? Idag och i framtiden?<br />

7. Hur övervakas nätet<br />

8. Robusthet??? Hur bedöms det???<br />

9. Måste ACKet komma från den nod som meddelandet skall till eller kan det som i CAN komma<br />

från vilken som helst av noder.<br />

10. Önskas ett routat nät, typ Spacewire, eller är CAN-varianten att föredra<br />

11. Hur synkroniserade måste noderna vara<br />

12. Hur lång tid får det ta att skicka ett meddelande<br />

13. Hur är noderna programmerade, eventstyrda eller tidsstyrda med deadlines eller…<br />

14. Kan meddelanden skickas spontant eller skall varje meddelandetyp erhålla en tidslucka<br />

15. Eller skall både och tillåtas<br />

16. Med hur många Hz jobbar en framtida reglerloop<br />

17. Förekommer det olika modes med vitt skilda typer av kommunikationsmönster på rymdskeppet<br />

18. Vilka kända problem, ej av Bug-karaktär men som drabbar vår tillämpning, finns i dagens CAN<br />

och hur allvarliga är dessa<br />

19. Vilka kända buggar finns i CAN.<br />

20. Finns det ett självändamål med en fortsättning med CAN (uppgraderat till TTCAN), om så är<br />

fallet kan någon av punkterna ovan stryka på foten<br />

21. Är vissa nätverk enklare/snabbare/billigare att implementera än andra och hur mycken vikt skall<br />

läggas därvid<br />

22. Är vissa nätverk mer flyttbara (än andra nätverk)mellan olika FPGA och i såfall vilka<br />

23. Kan det vara viktbesparande att sända informationen i nätverket på t.ex en kraftkabel eller är detta<br />

en befängd idé<br />

Svar på frågor Sytze Veldman<br />

1. Bandbredd<br />

Systembuss: < 1 Mbps med undantag för modes då t.ex. stjärnsensor skickar hel bild eller då GPS<br />

skickar all möjlig information om alla GPS-satelliter. Detta förekommer sällan och behöver ej<br />

tilldelas, på förhand, exklusiv tillgång till bussen.<br />

Payloadbuss: I nuläget, i samband med STEAM-studien, 50 kbps med radiometer och optisk<br />

spektrograf. Kommande fas A studier på STEAM ska ge en mer detaljerad bild av instrumentens<br />

bandbreddsbehov. Dock kan andra instrument såsom radar eller kamera tänkas varvid trafiken<br />

kommer att överstiga 1 Mbps<br />

Länk mellan mass-minne och TMTC: >= 1Mbps för downlink av mätdata i fallet av STEAM.<br />

2. Redundans<br />

Ja, allt måste vara redundant.<br />

3. Förändring av endast en buss<br />

Ja, men inte i onödan.<br />

Länk mellan mass-minne och TMTC måste vara snabbare än CAN, kan tänkas integreras med<br />

övriga payloadbussen.<br />

4. Längd på kablar


Intern realtidskommunikation i framtida Svenska satelliter sid 72<br />

Martin Normark<br />

Upp till 2m<br />

8. Acknowledge<br />

Säkrare med ACK från adresserad nod<br />

12. Noders programmering<br />

System t.ex. attityd är tidsstyrd 1Hz.<br />

Payload kan vara eventstyrd<br />

15. Olika modes<br />

Systembuss: GPS och stjärnsensor, se fråga 1.<br />

Payloadbuss: Sändning av mass-minnes innehåll till GS via TMTC >=1 Mbps.<br />

16. Kända problem med CAN-buss<br />

Liten bandbredd<br />

18. Självändamål med CAN-buss<br />

Ja (se svar på 23), men bandbredden kan inte kompromissas bort<br />

23. Allmän spridning av protokoll<br />

CAN är ett ”buzz-word” i branschen, det är bra.<br />

Allmän spridning innebär att en lösning ej behöver säljas in till kund.<br />

Lättare att få tag på- och, till underleverantör, tillhandahålla testutrustning.<br />

Lättare att specificera- samt billigare att beställa instrument till rymdfarkosten.<br />

Svar på frågor Bengt Holmqvist<br />

1. Bandbredd<br />

Mindre än 1 Mbps, förutom mellan mass-minne och TMTC<br />

2. Redundans<br />

Redundansen som CAN-bussen i SMART-1 erbjuder är tillräcklig. Åtminstone på linjesidan,<br />

dock kan det faktum att den nominella och den redundanta bussen använder samma kontroller<br />

ställa till problem, om just buss-kontrollern fallerar.<br />

3. Förändring av Payloadbuss och/eller Systembuss<br />

Det är inte nödvändigtvis enklare att förändra båda bussarna. Kräver endast en av bussarna<br />

ytterligare egenskaper kan denna ändras.<br />

4. Kabellängd<br />

Sällan över två meter.<br />

5. Feldetektion<br />

Behöver inte bli bättre än i SMART-1<br />

6. Felhantering<br />

Kan behöva förbättras. T.ex. kan idag en "babblande idiot" förstöra all kommunikation på en<br />

buss. Då kontrollern byter till den redundanta bussen kan den defekta noden uppfatta detta, byta<br />

buss även den, varvid den förstör trafiken även där. Avstängning av den defekta noden kan<br />

dessutom omöjliggöras då ett kommando till power-enheten, över den redan utstörda bussen, att<br />

stänga av den defekta noden kanske inte uppfattas . Detta kan leda till systemkollaps.<br />

7. Nätövervakning<br />

Nätet övervakas idag av kontrollern, vilket kan vara lämpligt även i framtiden då en separat<br />

övervakare för varje nod, vilket stöds i vissa protokoll, kan ta för mycket plats hårdvarumässigt<br />

sett.<br />

8. Acknowledge<br />

Spelar inte så stor roll varifrån ACK:et kommer.


Intern realtidskommunikation i framtida Svenska satelliter sid 73<br />

Martin Normark<br />

9. Routat eller broadcastat nät<br />

Broadcastat är bättre av flera anledningar. En del meddelanden är avsedda för flera noder, mindre<br />

åtgång av komponenter, kan vara enklare att implementera.<br />

10. Synkronisering av noder<br />

Någonstans mellan 0.1-1 ms.<br />

14. Frekvens på reglerloop<br />

ODIN har en reglerfrekvens på 16 Hz, denna storleksordning verkar rimlig även för framtida<br />

projekt<br />

15. Olika moder<br />

Ja, mass-minne till TMTC<br />

16. Nätverkets allmänna spridning<br />

Mycket viktigt, förenklar implementation, testning och beställning av instrument.<br />

17. Överlagring av information på kraftkabel<br />

Kan låta intressant vid en första anblick. Dock är det alltför riskabelt med tanke på potentiella<br />

kortslutningar m.m. Den eventuella viktbesparingen skulle antagligen ätas upp av de<br />

skyddsåtgärder som krävs.<br />

Svar på frågor Gunnar Andersson<br />

1. Bandbredd<br />

1-2 Mbps för telemetrin<br />

2. Redundans<br />

Sändning över två linor<br />

3. Förändring av endast en buss<br />

Endast en buss kan förändras, men även hopslagning är möjlig<br />

4. Fysiska avstånd<br />

< 5m<br />

5. Feldetektion<br />

Viktigt att kunna identifiera babbling idiots…<br />

6. Felhantering<br />

…och kunna stänga av dem<br />

7. Övervakning<br />

Idag: Platform supervisor tittar på health-meddelanden<br />

8. ACK:et<br />

Då noderna pollas idag, spelar detta ingen större roll<br />

9. Routat eller Broadcastat nät<br />

Broadcast medger enkel avlyssning<br />

10. Synkronisering<br />


Intern realtidskommunikation i framtida Svenska satelliter sid 74<br />

Martin Normark<br />

21. Stor fördel med samma elektriska interface som CAN<br />

Nej, egentligen inte<br />

23. Är allmän spridning viktig<br />

Ja, jätteviktigt. Lättare att hitta folk och utrustning<br />

24. Information på kraftkabel<br />

Befängd idé, då olika kraftnät används


Intern realtidskommunikation i framtida Svenska satelliter sid 75<br />

Martin Normark<br />

Appendix C VHDL-kod i CAN-shell<br />

Transmission_State_Machine<br />

---------------------------------------------------------------------------<br />

-- Entity declaration of 'Transmission_State_Machine'.<br />

---------------------------------------------------------------------------<br />

LIBRARY ieee, synplify ;<br />

USE ieee.std_logic_1164.all ;<br />

USE ieee.std_logic_arith.all ;<br />

USE ieee.std_logic_unsigned.all ;<br />

USE synplify.attributes.ALL ;<br />

ENTITY Transmission_State_Machine IS<br />

PORT(<br />

LOAD_SHIFT_REG : OUT std_ulogic_vector(12 DOWNTO 0) ;<br />

TX_REQUEST : OUT std_ulogic ;<br />

Clk : IN std_logic ; -- Clock<br />

Reset_n : IN std_logic ; -- Reset<br />

LOAD_ENABLE : IN std_ulogic_vector(1 DOWNTO 0) ;<br />

New_Frame_Tx : IN std_logic ;<br />

TRANSMITTER : IN std_ulogic ;<br />

TX_COMPLETE : IN std_ulogic ;<br />

Tx_Buffer_Empty : OUT std_logic ;<br />

BUSOFF_EVENT : IN std_logic ;<br />

INIT : OUT std_ulogic ;<br />

INIT_Request : IN std_logic ;<br />

BUSOFF : IN std_logic ;<br />

Message_Lost : OUT std_logic ;<br />

ID_Bit_28 : OUT std_ulogic ;<br />

PRIO : IN std_logic_vector(4 DOWNTO 0) := "00100" ) ;<br />

END ENTITY Transmission_State_Machine ;<br />

---------------------------------------------------------------------------<br />

-- Architecture 'a0' of 'Transmission_State_Machine'<br />

---------------------------------------------------------------------------<br />

ARCHITECTURE a0 OF Transmission_State_Machine IS<br />

-- State Machine Options:<br />

-- State assignment : Gray code.<br />

-- State decoding : Case construct.<br />

-- Actions on transitions: Combinational.<br />

-- Actions on states : Combinational.<br />

CONSTANT Configure : std_logic_vector(3 DOWNTO 0) := "0000" ;<br />

CONSTANT Idle : std_logic_vector(3 DOWNTO 0) := "0001" ;<br />

CONSTANT Check_Load_Status : std_logic_vector(3 DOWNTO 0) := "0011" ;<br />

CONSTANT Sending_Or_Receiving : std_logic_vector(3 DOWNTO 0) := "0010" ;<br />

CONSTANT Load_Register : std_logic_vector(3 DOWNTO 0) := "0110" ;<br />

CONSTANT Request_Transmission : std_logic_vector(3 DOWNTO 0) := "0111" ;<br />

CONSTANT Check_Bus_Off : std_logic_vector(3 DOWNTO 0) := "0101" ;<br />

CONSTANT Initialisation : std_logic_vector(3 DOWNTO 0) := "0100" ;<br />

CONSTANT Counter_addition : std_logic_vector(3 DOWNTO 0) := "1100" ;<br />

SIGNAL cur_state : std_logic_vector(3 DOWNTO 0) ; -- Current State<br />

SIGNAL next_state : std_logic_vector(3 DOWNTO 0) ; -- Next State


Intern realtidskommunikation i framtida Svenska satelliter sid 76<br />

Martin Normark<br />

SIGNAL LOAD_SHIFT_REG_INT : std_ulogic;<br />

shared variable Counter : std_logic_vector(6 DOWNTO 0);<br />

shared variable check : bit := '1';<br />

BEGIN<br />

LOAD_SHIFT_REG '1') WHEN LOAD_SHIFT_REG_INT='1' ELSE<br />

(OTHERS=>'0');<br />

next_state_decoding: PROCESS (cur_state, LOAD_ENABLE, New_Frame_Tx,<br />

TRANSMITTER, TX_COMPLETE, BUSOFF_EVENT, INIT_Request, BUSOFF) IS<br />

BEGIN<br />

next_state


Intern realtidskommunikation i framtida Svenska satelliter sid 77<br />

Martin Normark<br />

END IF ; -- Global transition<br />

END PROCESS next_state_decoding ;<br />

state_transition: PROCESS (Clk, Reset_n) IS<br />

BEGIN -- State transition<br />

IF (Reset_n='0') THEN<br />

cur_state


Intern realtidskommunikation i framtida Svenska satelliter sid 78<br />

Martin Normark<br />

IF Counter


Intern realtidskommunikation i framtida Svenska satelliter sid 79<br />

Martin Normark<br />

Message_Lost


Intern realtidskommunikation i framtida Svenska satelliter sid 80<br />

Martin Normark<br />

SEND_IDENTIFIER


Intern realtidskommunikation i framtida Svenska satelliter sid 81<br />

Martin Normark<br />

Appendix D VHDL-kod för test 5.1 och 6.1<br />

when 51 => -- Test 5.1<br />

-- After reset<br />

wait for 0 ns;<br />

LOAD_ENABLE '1',<br />

INIT_exp => '1',<br />

Message_Lost_exp => '1'<br />

);<br />

wait until clk_int = '1';<br />

-- Step 3)<br />

Compare_Outputs(<br />

Tx_Buffer_Empty_exp => '1'<br />

);<br />

losing_arbitration;<br />

re_win_arbitration;<br />

losing_arbitration;<br />

for J in 0 to 18 loop<br />

re_losing_arbitration;<br />

end loop;<br />

re_win_arbitration;<br />

losing_arbitration;<br />

re_win_arbitration;<br />

losing_arbitration;<br />

re_win_arbitration;<br />

-- Step 17)<br />

ID_Field_Standard_Tx


Intern realtidskommunikation i framtida Svenska satelliter sid 82<br />

Martin Normark<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

WAIT UNTIL clk_int='1';<br />

-- Step 19)<br />

Compare_Outputs(<br />

LOAD_SHIFT_REG_exp => "1111111111111",<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

WAIT UNTIL clk_int='1';<br />

-- Step 20)<br />

Compare_Outputs(<br />

TX_REQUEST_exp => '1',<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

WAIT ON LOAD_SHIFT_REG, TX_REQUEST, Tx_Buffer_Empty, INIT, Message_Lost,<br />

SEND_IDENTIFIER,<br />

SEND_CONTROL, SEND_DATA FOR 8*period;<br />

Compare_Outputs(<br />

TX_REQUEST_exp => '1',<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

LOAD_ENABLE '1',<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

-- Step 22)<br />

WAIT UNTIL clk_int='1';<br />

Compare_Outputs(<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

WAIT ON LOAD_SHIFT_REG, TX_REQUEST, Tx_Buffer_Empty, INIT, Message_Lost,<br />

SEND_IDENTIFIER,<br />

SEND_CONTROL, SEND_DATA FOR 10*period;


Intern realtidskommunikation i framtida Svenska satelliter sid 83<br />

Martin Normark<br />

Compare_Outputs(<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

LOAD_ENABLE ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

WAIT UNTIL clk_int='1';<br />

Compare_Outputs(<br />

LOAD_SHIFT_REG_exp => "1111111111111",<br />

SEND_IDENTIFIER_exp => ID_Bit_28 & ID_Field_Standard_Tx_c2 &<br />

ID_Field_Extended_Tx_c2,<br />

SEND_CONTROL_exp => Frame_Type_Tx_c2(0) & NOT Frame_Type_Tx_c2(1) &<br />

Data_Length_Tx_c2,<br />

SEND_DATA_exp => Data_Field_Tx_c2<br />

);<br />

REPORT "************** Test Result ***************";<br />

IF Test_OK = '0' THEN<br />

REPORT "Test 5.1 Failure";<br />

ELSE<br />

REPORT "Test 5.1 Success";<br />

END IF;<br />

REPORT "********** End of test 5.1 ***************";<br />

Disable_Clock -- Test 6.1<br />

-- After reset<br />

wait for 0 ns;<br />

LOAD_ENABLE '1',<br />

INIT_exp => '1',<br />

Message_Lost_exp => '1'<br />

);<br />

wait until clk_int = '1';<br />

-- Step 3)<br />

Compare_Outputs(<br />

Tx_Buffer_Empty_exp => '1'<br />

);<br />

losing_arbitration;<br />

re_win_arbitration;<br />

losing_arbitration;<br />

re_win_arbitration;


Intern realtidskommunikation i framtida Svenska satelliter sid 84<br />

Martin Normark<br />

losing_arbitration;<br />

re_win_arbitration;<br />

wait for 10*period;<br />

wait until clk_int = '1';<br />

START_OF_FRAME

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!