¿Por qué en el microprocesador 8085, la frecuencia del reloj se divide por dos?

16

¿Por qué es que la frecuencia de reloj producida es de 6.144 MHz, pero internamente (procesador 8085) usa solo 3.072 MHz? También lo que lleva al valor específico de 6.144 en un reloj.

Encontré una respuesta en yahoo .... http://answers.yahoo.com/question/index?qid=20080810090119AAurr2i

pero debo admitir que aún no lo entendí bien. ¿Podría alguno de ustedes lanzar algunas líneas sobre esto, por favor?

loxxy
fuente
2
la respuesta de yahoo es muy muy pobre. Perdóname si conoces al escritor.
Kortuk
hmm, acabo de tomar microprocesadores este semestre, así que no tengo idea de lo mal que pudo haber sido. Creo que obtuve la respuesta aquí ... gracias.
loxxy
1
El MC6800 fue aún más exigente. Tenía dos entradas de reloj (phi1, phi2, ca. 180 grados de fase desplazada) que no necesitaban solaparse , es decir, una fase tenía que ser baja durante algunas ns antes de que la otra se dejara subir. Había un CI oscilador adicional (MC6810?) Para generar esas señales de reloj.
Cuajada
1
@Curd Nasty timing y tuvo que oscilar muy cerca de AMBOS rieles de suministro (raro en esos días). pdf.datasheetarchive.com/indexerfiles/Scans-000/… MC6871. MC6810 era un chip RAM estático de 128 x 8 (!).
Spehro Pefhany

Respuestas:

15

Una razón para dividir un reloj entre dos es obtener una onda cuadrada de ciclo de trabajo uniforme del 50%. Puede ser que el 8085 use internamente ambos bordes del reloj, y no funcionaría si la mitad del ciclo fuera mucho más corta que la otra.

En los días en que el 8085 era nuevo, esos agradables osciladores enlatados no eran comunes, y la gente a menudo improvisaba circuitos de reloj de cristales discretos, condensadores y puertas lógicas. La división entre dos garantiza que tenga bordes ascendentes y descendentes igualmente espaciados.

En cuanto a 6.144MHz, encontrará que se puede dividir por un número entero para obtener valores comunes de velocidad de transmisión, al menos hasta 38400.


seguimiento ...

Mirando una hoja de datos de Intel para el 8085, hay tres declaraciones interesantes

  1. El 8085 incorpora todas las características que el generador de reloj 8224 y el controlador del sistema 8228 proporcionaron para el 8080A

  2. X1 y X2: están conectados a una red de cristal, LC o RC para controlar el generador de reloj interno. La frecuencia de entrada se divide por 2 para proporcionar la frecuencia interna de funcionamiento del procesador.

  3. CLK: Salida de reloj para usar como reloj del sistema. El período de CLK es dos veces el período de entrada X1, X2.

Entonces, las especulaciones sobre el uso de los bordes impares del reloj para mover las cosas internamente a un lado, se hace evidente que cuando diseñaron el 8085, Intel estaba reemplazando la necesidad de un controlador de reloj especial al integrar esa característica en el chip. Dividir la base de tiempo X1-X2 por la mitad antes de generarla como CLK asegura que el sistema obtenga un buen ciclo de trabajo uniforme, por lo menos.

JustJeff
fuente
1
a menudo las diferentes etapas en el microcontrolador deben estar desfasadas debido al retraso lógico. usar un oscilador de mayor velocidad y dividir hacia abajo y usar los dos bordes diferentes para diferentes conjuntos de lógica puede reducir en gran medida el costo del dispositivo. JustJeff es acertado al usar un oscilador que es un múltiplo de las frecuencias de reloj estándar. Puede hacer transferencias de alta velocidad muy fáciles.
Kortuk
2
¿Está seguro de la declaración del ciclo de trabajo? Tenía la impresión de que un ciclo de instrucción puede requerir múltiples ciclos de reloj (por ejemplo, un ciclo de instrucción compuesto por un ciclo de recuperación y un ciclo de ejecución). Estoy bastante seguro de que incluso los PIC de hoy en día tienen un ciclo de instrucción de 4 etapas, razón por la cual hay todo el Fosc / 4 en toda la hoja de datos
ajs410
1
@ ajs410: el 8085 definitivamente tomaría múltiples ciclos de reloj para completar una instrucción; Todos los micros de 8 bits de esa época (que yo sepa) tomaron al menos dos relojes para hacer algo. A lo que me refiero aquí es puramente interno del chip. Si observa los diagramas de bloques de estas antiguas bestias, puede ver que tienen algunos buses internos, registros temporales, etc. Cualquier ciclo de bus externo se ejecutará entre los bordes de la misma polaridad.
JustJeff
6

