LV6 Fo6 Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna tudera en kommersiell processor - U2/H2/M2 Aktivera Förra veckans mål: IN- och Utmatning (I/O); kriva program (för FLEX) Introduktion till U2 Veckans mål: tudera U2/H2/M2 Utvecklingsmiljön Eterm kriva assemblerprogram (för M2) essavkodning Ansluta minnen och I/O-portar Dagens mål: tudera U2/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 extend 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 b7 A b7 B b7 b7 b7 A 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 b7 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 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 () {atser} Villkor JA atser NEJ if (Dipwitch!= ) HexDisp = Dipswitch; Bättre kodning TT BEQ LDAB TAB end Dipwitch end Dipwitch HexDisp Kontrollstruktur if () {atser} else {atser2} If Then Else End Villkor JA atser atser 2 NEJ if (Dipwitch >= 5) HexDisp = ; else HexDisp = 2; LDAB Dipwitch MPB #5 BLO else LDAB # TAB HexDisp BRA end else LDAB #2 TAB HexDisp end 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 () {atser} Villkor JA atser NEJ while (Dipwitch!= ) HexDisp = ; while end_while LDAB TTB BEQ Dipwitch end_while LDAB # TAB HexDisp BRA while BEQ Hopp om zero Z= Digital o Datorteknik fo 6 3 Kontrollstruktur do {atser} while () do {} while () LOOP UNTIL JA atser 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 atser end If Then End Att testa bitar på inporten EN BIT Villkor atser NEJ if b 3 = then atser end LDAA Inport ANDA #% BEQ end --- atser end --- LDAA Inport BITA #% BEQ end end --- --- atser Digital o Datorteknik fo 6 5 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 6 4
Delay-rutiner Delay( unsigned int count ) { while (count > ) count = count - ; } While Then End Villkor JA atser NEJ Delay LDD count Delay_loop Delay_end UBD # BNE Delay_loop RT 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 ( ) =? Digital o Datorteknik OH LV 6 7 Digital o Datorteknik OH LV 6 8 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 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. (7count 4)25 ns ms Min. ( count = ) cykler (7count 4)25 ns ns 4 count 25 428 7 Uppskatta motsvarande fördröjning i simulatorn Max. ( count = $FFFF) 458749 cykler,375 s 57,34 ms Tar c:a 4 sekunder Digital o Datorteknik OH LV 6 9 Digital o Datorteknik OH LV 6 2 5
H2 med processorn U2 och minne med monitorn dbg2 Anslutning 5V erieanslutning till OMport 26-polig anslutning för laborationsutrustning. Exempelvis ML4ML ML4 med inport och utport från M2 Inport (Buffert 74H245) och utport (register 74H273 erie-anslutning för som kopplas till OM-porten på P:n REET-knapp för M2. (monitorn startas om) 4 st hörnkontakter för att ansluta ett eller flera I/Okort ovanpå M2 Klockkristall 5V s indikator M2 med monitor debugger dbg2 26-polig flatkabel Olika I/O-sektioner På ML4-kortet Reset av labdatorn = tart av monitor M2 dbg2 FFFF FLAH (monitor/debugger) Minnesmap Monitorn väntar på ett kommando Memoryprocedur Disassembleprocedur Traceprocedur Loadprocedur BFFF 3 3 32 33 34 35 36 37 38 39 3A 3B 3 3D Bankat FLAH Dx256 mm? Nej dasm? Nej tr? Nej l? Nej go? Nej Ja Ja Ja Ja Ja Goprocedur Kör programavsnitt. Man kan återgå till monitorn via Reset. 8 7FFF 4 38 FFF 4 3FF FLAH (monitor/debugger) RWM ( RAM ) Externt IO-gränssnitt MH2 Interna register Minne tillgängligt för användarprogram Digital o Datorteknik fo 6 23 Digital o Datorteknik fo 6 24 6
. 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 Veckans mål: tudera U2/H2/M2 Utvecklingsmiljön Eterm kriva assemblerprogram (för M2) essavkodning Ansluta minnen och I/O-portar Dagens mål: Minnen Bussar generellt Processorns anslutningar Timing VMA Valid Memory ess essavkodning Fullständig Avk Ofullständig Avk Processorns adressrum LV6 Fo7 25 Dig o Dat fo 7 26 Lite om Minnen RAM Random Access Memory Kontrollbuss RWM RAM DRAM Read Write Memory tatiskt RAM Dynamiskt essbuss buss ROM PROM EPROM Read Only Memory Programmable ROM Erasable PROM Klocka Processor (U2) EEPROM FLAH Electrically EPROM Inenhet Utenhet Minne Dig o Dat fo 7 27 Dig o Dat fo 7 28 7
Klocka Eclk Buss Busscykel H2 Eclk Busscykel ess och databuss Busscykel Klocka. buss Multiplexad Buss M2 eller någon processor essbuss buss Klocka. buss trobe buss AK trobe essbuss Processor buss AK Här är adressen Här är data Minne Klocka Asynkront Bussprotokoll Klocka essbuss Processor buss Minne buss Busscykel Busscykel Busscykel Icke Multiplexad Buss Dig o Dat fo 7 29 ynkront Bussprotokoll. buss buss En busscykel Dig o Dat fo 7 3 U2 / H2 / M2 M2: anslutningar Processorn U2 essbuss buss +5V essbuss (6) Microcontroller H2 tar-tolvan (M92xxx) H2 Eclk Gemensam address och data-buss tyrsignaler REET Mikrodator M2 Klockkristall Klockkristall buss (8) tyrsignaler Micro-datorn M2 essbuss - Buss E (Eclk) Dig o Dat fo 7 3 GND Dig o Dat fo 7 32 8
M2 s-timing Maskincykel Eclk ess bussen buss Processorn lägger ut giltig adress 25 5 VALID MEMORY ADRE; VMA VALID ADRE; VA Minnet lägger ut data på bussen Här laddas (latchas) data in till processorn t (ns) Dig o Dat fo 7 33 Dagens mål: Minnen Bussar generellt Processorns anslutningar TimingTiming VMA Valid Memory ess essavkodning Fullständig Avk Ofullständig Avk Processorns adressrum Processor - Bussar Minne krivare Mus etc Dig o Dat fo 7 34 In och Utportar på FLEX Hårdvara Arb s 66 Från omgivningen (8) In och Utportar på FLEX Arb s 66 Till omgivningen (8) Indata Dator med processor och minne Utdata OE buss (8) LD Register (8) buss (8) Inport Utport LDAA INPORT TAA UTPORT Dig o Dat fo 7 35 Dig o Dat fo 7 36 9
In och Utportar på FLEX Arb s 67 Arb s 33 väg LD MA Reg MA essbuss Processor (U) essavkodning LD A Reg A LD B Reg B D Funkt M U 2 X in 3 2 LD R g g Reg T LD T E Flaggor ALU g U 2 Reg R LD LD X MUX Reg Reg X Inc Dec LD IncP LD P P MR MW ess Minne ut in Inenheter Utenheter Minne OE A OE B LD I OE R Reg I OE OE X OE OE P MR buss 3 st styrsignaler från styrenhet OP-kod Flaggor LDAA TAA Annan LDAA TAA INPORT UTPORT Reset tyrenhet Processor Dig o Dat fo 7 37 38 In och Utportar på FLEX Arb s 68 In och Utportar på FLEX Arb s 68 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 ) UT2 Utport 2 LD Register (8) IN buss (8) Inport OE LDAA TAA $FD $FE LDAA TAA INPORT UTPORT2 LDAA TAA $FD $FE LDAA TAA INPORT UTPORT2 Dig o Dat fo 7 39 Dig o Dat fo 7 4
essavkodningslogik för en utport (hip elect logik; -logik) LD buss (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 essavkodning 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 4 Dig o Dat fo 7 42 A 5 IO essavkodning 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 essbuss A -A buss 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 43 Dig o Dat fo 7 44
E/Elk M2 Att ansluta en 8-kbyte ROM- modul till ett befintligt system -logik för RWM Och ROM essbuss 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 buss D 7 -D Dig o Dat fo 7 45 D 7 -D ROM Dig o Dat fo 7FFFF 46 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 47 Dig o Dat fo 7 48 2