Perché nel microprocessore 8085, la frequenza di clock è divisa per due?


16

Perché la frequenza di clock prodotta è 6.144 MHz, ma internamente (processore 8085) utilizza solo 3.072 MHz. Anche ciò che porta al valore specifico di 6.144 in un orologio.

Ho trovato una risposta su yahoo .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i

ma devo ammettere che non l'ho ancora capito bene. Qualcuno di voi ragazzi potrebbe buttar via qualche riga su questo, per favore?


2
la risposta di yahoo è molto povera. Per favore, perdonami se conosci lo scrittore.
Kortuk,

hmm, ho appena preso i microprocessori questo semestre, quindi non ho idea di quanto avrebbe potuto essere sbagliato. Immagino di aver ottenuto la risposta qui ... grazie.
loxxy,

1
L'MC6800 era ancora più esigente. Aveva due ingressi di clock (phi1, phi2, sfasati di circa 180 gradi) che dovevano essere non sovrapposti , vale a dire che una fase doveva essere bassa per alcuni secondi prima che l'altra potesse salire. C'era un IC oscillatore aggiuntivo (MC6810?) Per generare quei segnali di clock.
Cagliata

1
@Curd Nasty timing e ha dovuto oscillare molto vicino a ENTRAMBE i binari di rifornimento (raro in quei giorni). pdf.datasheetarchive.com/indexerfiles/Scans-000/… MC6871. L'MC6810 era un chip RAM statico 128 x 8 (!).
Spehro Pefhany,

Risposte:


15

Un motivo per dividere un orologio per due è quello di ottenere un'onda quadra del duty cycle pari al 50%. È possibile che l'8085 utilizzi internamente entrambi i bordi dell'orologio e non funzionerebbe se una metà del ciclo fosse molto più corta dell'altra.

Nei giorni in cui l'8085 era nuovo, quei simpatici oscillatori fissi non erano comuni e la gente spesso metteva insieme circuiti di clock da cristalli discreti, condensatori e porte logiche. La divisione per due garantisce che i bordi di salita e di discesa siano equidistanti.

Per quanto riguarda i 6.144MHz, scoprirai che può essere diviso per un numero intero per ottenere valori di baud rate comuni, almeno fino a 38400.


azione supplementare ...

Guardando una scheda tecnica Intel per l'8085, ci sono tre dichiarazioni interessanti

  1. L'8085 incorpora tutte le funzionalità fornite dal generatore di clock 8224 e dal controller di sistema 8228 per l'8080A

  2. X1 e X2: sono collegati a una rete a cristalli, LC o RC per pilotare il generatore di clock interno. La frequenza di ingresso è divisa per 2 per fornire la frequenza operativa interna del processore.

  3. CLK: uscita orologio da utilizzare come orologio di sistema. Il periodo di CLK è il doppio del periodo di input X1, X2.

Quindi, le speculazioni sull'uso dei bordi dispari dell'orologio per spostare le cose internamente da parte, diventa evidente che quando hanno progettato l'8085, Intel stava sostituendo la necessità di un controller di orologio speciale integrando quella funzionalità nel chip. Dividere la base dei tempi X1-X2 a metà prima di emetterla come CLK garantisce che il sistema ottenga un buon ciclo di funzionamento uniforme, se non altro.


1
spesso diversi stadi nel microcontrollore devono essere sfasati a causa di un ritardo logico. l'utilizzo di un oscillatore a velocità più elevata e la divisione verso il basso e l'utilizzo dei due diversi bordi per diversi set di logica possono ridurre notevolmente i costi del dispositivo. JustJeff è perfetto con l'uso di un oscillatore che è un multiplo di frequenze di clock standard. Può rendere molto facili i trasferimenti ad alta velocità.
Kortuk,

2
Sei sicuro della dichiarazione del ciclo di lavoro? Avevo l'impressione che un ciclo di istruzioni potesse richiedere più cicli di clock (ad esempio un ciclo di istruzioni composto da un ciclo di recupero e un ciclo di esecuzione). Sono abbastanza sicuro che anche i PIC moderni hanno un ciclo di istruzioni in 4 fasi, motivo per cui c'è tutto il Fosc / 4 in tutto il
foglio

