You are on page 1of 23

By TRIYUGO WINARKO

CPU Z80 pertama kali dibuat oleh Zilog


Corporation tahun 1975
Z80 menjadi sangat populer karena sifat-sifat
kerja dan kemudahan dalam perancangan
sistemnya
Hampir setiap orang di dunia ini yang bekerja
dan melakukan riset dalam bidang
mikroprosesor mengenal Z80 dengan baik,
dan menjadikannya sebagai CPU pertama
yang dipelajari
February 1, 2017

www.winarko.co.cc

Arsitektur Z80
Arsitektur Z80 didesain dengan mengaplikasikan
metode standard bus, yaitu address bus, data bus,
control bus
Arsitektur dasarnya mengikuti arsitektur Intel 8080,
oleh karena itu kode mesin Z80 dan 8080 memiliki
kemiripan, namun jumlah set instruksi berbeda yaitu
8080 memiliki 78 instruksi, sedang Z80 memiliki 158
instruksi
Type Z80 awal memiliki kemampuan kerja 2 MHz, Z80A
memiliki kemampuan kerja 4 MHz
Mulai pertengahan tahun 1980-an, Z80 ini telah
dikembangkan dengan teknologi CMOS bertipe
Z84C00. Tipe ini adalah produksi terakhir yang mampu
bekerja dengan frekuensi sampai dengan 16 MHz
February 1, 2017

www.winarko.co.cc

Arsitektur Z80 tipe CMOS


maupun non-CMOS

February 1, 2017

www.winarko.co.cc

Z80 bekerja pada tegangan tunggal +5V


Z80 memiliki internal register 208 bit, termasuk
diantaranya 6 buah general purpose register, yang
dapat digunakan terpisah (tiap 8 bit) maupun
sebagai pasangan register 16 bit
Tersedia pula instruksi exchange yang berfungsi
untuk melipatgandakan accumulator atau general
purpose register
Fasilitas Exchange ini dapat juga digunakan untuk
menunjang fungsi kerja semacam mode
foreground-background atau untuk menunjang
fungsi respon interrupt yang cepat
Z80 juga memiliki sebuah register Stack Pointer,
Program Counter, dua buah Index Register, sebuah
Refresh Register dan sebuah Interrupt Register
February 1, 2017

www.winarko.co.cc

Konfigurasi Pin Z80


System
Control
CPU
Control
Bus
Control

February 1, 2017

www.winarko.co.cc

Fungsi Pin Z80


A0-A15 adalah address bus, berfungsi sebagai output
dengan kapasitas 16 bit dengan posisi A0 sebagai LSB dan
A15 sebagai MSB
D0-D7 adalah data bus, berfungsi sebagai input atau
output dengan kapasitas 8 bit bidirectional, digunakan
untuk pertukaran data antara CPU dan memori atau I/O
CLK adalah clock, berfungsi sebagai input. Pada pin ini,
harus diberikan pulsa clock dari rangkaian oscillator agar
sistem dapat bekerja
RD adalah Read, berfungsi sebagai input , bersifat active
low. Bila pin aktif menunjukkan CPU menginginkan suatu
proses pembacaan data dari memori atau peralatan Input
WR adalah Write, berfungsi sebagai output , bersifat active
low. Bila pin aktif menunjukkan CPU menginginkan suatu
proses penulisan data ke memori atau peralatan output
February 1, 2017

www.winarko.co.cc

Fungsi Pin Z80


MREQ adalah Memory Request, befungsi sebagai output,
bersifat active low . Bila pin aktif menunjukkan address bus
sedang berisi alamat yang valid untuk suatu proses
read/write
IORQ adalah I/O Request, befungsi sebagai output, bersifat
active low . Bila pin aktif menunjukkan A7-A0 dari address
bus sedang berisi alamat I/O yang valid untuk suatu proses
read/write pada piranti I/O
BUSREQ adalah Bus Request, befungsi sebagai input, bersifat
active low . Bila pin aktif menunjukkan ada rangkaian luar
yang menginginkan akan menggunakan bus tersebut
BUSACK adalah Bus Acknowledge, befungsi sebagai output,
bersifat active low . Bila pin aktif menunjukkan busack
sedang memberitahu kepada rangkaian tertentu yang
sebelumnya meminta kepada CPU untuk menggunakan bus,
bahwa bus dapat digunakan
February 1, 2017

