Tuve que dibujar un DAC usando un circuito sumador. ¿Puedo saber por qué hay picos en el gráfico generado?
Antes de publicar dicha pregunta, es realmente una buena idea aislar el problema. Para eso debes tirar todo menos la escalera de resistencia, y puedes ver el mismo problema.
Si ahora hace zoom en el punto de uno de los picos y muestra todos los voltajes de sus fuentes de voltaje, notará que la fuente que desciende solo comienza a hacerlo una vez que los otros aumentan.
Como dice Trevor, esto es más o menos una propiedad / problema inherente de los diseños DAC basados en la escalera de resistencias y también ocurrirá hasta cierto punto en implementaciones reales, ya que la sincronización de los interruptores nunca será perfecta.
Lo que está viendo es una característica común e irritante de los DAC en general y prevalece en los simuladores.
El problema es el cambio simultáneo de los bits en el valor digital DAC presentado. Durante ese cambio, el valor presentado resultante puede ser cualquier combinación de los bits que cambian durante el retardo de propagación.
En teoría, un simulador debe estar sincronizado con los parámetros de datos establecidos, pero como Andy menciona, realmente depende de cuán granular el simulador tome sus muestras. Los simuladores como SPICE tienden a muestrear en una frecuencia de muestreo reaccionaria basada en lo que está cambiando, por lo que pueden presentar resultados más falsos como usted ha indicado. Cuánto demuestra el simulador el efecto depende de la granularidad de la tasa de simulación. Al jugar con la granularidad del simulador, puede enmascarar el efecto, pero eso es realmente malo.
Dado que su diseño DAC del mundo real tendrá diferencias de retardo de propagación de bit a bit, esos picos serán reales y se propagarán al op-amp, y más allá si el op-amp es lo suficientemente rápido. Su circuito debe estar diseñado para limitar el tiempo de respuesta / velocidad de giro para bloquearlo.
Para un diseño DAC que sea de baja frecuencia, como establecer un valor de referencia, simplemente puede filtrar la frecuencia de conmutación. Para algo que se espera que genere alguna forma de onda más cercana a la frecuencia de muestreo, debe sincronizar la salida con la velocidad de datos utilizando un circuito de muestreo y retención en la salida.
Esta es una característica de la mayoría de los simuladores SPICE, especialmente cuando no se especifica un valor para la duración máxima del tiempo. Veo ".tran 10" por lo que no ha especificado un paso de tiempo máximo.
Intenta hacer esto tal vez 1 y ver qué pasa. Seguro que será más lento en el análisis transitorio, pero debería mejorar. No estaría de más colocar un capacitor de 1nf para que invierta la entrada a tierra también. Si estuvieras haciendo un circuito real con bordes realmente rápidos en las entradas, podrías hacer esto. Alternativamente, disminuya la velocidad de subida y bajada de los generadores.
También está utilizando un amplificador operacional antiguo que requiere (en algunas aplicaciones) la adición de un condensador de compensación. Este podría ser el problema, pero ciertamente los problemas de pasos de tiempo y los matices de SPICE suelen producir picos como estos.
Lea otras preguntas en las etiquetas op-amp