Parallax Propeller: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
k robot Erbij: de:Parallax Propeller
Tiborv (overleg | bijdragen)
k sp, typo's, gram
Regel 1:
De [[Parallax (bedrijf)|'''Parallax''']] '''Propeller''', of '''P8X32''' zoals het ding officieel heet, is een [[multiprocessing|multiprocessor]] [[microcontroller]] met acht 32-bit [[RISC]] CPU kernen. Hij werd geïntroduceerd in 2006, and heeft een zeer bijzondere architectuur, zoals te zien is in deze afbeelding. [http://www.parallax.com/images/propeller/PropellerBlock.gif].
Zijn architectuur is speciaal ontworpen voor het genereren van (een of meerdere) video signalenvideosignalen, maar hij is ook zeer bruikbaar voor een groot scala aan andere taken, waarvan sommige dingen heel moeilijk, of helemaal niet, met andere microcontrollers mogelijk zou zijn.
 
==Multicore architectuur==
Elk van de acht [[32-bit]] kernen, die als COG's aangeduid worden, heeft een elementaire ALU (een instructie om te delen is bijvoorbeeld niet aanwezig, maar een deel instuctiedeelinstructie, of andere mathematische instructie, kan wel middels de ingebouwde mathematische tabellen uitgevoerd worden), en elke COG heeft toegang tot 512 32-bit geheugen locaties, waarvan er 496 als RAM geheugen uitgevoerd zijn, en 16 bedoeld zijn voor het benaderen van de registers van speciale hardware zoals counters etc. Het RAM geheugen kan instructies en data bevatten, maar elke locatie kan ook opgevat worden als een CPU register. Zelf modificerende code is niet alleen mogelijk, maar sommige machine taal instructies maken er zelfs intern gebruik van. Zo is er een instructie die een andere instructie (de "RETURN" instructie) modificeert, en daarna een "JUMP" doet naar een willekeurig adres. Hiermee wordt een CALL/RETURN subroutine mechanisme gemaakt die werkt zonder een stack nodig te hebben.
De toegang tot een, (door de acht COG's gedeeld) 32KB RAM en 32KB ROM geheugen (elk als 8K 32-bit woorden uitgevoerd) wordt gecontroleerd door een "bus controller" de de naam "the hub" draagt, en die op een "round robin" (rotatie schema) manier elke COG even toegang geeft. Elke COG heeft daarbij ook steeds toegang tot alle 32 beschikbare I/O poorten, twee hardware counters, en twee speciale "Video registers" die de COG assisteren bij het opwekken van een PAL/NTSC compatibel composiet video signaal.
 
==Zeer hoge executie snelheid==
De eerste versie van de propeller (er zijn er nog meerdere in ontwikkeling) draait op een klok snelheid van 32KHz tot 80 MHz Bij een 80MHz klok kan de ingebouwde geïnterpreteerde SPIN programmeertaal kan ongeveer 80.000 8-bit tokens per seconde interpreteren, per COG. Ofwel 640.000 SPIN instructies per seconde. De Propeller kan echter ook direct machinetaal instructies uitvoeren, en aangezien deze ongeveer vier klok perioden per instructie gebruiken kan de propeller 20MIPS per COG uitvoeren, ofwel 160 MIPS in totaal voor alle acht COGs.
 
==Energie zuinigheid==
De propeller is zeer zuinig, daar hij op 3,3 Volt werkt, en slechts 75mA verbruikt als alle COG's vol in gebruik zijn, op hun volle snelheid. Wanneer een COG echter niet nodig is wordt hijdeze automatisch uitgezet en verbruikt dan vrijwel geen stroom meer. Dit en het feit dat de de kloksnelheid onder software controle zeer sterk omlaag geschroefd kan worden (desnoods naar 32KHz) betekendbetekent dat de propeller zeer zuinig met energie kan omgaan. In de zuinigste stand gebruikt hij dan zelfs slechts enkele microamperes, en kan daarop voor vele maanden draaien op enkele penlichtpenlight batterijtjes.
 
==Ingebouwde kristal oscillator==
Regel 17:
==Ingebouwde ROM==
 
De ingebouwde ROM bevat een aantal bruikbare faciliteiten, bijvoorbeeld een computer fontcomputerfont, dat gebruikt kan worden bij het opwekken van TC signalen, of om een LCD aan te sturen. Verder bevat het diverse mathematische tabellen waarmee sinussen gegenereerd kunnen worden, en voor het doen van "snelle [[Fourier transformatie]]", maar ze kunnen ook gebruikt worden om het gebrek aan rekenkundige mogelijkheden van de CPU te ondervangen, door bijvoorbeeld te assisteren bij het doen van delingen en vermenigvuldegingenvermenigvuldigingen. tenslotte bevat de ROM firmware, om op te kunnen starten, en voor het uitvoeren van de "byte code interpreter" waarmee de speciale SPIN programmeertaal wordt uitgevoerd.
 
==Ingebouwde SPIN Bytecode interpreter==
De propeller heeft een ingebouwde [[Bytecode]] [[interpreter]] voor de speciaal voor de propeller ontworpen hogere programmeertaal genaamd 'SPIN'. Dit is een object georiënteerde programmeertaal waarvoor een (gratis) ontwikkelings omgeving bestaat, genaamd "The propeller tool", deze draait (voorlopig alleen) onder Windows XP (en Vista). SPIN draait veel langzamer dan de eigen machinetaal van een COG, maar is niet gebonden aan de 2K geheugen limiet van een COG, en is veel zuiniger met geheugen omdat elke instructie in slechts één byte is opgeslagen, in plaats van de vier die elke machinetaal instructie behoeft. Deze oplossing lijkt een beetje op die van de [[ARM9]] processors, die 8-bit "thumb" code instructies kunnen gebruiken voor "compacte langzame code" en 32-bit instructies voor de rest, alleen doet de propeller dit met [[firmware]], in plaats van met een hoop extra hardware. De propeller kan in elk van zijn acht COG's een kopie laden van de "SPIN code interpreter", dus kunnen er acht SPIN programma's tegelijk draaien. SPIN is snel genoeg om in software dingen te doen zoals het nabootsen van een snelle [[UART]]. Vanuit een in SPIN geschreven programma kan de propeller echter ook (in een andere COG) machinetaal programma's starten.
 
==32 I/O poorten==
Regel 30:
 
==Virtuele I/O toestellen==
De ontwerp keuzes die de ontwerper van de propeller gemaakt heeft (ja, hij is voornamelijk door slechts één persoon ontwikkeld), draagt er sterk toe bij dat de propeller chip geen speciale I/O interfaces, zoals [[AD-converter|A/D]] en [[DA-converter|D/A]] converters, [[RS232]], [[IIC-bus|I2C]] en [[SPI]] seriële interfaces, of andere speciale interface hardware nodig heeft, deze kunnen namelijk allemaal met software, en de ingebouwde tellers, nagebootst worden. het is zelfs mogelijk een complete [[Video Display Controller]] in software na te bootsen. Dit wordt bijvoorbeeld gebruikt in de "[[Hydra spel console]]", en op een propeller gebaseerd systeem waarbij een hobbyist zelf zijn eigen videospelletjes kan ontwikkelen. Het is zelfs mogelijk om direct een radio frequent ([[VHF]]) TV signaal, (inclusief audio) op te wekken, dat rechtstreeks op de antenne ingang van een TV kan worden aangesloten. Maar ook kan een [[VGA]] monitor aangesloten worden.
het is zelfs mogelijk om direct een radio frequent ([[VHF]]) TV signaal, (inclusief audio) op te wekken, dat rechtstreeks op de antenne ingang van een TV kan worden aangesloten. Maar ook kan een [[VGA]] monitor aangesloten worden.
 
Software bibliotheken zijn beschikbaar waarmee vele verschillende oplossingen geboden worden voor het nabootsen van I/O apparaten, bijvoorbeeld voor het aansturen van de motoren in robots, maar ook vele andere interfaces, zoals [[USB]], [[MIDI]], [[MMC-kaart|MMC]] geheugen kaartjes, etc. Er is zelfs al software voor het nabootsen van een complete [[synthesizer]].
 
==Interrupt mechanisme==
Interessant aan de propeller is ook dat hij geen interrupts gebruikt, of nodig heeft. Waneer je de propeller aan een zeer snelle chip wilt interfaceinterfacen, bijvoorbeeld aan een Ethernet chip, dan gebruik je gewoon één COG voor de interface, die ook met een snel "polling" mechanisme doet waarvoor anders een interrupt nodig zou zijn.
 
==Opstart mechanisme==
Als een propeller ge(her)start wordt, door eneen voedingsstoring, interrupt, of door software, dan laadt het de boot codebootcode firmware in een van de COG's en voert deze uit. Deze software kijkt heel even of er commando's komen van een (in software nagebootste UART, en als dat niet zo is laadt hij SPIN code van een externe EEPROM (middels een ook in software opgewekte I2C interface)
Daarna laadt hij een SPIN code interpretor in een COG, en deze voert het in SPIN geschreven programma uit. Vanuit de SPIN code kunnen op andere COG's andere programma's opgestart worden, dat kunnen dan andere kopieën zijn van de SPIN interpretor, maar ook andere machinetaal programma's