Presentation laddar. Vänta.

Presentation laddar. Vänta.

William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.

Liknande presentationer


En presentation över ämnet: "William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner."— Presentationens avskrift:

1 William Sandqvist william@kth.se 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.

2 William Sandqvist william@kth.se 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's Guide to use the PICGuide to use the PIC

3 William Sandqvist william@kth.se 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 igenom arbetsregistret, W-reg. Detta är PIC-processorns ”getingmidja”.

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

5 William Sandqvist william@kth.se 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 som utnyttjar det bästa från RISC …

6 William Sandqvist william@kth.se Fetch and Execute PIC har Harvard arkitektur och kan därför hämta Fetch en instruktion samtidigt som den exekverar Execute en annan. Efter var fjärde oscillator-klockcykel har en instruktion utförts. ( = två stegs pipeline) Med 4 MHz klocka innebär det 1.000.000 instruktioner/sek. Varje instruktion tar således 1  s.

7 William Sandqvist william@kth.se 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.

8 William Sandqvist william@kth.se 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,d ADDWF f,0; W=f+W eller ADDWF f,1; f=f+W På samma sätt: SUBWF f,d Assemblerinstruktioner skrivs som förkortningar mnemonics.

9 William Sandqvist william@kth.se Fler Byteoperationer 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 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 CLRW resp CLRF f ( Instruktionen MOVF f,1; f=f verkar meningslös – men den påverkar ”flaggorna” och kan därför faktiskt förekomma ibland ). Move betyder egentligen Copy!

10 William Sandqvist william@kth.se 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+k SUBLW k; W=W-k

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

12 William Sandqvist william@kth.se Programhopp GOTO k Programhopp CALL k Subrutinanrop RETURN Återhopp Vid GOTO ändras PC till värdet av Literal k som för denna instruktion är 10 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.

13 William Sandqvist william@kth.se 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-resultat INCFSZ 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).

14 William Sandqvist william@kth.se 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.

15 William Sandqvist william@kth.se 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.

16 William Sandqvist william@kth.se 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.

17 William Sandqvist william@kth.se 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

18 William Sandqvist william@kth.se 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, RETURN tar alltid 2 cykler, DECFSZ, INCFZ, BTFSC, BTFSS tar bara två cykler när det blir ”skip”.

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

20 William Sandqvist william@kth.se 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! )

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

22 William Sandqvist william@kth.se 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; } }

23 William Sandqvist william@kth.se 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


Ladda ner ppt "William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner."

Liknande presentationer


Google-annonser