Pages

10/17/2014

Microprosesor Zilog-80

ZILOG Z80



Salah satu mikroprosesor Z80 pertama kali dibuat, cap tanggal dari bulan Juni 1976.
Sebuah CMOS Z80 dalam QFP paket.
The Z80 Zilog adalah 8-bit mikroprosesor yang dirancang dan dijual oleh Zilog dari Juli 1976 dan seterusnya. Ia banyak digunakan baik di desktop dan embedded komputer desain serta untuk keperluan militer. The Z80 dan turunannya dan klon membentuk salah satu yang paling umum digunakan CPU keluarga sepanjang masa, dan, bersama dengan Teknologi MOS 6502 keluarga, mendominasi pasar-bit microcomputer 8 dari akhir 1970-an ke pertengahan 1980-an.
Walaupun Zilog melakukan upaya-upaya awal dengan maju komputer mini- seperti versi arsitektur-Z80 ( Z800 dan Z280 ), chip ini tidak pernah tertangkap. Perusahaan ini juga berusaha keras di workstation pasar dengan perusahaan Z8000 dan 32-bit Z80000 (keduanya tidak terkait dengan Z80). Dalam beberapa dekade terakhir Zilog kembali memfokuskan pada pasar yang terus berkembang untuk embedded system (untuk yang asli dan Z80 Z180 dirancang) dan yang paling baru Z80-kompatibel mikrokontroler keluarga, sepenuhnya pipelined 24-bit eZ80 dengan linear 16 MB address kisaran, telah berhasil diperkenalkan samping Z180 sederhana dan produk Z80.
Zilog Z80 lisensi desain untuk setiap perusahaan ingin membuat perangkat bebas royalti  meskipun banyak produsen Eropa Timur dan Rusia membuat salinan yang tidak berlisensi. Hal ini memungkinkan perusahaan kecil itu produk untuk mendapatkan penerimaan di pasar dunia sejak sumber kedua dari perusahaan jauh lebih besar seperti Toshiba mulai memproduksi perangkat. Akibatnya, Zilog telah membuat kurang dari 50% dari Z80s sejak konsepsi.
Sejarah Singkat dan ikhtisar
Sebuah Mei 1976 iklan untuk mikroprosesor Zilog Z-80 8-bit.
The Z80's asli DIL40 pinout paket chip.
Z80 itu muncul ketika Federico Faggin , setelah bekerja pada 8080 , meninggalkan Intel pada akhir tahun 1974 untuk Zilog ditemukan dengan Ralph Ungermann , dan dengan Juli 1976 mereka memiliki Z80 di pasar. Hal ini dirancang untuk menjadi biner kompatibel dengan Intel 8080 sehingga sebagian kode 8080, terutama CP / M sistem operasi , akan berjalan tidak dimodifikasi di atasnya. Masatoshi Shima , co-desainer dari 4004 dan 8080 juga memberikan kontribusi terhadap perkembangan Z80 yang .
Z80 menawarkan perbaikan nyata banyak selama 8080:
  • Sebuah ditingkatkan instruksi set termasuk manipulasi bit, pindah blok, blok I / O, dan instruksi pencarian byte
  • Baru IX dan IY register indeks dengan instruksi untuk dasar langsung + offset pengalamatan
  • Sebuah sistem yang lebih baik mengganggu
    • Yang lebih otomatis dan umum sistem mengganggu vektoralisasi , modus 2, serta vektor tetap sistem interrupt, modus 1, untuk sistem sederhana dengan hardware minimal (mode 0 sebagai modus 8080-kompatibel).
    • Sebuah non maskable interrupt (NMI) yang dapat digunakan untuk merespon untuk mematikan situasi dan / atau peristiwa prioritas tinggi lainnya (dan memungkinkan sistem Z80 minimalis dengan mudah menerapkan tingkat mengganggu skema-dua dalam mode 1).
    • Dua terpisah file mendaftar , yang dapat cepat diaktifkan, untuk mempercepat respon terhadap interupsi
  • Kurang hardware yang dibutuhkan untuk catu daya, pembangkit jam dan interface ke memori dan I / O
    • Single 5 Volt power supply (yang dibutuhkan-5V 8080 / +5 V / +12 V)
    • Fasa-tunggal 5 jam V (8080 diperlukan -fase tinggi-amplitudo jam dua generator)
    • Built-in DRAM refresh mekanisme yang seharusnya harus disediakan oleh sirkuit eksternal
    • Non-multiplexing bus (yang 8080 telah negara-sinyal multiplexing ke data bus)
