LV6 Fo6 Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna tudera en kommersiell processor - PU2/H2/M2 Aktivera Förra veckans mål: IN- och Utmatning (I/O); kriva program (för FLEX) Introduktion till PU2 Veckans mål: tudera PU2/H2/M2 Utvecklingsmiljön Eterm kriva assemblerprogram (för M2) Ansluta minnen och I/O-portar Dagens mål: tudera PU2/H2/M2 Kontrollstrukturer kriva assemblerprogram (för M2) Laboration 5 Digital o Datorteknik fo 6 DAA Decimal adjust A-reg LRA A/2 utan tecken ARA A/2 med tecken (ett negativt tal blir inte mindre än -!) EX ign ext A-reg b 7 B-reg -reg -reg Digital o Datorteknik fo 6 2 8-bit MUL (Unsign) MUL A-reg*B-regD-Reg (8 * 8 = 6 bit) 6-bit MUL.. (ign/unsign) D-reg*Y-reg Y:D-reg (6 * 6 = 32 bit) 6-bit DIV.. (ign/unsign) EMUL, EMUL EDIV, EDIV D-reg Y:D-reg / X-reg Y (kvot) D-rest (32 / 6 = 6 bit) Y D / X Y D D * Y A { Y B D Instruktioner för addition ABA Addera B till A (A)+(B) A ABX Addera B till X anm: Ekv. med LEAX B,X (X)+(B) X ABY Addera B till Y anm: Ekv. med LEAY B,Y (Y)+(B) Y ADA Addition med carry till A (A)+(M)+ A ADB Addition med carry till B (B)+(M)+ B ADDA Addition till A (A)+(M) A ADDB Addition till B (B)+(M) B ADDD Addition till D (A:B) (D)+(M:M+) D Digital o Datorteknik fo 6 3 Digital o Datorteknik fo 6 4
Instruktioner för addition IN Incrementera i minnet (M)+$ M INA Inkrementera A (A)+ $ A INB Inkrementera B (B)+ $ B IN INX INY Inkrementera P anm: Ekv. med LEA,P Inkrementera X anm: Ekv. med LEAX,X Inkrementera Y anm: Ekv. med LEAY,Y Digital o Datorteknik fo 6 (P)+ $ P (X)+ $ X (Y)+ $ Y 5 Instruktioner för subtraktion BA ubtrahera B från A (A)-(B) A BA ubtrahera med borrow från A (A)-(M)- A BB ubtrahera med borrow från B (B)-(M)- B UBA ubtrahera från A (A)-(M) A UBB ubtrahera från B (B)-(M) B UBD ubtrahera från D (A:B) (D)-(M:M+) D DE Dekrementera i minnet (M)-$ M DEA Dekrementera A (A)- $ A DEB Dekrementera B (B)- $ B DE Dekrementera P (P)- $ P anm: Ekv. med LEA -,P DEX Dekrementera X (X)- $ X anm: Ekv. med LEAX -,X DEY Dekrementera Y anm: Ekv. med Digital LEAY o Datorteknik -,Yfo 6 (Y)- $ Y 6 Logiska skiftoperationer Aritmetiska skiftoperationer LL Logiskt vänsterskift i minnet LLA Logiskt vänsterskift A b7 LLB Logiskt vänsterskift B LLD Logiskt vänsterskift D LR Logiskt högerskift i minnet LRA Logiskt högerskift A LRB Logiskt högerskift B LRD Logiskt högerskift D b b7 A b b7 B b7 b b7 b b7 A B b b AL Aritmetiskt vänsterskift i minnet (ekv. med LL) ALA Aritmetiskt vänsterskift A (ekv. med LLA) b7 ALB Aritmetiskt vänsterskift B (ekv. med LLB) ALD Aritmetiskt vänsterskift D (ekv. med LLD) AR ARA ARB Aritmetiskt högerskift i minnet Aritmetiskt högerskift A Aritmetiskt högerskift B b7 A b7 b b7 b B b b Digital o Datorteknik fo 6 7 Digital o Datorteknik fo 6 8 2
Instruktioner för rotation (carry-skift) ROL Rotation vänster via carry i minnet ROLA Rotation vänster via carry A b7 ROLB Rotation vänster via carry B ROR Rotation höger via carry i minnet RORA Rotation höger via carry A RORB Rotation höger via carry B b 7 b b Villkorlig programflödeskontroll Mnemonic Funktion Villkor Enkla flaggtest B Hopp om carry = B Hopp om IKE carry = BEQ Hopp om zero Z= BNE Hopp om IKE zero Z= BMI Hopp om negative N= BPL Hopp om IKE negative N= BV Hopp om overflow V= BV Hopp om IKE overflow V= Test av tal utan tecken BHI Villkor: R>M + Z = BH Villkor: RM = BLO Villkor: R<M = BL Villkor: RM + Z = Test av tal med tecken BGT Villkor: R>M Z + ( N V ) = BGE Villkor: RM N V = BLT Villkor: R<M N V = BLE Villkor: RM Z + ( N V ) = Digital o Datorteknik fo 6 9 Digital o Datorteknik OH LV 6 If Then End Kontrollstruktur if () {} Villkor JA NEJ if (Dipwitch!= ) HexDisp = Dipswitch; Bättre kodning TT BEQ LDAB TAB Dipwitch Dipwitch HexDisp Kontrollstruktur if () {} else {2} If Then Else End Villkor JA 2 NEJ if (Dipwitch >= 5) HexDisp = ; else HexDisp = 2; LDAB Dipwitch MPB #5 BLO else LDAB # TAB HexDisp BRA else LDAB #2 TAB HexDisp BNE Hopp om IKE zero Z= BEQ Hopp om zero Z= Digital o Datorteknik fo 6 Test av tal utan tecken BLO Villkor: R<M = Test av tal med tecken BLT Villkor: R<M N V = Digital o Datorteknik fo 6 2 3
while () {} While Then End Kontrollstruktur while () {} Villkor JA NEJ while (Dipwitch!= ) HexDisp = ; while _while LDAB TTB BEQ Dipwitch _while LDAB # TAB HexDisp BRA while BEQ Hopp om zero Z= Digital o Datorteknik fo 6 3 Kontrollstruktur do {} while () do {} while () LOOP UNTIL JA Villkor? NEJ do { HexDisp = ; }while (Dipwitch >= ); do MOVB Test av tal utan tecken BH Villkor: RM = #,HexDisp LDAB Dipwitch MPB # BH do Digital o Datorteknik fo 6 4 If villkor then If Then End Att testa bitar på inporten EN BIT Villkor NEJ if b 3 = then LDAA Inport ANDA #% BEQ --- --- LDAA Inport BITA #% BEQ --- Att testa bitar på inporten FLERA BITAR if (b 3 =) (b =) then goto BRET --- LDAA Inport ANDA #% MPA #% BEQ --- --- Inport,#%, --- Digital o --- Datorteknik fo 6 5 Digital o Datorteknik OH LV 6 6 If End Villkor JA 4
Mnemonic Funktion Villkor DBEQ Dekrementera innehåll i register. Hoppa om resultatet =. (register: A,B,D,X,Y,P) (register) register om(register)=; hoppa ; annars: nästa instruktion DBNE IBEQ IBNE TBEQ TBNE Dekrementera innehåll i register. Hoppa om resultatet. (register: A,B,D,X,Y,P) Inkrementera innehåll i register. Hoppa om resultatet =. (register: A,B,D,X,Y,P) Inkrementera innehåll i register. Hoppa om resultatet. (register: A,B,D,X,Y,P) Testa innehåll i register. Hoppa om resultatet =. (register: A,B,D,X,Y,P) Testa innehåll i register. Hoppa om resultatet. (register: A,B,D,X,Y,P) Digital o Datorteknik fo 6 (register) register om(register); hoppa ; annars: nästa instruktion (register) + register om(register)=; hoppa ; annars: nästa instruktion (register) + register om(register); hoppa ; annars: nästa instruktion om(register)=; hoppa ; annars: nästa instruktion om(register); hoppa ; annars: nästa instruktion 7 Delay-rutiner Delay( unsigned int count ) { while (count > ) count = count - ; } While Then End Villkor JA NEJ Delay LDD count Delay_loop Delay_ Digital o Datorteknik OH LV 6 UBD # BNE Delay_loop RT 8 Delay-rutiner Parameter count finns i register D vid anrop. Anm. count= är EJ TILLÅTET. * ubrutin 'Delay' Delay Delay_loop UBD # BNE Delay_loop RT instruktion UBD # BNE BNE RT antal ggr. count count count ount ( taken ) (not taken) = ( + 2 count) + UBD# ( count ) + BNE T ( count- ) + BNE NT ( ) + RT ( ) =? Delay-rutiner BNE (exekveringstider, dvs antal cykler, fås ur instruktionslistan) instruktion UBD # 2 BNE 3/ RT 5 # cykler = ( + 2 count) + 2 ( count ) + 3 ( count- ) + ( ) + 5 ( ) = 7 count + 4 Digital o Datorteknik OH LV 6 9 Digital o Datorteknik OH LV 6 2 5
Delay-rutiner Exempel: Bestäm count för ms fördröjning i ett M2-system Lösning: M2 Frekvens/ cykeltid 8 MHz/ 25 ns. Min. ( count = ) cykler Max. ( count = $FFFF) 458749 cykler,375 s 57,34 ms erieanslutning till OMport ML4 med inport och utport från M2 (7count 4)25 ns ms (7count 4)25 ns ns 4 count 25 428 7 Uppskatta motsvarande fördröjning i simulatorn Tar c:a 4 sekunder M2 med monitor debugger dbg2 26-polig flatkabel Olika I/O-sektioner Digital o Datorteknik OH LV 6 2 På ML4-kortet H2 med processorn PU2 och minne med monitorn dbg2 Anslutning 5V M2 dbg2 26-polig anslutning för laborationsutrustning. Exempelvis ML4ML Reset av labdatorn = tart av monitor Inport (Buffert 74H245) och utport (register 74H273 Monitorn väntar på ett kommando Memoryprocedur Disassembleprocedur Traceprocedur Loadprocedur 4 st hörnkontakter för att ansluta ett eller flera I/Okort ovanpå M2 Klockkristall erie-anslutning för som kopplas till OM-porten på P:n REET-knapp för M2. (monitorn startas om) 5V s indikator Ja mm? Nej Ja dasm? Nej Ja tr? Nej Ja l? Nej Ja go? Nej Goprocedur Kör programavsnitt. Man kan återgå till monitorn via Reset. Digital o Datorteknik fo 6 24 6
FFFF BFFF 8 7FFF 4 38 FFF 4 3FF FLAH (monitor/debugger) 3 3 32 33 34 35 36 37 38 39 3A 3B 3 3D FLAH (monitor/debugger) RWM ( RAM ) Externt IO-gränssnitt MH2 Interna register smap Bankat FLAH Dx256 tillgängligt för användarprogram. Räkna antal ettställda bitar i Register A (Dipwitch) 2. kriv antalet (register B) till HexDisplay 3. kriv en subrutin som räknar antal ettställda bitar i Register A och returnerar antalet i register B 4. kriv en subrutin som räknar antal ettställda bitar i Register D och returnerar antalet i register B 5. kriv en subrutin som omvandlar NBD-talet i register A till ett binärtal Digital o Datorteknik fo 6 25 26 Veckans mål: tudera PU2/H2/M2 Utvecklingsmiljön Eterm kriva assemblerprogram (för M2) Ansluta minnen och I/O-portar Dagens mål: n Bussar generellt Processorns anslutningar Timing VMA Valid Memory ess Fullständig Avk Ofullständig Avk Processorns adressrum LV6 Fo7 Lite om n RAM Random Access Memory RWM Read Write Memory RAM tatiskt RAM DRAM Dynamiskt ROM Read Only Memory PROM Programmable ROM EPROM Erasable PROM EEPROM Electrically EPROM FLAH Dig o Dat fo 7 27 Dig o Dat fo 7 28 7
Klocka Eclk Multiplexad Buss Klocka Processor (PU2) Kontrollbuss Buss Busscykel H2 Eclk Busscykel ess och databuss Busscykel Klocka. buss buss M2 eller någon processor Dig o Dat fo 7 29 Busscykel Busscykel Busscykel Inenhet Utenhet Icke Multiplexad Buss Dig o Dat fo 7 3 Klocka. buss trobe buss AK Här är adressen trobe Processor Här är data AK Klocka Asynkront Bussprotokoll Klocka Processor Processorn P PU2 Microcontroller H2 tar-tolvan (M92xxx) PU2 / H2 / M2 Klockkristall H2 Eclk Gemensam address och data-buss ynkront Bussprotokoll. buss buss En busscykel Dig o Dat fo 7 3 Micro-datorn M2 - Buss E (Eclk) Dig o Dat fo 7 32 8
M2: anslutningar Bussarnas tillstånd (Processorn M689) tyrsignaler REET Mikrodator M2 +5V Klockkristall GND (6) (8) tyrsignaler Processor $5A MA 5 Reg A $67 P A $236 $234 $235 Buss Buss klocka E kriv/läs R/W Buss Processorns adressrum $234 $235 $236 $237 $5A $B7 $5 $A $?? MINNE OP-kod TAA $5A Operand ( HI) Operand ( LO) Next OP UT port Dig o Dat fo 7 33 Dig o Dat fo 7 34 Bussarnas tillstånd (Processorn M689) M2 s-timing Maskincykel TAA $5A tar 5 klockcykler Eclk Klock- ess- - R/W Kommentar ykel buss buss 234 B7 R Läs OP-kod 2 235 5 R Läs -Operand Hög byte 3 236 A R Läs -Operand Låg byte 4 FFFF 5A?? 67 RW kriv Död ykel A till minnet 5 5A 67 W kriv A till minnet ess bussen buss Processorn lägger ut giltig adress t lägger ut data på bussen Här laddas (latchas) data in till processorn Dig o Dat fo 7 35 25 5 t (ns) VALID MEMORY ADRE; VMA VALID ADRE; VA Dig o Dat fo 7 36 9
In och Utportar på FLEX Hårdvara Arb s 66 Dagens mål: n Bussar generellt Processorns anslutningar TimingTiming VMA Valid Memory ess Fullständig Avk Ofullständig Avk Processorns adressrum Processor - Bussar krivare Mus etc Indata Inport Dator med processor och minne Utport Utdata Dig o Dat fo 7 37 Dig o Dat fo 7 38 In och Utportar på FLEX Arb s 66 In och Utportar på FLEX Arb s 67 Från omgivningen (8) Till omgivningen (8) OE P LD Register (8) Processor (PU) (8) (8) Inenheter Utenheter LDAA INPORT TAA UTPORT LDAA TAA Annan LDAA TAA INPORT UTPORT Dig o Dat fo 7 39 Dig o Dat fo 7 4
Arb s 33 In och Utportar på FLEX Arb s 68 väg P Reg A P LD LD B A OE A OE B 3 st styrsignaler från styrenhet Reg B P Reg T LD T D E Funkt Flaggor M ALU U 2 X in g U 2 3 2 P Reg R P LD R LD g g OE R OE P Reg I LD I OP-kod Flaggor P LD X MUX Reg OE X Reg X P Inc Dec LD OE P LD MA P IncP LD P OE P Reg MA P MR ess MW P ut in MR A7 A6 A5 A4 A3 A2 A A A A A A A MR P IO MW P MR P IO2 MW P IN. För inport ( FD 6 ) UT. För utport ( FD 6 ) IN2. För inport 2 ( FE 6 ) UT2. För utport 2 ( FE 6 ) Reset P tyrenhet Processor LDAA TAA $FD $FE LDAA TAA INPORT UTPORT2 4 Dig o Dat fo 7 42 In och Utportar på FLEX Arb s 68 In och Utportar på FLEX Arb s 69 P UT2 Utport 2 LD Register (8) IN (8) Inport OE MR MW P MR ut ess in IO IO2 > MR P MW P MR M W LDAA TAA $FD $FE LDAA TAA INPORT UTPORT2 Dig o Dat fo 7 43 Dig o Dat fo 7 44
slogik för en utport (hip elect logik; -logik) LD P (8) Register (8) Till omgivningen (8) TAA $5A TAA UTPORTADRE Ut Ut Ut2 Ut3 In In In2 In3 på adress $5A på adress $5A på adress $5A2 på adress $5A3 på adress $5A4 på adress $5A5 på adress $5A6 på adress $5A7 IO A 2 A A DATA I/O-modul Intern adressavkodning Om vi behöver flera I/O-portar??? 8 I/O-portar 8 8 8 8 Out Out In2 In3 Dig o Dat fo 7 45 Dig o Dat fo 7 46 A 5 IO IO Att ansluta en 2-kbyte RWM- modul med startadress $4 A 4 A 3 A 2 A A A 9 A 8 A 7 A 6 A 5 A 4 A 3 E IO A 2 A A IO A 2 A A _Out _In A 2 A A (kilja på ut och inportar) IO A 2 A A _Out _In3 2kByte RWMmodul A -A D 7 -D Arbetsgång: Tolka beskrivningen av minnesmodulen Rita tabell Ange modulens första adress Ange modulens sista adress Märk ut konstanta resp varierande adressledningar Rita adressavkodningslogiken VMA = E (Valid Memory Address) Dig o Dat fo 7 47 Dig o Dat fo 7 48 2
E/Elk M2 Att ansluta en 8-kbyte ROM- modul till ett befintligt system -logik för RWM Och ROM A 5 -A A 5 -A A -A RWM ROM 2kByte RWMmodul 8kByte ROMmodul A 2 -A Processorns adressrum Beskrivande figur över hur minnesmoduler och IO-portar är placerade i minnet 4 48 5A E Tomt RWM Tomt Tomt IO-port D 7 -D Dig o Dat fo 7 49 D 7 -D ROM Dig o Dat fo 7FFFF 5 Uppgift Uppgift Konstruera adressavkodningen för följande: 4 kbyte RWM från adress 8 kbyte ROM på de högsta adresserna En I/O-area på 256 Byte med start på adress $6 Du har tillgång till 8 kbyte ROM-modul 4 kbyte RWM-modul Använd fullständig adressavkodning om förra. men använd ofullständig adressavkodning! Konstruera adressavkodningen för följande: 4 kbyte RWM från adress 8 kbyte ROM på de högsta adresserna En I/O-area på 256 Byte med start på adress $6 Du har tillgång till 8 kbyte ROM-modul 4 kbyte RWM-modul Dig o Dat fo 7 5 Dig o Dat fo 7 52 3