Mengapa pada mikroprosesor 8085, frekuensi clock dibagi dua?

16

Mengapa frekuensi clock yang dihasilkan adalah 6.144 MHz, tetapi secara internal (prosesor 8085) hanya menggunakan 3.072 MHz. Juga apa yang mengarah pada nilai spesifik 6,144 dalam satu jam.

Saya menemukan jawaban di yahoo .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i

tetapi saya harus mengakui bahwa saya masih belum mendapatkannya dengan baik. Bisakah salah satu dari kalian membuang beberapa baris tentang ini, tolong?

loxxy
sumber
2
jawaban yahoo sangat sangat buruk. Maafkan saya jika Anda kenal penulisnya.
Kortuk
hmm, Baru saja mengambil Mikroprosesor semester ini, jadi saya tidak tahu betapa salahnya itu. Saya kira saya mendapat jawabannya di sini ... terima kasih.
loxxy
1
MC6800 bahkan lebih menuntut. Itu memiliki dua input jam (phi1, phi2, ca 180 fase bergeser) yang perlu non tumpang tindih , yaitu satu fase harus rendah untuk beberapa ns sebelum yang lain dibiarkan naik. Ada IC osilator ekstra (MC6810?) Untuk menghasilkan sinyal-sinyal jam.
Curd
1
@Curd Nasty timing dan harus berayun sangat dekat dengan KEDUA rel pasokan (jarang pada hari-hari itu). pdf.datasheetarchive.com/indexerfiles/Scans-000/… MC6871. MC6810 adalah chip RAM statis 128 x 8 (!).
Spehro Pefhany

Jawaban:

15

Salah satu alasan untuk membagi jam dengan dua adalah untuk mendapatkan gelombang persegi siklus tugas bahkan 50%. Mungkin bahwa 8085 secara internal menggunakan kedua tepi jam, dan tidak akan berfungsi jika satu setengah siklus terjadi jauh lebih pendek daripada yang lain.

Pada hari-hari ketika 8085 masih baru, osilator kalengan yang bagus itu tidak umum, dan orang-orang sering membuat sirkuit jam dari kristal, kapasitor, dan gerbang logika yang terpisah. Dibagi dengan dua memastikan bahwa Anda memiliki spasi naik dan turun secara merata.

Sedangkan untuk 6.144MHz, Anda akan menemukan bahwa itu dapat dibagi dengan integer untuk mendapatkan nilai baud rate umum, setidaknya hingga 38400.


mengikuti ...

Melihat lembar data Intel untuk 8085, ada tiga pernyataan menarik

  1. The 8085 menggabungkan semua fitur yang dihasilkan oleh generator 8224 clock dan pengontrol sistem 8228 untuk 8080A

  2. X1 dan X2: Terhubung ke jaringan kristal, LC atau RC untuk menggerakkan generator clock internal. Frekuensi input dibagi 2 untuk memberikan frekuensi operasi internal prosesor.

  3. CLK: Output jam untuk digunakan sebagai jam sistem. Periode CLK adalah dua kali periode input X1, X2.

Jadi, spekulasi tentang penggunaan tepi aneh jam untuk memindahkan barang-barang secara internal ke samping, menjadi jelas bahwa ketika mereka merancang 8085, Intel mengganti kebutuhan untuk pengontrol jam khusus dengan mengintegrasikan fitur itu ke dalam chip. Membagi timebase X1-X2 menjadi dua sebelum mengeluarkannya karena CLK memastikan bahwa sistem mendapatkan siklus tugas yang baik, jika tidak ada yang lain.

JustJeff
sumber
1
seringkali tahapan yang berbeda dalam mikrokontroler harus keluar dari fase karena keterlambatan logika. menggunakan osilator berkecepatan lebih tinggi dan membagi dan menggunakan dua sisi yang berbeda untuk rangkaian logika yang berbeda dapat sangat mengurangi biaya perangkat. JustJeff sangat tepat menggunakan osilator yang merupakan kelipatan dari tarif clock standar. Itu dapat membuat transfer kecepatan tinggi sangat mudah.
Kortuk
2
Apakah Anda yakin dengan pernyataan siklus kerja? Saya mendapat kesan bahwa siklus instruksi mungkin memerlukan beberapa siklus clock (misalnya satu siklus instruksi yang terdiri dari siklus pengambilan dan siklus eksekusi). Saya cukup yakin bahkan PIC modern memiliki siklus instruksi 4-tahap, itulah sebabnya mengapa ada semua Fosc / 4 di seluruh datasheet
ajs410
1
@ ajs410 - 8085 pasti akan membutuhkan banyak siklus clock untuk menyelesaikan instruksi; semua 8 bit micros dari waktu itu (yang saya sadari) mengambil setidaknya dua jam untuk melakukan apa saja. Apa yang saya maksudkan di sini adalah murni internal untuk chip. Jika Anda melihat diagram blok untuk binatang buas tua ini, Anda dapat melihat mereka memiliki beberapa bus internal, register sementara dan sebagainya, dan ini yang saya berspekulasi mungkin menggunakan kedua ujungnya. Setiap siklus bus eksternal akan dijalankan antara tepi polaritas yang sama.
JustJeff
6

