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

¿Por qué 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 todavía no lo entendí bien. ¿Alguno de ustedes podría escribir algunas líneas sobre esto, por favor?

la respuesta de yahoo es muy muy pobre. Por favor, perdóname si conoces al escritor.
hmm, acabo de tomar microprocesadores este semestre, así que no tengo idea de lo mal que pudo haber estado. Supongo que tengo la respuesta aquí... gracias.
El MC6800 fue aún más exigente. Tenía dos entradas de reloj (phi1, phi2, aproximadamente 180 grados de cambio de fase) que no debían superponerse , es decir, una fase tenía que estar baja durante algunos ns antes de que la otra pudiera subir. Había un IC de oscilador extra (¿MC6810?) para generar esas señales de reloj.
@Curd Nasty timing y tuvo que girar 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 (!).

Respuestas (5)

Una razón para dividir un reloj por 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 funcione 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 con cristales discretos, condensadores y puertas lógicas. Dividir por dos asegura que tiene 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 en baudios, al menos hasta 38400.


Seguir ...

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 impulsar el generador de reloj interno. La frecuencia de entrada se divide por 2 para dar la frecuencia operativa interna del procesador.

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

Entonces, dejando de lado las especulaciones sobre el uso de los bordes impares del reloj para mover cosas internamente, se hace evidente que cuando diseñaron el 8085, Intel estaba reemplazando la necesidad de un controlador de reloj especial al integrar esa función en el chip. Dividir la base de tiempo X1-X2 por la mitad antes de enviarla como CLK garantiza que el sistema obtenga un ciclo de trabajo uniforme y agradable, al menos.

a menudo, las diferentes etapas del microcontrolador deben estar desfasadas debido al retraso lógico. usar un oscilador de mayor velocidad y dividir y usar los dos bordes diferentes para diferentes conjuntos de lógica puede reducir en gran medida el costo del dispositivo. JustJeff da en el clavo con el uso de un oscilador que es un múltiplo de las frecuencias de reloj estándar. Puede hacer que las transferencias de alta velocidad sean muy fáciles.
¿Está seguro acerca de la declaración del ciclo de trabajo? Tenía la impresión de que un ciclo de instrucción puede requerir varios ciclos de reloj (por ejemplo, un ciclo de instrucción compuesto por un ciclo de búsqueda 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, por lo que está todo el Fosc/4 en la hoja de datos.
@ ajs410: el 8085 definitivamente tomaría varios ciclos de reloj para completar una instrucción; todos los micros de 8 bits de esa época (que yo sepa) necesitaron al menos dos relojes para hacer cualquier cosa. A lo que me refiero aquí es puramente interno al chip. Si observa los diagramas de bloques de estas viejas bestias, puede ver que tienen algunos buses internos, registros temporales, etc., y son estos los que especulo que podrían estar usando ambos bordes. Cualquier ciclo de bus externo se ejecutaría entre bordes de la misma polaridad.

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

Sospecho que prácticamente todos los "registros" (tanto los registros de conjuntos de instrucciones visibles para el programador como los pestillos internos de microarquitectura) en una CPU de esa época almacenaban datos en un pestillo D con compuerta transparente o algo similar. Hoy en día, hay muchos transistores en un chip, por lo que es más sencillo usar flip-flops D maestro-esclavo completos, 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 con compuerta transparente, necesita relojes que no se superpongan. Utiliza un pulso en un reloj para almacenar algún resultado intermedio en algún lugar (mientras que 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 su salida constante).

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

Con el paso del tiempo, la gente descubrió cómo empaquetar más y más transistores en un circuito integrado. Entonces, las personas que diseñan 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 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 habitación era poner ese pequeño circuito externo en el chip. Pero mantuvieron todos los registros con el mismo pestillo D cerrado que antes.

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

Si un pestillo nunca pasará más de unos pocos microsegundos sin recargarse, se puede simplificar el circuito aún más, de modo que un "pestillo" no sea más que una puerta de paso de un solo transistor y un inversor.
Desde que escribí lo anterior, analicé el diseño del 6502; muchos de los buses internos son elevados incondicionalmente 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 enviarse al bus, esto significa que en lugar de necesitar un dispositivo pull-up para la salida de cada registro, el chip puede simplemente usar un dispositivo pull-up conmutado y dos transistores conectados en serie para cada registro. para bajar el autobús si es apropiado. Es casi seguro que el 8085 usa trucos similares.

Hay muchas razones para dividir el ciclo de instrucción 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 Von-Neumann; es decir, su código y sus datos existen en el mismo chip de memoria. Bueno, si quiere leer una instrucción, y esa instrucción va a cargar una variable de la memoria... 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 lee la instrucción y lee su variable?

La solución es utilizar un ciclo de instrucción de dos etapas. La primera etapa obtendrá la instrucción de la memoria, y la segunda etapa podrá leer (¡o escribir!) la variable de la memoria principal.

Algunos chips más antiguos 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 tiene solo 8 bits, entonces estaría familiarizado con Address Latch Enable. 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 tenga una duración de varios ciclos de reloj. Una de las mejores razones es la canalización. Este es un truco que utilizan los procesadores modernos para aprovechar al máximo 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.

No creo que el OP esté preguntando por qué distribuiría una instrucción en varios relojes, sino por qué el 8085 está diseñado para requerir que lo alimente con un reloj 2X (que luego divide internamente) en lugar de simplemente tomar el previsto frecuencia de reloj directamente.
Sin embargo, todo lo que dijiste sobre las instrucciones está activado.

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,144 MHz es por razones de velocidad en baudios, el chip funcionará bien a 6 MHz. El chip en realidad tiene una clasificación de 3 MHz que requiere un cristal de 6 MHz, pero funciona felizmente con 6,144 MHz, lo que brinda una generación de velocidad en baudios más fácil (un Uart podría sincronizarse con los 6,144 MHz de un oscilador que controla el 8085 o con los 3,072 MHz de 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. Reloj los Uarts con su propio oscilador y reloj los 8085A con un oscilador de 6,4 MHz, que hace funcionar el chip a 3,2 MHz. Los 3. 2 MHz se divide muy bien para proporcionar el reloj de 40 KHz 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.

El reloj no es más que un momento en el que desea que ocurra un evento. Ahora bien, no preferimos la activación por nivel en los circuitos digitales porque cuando se da más tiempo, puede ocurrir una interacción entre diferentes circuitos dentro del microprocesador que provoque cortocircuitos. Así que VAMOS A DISPARAR POR BORDE. Ahora, el microprocesador no sabe cuándo se ha producido la activación por flanco. Solo entiende 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 utilizar un flip flop. Como resultado, la frecuencia del reloj se divide por dos.