370 likes | 739 Views
EE-2623 Mikroprosesor & Antarmuka. Materi 2 Team Dosen 2007. Dasar Sistem Mikroprosesor. Mikroprosesor. Data Bus. Address Bus. Control Bus. Memory. I/O. Timing Diagram Read Cycle. Timing Diagram Write Cycle. Mikroprosesor i8088 & i8086. GND. 1. 40. VCC. GND. 1. 40. VCC.
E N D
EE-2623Mikroprosesor & Antarmuka Materi 2 Team Dosen 2007
Dasar Sistem Mikroprosesor Mikroprosesor Data Bus Address Bus Control Bus Memory I/O
GND 1 40 VCC GND 1 40 VCC AD14 2 39 AD15 A14 2 39 A15 AD13 3 BHE/S7 38 A16/S3 A13 3 38 A16/S3 AD12 4 MN/MX MN/MX 37 A17/S4 A12 4 37 A17/S4 AD11 5 RD RD 36 A18/S5 A11 5 36 A18/S5 AD10 6 35 A19/S6 A10 6 35 A19/S6 AD9 7 34 A9 7 34 SS0 AD8 8 8086 WR WR 33 A8 8 8088 33 AD7 9 IO/M M/IO 32 AD7 9 32 AD6 10 DT/R DT/R 31 HOLD AD6 10 31 HOLD AD5 11 DEN DEN 30 HLDA AD5 11 30 HLDA AD4 12 29 AD4 12 29 AD3 13 INTA INTA 28 AD3 13 28 AD2 14 TEST TEST 27 AD2 14 27 AD1 15 26 AD1 15 26 AD0 16 25 ALE AD0 16 25 ALE NMI 17 24 NMI 17 24 INTR 18 23 INTR 18 23 CLK 19 22 READY CLK 19 22 READY GND 20 21 RESET GND 20 21 RESET Data Bus untuk i8088 dan i8086 Data Bus
GND 1 40 VCC AD14 2 39 AD15 AD13 3 BHE/S7 38 A16/S3 AD12 4 MN/MX 37 A17/S4 AD11 5 RD 36 A18/S5 AD10 6 35 A19/S6 AD9 7 34 AD8 8 8086 WR 33 AD7 9 M/IO 32 AD6 10 DT/R 31 HOLD AD5 11 DEN 30 HLDA AD4 12 29 AD3 13 INTA 28 AD2 14 TEST 27 AD1 15 26 AD0 16 25 ALE NMI 17 24 INTR 18 23 CLK 19 22 READY GND 20 21 RESET • INTR: Interrupt Request • Aktif pada saat level high • Masukan • Di monitor pada cycle clock terakhir setiap instruksi • NMI: Nonmaskable interrupt • Positif Edge triggered signal • Masukan • Tidak dapat di-masked (enable/disable) secara s/w
GND 1 40 VCC AD14 2 39 AD15 AD13 3 BHE/S7 38 A16/S3 AD12 4 MN/MX 37 A17/S4 AD11 5 RD 36 A18/S5 AD10 6 35 A19/S6 AD9 7 34 AD8 8 8086 WR 33 AD7 9 M/IO 32 AD6 10 DT/R 31 HOLD AD5 11 DEN 30 HLDA AD4 12 29 AD3 13 INTA 28 AD2 14 TEST 27 AD1 15 26 AD0 16 25 ALE NMI 17 24 INTR 18 23 CLK 19 22 READY GND 20 21 RESET Clock - Mikroprosesor membutuhkan clock untuk sinkronisasi semua aktifitasnya - Maksimum 10 MHz - Clok generator : i8284
GND 1 40 VCC AD14 2 39 AD15 AD13 3 BHE/S7 38 A16/S3 AD12 4 MN/MX 37 A17/S4 AD11 5 RD 36 A18/S5 AD10 6 35 A19/S6 AD9 7 34 AD8 8 8086 WR 33 AD7 9 M/IO 32 AD6 10 DT/R 31 HOLD AD5 11 DEN 30 HLDA AD4 12 29 AD3 13 INTA 28 AD2 14 TEST 27 AD1 15 26 AD0 16 25 ALE NMI 17 24 INTR 18 23 CLK 19 22 READY GND 20 21 RESET • Reset • Menghentikan aktifitas mp saat itu • masukan • Aktif ‘high’ • Kondisi register di dalam mikroprosesor setelah reset:
Kondisi Reset / Bootup • Q : Alamat (IO / Memori) berapa yang diaksesolehuPpadasaatpertama kali bootup (sesudah reset) ? • A : Memori • Q : Tahudarimana yang diaksesmemori? • A : Register CS diisi FFFF • Q : Memangnyadipeta I/O tidakadasegmen? • A : Tidakadakarenapeta I/O hanya 64 kB • Q : Apa yang andatahutentangsegmen? Ukuran? Jenis? • A : Ukuransegmen 64kB, Jenis 4 : Code, Data, Stack, Extra • Q : Alamat (IO / Memori) berapa yang diaksesolehuPpadasaatpertama kali bootup (sesudah reset) ? • A : AlamatMemori FFFF0 yang diaksesolehuPpadasaatpertama kali bootup (sesudah reset)
GND 1 40 VCC AD14 2 39 AD15 AD13 3 BHE/S7 38 A16/S3 AD12 4 MN/MX 37 A17/S4 AD11 5 RD 36 A18/S5 AD10 6 35 A19/S6 AD9 7 34 AD8 8 8086 WR 33 AD7 9 M/IO 32 AD6 10 DT/R 31 HOLD AD5 11 DEN 30 HLDA AD4 12 29 AD3 13 INTA 28 AD2 14 TEST 27 AD1 15 26 AD0 16 25 ALE NMI 17 24 INTR 18 23 CLK 19 22 READY GND 20 21 RESET • READY: • Masukan • Aktif‘high’ • Digunakanuntukmemasukkanwaktutunggu (wait state), untukaksesmemoriatau I/O yang lambat.
GND 1 40 VCC AD14 2 39 AD15 AD13 3 BHE/S7 38 A16/S3 AD12 4 MN/MX 37 A17/S4 AD11 5 RD 36 A18/S5 AD10 6 35 A19/S6 AD9 7 34 AD8 8 8086 WR 33 AD7 9 M/IO 32 AD6 10 DT/R 31 HOLD AD5 11 DEN 30 HLDA AD4 12 29 AD3 13 INTA 28 AD2 14 TEST 27 AD1 15 26 AD0 16 25 ALE NMI 17 24 INTR 18 23 CLK 19 22 READY GND 20 21 RESET • Fungsi pin 24 s/d 31 dari 8088 dan 8086 berubah sesuai mode yang digunakan, max atau min Mode Min Mode Max Logic 1 Logic 0 RQ / GT0 RQ / GT1 LOCK S2 S1 S0 QS0 QS1 * Pin-pin diatas digunakan untuk sinyal kontrol memori dan I/O
Q&A uP 8088 • Q : kenapa 8088 dibagimenjadi BIU dan EU? • A : sesuaifungsi, yaitu BIU menghitungalamat, EU menghitung data • Q : apabedanya ALU di BIU dengan ALU di EU? • A : ALU di BIU menggabungkan 16 bit offset dengan 16 bit segmenmenjadi 20 bit alamatfisik, sedangkan ALU di EU menghitung data 8/16 bit dengan data 8/16 bit menjadi 8/16/32 bit
Fungsi BIU • Sebagaiantarmuka(pengalamatan) denganperipheral diluarmikroprosesor. • Bertanggungjawabterhadapsemuaoperasi bus eksternal, seperti : • Instruction fetch • Operasibaca-tulismemoriatau I/O • Antrianinstruksidanperhitunganalamat (PA)
Fungsi EU (Execution Unit) • Bertanggungjawabterhadap decoding dan executing instruksi • Mengambilinstruksidari Queue • Transfer data daridanke general purpose Registers • Check & update flag . • Perhitunganalamat operand (EA) • Memberiperintahke BUI untukoperasimemoriatau I/O
Register di dalam 8088/8086 Catatan : register general 16 bit tidakbisadigunakanbersamaandengan register general 8 bit, contoh : movax,bltidakdilayani
Akses Memori • Sebelum 8088, uPmepunyaimemorisekitar 64 kB • Digunakanuntukpenyimpan : os, program aplikasidan data
SP BP SI DI Peta memori dan I/O 8088/8086 00000 0000 IP Input / output Address space CS DS SS ES AH AL BH BL CH CL DH DL Limit PC 9FFFF FFFF FFFFF
Peta Memori FFFFF ? Data Program Aplikasi Program 00200 Operating System BIOS 00000 8 bit
Mengatur Memori • Aplikasi : 48 kB • Sisakan dulu bagian atas memori untuk data • 10 kB data • 38kB <= program • memori untuk data adalah sisa • Ukuran memori data bisa sangat kecil
Solusi Intel • Segmentasi • Membagi memori menjadi blok-blok 64 kB secara dinamis • Dipisahkan blok memori menjadi blok fungsi • 64 kB untuk program Code Segment • 64 kB untuk data Data Segment • 64 kB untuk stack Stack Segment • 64 kB untuk tambahan data (option) Extra Segment
Aplikasi 48 kB : 38 kB program + 10 kB data • Tanpa segment • Alamat awal program 200h • Alamat akhir program 99FFh Tugas programmer • Alamat awal data 9A00h • Alamat akhir data C1FFh • Contoh : ambil data ke-100 acc mov acc,9A64 • Dengan segmen • Alamat awal program 0000h di Code Segment • Alamat akhir 9800h di Code Segment Dilakukan oleh mesin • Alamat awal data 0000h di Data Segment • Alamat akhir data 2800h • Contoh : ambil data ke-100 acc • Mov acc,0064
StatisvsDinamis 64 KB SS 64 KB 64 KB ES 64 KB ES 64 KB DS 64 KB 64 KB 64 KB SS 64 KB 64 KB CS 64 KB 64 KB DS 64 KB 64 KB 64 KB 64 KB CS 64 KB OS OS 64 KB 64 KB BIOS BIOS 64 KB
Segment • Karena tersedia lebih dari 4 segment, maka bisa dibuat lebih dari 1 kelompok segment • multi tasking • Pindah program (task) hanya mengubah segment Setiap program bisa dimulai dari alamat 0000 Program1 Program2 Program3 0000 0000 0000
Contoh : DS FFFFF X 0064 2070F DS : XXXX DS 0700 20700 DS : 2000 DS 0100 10100 DS : 1000 00000
Perhitungan alamat fisik (Physical Address) • Segmen untuk Program : • Format : CS : IP IP=95F3 Adder physical address A0-A19=2E5F3 CS=2500 0 Geser kiri CS satu digit • Segmen untuk Data : • Format : DS : EA (Effective Address) EA=95F3 Adder physical address A0-A19=2E5F3 DS=2500 0 Geser kiri DS satu digit
Perhitungan alamat fisik (Physical Address) Cont’d • Segmen untuk Stack : • Format : SS : SP SP=95F3 Adder physical address A0-A19=2E5F3 SS=2500 0 Geser kiri SS satu digit • Note : • Physical Address • Logical Adress
Ciri alamat segment • Tidakbisadiletakkandialamatawalselain xxxx0 • Alamatsegmenterakhirpasti F000 • Contoh: CS= F100 tidakboleh • Min CS:IP F100:0000 alamatfisik F1000 • Maks CS:IP F100:FFFF alamatfisik 100FFF diluarbatasmaksimum FFFFF
Contoh lain • CS:1000, offset : FFFF fisik : 1FFFF • Fisik:2FFFF, ES:2100 offset:EFFF
H/W Segment BIU C - BUS • Program • IP offset • CS segment • Data • Offset sesuai mode pengalamatannya • DS segment • Stack • SP offset • SS segment 4 ES INSTRUCTION 3 STREAM CS BYTE 2 QUEUE SS 1 DS IP CONTROL SYSTEM A - BUS EU AH AL BH BL CH CL ALU DH DL SP BP OPERAND SI FLAGS DI
H/W alamat BIU C - BUS • Alamat program • IP offset • CS segment • Fisik:IP + CS(digeser) • Contoh • IP:2345 4 ES INSTRUCTION 3 STREAM CS BYTE 2 QUEUE SS 1 DS IP CONTROL SYSTEM A - BUS EU AH AL BH BL CH CL ALU DH DL SP BP OPERAND SI FLAGS DI
Perintah PUSH • Asumsi : SP=1236,AX=24B6,DI=85C2,DX=5F93 • Perhatikan isi stack setiap dijalankan perintah sbb: • PUSH AX PUSH DI PUSH DX
Perintah POP • Asumsi : SP=1230, • Perhatikan isi stack setiap dijalankan perintah berikut : • POP AX POP DX POP BX