1
@ ajs410 - l'8085 impiegherebbe sicuramente più cicli di clock per completare un'istruzione; tutti i micro a 8 bit di quel momento (di cui sono a conoscenza) hanno impiegato almeno due orologi per fare qualsiasi cosa. Quello a cui mi riferisco qui è puramente interno al chip. Se guardi i diagrammi a blocchi di queste vecchie bestie, puoi vedere che hanno alcuni bus interni, registri temporanei e così via, ed è questo che suppongo possa usare entrambi i bordi. Eventuali cicli di bus esterni verrebbero eseguiti tra i bordi della stessa polarità.
JustJeff,

6

Al momento della progettazione di questo chip, le persone utilizzavano il minor numero possibile di transistor nella CPU, per renderli sufficientemente piccoli da adattarsi ai chip disponibili.

Ho il sospetto che praticamente tutti i "registri" (sia registri di istruzioni visibili dal programmatore sia anche chiavistelli interni per microarchitettura) in una CPU di quell'epoca memorizzavano i dati in un chiavistello D trasparente o simile o qualcosa di simile. Al giorno d'oggi, ci sono molti transistor su un chip, quindi è più semplice usare le infradito D master-slave complete, anche se usano il doppio dei transistor.

Molte istruzioni prendono i dati da alcuni registri A, li combinano con alcuni altri dati con l'ALU e memorizzano i risultati nel registro A. Questo è abbastanza facile da fare se il registro A è implementato con un flip-flop D master-slave completo.

Ma se il registro A è un chiavistello D con cancello trasparente, sono necessari orologi non sovrapposti. Si utilizza un impulso su un orologio per memorizzare un risultato intermedio da qualche parte (mentre il registro A mantiene la sua costante di uscita), quindi un impulso su un altro orologio per caricare il registro A con il nuovo valore (mentre il registro intermedio mantiene la sua costante di uscita).

Ciò richiede un orologio a 2 fasi. Il modo più semplice per creare un orologio a 2 fasi non sovrapposto (in quei giorni in cui i transistor erano scarsi) era un piccolo circuito esterno che prende un orologio di ingresso e lo divide per due.

Col passare del tempo, le persone hanno capito come impacchettare sempre più transistor su un circuito integrato. Quindi le persone che progettano CPU hanno integrato sempre più roba attorno alla CPU in un sistema informatico completo sul chip della CPU.

Leggendo tra le righe dell'articolo del segnale dell'orologio di Wikipedia , ho l'impressione che le persone che hanno progettato l'8085 e il 6502 e altri chip di quell'epoca avessero solo un po 'più spazio rispetto alla generazione precedente di CPU integrate, e hanno deciso il migliore l'uso di quella stanza consisteva nel mettere quel piccolo circuito esterno sul chip. Ma mantennero tutti i registri lo stesso fermo a D chiuso di prima.

Ecco perché la frequenza di clock è divisa per due. È possibile pensare al primo impulso di clock esterno che genera un impulso sul segnale di clock interno phase_one per aggiornare quel registro risultati intermedi e al secondo impulso del clock esterno che genera un impulso sul segnale di clock interno phase_dwo per aggiornare il registro visibile dal programmatore.


Se un latch non passerà mai più di qualche microsecondo senza essere ricaricato, si può semplificare ulteriormente il circuito, in modo che un "latch" non sia altro che un pass-gate a transistor singolo e un inverter.
supercat

1
Da quando ho scritto quanto sopra, ho esaminato il design del 6502; molti bus interni sono pilotati incondizionatamente in alto su una fase di clock, e poi durante l'altra fase di clock un registro selezionato può abbassare i bit appropriati. Se esistono ad esempio cinque registri che possono essere emessi sul bus, ciò significa che invece di utilizzare un dispositivo pull-up per l'uscita di ciascun registro, il chip può semplicemente utilizzare un dispositivo pull-up commutato e due due transistor cablati in serie per ciascun registro per abbassare il bus, se appropriato. Mi aspetto che l'8085 usi quasi certamente trucchi simili.
supercat

2

