Neden 8085 mikroişlemcide, saat frekansı ikiye bölünür?


16

Üretilen saat frekansı neden 6.144 MHz'dir, ancak dahili olarak (8085 işlemci) sadece 3.072 MHz kullanır. Ayrıca bir saatte 6.144'ün spesifik değerine yol açan şey.

Yahoo'da bir cevap buldum .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i

ama itiraf etmeliyim ki hala iyi anlamadım. Herhangi biriniz bu konuda birkaç satır atabilir misiniz lütfen?


2
yahoo cevabı çok çok kötü. Yazarı tanıyorsanız lütfen affet beni.
Kortuk

hmm, bu dönem Mikroişlemcileri aldım, bu yüzden bunun ne kadar yanlış olabileceği hakkında hiçbir fikrim yok. Sanırım cevabı burada buldum ... teşekkür ederim.
loxxy

1
MC6800 daha da zorluydu. Bu olmak için gerekli olan iki saat girişi (phi1, phi2, yaklaşık 180 ° lik bir faz kaydırılmış) sahip olmayan üst üste , yani bir faz diğer yükselmesine izin verildi önce bazı ns için düşük olması gerekiyordu. Bu saat sinyallerini üretmek için ekstra bir osilatör IC'si (MC6810?) Vardı.
Curd

1
@Curd Kötü zamanlama ve tedarik raylarının İKİ çok yakın salıncak vardı (o günlerde nadir). pdf.datasheetarchive.com/indexerfiles/Scans-000/… MC6871. MC6810, 128 x 8 (!) Statik bir RAM yongasıydı.
Spehro Pefhany

Yanıtlar:


15

Bir saati ikiye bölmenin bir nedeni,% 50'lik bir görev döngüsü kare dalgası elde etmektir. 8085 dahili olarak her iki saat kenarını kullanıyor olabilir ve döngünün yarısı diğerinden çok daha kısa olsaydı çalışmaz.

8085'in yeni olduğu günlerde, bu güzel konserve osilatörler yaygın değildi ve insanlar genellikle ayrı kristallerden, kapasitörlerden ve mantık kapılarından saat devrelerini bir araya getirdiler. İkiye bölmek, eşit aralıklı yükselen ve düşen kenarlara sahip olmanızı sağlar.

6.144MHz'e gelince, en az 38400'e kadar ortak baud hızı değerleri elde etmek için bir tamsayıya bölünebileceğini göreceksiniz.


takip et ...

8085 için bir Intel veri sayfasına baktığımızda, üç ilginç ifade var

  1. 8085, 8024A için sağlanan 8224 saat üreteci ve 8228 sistem denetleyicisinin sağladığı tüm özellikleri içerir

  2. X1 ve X2: Dahili saat üretecini çalıştırmak için bir kristal, LC veya RC ağına bağlanır. Giriş frekansı, işlemcinin dahili çalışma frekansını vermek için 2'ye bölünür.

  3. CLK: Sistem saati olarak kullanım için saat çıkışı. CLK süresi X1, X2 giriş süresinin iki katıdır.

Böylece, işleri dahili olarak bir kenara taşımak için saatin garip kenarlarını kullanma hakkındaki spekülasyonlar, 8085'i tasarladıklarında, Intel'in bu özelliği çipe entegre ederek özel bir saat kontrolörü ihtiyacını değiştirdiği anlaşılıyor. X1-X2 zaman tabanını CLK olarak çıkmadan önce ikiye bölmek, başka hiçbir şey yoksa sistemin düzgün bir görev döngüsü elde etmesini sağlar .


1
genellikle mikrodenetleyicideki farklı aşamaların mantık gecikmesi nedeniyle faz dışı olması gerekir. daha yüksek hızda bir osilatör kullanmak ve bölmek ve farklı mantık kümeleri için iki farklı kenarı kullanmak cihazın maliyetini büyük ölçüde azaltabilir. JustJeff, standart saat hızlarının bir katı olan bir osilatör kullanarak yerinde. Yüksek hızlı transferleri çok kolay hale getirebilir.
Kortuk

2
Görev döngüsü beyanından emin misiniz? Bir talimat döngüsünün birden fazla saat döngüsü gerektirebileceği izlenimi altındaydım (örneğin, bir getirme döngüsü ve bir yürütme döngüsünden oluşan bir komut döngüsü). Modern PIC'lerin bile 4 aşamalı bir talimat döngüsüne sahip olduğundan eminim, bu yüzden veri sayfası boyunca tüm
Fosc