www.winarko.co.cc

Fungsi Pin Z80


INT adalah Interrupt Request, befungsi sebagai input,
bersifat active low . Bila pin ini diaktifkan maka CPU akan
melakukan interupsi terhadap program yang sedang
dijalankan, dan akan menuju ke suatu program yang telah
didefinisikan oleh instruksi INT. Alamat awal program rutin
interrupt ini disebut sebagai Interrupt Vector
NMI adalah NonMaskable Interrupt, befungsi sebagai
input, bersifat active low . NMI memiliki prioritas lebih
tinggi daripada INT. Pada setiap pemberian sinyal NMI,
CPU akan melakukan proses jump ke alamat 0066H
RESET adalah Reset, befungsi sebagai input, bersifat active
low . Bila pin ini diaktifkan maka akan menginisialisasi CPU
kembali ke posisi 0000H, semua register diclearkan, dan
status interrupt diset dalam mode 0. Untuk mendapat kan
hasil reset yang lengkap , sinyal Reset harus diberikan
minimal selama 3 siklus clock secara penuh
February 1, 2017

www.winarko.co.cc

Fungsi Pin Z80


HALT adalah Halt State, befungsi sebagai output, bersifat active
low. Bila pin ini aktif menunjukkan bahwa CPU telah mendapat
perintah Halt dari program untuk menghentikan proses kerja
sementara, sampai mendapat sinyal Interrupt atau NMI. Selama
proses Halt, CPU menjalankan instruksi NOP (no operation)
secara berulang untuk menjaga agar memori tetap valid
M1 adalah Machine Cycle One, befungsi sebagai output, bersifat
active low. M1 bersama dengan RFSH menunjukkan bahwa
siklus mesin yang sedang berjalan pada saat itu adalah opCode
fetch cycle (siklus pengambilan opCode)
RFSH adalah Refresh, befungsi sebagai output, bersifat active
low. RFSH dan M1 bersama-sama menunjukkan bahwa
konfigurasi A7-A0 pada address bus dapat digunakan sebagai
refresh address ke sistem memori dinamik
WAIT adalah Wait, befungsi sebagai input, bersifat active low.
Bila pin ini aktif berarti CPU sedang diberitahu bahwa memori
atau peralatan I/O belum siap memberikan datanya untuk
ditransfer. CPU menunda pekerjaannya sampai kontrol tidak
aktif

February 1, 2017

www.winarko.co.cc

10

Register-Register Z80
Z80 memiliki Read/Write memori yang disebut
register sebanyak 208 bit atau (26 register x 8
bit)
Memori dalam CPU sangat berguna bagi
programmer dalam pembuatan program
Register Z80 dibagi ke dalam 18 buah register
8 bit dan 4 buah register 16 bit

February 1, 2017

www.winarko.co.cc

11

Register Z80

February 1, 2017

www.winarko.co.cc

12

Accumulator (A) dan Flag Registers (F)


Z80 memiliki 2 buah memori register bebas dengan nama
khusus yaitu Accumulator dan Flag Register, masing-masing
terdiri dari 8 bit. Accumulator memiliki kemampuan khusus
dalam operasi aritmatika dan logika. Register ini paling sering
digunakan oleh programmer. Flag Register digunakan untuk
menunjukkan kondisi khusus pada operasi data yang terjadi di
Accumulator. Kedua register ini sering digunakan sebagai
pasangan register untuk operasi aritmatika dan logika

General Purpose Registers


Z80 memiliki register-register serbaguna yang dapat digunakan
sewaktu-waktu untuk menyimpan memori . Register-register ini
terdiri dari register B, C, D, E, H dan L. Masing-masing memiliki
register komplemen B, C, D, E, H dan L. Tiap register
berstruktur 8 bit. Bila diperlukan register 16 bit , maka dapat
disusun sebagai pasangan register BC, DE dan HL.
Komplemennya adalah BC, DE dan HL

February 1, 2017

www.winarko.co.cc

13

Special Purpose Registers


