1 / 24

PIC

PIC. PIC ( P eripheral I nterface C omputer) är en datorkrets med ”allt i ett”. Prog Mem . Programminnet är 2048 instruktioner långt. File Reg . Dataminne 224 Byte och specialregister. Specialregistren är kopplade till I/O, tex. pinnarna. File Reg.

thao
Download Presentation

PIC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner långt. File Reg. Dataminne 224 Byte och specialregister. Specialregistren är kopplade till I/O, tex. pinnarna. William Sandqvist william@kth.se

  2. File Reg PIC-processorns data-minne är Register File. Den består av SFR, speciella funktions-register, och GPR general purpose-register som är det egentliga dataminnet. SFR-registren är kopplade till processorns I/O. Seiichi Inoue'sGuide to use the PIC William Sandqvist william@kth.se

  3. PC, IR, ALU, W-registret Prog Count, PC. Programräknar-registret pekar ut var i programmet man är. Det räknas upp automatiskt efter varje utförd instruktion. Inst Reg, IR. Instruktionsregistret håller koden för aktuell instruktion. ALU. Aritmetisk Logisk Enhet sköter beräkningarna. De allra flesta operationerna går igenomarbetsregistret, W-reg. Detta är PIC-processorns ”getingmidja”. W William Sandqvist william@kth.se

  4. Harvard vs Von Neumann • Von Neumann arkitekturen har en gemensam buss för instruktioner och data. • Harvard arkitekturen harskilda bussar för instruk- tioner och data. Harvard är (dubbelt) snabbare … William Sandqvist william@kth.se

  5. CISC vs RISC • CISC (Complex Instruction Set Computer) Ex. Intel PC, som har 700 instruktioner. • RISC (Reduced Instruction Set Computer) Ex. Microchip PIC, som har 33 instruktioner. Dessa begrepp är idag föråldrade. Numera är Intel-processorerna visserligen fortfarande CISC – men de har avancerad arkitektur utnyttjar det bästa från RISC … William Sandqvist william@kth.se

  6. KIA’s fabrik i Slovenien En bil i minuten lämnar bandet – tar det en minut att bygga en bil? Nej för KIA's fabrik utanför Zilina tar det 18 mantimmar att bygga en bil (detta är ändå världsrekord! Toyota behöver c:a 30 mantimmar). Lösningen är en Pipeline. 18 timmar är 1080 minuter, så bygget kan ske parallellt vid 1080 enminutersstationer. Fabriken har 3000 anställda som arbetar i treskift, dvs 1000 arbetare per skift. Många av station-erna är således helt robotiserade. William Sandqvist william@kth.se

  7. Fetch and Execute PIC har Harvard arkitektur och kan därför hämta Fetch en instruktion samtidigt som den exekverar Execute en annan. Det tar 8 klockcykler att utföra en instruktion. Vi har en två stegs pipeline, så det blir därför en instruktion färdig efter var fjärde oscillator-klockcykel.Med 4 MHz klocka innebär det 1.000.000 instruktioner/sek.Varje instruktion tar således 1 s. William Sandqvist william@kth.se

  8. Instruktionsformat PIC är en klassisk RISC-processor med bara 33 instruktioner … • Instruktionerna är 14 bitar • OP-koden vad som ska göras – är 6 bitar (eller 3 bitar). • Resten av bitarna används för att tala om – med vad det ska göras. William Sandqvist william@kth.se

  9. Byte operationer Ex. Addition av tal i FILE, dataminnet, och arbets-registret W. Resultatet lagras i arbetsregistret eller dataminnet – och det ursprungliga talet skrivs över. ADDWF f ,dADDWF f,0; W=f+W ellerADDWF f,1; f=f+W Assemblerinstruktioner skrivs som förkortningar mnemonics. På samma sätt: SUBWF f,d William Sandqvist william@kth.se

  10. Fler Byteoperationer Vissa specialfall av addition och subtraktion, öka med ett respektive minska med ett, har egna instruktioner. Liksom 0-ställning av register. INCF f,d DECF f,d CLRWrespCLRF f Vill man kopiera innehåll mellan minne och arbetsregistret gör man det med MOVF f,0; W=f eller mellan arbetsregistret och minnet med MOVWF f; f=W ( Instruktionen MOVF f,1; f=fverkar meningslös – men den påverkar ”flaggorna” och kan därför faktiskt förekomma ibland ). Move betyder egentligen Copy! William Sandqvist william@kth.se

  11. Programkonstanter Programkonstanter som talet 17 eller tecknet ’A’ och liknande, lagras inuti instruktioner. k är en ”Literal”, en Bytekonstant, som lagras i instruktionen MOVLW k; W=k. Vid exekveringen placeras konstanten i arbetsregistret. Fler Literal-instruktioner: ADDLW k; W=W+kSUBLW k; W=W-k William Sandqvist william@kth.se

  12. Bitoperationer PIC-processorn har direkta bitoperationer. BCF f,b0-ställ bit b i File nr f (bitarna numreras 0…7)BSF f,b1-ställ bit b i f William Sandqvist william@kth.se

  13. Programhopp GOTO kProgramhopp CALL kSubrutinanropRETURNÅterhopp Vid GOTO ändras PC till värdet av Literal k som för denna instruktion är 11 bitar (och två extra bitar från register PCLATH). PC fortsätter exekvera programmet på nytt ställe. Vid CALL sparas först PC:s värde i ett stackregister, därefter görs som vid GOTO. Vid RETURN hämtas PC:s värde tillbaks från stackregistret och programmet fortsätter med instruktionen som följer efter anrops-instruktionen. William Sandqvist william@kth.se

  14. Vilkortest, skip PIC-processorn har några instruktioner som testar om vilkor är uppfyllda och i så fall hoppar över, skip, nästa instruktion. Nästa instruktion är då oftast en GOTO instruktion. DECFSZ f,d; f - 1 men skip ”nästa” om 0-resultatINCFSZ f,d; f +1 skip om 0 (register kan ”slå runt”!)BTFSC f,b; skip om bit b i f är 0 (Clear)BTFSS f,b; skip om b i f är 1 (Set) Detta bakvända tänkande ”låt bli att hoppa om…” är lite speciellt för PIC och inte vanligt för andra processortyper! (glöm det när kursen är slut). William Sandqvist william@kth.se

  15. Varför skip? Utfallet av ett test innebär ofta att man behöver göra en extra instruktion som man annars inte skulle göra. skip-instruktionen hoppar över denna extra instruktion, och eftersom hopp alltid tar dubbelt så lång tid som andra instruktioner så tar instruktionsföljden lika lång tid att exekvera oavsett testets utfall! Detta är en finess med PIC-processorernas instruktionsuppsättning. William Sandqvist william@kth.se

  16. NOP No Operation Processorer har i allmänhet en instruktion som gör ”ingenting”. Den kan läggas till för att utjämna tids-skillnader mellan olika vägar i program. William Sandqvist william@kth.se

  17. Portar Av PIC-kretsens pinnar är 8 samlade till en PORTA och 8 till en PORTB. Pinnarna kan även användas ensamma, och som synes kan de ha många alternativa funktioner. William Sandqvist william@kth.se

  18. Tris-register Om en pinne ska användas som ingång eller utgång avgörs av ett TRIS-register. TRISA och TRISB Om ”motsvarande” bit i trisregistret är 1 används portpinnen som ingång, om den är 0 som utgång! TRIS = Threestate William Sandqvist william@kth.se

  19. Hur lång tid tar instruktionerna? Processorns interna klocka arbetar med ¼ av kristall-frekvensen. Vanligt är 4 MHz kristall och då blir det 1 MHz klockfrekvens. De flesta operationer utförs på en klock-cykel dvs. tar 1s. De instruktioner som påverkar PC tar två klock-cykler dvs. 2 s. GOTO, CALL, RETURNtar alltid 2 cykler, DECFSZ, INCFZ, BTFSC, BTFSStar bara två cykler de gånger det blir ”skip”. William Sandqvist william@kth.se

  20. PIC Instruktionsuppsättning William Sandqvist william@kth.se

  21. Assemblerprogram init CLRF PORTB; MOVLW 11111110b; MOVWF TRISB;loop BTFSS PORTB,1; GOTO lampoff;lampon BSF PORTB,0; GOTO loop;lampoff BCF PORTB,0; GOTO loop; end; Programmet tänder och släcker lysdioden på kom-mando från strömbrytaren. ( Detta går naturligtvis lika bra utan PIC – men då är det ju ingen sport! ) William Sandqvist william@kth.se

  22. Kommenterat assemblerprogram Assemblerprogram är så kallad "spagettiprogram-ering". Det blir lättare att följa programhoppen när man ritar ut pilar. William Sandqvist william@kth.se

  23. C-program /* onoffred.c *//* Red lightdiode on/off *//* with contact */#define ON 1 #define OFF 0 #include "16F628.h" #pragma config |= 0x3f90#pragma bit lightdiode @ RB0 #pragma bit contact @ RB1 void main( void) { TRISB = 0b11111110; /* RB0 out, RB1 in */ while(1) { if(contact == ON) lightdiode = ON; else lightdiode = OFF; } } Detaljerad förklaring senare William Sandqvist william@kth.se

  24. Nedladdningsformat Programkoden laddas ned till chippet med en kretsprogram-merare. Det använda formatet är en textfil med op-koderna som en följd av Hex-siffror. Så här ser nedladdningskoden ut för det tidigare programexemplet. :100000008601FE308600861C072806140328061089 :020010000328C3 :00000001FF Slut på filen. William Sandqvist william@kth.se

More Related