Pada saat chip ini dirancang, orang menggunakan transistor sesedikit mungkin dalam CPU, untuk membuatnya cukup kecil agar muat pada chip yang tersedia.

Saya menduga bahwa hampir setiap "register" (baik register set instruksi-programmer dan juga kait mikroarsitektur internal) dalam CPU pada zaman itu menyimpan data dalam kait D yang terjaga keamanannya atau sesuatu yang serupa. Saat ini, ada banyak transistor pada sebuah chip, jadi lebih mudah untuk menggunakan master-slave D flip-flop penuh, walaupun mereka menggunakan transistor dua kali lebih banyak.

Banyak instruksi mengambil data dari register A, menggabungkannya dengan data lain dengan ALU, dan menyimpan hasilnya kembali di register A. Itu cukup mudah dilakukan jika register A diimplementasikan dengan master-slave D flip-flop penuh.

Tetapi jika register A adalah kait D yang berpagar transparan, Anda memerlukan jam yang tidak tumpang tindih. Anda menggunakan pulsa pada satu jam untuk menyimpan beberapa hasil antara di suatu tempat (sementara register A mempertahankan outputnya konstan), dan kemudian pulsa pada jam lain untuk memuat register A dengan nilai baru (sementara register perantara menyimpan output konstan).

Ini membutuhkan jam 2 fase. Cara termudah untuk membuat jam 2 fase non-tumpang tindih (pada masa-masa ketika transistor langka) adalah sirkuit eksternal kecil yang mengambil jam input dan membaginya menjadi dua.

Seiring berjalannya waktu, orang-orang menemukan cara untuk mengemas lebih banyak dan lebih banyak transistor ke IC. Jadi orang-orang yang merancang CPU terintegrasi lebih banyak dan lebih banyak hal di sekitar CPU dalam sistem komputer penuh ke dalam chip CPU.

Membaca di antara baris-baris artikel sinyal jam Wikipedia , saya mendapat kesan bahwa orang-orang yang mendesain 8085 dan 6502 dan chip lain pada zaman itu hanya memiliki sedikit ruang lebih banyak daripada generasi CPU terintegrasi sebelumnya, dan mereka memutuskan yang terbaik penggunaan ruangan itu untuk menempatkan sedikit sirkuit eksternal pada chip. Tetapi mereka menyimpan semua register dengan kunci D yang terjaga keamanannya seperti sebelumnya.

Jadi itu sebabnya frekuensi jam dibagi dua. Anda dapat memikirkan pulsa jam eksternal pertama yang menghasilkan pulsa pada sinyal clock internal phase_one untuk memperbarui register hasil perantara tersebut, dan pulsa kedua dari jam eksternal menghasilkan pulsa pada phase_two sinyal jam internal untuk memperbarui register yang terlihat oleh programmer.

davidcary
sumber
Jika kait tidak akan pernah berjalan lebih dari beberapa mikrodetik tanpa dimuat ulang, orang dapat menyederhanakan sirkuit lebih jauh, sehingga "kait" tidak lebih dari gerbang transistor tunggal dan inverter.
supercat
1
Sejak menulis di atas, saya melihat ke dalam desain 6502; banyak bus internal didorong tinggi tanpa syarat pada satu fase clock, dan kemudian selama fase clock lainnya register terpilih dapat menarik bit yang sesuai rendah. Jika misalnya ada lima register yang dapat keluar ke bus, ini berarti bahwa alih-alih membutuhkan perangkat pull-up untuk setiap output register, chip dapat dengan mudah menggunakan satu perangkat pull-up yang diaktifkan dan dua transistor seri-kabel dua untuk setiap register untuk menarik bus turun jika sesuai. Saya harapkan 8085 hampir pasti menggunakan trik serupa.
supercat
2