Z80 mengambil alih dari 8080 dan keturunannya, yang 8085 , di pasar prosesor, dan menjadi salah satu bit CPU 8-yang paling populer. Mungkin kunci keberhasilan awal yang Z80 adalah built-in refresh DRAM, dan fitur lainnya yang memungkinkan sistem akan dibangun dengan dukungan chip lebih sedikit (di kemudian hari, sistem Z80 sebagian besar telah embedded system , yang biasanya menggunakan RAM statis dan karenanya tidak membutuhkan refresh ini).
Untuk yang asli NMOS desain, frekuensi clock ditentukan batas atas berturut-turut meningkat dari 2,5 pengantar MHz , melalui terkenal 4 MHz (Z80A), sampai dengan 6 (Z80B) dan 8 MHz (Z80H). A CMOS versi juga dikembangkan dengan batas frekuensi tertentu berkisar dari 4 MHz hingga 20 MHz untuk versi yang dijual hari ini. Versi CMOS juga memungkinkan sebuah-daya tidur rendah dengan keadaan internal saldo (tidak memiliki batas frekuensi yang lebih rendah). The derivatif sepenuhnya kompatibel HD64180 / Z180 dan eZ80 saat ini ditentukan untuk sampai dengan 33 dan 50 MHz masing.
Deskripsi Teknis
model Programming dan register set
Model pemrograman dan register set yang konvensional dan mirip dengan yang berhubungan x86 keluarga. The 8080 register kompatibel AF, BC, DE, HL merupakan duplikasi sebagai dua bank terpisah dalam Z80, di mana prosesor dapat dengan cepat beralih dari satu bank ke bank yang lain, fitur berguna untuk mempercepat tanggapan untuk tunggal tingkat prioritas tinggi menyela. Fitur ini hadir dalam Datapoint 2200 tetapi tidak dilaksanakan oleh Intel pada 8008. The-register set dual masuk akal sebagai Z80 (seperti kebanyakan mikroprosesor pada waktu itu) benar-benar ditujukan untuk tertanam digunakan, bukan untuk komputer pribadi, atau belum-to-be diciptakan komputer rumah . Hal ini juga ternyata cukup berguna untuk manual assembly sangat dioptimalkan coding. Beberapa perangkat lunak, terutama game untuk MSX , Sinclair ZX Spectrum dan berdasarkan Z80 perakitan komputer lain mengambil optimasi Z80 untuk tingkat yang agak ekstrim, menggunakan register digandakan antara lain.

Arsitektur Z80.
Register
Seperti pada 8080, 8-bit register biasanya digabungkan untuk menyediakan versi 16-bit. 8080 register yang kompatibel adalah:
  • AF - 8-bit akumulator (A) dan bit bendera (F) membawa, nol, minus, paritas / overflow, setengah membawa (digunakan untuk BCD ), dan sebuah Tambah / Kurangi bendera (biasanya disebut N) juga untuk BCD
  • SM - 16-bit data / alamat mendaftar atau dua register 8-bit
  • DE - 16-bit data / alamat mendaftar atau dua register 8-bit
  • HL - 16-bit akumulator / alamat mendaftar atau dua register 8-bit
  • SP - stack pointer, 16 bit
  • PC - program counter, 16 bit
Register baru yang diperkenalkan dengan Z80 adalah:
  • IX - indeks 16-bit atau register dasar untuk kompensasi langsung 8-bit
  • IY - indeks 16-bit atau register dasar untuk kompensasi langsung 8-bit
  • I - vektor base register interupsi, 8 bit
  • R - DRAM refresh counter, 8 bit ( MSB tidak masuk hitungan)
  • AF '- alternatif (atau bayangan) akumulator dan bendera (toggle dalam dan keluar dengan EX AF, AF')
  • BC, DE, dan HL '- alternatif (atau bayangan) register (toggle masuk dan keluar dengan EXX)
  • Empat bit status mengganggu dan status modus interrupt