Program Counter (PC). Register ini bertugas memegang 16 bit
alamat setiap saat ketika CPU sedang melakukan proses fetch
data. PC secara otomatis akan bertambah dengan 1 bila sebuah
proses fetch data telah selesai. PC juga akan berubah bila terjadi
proses jump ke lokasi tertentu
Stack Pointer (SP). Register ini bertugas memegang 16 bit alamat
paling atas dari memori eksternal (RAM) setiap saat ketika
program sedang berjalan. External stack memory ini tersusun
dengan sistem LIFO. Data dapat di push dari suatu register ke
stack, atau di pop dari stack ke suatu register
Dua Index Registers (IX dan IY). Dua buah index register bebas ini
bertugas memegang 16 bit alamat yang digunakan dalam indexed
addressing mode. Dalam hal ini, isi index register digunakan
sebagai titik dasar hubungan CPU ke suatu daerah memori
tertentu dimana data disimpan atau diambil. Diperlukan sebuah
byte tambahan yang dimasukkan ke dalam instruksi index.
Dengan index register, memudahkan programmer dalam
penyusunan sistem pengalamatan misalnya dalam program yang
14
February 1, 2017
www.winarko.co.cc
membutuhkan tabel-tabel yang
banyak

Interrupt Page Address Registers (I). Z80 dapat


dioperasikan dalam mode tertentu dimana suatu
hubungan tak langsung ke memori dapat dicapai
dengan memberikan suatu interrupt. Pada operasi ini,
register I digunakan untuk menyimpan 8 bit alamat atas
dari alamat yang akan dituju, sedangkan 8 bit alamat
bawah akan diberikan oleh piranti yang melakukan
interrupt. Dengan keistimewaan ini sub rutin interrupt
dapat ditempatkan dimana saja di dalam memori sesuai
bentuk program yang diinginkan
Memory Rerfresh Registers (R). Z80 memiliki sebuah
memori refresh counter sehingga memungkinkan bagi
Z80 untuk dirangkai dengan dynamic memory bersamasama dengan static memory

February 1, 2017

www.winarko.co.cc

15

Arithmetic and Logic Unit


(ALU)

Bahasa mesin Z80 memiliki fasilitas-fasilitas untuk mengolah data dalam


operasi aritmatika dan logika. Operasi ini dilakukan dalam ALU , yaitu
suatu bagian rangkaian dalam CPU yang bertugas khusus mengolah data
dalam operasi aritmatika dan logika. ALU dapat mengolah data-data
dalam operasi :
Add
: Penambahan
Subtract : Pengurangan
Logical AND
: Logika AND dalam digital
Logical OR
: Logika OR dalam digital
Logical EX-OR
: Logika EX-OR dalam digital
Compare : Membandingkan dua data
Left/Right Shift
: Menggeser ke kiri / ke kanan
Left/Right Rotates : Rotasi ke kiri / ke kanan
Increment : Penambahan dengan 1
Decrement
: Pengurangan dengan 1
Set Bit
: Set logika pada bit tertentu
Reset Bit : Reset logika pada bit tertentu
Test Bit
: Melakukan test pada bit tertentu

February 1, 2017

www.winarko.co.cc

16

Register Instruksi dan Kontrol


CPU
Setiap instruksi yang diambil dari memori selalu
ditempatkan di dalam register instruksi untuk
kemudian didekode (dijabarkan maksudnya sesuai
bahasa mesin). Setelah didekode , bagian kontrol
CPU akan menjalankan perintah sesuai dengan
tugas menghasilkan sinyal-sinyal kontrol yang
dibutuhkan, misalnya sinyal kontrol read/write,
sinyal kontrol mengatur ALU, dan sinyal kontrol lain
untuk pengaturan rangkaian-rangkaian luar

February 1, 2017

www.winarko.co.cc

17

Indikator Status Flag


Register
Z80 mempunyai indikator status berupa Flag Register (F
dan F) yang dapat memberikan informasi kepada
programmer mengenai status CPU Z80 setiap waktu
pada saat CPU sedang bekerja
Posisi tiap bit Flag Register adalah sebagai berikut :
D7

D6

D5

D4

D3

D2

D1

D0

P/V

Keterangan :
C
= Carry Flag Z= Zero Flag
N
= Add/Subtract Flag S = Sign Flag
P/V = Parity/Over Flow Flag
X = tidak digunakan
H
= Half-Carry Flag
February 1, 2017

