ΣSigmaStudio Ask AI Русский Log in

How do I create a filter in SigmaStudio that is not part of the standard library?

SigmaDSP & SigmaStudio ADIApproved Apr 23, 2012 00:00 3 replies Original on forum ↗
Subscribe
ADIApproved Question
Apr 23, 2012 00:00

How do I create a filter in SigmaStudio that is not part of the standard library?

filter

sigmastudio

SigmaDSP

ADIApproved Reply
Apr 23, 2012 00:00

It’s possible to create your own digital filter architectures using the low-level add, multiply, and delay blocks in the SigmaStudio library. This might be the best solution since the filters you are looking to use are not part of the standard library. For example…

This…

Becomes this:

It is certainly more time consuming to design filters this way as opposed to the existing filters in our library, but it will afford you the flexibility to implement any architecture you wish.

The cool thing is that you can even use the probe and stimulus functionality to check the frequency and phase responses.

Here is the schematic with probe/stimulus inserted:

And here is the response:

So, if you can get the basic block diagram of the filter you want to implement, it’s pretty easy to connect some blocks and create it in SigmaStudio.

0db602cd0b87cef1ce03a84ec4c57722.jpg
0db602cd0b87cef1ce03a84ec4c57722.jpg
0db602cd0b87cef1ce03a84ec4c57722.jpg-450x119.jpg
0db602cd0b87cef1ce03a84ec4c57722.jpg-450x119.jpg
d0f4daa082d9ce535319fe33d34aba3e.jpg
d0f4daa082d9ce535319fe33d34aba3e.jpg
d0f4daa082d9ce535319fe33d34aba3e.jpg-450x207.jpg
d0f4daa082d9ce535319fe33d34aba3e.jpg-450x207.jpg
7724937738269df28f197961a2d3dfc6.jpg
7724937738269df28f197961a2d3dfc6.jpg
7724937738269df28f197961a2d3dfc6.jpg-450x178.jpg
7724937738269df28f197961a2d3dfc6.jpg-450x178.jpg
bfb11c2469ce202cc1850db1bb41c323.jpg
bfb11c2469ce202cc1850db1bb41c323.jpg
bfb11c2469ce202cc1850db1bb41c323.jpg-450x318.jpg
bfb11c2469ce202cc1850db1bb41c323.jpg-450x318.jpg
MaxAudioDSP Reply
Oct 26, 2015 00:00

I've simulated it with matlab, here the code:

Fs = 48000; % [Hz]

Ts = 1/Fs; % [s]

z = tf('z',Ts); % discrete transform

b0 = 0.5;

b1 = 0.25;

a1 = 0.3;

tf1z = (b0+b1*(z^-1))/(1+(a1*(z^-1)));

figure(1);

bode(tf1z);

title('Low Pass 1st order (discrete)');

However bode seems to be a little different from probe window, I'm referring to gain error.

See image

038fcac89566c23ddd4f80fa33eb5286.jpg
038fcac89566c23ddd4f80fa33eb5286.jpg
038fcac89566c23ddd4f80fa33eb5286.jpg-561x420.jpg
038fcac89566c23ddd4f80fa33eb5286.jpg-561x420.jpg
KJBob Reply
Oct 27, 2015 00:00

Hello,

I'm afraid Brett is no longer on the forum (his dimmed avatar is your clue). The Stimulus-Probe tool only estimates the response of the feed-forward portion of discrete filters. It doesn't know how to handle Feedback blocks, so "homemade" IIR filters cannot be accurately estimated -- see https://ez.analog.com/message/120089#120089

Best regards,

Bob