¿Buena fuente para aprender sobre los conceptos básicos de los circuitos integrados?

Me gustaría aprender los conceptos básicos de circuitos integrados y microprocesadores. Para tener una idea de mi nivel de ignorancia, aquí hay algunas preguntas que tengo: 1. ¿Cuántas "capas" tiene un microprocesador? 2, 3, cientos, miles? Supongo que tiene que ser más de uno, ya que si los "cables" se cruzan, supongo que uno debe saltar a la capa de abajo (o arriba) por un tiempo y luego saltar hacia atrás. 2. Recuerdo haber leído que distribuir el "reloj" es un gran problema para el uso de energía y el diseño de un chip. ¿Todas las partes de un chip deben funcionar con el mismo reloj? ¿Puede un "canal de comunicación" sincronizarse automáticamente, como me imagino que es una conexión USB/ethernet? 3. ¿Existe algún software donde se pueda diseñar un circuito integrado, simularlo y ver si funciona?

Alguien sabe de un buen libro? Mi experiencia en matemáticas e informática es muy buena, mi experiencia en electrónica es débil.

Respuestas (5)

Probablemente ya sepa que una persona puede ser un experto en el uso de una motosierra, sin saber mucho sobre el diseño de una motosierra personalizada, y viceversa. Es lo mismo con las patatas fritas.


  • 1. ¿Cuántas "capas" tiene un microprocesador?

Sólo hay una capa de transistores. La mayoría de los transistores se fabrican en un proceso que utiliza 3 capas de metal para la interconexión. El AMD Athlon Thunderbird del año 2000 tiene 6 capas de interconexión, y los procesadores AMD e Intel más recientes usan algunas capas más.

  • 2. Recuerdo haber leído que distribuir el "reloj" es un gran problema para el uso de energía y el diseño de un chip. ¿Todas las partes de un chip deben funcionar con el mismo reloj?

Casi todas las CPU, y la mayoría de los circuitos integrados digitales en general, están diseñadas con herramientas que "imponen prácticas de diseño sincrónicas", utilizando un único reloj global.

Sin embargo, técnicamente no es necesario un reloj global. Hay algunos chips globalmente asíncronos localmente síncronos (GALS). Se han construido algunos chips de "CPU sin reloj" , que no tienen ningún reloj.

  • 2a. ¿Puede un "canal de comunicación" sincronizarse automáticamente, como me imagino que es una conexión USB/ethernet?

Sí. Algunos sistemas (como las CPU sin reloj) utilizan técnicas de circuito completamente insensibles a los retrasos para mantenerse sincronizados, de modo que cualquiera de los extremos puede funcionar a cualquier velocidad concebible, hasta prácticamente cero.

Muchos protocolos de comunicación de larga distancia (USB, Ethernet, CANbus, FireWire, DMX512, ATSC, DVB, etc.) suponen que ambos extremos se ejecutan casi a la misma velocidad y compensan las pequeñas diferencias en la velocidad mediante el uso de uno mismo . -señales de reloj para compensar el bit-slip, desincronización de cuadros , etc.

La comunicación entre dos circuitos integrados en una PCB, o entre dos secciones de un circuito integrado, generalmente utiliza un "cable de reloj" dedicado y un "cable de marco" que se extiende de uno a otro para mantener todo sincronizado.

  • 3. ¿Existe algún software donde se pueda diseñar un circuito integrado, simularlo y ver si funciona?

Sí. Estoy haciendo una lista que incluye simuladores de circuitos digitales.

Esos son todos software de diseño de nivel de puerta digital. Existe una categoría completamente diferente de software de diseño a nivel de transistor, como "Magic and IRSIM", que se utiliza para el diseño de circuitos integrados analógicos y digitales completamente personalizados.

Consulte https://code.google.com/p/elementary-microprocessor/ . Es un microprocesador básico que diseñé con fines educativos simulado en un programa Java, por lo que debería funcionar en cualquier plataforma. Lea la introducción y tiene enlaces a otros diseños que son aún más básicos en caso de que el microprocesador elemental sea más difícil de lo que está listo para asumir. No entra en el diseño físico, solo el diseño lógico, pero la documentación está en un lenguaje sencillo, evita los términos técnicos y los define cuando se usan, y no asume que el lector haya tomado alguna vez una clase sobre el tema. ¡Buena suerte!

Además, viene con algunos scripts Perl bastante malos que sirven como ensamblador para ayudarlo a escribir programas que funcionan cuando se importan al programa simulador. Puede enviarme un correo electrónico para cualquier pregunta. -Rory

Gracias, el EM se ve muy bien. Por desgracia, no veo su dirección de correo electrónico en este stackexchange o en harkopen.
Es Elementarymicroprocessor@gmail.com. Me aseguré de que ahora esté en la página del proyecto harkopen.