En el momento en que se diseñó este chip, las personas usaban la menor cantidad posible de transistores en la CPU, para que fueran lo suficientemente pequeños como para caber en los chips disponibles.

Sospecho que prácticamente todos los "registros" (tanto los registros del conjunto de instrucciones visibles por el programador como también los pestillos internos de microarquitectura) en una CPU de esa época almacenaban datos en un pestillo D con puerta transparente o algo similar. Hoy en día, hay muchos transistores en un chip, por lo que es más sencillo usar chanclas D maestro-esclavo completas, a pesar de que usan el doble de transistores.

Muchas instrucciones toman datos de algún registro A, los combinan con otros datos con la ALU y almacenan el resultado nuevamente en el registro A. Eso es bastante fácil de hacer si el registro A se implementa con un flip-flop D maestro-esclavo completo.

Pero si el registro A es un pestillo D cerrado y transparente, necesita relojes que no se superpongan. Utiliza un pulso en un reloj para almacenar algún resultado intermedio en algún lugar (mientras el registro A mantiene su salida constante), y luego un pulso en otro reloj para cargar el registro A con el nuevo valor (mientras que el registro intermedio mantiene constante su salida).

Esto requiere un reloj de 2 fases. La forma más fácil de hacer un reloj de 2 fases no superpuesto (en aquellos días cuando los transistores eran escasos) era un pequeño circuito externo que toma un reloj de entrada y lo divide por dos.

A medida que pasó el tiempo, la gente descubrió cómo empacar cada vez más transistores en un circuito integrado. Entonces, las personas que diseñaron CPU integraron más y más cosas alrededor de la CPU en un sistema informático completo en el chip de la CPU.

Leyendo entre líneas el artículo de la señal de reloj de Wikipedia , tengo la impresión de que las personas que diseñaron el 8085 y el 6502 y otros chips de esa época tenían un poco más de espacio que la generación anterior de CPU integradas, y decidieron lo mejor El uso de esa sala era poner ese pequeño circuito externo en el chip. Pero mantuvieron todos los registros con el mismo cierre D cerrado que antes.

Por eso la frecuencia del reloj se divide por dos. Puede pensar en el primer pulso de reloj externo que genera un pulso en la señal de reloj interna de fase_uno para actualizar ese registro de resultados intermedio, y el segundo pulso del reloj externo que genera un pulso en la señal de reloj interna de fase_dos para actualizar el registro visible del programador.

davidcary
fuente
Si un pestillo nunca pasará más de unos pocos microsegundos sin volver a cargarse, se puede simplificar aún más el circuito, de modo que un "pestillo" no sea más que una puerta de paso de un solo transistor y un inversor.
supercat
1
Desde que escribí lo anterior, examiné el diseño del 6502; muchos de los buses internos son conducidos incondicionalmente alto en una fase de reloj, y luego, durante la otra fase de reloj, un registro seleccionado puede bajar los bits apropiados. Si hay, por ejemplo, cinco registros que pueden salir al bus, esto significa que, en lugar de necesitar un dispositivo pull-up para la salida de cada registro, el chip simplemente puede usar un dispositivo pull-up conmutado y dos transistores con cable en serie dos para cada registro tirar del autobús hacia abajo si es apropiado. Es de esperar que el 8085 ciertamente use trucos similares.
supercat
2

