Ich habe drei Tage gebraucht, um das herauszufinden. Betrachten Sie diese einfache Schaltung in LTspice:
Sieht ziemlich unschuldig aus. Der Ausgang ist wie erwartet eine 1-V-Sinuswelle. Gehen Sie zu View->FFT, setzen Sie die Anzahl der Datenpunkte auf 5000, Startzeit 50u, Endzeit 100us. Keine Filterung. Dies ist die Ausgabe:
Ein Ausgang wie dieser macht für einen Sinusausgang und/oder ein schwach nichtlineares System, in dem die Oberwelle sanft abfallen soll, keinen Sinn.
Löschen Sie nun V6 und führen Sie es erneut aus. Voila, das Spektrum macht mehr Sinn.
LTspice erlaubt kein "Auskommentieren" bestimmter Blöcke und merkt sich nicht einmal die Parameter. Wenn ich also zwischen Sinus- und Impulseingang umschalte, muss ich immer den gesamten Parametersatz neu erstellen und mir einprägen. Daher ist es sinnvoll, alle Quellen auf dem Schaltplan zu platzieren und nur diejenige anzuschließen, mit der ich gerade arbeite.
Ich habe den Verdacht, dass es mit den zeitdiskreten Zeitschritten zu tun hat, die durch bloßes Platzieren einer Impulsquelle erzwungen werden.
Meine Frage ist:
Es ist nichts falsch an dem, was Sie getan haben, aber es kann verbessert werden. Gemäß den Kommentaren und der Antwort von @ HKOB hat die zusätzliche Quelle eine 1ps
Anstiegs- / Abfallzeit im Vergleich zu ihrem Arbeitszyklus von 0.5us
. Während die PULSE
Quellen intern pro Zeitschritt bewertet werden – das heißt, während der gesamten Simulation weiß LTspice jederzeit, welche Werte zu welchen Zeiten vorliegen – muss der Solver seinen Zeitschritt noch reduzieren, um den sehr starken Anstieg/Abfall zu berücksichtigen mal. Dies liegt in diesem Fall vor allem an der sehr glatten Natur der Signale (Sinuseingang, Sinusausgang). Dies, zusammen mit Ihrem auferlegten Zeitschritt von 10ns
für einen Zeitraum von 1us
, führt dazu, dass LTspice trotzdem zusätzliche Geräusche erzeugt.opt plotwinsize=0
, aber beachten Sie auch, dass die Werte des induzierten Rauschens sehr klein sind, vergleichbar mit denen für die fehlende Quelle.
Übrigens können Sie 0
am Anfang des Impulses ein hinzufügen, gefolgt von einem Kommentar: 0;pulse ...
, dadurch wird die Quelle nullwertig. Oder Sie können es so vorbereiten, dass es für Folgendes bereit ist .step
: pulse {-a*0.8} {a*0.8} 0 {1p*a} {1p*a} {0.5u*a} {1u*a}
, wo sich beispielsweise a
befinden kann . .step param a list 1 0
Hier ist das Ergebnis mit diesen Einstellungen:
Beachten Sie, dass das Rauschen (bis 100 MHz) aufgrund des relativ großen Zeitschritts tatsächlich geringer ist als die Oberschwingungen, was bedeutet, dass es sicher ist, sie zu ignorieren, oder verbessern Sie die Simulation: Machen Sie einfach den Zeitschritt (1000-mal kleiner 1ns
als die Periode) und führen Sie ihn erneut aus.
Sie können niedriger gehen, aber für die Zeit, die Sie simulieren, wird es sehr langsam für wenig zusätzlichen Nutzen, was bedeutet, dass Sie die Gesamtsimulationszeit auf 8-10 Perioden oder ähnliches reduzieren können (es sei denn, Sie wollen wirklich genau das erfassen auch niedrige Frequenzen) und das Ergebnis wird schneller und mit der gleichen Relevanz sein.
Leider (und zumindest meines Wissens) gibt es keinen SPICE-Simulator, der einen echten festen Zeitschritt hat, und das liegt an der Natur des Lösers. Welchen Zeitschritt Sie auferlegen, hat nur den Effekt, dass der Solver auf das Maximum dieser Zeitschritte beschränkt wird, aber er wird niedriger, wenn dies erforderlich ist.
Mit der zusätzlichen Quelle fügen Sie aufgrund der Anstiegs- und Abfallzeit von 1 ps zusätzliche erzwungene Zeitpunkte hinzu. Die zusätzlichen Zeitpunkte führen zu geringfügigen numerischen Abweichungen in den Lösungen. Zwei Dinge sind zu beachten: (1) Wenn numerische Fehler auf Konvergenz zurückzuführen sind, ist reltol normalerweise die Option zur Reduzierung. Beispiel: ".option reltol=1e-6". Auch das Reduzieren von dTmax in der .tran-Anweisung sollte zu genaueren Ergebnissen führen. Der typische Rat ist, diese beiden etwas zu reduzieren und sie dann zu lockern, bis Sie zufrieden sind, dass Ihre Lösung genau genug ist. Ich kann es jetzt nicht testen, aber ich denke (2), wenn die Zeitpunkte das FFT-Sampling stören, können Sie in LTspice Tstep (Druckschritt) auf einen festen Wert setzen, z. B.: ".tran 10e-9 100u 0 10e- 9".
EE_sozial
jonk
ein besorgter Bürger