1
@ ajs410 - 8085, bir talimatın tamamlanması için kesinlikle birden fazla saat döngüsü alacaktır; o zamandan itibaren 8 bit mikronun (farkında olduğum) bir şey yapmak için en az iki saat sürdüğünü. Burada bahsettiğim sadece çipin içinde. Bu eski canavarlar için blok şemalara bakarsanız, bazı dahili veri yollarına, geçici kayıtlara vb. Sahip olduklarını görebilirsiniz. Herhangi bir harici veri yolu çevrimleri aynı polaritenin kenarları arasında çalıştırılır.
JustJeff

6

Bu çipin tasarlandığı sırada, insanlar mevcut çiplere sığacak kadar küçük yapmak için CPU'da mümkün olduğunca az transistör kullandılar.

Bu dönemin CPU'sundaki hemen hemen her "kayıt" ın (hem programcı tarafından görülebilir komut kümesi kayıtları hem de dahili mikro mimarlık mandalları) verileri şeffaf bir kapı D mandalında veya benzer bir şeyde sakladığından şüpheleniyorum . Günümüzde, bir çip üzerinde bol miktarda transistör var, bu yüzden iki kat daha fazla transistör kullanıyor olsalar bile, tam master-slave D parmak arası terlik kullanmak daha kolay.

Birçok yönerge bazı A kayıtlarından veri alır, ALU ile diğer bazı verilerle birleştirir ve sonucu A kaydında saklar. A kaydı tam bir master-slave D flip-flop ile uygulanırsa bunu yapmak oldukça kolaydır.

Ancak A kaydı şeffaf kapılı bir D mandalıysa, çakışmayan saatlere ihtiyacınız vardır. Bir ara sonucu bir yerde saklamak için bir saatte bir darbe kullanın (A kaydı çıkış sabitini tutarken) ve sonra A kaydını yeni değerle yüklemek için başka bir saatte bir darbe kullanın (ara kayıt çıktı sabitini tutarken).

Bu 2 fazlı bir saat gerektirir. Çakışan olmayan 2 fazlı bir saat yapmanın en kolay yolu (transistörlerin az olduğu günlerde), bir giriş saati alan ve ikiye bölen küçük bir dış devreydi.

Zaman geçtikçe, insanlar bir IC'ye daha fazla transistörün nasıl paketleneceğini anladılar. Böylece, CPU tasarlayan insanlar CPU'nun etrafındaki şeyleri tam bir bilgisayar sisteminde CPU çipine entegre ettiler.

Wikipedia saat sinyali makalesinin satırlarını okurken , 8085 ve 6502'yi ve o dönemin diğer yongalarını tasarlayan insanların önceki nesil entegre CPU'lardan biraz daha fazla alana sahip olduğu izlenimini edindim ve en iyisine karar verdiler. o odanın kullanımı o küçük harici devreyi çipin üstüne koymaktı. Ancak tüm kayıtları önceki gibi aynı kapı D mandalında tuttular.

Bu yüzden saat frekansı ikiye bölünür. Bu ara sonuç kaydını güncellemek için phase_one dahili saat sinyalinde bir darbe üreten ilk harici saat darbesini ve programlayıcı tarafından görülebilir kaydı güncellemek için phase_two dahili saat sinyalinde bir darbe üreten harici saatten ikinci darbeyi düşünebilirsiniz.


Eğer bir mandal asla yeniden yüklenmeden birkaç mikrosaniyeden fazla gitmezse, devre daha da basitleştirilebilir, böylece bir "mandal" tek bir transistör geçiş kapısından ve bir invertörden başka bir şey değildir.
supercat

1
Yukarıdakileri yazdıktan sonra, 6502'nin tasarımına baktım; dahili otobüslerin birçoğu bir saat fazında koşulsuz olarak yüksek sürülür ve daha sonra diğer saat fazında seçilen bir kayıt uygun bitleri düşük çekebilir. Örneğin veri yoluna çıkış yapabilen beş kayıt varsa, bu, her bir kayıt cihazının çıkışı için bir çekme cihazına ihtiyaç duymak yerine, çipin her kayıt için sadece bir anahtarlamalı çekme cihazı ve iki iki seri kablolu transistör kullanabileceği anlamına gelir. uygunsa otobüsü aşağı çekmek için. 8085'in neredeyse kesinlikle benzer numaralar kullanmasını beklerdim.
supercat