Hay muchas razones para dividir el ciclo de instrucciones en múltiples ciclos de reloj. Un buen ejemplo es acceder al bus de memoria principal.

La mayoría de los procesadores modernos son arquitecturas de Von-Neumann; es decir, su código y sus datos existen en el mismo chip de memoria. Bueno, si quieres leer una instrucción, y esa instrucción va a cargar una variable de la memoria ... eso son dos accesos a la memoria. Pero la mayoría de la memoria es de un solo puerto (es decir, solo puede hacer una lectura o escritura por ciclo). Entonces, ¿cómo lees las instrucciones y lees tu variable?

La solución es usar un ciclo de instrucción de dos etapas. La primera etapa obtendrá las instrucciones de la memoria, y la segunda etapa puede leer (o escribir) la variable de la memoria principal.

Algunas fichas antiguas fueron aún más lejos. En el pasado, si su chip tenía 16 bits de memoria direccionable, pero el bus de direcciones externo es de solo 8 bits, entonces estaría familiarizado con la Habilitación de bloqueo de dirección. Un ciclo de reloj envía los 8 bits superiores de la dirección de 16 bits, y el siguiente ciclo de reloj envía los 8 bits inferiores. Un tercer ciclo podría leer / escribir la variable desde / a la memoria.

Hay otras razones mejores para tener un ciclo de instrucción que tiene varios ciclos de duración. Una de las mejores razones es la canalización. Este es un truco que utilizan los procesadores modernos para explotar más completamente todas las unidades de ejecución disponibles en un chip; por ejemplo, mientras se ejecuta una instrucción, la siguiente se obtiene al mismo tiempo.

ajs410
fuente
3
No creo que el OP le pregunte por qué distribuiría una instrucción en varios relojes, sino más bien por qué el 8085 está diseñado para requerir que alimente un reloj 2X (que luego divide internamente) en lugar de simplemente tomar el deseado frecuencia de reloj directamente.
JustJeff
1
todo lo que dijiste sobre las instrucciones está encendido.
JustJeff
1

Internamente, el núcleo del 8085A requiere un reloj de dos fases. La lógica interna que deriva las dos fases del reloj también divide el reloj de entrada por dos. Como se indicó anteriormente, la razón para usar un reloj de entrada de 6.144MHz es para fines de velocidad de transmisión, el chip funcionará bien a 6MHz. El chip en realidad tiene una clasificación de 3MHz que requiere un cristal de 6MHz, pero funciona felizmente con 6.144MHz, lo que proporciona una generación de velocidad de transmisión más sencilla (un Uart podría sincronizarse con 6.144MHz desde un oscilador que conduce el 8085 o a 3.072MHz desde la salida CLK del 8085 proporcionando muchas tasas de baudios utilizables). Todavía uso estos chips arcaicos para realizar funciones especiales en algunos de mis robots. Miro los Uarts con su propio oscilador y miro los 8085A con un oscilador de 6.4MHz, que ejecuta el chip a 3.2MHz. Los 3. 2MHz se divide muy bien para proporcionar el reloj de 40KHz para mis transductores ultrasónicos. Tiene más sentido usar dispositivos IC más modernos en mis 'bots, pero tengo un montón de viejos 8085, Z80, 63C09 y 63C09E, 68B09 y 68B09E, etc. con los que realmente disfruto jugar.

Latas de estaño y cinta adhesiva
fuente
0

El reloj no es más que un momento en el que desea que ocurra un evento. Ahora, no preferimos la activación de nivel en los circuitos digitales porque cuando se da más tiempo, puede ocurrir interacción entre diferentes circuitos dentro del microprocesador que conducen a cortocircuitos. Así que vamos a disparar por el borde. Ahora, el microprocesador no sabe cuándo se produjo la activación del borde. Solo comprende 1 o 0. Por lo tanto, se requiere un flip flop para producir 1 y 0 cada vez que se detecta un borde de reloj. Por lo tanto, se hace necesario usar un flip flop. Como resultado, la frecuencia del reloj se divide por dos.

Avinash
fuente