Esistono molti motivi per suddividere il ciclo di istruzioni in più cicli di clock. Un buon esempio è l'accesso al bus di memoria principale.

I processori più moderni sono architetture Von-Neumann; cioè, il loro codice e i loro dati esistono entrambi nello stesso chip di memoria. Bene, se vuoi leggere un'istruzione, e quell'istruzione caricherà una variabile dalla memoria ... sono due accessi alla memoria. Ma la maggior parte della memoria è a porta singola (ovvero può fare solo una lettura o una scrittura per ciclo). Quindi, come leggi le istruzioni e leggi la tua variabile?

La soluzione è utilizzare un ciclo di istruzioni in due fasi. Il primo stadio recupererà le istruzioni dalla memoria, e il secondo stadio potrà quindi leggere (o scrivere!) La variabile dalla memoria principale.

Alcuni chip più vecchi sono andati ancora oltre. Nel passato, se il tuo chip aveva 16 bit di memoria indirizzabile, ma il bus dell'indirizzo esterno è solo 8 bit, allora avresti familiarità con l'abilitazione del blocco dell'indirizzo. Un ciclo di clock invia gli 8 bit superiori dell'indirizzo a 16 bit e il successivo ciclo di clock invia gli 8 bit inferiori. Un terzo ciclo potrebbe quindi leggere / scrivere la variabile dalla / alla memoria.

Esistono altri motivi migliori per disporre di un ciclo di istruzioni di più cicli di clock. Uno dei migliori motivi è il pipelining. Questo è un trucco che i moderni processori usano per sfruttare al meglio tutte le unità di esecuzione disponibili in un chip; ad esempio, mentre viene eseguita un'istruzione, la successiva viene recuperata contemporaneamente.


3
Non credo che l'OP ti stia chiedendo perché avresti distribuito un'istruzione su più orologi, ma piuttosto perché l'8085 è progettato per richiedere di alimentare un orologio 2X (che poi divide internamente) invece di prendere semplicemente il previsto frequenza di clock direttamente.
JustJeff,

1
tutto ciò che hai detto sulle istruzioni è attivo, però.
JustJeff,

1

Internamente, il nucleo dell'8085A richiede un orologio a due fasi. La logica interna che deriva le due fasi dell'orologio divide anche l'orologio di ingresso per due. Come precedentemente affermato, la ragione per usare un clock di ingresso a 6.144MHz è per scopi di baud rate, il chip funzionerà bene a 6MHz. Il chip è effettivamente valutato a 3MHz che richiedono un cristallo 6MHz, ma funziona felicemente con un 6.144MHz che consente una generazione più semplice di baud rate (un Uart potrebbe essere sincronizzato con un 6.144MHz da un oscillatore che guida l'8085 o a 3.072MHz dall'uscita CLK dell'8085 fornendo molte tariffe Baud utilizzabili). Uso ancora questi chip arcaici per eseguire funzioni speciali in alcuni dei miei robot. Orologio l'Uarts con il proprio oscillatore e orologio gli 8085A con un oscillatore a 6,4 MHz, che esegue il chip a 3,2 MHz. Il 3. 2MHz si divide bene per fornire l'orologio 40KHz per i miei trasduttori ultrasonici. È più sensato utilizzare più moderni dispositivi IC nei miei robot, ma ho una tonnellata di vecchi 8085, Z80, 63C09 e 63C09E, 68B09 e 68B09E, ecc. Con cui mi diverto davvero a giocare.


0

L'orologio non è altro che un momento in cui si desidera che si verifichi un evento. Ora, non preferiamo il trigger di livello nei circuiti digitali perché quando viene concesso più tempo, può verificarsi un'interazione tra diversi circuiti all'interno del microprocessore che porta a cortocircuiti. Quindi andiamo per EDGE TRIGGERING. Ora, il microprocessore non sa quando si è verificato il trigger dei bordi. Comprende solo 1 o 0. Quindi è necessario un infradito per produrre 1 e 0 ogni volta che viene rilevato un fronte di clock. Pertanto, diventa necessario utilizzare un infradito. Di conseguenza la frequenza di clock è divisa per due.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.