Tidak ada akses langsung ke register alternatif, melainkan dua instruksi khusus, EX AF, AF 'dan EXX,setiap matikan salah satu dari dua multiplexer flip-flop ; ini memungkinkan switch konteks cepat untuk rutin layanan interupsi: EX AF, AF 'mungkin digunakan sendiri (untuk dan cepat mengganggu rutinitas sederhana benar-benar) atau bersama-sama dengan EXX untuk menukar seluruh AF, BC, DE, HL disusun; masih jauh lebih cepat daripada menekan register yang sama pada lebih lambat (, lebih rendah prioritas stack, atau multi level interrupts biasanya menggunakan stack untuk register toko).
Register refresh, R, kenaikan setiap kali CPU mengambil suatu opcode (atau opcode prefix) dan karena itu tidak ada hubungan sederhana dengan pelaksanaan program. Ini kadang-kadang digunakan untuk menghasilkan pseudorandom nomor dalam permainan, dan juga dalam skema perlindungan perangkat lunak. Ini juga telah digunakan sebagai "perangkat keras" counter di beberapa desain, sebuah contoh yang terkenal dari hal ini adalah ZX81 , yang memungkinkan itu melacak posisi karakter pada layar TV dengan memicu interrupt pada membungkus di sekitar (dengan menghubungkan INT untuk A6) .
Register vektor interupsi, saya, digunakan untuk mode 2 Z80 spesifik interupsi (dipilih oleh IM 2 instruksi). Ini pasokan byte tinggi dari alamat dasar untuk masuk meja 128 dari service rutin alamat yang dipilih melalui pointer yang dikirim ke CPU dalam suatu interupsi mengakui siklus; rendah byte dasar alamat tetap nol. itu pointer ini mengidentifikasi chip perifer tertentu dan / atau fungsi perifer atau peristiwa, di mana chip biasanya terhubung dalam disebut rantai daisy untuk resolusi prioritas. Seperti register refresh, register ini juga kadang digunakan kreatif, dalam mode mengganggu 0 dan 1 dapat digunakan sebagai data lain hanya 8-bit register.
Bahasa assembly Z80
Latar Belakang - yang Datapoint 2200 dan Intel 8008
Yang pertama Intel 8008 bahasa assembly didasarkan pada a) sintaks sederhana (namun sistematis sangat diwarisi dari 2200 Datapoint desain. Ini sintaks asli kemudian berubah menjadi bentuk baru yang agak lebih tradisional, bahasa assembly untuk chip yang asli yang sama 8008. Pada waktu yang sama, bahasa assembly baru ini juga diperluas untuk mengakomodasi mengatasi kemungkinan ditambahkan dalam Intel 8080 chip lebih maju (yang 8008 dan 8080 sama-sama memiliki subset bahasa tanpa biner yang kompatibel, sedangkan 8008 sebenarnya kompatibel biner dengan Datapoint 2200 Namun).
Dalam proses ini, L mnemonik, untuk LOAD, digantikan oleh berbagai singkatan dari kata-kata LOAD, STORE dan PINDAHKAN, bercampur dengan huruf simbolik lainnya. Huruf M mnemonic, untuk memori (direferensikan oleh HL), diangkat keluar dari dalam instruksi mnemonic untuk menjadi sintaksis berdiri bebas operan, sedangkan register dan kombinasi dari register menjadi sangat tidak konsisten dinotasikan; baik oleh operan disingkat (MVI D, LXI H dll ),. dalam instruksi mnemonic itu sendiri (LDA, LHLD dll), atau keduanya pada waktu yang sama (LDAX B, Stax D dll).
Datapoint 2200
& i8008
i8080
Z80
i8086/i8088
ca -1973
ca 1974
1976
1978
LBC
MOV B,C
LD B,C
MOV BL,CL
--
LDAX B
LD A,(BC)
MOV AL,[BX]
LAM
MOV A,M
LD A,(HL)
MOV AL,[BP]
LBM LBM
MOV B,M
LD B,(HL)
MOV BL,[BP]
-- -
STAX D
LD (DE),A
-- -
LMA
MOV M,A
LD (HL),A
MOV [BP],AL
LMC
MOV M,C
LD (HL),C
MOV [BP],CL
LDI 56
MVI D,56
LD D,56
MOV DL,56
LMI 56
MVI M,56
LD (HL),56
MOV byte ptr [BP],56
-- -
LDA 1234
LD A,(1234)
MOV AL,[1234] MOV
-- -
STA 1234
LD (1234),A
MOV [1234],AL
-- -
-- -
LD B,(IX+56)
MOV BL,[SI+56]
-- -
-- -
LD (IX+56),C
MOV [SI+56],CL
-- -
-- -
LD (IY+56),78
MOV byte ptr [DI+56],78
-- -
LXI B,1234
LD BC,1234
MOV BX,1234
-- -
LXI H,1234
LD HL,1234
MOV BP,1234
-- -
SHLD 1234
LD (1234),HL
MOV [1234],BP
-- -
LHLD 1234
LD HL,(1234)
MOV BP,[1234]
-- -
-- -
LD BC,(1234)
MOV BX,[1234]
-- -
-- -
LD IX,(1234)
MOV SI,[1234]
Ilustrasi dari empat sintaks, menggunakan sampel setara, atau (untuk 8086), beban dan menyimpan instruksi serupa sangat. [23]
Sintaks baru
 Intel telah mengklaim hak cipta pada mnemonik perakitan mereka. Namun lain sintaks perakitan Oleh karena itu dikembangkan, namun kali ini dengan pendekatan yang lebih sistematis:
  • Semua register dan pasangan mendaftar secara eksplisit dinotasikan dengan nama lengkap mereka
  • kurung Round secara konsisten digunakan untuk menunjukkan "isi memori di" (tipuan, atau dereferencing pointer) dengan perkecualian beberapa instruksi lompat.
  • Semua instruksi load dan store menggunakan nama mnemonic yang sama, LD, untuk LOAD (kembali ke kosa kata sederhana Datapoint 2200); instruksi umum lainnya, seperti ADD, INC dll, menggunakan mnemonic yang sama tanpa memandang mode pengalamatan atau ukuran operan. \Hal ini dimungkinkan karena operan sendiri membawa informasi yang cukup.
Prinsip-prinsip ini membuat mudah untuk menemukan nama dan bentuk untuk semua instruksi Z80 baru, serta orthogonalizations dari yang lama, seperti LD SM, (1234) di atas.
Ini adalah untuk melihat kemiripan antara Z80 dan 8086 sintaks, seperti yang digambarkan oleh meja. Selain perbedaan penamaan, dan meskipun perbedaan tertentu dalam struktur register dasar, keduanya hampir isomorf untuk sebagian besar instruksi. Apakah hal ini disebabkan beberapa pengaruh yang umum pada kedua tim desain (di atas 8080 , seperti PDP-11 ), sifat kompetitif dari relasi antara dua desain, atau mungkin hanya soal selera, adalah, sejauh ini, tidak menentu.
Instruksi set dan pengkodean
Z80 menggunakan 252 dari 256 kode yang tersedia sebagai opcode byte tunggal ("root instruksi"); empat kode yang tersisa digunakan secara luas sebagai prefiks opcode: CB dan ED memungkinkan instruksi tambahan dan DD atau FD memilih IX + d atau IY + d masing-masing (dalam beberapa kasus tanpa perpindahan d) di tempat HL. Skema ini memberikan Z80 dengan sejumlah besar permutasi dari instruksi dan register; Zilog mengkategorikan ini ke dalam 158 berbeda "jenis instruksi", 78 yang sama dengan orang-orang dari Intel 8080 (memungkinkan pengoperasian 8080 program pada sebuah Z80 ). Dokumentasi Zilog kelompok instruksi lebih lanjut ke dalam kategori berikut:
  • 8-bit aritmatika dan operasi logika
  • 16-bit aritmatika
  • 8-bit beban
  • 16-bit beban
  • Bit set, reset, dan uji
  • Panggil, kembali, dan restart
  • Pertukaran, transfer blok, dan mencari
  • Tujuan umum aritmatika dan kontrol CPU
  • Input dan output
  • Langsung
  • Putar dan shift
Tidak ada instruksi biak tersedia di Z80 asli. ukuran berbeda dan varian penambahan, pergeseran, dan berputar agak berbeda memiliki efek pada bendera karena mempengaruhi sifat-bendera 8080 disalin. Load instruksi tidak mempengaruhi bendera (kecuali untuk tujuan khusus I dan beban mendaftar R). Indeks register instruksi yang berguna untuk mengurangi ukuran kode, dan, sementara beberapa dari mereka tidak jauh lebih cepat daripada "setara" urutan operasi sederhana, mereka juga menghemat waktu pelaksanaan tidak langsung dengan mengurangi kebutuhan untuk menyimpan dan memulihkan register. [28] Demikian pula , instruksi untuk penambahan 16-bit tidak terlalu cepat (11 jam) di Z80 asli, tetap saja, mereka sekitar dua kali lebih cepat melakukan perhitungan yang sama dengan menggunakan operasi 8-bit, dan tak kalah penting, mereka mengurangi penggunaan mendaftar.
petunjuk berdokumen
register indeks, IX dan IY, yang dimaksudkan sebagai fleksibel pointer 16 bit, meningkatkan kemampuan untuk memanipulasi memori, stack frame dan struktur data. Secara resmi, mereka diperlakukan sebagai 16-bit saja. Pada kenyataannya, mereka diimplementasikan sebagai sepasang pasangan bit register-8, dalam cara yang sama seperti register HL, yang dapat diakses baik sebagai 16 bit atau secara terpisah sebagai igh register H dan L ow. Bahkan opcode biner (bahasa mesin) itu identik, tetapi didahului dengan kode opcode baru. Zilog menerbitkan opcode dan mnemonik terkait untuk fungsi dimaksud, tapi tidak dokumen fakta bahwa setiap opcode yang memungkinkan manipulasi H dan register L juga sama berlaku untuk bagian 8 bit dari register IX dan IY. Sebagai contoh, 26h opcode diikuti oleh nilai byte segera (LD H, n) akan memuat bahwa nilai ke dalam register H. Sebelumnya instruksi ini dua-byte dengan register IX awalan opcode DD, malah akan menghasilkan 8 bit paling signifikan dari register IX yang sarat dengan nilai yang sama. Sebuah pengecualian untuk ini akan instruksi sama dengan LD H, (IX + d) yang menggunakan kedua HL dan IX atau register IY dalam instruksi yang sama; [30] dalam hal ini awalan DD hanya diterapkan pada ( IX + d) bagian instruksi.
Ada beberapa petunjuk lain juga tidak tercatat.
eksekusi Instruksi
Setiap instruksi dilaksanakan di langkah-langkah yang biasanya disebut siklus mesin (M-siklus), yang masing-masing dapat mengambil antara tiga dan enam periode waktu (T-siklus). [32] Setiap M-siklus sesuai kira-kira untuk satu akses memori dan / atau internal operasi. Banyak sebenarnya instruksi akhir selama M1 dari instruksi berikutnya yang dikenal sebagai mengambil / mengeksekusi tumpang tindih.
Contoh instruksi yang khas (R = baca, W = menulis)
Jumlah
M-siklus
pengajaran
M1
M2
M3
M4
M5
M6
1
INC BC
opcode





2
ADD A,n
opcode
n




3
ADD HL,DE
opcode
Internal
Internal



4
SET b,(HL)
awalan
Opcode
R(HL), set
W(HL)


5
LD (IX+d),n
awalan
Opcode
d
n,add
W(IX+d)

6
INC (IY+d)
awalan
Opcode
d
Add
R(IY+d),inc
W(IY+d)
Z80 siklus mesin ini adalah sequencing oleh internal mesin negara yang dibangun masing-siklus keluar M 3, 4, 5 atau 6 siklus T-tergantung pada konteks. Hal ini untuk menghindari logika asynchronous rumit dan membuat sinyal kontrol bersikap secara konsisten di berbagai frekuensi clock. Tentu, hal itu juga berarti bahwa kristal frekuensi yang lebih tinggi harus digunakan daripada tanpa ini pembagian siklus mesin (sekitar 2-3 kali lebih tinggi). . Ini tidak berarti persyaratan ketat pada waktu akses memori, bagaimanapun, sebagai jam resolusi tinggi memungkinkan kontrol lebih tepat timing memori dan memori sehingga dapat aktif secara paralel dengan CPU untuk tingkat yang lebih besar (yaitu duduk kurang idle), sehingga lebih efisien menggunakan kinerja memori yang tersedia. Untuk eksekusi instruksi, Z80 menggabungkan dua siklus jam penuh ke waktu akses memori yang lama (M1-sinyal) yang biasanya akan berlangsung hanya sebagian kecil dari lebih lama) jam Siklus (dalam asinkron desain yang lebih (seperti 6800 , atau mirip ).
Memori, terutama EPROM , tetapi juga Flash , umumnya lambat dibandingkan dengan negara sub-siklus mesin (siklus clock) yang digunakan dalam mikroprosesor kontemporer. Siklus mesin terpendek yang aman dapat digunakan dalam desain tertanam karena itu sering dibatasi oleh waktu akses memori, bukan dengan frekuensi CPU maksimum (terutama sehingga selama era komputer di rumah). Namun, hubungan ini perlahan berubah selama dekade terakhir, khususnya mengenai SRAM ; cacheless, satu siklus desain seperti eZ80 Oleh karena itu menjadi jauh lebih berarti baru-baru ini.
peripheral Kompatibel
Zilog memperkenalkan sejumlah bagian perifer untuk Z80, yang didukung sistem penanganan menyela Z80 dan I / O space alamat. Ini termasuk CTC (Counter-Timer-Circuit), yang SIO (Serial Input Output), DMA (Direct Memory Access), dengan PIO (Input Output-Paralel) dan DART (Dual Asynchronous Receiver Transmitter). Sebagai lini produk yang dikembangkan, daya rendah, kecepatan tinggi dan CMOS versi chip ini diproduksi.
Seperti prosesor 8080, 8085 dan 8086, tapi tidak seperti prosesor seperti Motorola MOS Technology 6800 dan 6502, yang Z80 dan 8080 memiliki garis kontrol terpisah dan ruang alamat untuk I / O petunjuk. Sementara beberapa berbasis komputer Z80 digunakan "Motorola-style" memori dipetakan input / output perangkat, biasanya I / O ruang yang digunakan untuk mengatasi salah satu perangkat chip Zilog banyak kompatibel dengan Z80 ini. Zilog I / O chip yang didukung modus baru Z80's 2 potong (lihat uraian di atas) yang disederhanakan penanganan interrupt untuk nomor besar periferal.
'16 bit' berdokumen I / O-menangani
Z80 ini secara resmi digambarkan sebagai mendukung 16-bit (64 KB) menangani memori, dan 8-bit (256 port) I / O-addressing. Melihat dengan hati-hati di manual referensi perangkat keras, dapat dilihat bahwa semua instruksi I / O benar-benar menegaskan bus 16-bit seluruh alamat. OUT (C), reg dan IN reg, (C) tempat isi dari seluruh 16 bit SM mendaftar di bus alamat; OUT (n), A dan IN A, (n) tempat isi A mendaftar di B8-B15 dari bus alamat dan n pada B0-b7 dari bus alamat. Seorang desainer dapat memilih untuk memecahkan kode bus 16 bit seluruh alamat pada I / O operasi dalam rangka mengambil keuntungan dari fitur ini, atau menggunakan setengah tinggi dari bus alamat untuk memilih subfeatures dari perangkat I / O. Fitur ini juga telah digunakan untuk meminimalkan kebutuhan hardware decoding, seperti di BPK Amstrad dan ZX81 .