Gaussian filter for CISPR specification

Hi there!

I am trying to implement a gaussian filter that complies to CISPR standard for the receiver’s IF.
Each CISPR standard has its own set of specs depending on the frequency range analysed.
Here is an example of those specs.

I think a Bsource with a LAPLACE=GaussianBP(order,freq,RBW) is the most efficient way to implement it but I don’t know how to relate the Bsource parameters to a more typical expression of a Gaussian filter, something like:

Did someone already explore this space or knows more about the GaussianBP filter proposed by Qspice?


This is the math and a .qsch example
B Source - Laplace - GaussianBP.qsch (2.2 KB)

Hey KSKelvin, thanks a lot for your illustration. While your comment has been precious food for thoughts, it does not really solve my conundrum.

Thanks to you I have solved how to relate the 3db BW, which is how Qspice defines the bandwidth of its filter commands, into 6dB BW, which is instead how CISPR defines the IF filter.

However I could not explain yet the influence of the ORDER on the GaussianBP.

If I use the GaussiaBP filter command, this is what comes out in an AC sim with respectively ORDER=1 and ORDER=8 (I also compared it with the actual Laplace function of the canonical gaussian filter):

As you can see, the higher the order, the more the Qspice GaussianBP “tends” to the canonical Gaussian filter. This is just my empirical observation, which I would like to explain with the actual math behind the Qspice GaussianBP command.

However it seems it works. There is catch though:
when I do a transient simulation of these two cases, this is what I get (the canonical Gaussian filter cannot be simulated in time domain, as it seems that there is no solution to its synthesis):

which makes me think that there is something unrealistic into instantiating a GaussianBP with ORDER>1. Indeed look at what happens with ORDER=2:

The B2 peak value seems be greater than 1… this is strange: the AC gain at 100kHz is 0dB

All this leads me into thinking there is something to be careful about when using these filters… I just don’t know what.

To summarize, my questions are:
-what is the mathematical definition behind the GaussianBP?
-how the ORDER affects this mathematical definition?
-why transients don’t give expected results when ORDER>1 ?

Do you have concept about system poles in control theory?
Order in general is how many poles in system transfer function.
More poles you get sharper filter (gain roll off quicker)… but there is no free lunch, and what sacrificed is response time. A 2nd-order or above system can have overshoot depends on system condition. I never need to work on complex filter and may be other can give you more detail.
For .tran, skip initial condition can prevent dc operation point into the simulation and giving you huge value in .tran for 2nd-order or above. Hope this give you some hint to start your research in Gaussian.

Sure, I well understand the effects of poles and zeroes. Sure, the time response of a continuous band-pass contains the envelope exp(-t/tau) that depends on the bandwidth AND the order. You can see an example in fig2 of this article An overview of filters and their parameters, Part 4: Time and phase issues. There an 8th order version of the same filter has 5x settling time of its version at order=1.

I know the GaussianBP filter will have different poles-zeroes locations, but it can’t be so different that it needs to wait forever to settle. I simulated for extended time (seconds for a 100kHz centered filter) and nothing came up.

Indeed your time response, is kinda what I normally expect but you obtained it by just skipping the search for an initial condition (that is the equilibrium point of the system). So, the weird transient behavior I saw seems to have nothing to do with a slower response because of higher order for higher order transfer function, but rather with the initial condition being unsolved.

To demonstrate this I have simply cascaded 8xORDER=1 GaussianBP Bsources (for which I empirically tweaked the bandwidth to approximately match the ORDER=8 GaussianBP Bsource’s bandwidth).
Such cascading is equivalent to throw more and more poles and zeroes into the system, at least analythically.
WITHOUT skipping initial condition the system exhibits the expected time domain response:

Again, the settling time of the 8x cascaded filter is within the expectations… on the contrary the GaussianBP with ORDER=8 is not coming up.

I still consider this weird…

Further observation:
The transfer function of the 8th order GaussianBP and its cascaded version match perfectly if the 3db bandwidth of the latter is selected opportunely (coefficient found empirically):

why their impulse responses are not matching ?

PS: Please note I had to skip initial condition search to let the 8th order GaussianBP settle as expected.