Failed to find DC operating point for AC analysis


 

I uploaded the file noise.asc to the group's temp folder, hoping someone can tell me how to get a bode plot. With the .tran analysis active it runs fine, but changing that to .ac gives an error. I just realized the .wave directives reference a drive G: you all may not have, so just delete those. I tried adding an empty AC generator, but that didn't help. Any advice to get this working is greatly appreciated!


 

I don't see what a Bode plot of a circuit based on two shift registers would mean. I think the only Bode plot you can do is of the pinking filter.

On 2024-11-27 19:57, Ethan Winer via groups.io wrote:
I uploaded the file noise.asc to the group's temp folder, hoping someone can tell me how to get a bode plot. With the .tran analysis active it runs fine, but changing that to .ac gives an error. I just realized the .wave directives reference a drive G: you all may not have, so just delete those. I tried adding an empty AC generator, but that didn't help. Any advice to get this working is greatly appreciated!
-- 
OOO - Own Opinions Only
Best Wishes
John Woodgate
Keep trying

Virus-free.www.avg.com


 

Yes, exactly, I want to show the frequency response of the white and pink noise outputs.


 

OK, just delete all the shift-register stuff and connect your 'floating' generator to the inputs of the white-noise buffer end the pinking filter.

On 2024-11-27 20:55, Ethan Winer via groups.io wrote:
Yes, exactly, I want to show the frequency response of the white and pink noise outputs.
-- 
OOO - Own Opinions Only
Best Wishes
John Woodgate
Keep trying

Virus-free.www.avg.com


 

That won't give me the true response of the generator made from shift registers. I know it's fairly flat, but I need confirmation. Surely there's a way to get this circuit to work with .ac analysis! I just don't know what to change.


 

Where is your AC source?
 
In .AC analysis, there must be an AC source, either a voltage or current source with a non-zero AC parameter.  I see one, but it's driving node N036, which appears to go nowhere!  That will never work.
 
Also, it appears that 98% of this circuit is completely digital (binary), not analog.  It is pointless trying to get a Bode plot of digital flip-flops.  The concept is just meaningless.
 
I don't fully understand why it can't find the operating point in one case (.AC) but it can in the other (.TRAN).
 
Actually, now I see what happened.  LTspice was unable to find the operating point in BOTH simulations.  But for the .TRAN one, it proceeded anyway, without any operating point:
    Trouble finding operating point....skipping operating point for Transient analysis.
It can do that for .TRAN.  But the same thing doesn't work for .AC.
 
I think you need to provide LTspice with a lot of "help" to find an initial operating point.  And then, re-think what it means to do an .AC sweep of a digital circuit, and why that doesn't work.
 
Andy
 


 

On Wed, Nov 27, 2024 at 04:15 PM, Ethan Winer wrote:
That won't give me the true response of the generator made from shift registers.
Why not?
 
Are you concerned about the source impedance of the shift registers, feeding the filters?

Surely there's a way to get this circuit to work with .ac analysis! I just don't know what to change.
Well, yes, and no.
 
Yes you can get it to work by getting DC convergence.
 
No you can't measure the frequency response of a shift register. with SPICE's .AC analysis.
 
Andy
 


 

Thanks Andy. If you read my replies to John, I'm not trying to get a response plot of digital circuits. There are two analog outputs, and those are what I want to see. I did connect a resistor to ground from the unused V1 voltage source, but that didn't help either.


 

Just to be clear about this -
 
.AC analysis is a SMALL-SIGNAL LINEAR analysis.  The overriding assumption is that the entire circuit is linearized, making it 100% linear (shift registers and flops are not), and the resulting response is the SMALL SIGNAL response through the system which is assumed to be linear about the operating point.  As it is linear, the output frequency equals the input frequency.
 
Andy
 


 

LOL, I found a solution: I ran it with .tran, then selected View .. FFT to see the response of the two analog outputs. But I'm still curious why I can get .ac to work.


 