2

Talimat döngüsünü birden fazla saat döngüsüne bölmenin birçok nedeni vardır. Ana bellek veri yoluna iyi bir örnek.

Modern işlemcilerin çoğu Von-Neumann mimarileri; yani, kodları ve verileri aynı bellek yongasında bulunur. Bir talimat okumak istiyorsanız ve bu talimat bellekten bir değişken yükleyecekse ... bu iki hafıza erişimi. Ancak çoğu bellek sadece tek portludur (yani, döngü başına sadece bir okuma veya yazma yapabilir). Peki talimat okuyorsun ve Değişkeninizi okumak?

Çözüm, iki aşamalı bir talimat döngüsü kullanmaktır. İlk aşama talimatı bellekten getirir ve ikinci aşama daha sonra değişkeni ana bellekten okuyabilir (veya yazabilir!).

Bazı eski fişler daha da ileri gitti. Gün içinde, yonganızda 16 bit adreslenebilir bellek varsa, ancak harici adres veri yolu yalnızca 8 bitse, Adres Mandalı Etkinleştirmeyi bilirsiniz. Bir saat çevrimi 16 bit adresin üst 8 bitini gönderir ve bir sonraki saat döngüsü alt 8 biti gönderir. Üçüncü bir döngü daha sonra değişkeni belleğe / belleğe okuyabilir / yazabilir.

Birden fazla saat döngüsü olan bir talimat döngüsüne sahip olmanın başka, daha iyi nedenleri vardır. En iyi nedenlerden biri boru hattıdır. Bu, modern işlemcilerin bir yongadaki tüm yürütme birimlerini daha iyi kullanmak için kullandıkları bir numaradır; örneğin, bir komut yürütülürken, bir sonraki komut aynı anda getirilir.


3
OP'nin bir talimatı neden birden fazla saate yaydığınızı sormuyor, aksine 8085 neden sadece amaçlananı almak yerine 2X saat (daha sonra dahili olarak böler) beslemenizi gerektirecek şekilde tasarlandı. doğrudan saat frekansı.
JustJeff

1
Bununla birlikte, talimatlar hakkında söylediğin her şey açık.
JustJeff

1

Dahili olarak, 8085A'nın çekirdeği iki fazlı bir saat gerektirir. İki saat fazını türeyen iç mantık aynı zamanda giriş saatini ikiye böler. Daha önce belirtildiği gibi, 6.144MHz giriş saatinin kullanılmasının nedeni baud hızı amaçları içindir, çip 6MHz'de iyi çalışır. Çip aslında 6MHz kristal gerektiren 3MHz'de derecelendirilmiştir, ancak daha kolay baud hızı üretimi sağlayan 6.144MHz ile mutlu bir şekilde çalışır (Bir Uart, 8085'i çalıştıran bir Osilatörden 6.144MHz veya 8085'in CLK çıkışından 3.072MHz'de saatlenebilir birçok kullanılabilir Baud hızı sağlar). Hala bu robotik yongaları bazı robotlarımda özel işlevler gerçekleştirmek için kullanıyorum. Uarts'ı kendi osilatörü ile ve 8085A'ları çipi 3.2MHz'de çalıştıran 6.4MHz osilatör ile saatliyorum. 3. 2MHz, ultrasonik transdüserlerim için 40KHz saat sağlamak için güzel bir şekilde bölünür. Botlarımda daha modern IC cihazlarını kullanmak daha mantıklı, ancak oynamaktan zevk aldığım bir ton eski 8085, Z80, 63C09 ve 63C09E, 68B09 ve 68B09E, vb. Var.


0

Saat, bir olayın gerçekleşmesini istediğiniz andan başka bir şey değildir. Şimdi, dijital devrelerde seviye tetiklemeyi tercih etmiyoruz çünkü daha fazla zaman verildiğinde, mikroişlemcideki farklı devreler arasında kısa devreye yol açan etkileşim meydana gelebilir. Bu yüzden EDGE TRIGGERING için gidiyoruz. Artık mikroişlemci, kenar tetiklemenin ne zaman gerçekleştiğini bilmiyor. Sadece 1 veya 0'ı anlar. Bu nedenle, bir saat kenarı algılandığında 1 ve 0 üretmek için bir flip flop gereklidir. Bu nedenle, bir flip flop kullanmak gerekli hale gelir. Sonuç olarak saat frekansı ikiye bölünür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.