Levante la resistencia en valor lógico NMOS

Para mi proyecto de secundaria, decidí construir una CPU básica a partir de componentes discretos. Planeo usar un nivel lógico de 5 V y el diseño actual requiere alrededor de 2000-3000 transistores MOSFET de canal N. Esta pregunta es específicamente sobre el valor de la resistencia extraíble en la lógica NMOS.

En mi prueba de placa de prueba, solo usé resistencias de 10k ya que tenía un montón por ahí y el valor es típico para una resistencia pull-up, por lo que parecía razonable, pero puede que no sea óptimo para lo que estoy tratando de lograr.

Según tengo entendido, la elección de este valor es una compensación entre el consumo de energía de la CPU y la velocidad que tarda cada puerta en alcanzar su valor de salida y, por lo tanto, la velocidad máxima de reloj a la que podría conducirlo.

Consumo de energía: supongamos que cada transistor tiene una resistencia de 10k y que todos los transistores están encendidos. Como los valores típicos de R_dson son mucho menores que 10k, podemos ignorarlos. Esto significa que el consumo de energía sería del orden de 3000*(5^2)/10000=7,5 vatios. Esto parece sorprendentemente bajo, ¿es este valor razonable?

Velocidad de reloj: Aquí estoy más a oscuras. ¿A qué velocidad de reloj podría manejar circuitos NMOS con un pull up de 10k frente a un pull up de 1k? ¿Cómo se compararía eso con un circuito CMOS que usa un MOSFET comparable?

7.5W me parece razonable. 1.5A a 5V, ese nivel de potencia no iría bien en un paquete DIP, pero en partes discretas distribuidas en varios pies cuadrados de placa de circuito no causaría ningún problema.
Espero que estés diseñando esto de forma modular. Un circuito lógico de 2000 transistores suena como una pesadilla para depurar...
Planeé construir cada "escala grande" (por ejemplo, registro, sumador, inc) en un tablero separado y depurar cada uno por separado (primero probando cada diseño en un tablero de barba)
Creo que un enfoque interesante para la implementación sería construir una placa de circuito pequeña que contenga tres puertas NOR de 3 entradas y usar esto como su bloque de construcción básico. Tendría 14 conexiones a lo largo de un borde, lo que le permitiría conectarse a una placa de prueba para el diseño o a una placa de envoltura de alambre (por ejemplo) para una configuración más permanente. Puede hacer una PCB personalizada o construirla en una placa Uni-SIP . Dos de estos módulos se utilizarían para hacer un flip-flop D activado por borde. El Cray-1 original se construyó de manera similar, excepto que usaban un IC real.
... Su tablero podría incluir un pequeño LED en la salida de cada puerta, lo que ayudaría con la depuración ... ¡y también se vería genial cuando la máquina esté completamente ensamblada y funcionando!
+1 por el coraje! ¡Buena suerte para la implementación! Le habría aconsejado que usara puertas lógicas integradas como bloques de construcción básicos, no transistores. Gran oportunidad de aprender muchas cosas nuevas, pero suena como una pesadilla para una persona soltera que probablemente también tenga que lidiar con otros "asuntos escolares" (y tal vez un poco de la vida también ;-). Solo por curiosidad, ¿cuánto tiempo tienes a tu disposición para terminar el proyecto?
Tengo 7 períodos libres por semana y estoy dispuesto a agregar un par de horas extra de tiempo personal por semana. No tengo una fecha límite específica, pero me gustaría terminarlo para diciembre (es difícil decir qué tan optimista es esta predicción). También consideré acelerar la construcción usando una impresora 3D como una máquina de recoger y colocar, pero llegué a la conclusión de que hacer que funcionara de manera confiable sería un proyecto en sí mismo y probablemente llevaría aún más tiempo.

Respuestas (1)

El tiempo dependería principalmente de la carga capacitiva en cada puerta lógica, que incluiría tanto la capacitancia del cableado como la capacitancia de la(s) puerta(s) MOSFET que está manejando.

Por ejemplo, el 2N7000 tiene una capacitancia de entrada de 20 pF típica (50 pF máx.). Si su fanout promedio es 3, más alguna capacitancia de cableado, eso le da una carga típica de 100 - 200 pF. Con un pullup de 10K, eso le da una constante de tiempo RC de 1 - 2 µs. Probablemente necesite permitir al menos dos constantes de tiempo para un "retraso de puerta" para una conmutación confiable, por lo que estamos hablando de 2 a 4 µs por puerta.

Para realizar un trabajo útil, deberá permitir un número máximo de retrasos de puerta por período de reloj. Esto dependerá de su diseño específico, pero un número como 6 a 10 sería típico. Ahora estamos hablando de un período de reloj de 12 a 40 µs, o frecuencias en el rango de 25 a 80 kHz.

Cambiar a una resistencia de 1K permitiría que la frecuencia aumente en aproximadamente un factor de 10.

Estos números me hacen apreciar aún más los núcleos de los procesadores modernos, con sus velocidades de conmutación alrededor de los hornos de microondas que en realidad dan como resultado cálculos que se acercan bastante a la magia.
En el caso de la lógica CMOS, ¿el uso de R_DSon del MOSFET como resistencia para el circuito RC produciría resultados razonables?
Sí, ese es uno de los beneficios de CMOS. El otro es poder apagar el pullup por completo cuando la salida es baja, eliminando la disipación de energía estática.