Es posible que desee echar un vistazo a algunas de las respuestas a esta pregunta aquí:

¿Libro de diseño de microcontrolador/cpu?

El libro The Elements of Computing Systems: Building a Modern Computer from First Principles es un excelente lugar para comenzar.

Hay algunos verdaderos fundamentos, aritmética binaria, álgebra booleana e interruptores lógicos. Los dígitos binarios son 1 o 0 y un grupo puede representar un número donde el valor de cada posición es 2 elevado a n, donde n es el índice de posición del dígito, por lo que el valor del grupo/palabra es la suma de los valores de posición que son 1. Análogo al sistema decimal donde los dígitos son del 0 al 9.

El álgebra booleana se ocupa de las condiciones de verdadero/falso que también son valores binarios, por lo que en los circuitos digitales una señal representada por un voltaje de 0 o no cero también puede representar valores binarios. Por lo tanto, una simple fila de interruptores de encendido/apagado conectados a bombillas puede mostrar un valor en el que un interruptor de "encendido" y una luz corresponden al valor binario de esa posición en la fila.

Las funciones lógicas/booleanas usan múltiples interruptores donde los interruptores conectados en serie hacen la función "y" porque ambos deben estar encendidos para encender la bombilla. Conéctelos en paralelo para el "o", luego el interruptor 1 o el interruptor 2 encenderán la bombilla.

Casi todo lo que se necesita desde el aspecto de la ingeniería es que los transistores puedan actuar como interruptores de encendido y apagado (circuitos de conmutación) y se puedan conectar en paralelo o en serie.

En la práctica, solo unos pocos transistores se pueden conectar directamente entre sí, por lo que se conecta una red de funciones para generar funciones complejas. Cada función se convierte en un nivel lógico y tiene un tiempo finito para resolverse. La suma de los retrasos para cada nivel en la ruta es la demora de la ruta. La ruta con el retraso más largo se convierte en un factor de rendimiento crítico. (ruta crítica) Puede haber confusión sobre los niveles (tiempo) de un diseño y los niveles de metal utilizados para conectar físicamente los transistores.

El retraso de la ruta crítica limita la frecuencia máxima del reloj, ya que el período del reloj debe ser más largo que la ruta crítica.

El uso de un diseño de reloj/síncrono es una solución a los problemas causados ​​por las condiciones de carrera. A medida que las señales se propagan a través de una ruta, la salida puede cambiar más de una vez antes de resolverse, ya que todas las rutas posibles no tienen el mismo retraso. "falla" es el término común.

Un contador consta de un grupo de elementos de almacenamiento que son entradas para un sumador/incrementador que es entrada para estos elementos. El contador debe cambiar en 1 incremento cuando llega una señal de control de entrada. Un conjunto de 2 entradas y puede conectar el sumador al contador. Si el contador se compone de cerrojos que son simplemente puertas cruzadas, la duración de la señal de control puede ser lo suficientemente larga como para que se produzca más de un incremento. En lugar de pestillos, se usan flip-flops D porque pueden cambiar solo una vez por borde de reloj sin importar el período. Ahora se aplican otro par de cosas: el valor de entrada debe ser estable para el tiempo de configuración antes del borde del reloj y para el tiempo de espera posterior.

Muchos FF pueden cambiar en cualquier borde dado, por lo que todos los relojes deben ocurrir muy cerca del mismo tiempo, de lo contrario, una entrada puede cambiar durante esta ventana.

2. Recuerdo haber leído que distribuir el "reloj" es un gran problema para el uso de energía y el diseño de un chip. ¿Todas las partes de un chip deben funcionar con el mismo reloj? ¿Puede un "canal de comunicación" sincronizarse automáticamente, como me imagino que es una conexión USB/ethernet?

A menudo hay múltiples "dominios de reloj" diferentes en diferentes frecuencias, a veces variables o capaces de detenerse por completo. Puede recuperar el reloj de los flujos de datos de muchas maneras, especialmente con una codificación inteligente; el humilde código de barras es un ejemplo de esto.

El diseño de lógica asíncrona desencadena la siguiente fase de un cálculo cuando se completa la anterior. En realidad, nunca se ha comercializado, ya que requiere una metodología de diseño muy diferente.

Solía ​​trabajar para una startup cuyo producto era un software de diseño de árbol de reloj automatizado. Sin duda es un problema complejo.

3. ¿Existe algún software donde se pueda diseñar un circuito integrado, simularlo y ver si funciona?

Sí, hay bastantes para diferentes propósitos en diferentes niveles de abstracción. Cadence y Synopsys son los grandes nombres; Modelsim tiene una edición gratuita muy útil para la simulación lógica. SPICE se utiliza para determinar las propiedades de una puerta a nivel de silicio.