Bireciprocal lattice wave digital filter

Hello

I am trying to model a bireciprocal Cauer filter in LTspice but I don't get the expected results. More precisely, using ?=(re(s)?1)/(re(s)+1)

where re(s) is the realpart of the pole, gives this result:

formatting link

Among the few references I have, one that gives a numerical example is a th esis, "Design and Realization Methods for IIR Multiple Notch Filters and Hi gh Speed Narrow-band and Wide-band Filters, L. Barbara Dai" and, simply by looking at the numbers and comparing them with what I had, it seemd as if t he poles need to be "normalized" to the single real pole, s[(N+1)/2]. That' s what I did:

?=(re(s)/s[(N+1)/2]?1)/(re(s)/s[(N+1)2]+1)

so, even if the numerical values still differed, but a not as before, I got this result:

formatting link

The example used here is not the one used in the thesis, but I seem to get good results (I cannot verify them) with either stop-band, or transition-ba nd optimizations and for any (odd) order.

So, my question is: is this the way to do it, "normalize" poles by dividing each to the single, real pole?

--

Just for the sake of comparison, here are 3 results using the same settings 
 as in the thesis (As=68=>Ap,?s=23=>?p,f0=2), between a 
 normal Cauer IIR filter (V(o3)), Barbara Dai's non-quantized coefficients  
(V(o1)) and my coefficients used with the "normalizing" described above (V( 
y1), ?1=?0.0912405,?2=?0.3412645,?3= 
?0.729655): 

http://s27.postimg.org/nicvinueb/comp.png 

While not there (too may traces makes comparison difficult), if the 11 bit  
quantized values are used for V(o1), the response actually gets closer to t 
he IIR. 


Anticipated thanks, 
Vlad
Reply to
vlad.inf
Loading thread data ...

Correction: ?s=2/3

Reply to
vlad.inf

Beats me what you are trying to do, but if you want magnitude, why wouldn't your model be the sqrt of the complex conjugate multiplied?

|(a + j*b )| = sqrt ((a + j*b)*(a-j*b))

But you have the filter topology, so why not just run it in LTspice?

Reply to
miso

I'm referring to the calculation of the coefficients, it's suposed to be th e simplified version of the "normal" lattice wave digital filter:

?=(Ai-2)/(Ai+2)

where Ai=2*re(s) and s=?+j?, which simplifies to the first eq uation in the OP.

As the pictures show, if run in LTspice with the coefficients calculated af ter the 1st eq. in the OP, I get the results shown in the 1st picture, whic h is obviously wrong. But if I divide re(s) to the single, real pole at (N+

1)/2, given the odd order, I get the results in the 2nd picture, only this isn't supposed to be the normal way of doing it, is it?

---

I'll try again, using the example in the mentioned thesis as a reference. I n doing this I will impose As, Ap, ?p and ?s and determine N (as according to the equations 2.51, 2.52a and 2.52b from the thesis) and with As=68 and ?s=2/3 (as in the example from p.36 in the pdf). This wi ll result in a stop-band attenuation optimization, rather than a transition

-band or a pass-band optimization. I say this because I don't know what app roach Barbara Dai has.

The first simulation is with the raw values from the thesis for ? (bla ck trace) and the quantized values (blue trace):

formatting link

5djaw3/thesis.png

If I calculate the values for ? according to the equation from p.26 fr om the thesis, I get these values:

?1=?0.098365443613057, ?2=?0.34760115224764, ?3=?0.7329991130665

where A[i]=2*?[i] (the real part of the complex poles s[i]=?[ i]+j?[i]) and the values for ?[i] are:

?1=0.15406868065906, ?2=0.48411864791316, ?3=0.8208875

8493805

The results of the simulation with LTspice is this:

formatting link

8h40dsfnr/test1.png , where the black trace is with these coefficients and the blue trace is with BarbaraDai's unquantized.

Transforming back the values for ?[1,2,3] from the thesis, I get these values for the poles:

?1=0.15537305159045, ?2=0.48869842253758, ?3=0.8312795

7288835

which are different than mine. At a glance, it seemed that I could try to d ivide each real pole (my calculations) to the value of ?4=0.98572364

533093, (the single, real pole s4=?4+j*0) in order to calculate the values for the lattice coefficients (the 2nd eq. from the OP), and I got th ese:

?1=?0.091240471459003, ?2=?0.34126450145251, ?3=?0.72965482018797

and the result of the simulation is this:

formatting link
test2.png , which seems even better than Barbara Dai's, even if the lobes i n the stop-band aren't quite equiripple (
formatting link
lobes.png ).

---

So I'll reformulate my question: are the values for the terms Ai (from the thesis) defined as A[i]=2*?[i] or somehow else? If else, how?

Reply to
vlad.inf

Could this be forbidden knowledge?

Reply to
vlad.inf

In the meantime someone gave me the answer: the first formula, ?=(re (s)?1)/(re(s)+1) is correct, but the determination of the po les in the s-domain is wrong, in that all the four parameters, As, A p, ?s and ?p, need to be specified such that the resulting N is c losest to integer, without using ceil(). In other words, the best approach is to impose N and deduce one of the four parameters from the other three.

With the same example from the thesis (p.27) and a quick change in my formu las, I get this result:

![evrika!]

formatting link

where the blue trace is from the thesis and the black one - mine. Even if t here still are differences, they are minor, closer to the truth and probabl y due to one of the other 2 possible optimizations (which are too difficult to achieve with LTspice). Either way, this is the right path.

Reply to
vlad.inf

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.