Ada banyak alasan untuk membagi siklus instruksi menjadi beberapa siklus clock. Contoh yang baik adalah mengakses bus memori utama.

Kebanyakan prosesor modern adalah arsitektur Von-Neumann; yaitu, kode dan data keduanya ada dalam chip memori yang sama. Nah, jika Anda ingin membaca instruksi, dan instruksi itu akan memuat variabel dari memori ... itu dua akses memori. Tetapi sebagian besar memori hanya satu-port (yaitu, hanya dapat melakukan satu baca atau tulis per siklus). Jadi, bagaimana Anda membaca instruksi dan membaca variabel Anda?

Solusinya adalah dengan menggunakan siklus instruksi dua tahap. Tahap pertama akan mengambil instruksi dari memori, dan tahap kedua kemudian dapat membaca (atau menulis!) Variabel dari memori utama.

Beberapa chip lama bahkan melangkah lebih jauh. Kembali pada hari itu, jika chip Anda memiliki 16-bit memori dialamatkan, tetapi bus alamat eksternal hanya 8-bit, maka Anda akan terbiasa dengan Address Latch Enable. Satu siklus clock mengirimkan 8-bit bagian atas dari alamat 16-bit, dan siklus clock berikutnya mengirim 8-bit yang lebih rendah. Siklus ketiga kemudian bisa membaca / menulis variabel dari / ke memori.

Ada alasan lain yang lebih baik untuk memiliki siklus instruksi yang panjang siklus beberapa jam. Salah satu alasan terbaik adalah pipelining. Ini adalah trik yang digunakan prosesor modern untuk lebih sepenuhnya mengeksploitasi semua unit eksekusi yang tersedia dalam sebuah chip; misalnya, ketika satu instruksi sedang dieksekusi, instruksi berikutnya sedang diambil pada saat yang sama.

ajs410
sumber
3
Saya tidak berpikir OP bertanya mengapa Anda akan menyebarkan instruksi di beberapa jam, melainkan mengapa 8085 dirancang untuk mengharuskan Anda memberinya makan 2X jam (yang kemudian dibagi secara internal) sebagai lawan dari hanya mengambil yang dimaksud frekuensi clock secara langsung.
JustJeff
1
semua yang Anda katakan tentang instruksi aktif.
JustJeff
1

Secara internal, inti dari 8085A membutuhkan jam dua fase. Logika internal yang menurunkan dua fase jam juga membagi jam input menjadi dua. Seperti yang dinyatakan sebelumnya, alasan untuk menggunakan jam input 6.144MHz adalah untuk tujuan baud-rate, chip akan berjalan dengan baik pada 6MHz. Chip sebenarnya diberi nilai pada 3MHz membutuhkan kristal 6MHz, tetapi berjalan dengan senang hati dengan 6.144MHz memberikan generasi baud rate yang lebih mudah (Sebuah Uart dapat clock dengan 6.144MHz dari Oscillator yang menggerakkan 8085 atau 3.072MHz dari 8085's CLK output menyediakan banyak harga Baud yang dapat digunakan). Saya masih menggunakan chip kuno ini untuk melakukan fungsi khusus di beberapa robot saya. Saya clock Uarts dengan osilator mereka sendiri dan saya clock 8085A dengan osilator 6.4MHz, yang menjalankan chip pada 3.2MHz. 3. 2MHz terbagi dengan baik untuk menyediakan jam 40KHz untuk transduser ultrasonik saya. Lebih masuk akal untuk menggunakan perangkat IC yang lebih modern di bot saya, tapi saya punya satu ton 8085, Z80, 63C09 dan 63C09E, 68B09 dan 68B09E, dll. Saya sangat suka bermain dengannya.

Kaleng dan lakban
sumber
0

Jam tidak lain adalah momen ketika Anda ingin sebuah peristiwa terjadi. Sekarang, kami tidak memilih pemicu level dalam sirkuit digital karena ketika lebih banyak waktu diberikan, interaksi dapat terjadi antara sirkuit yang berbeda dalam mikroprosesor yang mengarah ke sirkuit pendek. Jadi kami PERGI untuk PEMERIKSAAN TEPI. Sekarang, mikroprosesor tidak tahu kapan pemicu tepi telah terjadi. Ini hanya mengerti 1 atau 0. Jadi flip flop diperlukan untuk menghasilkan 1 dan 0 setiap kali tepi jam terdeteksi. Dengan demikian, menjadi perlu untuk menggunakan flip flop. Akibatnya frekuensi jam dibagi dua.

Avinash
sumber