Estoy a punto de embarcarme en un proyecto, inspirado en Nand2Tetris (http://www.nand2tetris.org/), para simular completamente una computadora, construyendo todo a partir de puertas NAND.
Quiero simular todo desde cero, comenzando con una implementación primitiva de una puerta NAND que simula cómo funcionaría una puerta NAND en el nivel físico , y luego conectarlos para construir una computadora.
La cuestión es que no entiendo lo suficiente acerca de cómo funcionaría una puerta NAND en el nivel físico para escribir esto.
Para ser claros, esto ciertamente no es lo que estoy buscando:
def nand(a, b)
return !(a && b)
end
Me gustaría implementar la puerta NAND como una clase, para que funcione más como un objeto real. Me gustaría que tuviera pines, y me gustaría poder conectar los pines entre sí y aplicar voltaje, etc.
¿Puede alguien mostrarme cómo podría implementar una simulación adecuada de una puerta NAND física, una que podría vincularse para finalmente construir una computadora?
La mejor manera es implementar una rueda de eventos y definir un retraso de propagación para la puerta. Sin este retardo es imposible simular cualquier tipo de elemento de memoria. Puede buscar el término "rueda de eventos" en Google, es la base para los simuladores HDL. Alternativamente, puede escribir todo en verilog, lo que tiene la ventaja de realizar el hardware más tarde con las herramientas adecuadas y el simulador puede ser gratuito (busque "Icarus").
Si realmente desea aplicar voltajes, deberá implementar un modelo de transistor o usar BSIM3 en algún tipo de simulador personalizado, pero eventualmente tendrá que volver a implementar SPICE ya que el modelo de objeto que propone no funcionará bien para los circuitos donde las "entradas" son en realidad, cables conectados a puertas que pueden cargar las salidas y cambiar el comportamiento del circuito.
Buena suerte.
Construir una computadora a partir de puertas NAND sería doloroso. Pero si deseas bajar al nivel de voltajes y corrientes, necesitas un simulador a nivel de transistores como el de Spice . Tal vez una vez que tenga el transistor uno funcionando, puede asumir que funciona y cambiar a HDL como mostró y sugirió apalopoapa.
Estoy bastante confundido acerca de su problema real.
La cuestión es que no entiendo lo suficiente acerca de cómo funcionaría una puerta NAND en el nivel físico para escribir esto.
pero luego escribes todo lo que hay que saber sobre una puerta NAND:
def nand(a, b) volver !(a && b) fin
Todo lo que te falta es "cómo convertirlo en un objeto", pero eso no es una cuestión de la puerta NAND física, sino de tu comprensión de la programación.
escribió la función de una puerta NAND con ambas entradas flexibles y la salida determinada por la persona que llama. Todo lo que necesita ahora es convertirlo en un Objeto con entradas y salidas fijas [Además, como las otras preguntas dijeron un retraso de tiempo mínimo para el almacenamiento]
templatetypedef
mikec8
el fotón
ErikR