www.winarko.co.cc

18

Flag Register
Flag Register F dan F memiliki 6 bit informasi
status CPU Z80 yang dapat dites dan diset atau
direset melalui instruksi-instruksi dalam program
Bit-3 dan bit-5 tidak digunakan. 4 dari 6 bit yang
digunakan bersifat testable. Dengan instruksiinstruksi seperti conditional jump, call, atau return,
4 bit (C, P/V, Z, S) tersebut dapat diketahui
statusnya. 2 bit sisanya (H & N) tidak bersifat
testable dan hanya digunakan pada operasi
aritmatik BCD

February 1, 2017

www.winarko.co.cc

19

Teknik Interrupt CPU Z80


Interrupt adalah proses sisipan pelaksanaan suatu
subrutin dalam suatu program, yang tidak dilakukan
secara perangkat lunak, tetapi dilakukan dengan melalui
perangkat keras dengan pengaktifan sinyal-sinyal
interupt baik NMI maupun INT
Kegunaan dari suatu interrupt adalah untuk mengizinkan
suatu peralatan peripheral I/O atau sistem rangkaian lain
yang terhubung ke CPU , untuk menunda operasi yang
sedang dijalankan oleh CPU sewaktu-waktu pada saat
proses sedang berjalan
Di dalam CPU Z80 terdapat 2 buah Flip-Flop yang bekerja
untuk mengaktifkan interrupt, yaitu IFF1 dan IFF2

February 1, 2017

www.winarko.co.cc

20

Sistem Timing CPU Z80


CPU Z80 mempunyai 3 buah operasi dasar, yaitu :
Memory Read/Write (baca/tulis data pada memori)
I/O Device Read/Write (baca/tulis data pada piranti I/O)
Interrupt

Semua instruksi yang dimiliki Z80 sebenarnya hanyalah


pengembangan dari ketiga operasi dasar tsb
Setiap operasi membutuhkan 3-6 periode clock untuk dapat
menyelesaikan tugasnya, atau dapat diperpanjang untuk
mengupayakan sinkronisasi CPU dengan peralatan luar
Dalam operasi program, siklus mesin yang pertama (M1) dari
setiap instruksi adalah Fetch Cycle. Siklus ini membutuhkan 4-6
siklus, kecuali bila kontrol wait diaktifkan. Siklus berikutnya
biasanya perpindahan data antara CPU dengan memori atau
piranti I/O

February 1, 2017

www.winarko.co.cc

21

Waktu Eksekusi Instruksi


Z80
Z80 adalah mikroprosesor 8 bit, yang berarti memiliki 8 bit
data bus. Kombinasi logika yang mungkin pada data bus
bervariasi dari 00000000B sampai 11111111B atau ada
256 kemungkinan, yang berarti pula mempunyai maksimal
256 instruksi dasar (operation code) yang berbeda
Namun umumnya, programmer mikroprosesor tidak
menggunakan semua kombinasi logika untuk dijadikan
suatu instruksi dasar. Karena sebuah instruksi dasar masih
dapat dikembangkan menjadi instruksi-instruksi lanjutan
dengan menambahkan operand dibelakangnya
Penggunaan instruksi-instruksi dasar yang banyak,
cenderung menuntut programmer untuk menyediakan
energi yang lebih besar untuk menghafal dan mengerti arti
setiap instruksi

February 1, 2017

www.winarko.co.cc

22

Waktu Eksekusi Instruksi


Z80
Waktu eksekusi untuk setiap instruksi, dapat disimpulkan
sebagai berikut :
Operasi OpCode Fetch
: 4 T (Periode)
Operasi Memory Read
: 3 T (Periode)
Operasi Memory Write
: 3 T (Periode)
Operasi Data Read dari Input
: 4 T (Periode)
Operasi Data Write ke Output
: 4 T (Periode)
Bila dilihat dari jumlah byte, instruksi bahasa Assembler dibagi
menjadi 4 bagian :

February 1, 2017

Instruksi Assembly
Mnemonic/Kode Mesin
Single Byte
INC (HL)
34
Double Byte
LD A, 3EH
3E 3E
Tripple Byte
LD DE, 8090H
11 90 80
Quad ByteLD SP, (8000H)
ED 78 00 80

www.winarko.co.cc

23

You might also like