<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<STYLE style="DISPLAY: none" type=text/css>P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
</STYLE>

<META name=GENERATOR content="MSHTML 8.00.6001.23562"></HEAD>
<BODY dir=ltr>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>Hello Bernie,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>The reference would be:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>Orchard (1950), Wireless Engineer, vol XXVII, number 318, pp 
72-81.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>The "can't do better" aspect has to do with the fact that this 
math achieves the minimum error in the Chebyshev sense, and the maximum error is 
uniform and periodic across the relevant bandwidth.  The theoretical 
explanations are covered in the Orchard paper, and also in this 
paper:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>Darlington (1950), Bell System Technical Journal, vol XXIX, pp 
94-104.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>The Orchard paper has a numerical example (for a 4-stage 
network) and this is what allowed me to figure out how to do the math.  The 
math ultimately is very simple.  If the total number of stages is 2N (I'm 
restricting it to even-numbered stages), then the pole values are given 
as:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>(1/k')^(0.5) * sn(2n*pi/4N,k) / 
cn(2n*pi/4N,k)</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>where n goes from 1 to N.  k' = f1/f2 where f1 and f2 are 
the endpoint frequencies of the desired bandwidth.  sn and cn are 
Jacobi's elliptic sine and cosine.  k (the modulus of the Jacobi functions) 
= (1 - k'^2)^(0.5).  To calculate these Jacobi functions, one uses the 
Landen transformation, which allows the reduction of the k and k' values using a 
recursive formula until k = 0 and k' = 1.  This formula is simply that 
the next value of k in the table = (1 - k')/(1 + k').  One then calculates 
the new value of k' = (1 - k^2)^(0.5) and continues until k = 0 and k' = 1 
(which I have confirmed takes no more than 8 steps regardless of the initial 
value of k').  Once k' = 1, the Jacobi sn function is equivalent to the 
circular sine function.  So, a table of sine values sin(2n*pi/4N) is 
generated.  The corresponding sn values for each value of k up the table 
are then generated from the formula sn = (1 + k)*sin/(1 + k*sin^2) until 
one gets to the top of the table and the original k' value.  This top value 
is the sn required for the pole calculation.  cn = (1 - sn^2)^(0.5), 
and now the poles can be calculated directly.  My code does all 
this.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>Here is a plot of the phase for a 16-stage allpass 
network comparing the Weaver approximation documented in EN-168 with the 
minimum-error algorithm documented in Orchard.  The bandwidth is 
from 1 to 10000 Hz.  I have confirmed that the results of my 
calculations are identical to those from the QuadNet program.  The problem 
with that program is that it won't go lower than 1 Hz or bigger than 4 orders of 
magnitude.  It's also an inconvenient pain to use.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><IMG border=0 hspace=0 
alt="" align=baseline src="cid:448170120@08012021-02FB"></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>As you can see, the maximum error is not constant by the 
Weaver method.  Also, the conformance falls apart at the extremes of the 
bandwidth, whereas the Orchard method actually gives decent conformance well 
above and below the bandwidth.  The Orchard method is exactly what is 
desired, the true Chebyshev minimum error.  Either one would work perfectly 
well in practice, but why go with a known compromise when the exact solution is 
available?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial>Of course, one can get even better performance from the Weaver 
method by expanding the bandwidth a bit beyond the desired limits to push the 
error to zero at those limits, but this is a chore to do, and will also increase 
the error in the centre of the bandwidth.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=448170120-08012021><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left>
<HR tabIndex=-1>
</DIV>
<DIV dir=ltr align=left><FONT size=2 face=Tahoma><B>From:</B> Synth-diy 
[mailto:synth-diy-bounces@synth-diy.org] <B>On Behalf Of </B>Bernard Arthur 
Hutchins, Jr<BR><B>Sent:</B> Thursday, January 07, 2021 7:05 PM<BR><B>To:</B> 
synth-diy@synth-diy.org<BR><B>Subject:</B> [sdiy] 90-degree phase displacement 
network calculations<BR></FONT><BR></DIV>
<DIV></DIV><SPAN 
style="BACKGROUND-COLOR: #ffecb3; COLOR: #000000; FONT-SIZE: 12px"><SPAN 
style="BACKGROUND-COLOR: #ffecb3; COLOR: #000000; FONT-SIZE: 12px"><SPAN 
style="PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.6; BACKGROUND-COLOR: #ffecb3; FONT-STYLE: normal; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: normal; PADDING-TOP: 3px">[<STRONG>CAUTION:</STRONG> 
Non-UBC Email]</SPAN></SPAN></SPAN> 
<DIV style="FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(0,0,0)">
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif" 
class=MsoNormal><SPAN style="FONT-FAMILY: Arial, sans-serif"><O:P><SPAN 
style="BACKGROUND-COLOR: rgb(250,250,250); FONT-SIZE: 18px"> </SPAN><SPAN 
style="FONT-SIZE: 12pt"> </SPAN></O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt"><SPAN 
style="mso-spacerun: yes"> </SPAN>The “design” of 90-Degree 
Phase-Differencing Networks (90-degreePDNs) can involve some deeper theoretical 
discussions as well as practical ”plug and chug” equation summaries.<SPAN 
style="mso-spacerun: yes">  </SPAN>The earliest offerings in EN involved 
references to academic presentations from which practical equations were largely 
just cribbed {D. Weaver, "Design of RC Wide-Band 90-Degree Phase-Difference 
Network," Proc. IRE, Vol. 42, pp 671-676 (1954); W. Albershein & F. Shirley, 
"Computation Methods for Broad-Band 90° Phase-Difference Networks," IEEE Trans. 
Ckt. Theory, CT-16, pg 189 (1969) }.<SPAN style="mso-spacerun: yes">  
</SPAN>See a summary at:<O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt"><A 
href="http://electronotes.netfirms.com/MEHCh6aPart.PDF">http://electronotes.netfirms.com/MEHCh6aPart.PDF</A><O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt">with details at:<SPAN 
style="mso-spacerun: yes">  </SPAN><A 
href="http://electronotes.netfirms.com/AN167-AN170.PDF">http://electronotes.netfirms.com/AN167-AN170.PDF</A><O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt">and a quit important 
contribution to practical implementations at: “Design of Wideband Analog 90° 
Phase Differencing Networks Without a Large Spread of Capacitor Values”; <A 
href="http://electronotes.netfirms.com/EN168-90degreePDN.PDF">http://electronotes.netfirms.com/EN168-90degreePDN.PDF</A><O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt"><O:P></O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt">The offering here from 
David seems to be (like our own!) deficient in theoretical explanations. <SPAN 
style="mso-spacerun: yes">  </SPAN>Is there a link/reference?<SPAN 
style="mso-spacerun: yes">  </SPAN>Perhaps no one cares? <SPAN 
style="mso-spacerun: yes">  </SPAN><SPAN 
style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-spacerun: yes"> </SPAN>But some notion of a “UNIQUE-BEST ” (UB) 
(can’t do better) solution requires theory – in this case it seems to be the 
“alternation theorem” (AT) as applied to the phase 
error.<O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt"><O:P></O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt">The AT allows us to 
RECOGNIZE the UB equi-ripple solution in terms of the finding of a correct <SPAN 
style="mso-spacerun: yes"> </SPAN>SET of “extremal frequencies” as found by 
ITERATING an “exchange algorithm” (Remez or Parks-McClellan). <SPAN 
style="mso-spacerun: yes"> </SPAN>No closed form is possible, but 
convergence is very rapid.<BR><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-spacerun: yes"> </SPAN><O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt">I 
have not attempted this.<O:P> </O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt"><O:P>-Bernie</O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><SPAN 
style="FONT-FAMILY: 'Arial',sans-serif; FONT-SIZE: 12pt"><O:P></O:P></SPAN></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P>
<P 
style="LINE-HEIGHT: 107%; MARGIN: 0in 0in 8pt; FONT-FAMILY: Calibri, sans-serif; FONT-SIZE: 11pt" 
class=MsoNormal><O:P></O:P></P><BR></DIV></BODY></HTML>