On Wed, Nov 27, 2024 at 04:22 PM, Ethan Winer wrote:
Thanks Andy. If you read my replies to John, I'm not trying to get a response plot of digital circuits. There are two analog outputs, and those are what I want to see. I did connect a resistor to ground from the unused V1 voltage source, but that didn't help either.
OK, so you deleted all the digital circuits, leaving only the two analog filters, right?  (I know you didn't.)
 
How does the voltage from V1 get anywhere?
 
Adding a resistor from V1 to ground doesn't do anything helpful.  How does V(N036 get to your outputs?
 
Andy
 
 


 

Right, so now you are using the correct tool for the job, an FFT.


On Wed, 27 Nov 2024 at 21:26, Ethan Winer via groups.io <ethanw=ethanwiner.com@groups.io> wrote:
LOL, I found a solution: I ran it with .tran, then selected View .. FFT to see the response of the two analog outputs. But I'm still curious why I can get .ac to work.


 

You cannot use .AC to find the frequency response of your PRBS generator. .AC uses it's own sweep generator, defined in the source specification pane under 'Small signal (AC) analysis'. What are you trying to sweep the frequency of to get the Bode plot? You could use .STEP to produce a discrete sweep, using linear or log steps intervals.

On 2024-11-27 21:15, Ethan Winer via groups.io wrote:
That won't give me the true response of the generator made from shift registers. I know it's fairly flat, but I need confirmation. Surely there's a way to get this circuit to work with .ac analysis! I just don't know what to change.
-- 
OOO - Own Opinions Only
Best Wishes
John Woodgate
Keep trying

Virus-free.www.avg.com


 

Thanks again guys, I get it now.


 

Ethan,

 

you can easily calculate the noise voltage density distribution Vn(f) in V/sqrtHz of

an NRZ unipolar pseudorandom bit sequence of amplitude A (15V, in your case) driven by a clock

signal with frequency Fck and period Tck=1/Fck, like this:

 

At DC:                                    Vn(0)= A/2

At all other frequencies:        Vn(f)=A*Tck*sin(x)/x   where x = pi*f*Tck

 

Here sin(x)/x is the classical sinc(x) function with nulls at the clock frequency

Fck and all its integer multiples.

 

Trace this curve with a dB vertical scale [20*log(Vn)], and you will then see that

the noise voltage density distribution is almost flat only up to about 1/10th of the clock

frequency.

 

At 1/4th of the clock frequency it goes about 1 dB down, at 0.5*Fck the level is about

4 dB down, and 0.75*Fck it's about 10 dB down.

 

In theory -and considering ideal NRZ pulses- the effective noise spectrum coming out

from your circuit is this same characteristic combined with the frequency

response of the subsequent filters.

 

But be careful: when simulating the circuit with LTspice there is another parameter

that could play a role in shaping the displayed FFT trace of the filtered noise:

the maximum timestep (Tmax) used by the simulation engine. Its effect is to convolute

the noise signal with a second sinc function that can somewhat distort the real response, hence it

is a good rule to keep it at least ten times smaller than the clock period of the

PRBS noise generator.

 

You can play with this parameter looking at the FFT of an LTspice's behavioral noise

generator, like for instance a "white" with V=0.1*white(1e6*time). Begin with a transient

simulation setting a maximum timestep of 0.1u, and then repeat it but setting it to 1u and then

then to 10u, and see the differences in the displayed traces

 

A last comment: maybe I’m wrong, but it seems that the primitive polynomial of your generator

is x^31+x^13+1. Now, in order to get the maximum length of the sequence this polynomial should

be x^31+x^28+1 (or its complementary x^31+x^3+1).

 

I have uploaded in the Temp folder the file <PRBS_Maxlenght_31.asc>, a modified version of your

circuit reflecting the latter structure, plus an initialization circuit added to the first register that avoids

the need for an AC coupling in the feedback.