mcleod_ideafix escribió:El reloj de la CPU no se sacaría del que genera la placa, sino de un reloj propio. Habría que estudiarlo más a fondo, pero en principio, y como el bus del 68000 es asíncrono, basta con obedecer las señal /DTACK que envía la placa para saber cuándo se ha terminado el ciclo de memoria. La memoria que se incorporara en placa podría ser lo suficientemente rápida como para que /DTACK se aserte en el mismo ciclo de reloj en donde empieza el acceso (como en la ampliación interna que propuse hace años)
Yo tengo en casa el 68HC001 de 16MHz.
En su caso caso, se puede generar la la señal con un cristal, un
CD411 y unas resistencias y condensadores, o bien se podría usar la señal de reloj de la propia de la ULA de 7,5MHz e implementar un multiplicador x2 con el mismo integrado
CD4011:
http://picmania.garcia-cuervo.net/elect ... cuitos.php. Creo que incluso se podría poner un jumper para seleccionar una cosa u otra.
Luego las señales requieren de cierta adaptación puesto que el 68008 es de
48 pins y encapsulado
DIP, mientras que el
68HC001 va en un
PLLC68:
- No disponemos de la señal
MODE, pero con conectarla a masa se seleccionaría el modo de 8 bits durante la inicialización.
- Tampoco disponemos de
UDS y
LDS para arbitrar el bus de datos y en su lugar tenemos sólo
DS. Estas son las tablas para cada caso:
Código: Seleccionar todo
DS R/W D0–D7
------- ------- ---------------------------------
1 — No Valid Data
0 1 Valid Data Bits 7–0 (Read Cycle)
0 0 Valid Data Bits 7–0 (Write Cycle)
Código: Seleccionar todo
UDS LDS R/W D8–D15 D0–D7
------- ------- ------- ----------------------- ---------------------
High High — No Valid Data No Valid Data
Low Low High Valid Data Bits 15–8 Valid Data Bits 7–0
High Low High No Valid Data Valid Data Bits 7–0
Low High High Valid Data Bus 15–8 No Valid Data
Low Low Low Valid Data Bits 15–8 Valid Data Bits 7–0
High Low Low Valid Data Bits 7–0 Valid Data Bits 7–0
Low High Low Valid Data Bits 15–8 Valid Data Bits 15–8
Entiendo que habría que conectar
DS a
UDS y
LDS para que funcionara correctamente.
- Las señales de control de interrupciones cambian un poco: en el QL tenemos 2:
/IPL0-IPL2 y /IPL1, pero en el sustituto
/IPL0, /IPL2 y /IPL1. Según el datasheet, creo que habría que conectar la señal
/IPL0-IPL2 a /IPL0 y /IPL2 para solventar esto.
- En cuanto a
/BGACK, que tiene el
68HC001 pero no el 68008 del QL, indica a nivel bajo que otro dispositivo se ha convertido en el maestro del bus. Entonces, con ponerlo en
VCC, entiendo que el nuevo micro replicaría el comportamiento del 68008.
- Por último, hay ausencia de señales en las líneas de direcciones (el
68HC001 puede direccionar más memoria) y datos (por ser de 8/16 bits). Esto implica usar sólo aquellas de que disponemos y:
1) Las de direcciones que sobran, ponerlas a masa en el procesador sustituto.
2) Con las de datos, no estoy seguro de que habría que hacer, si dejarlas al aire o qué.
He empezado el diseño del adaptador, pero estoy muy oxidado con el Eagle, tengo poca experiencia y hace siglos que no lo usaba así que voy muy despacito. Si algún consigo terminarlo comparé por aquí el adaptador.
Saludos.
PD. Se me olvidaba comentar que es perfectamente válido usar otro reeemplazo: el
MC68EC000. La selección del modo 8/16 bits en en su caso dinámica, no estática, y el encapsulado también puede ser distinto, pero todo lo demás es igual.