From 2078211ae0253d84020d65e0f64861d82f59cdb3 Mon Sep 17 00:00:00 2001 From: Robin Clark Date: Fri, 19 Aug 2011 20:17:50 +0100 Subject: [PATCH 1/2] Have both op-amp configs in the same chapter Use and contrast two valid functional groups for the inverting amplifier r# Please enter the commit message for your changes. Lines starting --- opamp/Makefile | 27 + opamp/dag.tex | 121 ++++ opamp/dc1.dia | Bin 0 -> 2559 bytes opamp/dc1.png | Bin 0 -> 34904 bytes opamp/fg1.dia | Bin 0 -> 1446 bytes opamp/fg1.png | Bin 0 -> 17805 bytes opamp/fg1a.dia | Bin 0 -> 1366 bytes opamp/fg1a.png | Bin 0 -> 14048 bytes opamp/fg1b.dia | Bin 0 -> 1667 bytes opamp/fg1b.png | Bin 0 -> 18361 bytes opamp/fgamp.dia | Bin 0 -> 2423 bytes opamp/fgamp.png | Bin 0 -> 39415 bytes opamp/fgampa.dia | Bin 0 -> 1686 bytes opamp/fgampa.png | Bin 0 -> 20729 bytes opamp/fgampb.dia | Bin 0 -> 2052 bytes opamp/fgampb.png | Bin 0 -> 25526 bytes opamp/noninv.dia | Bin 0 -> 1537 bytes opamp/noninv.png | Bin 0 -> 4385 bytes opamp/noninvampa.dia | Bin 0 -> 3681 bytes opamp/noninvampa.png | Bin 0 -> 59542 bytes opamp/noninvopamp.tex | 1033 ++++++++++++++++++++++++++++ opamp/noninvopamp.tex.16may2011 | 957 ++++++++++++++++++++++++++ opamp/noninvopamp.tex.backup | 1033 ++++++++++++++++++++++++++++ opamp/noninvopamp_paper.tex.backup | 421 ++++++++++++ opamp/op1.dia | Bin 0 -> 1430 bytes opamp/op1.png | Bin 0 -> 15638 bytes opamp/opamp.dia | Bin 0 -> 1018 bytes opamp/opamp.png | Bin 0 -> 2688 bytes opamp/paper.tex | 51 ++ 29 files changed, 3643 insertions(+) create mode 100644 opamp/Makefile create mode 100644 opamp/dag.tex create mode 100644 opamp/dc1.dia create mode 100644 opamp/dc1.png create mode 100644 opamp/fg1.dia create mode 100644 opamp/fg1.png create mode 100644 opamp/fg1a.dia create mode 100644 opamp/fg1a.png create mode 100644 opamp/fg1b.dia create mode 100644 opamp/fg1b.png create mode 100644 opamp/fgamp.dia create mode 100644 opamp/fgamp.png create mode 100644 opamp/fgampa.dia create mode 100644 opamp/fgampa.png create mode 100644 opamp/fgampb.dia create mode 100644 opamp/fgampb.png create mode 100644 opamp/noninv.dia create mode 100644 opamp/noninv.png create mode 100644 opamp/noninvampa.dia create mode 100644 opamp/noninvampa.png create mode 100644 opamp/noninvopamp.tex create mode 100644 opamp/noninvopamp.tex.16may2011 create mode 100644 opamp/noninvopamp.tex.backup create mode 100644 opamp/noninvopamp_paper.tex.backup create mode 100644 opamp/op1.dia create mode 100644 opamp/op1.png create mode 100644 opamp/opamp.dia create mode 100644 opamp/opamp.png create mode 100644 opamp/paper.tex diff --git a/opamp/Makefile b/opamp/Makefile new file mode 100644 index 0000000..0aa12a5 --- /dev/null +++ b/opamp/Makefile @@ -0,0 +1,27 @@ +DIA_IMAGES = dc1.png fg1b.png fgampa.png fgamp.png noninv.png opamp.png fg1a.png fg1.png fgampb.png noninvampa.png op1.png +# +# +# + +%.png : %.dia + dia $< -e $@ + echo source $< target $@ + +#graphics: $(DIA_IMAGES) + +paper: paper.tex noninvopamp_paper.tex $(DIA_IMAGES) + #latex paper.tex + #dvipdf paper pdflatex cannot use eps ffs + pdflatex paper.tex + cp paper.pdf noninvopamp_paper.pdf + okular noninvopamp_paper.pdf + + +# Remove the need for referncing graphics in subdirectories +# +noninvopamp_paper.tex: noninvopamp.tex paper.tex + cat noninvopamp.tex | sed 's/noninvopamp\///' > noninvopamp_paper.tex + +bib: + bibtex paper + diff --git a/opamp/dag.tex b/opamp/dag.tex new file mode 100644 index 0000000..fcfe3ad --- /dev/null +++ b/opamp/dag.tex @@ -0,0 +1,121 @@ +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + % Draw the input layer nodes + %\foreach \name / \y in {1,...,4} + % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4} + % \node[component, pin=left:Input \#\y] (I-\name) at (0,-\y) {}; + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[component] (R1) at (0,-9) {$R_1$}; + \node[component] (R2) at (0,-13) {$R_2$}; + + %\node[component] (C-3) at (0,-5) {$C^0_3$}; + %\node[component] (K-4) at (0,-8) {$K^0_4$}; + %\node[component] (C-5) at (0,-10) {$C^0_5$}; + %\node[component] (C-6) at (0,-12) {$C^0_6$}; + %\node[component] (K-7) at (0,-15) {$K^0_7$}; + + % Draw the hidden layer nodes + %\foreach \name / \y in {1,...,5} + % \path[yshift=0.5cm] + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \node[failure] (R1SHORT) at (\layersep,-9) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-11) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-13) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-15) {$R2_{OPEN}$}; + + + + % Draw the output layer node + +% % Connect every node in the input layer with every node in the +% % hidden layer. +% %\foreach \source in {1,...,4} +% % \foreach \dest in {1,...,5} + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); +\path (OPAMP) edge (OPAMPLS); + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-11) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-13) {$PD_{LOW}$}; + + + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + + + \node[symptom] (AMPHIGH) at (\layersep*4,-6) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-8) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-10) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + + \path (OPAMPLS) edge (AMPLP); +% %\node[symptom,pin={[pin edge={->}]right:Output}, right of=C-1a] (O) {}; +% \node[symptom, right of=C-1a] (s1) {s1}; +% \node[symptom, right of=C-2a] (s2) {s2}; +% +% +% +% \path (C-2b) edge (s1); +% \path (C-1a) edge (s1); +% +% \path (C-2a) edge (s2); +% \path (C-1b) edge (s2); +% +% %\node[component, right of=s1] (DC) {$C^1_1$}; +% +% %\path (s1) edge (DC); +% %\path (s2) edge (DC); +% +% +% +% % Connect every node in the hidden layer with the output layer +% %\foreach \source in {1,...,5} +% % \path (H-\source) edge (O); +% +% % Annotate the layers +% \node[annot,above of=C-1a, node distance=1cm] (hl) {Failure modes}; +% \node[annot,left of=hl] {Base Components}; +% \node[annot,right of=hl](s) {Symptoms}; + %\node[annot,right of=s](dcl) {Derived Component}; + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag0} + \end{figure} diff --git a/opamp/dc1.dia b/opamp/dc1.dia new file mode 100644 index 0000000000000000000000000000000000000000..ac098b33ce4778e713d2b27fac5380313e151e85 GIT binary patch literal 2559 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 literal 0 HcmV?d00001 diff --git a/opamp/fg1.dia b/opamp/fg1.dia new file mode 100644 index 0000000000000000000000000000000000000000..85aabade523a2b351932f5f5452eac76e4953486 GIT binary patch literal 1446 zcmV;X1zGwZiwFP!000021MOQ~Z{j!J`6wU3Y>^VFR0MO6?VNM&wMjmGex66hilteY#6uGT%QRR#NrEt* z4$Xfa{`^49&v!SUf{=a`f76uC4e^aQlkbM+jPu3Ee*fv|2}J9R@+1XOxC9yN|3{;U z_C=$WWOV>~x%LLL))3w}#bX6ptb2$)5f{(kMG*0Qu=xwH>S6 zX&MG^3wNhQLzJg5;Iq-Qrs>L~uQf$qg;_X`SY7YKn4c~D`aI#wS4X+`=IbrlkVk7w z4*_8gbB<3B(`6X2Y!A(L+cZR)70vqlX1(0*(22=Um6ElBi0GQ7Mffk9G;I_YxNw}U zSxCnJvI#GS_mk5&plM)yFuo+u=BDZpHAff>&3kKidddS5!G!Zw=4X+-lE?z2C;rMq zt{O&D`0=VIcXM*bd_xo^-3 z4_8Mh;cFCy3z6ljYJhFkAc~Hj3p|Z#KvE4ZaGik%>>kvrgjS~9~oMkP1^ zIj4mmCuzXaeS@(8e32OTEePFHFU~PiE7fZUY3*crptkZLz=ncRNN2hr0J##w9zX<8 z4?^G&og!&DrbA?617hd;Adck|0^Lp~?^q^wTbYQQ4Ra1_)QJR<#D!!4U71v*Qf!?{ zX*;aLq~h#I1>;UC?^r6hwNyMn9Nj5Jg5)VhlOiHq+vM^(q5SVcd0@|c zOC_*SiPKgk;#x~O=}adI!T}x{xWa4gry+7V4|}$tN^P1hsM@pNX;<3b{{ct$ ze}Dbnu*d(###qxXYZCK1JbB)Dr1LOZi*C_4GmVU|Sg9_R zb+PG+eGxNq+b;sK`jK7c)>`8Vx0<2htwRhX&MB-XR< ztRmpXJS_$UbH@Zov1h#0v2AA zRTTE}i7^xIRPd80sw^}%pAJn@y<@o)^h_Rz&agg)%8Rh(1+qecSU8|~aw$ST3o*0P~8*n zNs<#fVsW5`a_j)>e!wH@Q4n}y9uO>>EXuv8do)US?uD0P9zMfr+Rh)p(VBZje1fpL zw&K4`ztHtuwa_J=tC@VYV{EYh7EABTvkx{H-|_U@c~ocT!L_@a-?jr1$lN{v0Qtkj AhX4Qo literal 0 HcmV?d00001 diff --git a/opamp/fg1.png b/opamp/fg1.png new file mode 100644 index 0000000000000000000000000000000000000000..26347e4aa72213b060d0e56211b8d78d4d67af14 GIT binary patch literal 17805 zcmeIac{G=6_&)lIB2$uN3=zthj1@8z5gH7cDV13W$(TZtDIqee%#;k7l?GEOW5!hG zu}GPn>$AV>{MK3L{Cn0qYyH;w?6vK-Uhn(7&vQTbecjh}JwncCtI<)jQ4<6~cS>FL z96^xf;on@UE%?r^LP-_;XWKnd|> zf%*sTSnkwx?t7_kWBuhrtfw!evuH^kDph^QvRl(WYYGNj zSEbnba380;$KZ~!E9PQ?Z)T?xdy>Zfja1JC$&d9o|E<0HsU?x@I2F$w2IU`bBRA`d zga?i=DBrzGTTl4kac8CCQQZ~9t*qW5PO(!tJ&5Nn1EUnJ(w)dGOR9Z$ROwV0c=&8t z0;qV-)-$M5g|Pkqm;P@v10ie+g`%bvElEfJeXkE5UTlsN+p+i9*Eet8ba#6!PIm6! zzn`uwIwofEH6>TEeNWNl=2%{}@Rp{goc2J~eZPPI?s?^W$=TUCsUYTIA%61F<(?yM zE`Q^vzFYA=jEi#`tnz$&cV}s7X?S>ehFV1U{rmQ*OMA?{XS%#zl&nx0m}>#iAgQ0`Q+wDJg@QhM6T@7qnnG}=3+H2(_atm*%Nof z^m!P)QtV|h^P1_A5xw*0+kbJn21JL6+jZrosRSo0_*7I?t?A9w{&{!Ov3jM%k}5sU zYleQ{k)NYOf12LHkFr#~Tz#Dsh5Q9dkJ)~kfeN>iCr^@xv9Po6VPdLU(oj;m_2R{g zBAR){^o)#PTGk@Rfr=H=+9fI7jR>)trHhRZ_Pd#NP-sgl8yXr~TU)m#%VQP$2L{R< z`t*&AjB3|cQvQ_~&*_zf9HNNnbf4{CUT9TpMZ|5Uu(f}>O}XP_IERfB>7#h@?On

rWaAQr_xvNlyI}Yfq}=|p!~jl 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 Y>8}%ef8g8uJL}!e|B=;R8uCH_0QeDy;{X5v literal 0 HcmV?d00001 diff --git a/opamp/fg1a.png b/opamp/fg1a.png new file mode 100644 index 0000000000000000000000000000000000000000..9681edf1c4e09115bccee309fcf8b689b9d7c3b7 GIT binary patch literal 14048 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 literal 0 HcmV?d00001 diff --git a/opamp/fg1b.dia b/opamp/fg1b.dia new file mode 100644 index 0000000000000000000000000000000000000000..aebd789b17ba6df0c64e876b85afe6b334383129 GIT binary patch literal 1667 zcmV-}27LJ+iwFP!000021MOU0bJ{o*eb2A((6=2btS?(GO*-vvclxl?cG~PSBd`MA z8k?~VgqQyIm24+~F$vhniD&E?l8Gbk)s@dV_ew~-|8PI|jg^REFAT1G5STqf1e4J9 zg6Vbd-`l_6vfhWAtM{(Q-^tfB;&Vg3BZ$>s*S%SiEZz+U>-8G=o0unI1blA^Vlnv5 zeV-3xqe1WH$}n~fxIE$NUVfJ+N#u=}i7)~_7uUTppZuCe;WBW0S*yI=B=p0`SaJWl z_vS9WdV}1|V9(AIwikRV#*yH^j+-{+E(FIwJjlEz(Na|R6HmA=A@)>QHKMrlk|cbl|99MvPYEEq z{m8a+nLCX<_i5tpwK!sB?YYTpbgyZ+GV2>n)>mHajeSwpdoM^XW`1)S^Tnr=s`vKo zHPMh+JDMI`Ca9q2r-$j%b4C0N%=X(Hu{6t@4W1kIV!KlZCc9Ng)~O4hZ$y-v|Flih zM*e_v#n~B!aQvT`Bzbs06CSuca*emfr|`bFtvY1Q;knnnZ|45+6a$jRr1Bk%&mw#T zkqKB|zKS6q3dS+><8je?B>T^UsV^Qp*tD;H3=sm5_8|eNnmgf(`DhYG!C^^osfbb+ zsd5}f^_ZC;z~=4+YxtT8Z#qkkJA)WtdI4wgEL@LD>cr=hU^!t2TdZygkb=Dw`d`J` z$o_^Eu>aZjy@kwchxmte@h{7az6ETJ_(ux=7O?2h2DlHkV!u{2r(mA|LY&@CDpY7Ev8ysYP+fX3fT2Vb(wQI_K$h}>hY$hO zhY(PvlO#1`I)x?}Fr4v&QPW`zS{+SZF->q?n#e2-GYo6wiE^TV3)v7_Dyb-@V4X~< z8`f!5p?g#zq@&6!rV6P|6&oMkuKk_IidEXB zA}_XG!HtNKReusl6b_))IUrGDMA1;D>MWDCMT>rZ`S#SXbO^#uj9Ms0_64Te z3I`_DJJVKbL~J$DCM>OuAZvvlp{_P+M2<>e*y&LV^@v?+JwvY`rA|^sLQqc4+oVTb zebkH~mEf>bq!ucYQ&*8FFr`8`03)4}lzCymMz(1U<$R5rg!G{aki*F97pB`k(bXTF zD(P0GQY?0|)Tk^y4pb0G3QMht4>AK632BYOsy8n-&*0N=-GQg(QcTw;|^!OGIS#wT4+I)oIMRDHx@Rn#<<9!4T? z(+JLttE5ql$aypw6}eRMl_C2)IxEy=v=SrNi{(&G#1rRRtC{z`KwN&0`GvA|?cLuH zN{FS07Ifk|b7BGq4Iu`$nVl%ITCwl)pK$&CuP$wCPunFx)Rwl3a?_>l3Yv5z(^~a6 z6=0gGg^9IpDnN`;m2MpitIgmDP^b`y0fE}HZfT4qq(G{cO~06-OTI6be2)OV{{CX5 zj)$wKtMj~rI_XZ3BY{qsg!~XXfLV6t*S4YV^0F+(($y-KR=zEVxh!$099)Q@Wjcsq zQZ=GiU3J#q$!euv&x18@WzD>xbay?=6c@K-H|rN!q;+Ly17&9!61%$d^(+_dec##5 N)&IR0)HM@T0001-B<%nI literal 0 HcmV?d00001 diff --git a/opamp/fg1b.png b/opamp/fg1b.png new file mode 100644 index 0000000000000000000000000000000000000000..bf053affd6348a3e41eaa6673360e40bf02a1f40 GIT binary patch literal 18361 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 P;z20Ls7im5G!6P+0o?99j$> zOybQ;e|sgt#=$^hTgV$yJd+C!(Z>j(EIP$_|o-U$f zc{%#)&mX=Jqp#mze6@&zFV)vF3s#=`k7T2dE=RX{zW#DD*>1NWe%J(gnt?dF1DkO2 zZxF}9M4dDly}$6hrwuHEJkalz?*@6EMYFp+^pao|UXEtL{GVl(-X)7saaMWWJdM-L zyAR^a(YqV-8coV(CY5%cX?q*tN z91k};FI;?Hxa_=e(dK%cW_cDwc^z_=rg0b~1!|t%g{R|e=0U6|_MBN3R@_8+p1yGX zH$l8P#DL=MM{hgUbC+4Pc;0aFT2-@2vTU zZkpe}J4U^C|8B{KqP5oHVIe{mvg3z`}5N2ib-|mKKue`yf;ymevboO^R&r9?E$b)1NWDD;L@7wg_Xcu*;m?K(Tj(&sH z?%6j;HKvrW)<5g?kwh2}$i@gTvTt==GujYlvweU}nGht)IQ#^HnFgU^iV5Ij#DP2w zE{wy~^*qgzdQ{M%Q3l26N8PZ;@d*J!sWdOlsHE5e>o$y*w|P4l@&Q3|2S!fpzFC?r z!t5o}AV9EqAu1t4K0491&2759ZU|0a9(kKpVzP6P13c#YIF8n8G^~3Kvh^B8Vnr|t ze3xEBfX_4t6H^YDCNuG!>xU=_s= z>Ux4?Gx9e1gO1RZ6c+#bQyAZec{C56CKAVALCrZET}Hs_i`s!!8F)AgPr<6@gU?JF zLTCpR#L+TYh0QlKOzu`?XC8>snC%_s68Gkk_MKvPDF+5t^E646^D3Fy)cotyU%Xo- zOeH__)Z~KR?yqW;s;9Agjdmk{bdbM6{s#FQyHhgwuZV60;}g0Vi3q&IT3 zNVmx#NUjB`&ci{EdZVx+o%%b~n z;az;EF%mUc4}qNPK(2w3Lmbz`IL^9W3nSoaQO#7=`b zYs(Ia=X@Y4lc`)fjOVcO*QYAMQ6B@mmSGm#KP8L+J&Q_I@a2}wk2sJjHZw&5eZWsf zJ?D7)+toL}Tn*!^>+!XPi^CZEn#b6d)Dv45{V0uqn7JQjkq@Mx*yMNWr`9GYp)kPe zr{nyy#mdGFq(u@c`j>=C$4O{&oQJIoGa!&fG~_$vp8`P!1Wh?W3Qs6hmoc8LRfmOm zh_wwK4njP?0)~4T;ti{cL`jKUD%w)g{*0)|YH09X|Hif~-~VQJey=CkH2)P4!Y zu#5vH+-}`0VIX8vs>WPwjyUc^y7D_3auxS`H=B4kq$<7H_pYMD&+x4*KN?6JYhX)GV_itY03H*)JmOIQ z6uFrJF%KUf6J1l|GMBNm>99nmTE#A0CNc={3YbsdQX<3cYvrLHPxZqXnA3WB1EX&S z(_4Rp8N~^}y;yj;`rzH%B}RaP_~J)JfMMhH87ka>Qwgdlio zeq%i;pC5$CwGh?0H;7Pga*O@S)6R2?wuNWe(G;`eWj_L>&zNswF#>(1ebkqfnzalp zspDnmMjIPH56L7xeOqzfpWH)dA|L7E$x9M*b89GeTKp^l6R1cA2tjS^acO zz*ak(o=WDMtE8WUg&pw%*~ejik;gH&AGgM&wpBw4goS~FKG9Pd z1PMOI5(r87>G-YeJlNg_af4u zaDcd!xFiiONh1utw7E4$k*3w=R^nK?)T<&6?MP{)=|tT#XCV%xoFIdTF`25H2oWvr zp-;~xHf<(1os5j$_-}?btP9#GcS1tnHx4ATxo-#3M&l8K2F+wU78IFb07`Tg(mZ2u pv)B-9hEUEpe{IAm-gyjlDi3=r4%F8&3s&zh{sU=ucYV2s001#7mK^{9 literal 0 HcmV?d00001 diff --git a/opamp/fgamp.png b/opamp/fgamp.png new file mode 100644 index 0000000000000000000000000000000000000000..7e51388cc840f36fc172ca141a9ec3f9600eae2c GIT binary patch literal 39415 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 gjSXtO^hA@=xZFu&C4*1_hawcDEi0ui=NasU7T literal 0 HcmV?d00001 diff --git a/opamp/fgampa.dia b/opamp/fgampa.dia new file mode 100644 index 0000000000000000000000000000000000000000..b9d80389fc333f26d92888ba7c06db455797aab6 GIT binary patch literal 1686 zcmV;H25I>piwFP!000021MOU0Z`(E$eb28D+_%A{Ns1K3x=FEi8~QM81C~7pw9VLB zWyz4_IDYAGA4w^7Y}xULOt;D?parDR_lVRzhxd|KdjH{Z8hZ~i%cC^8?jQg=o=k@6 zC`!iHoqukBdmDB>++4jMMdF?MH_pV=Q@==ZeRkcM6vgaaueVq%K)lRFk!B!{<{+27 zuOf~`Pc`awZmvAy%XCQ`O##uT~MxC-%)oz%^Y34nM z_`37v-W;7?Wu~`g=LOp{F_wc&iZ8oOLv?U|is_lmHqB0FX&$L2#d20_vcr!4|5=-= zRjwK(lQ-opRToyaw%zDXkYXybag@|?)Y!!3KwuDJjMZRJ9&*SCLr-IJJlx>2 zaPei~vdh9n`Q0qdicCaB9deMSu@p&(T4Zy1I!-()%B=bFPw%%rkrAgJSw{O%p+Z{SE<)w|u+Cao&DYMG_ z$JI3LRS&pQoM)qu4*r$HqUzq?g-Avs8+mWNkLhD)6?LeXBN|U%O zj|$G%DT8A4qu#M^^AiF-A>1685>9Xftci@qlVUd*3V@IJ3d}!o_y%bW1a7#gCF z^h9H564<0k!!G?0ED3{Wev4n>d}4tmxAL)gMiEp|#BWLw<+hwL+T|eN7Fn`_L8!kv z3Gu0}R_O8AlWAFeITm`3qZ-H%A}j+Ylp z9ib~JEPwi0#t*WHhT?f5ar_rrkNgoQe@_0K{5ko1XN1}}t&o;kX_uC)c`f@>FCyWrXd z*KH53%X70EzIAW>54rHlb9BPy_zv|9o2sXpi1lm?ZEju|3}4Or7zX_S5X`vV&A{0A z*^jTCu_%U<`OHbEZ3*4ticUW-s-NeH=y+32;(GVd2cbntsvt1blBDKtpFpC{Ictw3 zjnYNpM9H=&)qT-vQVTT+H7+AWmxz?mTBw95U?Jn}36+vGb#apYRMQ1YuSAp@S81XU zFdep7)ua-`H9kvU`*9yhCZ*fnI0Jeq|@{7IdaE|I! ziuBX)?M|c^5aVP%p}IUlV={mn6SnR(C@esI@VBJV#L;qedR=*5s8SzSbl}l@?*HCnVSk zP5P`T>_q7T>Ejk(bh6Y&S!!JTNCECLU^5ce2m#>msUAT`Ng*Jt6)Re|pU~A$PLOO1 zQq2pU8nsc4So2~8O1sSN+ua63zpr3+{UBf}Z_|Q=TOvr<3DPAh5o(U;B&m&(6rQIP z;p7$SBPtOBKw(vhKub-6Z3&Wmr%9J8MOgDhr%7$pBz}%c1QWwpu0+rnRn;a3Tx$|j z;ZiHAqi#PDr%9J7MA+~|r%5f;Bn+E>m@Cj9%OW7K`)RHU1yZx=7E-7;-Ke_Uh6V21 zPt>WBeO21(i%yqX^Lik{-{;#y7@Z+oB%yIV#x2*bS2&0>v(v{AG(yONuoXfWI3c`9 g%DBxPofNi53jMRbD!uk)@tdpv0QAfmsC{Gr06lIi(*OVf literal 0 HcmV?d00001 diff --git a/opamp/fgampa.png b/opamp/fgampa.png new file mode 100644 index 0000000000000000000000000000000000000000..2a79a4590f152ca152821d658a32603f0414cb59 GIT binary patch literal 20729 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 CEa`Lr literal 0 HcmV?d00001 diff --git a/opamp/fgampb.dia b/opamp/fgampb.dia new file mode 100644 index 0000000000000000000000000000000000000000..dae11582c0d3d9dcfeb3a530a265de0ff423a22e GIT binary patch literal 2052 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

@cCMJ)*M(bmrH`I3#3dC$AM0s;c? zK=rTIq616;lnc)`=yR&TvvdIH?&KfC@RQI8zBHF${svf!hUY!DgYUu>dzLDl;=PH+LD} zs>58}z0j7!!^7N1G2hL3tBq8h*52TYBU+qkabI`0A<{%Wi6jAK$_*(|=@{uWD-$@u zdf>V2%o}8@h0eU2O8)SH&n9mHv1R~k8kd-O3^o2~iT-nf*CQjfudI}m`gV7BS60kr zR^lmkD9}3E;DtCjJHz@KCtKQ7>X$;dL?uPWZiPA>AyPyxO(}J(wKbIehHiwh8xX+U zoES56_dDuzxE1Ii(}Z8iGsTsaf4FyRA_*#Nffg$)UqGn*E(G+m68*BWvh}gTIFDkA zC`ed(&z~DKc<_je&pW=nczMk!N{03es7DqS7U;Mvk1BCxKVc$2#k!3s`DJ2x`80- z?tU8zv4%sEr^PxwnnB&#u&YB60Js#fdw579i{z^9I6nz|kE^>odMV`af`S6!SF7xX z4MIClq0hbsLJCD)GAb#F-0EQRnW-HY5Q}P0dXp2o=>6aD04x zR-8|3U#&qGb{N;vXodiG05MeKWLD;a?02#E$lw1OLLb_XGTZ5LyPwri1+vcOLPJAk z-r|)R;GzU^)SEW)J&@%O>^Eb5EdNey3ilt%k4y>t08%>+9>^)c6G(`OT>`o5r9Wt9 zf+JvTJ5`$Pp_?x1Sq@kewNb=#e+2-G&hzJ(KksjudY$ZRw%UioZoU2V!JVx}fr{m>_d=062UCZ(F{e|;$k zUAq7ERiNPaNaOYWo4Zn#g%~CyBcp#{;=|6tp;u*{r%{;9mM){aV|unJ5U3K|+#4w}n_GOdIk zP8LM1bX7?#>=iWQFNU(DApa>TDn4}Gh=0h#=a9m3oFDMF+^x;laQ^mMzIFInPxZXOFV5gxU zsQ~_l)+siLVh}oeBzC=OWu3B+mJQ7C^3*4VTJuf5dYnl~3aV;MadQoxz?*dgz{bbK zrxiu0)w|hcKOGGRSUH#}(cCi%d1Z?It;&6pa5!Xha7JL4ANn43g$2JH{Rj0KIAyh# z!>fieZV{3CHdV`UGFI)P`&ygUf9x_#AXwxQW$C5nBpbGqXi4vN$j2`_nwtZo^XbC} zy56l4a$6_MXr_d4F?dt=RM*l_aq+rq}TVyw-i62UqrQxmyk z1Ex60gPyScN{Q@*pViY%O_nI7G_zbNTY(q3RR9b#Mcci%M-fNr_#YdGu~R6`X++$L z;E+MO9p&Q9TZpnx)6t3bWzKmNLklO$74{Ih`in1nq!?W%9+?vACi!OWCKc-oXL> z7NOWRvhHqjY3j?*BFhta@md>WOS&-97#TOV8Ipi^75)vdA6rRA=BW^@U@$c^lXk=UJ`;zQ4uSE*W!EVU44dN@-70h39gAp z26uDb+o2p$??dH~+4atavjIqc8YHvwiVDb#?mXcPFT#59-pcU=c3r32#9c9wY}JqL zyiQC=kduW3nZwlaIMh#u_R828LKc~zbhQT(FDVx4PuhHdXsfHM(6Ev!)|A|YNGb_E zm6Vx1g|<0XasY)Xiqi4d+h=&5ipSkKmv3IDV6N6+%FV0QQ2aKje0$V~(x;d}psMzP zggcv?u}QDo|L?DiET&3-ZVYi(Zb&OdMMXf)BTapCFoMHU>iO$ot2h$zMIzj4(YLNc z6zs=H#56LZQql5?)r4byLhLn!v%uK{BiKJMfCT6P(ySjaH`17sq;Z!wzt+EFai`Jg zJ|im5*8`M;CT^6~ADiFeLKw?T%&&3b{cr?1EF^hHtk z=*>T2dXq%HI@lS4i*P(h({)*7?O0!3Mia6uQyBFO?pF zOdm*DFwo>hqfUdkulloKdwIl(M^i}0uUda?Y=lo@vjv;9qoJUhEK0NMhu%{vbz(rA zoWHT7roJ7ux7^BWC?h?Tr}Wyn=@bnK2?MvY`FiO)DZ5dIw@(|&$@%iOf$c(cqc^t5 zNu5zq3{&uZ`62TPdel})hMulr`4h+aRLa@9aUs4pOiP$}wEP&oy-d9DsBffB!o5Y@ zO=tK|PFlLrp%+e+THL{}w%h88DlKnIwG}Dg^#?cW zH(r*zGA#}Eb9>v{^2wCum#li#MJmrQ{n{_aE7uE1+4^_p-eC5JTT9T8&0~ZFxAw99 ztNJFW!}<4oXStseF;zq8e-$QijS^5{wRd%1YgJww%VRe530FP}IY93lx66Gh{s8@G zss~wvy>q2Vf(}cK|Ay*ZOWdCiwT@V#Oh3#9{K^xggtwX0*x2X?bV<{;M1|$z>8rzS zT;E9%n;5@50+i_BzteACjuKFYo&URM#EorWYSOkqEiNwPE%5JXeRTH-6(J%rRuopO zXJQw%J(sOzI>|Zq8CCD+EMJ&p(5|C$I@Y5{h-6VpTx!!D!;ksP6C4Frb=3SVGgYAx z?KMtnN%O-VrIi4Xsf|A*$BXJTA98xqOU3RLYA)`?Bvar}1fK5Eqw()DeD{h%6(Cj*b<4jMe2yqcTsZRM08bev0Gq;10o) zi=vt;yR{MZoS)XGu{8kGD=;U1glK$veWAJe>(?ECLI`s!tFJm`^z7_g(47+Hazs)5 z8CR;9i;Tb)unWw*^GWq>68S?nlET}U83b)UOwXU6?8=CGp>T0sT-8hEpvaw5f0BBG zh5$(QSoWdB@&mjJ4t8!2ZZ!Ns{|3)j1r@vo2C;%Nnza{ zuF*nAS50f_PYH|w2^@s}BK6#ml2e(Gt~Qm-u8uH7sX6Anx2o#hoNP_@$T`}6^LR$( zX^d6r!1r-+X3+G<^@5NToRCJ|IzABs02NVMQPJ1iJFJI6%>jT?O|sMF*DtB}eUG!V zb{$Pn9j41sB_$;TO31sqyDLYN9XoAaV#U{ z;|0b5t<>k#xscQoJ8}JPIP?9aK2YZ*Wpl)b6v9ck1yo)_^Kv&Yd-_1FJioD7g6T=1 zMwqHZ@b-BxY2du7_obN$D=8X|q!!7%|DEge%#y!UNCsvmw#}ovyN0IwAKSmYc^I5!ob~a#R4aR0sx;qsYm8=*4=FQE{l5vb1DEM7_G&R)2K2 zzHxMFt#jq>y^Za1sjORN{ol^$0YecBFBRY}kpHTyt3k_ur%R3-YJ<`lzQc5HalyaL zhCI?RHt;C)NX21FbqOkY+nZ|_?|&>nCS{qhm)+HIrQdCn@1N`08&!6CGP>$(?UKBr_ zX<&JIxLG1zQ8`7U!y5f@SZHX=CW<7--q8^%0T~%nqKf?6qhLS}gnbxiCnpe?Kw7Bu zEWNO%6+;FlGbl;_KJ?*$#xiSbg)2JM8lVN;rH?3wn?NNpu~k{5)@uUWVKT=p|P*YC9hNmZ=l8Z zcpw8k-Q13!AD!7D#r9x;h!u#iSLPM%Xlz z@mA*X!wwJ|+P*Cyx7_j1lE=MF<-$Tj!KT?RlGxtiTq`@IkR$l(T@Aux`UI;MXN@l{9K%;~x@x>Rh zTaSk$Mg$+Zg9QT7(9nQ099WFJe{{sL_3`B>M%GN#`Z$}+3@;x0AE(`4QU+WNpmN<< zAGWq^c}V!EQc_Z24VGRZJ@Pia=mrEzQk=LwYD8 zLd`iaGgAj{AX)QDv1RP`SsK0SmO;EP&&+-bh@k)va!Yc@9XtGw^l(|}t2J(S&i;M^ z8l3jFa`~2bIyyj8KsaZq8AMvs(Uqd6IP#j7Yx?(5pv5Sxd+6gu&I9~4)4ie*P+ltS}ygY#Z zz2@aNa^pQdadE?JHNeTtjEorfM(MOzH)awL`~R2?CU&9Er@0Y0aGsg82BJam*%X9k1L>wWPo2cLy-E*`v(kMHn%0LoXQF8M&i(@Vn! zOP!E0kULQ03N&K%Rd^{W)!HPV={Qc#%^B#F*>bvqNun)$Jd;_qr#B3tTcvm&(R8-K zhKOT&!rO3(Y-Z9O4ZlW4=CYTwSWJN=Wolwea|yOVto$VP=e5rF0)VPeC{}nKN=s}G zO(Qnq3l}|3VWC=~v6)$aRgSWMt5uEo)rlDb>^L{?qnO}q!>gJG=EBNadJz$C5ZyfH z$ZrkPU@JZ8EKr9+Y7vg9{e2{quB?=hK^_4@ghbG2UqO*!BUKA9#6Vh$bW~J9YjMMX zS5|_gKrFvhVTGc0y5FWS8VJS^Y;5dTuMR+Ez+@A?d$+Z#OP(`H!edubrx$Jb8yC{b zvW%id>{@xZ4D=?!)*u4(BETtlzB&}of}(b?%4n-5r#y9xubHp%Kvn?++v4J47JO#x z*Tv<6dy5URA?>mqZ8_KH3)ew}?rSRc?}N&~v4t`OdL&N}J_R?T1rlBdK?yS^rdAaz z62HG+?3&xg7-kEYMuM$H{n@v^lWN>o$j)MW7Gy1LixL^kBWMj;Zs2`OjCJT1_lO5 zv4UTILjTN@K?q`OiAEk)05P))2Hke^HAYq<2P#1xDyUURYQ?$_Vk6^cdO%=!gmZev z_ksXv<*z{x${3Vw{48*ewpI7%7(=$Md_jn$Rl$^(hxs$8pwxm7Ha<{cb2J|xCDomm z%E<5ZUVy5^rIxi^c#DVpyHLyiWF#;G8X=xr{UDOe$UqJq34}}DX#qyK!)D3<`rK&S zVg93n;`iGmTsmqk=Z~YKqY+>O4Yo_^Z2SD(T)4U#<(-gtjRJI!^**QN{}CvBK{%yD z?qm`WNR+E{n60^6#VKd3#ZYk78Wa>n!OF(ZFKEjpZdx0_kwC+q8!qpU2dMefP#mhjm|5^pi?D zRu)to5X<=G9|X$sgISW}3cUOa*ou5Cx)9~KUG$k7_u^HRham4k4kCP3a z#mtt0;?5lhD=YMtA=R}LC*%TO@7IT{1c{%uKPjgGK^s0d0fZws0+B9YHBGyvCrNqo*o3<0$*;1~NuT3sD+CZS_iD^dOgvjf*R#zX+)IU~KG_4Q0 zf-ugh6f#3YT6f({J-VfMa!?Ut!1pCC{JI_f^&l(RQ92-caRRR&TXIY=rKvnq(rv0d9br{v1g3|34s%*FP0t~J6!ov69J6Ujcyi!0s%Kg#0G`uvOAfa zlR%O~7vuA!o~ZxTY;P}S3mDisYfN58%G2o0$our?yvRruAuQrQkrxpvmHBE-fr){d+AEzJq)Shb zfNS_vW+c2Rk5INDzr|r&lZW%e!;}~{epb5=6j+80xBUWBz{VJ%?pOU|fERJS zaLZqfnmILygInG^1IgaGUxAbT2p?JC7C34^wjecZQj{y!BbJo7$P(`|GdWEbe#LYn zBVuYS>Jxy?M<;r6w)R!tgq$EFU*O?G_ZuDTY?j}YOwHqXi}L)T)j;aK5Fb0^Dj6z4 z`?QP<&ICNFFf3f(dvS!0jPoCHmc0YB*AeMZKhfV*I! z#Q|U@4!!EM4x;2QPZ?Ts6W7tC0zMK%^AVc14iin6<@3vcz zQ)Ez(1$ohS|1LMT+BdeRtQz+*vWnPEo|;nj0bv;DQ&#uzkU?V{P0V<(Uhnt!=_enE zBm;luwn!ouywr?3s)xwB1Kw+p8xel~BL1U2AoNfK6c^j=VWED8R)J_3922k;U}o?n zni!5n5b-mWJ1xt9>IbG4mE?`zaxO&MOKCVB_Nijt)U`xbb^kK}nsJG4gwisI9lr zbbZP;C7-&}Y}5nqc+4qrv3m;vW`c{^5kLkkBv=UOGz4!PR74PMP$v8IGr*y0?T!0E z1_zs1_BB{SD=u5WuT2*!nXRCzYV}3?KSrTOufsoteGYekTK$mQ+gpojiBgzHMXgj_ z%^0Wd;jzfPuQOF&O87>ZNw3B+dzk7Hs9{(<@iKPecCARTj+hH;gS*E>cc#j)5hLsG zPh5vf@QN2T40PY|x5c`W69=vt?gTFjv@n3J^7faoruO#s2$0{?{MT}e^)Tts(RoFm zt$uL8$l9K(5>D!Fo3}XLn(oKDIviCsU1$g2(@f<{UT}`YfnKUQRvj4t)*^aEc#8AW znW?E4PxV~J?jygL=Dqb3WQTmvy#rLmPdoTWxkB&L)8~LW6)`(E7e$Fz4}Kl+sUV=w zVz!>0tMqn9R#-kxo*^cV+e9<0$@)!tv$&9u6Z?K6K&Js)HJb(-4-XGm%MhUZfpI|2 zx-&WX9U&uqo`x`($H;!^l$$>$w7TBCg=8+No2Zy~208?|kPt8sF@fUS(g0qya++AM zOi6g|cVKX22)_y$m^(i`CDl>lVGY+A)|44ZW`05+;G$2^W@fVE47O?kCCx&Odpua0 zU`uGWweto>Lhf^>rH^tS2Ja`;%t2FJ$S^RNAoqHWLr)$NMU`j72Au%=M<_f{r?c}* zy6!!ESa(CDfENc^JR|j=y5;6!d3pB&0Q-`}mWtVEZ*Sbby!Zon@_YD-bDi6hNhMGA zErSdgz92HN;C&9bH8&>*h437}94uxKWjO3xM7fRvz4GvX&rmY{(&{P*oje1~w}m7T zuG>X#FTfUCimRHIo}Ndgy50@$77@3t9yA7ttCL&`zW1>I8-L$)M^Ps|HD|K4WE%gf zidZM7O%;kooUIW1mi#W`egXv24={NKKLJ}NJgdC|#yw6>d)R+=b8{OT5f~sa{l@gs zQF#o5NL@>dgsmJwM@J_q<60exfm~p3klq1Od%E3K?YXKsUq)7sFu$ zgYlT_on(NTxD?z0xESWV(*a1g7>%Up&_3Cqgeeqip`oEAvS^|OK&tq!GxBitZzccx z-ky>7m3p&oi*3PoWkR@rF8=z(?SFM)dMODDL!qP>+xHt}7e3L5U0@SzC0Gz(Kdu9& z$9~fPf(L2r+gJN%zL!;Z?X#$8vDrf5{ax2bg2fmSS}+O(SPpcpT5#6Xj|Kqi1oV!6 zgNGAr+_YNQobk&FiT@JeD~ zSr6x+*3W`6yZN7zq+-jR-#`E z+W6*yhsQ=Hj*WUMl)yh!nz_JQoq(5}E z2FeAjSunvu`JvNnu^FC76#9jY5{!N@OL`w~6hFLO}H_^q`jcp`@vCxSpNv}8y;kWN3Se7Uj)(jY(&zEZJjl_NFuLp2ekvF+Fko$LV*DOUy*#-USb8`|E&@^qWIWfcDfQcYyzy_)hpX7WCw9)& zdsulKk=aZbpEx%BqvbRt`LzBG6BjofjERfwZ&QlDYUG6jq>YJ*0ZTfJu-KG2@OYn}pWg_g^YinjFM4t9zmr_-V>dJsQemYiw`2PG3Ay1kUj#mmi!7mu33i&#Nv4)UfE?mWb$t~PefvN6 z6i+f%9Fa_6I~^$QyWi}+N3UBQ^yXGh4&BJRwDw^tOB7VBaHTfy9i)~#C5_G2-Zzb6 zmi>r;-niJr#OpayHiYpXHG3rCPqzdEX|gHBX*l$j_RQGzPbT()P>PK3YiZ276+cqG z%|(J4NNI*7vtjxk^JEcnb#;emhnb*57neT)x>X-FquYB`odg00QdvYs!9KCN?d@Z;V{So^Rt{FtTX?k<9GFfCS>bWns{2WC`?3?llHkbd=3 z>eq*alMa7L8cTH&a!^l;qC+GO-63PDqD^xz&_rMElFDoA2y3wsblf#wUO{sfn$hf! z%F1U(Y-6V0AN|zYi+T6%R5_~NH)+o90(Fhej>VOHSTzTSII;F~N^R)#*4YG{@fy_<=li8d!$t7?xt zbP*E1%ZBab!(7f zLnXH#y2~qKt^P>TCBdmjOaVQ267U`0LL1mmRP3UeFD_laDn2b#48(y&e>$XLT z6e1H8B$rJz#Q8C0HcLuZV6RtiY_GX((m67+_z^zue{`6OD3^B zIC{T?iCin9YdcNLe8$DZTp!7c zP-%M$C@0XblSS0lX}DDv{C#mz114_B zv)zU}U_k{|O|}vo2Ti``MC!)ISrHL^PPlS?oGk-WF zm!D;c7x=}(%32Pj!kh-oD)HUFe}4xP*h(7^eqbO5N*LVGdC8Q<%7-M=WM-YfNILax zhm#g0b?V_0Ct(qhW{-7J;dwthd7xB)qrFxSLdfBfKLWP}!m`KH8! zW4GQETQCqze&Dot?f3na^4s?>Q2bAW5odoG;0fl58FOIOK{)GdZ+{aC18HvCv(vzv zNUyvQy@F;5L~TV?*MHl2WE`QPvvccJAw`rkbqPK`^E7+=Id(tysinF)BMxWiUkC&~ ze_rV)=IQb7Eqbw$>htHavQ^f@oA2&7;)RVIZEAfX8%UNyoStn==C`5qZ;-=KOe?69 z)0==eev91%)Yj3B`(9sv-{5|o!ypf?Vh&+s)V)`)%1g6qg!ZUlxr+@OVd#|&Mq~N; z$J*P?{`bslZ}2{RQow&d7vO)-zfN*Kjg{x-{&-Q*KR+bGLc1cf^OV9uX(gDv zy-njVrKI@X*c-j%I5|;(oboz+tfV^B+xz&kw$Wp6X^wclafqTxxZC`G7&NqAhjamC z97JDHqwo}9n90$x^gna3-j0rr&_;;d^krDV^qid0q0nu@a1-Ftac8Vp2TM!sT4xKu z{UE@>pwoKc=H>aylJxqztnB(ad=VSFVHp~#U6d7opr`lu*R95l3g++)7^FF@&KuxF~$5iRg<>^gKSX(>%?cgdE&raOkZOe_#G)=8MMroEt?yWK^O%>yK&Jl)`kfVtsVbXo8o5{j6=nwD z(>y)Zb#&~Ncj3y&w+fvtbQ_XGUkuZK*7!ZZ&iC61E#~&<=SOIzaNGbFhs|N-d#F1{ z{fc9*9cAF*(fC5oQmhMuAgB1-^G~+7WkV=ieXc|A^Th?e>77fTonsM7Hhe1!8k@#_ z=e0spGf=W8?+)u*4$ue8e4DIwpWy+91FV9y!p607 zCfM^}7e*+)w6Vmmn2!~_PU0dY3aqw6C2xj;lfq}EU7%(%TjO+jb_7BONduTd{5v7d60A?#-k_J3zEj|ccI!_CyW_95ZozPK$iA4`jUtWvzox2| zO)Rg}fwZ$MKf{elqgyRp&60T|YtGTbj*czKJO~1c`%sieLJa{Hwv}6)96bY{(Lx7U z4|e7S{kLbpC1PFe+zjH7Khw?{Ki#^dbh%?E1x1wW-b(Jy&l64~07*(4RXq6yPP z{jos7rwPbq=!$t;!G}ldvsvuW)Y{6x<>&o=c zk-9bZIXF*gVgJtL*GIYX_n+Z0$p4xbLvRcJIO6iVe40P##0b8Y_7EhvcZFiC{ITpL zLj5|D`NYmmML&o=vh-o6nzm!?x3fT5INKTe?mRr<# zk!ou@9J|u+p{b|{IU(P@8@S#=7{;P$Z1S2z&pFeCCc13M*G-6*$j~q}JTQTjm-p9d z$g4HAT(n)UM7Q6HP)H5xhw`vtsy#79rIxibNueH8D7IKz-EAGs=xccOMU+?$u4Ds>(aF|BF0yij>Zr@jI$%U$`CnZQWQVpiZbjeLv8j>>YtYx&RbgZ2IF zy_5Q9q)V8qjiL*g5|=@l{_=0}gxr+Bz}tPaQr()5D%9k$Qn_mdqctUPvoMhY9|)m# zhaFM@h;cyf+kzkrPxa@|3mcmcFmnNqnw*^c{=GApZK2DfpMpUWA)r?<^-Orl|+R99pXx5eSpDWcaMw`q{H zKJ|aFzH)$p({uoN&?}dnPk_)2?p(k%QPI&8<-x#sfWBPe2S>;ga>_6}+6mVdJ zHqr7uvLz zd8i4z9ugQcqG-j=VD=FC`&u%4=O{)r?Gx3^kywV6MX86RsL#JeBR;D$d`qS620KL> zLbpCK6!3}xd@KZlH^mkl$Y#jRCEd;Ta6F8w{0@72b_rR}+o;6;7&^hXt6Z zwY66Bhwl40nH#>G&no;A%_F+NH_uP#9k=y^rIE5g4S``(Ug2Cm#4T2f#vKEe?0$B!@vQmelW@nB^&32O^< z=fO)wM9+7P+S*<-v&#Tt=hJu=O+bmAMcGa|&;`JtGz_Ez$x#W!Fw7xP6u*q-85UG6 z)d2|-skZ)_BH||4K{G*vtBSj@flNzcIB%QNQaU zR8m!iDec{AyPrkH#e#M-V_%+eJs$fN`l#>_CG5pa<*ZA}WL%8tE(|%36>7fqtp-&B zs9QszgVM&GPLzb;uaJ+V3y_aVRLcZL z02qQ>+)O06(h8RU1p<{&^@eDeA~eSLR4R{#6|vG>g0tCF3pLLql#L?R@z%Ia;D5iN<3 zog`GK+lpi>BP(SkJE=s7l+Z-d?|FZ||Nrhk`s03hoO7RZUgvsU*K?&@dkxMW>Z~YF zU?2O&dkWg3nR2?)NC}Rfo&3knwTO{4>COkEY6S|n%)Tr-x|7;-^;BEbyQYgxAgBnm z_qA@%+1u!zn4&^p4uaGv9Ki#5WO7XZRT=z73>h?@1LXY%Pd2y7@v3|35gB^(6;?&- zfRm`yPL3{N^sp*!;|d@64^Q;_3F?mCL@8-DuG5&%n0e(W4kL;^(Q?dd8Y2}_3}`35 zel2~WW?JqH?bDal<&|YOHa}&c^wqxq1vaWB-?_5^e-_o;U_sJQoj+~Pkg&d#kcz}_ zhI~JlC{*zZy9kG2B&1<8|PR`c&&t4RFN&|4|J*_Xn$>M!0l zo=tyoSdrhAwIzkmmo}E0yU>I;LEW@!5)WRXa}LzE#yNJwv*?RawtFf(1_lP=M@lCk zaRJ82(u~)TS$nbgA!Cl@-uOIQF2w3o_7oVmJ>wMVL`+poOpV{x@RE|bF5cUvre

lZb&Yb^jmA1J04sDpu79z=J0a~BekK+R%A!{q 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 tND`D5jjNW7wB+a?7%X>#r(0DVs-^K=m< z%X9yqufKc{{^yH#pB9n)sDGB3TzmQ(Np3!!`>UeZe4I>fZ*M`o&1I2hAdapx;SxcF(| zvZsZM^2<${6`72RHsmZ#VrD zcI=hA%%a8q3%6#`+yRVOA zL+P!zJS>EwiXLAcmeZ0NcSMVG{|{JCQ8Os*P^(`nN1ODX zNCbrRECgXQ?zU?5`Jc_2?lT>POqQ{_hd5(^b4vJB0E93M4Wi(b4@2GPbX?jPj*G0v zh5R~I*SLy9#M~C)!`RTq?COekwsAp-`NxI+Ftyg|VP1bpGUPL!XaPX_T zD;^LKRRlz12}l8^XTl-i4w}X;O3{nd9D-Tu1R%FGwc2@8!kT5Jihj`PE-le4~nJE+1Yd$FE?eqUEY{ z4ZE@ofq?ZF83$Tt-ysYff>JModuAmF#{uakbD6AF_o-CL^}0&qfhe6t?zpSr#xALO zJ?xee94TtUbO?{vA)^Z1sSsJ+!A69Tp&Sqar!QZEKDw&5`+w614F zKsE<1B|&2t2u7#6F*RqO3!#f*7^lR!f+4g|ze=X-rQl}~u=^Px zNp#NiS5-p20fL$P@7_9L+NbC}qf`JkTwZ%ehS>L276Q1q|@i7HVkAG}P~| znb#L*rzsn(^)I1eN2714nIUSF;2*>Y-8P53s(C!Hgn-zMUP;2 z-FqrMLZfe{g+O1Wh=QT5?m^6hASgl5RO4v|G5}qViCuxUt@O&+nDAe~sE9`2$k1a? zdD*$$KhovMfaq~C0D%D{V5r_5HZhKk>yVLA&!g1gkf=lW9}R^lIKf7zVG$ji^+Pwf zIA_E#6cNts1{W`dLO@L1?{>Ch?A+xF>^1b-dUq{YwPMMhs#ucoLTOU&S|n zD2U-6WXx_&aEh2??sY`iy}$a58?0mcv?lk^skztp&=VcMp=*@fqo^rrB zwut0aJaq6EetYV`^-~93Bz$}D;1xdngxL5_jF~Pa7`%&lkRVkkrjy5LN&q2{5Q7@v nfV=`tLT{SnT9Z17_$ErvDoVA-%xnMdaPjUtj5t^l5;*_>7?$o% literal 0 HcmV?d00001 diff --git a/opamp/noninv.png b/opamp/noninv.png new file mode 100644 index 0000000000000000000000000000000000000000..963ed92c1401f5e9e0131bcba4b8aeee88d2a709 GIT binary patch literal 4385 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 literal 0 HcmV?d00001 diff --git a/opamp/noninvampa.dia b/opamp/noninvampa.dia new file mode 100644 index 0000000000000000000000000000000000000000..16e5f23a36f73045a411292774d464c28bb01127 GIT binary patch literal 3681 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�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

89~)_p4v#qhCY*m#bj%o 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ℜOy-r;OY-H%+O2lb(Vt8*qAp-wHc%3R3mwP~lW~ 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 literal 0 HcmV?d00001 diff --git a/opamp/noninvopamp.tex b/opamp/noninvopamp.tex new file mode 100644 index 0000000..2a77ba0 --- /dev/null +++ b/opamp/noninvopamp.tex @@ -0,0 +1,1033 @@ + +\label{lab:nonivopamp} + +\ifthenelse {\boolean{paper}} +{ +\abstract{ +This paper analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp. + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can now create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can be analysed and a derived component to represent the non inverting +amplifier determined. +} +\section{Introduction} +} +{ +This chapter analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp.\section{Introduction} + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can now be analysed and a derived component to represent the non inverting +amplifier determined. +\section{Introduction: The non-inverting amplifier} +} + + + +A standard non inverting op amp (from ``The Art of Electronics'' ~\cite{aoe}[pp.234]) is shown in figure \ref{fig:noninvamp}. + + +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/noninv.png} + % noninv.jpg: 341x186 pixel, 72dpi, 12.03x6.56 cm, bb=0 0 341 186 + \caption{Standard non inverting amplifier configuration} + \label{fig:noninvamp} +\end{figure} + + + +The function of the resistors in this circuit is to set the amplifier gain. +They operate as a potential divider and program the minus input on the op-amp +to balance them against the positive input, giving the voltage gain ($G_v$) +defined by $ G_v = 1 + \frac{R2}{R1} $ at the output. + + + + +A functional group, is an ideally small in number collection of components, +that interact to provide +a function or task within a system. +As the resistors work to provide a specific function, that of a potential divider, +we can treat them as a functional group. This functional group has two members, $R1$ and $R2$. +Using the EN298 specification for resistor failure ~\cite{en298}[App.A] +we can assign failure modes of $OPEN$ and $SHORT$ to the resistors. +\ifthenelse {\boolean{dag}} +{ +We can now represent a resistor in terms of its failure modes as a directed acyclic graph (DAG) +(see figure \ref{fig:rdag}). +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + \node[component] (R) at (0,-3) {$R$}; + \node[failure] (RSHORT) at (\layersep,-2) {$R_{SHORT}$}; + \node[failure] (ROPEN) at (\layersep,-4) {$R_{OPEN}$}; + \path (R) edge (RSHORT); + \path (R) edge (ROPEN); + \end{tikzpicture} + \caption{DAG representing a reistor and its failure modes} + \label{fig:rdag} + \end{figure} +} +{ +} +Thus $R1$ has failure modes $\{R1\_OPEN, R1\_SHORT\}$ and $R2$ has failure modes $\{R2\_OPEN, R2\_SHORT\}$. + + +%\clearpage +\section{Failure Mode Analysis of the Potential Divider} + +\ifthenelse {\boolean{pld}} +{ +Modelling this as a functional group, we can draw a simple closed curve +to represent each failure mode, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1}. +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1.png} + % fg1.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider `functional group' failure modes} + \label{fig:fg1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +Modelling this as a functional group, we can draw this as a directed graph +failure modes, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1dag}. +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (R1) at (0,-4) {$R_1$}; + \node[component] (R2) at (0,-6) {$R_2$}; + + \node[failure] (R1SHORT) at (\layersep,-2) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-4) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-6) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-8) {$R2_{OPEN}$}; + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + % Potential divider failure modes + % + %\node[symptom] (PDHIGH) at (\layersep*2,-4) {$PD_{HIGH}$}; + %\node[symptom] (PDLOW) at (\layersep*2,-6) {$PD_{LOW}$}; + + %\path (R1OPEN) edge (PDHIGH); + %\path (R2SHORT) edge (PDHIGH); + + %\path (R2OPEN) edge (PDLOW); + %\path (R1SHORT) edge (PDLOW); + + \end{tikzpicture} + + \caption{DAG representing the functional group `Potential Divider'} + \label{fig:fg1dag} + \end{figure} +} +{ +} + +We can now look at each of these base component failure modes, +and determine how they will affect the operation of the potential divider. +%Each failure mode scenario we look at will be given a test case number, +%which is represented on the diagram, with an asterisk marking +%which failure modes is modelling (see figure \ref{fig:fg1a}). + +\ifthenelse {\boolean{pld}} +{ +Each labelled asterisk in the diagram represents a failure mode scenario. +The failure mode scenarios are given test case numbers, and an example to clarify this follows +in table~\ref{pdfmea}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1a.png} + % fg1a.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider with test cases} + \label{fig:fg1a} +\end{figure} +} +{ +} + + +\ifthenelse {\boolean{dag}} +{ +For this example we can look at single failure modes only. +For each failure mode in our {\fg} `potential~divider' +we can assign a test case number (see table \ref{pdfmea}). +Each test case is analysed to determine the `symptom' +on the potential dividers' operation. For instance +were the resistor $R_1$ to go open, the circuit would not be grounded and the +voltage output from it would be the +ve supply rail. +This would mean the symptom of the failed potential divider, would be that it +gives an output high voltage reading. We can now consider the {\fg} +as a component in its own right, and its symptoms as its failure modes. + +From table \ref{pdfmea} we can see that resistor +failures modes lead to some common `symptoms'. +By drawing connecting lines in a graph, from the failure modes to the symptoms +we can show the relationships between the component failure modes and resultant symptoms. +%The {\fg} can now be considered a derived component. +This is represented in the DAG in figure \ref{fig:fg1adag}. + +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (R1) at (0,-4) {$R_1$}; + \node[component] (R2) at (0,-6) {$R_2$}; + + \node[failure] (R1SHORT) at (\layersep,-2) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-4) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-6) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-8) {$R2_{OPEN}$}; + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-4) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-6) {$PD_{LOW}$}; + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + \end{tikzpicture} + + \caption{Failure symptoms of the `Potential Divider'} + \label{fig:fg1adag} + \end{figure} +} +{ +} + +\begin{table}[ht] +\caption{Potential Divider: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Pot.Div} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $R_1$ SHORT & LOW & & LowPD \\ + TC2: $R_1$ OPEN & HIGH & & HighPD \\ \hline + TC3: $R_2$ SHORT & HIGH & & HighPD \\ + TC4: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{pdfmea} +\end{table} + +\ifthenelse {\boolean{pld}} +{ +We can now collect the symptoms of failure. From the four base component failure modes, we now +have two symptoms, where the potential divider will give an incorrect low voltage (which we can term $LowPD$) +or an incorrect high voltage (which we can term $HighPD$). +We can represent the collection of these symptoms by drawing connecting lines between +the test cases and naming them (see figure \ref{fig:fg1b}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1b.png} + % fg1b.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{Collection of potential divider failure mode symptoms} + \label{fig:fg1b} +\end{figure} +%\clearpage + +We can now make a `derived component' to represent this potential divider. +This can be named \textbf{PD}. +This {\dc} will have two failure modes. +We can use the symbol $\bowtie$ to represent taking the analysed +{\fg} and creating from it, a {\dc}. + +%We could represent it algebraically thus: $ \bowtie(PotDiv) = +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/dc1.png} + % dc1.jpg: 430x619 pixel, 72dpi, 15.17x21.84 cm, bb=0 0 430 619 + \caption{From functional group to derived component} + \label{fig:dc1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now represent the potential divider as a {\dc}. +Because have its symptoms or failure mode behaviour, +we can treat these as the failure modes of a a new {\dc}. +We can represent that as a DAG (see figure \ref{fig:dc1dag}). + +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + \node[component] (PD) at (0,-3) {$PD$}; + \node[symptom] (PDHIGH) at (\layersep,-2) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep,-4) {$PD_{LOW}$}; + \path (PD) edge (PDHIGH); + \path (PD) edge (PDLOW); + \end{tikzpicture} + \caption{DAG representing a Potential Divider (PD) its failure symptoms} + \label{fig:dc1dag} + \end{figure} + +} +{ +} + + +Because the derived component is defined by its failure modes and +the functional group used to derive it, we can use it +as a building block for other {\fgs} in the same way as we used the resistors $R1$ and $R2$. + +\clearpage + +\section{Failure Mode Analysis of the OP-AMP} + +Let use now consider the op-amp. According to +FMD-91~\cite{fmd91}[3-116] an op amp may have the following failure modes: +latchup(12.5\%), latchdown(6\%), nooperation(31.3\%), lowslewrate(50\%). + + + +\ifthenelse {\boolean{pld}} +{ +We can represent these failure modes on a diagram (see figure~\ref{fig:op1}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/op1.png} + % op1.jpg: 406x221 pixel, 72dpi, 14.32x7.80 cm, bb=0 0 406 221 + \caption{Op Amp failure modes} + \label{fig:op1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can represent these failure modes on a DAG (see figure~\ref{fig:op1dag}). +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + \path (OPAMP) edge (OPAMPLS); + + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes of an Op-amp} + \label{fig:op1dag} + \end{figure} + +} +{ +} + +%\clearpage + +\section{Bringing the OP amp and the potential divider together} + +We can now consider bringing the OP amp and the potential divider together to +model the non inverting amplifier. We have the failure modes of the functional group for the potential divider, +so we do not need to consider the individual resistor failure modes that define its behaviour. +\ifthenelse {\boolean{pld}} +{ +We can make a new functional group to represent the amplifier, by bringing the component \textbf{opamp} +and the component potential divider \textbf{PD} into a new functional group. +This functional group has the failure modes from the op-amp component, and the failure modes +from the potential divider {\dc}, represented by figure~\ref{fig:fgamp}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fgamp.png} + % fgamp.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 + \caption{Amplifier Functional Group} + \label{fig:fgamp} +\end{figure} + +We can now place test cases on this (note this analysis considers single failure modes only +where we want to model multiple failures, we can over lap contours, and place the test cases in overlapping +regions) see figure~\ref{fig:fgampa}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fgampa.png} + % fgampa.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 hno + \caption{Amplifier Functional Group with Test Cases} + \label{fig:fgampa} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now crate a {\fg} for the non-inverting amplifier +by bringing together the failure modes from \textbf{opamp} and \textbf{PD}. +Each of these failure modes will be given a test case for analysis, +and this is represented in table \ref{ampfmea}. + +} +{ +} + +\clearpage + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Amplifier} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $OPAMP$ LatchUP & Output High & & AMPHigh \\ + TC2: $OPAMP$ LatchDown & Output Low : Low gain& & AMPLow \\ \hline + TC3: $OPAMP$ No Operation & Output Low & & AMPLow \\ + TC4: $OPAMP$ Low Slew & Low pass filtering & & LowPass \\ \hline + TC5: $PD$ LowPD & Output High & & AMPHigh \\ \hline + TC6: $PD$ HighPD & Output Low : Low Gain& & AMPLow \\ \hline + %TC7: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + + +Let us consider, for the sake of example, that the voltage follower (very low gain of 1.0) +amplification chracteristics from +TC2 and TC6 can be considered as low output from the OPAMP for the application +in hand (say milli-volt signal amplification). + +For this amplifier configuration we have three failure modes, $AMPHigh, AMPLow, LowPass$.%see figure~\ref{fig:fgampb}. +\ifthenelse {\boolean{pld}} +{ +We can now derive a `component' to represent this amplifier configuration (see figure ~\ref{fig:noninvampa}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/noninvampa.png} + % noninvampa.jpg: 436x720 pixel, 72dpi, 15.38x25.40 cm, bb=0 0 436 720 + \caption{Non Inverting Amplifier Derived Component} + \label{fig:noninvampa} +\end{figure} +} +{ +} + + +\ifthenelse {\boolean{dag}} +{ + +%% text for figure below + +The non-inverting amplifier can be drawn as a DAG using the +results from table~\ref{ampfmea} (see~figure~\ref{fig:noninvdag0}). +Note that the potential divider, $PD$, is treated as a component with a set of failure modes, +and its error sources and analysis have been hidden in this diagram. +$PD$ is considered to be a {\dc}. + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + \path (OPAMP) edge (OPAMPLS); + + + \node[component] (PD) at (0,-9) {$PD$}; + \node[symptom] (PDHIGH) at (\layersep,-8) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep,-10) {$PD_{LOW}$}; + \path (PD) edge (PDHIGH); + \path (PD) edge (PDLOW); + + \node[symptom] (AMPHIGH) at (\layersep*4,-3) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-5) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-7) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + \path (OPAMPLS) edge (AMPLP); + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag0} + \end{figure} +} +{ +} + + +%failure mode contours). +%\clearpage +\clearpage +\section{Failure Modes from non inverting amplifier as a Directed Acyclic Graph (DAG)} +\ifthenelse {\boolean{pld}} +{ +We can now represent the FMMD analysis as a directed graph, see figure \ref{fig:noninvdag1}. +With the information structured in this way, we can trace the high level failure mode symptoms +back to their potential causes. +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now expand the $PD$ {\dc} and now have a full FMMD failure mode model +drawn as a DAG, which we can use to traverse to determine the possible causes to +the three high level symptoms, or failure~modes of the non-inverting amplifier. +Figure \ref{fig:noninvdag1} shows a fully expanded DAG, from which we can derive information +to assist in building models for FTA, FMEA, FMECA and FMEDA failure mode analysis methodologies. +} +{ +} + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + % Draw the input layer nodes + %\foreach \name / \y in {1,...,4} + % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4} + % \node[component, pin=left:Input \#\y] (I-\name) at (0,-\y) {}; + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[component] (R1) at (0,-9) {$R_1$}; + \node[component] (R2) at (0,-13) {$R_2$}; + + %\node[component] (C-3) at (0,-5) {$C^0_3$}; + %\node[component] (K-4) at (0,-8) {$K^0_4$}; + %\node[component] (C-5) at (0,-10) {$C^0_5$}; + %\node[component] (C-6) at (0,-12) {$C^0_6$}; + %\node[component] (K-7) at (0,-15) {$K^0_7$}; + + % Draw the hidden layer nodes + %\foreach \name / \y in {1,...,5} + % \path[yshift=0.5cm] + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \node[failure] (R1SHORT) at (\layersep,-9) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-11) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-13) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-15) {$R2_{OPEN}$}; + + + + % Draw the output layer node + +% % Connect every node in the input layer with every node in the +% % hidden layer. +% %\foreach \source in {1,...,4} +% % \foreach \dest in {1,...,5} + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); +\path (OPAMP) edge (OPAMPLS); + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-11) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-13) {$PD_{LOW}$}; + + + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + + + \node[symptom] (AMPHIGH) at (\layersep*4,-6) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-8) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-10) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + + \path (OPAMPLS) edge (AMPLP); +% %\node[symptom,pin={[pin edge={->}]right:Output}, right of=C-1a] (O) {}; +% \node[symptom, right of=C-1a] (s1) {s1}; +% \node[symptom, right of=C-2a] (s2) {s2}; +% +% +% +% \path (C-2b) edge (s1); +% \path (C-1a) edge (s1); +% +% \path (C-2a) edge (s2); +% \path (C-1b) edge (s2); +% +% %\node[component, right of=s1] (DC) {$C^1_1$}; +% +% %\path (s1) edge (DC); +% %\path (s2) edge (DC); +% +% +% +% % Connect every node in the hidden layer with the output layer +% %\foreach \source in {1,...,5} +% % \path (H-\source) edge (O); +% +% % Annotate the layers +% \node[annot,above of=C-1a, node distance=1cm] (hl) {Failure modes}; +% \node[annot,left of=hl] {Base Components}; +% \node[annot,right of=hl](s) {Symptoms}; + %\node[annot,right of=s](dcl) {Derived Component}; + \end{tikzpicture} + % End of code + \caption{Full DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag1} + \end{figure} + + + +\section{Deriving FTA, FMEA, FMECA and FMEDA models from the DAG} + +The example here is very low level, or in other words is a very sysple sub-system. +The FTA, FMEA, FMECA and FMEDA would normally be applied to a very large +safety critical system (i.e. a car or a steam producing boiler plant). +Th examples here show how the DAG provides a frame work for +producing skeleton data forms for all these methodologies. + + +\section{Extracting Fault Trees from the DAG} + +We can derive an FTA~\cite{nucfta}~\cite{nasafta} diagram for a top level event, by tracing back through the DAG. +Where we come to a node with more than one error source, this becomes an `xor' gate +in the FTA diagram. Tracing back from the top level event $AMP_{low}$ we are lead to +the $OPAMP_{latchdown}$ and $OPAMP_{noop}$. These two events can cause the symptom $AMP_{low}$. +We can also trace back down to the symptom $PD_{high}$. Thus we have three +possible cause for $AMP_{low}$, and so we can draw a three input +`xor' gate below $AMP_{low}$, to which $OPAMP_{latchdown}$, $OPAMP_{noop}$ and $PD_{high}$ +connect to from below\footnote{XOR is used here, because we have analysed for single failures only.} +%This is a weakness in FTA diagrams, as it is clumsy to represent +%conjunction and dis-junction sourced from the same failure modes}. +$OPAMP_{latchdown}$ and $OPAMP_{noop}$ are base level or component events, and so we cannot +trace them down any further. +$PD_{high}$ is a symptom, and can be traced further. +$PD_{high}$ can occur by either event $R1_{open}$ or $R2_{short}$. +We can place an xor gate below $PD_{high}$ and connect the events $R1_{open}$ or $R2_{short}$ +to it. +The FTA diagram directly derived from the FMMD DAG is shown in figure \ref{fig:noninvfta}. + +\begin{figure} +\begin{tikzpicture}[ +% Gates and symbols style + and/.style={and gate US,thick,draw,fill=blue!40,rotate=90, + anchor=east,xshift=-1mm}, + or/.style={xor gate US,thick,draw,fill=blue!40,rotate=90, + anchor=east,xshift=-1mm}, + be/.style={circle,thick,draw,fill=white!60,anchor=north, + minimum width=0.7cm}, + tr/.style={buffer gate US,thick,draw,fill=white!60,rotate=90, + anchor=east,minimum width=0.8cm}, +% Label style + label distance=3mm, + every label/.style={blue}, +% Event style + event/.style={rectangle,thick,draw,fill=yellow!20,text width=2cm, + text centered,font=\sffamily,anchor=north}, +% Children and edges style + edge from parent/.style={very thick,draw=black!70}, + edge from parent path={(\tikzparentnode.south) -- ++(0,-1.05cm) + -| (\tikzchildnode.north)}, + level 1/.style={sibling distance=7cm,level distance=1.4cm, + growth parent anchor=south,nodes=event}, + level 2/.style={sibling distance=7cm}, + level 3/.style={sibling distance=6cm}, + level 4/.style={sibling distance=3cm} +%% For compatability with PGF CVS add the absolute option: +% absolute + ] +%% Draw events and edges + %\node (g1) [event] {AMP Low} +% +% child { node (g1) { triple or gate } +% +% child { node (PDHigh) { double or gate } +% child { node (g2) {G02} { +% child {node (r1o) {$R1_{open}$}} +% child {node (r2s) {$R2_{short}$}} +% } +% } +% } +% child {node (opld) {opamp latch down}} +% child {node (opnp) {opamp noop}} +% +% }; + + \node (g1) [event] {amp low} + + child { + node (g2) {op amp output voltage low} + child {node (t1) {pd high} + child { node (g4) {potential divider voltage high} + child {node (b1) {r1 open}} + child {node (b2) {r2 short}} + } + %child { node (g5) {No flow from Component A2} + % child {node (t2) {No flow from source2}} + % child {node (b3) {Component A2 blocks flow}} + %} + } + child {node (b3) {OP amp latch dn}} + child {node (b4) {OP amp no op}} + }; + +%% Place gates and other symbols +%% In the CVS version of PGF labels are placed differently than in PGF 2.0 +%% To render them correctly replace '-20' with 'right' and add the 'absolute' +%% option to the tikzpicture environment. The absolute option makes the +%% node labels ignore the rotation of the parent node. + %\node [or] at (g1.south) [label=-20:G01] {}; + \node [or] at (g2.south) [label=-20:G01] {}; + \node [or] at (g4.south) [label=-20:G02] {}; +% \node [and] at (g3.south) [label=-20:G03] {}; +% \node [or] at (g4.south) [label=-20:G04] {}; +% \node [or] at (g5.south) [label=-20:G05] {}; + \node [be] at (b1.south) [label=below:B01] {}; + \node [be] at (b2.south) [label=below:B02] {}; + \node [be] at (b3.south) [label=below:B03] {}; + \node [be] at (b4.south) [label=below:B04] {}; +% \node [tr] at (t1.south) [label=below:T01] {}; +% \node [tr] at (t2.south) [label=below:T02] {}; +%% + +\end{tikzpicture} +\label{fig:noninvfta} +\caption{Example FTA Derived from the DAG for symptom `Amp Low'} +\end{figure} + + +\subsection{The FTA `OR' trap} + +This example amplifier analysis highlights a weakness in the FTA methodology. +Intuitively, the $AMP_{low}$ failure symptom, has three possible +causes and it would be tempting, when drawing an FTA diagram \footnote{FTA diagrams are drawn from the top down, + starting with high level undesirable events~\cite{nucfta}}, +to use a triple input `OR' gate to model these. + +An `OR' gate would mean that the power-set of all its inputs +leads to the resultant failure mode/symptom. + +In this example we have a combination that breaks this rule. Were the condition +$$PD_{high} \wedge OPAMP_{noop}$$ to be true we would have a floating output +which is a different error condition to the output being actively low. + +This means that anyone drawing an OR gate in an FTA diagram +should either specify that only single failure modes have been considered +possible, or, must consider all power-set combinations of the inputs. + +\subsection{Information missing in FTA} + +to expand: Each FTA deals only with one symptom. - therefore only one cut-set is represented by each FTA +diagram, throwing away nearly all the information associated with the other top level events. + +\subsubsection{Further refinements} + +to expand: Cuts sets and minimal cut sets. show example of detection of mimimal cut sets in the FTA tree + + +\clearpage +\section{Extracting/Assisting in FMEA reports from the DAG} + +A design FMEA, or potential failure mode and effects analysis +will typically require the designer to look at the possible effects +of all the component failure modes in the system under investigation. + + +FMEA uses the terms `potential causes' and `potential failure modes'. +In an FMMD sense, the `potential causes' are component level failure modes +and the `potential failure modes' are top-level symptoms. + +\ifthenelse {\boolean{paper}} +{ +%FMEA - brief description for paper... +Design FMEA is methodology for assessing potential reliability/dangerous conditions early +in the development cycle. +FMEA is used to identify potential failure modes, +determine their effect on the operation of the product, +and identify actions to mitigate the failures. +FMEA relies anticipating what {\em might} go wrong with a product. +While anticipating every failure mode is not possible, a development team should +collate as complete a list of potential failure modes as possible. + +With an FMMD sourced failure mode to symptom mapping, this +list should be more complete. It will for instance include +not only an entry every component failure mode, but has a formal +reasoning process behind it, which leads to the symptom. +} +{ +See section \ref{pfmea} for an overview of FMEA. +FMEA relies anticipating what {\em might} go wrong with a product. +While anticipating every failure mode is not possible, a development team should +collate as complete a list of potential failure modes as possible. +With an FMMD sourced failure mode to symptom mapping, this +list should be more complete. + +It will for instance include +not only an entry every component failure mode, but has a formal +reasoning process behind it, which leads to the symptom. + +} +We have from the DAG model, a direct path from each component failure +mode to top-level symptoms. This allows us to partially fill in +the FMEA report. The detectability and severity of the symptom +are subjective. +The $det$ value could influenced by factors such as features only used by a small percentage +of users of a product. In this case the detcability of the problem would be smaller +as many users would not activate/use the feature~\cite{bfmea}. +%strange is'nt it. +Given component failure rates, the probability +of the the potential cause occurring can be calculated, given suitable +component failure mode statistical references (e.g. FMD-91~\cite{fmd91} and MIL1991~\cite{mil1991}). +As these can be determined, they are represented by $Stat()$ in the table~\ref{ampfmea}. + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|l|c|l|c|c|c||} +\hline \hline + \textbf{Item} & \textbf{Potential Failure} & \textbf{ Sev } & \textbf{Potential} & \textbf{prob} & \textbf{det} & \textbf{RPN} \\ + \textbf{Function} & \textbf{mode} & \textbf{ /cost }& \textbf{Cause} & \textbf{/occ } & \textbf{} & \\\hline +\hline + Non Inverting & $AMP_{high}$ & & $R1_{short} $ & $Stat(R1_{short}) $ & & \\ + Amplifier & $AMP_{low}$ & & $R1_{open} $ & $Stat(R1_{open}) $ & & \\ + Circuit & $AMP_{low}$ & & $R2_{short} $ & $Stat(R2_{short}) $ & & \\ + & $AMP_{high}$ & & $R2_{open}$ & $Stat(R2_{open})$ & & \\ + + & $AMP_{lowpass}$ & & $OPAMP_{lowslew}$ & $Stat(OPAMP_{lowslew})$ & & \\ + & $AMP_{low}$ & & $OPAMP_{latchdown}$ & $Stat(OPAMP_{latchdown})$ & & \\ + & $AMP_{high}$ & & $OPAMP_{latchup}$ & $Stat(OPAMP_{latchup})$ & & \\ + & $AMP_{low}$ & & $OPAMP_{noop} $ & $Stat(OPAMP_{noop}) $ & & \\ + + +\hline +\hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + + +With the partially filled in table the FMEA report only now needs the severity/cost, +probability/occurrence and detectability fields filled in to obtain the +$RPN$ numbers that define the order of importance of failure modes in FMEA. + +\subsection{Information missing in FMEA} + +to expand: Each FMEA looses the reasoning in the FMMD Hierarchy/DAG for linking +the symptoms to the potential causes. +FMEA can miss symptoms especially where a component failure mode may cause more than one top-level symptom. + +\section{Extracting/Assisting in FMECA from the DAG} + +FMECA is a refinement of FMEA and introduces two statistical variables, $\alpha$ and $\beta$. +The $\alpha$ value is the probability of +of a particular component failure +mode occuring.We can trace the DAG from a system level error/top level event, and assign +$\alpha$ values according to published statistics~\cite{fmd91}~\cite{mil1992}. +As for the FMEA example we can denote this using a $Stat()$ function. + +The $\beta$ value is the probability that the component failure mode will +cause a given system level error. +This may be determined hueistically or by field data. + +A factor of FMECA is criticallity. Each top level event/failure +is assigned a criticallity value. This defines how seriously the problem is +pervcieved. This must be determined by the safety engineers responsible for the equipment and +its environment. + + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Critcallity Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|l|c|c|c|c||} +\hline \hline + \textbf{Item} & \textbf{Potential Failure} & \textbf{Potential} & \textbf{$\alpha$} & \textbf{$\beta$} & \textbf{severity} & \textbf{$C_r$} \\ + \textbf{Function} & \textbf{mode} & \textbf{Cause} & \textbf{} & \textbf{} & \textbf{rating} & \\\hline +\hline + Non Inverting & $AMP_{high}$ & $R1_{short} $ & $Stat(R1_{short}) $ & & & \\ + Amplifier & $AMP_{low}$ & $R1_{open} $ & $Stat(R1_{open}) $ & & & \\ + Circuit & $AMP_{low}$ & $R2_{short} $ & $Stat(R2_{short}) $ & & & \\ + & $AMP_{high}$ & $R2_{open}$ & $Stat(R2_{open})$ & & & \\ + + & $AMP_{lowpass}$ & $OPAMP_{lowslew}$ & $Stat(OPAMP_{lowslew})$ & & & \\ + & $AMP_{low}$ & $OPAMP_{latchdown}$ & $Stat(OPAMP_{latchdown})$ & & & \\ + & $AMP_{high}$ & $OPAMP_{latchup}$ & $Stat(OPAMP_{latchup})$ & & & \\ + & $AMP_{low}$ & $OPAMP_{noop} $ & $Stat(OPAMP_{noop}) $ & & & \\ + + +\hline +\hline +\hline +\end{tabular} +\label{ampfmeca} +\end{table} +%As the $\alpha$ modes are probabilities, the sum of all $\alpha$ modes for a component must equal one. + +% Work out the alpha and beta values !!! well alpha is possible, beta and criticallity are not + +\section{Extracting FMEDA from the DAG} + +safe failure fractions +hmmmm +SD SU DD DU + + +\section{Conclusion} + +We now have a derived component that represents the failure modes of a non-inverting +op-amp based amplifier. We can now use this to model higher level designs, where we have systems +that use this type of amplifier. +If failure mode/reliability statistics were required these could be derived +from the model, as each failure mode of the derived component +is traceable to one or more base component failure mode causes, for which established +statistical literature is available ~\cite{mil1991}~\cite{fmd91}. +Software used to edit these diagrams, keeps the model in a directed acyclic graph data structure +for this purpose. + +\clearpage +%\end{document} \ No newline at end of file diff --git a/opamp/noninvopamp.tex.16may2011 b/opamp/noninvopamp.tex.16may2011 new file mode 100644 index 0000000..d6769e0 --- /dev/null +++ b/opamp/noninvopamp.tex.16may2011 @@ -0,0 +1,957 @@ + + + +\ifthenelse {\boolean{paper}} +{ +\abstract{ +This paper analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp. + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can now create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can be analysed and a derived component to represent the non inverting +amplifier determined. +} +\section{Introduction} +} +{ +This chapter analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp.\section{Introduction} + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can now be analysed and a derived component to represent the non inverting +amplifier determined. +\section{Introduction: The non-inverting amplifier} +} + + + +A standard non inverting op amp (from ``The Art of Electronics'' ~\cite{aoe}[pp.234]) is shown in figure \ref{fig:noninvamp}. + + +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/noninv.png} + % noninv.jpg: 341x186 pixel, 72dpi, 12.03x6.56 cm, bb=0 0 341 186 + \caption{Standard non inverting amplifier configuration} + \label{fig:noninvamp} +\end{figure} + + + +The function of the resistors in this circuit is to set the amplifier gain. +They operate as a potential divider and program the minus input on the op-amp +to balance them against the positive input, giving the voltage gain ($G_v$) +defined by $ G_v = 1 + \frac{R2}{R1} $ at the output. + + + + +A functional group, is an ideally small in number collection of components, +that interact to provide +a function or task within a system. +As the resistors work to provide a specific function, that of a potential divider, +we can treat them as a functional group. This functional group has two members, $R1$ and $R2$. +Using the EN298 specification for resistor failure ~\cite{en298}[App.A] +we can assign failure modes of $OPEN$ and $SHORT$ to the resistors. +\ifthenelse {\boolean{dag}} +{ +We can now represent a resistor in terms of its failure modes as a directed acyclic graph (DAG) +(see figure \ref{fig:rdag}). +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + \node[component] (R) at (0,-3) {$R$}; + \node[failure] (RSHORT) at (\layersep,-2) {$R_{SHORT}$}; + \node[failure] (ROPEN) at (\layersep,-4) {$R_{OPEN}$}; + \path (R) edge (RSHORT); + \path (R) edge (ROPEN); + \end{tikzpicture} + \caption{DAG representing a reistor and its failure modes} + \label{fig:rdag} + \end{figure} +} +{ +} +Thus $R1$ has failure modes $\{R1\_OPEN, R1\_SHORT\}$ and $R2$ has failure modes $\{R2\_OPEN, R2\_SHORT\}$. + + +%\clearpage +\section{Failure Mode Analysis of the Potential Divider} + +\ifthenelse {\boolean{pld}} +{ +Modelling this as a functional group, we can draw a simple closed curve +to represent each failure mode, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1}. +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1.png} + % fg1.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider `functional group' failure modes} + \label{fig:fg1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +Modelling this as a functional group, we can draw this as a directed graph +failure modes, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1dag}. +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (R1) at (0,-4) {$R_1$}; + \node[component] (R2) at (0,-6) {$R_2$}; + + \node[failure] (R1SHORT) at (\layersep,-2) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-4) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-6) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-8) {$R2_{OPEN}$}; + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + % Potential divider failure modes + % + %\node[symptom] (PDHIGH) at (\layersep*2,-4) {$PD_{HIGH}$}; + %\node[symptom] (PDLOW) at (\layersep*2,-6) {$PD_{LOW}$}; + + %\path (R1OPEN) edge (PDHIGH); + %\path (R2SHORT) edge (PDHIGH); + + %\path (R2OPEN) edge (PDLOW); + %\path (R1SHORT) edge (PDLOW); + + \end{tikzpicture} + + \caption{DAG representing the functional group `Potential Divider'} + \label{fig:fg1dag} + \end{figure} +} +{ +} + +We can now look at each of these base component failure modes, +and determine how they will affect the operation of the potential divider. +%Each failure mode scenario we look at will be given a test case number, +%which is represented on the diagram, with an asterisk marking +%which failure modes is modelling (see figure \ref{fig:fg1a}). + +\ifthenelse {\boolean{pld}} +{ +Each labelled asterisk in the diagram represents a failure mode scenario. +The failure mode scenarios are given test case numbers, and an example to clarify this follows +in table~\ref{pdfmea}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1a.png} + % fg1a.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider with test cases} + \label{fig:fg1a} +\end{figure} +} +{ +} + + +\ifthenelse {\boolean{dag}} +{ +For this example we can look at single failure modes only. +For each failure mode in our {\fg} `potential~divider' +we can assign a test case number (see table \ref{pdfmea}). +Each test case is analysed to determine the `symptom' +on the potential dividers' operation. For instance +were the resistor $R_1$ to go open, the circuit would not be grounded and the +voltage output from it would be the +ve supply rail. +This would mean the symptom of the failed potential divider, would be that it +gives an output high voltage reading. We can now consider the {\fg} +as a component in its own right, and its symptoms as its failure modes. + +From table \ref{pdfmea} we can see that resistor +failures modes lead to common symptoms. +By drawing connecting lines in the graph +we can represent them. +The {\fg} can now be considered a derived component. +This is represented in the DAG in figure \ref{fig:fg1adag}. + +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (R1) at (0,-4) {$R_1$}; + \node[component] (R2) at (0,-6) {$R_2$}; + + \node[failure] (R1SHORT) at (\layersep,-2) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-4) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-6) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-8) {$R2_{OPEN}$}; + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-4) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-6) {$PD_{LOW}$}; + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + \end{tikzpicture} + + \caption{Failure symptoms of the `Potential Divider'} + \label{fig:fg1adag} + \end{figure} +} +{ +} + +\begin{table}[ht] +\caption{Potential Divider: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Pot.Div} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $R_1$ SHORT & LOW & & LowPD \\ + TC2: $R_1$ OPEN & HIGH & & HighPD \\ \hline + TC3: $R_2$ SHORT & HIGH & & HighPD \\ + TC4: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{pdfmea} +\end{table} + +\ifthenelse {\boolean{pld}} +{ +We can now collect the symptoms of failure. From the four base component failure modes, we now +have two symptoms, where the potential divider will give an incorrect low voltage (which we can term $LowPD$) +or an incorrect high voltage (which we can term $HighPD$). +We can represent the collection of these symptoms by drawing connecting lines between +the test cases and naming them (see figure \ref{fig:fg1b}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1b.png} + % fg1b.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{Collection of potential divider failure mode symptoms} + \label{fig:fg1b} +\end{figure} +%\clearpage + +We can now make a `derived component' to represent this potential divider. +This can be named \textbf{PD}. +This {\dc} will have two failure modes. +We can use the symbol $\bowtie$ to represent taking the analysed +{\fg} and creating from it, a {\dc}. + +%We could represent it algebraically thus: $ \bowtie(PotDiv) = +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/dc1.png} + % dc1.jpg: 430x619 pixel, 72dpi, 15.17x21.84 cm, bb=0 0 430 619 + \caption{From functional group to derived component} + \label{fig:dc1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now represent the potential divider as a {\dc}. +Because have its symptoms or failure mode behaviour, +we can treat these as the failure modes of a a new {\dc}. +We can represent it now as a DAG (see \ref{fig:dc1dag}). + +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + \node[component] (PD) at (0,-3) {$PD$}; + \node[symptom] (PDHIGH) at (\layersep,-2) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep,-4) {$PD_{LOW}$}; + \path (PD) edge (PDHIGH); + \path (PD) edge (PDLOW); + \end{tikzpicture} + \caption{DAG representing a Potential Divider (PD) its failure symptoms} + \label{fig:dc1dag} + \end{figure} + +} +{ +} + + +Because the derived component is defined by its failure modes and +the functional group used to derive it, we can use it +as a building block for other {\fgs} in the same way as we used the resistors $R1$ and $R2$. + +\clearpage + +\section{Failure Mode Analysis of the OP-AMP} + +Let use now consider the op-amp. According to +FMD-91~\cite{fmd91}[3-116] an op amp may have the following failure modes: +latchup(12.5\%), latchdown(6\%), nooperation(31.3\%), lowslewrate(50\%). + + + +\ifthenelse {\boolean{pld}} +{ +We can represent these failure modes on a diagram (see figure~\ref{fig:op1}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/op1.png} + % op1.jpg: 406x221 pixel, 72dpi, 14.32x7.80 cm, bb=0 0 406 221 + \caption{Op Amp failure modes} + \label{fig:op1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can represent these failure modes on a DAG (see figure~\ref{fig:op1dag}). +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + \path (OPAMP) edge (OPAMPLS); + + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes of an Op-amp} + \label{fig:op1dag} + \end{figure} + +} +{ +} + +%\clearpage + +\section{Bringing the OP amp and the potential divider together} + +We can now consider bringing the OP amp and the potential divider together to +model the non inverting amplifier. We have the failure modes of the functional group for the potential divider, +so we do not need to consider the individual resistor failure modes that define its behaviour. +We can make a new functional group to represent the amplifier, by bringing the component \textbf{opamp} +and the component potential divider \textbf{PD} into a new functional group. + +\ifthenelse {\boolean{pld}} +{ +This functional group has the failure modes from the op-amp component, and the failure modes +from the potential divider {\dc}, represented by figure~\ref{fig:fgamp}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fgamp.png} + % fgamp.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 + \caption{Amplifier Functional Group} + \label{fig:fgamp} +\end{figure} + +We can now place test cases on this (note this analysis considers single failure modes only +where we want to model multiple failures, we can over lap contours, and place the test cases in overlapping +regions) see figure~\ref{fig:fgampa}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fgampa.png} + % fgampa.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 hno + \caption{Amplifier Functional Group with Test Cases} + \label{fig:fgampa} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now represent the {\fg} for the non-inverting amplifier +by bringing together the failure modes from \textbf{opamp} and \textbf{PD}. +Each of these failure modes will be given a test case for analysis, +and this is represented in table \ref{ampfmea}. + +} +{ +} + +\clearpage + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Amplifier} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $OPAMP$ LatchUP & Output High & & AMPHigh \\ + TC2: $OPAMP$ LatchDown & Output Low : Low gain& & AMPLow \\ \hline + TC3: $OPAMP$ No Operation & Output Low & & AMPLow \\ + TC4: $OPAMP$ Low Slew & Low pass filtering & & LowPass \\ \hline + TC5: $PD$ LowPD & Output High & & AMPHigh \\ \hline + TC6: $PD$ HighPD & Output Low : Low Gain& & AMPLow \\ \hline + %TC7: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + + +Let us consider, for the sake of example, that the voltage follower (very low gain of 1.0) +amplification chracteristics from +TC2 and TC6 can be considered as low output from the OPAMP for the application +in hand (say milli-volt signal amplification). + +For this amplifier configuration we have three failure modes, $AMPHigh, AMPLow, LowPass$.%see figure~\ref{fig:fgampb}. +\ifthenelse {\boolean{pld}} +{ +We can now derive a `component' to represent this amplifier configuration (see figure ~\ref{fig:noninvampa}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/noninvampa.png} + % noninvampa.jpg: 436x720 pixel, 72dpi, 15.38x25.40 cm, bb=0 0 436 720 + \caption{Non Inverting Amplifier Derived Component} + \label{fig:noninvampa} +\end{figure} +} +{ +} + + +\ifthenelse {\boolean{dag}} +{ + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + \path (OPAMP) edge (OPAMPLS); + + + \node[component] (PD) at (0,-9) {$PD$}; + \node[symptom] (PDHIGH) at (\layersep,-8) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep,-10) {$PD_{LOW}$}; + \path (PD) edge (PDHIGH); + \path (PD) edge (PDLOW); + + \node[symptom] (AMPHIGH) at (\layersep*4,-3) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-5) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-7) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + \path (OPAMPLS) edge (AMPLP); + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag0} + \end{figure} +} +{ +} + + +%failure mode contours). +%\clearpage +\clearpage +\section{Failure Modes from non inverting amplifier as a Directed Acyclic Graph (DAG)} +\ifthenelse {\boolean{pld}} +{ +We can now represent the FMMD analysis as a directed graph, see figure \ref{fig:noninvdag0}. +With the information structured in this way, we can trace the high level failure mode symptoms +back to their potential causes. +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now expand the $PD$ {\dc} and now have a full FMMD failure mode model +drawn as a DAG, which we can use to traverse to determine the possible causes to +the three high level symptoms, or failure~modes of the non-inverting amplifier. +Figure \ref{fig:noninvdag0} shows a fully expanded DAG, from which we can derive information +to assist in building models for FTA, FMEA, FMECA and FMEDA failure mode analysis methodologies. +} +{ +} + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + % Draw the input layer nodes + %\foreach \name / \y in {1,...,4} + % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4} + % \node[component, pin=left:Input \#\y] (I-\name) at (0,-\y) {}; + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[component] (R1) at (0,-9) {$R_1$}; + \node[component] (R2) at (0,-13) {$R_2$}; + + %\node[component] (C-3) at (0,-5) {$C^0_3$}; + %\node[component] (K-4) at (0,-8) {$K^0_4$}; + %\node[component] (C-5) at (0,-10) {$C^0_5$}; + %\node[component] (C-6) at (0,-12) {$C^0_6$}; + %\node[component] (K-7) at (0,-15) {$K^0_7$}; + + % Draw the hidden layer nodes + %\foreach \name / \y in {1,...,5} + % \path[yshift=0.5cm] + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \node[failure] (R1SHORT) at (\layersep,-9) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-11) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-13) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-15) {$R2_{OPEN}$}; + + + + % Draw the output layer node + +% % Connect every node in the input layer with every node in the +% % hidden layer. +% %\foreach \source in {1,...,4} +% % \foreach \dest in {1,...,5} + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); +\path (OPAMP) edge (OPAMPLS); + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-11) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-13) {$PD_{LOW}$}; + + + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + + + \node[symptom] (AMPHIGH) at (\layersep*4,-6) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-8) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-10) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + + \path (OPAMPLS) edge (AMPLP); +% %\node[symptom,pin={[pin edge={->}]right:Output}, right of=C-1a] (O) {}; +% \node[symptom, right of=C-1a] (s1) {s1}; +% \node[symptom, right of=C-2a] (s2) {s2}; +% +% +% +% \path (C-2b) edge (s1); +% \path (C-1a) edge (s1); +% +% \path (C-2a) edge (s2); +% \path (C-1b) edge (s2); +% +% %\node[component, right of=s1] (DC) {$C^1_1$}; +% +% %\path (s1) edge (DC); +% %\path (s2) edge (DC); +% +% +% +% % Connect every node in the hidden layer with the output layer +% %\foreach \source in {1,...,5} +% % \path (H-\source) edge (O); +% +% % Annotate the layers +% \node[annot,above of=C-1a, node distanc +e=1cm] (hl) {Failure modes}; +% \node[annot,left of=hl] {Base Components}; +% \node[annot,right of=hl](s) {Symptoms}; + %\node[annot,right of=s](dcl) {Derived Component}; + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag0} + \end{figure} + + + + + +\section{Extracting Fault Trees from the DAG} + +We can derive an FTA~\cite{nucfta}~\cite{nasafta} diagram for a top level event, by tracing back through the DAG. +Where we come to a node with more than one error source, this becomes an xor gate +in the FTA diagram. Tracing back from the top level event $AMP Low$ we are lead to +the $OPAMP latch down$ and $OP amp Noop$. These two events can cause the symptom $AMP Low$. +We can also trace back down to the symptom $PD High$. Thus we have three +possible cause for $AMP LOW$, and so we can draw a three input +`xor' gate below $AMP Low$, to which $OPAMP latch down$, $OP amp Noop$ and $PD High$ +connect to from below\footnote{XOR is used here, because we are considering single failures only. +This is a weakness in FTA diagrams, as it is clumsy to represent +conjunction and dis-junction sourced from the same failure modes. +For instance, for $AMP_{low}$ to use an OR gate, would saying that all elements of the powerset of +$\{ OPAMP_{latch down}, OPAMP_{noop}, PD_{high}\}$ will cause the symptom $AMP_{low}$. +Were $PD_{high} \wedge OPAMP_{noop}$ to be true, the output +would be floating and this would be a new failure mode to consider. +So for the example of $AMP_{low}$ using OR as opposed to an XOR gate would be a mistake. +% FTA OR TRAP.... OR IS MORE WORK THEN YOU INITIALLY THINK.... +}. +$OPAMP latch down$ and $OP amp Noop$ are base level or component events, and so we cannot +trace them down any further. +$PD High$ is a symptom, and can be traced further. +$PD High$ can occur by either event $R1_{open}$ or $R2_{short}$. +We can place an or gate below $PD High$ and connect the events $R1_{open}$ or $R2_{short}$ +to it. +The FTA diagram directly derived from the FMMD DAG is shown in figure \ref{fig:noninvfta}. + +\begin{figure} +\begin{tikzpicture}[ +% Gates and symbols style + and/.style={and gate US,thick,draw,fill=blue!40,rotate=90, + anchor=east,xshift=-1mm}, + or/.style={xor gate US,thick,draw,fill=blue!40,rotate=90, + anchor=east,xshift=-1mm}, + be/.style={circle,thick,draw,fill=white!60,anchor=north, + minimum width=0.7cm}, + tr/.style={buffer gate US,thick,draw,fill=white!60,rotate=90, + anchor=east,minimum width=0.8cm}, +% Label style + label distance=3mm, + every label/.style={blue}, +% Event style + event/.style={rectangle,thick,draw,fill=yellow!20,text width=2cm, + text centered,font=\sffamily,anchor=north}, +% Children and edges style + edge from parent/.style={very thick,draw=black!70}, + edge from parent path={(\tikzparentnode.south) -- ++(0,-1.05cm) + -| (\tikzchildnode.north)}, + level 1/.style={sibling distance=7cm,level distance=1.4cm, + growth parent anchor=south,nodes=event}, + level 2/.style={sibling distance=7cm}, + level 3/.style={sibling distance=6cm}, + level 4/.style={sibling distance=3cm} +%% For compatability with PGF CVS add the absolute option: +% absolute + ] +%% Draw events and edges + %\node (g1) [event] {AMP Low} +% +% child { node (g1) { triple or gate } +% +% child { node (PDHigh) { double or gate } +% child { node (g2) {G02} { +% child {node (r1o) {$R1_{open}$}} +% child {node (r2s) {$R2_{short}$}} +% } +% } +% } +% child {node (opld) {opamp latch down}} +% child {node (opnp) {opamp noop}} +% +% }; + + \node (g1) [event] {amp low} + + child { + node (g2) {op amp output voltage low} + child {node + (t1) {pd high} + child { node (g4) {potential divider voltage high} + child {node (b1) {r1 open}} + child {node (b2) {r2 short}} + } + %child { node (g5) {No flow from Component A2} + % child {node (t2) {No flow from source2}} + % child {node (b3) {Component A2 blocks flow}} + %} + } + child {node (b3) {OP amp latch dn}} + child {node (b4) {OP amp no op}} + }; + +%% Place gates and other symbols +%% In the CVS version of PGF labels are placed differently than in PGF 2.0 +%% To render them correctly replace '-20' with 'right' and add the 'absolute' +%% option to the tikzpicture environment. The absolute option makes the +%% node labels ignore the rotation of the parent node. + %\node [or] at (g1.south) [label=-20:G01] {}; + \node [or] at (g2.south) [label=-20:G01] {}; + \node [or] at (g4.south) [label=-20:G02] {}; +% \node [and] at (g3.south) [label=-20:G03] {}; +% \node [or] at (g4.south) [label=-20:G04] {}; +% \node [or] at (g5.south) [label=-20:G05] {}; + \node [be] at (b1.south) [label=below:B01] {}; + \node [be] at (b2.south) [label=below:B02] {}; + \node [be] at (b3.south) [label=below:B03] {}; + \node [be] at (b4.south) [label=below:B04] {}; +% \node [tr] at (t1.south) [label=below:T01] {}; +% \node [tr] at (t2.south) [label=below:T02] {}; +%% + +\end{tikzpicture} +\label{fig:noninvfta} +\caption{Example FTA Derived from the DAG for symptom `Amp Low'} +\end{figure} + + + + +\subsection{Information missing in FTA} + + +to expand: Each FTA deals only with one symptom. + +\subsubsection{Further refinements} + +to expand: Cuts sets and minimal cut sets. + + +\clearpage +\section{Assisting FMEA reports from the DAG} + + +A design FMEA, or potential failure mode and effects analysis +will typically require the designer to look at the possible effects +of all the component failure modes in the system under investigation. + + +FMEA uses the terms `potential causes' and `potential failure modes'. +In an FMMD sense, the `potential causes' are component level failure modes +and the `potential failure modes' are top-level symptoms. + +\ifthenelse {\boolean{paper}} +{ +%FMEA - brief description for paper... +Design FMEA is methodology for assessing potential reliability/dangerous conditions early +in the development cycle. +FMEA is used to identify potential failure modes, +determine their effect on the operation of the product, +and identify actions to mitigate the failures. +FMEA relies anticipating what {\em might} go wrong with a product. +While anticipating every failure mode is not possible, a development team should +collate as complete a list of potential failure modes as possible. + +With an FMMD sourced failure mode to symptom mapping, this +list should be more complete. It will for instance include +not only an entry every component failure mode, but has a formal +reasoning process behind it, which leads to the symptom. +} +{ +See section \ref{pfmea} for an overview of FMEA. +FMEA relies anticipating what {\em might} go wrong with a product. +While anticipating every failure mode is not possible, a development team should +collate as complete a list of potential failure modes as possible. +With an FMMD sourced failure mode to symptom mapping, this +list should be more complete. + +It will for instance include +not only an entry every component failure mode, but has a formal +reasoning process behind it, which leads to the symptom. + +} +We have from the DAG model, a direct path from each component failure +mode to top-level symptoms. This allows us to partially fill in +the FMEA report. The detectability and severity of the symptom +are subjective. Given component failure rates, the probability +of the the potential cause occurring can be calculated, given suitable +component failure mode statistical references (e.g. FMD-91~\cite{fmd91} and MIL1991~\cite{mil1991}). + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for center +ing table +\begin{tabular}{||l|l|c|l|c|c|c||} +\hline \hline + \textbf{Item} & \textbf{Potential Failure} & \textbf{ Sev } & \textbf{Potential} & \textbf{prob} & \textbf{det} & \textbf{RPN} \\ + \textbf{Function} & \textbf{mode} & \textbf{ /cost }& \textbf{Cause} & \textbf{/occ } & \textbf{} & \\\hline +\hline + Non Inverting & $AMP_{high}$ & & $R1_{short} $ & & & \\ + Amplifier & $AMP_{low}$ & & $R1_{open} $ & & & \\ + Circuit & $AMP_{low}$ & & $R2_{short} $ & & & \\ + & $AMP_{high}$ & & $R2_{open}$ & & & \\ + + & $AMP_{lowpass}$ & & $OPAMP_{lowslew}$ & & & \\ + & $AMP_{low}$ & & $OPAMP_{latchdown}$ & & & \\ + & $AMP_{high}$ & & $OPAMP_{latchup}$ & & & \\ + & $AMP_{low}$ & & $OPAMP_{noop} $ & & & \\ + + +\hline +\hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + + +With the partially filled in table the FMEA report only now needs the severity/cost, +probability/occurrence and detectability fields filled in to obtain the +$RPN$ numbers that define the order of importance of failure modes in FMEA. + +\subsection{Information missing in FMEA} + +to expand: Each FMEA looses the reasoning in the FMMD Hierarchy/DAG for linking +the symptoms to the potential causes. +FMEA can miss symptoms especially where a component failure mode may cause more than one top-level symptom. + + +Work out the alpha and beta values !!! + +\section{Extracting FMEDA from the DAG} + +\section{Conclusion} + +We now have a derived component that represents the failure modes of a non-inverting +op-amp based amplifier. We can now use this to model higher level designs, where we have systems +that use this type of amplifier. +If failure mode/reliability statistics were required these could be derived +from the model, as each failure mode of the derived component +is traceable to one or more base component failure mode causes, for which established +statistical literature is available ~\cite{mil1991}~\cite{fmd91}. +Software used to edit these diagrams, keeps the model in a directed acyclic graph data structure +for this purpose. + +\clearpage +%\end{document} \ No newline at end of file diff --git a/opamp/noninvopamp.tex.backup b/opamp/noninvopamp.tex.backup new file mode 100644 index 0000000..2a77ba0 --- /dev/null +++ b/opamp/noninvopamp.tex.backup @@ -0,0 +1,1033 @@ + +\label{lab:nonivopamp} + +\ifthenelse {\boolean{paper}} +{ +\abstract{ +This paper analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp. + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can now create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can be analysed and a derived component to represent the non inverting +amplifier determined. +} +\section{Introduction} +} +{ +This chapter analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp.\section{Introduction} + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can now be analysed and a derived component to represent the non inverting +amplifier determined. +\section{Introduction: The non-inverting amplifier} +} + + + +A standard non inverting op amp (from ``The Art of Electronics'' ~\cite{aoe}[pp.234]) is shown in figure \ref{fig:noninvamp}. + + +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/noninv.png} + % noninv.jpg: 341x186 pixel, 72dpi, 12.03x6.56 cm, bb=0 0 341 186 + \caption{Standard non inverting amplifier configuration} + \label{fig:noninvamp} +\end{figure} + + + +The function of the resistors in this circuit is to set the amplifier gain. +They operate as a potential divider and program the minus input on the op-amp +to balance them against the positive input, giving the voltage gain ($G_v$) +defined by $ G_v = 1 + \frac{R2}{R1} $ at the output. + + + + +A functional group, is an ideally small in number collection of components, +that interact to provide +a function or task within a system. +As the resistors work to provide a specific function, that of a potential divider, +we can treat them as a functional group. This functional group has two members, $R1$ and $R2$. +Using the EN298 specification for resistor failure ~\cite{en298}[App.A] +we can assign failure modes of $OPEN$ and $SHORT$ to the resistors. +\ifthenelse {\boolean{dag}} +{ +We can now represent a resistor in terms of its failure modes as a directed acyclic graph (DAG) +(see figure \ref{fig:rdag}). +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + \node[component] (R) at (0,-3) {$R$}; + \node[failure] (RSHORT) at (\layersep,-2) {$R_{SHORT}$}; + \node[failure] (ROPEN) at (\layersep,-4) {$R_{OPEN}$}; + \path (R) edge (RSHORT); + \path (R) edge (ROPEN); + \end{tikzpicture} + \caption{DAG representing a reistor and its failure modes} + \label{fig:rdag} + \end{figure} +} +{ +} +Thus $R1$ has failure modes $\{R1\_OPEN, R1\_SHORT\}$ and $R2$ has failure modes $\{R2\_OPEN, R2\_SHORT\}$. + + +%\clearpage +\section{Failure Mode Analysis of the Potential Divider} + +\ifthenelse {\boolean{pld}} +{ +Modelling this as a functional group, we can draw a simple closed curve +to represent each failure mode, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1}. +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1.png} + % fg1.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider `functional group' failure modes} + \label{fig:fg1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +Modelling this as a functional group, we can draw this as a directed graph +failure modes, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1dag}. +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (R1) at (0,-4) {$R_1$}; + \node[component] (R2) at (0,-6) {$R_2$}; + + \node[failure] (R1SHORT) at (\layersep,-2) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-4) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-6) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-8) {$R2_{OPEN}$}; + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + % Potential divider failure modes + % + %\node[symptom] (PDHIGH) at (\layersep*2,-4) {$PD_{HIGH}$}; + %\node[symptom] (PDLOW) at (\layersep*2,-6) {$PD_{LOW}$}; + + %\path (R1OPEN) edge (PDHIGH); + %\path (R2SHORT) edge (PDHIGH); + + %\path (R2OPEN) edge (PDLOW); + %\path (R1SHORT) edge (PDLOW); + + \end{tikzpicture} + + \caption{DAG representing the functional group `Potential Divider'} + \label{fig:fg1dag} + \end{figure} +} +{ +} + +We can now look at each of these base component failure modes, +and determine how they will affect the operation of the potential divider. +%Each failure mode scenario we look at will be given a test case number, +%which is represented on the diagram, with an asterisk marking +%which failure modes is modelling (see figure \ref{fig:fg1a}). + +\ifthenelse {\boolean{pld}} +{ +Each labelled asterisk in the diagram represents a failure mode scenario. +The failure mode scenarios are given test case numbers, and an example to clarify this follows +in table~\ref{pdfmea}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1a.png} + % fg1a.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider with test cases} + \label{fig:fg1a} +\end{figure} +} +{ +} + + +\ifthenelse {\boolean{dag}} +{ +For this example we can look at single failure modes only. +For each failure mode in our {\fg} `potential~divider' +we can assign a test case number (see table \ref{pdfmea}). +Each test case is analysed to determine the `symptom' +on the potential dividers' operation. For instance +were the resistor $R_1$ to go open, the circuit would not be grounded and the +voltage output from it would be the +ve supply rail. +This would mean the symptom of the failed potential divider, would be that it +gives an output high voltage reading. We can now consider the {\fg} +as a component in its own right, and its symptoms as its failure modes. + +From table \ref{pdfmea} we can see that resistor +failures modes lead to some common `symptoms'. +By drawing connecting lines in a graph, from the failure modes to the symptoms +we can show the relationships between the component failure modes and resultant symptoms. +%The {\fg} can now be considered a derived component. +This is represented in the DAG in figure \ref{fig:fg1adag}. + +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (R1) at (0,-4) {$R_1$}; + \node[component] (R2) at (0,-6) {$R_2$}; + + \node[failure] (R1SHORT) at (\layersep,-2) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-4) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-6) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-8) {$R2_{OPEN}$}; + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-4) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-6) {$PD_{LOW}$}; + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + \end{tikzpicture} + + \caption{Failure symptoms of the `Potential Divider'} + \label{fig:fg1adag} + \end{figure} +} +{ +} + +\begin{table}[ht] +\caption{Potential Divider: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Pot.Div} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $R_1$ SHORT & LOW & & LowPD \\ + TC2: $R_1$ OPEN & HIGH & & HighPD \\ \hline + TC3: $R_2$ SHORT & HIGH & & HighPD \\ + TC4: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{pdfmea} +\end{table} + +\ifthenelse {\boolean{pld}} +{ +We can now collect the symptoms of failure. From the four base component failure modes, we now +have two symptoms, where the potential divider will give an incorrect low voltage (which we can term $LowPD$) +or an incorrect high voltage (which we can term $HighPD$). +We can represent the collection of these symptoms by drawing connecting lines between +the test cases and naming them (see figure \ref{fig:fg1b}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fg1b.png} + % fg1b.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{Collection of potential divider failure mode symptoms} + \label{fig:fg1b} +\end{figure} +%\clearpage + +We can now make a `derived component' to represent this potential divider. +This can be named \textbf{PD}. +This {\dc} will have two failure modes. +We can use the symbol $\bowtie$ to represent taking the analysed +{\fg} and creating from it, a {\dc}. + +%We could represent it algebraically thus: $ \bowtie(PotDiv) = +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/dc1.png} + % dc1.jpg: 430x619 pixel, 72dpi, 15.17x21.84 cm, bb=0 0 430 619 + \caption{From functional group to derived component} + \label{fig:dc1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now represent the potential divider as a {\dc}. +Because have its symptoms or failure mode behaviour, +we can treat these as the failure modes of a a new {\dc}. +We can represent that as a DAG (see figure \ref{fig:dc1dag}). + +\begin{figure}[h+] + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + \node[component] (PD) at (0,-3) {$PD$}; + \node[symptom] (PDHIGH) at (\layersep,-2) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep,-4) {$PD_{LOW}$}; + \path (PD) edge (PDHIGH); + \path (PD) edge (PDLOW); + \end{tikzpicture} + \caption{DAG representing a Potential Divider (PD) its failure symptoms} + \label{fig:dc1dag} + \end{figure} + +} +{ +} + + +Because the derived component is defined by its failure modes and +the functional group used to derive it, we can use it +as a building block for other {\fgs} in the same way as we used the resistors $R1$ and $R2$. + +\clearpage + +\section{Failure Mode Analysis of the OP-AMP} + +Let use now consider the op-amp. According to +FMD-91~\cite{fmd91}[3-116] an op amp may have the following failure modes: +latchup(12.5\%), latchdown(6\%), nooperation(31.3\%), lowslewrate(50\%). + + + +\ifthenelse {\boolean{pld}} +{ +We can represent these failure modes on a diagram (see figure~\ref{fig:op1}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/op1.png} + % op1.jpg: 406x221 pixel, 72dpi, 14.32x7.80 cm, bb=0 0 406 221 + \caption{Op Amp failure modes} + \label{fig:op1} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can represent these failure modes on a DAG (see figure~\ref{fig:op1dag}). +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + \path (OPAMP) edge (OPAMPLS); + + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes of an Op-amp} + \label{fig:op1dag} + \end{figure} + +} +{ +} + +%\clearpage + +\section{Bringing the OP amp and the potential divider together} + +We can now consider bringing the OP amp and the potential divider together to +model the non inverting amplifier. We have the failure modes of the functional group for the potential divider, +so we do not need to consider the individual resistor failure modes that define its behaviour. +\ifthenelse {\boolean{pld}} +{ +We can make a new functional group to represent the amplifier, by bringing the component \textbf{opamp} +and the component potential divider \textbf{PD} into a new functional group. +This functional group has the failure modes from the op-amp component, and the failure modes +from the potential divider {\dc}, represented by figure~\ref{fig:fgamp}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fgamp.png} + % fgamp.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 + \caption{Amplifier Functional Group} + \label{fig:fgamp} +\end{figure} + +We can now place test cases on this (note this analysis considers single failure modes only +where we want to model multiple failures, we can over lap contours, and place the test cases in overlapping +regions) see figure~\ref{fig:fgampa}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/fgampa.png} + % fgampa.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 hno + \caption{Amplifier Functional Group with Test Cases} + \label{fig:fgampa} +\end{figure} +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now crate a {\fg} for the non-inverting amplifier +by bringing together the failure modes from \textbf{opamp} and \textbf{PD}. +Each of these failure modes will be given a test case for analysis, +and this is represented in table \ref{ampfmea}. + +} +{ +} + +\clearpage + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Amplifier} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $OPAMP$ LatchUP & Output High & & AMPHigh \\ + TC2: $OPAMP$ LatchDown & Output Low : Low gain& & AMPLow \\ \hline + TC3: $OPAMP$ No Operation & Output Low & & AMPLow \\ + TC4: $OPAMP$ Low Slew & Low pass filtering & & LowPass \\ \hline + TC5: $PD$ LowPD & Output High & & AMPHigh \\ \hline + TC6: $PD$ HighPD & Output Low : Low Gain& & AMPLow \\ \hline + %TC7: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + + +Let us consider, for the sake of example, that the voltage follower (very low gain of 1.0) +amplification chracteristics from +TC2 and TC6 can be considered as low output from the OPAMP for the application +in hand (say milli-volt signal amplification). + +For this amplifier configuration we have three failure modes, $AMPHigh, AMPLow, LowPass$.%see figure~\ref{fig:fgampb}. +\ifthenelse {\boolean{pld}} +{ +We can now derive a `component' to represent this amplifier configuration (see figure ~\ref{fig:noninvampa}). +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvopamp/noninvampa.png} + % noninvampa.jpg: 436x720 pixel, 72dpi, 15.38x25.40 cm, bb=0 0 436 720 + \caption{Non Inverting Amplifier Derived Component} + \label{fig:noninvampa} +\end{figure} +} +{ +} + + +\ifthenelse {\boolean{dag}} +{ + +%% text for figure below + +The non-inverting amplifier can be drawn as a DAG using the +results from table~\ref{ampfmea} (see~figure~\ref{fig:noninvdag0}). +Note that the potential divider, $PD$, is treated as a component with a set of failure modes, +and its error sources and analysis have been hidden in this diagram. +$PD$ is considered to be a {\dc}. + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + \path (OPAMP) edge (OPAMPLS); + + + \node[component] (PD) at (0,-9) {$PD$}; + \node[symptom] (PDHIGH) at (\layersep,-8) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep,-10) {$PD_{LOW}$}; + \path (PD) edge (PDHIGH); + \path (PD) edge (PDLOW); + + \node[symptom] (AMPHIGH) at (\layersep*4,-3) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-5) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-7) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + \path (OPAMPLS) edge (AMPLP); + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag0} + \end{figure} +} +{ +} + + +%failure mode contours). +%\clearpage +\clearpage +\section{Failure Modes from non inverting amplifier as a Directed Acyclic Graph (DAG)} +\ifthenelse {\boolean{pld}} +{ +We can now represent the FMMD analysis as a directed graph, see figure \ref{fig:noninvdag1}. +With the information structured in this way, we can trace the high level failure mode symptoms +back to their potential causes. +} +{ +} + +\ifthenelse {\boolean{dag}} +{ +We can now expand the $PD$ {\dc} and now have a full FMMD failure mode model +drawn as a DAG, which we can use to traverse to determine the possible causes to +the three high level symptoms, or failure~modes of the non-inverting amplifier. +Figure \ref{fig:noninvdag1} shows a fully expanded DAG, from which we can derive information +to assist in building models for FTA, FMEA, FMECA and FMEDA failure mode analysis methodologies. +} +{ +} + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=30pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + % Draw the input layer nodes + %\foreach \name / \y in {1,...,4} + % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4} + % \node[component, pin=left:Input \#\y] (I-\name) at (0,-\y) {}; + + \node[component] (OPAMP) at (0,-4) {$OPAMP$}; + \node[component] (R1) at (0,-9) {$R_1$}; + \node[component] (R2) at (0,-13) {$R_2$}; + + %\node[component] (C-3) at (0,-5) {$C^0_3$}; + %\node[component] (K-4) at (0,-8) {$K^0_4$}; + %\node[component] (C-5) at (0,-10) {$C^0_5$}; + %\node[component] (C-6) at (0,-12) {$C^0_6$}; + %\node[component] (K-7) at (0,-15) {$K^0_7$}; + + % Draw the hidden layer nodes + %\foreach \name / \y in {1,...,5} + % \path[yshift=0.5cm] + + \node[failure] (OPAMPLU) at (\layersep,-0) {latchup}; + \node[failure] (OPAMPLD) at (\layersep,-2) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep,-4) {noop}; + \node[failure] (OPAMPLS) at (\layersep,-6) {lowslew}; + + \node[failure] (R1SHORT) at (\layersep,-9) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-11) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-13) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-15) {$R2_{OPEN}$}; + + + + % Draw the output layer node + +% % Connect every node in the input layer with every node in the +% % hidden layer. +% %\foreach \source in {1,...,4} +% % \foreach \dest in {1,...,5} + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); +\path (OPAMP) edge (OPAMPLS); + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-11) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-13) {$PD_{LOW}$}; + + + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + + + \node[symptom] (AMPHIGH) at (\layersep*4,-6) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*4,-8) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*4,-10) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + + \path (OPAMPLS) edge (AMPLP); +% %\node[symptom,pin={[pin edge={->}]right:Output}, right of=C-1a] (O) {}; +% \node[symptom, right of=C-1a] (s1) {s1}; +% \node[symptom, right of=C-2a] (s2) {s2}; +% +% +% +% \path (C-2b) edge (s1); +% \path (C-1a) edge (s1); +% +% \path (C-2a) edge (s2); +% \path (C-1b) edge (s2); +% +% %\node[component, right of=s1] (DC) {$C^1_1$}; +% +% %\path (s1) edge (DC); +% %\path (s2) edge (DC); +% +% +% +% % Connect every node in the hidden layer with the output layer +% %\foreach \source in {1,...,5} +% % \path (H-\source) edge (O); +% +% % Annotate the layers +% \node[annot,above of=C-1a, node distance=1cm] (hl) {Failure modes}; +% \node[annot,left of=hl] {Base Components}; +% \node[annot,right of=hl](s) {Symptoms}; + %\node[annot,right of=s](dcl) {Derived Component}; + \end{tikzpicture} + % End of code + \caption{Full DAG representing failure modes and symptoms of the Non Inverting Op-amp Circuit} + \label{fig:noninvdag1} + \end{figure} + + + +\section{Deriving FTA, FMEA, FMECA and FMEDA models from the DAG} + +The example here is very low level, or in other words is a very sysple sub-system. +The FTA, FMEA, FMECA and FMEDA would normally be applied to a very large +safety critical system (i.e. a car or a steam producing boiler plant). +Th examples here show how the DAG provides a frame work for +producing skeleton data forms for all these methodologies. + + +\section{Extracting Fault Trees from the DAG} + +We can derive an FTA~\cite{nucfta}~\cite{nasafta} diagram for a top level event, by tracing back through the DAG. +Where we come to a node with more than one error source, this becomes an `xor' gate +in the FTA diagram. Tracing back from the top level event $AMP_{low}$ we are lead to +the $OPAMP_{latchdown}$ and $OPAMP_{noop}$. These two events can cause the symptom $AMP_{low}$. +We can also trace back down to the symptom $PD_{high}$. Thus we have three +possible cause for $AMP_{low}$, and so we can draw a three input +`xor' gate below $AMP_{low}$, to which $OPAMP_{latchdown}$, $OPAMP_{noop}$ and $PD_{high}$ +connect to from below\footnote{XOR is used here, because we have analysed for single failures only.} +%This is a weakness in FTA diagrams, as it is clumsy to represent +%conjunction and dis-junction sourced from the same failure modes}. +$OPAMP_{latchdown}$ and $OPAMP_{noop}$ are base level or component events, and so we cannot +trace them down any further. +$PD_{high}$ is a symptom, and can be traced further. +$PD_{high}$ can occur by either event $R1_{open}$ or $R2_{short}$. +We can place an xor gate below $PD_{high}$ and connect the events $R1_{open}$ or $R2_{short}$ +to it. +The FTA diagram directly derived from the FMMD DAG is shown in figure \ref{fig:noninvfta}. + +\begin{figure} +\begin{tikzpicture}[ +% Gates and symbols style + and/.style={and gate US,thick,draw,fill=blue!40,rotate=90, + anchor=east,xshift=-1mm}, + or/.style={xor gate US,thick,draw,fill=blue!40,rotate=90, + anchor=east,xshift=-1mm}, + be/.style={circle,thick,draw,fill=white!60,anchor=north, + minimum width=0.7cm}, + tr/.style={buffer gate US,thick,draw,fill=white!60,rotate=90, + anchor=east,minimum width=0.8cm}, +% Label style + label distance=3mm, + every label/.style={blue}, +% Event style + event/.style={rectangle,thick,draw,fill=yellow!20,text width=2cm, + text centered,font=\sffamily,anchor=north}, +% Children and edges style + edge from parent/.style={very thick,draw=black!70}, + edge from parent path={(\tikzparentnode.south) -- ++(0,-1.05cm) + -| (\tikzchildnode.north)}, + level 1/.style={sibling distance=7cm,level distance=1.4cm, + growth parent anchor=south,nodes=event}, + level 2/.style={sibling distance=7cm}, + level 3/.style={sibling distance=6cm}, + level 4/.style={sibling distance=3cm} +%% For compatability with PGF CVS add the absolute option: +% absolute + ] +%% Draw events and edges + %\node (g1) [event] {AMP Low} +% +% child { node (g1) { triple or gate } +% +% child { node (PDHigh) { double or gate } +% child { node (g2) {G02} { +% child {node (r1o) {$R1_{open}$}} +% child {node (r2s) {$R2_{short}$}} +% } +% } +% } +% child {node (opld) {opamp latch down}} +% child {node (opnp) {opamp noop}} +% +% }; + + \node (g1) [event] {amp low} + + child { + node (g2) {op amp output voltage low} + child {node (t1) {pd high} + child { node (g4) {potential divider voltage high} + child {node (b1) {r1 open}} + child {node (b2) {r2 short}} + } + %child { node (g5) {No flow from Component A2} + % child {node (t2) {No flow from source2}} + % child {node (b3) {Component A2 blocks flow}} + %} + } + child {node (b3) {OP amp latch dn}} + child {node (b4) {OP amp no op}} + }; + +%% Place gates and other symbols +%% In the CVS version of PGF labels are placed differently than in PGF 2.0 +%% To render them correctly replace '-20' with 'right' and add the 'absolute' +%% option to the tikzpicture environment. The absolute option makes the +%% node labels ignore the rotation of the parent node. + %\node [or] at (g1.south) [label=-20:G01] {}; + \node [or] at (g2.south) [label=-20:G01] {}; + \node [or] at (g4.south) [label=-20:G02] {}; +% \node [and] at (g3.south) [label=-20:G03] {}; +% \node [or] at (g4.south) [label=-20:G04] {}; +% \node [or] at (g5.south) [label=-20:G05] {}; + \node [be] at (b1.south) [label=below:B01] {}; + \node [be] at (b2.south) [label=below:B02] {}; + \node [be] at (b3.south) [label=below:B03] {}; + \node [be] at (b4.south) [label=below:B04] {}; +% \node [tr] at (t1.south) [label=below:T01] {}; +% \node [tr] at (t2.south) [label=below:T02] {}; +%% + +\end{tikzpicture} +\label{fig:noninvfta} +\caption{Example FTA Derived from the DAG for symptom `Amp Low'} +\end{figure} + + +\subsection{The FTA `OR' trap} + +This example amplifier analysis highlights a weakness in the FTA methodology. +Intuitively, the $AMP_{low}$ failure symptom, has three possible +causes and it would be tempting, when drawing an FTA diagram \footnote{FTA diagrams are drawn from the top down, + starting with high level undesirable events~\cite{nucfta}}, +to use a triple input `OR' gate to model these. + +An `OR' gate would mean that the power-set of all its inputs +leads to the resultant failure mode/symptom. + +In this example we have a combination that breaks this rule. Were the condition +$$PD_{high} \wedge OPAMP_{noop}$$ to be true we would have a floating output +which is a different error condition to the output being actively low. + +This means that anyone drawing an OR gate in an FTA diagram +should either specify that only single failure modes have been considered +possible, or, must consider all power-set combinations of the inputs. + +\subsection{Information missing in FTA} + +to expand: Each FTA deals only with one symptom. - therefore only one cut-set is represented by each FTA +diagram, throwing away nearly all the information associated with the other top level events. + +\subsubsection{Further refinements} + +to expand: Cuts sets and minimal cut sets. show example of detection of mimimal cut sets in the FTA tree + + +\clearpage +\section{Extracting/Assisting in FMEA reports from the DAG} + +A design FMEA, or potential failure mode and effects analysis +will typically require the designer to look at the possible effects +of all the component failure modes in the system under investigation. + + +FMEA uses the terms `potential causes' and `potential failure modes'. +In an FMMD sense, the `potential causes' are component level failure modes +and the `potential failure modes' are top-level symptoms. + +\ifthenelse {\boolean{paper}} +{ +%FMEA - brief description for paper... +Design FMEA is methodology for assessing potential reliability/dangerous conditions early +in the development cycle. +FMEA is used to identify potential failure modes, +determine their effect on the operation of the product, +and identify actions to mitigate the failures. +FMEA relies anticipating what {\em might} go wrong with a product. +While anticipating every failure mode is not possible, a development team should +collate as complete a list of potential failure modes as possible. + +With an FMMD sourced failure mode to symptom mapping, this +list should be more complete. It will for instance include +not only an entry every component failure mode, but has a formal +reasoning process behind it, which leads to the symptom. +} +{ +See section \ref{pfmea} for an overview of FMEA. +FMEA relies anticipating what {\em might} go wrong with a product. +While anticipating every failure mode is not possible, a development team should +collate as complete a list of potential failure modes as possible. +With an FMMD sourced failure mode to symptom mapping, this +list should be more complete. + +It will for instance include +not only an entry every component failure mode, but has a formal +reasoning process behind it, which leads to the symptom. + +} +We have from the DAG model, a direct path from each component failure +mode to top-level symptoms. This allows us to partially fill in +the FMEA report. The detectability and severity of the symptom +are subjective. +The $det$ value could influenced by factors such as features only used by a small percentage +of users of a product. In this case the detcability of the problem would be smaller +as many users would not activate/use the feature~\cite{bfmea}. +%strange is'nt it. +Given component failure rates, the probability +of the the potential cause occurring can be calculated, given suitable +component failure mode statistical references (e.g. FMD-91~\cite{fmd91} and MIL1991~\cite{mil1991}). +As these can be determined, they are represented by $Stat()$ in the table~\ref{ampfmea}. + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|l|c|l|c|c|c||} +\hline \hline + \textbf{Item} & \textbf{Potential Failure} & \textbf{ Sev } & \textbf{Potential} & \textbf{prob} & \textbf{det} & \textbf{RPN} \\ + \textbf{Function} & \textbf{mode} & \textbf{ /cost }& \textbf{Cause} & \textbf{/occ } & \textbf{} & \\\hline +\hline + Non Inverting & $AMP_{high}$ & & $R1_{short} $ & $Stat(R1_{short}) $ & & \\ + Amplifier & $AMP_{low}$ & & $R1_{open} $ & $Stat(R1_{open}) $ & & \\ + Circuit & $AMP_{low}$ & & $R2_{short} $ & $Stat(R2_{short}) $ & & \\ + & $AMP_{high}$ & & $R2_{open}$ & $Stat(R2_{open})$ & & \\ + + & $AMP_{lowpass}$ & & $OPAMP_{lowslew}$ & $Stat(OPAMP_{lowslew})$ & & \\ + & $AMP_{low}$ & & $OPAMP_{latchdown}$ & $Stat(OPAMP_{latchdown})$ & & \\ + & $AMP_{high}$ & & $OPAMP_{latchup}$ & $Stat(OPAMP_{latchup})$ & & \\ + & $AMP_{low}$ & & $OPAMP_{noop} $ & $Stat(OPAMP_{noop}) $ & & \\ + + +\hline +\hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + + +With the partially filled in table the FMEA report only now needs the severity/cost, +probability/occurrence and detectability fields filled in to obtain the +$RPN$ numbers that define the order of importance of failure modes in FMEA. + +\subsection{Information missing in FMEA} + +to expand: Each FMEA looses the reasoning in the FMMD Hierarchy/DAG for linking +the symptoms to the potential causes. +FMEA can miss symptoms especially where a component failure mode may cause more than one top-level symptom. + +\section{Extracting/Assisting in FMECA from the DAG} + +FMECA is a refinement of FMEA and introduces two statistical variables, $\alpha$ and $\beta$. +The $\alpha$ value is the probability of +of a particular component failure +mode occuring.We can trace the DAG from a system level error/top level event, and assign +$\alpha$ values according to published statistics~\cite{fmd91}~\cite{mil1992}. +As for the FMEA example we can denote this using a $Stat()$ function. + +The $\beta$ value is the probability that the component failure mode will +cause a given system level error. +This may be determined hueistically or by field data. + +A factor of FMECA is criticallity. Each top level event/failure +is assigned a criticallity value. This defines how seriously the problem is +pervcieved. This must be determined by the safety engineers responsible for the equipment and +its environment. + + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Critcallity Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|l|c|c|c|c||} +\hline \hline + \textbf{Item} & \textbf{Potential Failure} & \textbf{Potential} & \textbf{$\alpha$} & \textbf{$\beta$} & \textbf{severity} & \textbf{$C_r$} \\ + \textbf{Function} & \textbf{mode} & \textbf{Cause} & \textbf{} & \textbf{} & \textbf{rating} & \\\hline +\hline + Non Inverting & $AMP_{high}$ & $R1_{short} $ & $Stat(R1_{short}) $ & & & \\ + Amplifier & $AMP_{low}$ & $R1_{open} $ & $Stat(R1_{open}) $ & & & \\ + Circuit & $AMP_{low}$ & $R2_{short} $ & $Stat(R2_{short}) $ & & & \\ + & $AMP_{high}$ & $R2_{open}$ & $Stat(R2_{open})$ & & & \\ + + & $AMP_{lowpass}$ & $OPAMP_{lowslew}$ & $Stat(OPAMP_{lowslew})$ & & & \\ + & $AMP_{low}$ & $OPAMP_{latchdown}$ & $Stat(OPAMP_{latchdown})$ & & & \\ + & $AMP_{high}$ & $OPAMP_{latchup}$ & $Stat(OPAMP_{latchup})$ & & & \\ + & $AMP_{low}$ & $OPAMP_{noop} $ & $Stat(OPAMP_{noop}) $ & & & \\ + + +\hline +\hline +\hline +\end{tabular} +\label{ampfmeca} +\end{table} +%As the $\alpha$ modes are probabilities, the sum of all $\alpha$ modes for a component must equal one. + +% Work out the alpha and beta values !!! well alpha is possible, beta and criticallity are not + +\section{Extracting FMEDA from the DAG} + +safe failure fractions +hmmmm +SD SU DD DU + + +\section{Conclusion} + +We now have a derived component that represents the failure modes of a non-inverting +op-amp based amplifier. We can now use this to model higher level designs, where we have systems +that use this type of amplifier. +If failure mode/reliability statistics were required these could be derived +from the model, as each failure mode of the derived component +is traceable to one or more base component failure mode causes, for which established +statistical literature is available ~\cite{mil1991}~\cite{fmd91}. +Software used to edit these diagrams, keeps the model in a directed acyclic graph data structure +for this purpose. + +\clearpage +%\end{document} \ No newline at end of file diff --git a/opamp/noninvopamp_paper.tex.backup b/opamp/noninvopamp_paper.tex.backup new file mode 100644 index 0000000..a8b1092 --- /dev/null +++ b/opamp/noninvopamp_paper.tex.backup @@ -0,0 +1,421 @@ +\def\layersep{3.5cm} +\ifthenelse {\boolean{paper}} +{ +\abstract{ +This paper analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp. + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can now create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can be analysed and a derived component to represent the non inverting +amplifier determined. +} +\section{Introduction} +} +{ +This chapter analyses a non-inverting op-amp +configuration, with the opamp and gain resistors using the FMMD +methodology. +% +It has three base components, two resistors +and one op-amp.\section{Introduction} + +The two resistors are used as a potential divider to program the gain +of the amplifier. We consider the two resistors as a functional group +where their function is to operate as a potential divider. +% +The base component error modes of the +resistors are used to model the potential divider from +a failure mode perspective. +% +We determine the failure symptoms of the potential divider and +consider these as failure modes of a new derived component. + +We can create a functional group representing the non-inverting amplifier, +by bringing the failure modes from the potential divider and +the op-amp into a functional group. +% +This can now be analysed and a derived component to represent the non inverting +amplifier determined. +\section{Introduction: The non-inverting amplifier} +} + + + +A standard non inverting op amp (from ``The Art of Electronics'' ~\cite{aoe}[pp.234]) is shown in figure \ref{fig:noninvamp}. + +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninv.png} + % noninv.jpg: 341x186 pixel, 72dpi, 12.03x6.56 cm, bb=0 0 341 186 + \caption{Standard non inverting amplifier configuration} + \label{fig:noninvamp} +\end{figure} + + + +The function of the resistors in this circuit is to set the amplifier gain. +They operate as a potential divider and program the minus input on the op-amp +to balance them against the positive input, giving the voltage gain ($G_v$) +defined by $ G_v = 1 + \frac{R2}{R1} $ at the output. + +A functional group, is an ideally small in number collection of components, +that interact to provide +a function or task within a system. +As the resistors work to provide a specific function, that of a potential divider, +we can treat them as a functional group. This functional group has two members, $R1$ and $R2$. +Using the EN298 specification for resistor failure ~\cite{en298}[App.A] +we can assign failure modes of $OPEN$ and $SHORT$ to the resistors. +Thus $R1$ has failure modes $\{R1\_OPEN, R1\_SHORT\}$ and $R2$ has failure modes $\{R2\_OPEN, R2\_SHORT\}$. + +\clearpage +\section{Failure Mode Analysis of the Potential Divider} + +Modelling this as a functional group, we can draw a simple closed curve +to represent each failure mode, taken from the components R1 and R2, +in the potential divider, shown in figure \ref{fig:fg1}. + + +\begin{figure}[h] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./fg1.png} + % fg1.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider `functional group' failure modes} + \label{fig:fg1} +\end{figure} + +We can now look at each of these base component failure modes, +and determine how they will affect the operation of the potential divider. +%Each failure mode scenario we look at will be given a test case number, +%which is represented on the diagram, with an asterisk marking +%which failure modes is modelling (see figure \ref{fig:fg1a}). +Each labelled asterisk in the diagram represents a failure mode scenario. +The failure mode scenarios are given test case numbers, and an example to clarify this follows +in table~\ref{pdfmea}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./fg1a.png} + % fg1a.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{potential divider with test cases} + \label{fig:fg1a} +\end{figure} + + +\begin{table}[ht] +\caption{Potential Divider: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Pot.Div} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $R_1$ SHORT & LOW & & LowPD \\ + TC2: $R_1$ OPEN & HIGH & & HighPD \\ \hline + TC3: $R_2$ SHORT & HIGH & & HighPD \\ + TC4: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{pdfmea} +\end{table} + + +We can now collect the symptoms of failure. From the four base component failure modes, we now +have two symptoms, where the potential divider will give an incorrect low voltage (which we can term $LowPD$) +or an incorrect high voltage (which we can term $HighPD$). + +We can represent the collection of these symptoms by drawing connecting lines between +the test cases and naming them (see figure \ref{fig:fg1b}). + + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./fg1b.png} + % fg1b.jpg: 430x271 pixel, 72dpi, 15.17x9.56 cm, bb=0 0 430 271 + \caption{Collection of potential divider failure mode symptoms} + \label{fig:fg1b} +\end{figure} + +%\clearpage + +We can now make a `derived component' to represent this potential divider. +This {\dc} will have two failure modes. +We can use the symbol $\bowtie$ to represent taking the analysed +{\fg} and creating from it, a {\dc}. + +%We could represent it algebraically thus: $ \bowtie(PotDiv) = +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./dc1.png} + % dc1.jpg: 430x619 pixel, 72dpi, 15.17x21.84 cm, bb=0 0 430 619 + \caption{From functional group to derived component} + \label{fig:dc1} +\end{figure} + +Because the derived component is defined by its failure modes and +the functional group used to derive it, we can use it +as a building block for other {\fgs} in the same way as we used the resistors $R1$ and $R2$. + +\clearpage + +\section{Failure Mode Analysis of the OP-AMP} + +Let use now consider the op-amp. According to +FMD-91~\cite{fmd91}[3-116] an op amp may have the following failure modes: +latchup(12.5\%), latchdown(6\%), nooperation(31.3\%), lowslewrate(50\%). + +We can represent these failure modes on a diagram (see figure~\ref{fig:op1}). + + + + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./op1.png} + % op1.jpg: 406x221 pixel, 72dpi, 14.32x7.80 cm, bb=0 0 406 221 + \caption{Op Amp failure modes} + \label{fig:op1} +\end{figure} + +%\clearpage + +\section{Bringing the OP amp and the potential divider together} + +We can now consider bringing the OP amp and the potential divider together to +for an amplifier. We have the failure modes of the functional group for the potential divider, +so we do not need to consider the individual resistor failure modes that define its behaviour. +We can make a new functional group to represent the amplifier, by bringing the component \textbf{opamp} +and the component potential divider into a new functional group. + + + +This functional group has the failure modes from the op-amp component, and the failure modes +from the potential divider {\dc} to analyse represented by figure~\ref{fig:fgamp}. + + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./fgamp.png} + % fgamp.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 + \caption{Amplifier Functional Group} + \label{fig:fgamp} +\end{figure} + +We can now place test cases on this (note this analysis considers single failure modes only +where we want to model multiple failures, we can over lap contours, and place the test cases in overlapping +regions) see figure~\ref{fig:fgampa}. + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./fgampa.png} + % fgampa.jpg: 430x330 pixel, 72dpi, 15.17x11.64 cm, bb=0 0 430 330 hno + \caption{Amplifier Functional Group with Test Cases} + \label{fig:fgampa} +\end{figure} + +\clearpage + +\begin{table}[ht] +\caption{Non Inverting Amplifier: Failure Mode Effects Analysis: Single Faults} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Amplifier} & \textbf{ } & \textbf{General} \\ + \textbf{Case} & \textbf{Effect} & \textbf{ } & \textbf{Symtom Description} \\ +% R & wire & res + & res - & description +\hline +\hline + TC1: $OPAMP$ LatchUP & Output High & & AMPHigh \\ + TC2: $OPAMP$ LatchDown & Output Low : Low gain& & AMPLow \\ \hline + TC3: $OPAMP$ No Operation & Output Low & & AMPLow \\ + TC4: $OPAMP$ Low Slew & Low pass filtering & & LowPass \\ \hline + TC5: $PD$ LowPD & Output High & & AMPHigh \\ \hline + TC6: $PD$ HighPD & Output Low : Low Gain& & AMPLow \\ \hline + %TC7: $R_2$ OPEN & LOW & & LowPD \\ \hline +\hline +\end{tabular} +\label{ampfmea} +\end{table} + +For this amplifier configuration we have three failure modes, $AMPHigh, AMPLow, LowPass$.%see figure~\ref{fig:fgampb}. + +We can now derive a `component' to represent this amplifier configuration (see figure ~\ref{fig:noninvampa}). + + + +\begin{figure}[h+] + \centering + \includegraphics[width=200pt,keepaspectratio=true]{./noninvampa.png} + % noninvampa.jpg: 436x720 pixel, 72dpi, 15.38x25.40 cm, bb=0 0 436 720 + \caption{Non Inverting Amplifier Derived Component} + \label{fig:noninvampa} +\end{figure} + + +%failure mode contours). +\clearpage + +\section{Directed Acyclic Failure Mode Graph} + + +\begin{figure} + \centering + \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep] + \tikzstyle{every pin edge}=[<-,shorten <=1pt] + \tikzstyle{fmmde}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt] + \tikzstyle{component}=[fmmde, fill=green!50]; + \tikzstyle{failure}=[fmmde, fill=red!50]; + \tikzstyle{symptom}=[fmmde, fill=blue!50]; + \tikzstyle{annot} = [text width=4em, text centered] + + % Draw the input layer nodes + %\foreach \name / \y in {1,...,4} + % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4} + % \node[component, pin=left:Input \#\y] (I-\name) at (0,-\y) {}; + + \node[component] (OPAMP) at (0,-6) {$OPAMP$}; + \node[component] (R1) at (0,-11) {$R_1$}; + \node[component] (R2) at (0,-15) {$R_2$}; + + %\node[component] (C-3) at (0,-5) {$C^0_3$}; + %\node[component] (K-4) at (0,-8) {$K^0_4$}; + %\node[component] (C-5) at (0,-10) {$C^0_5$}; + %\node[component] (C-6) at (0,-12) {$C^0_6$}; + %\node[component] (K-7) at (0,-15) {$K^0_7$}; + + % Draw the hidden layer nodes + %\foreach \name / \y in {1,...,5} + % \path[yshift=0.5cm] + + \node[failure] (OPAMPLU) at (\layersep*2,-3) {latchup}; + \node[failure] (OPAMPLD) at (\layersep*2,-6) {latchdown}; + \node[failure] (OPAMPNP) at (\layersep*2,-9) {noop}; + \node[failure] (OPAMPLS) at (\layersep*2,-11) {lowslew}; + + \node[failure] (R1SHORT) at (\layersep,-11) {$R1_{SHORT}$}; + \node[failure] (R1OPEN) at (\layersep,-13) {$R1_{OPEN}$}; + + \node[failure] (R2SHORT) at (\layersep,-15) {$R2_{SHORT}$}; + \node[failure] (R2OPEN) at (\layersep,-17) {$R2_{OPEN}$}; + + + + % Draw the output layer node + +% % Connect every node in the input layer with every node in the +% % hidden layer. +% %\foreach \source in {1,...,4} +% % \foreach \dest in {1,...,5} + \path (OPAMP) edge (OPAMPLU); + \path (OPAMP) edge (OPAMPLD); + \path (OPAMP) edge (OPAMPNP); + + \path (R1) edge (R1SHORT); + \path (R1) edge (R1OPEN); + + \path (R2) edge (R2SHORT); + \path (R2) edge (R2OPEN); + + + % Potential divider failure modes + % + \node[symptom] (PDHIGH) at (\layersep*2,-13) {$PD_{HIGH}$}; + \node[symptom] (PDLOW) at (\layersep*2,-15) {$PD_{LOW}$}; + + + + \path (R1OPEN) edge (PDHIGH); + \path (R2SHORT) edge (PDHIGH); + + + \path (R2OPEN) edge (PDLOW); + \path (R1SHORT) edge (PDLOW); + + + + \node[symptom] (AMPHIGH) at (\layersep*3,-13) {$AMP_{HIGH}$}; + \node[symptom] (AMPLOW) at (\layersep*3,-15) {$AMP_{LOW}$}; + \node[symptom] (AMPLP) at (\layersep*3,-15) {$LOWPASS$}; + + \path (PDLOW) edge (AMPHIGH); + \path (OPAMPLU) edge (AMPHIGH); + + \path (PDHIGH) edge (AMPLOW); + \path (OPAMPNP) edge (AMPLOW); + \path (OPAMPLD) edge (AMPLOW); + + +% %\node[symptom,pin={[pin edge={->}]right:Output}, right of=C-1a] (O) {}; +% \node[symptom, right of=C-1a] (s1) {s1}; +% \node[symptom, right of=C-2a] (s2) {s2}; +% +% +% +% \path (C-2b) edge (s1); +% \path (C-1a) edge (s1); +% +% \path (C-2a) edge (s2); +% \path (C-1b) edge (s2); +% +% %\node[component, right of=s1] (DC) {$C^1_1$}; +% +% %\path (s1) edge (DC); +% %\path (s2) edge (DC); +% +% +% +% % Connect every node in the hidden layer with the output layer +% %\foreach \source in {1,...,5} +% % \path (H-\source) edge (O); +% +% % Annotate the layers +% \node[annot,above of=C-1a, node distance=1cm] (hl) {Failure modes}; +% \node[annot,left of=hl] {Base Components}; +% \node[annot,right of=hl](s) {Symptoms}; + %\node[annot,right of=s](dcl) {Derived Component}; + \end{tikzpicture} + % End of code + \caption{DAG representing failure modes and symptoms of $FG^0_1$} + \label{fig:dag0} + \end{figure} + +\section{Conclusion} + +We now have a derived component that represents the failure modes of a non-inverting +op-amp based amplifier. We can now use this to model higher level designs, where we have systems +that use this type of amplifier. +If failure mode/reliability statistics were required these could be derived +from the model, as each failure mode of the derived component +is traceable to one or more base component failure mode causes, for which established +statistical literature is available ~\cite{mil1991}~\cite{fmd91}. +Software used to edit these diagrams, keeps the model in a directed acyclic graph data structure +for this purpose. + +%\clearpage % refs etc come next + + +%\vspace{60pt} +%$$ \int_{0\-}^{\infty} f(t).e^{-s.t}.dt \; | \; s \in \mathcal{C}$$ +%\today + +% $$\frac{-b\pm\sqrt{ {b^2-4ac}}}{2a}$$ +%\today diff --git a/opamp/op1.dia b/opamp/op1.dia new file mode 100644 index 0000000000000000000000000000000000000000..055c1b5298fbd7286c4037523a19ca56006cb451 GIT binary patch literal 1430 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 literal 0 HcmV?d00001 diff --git a/opamp/opamp.dia b/opamp/opamp.dia new file mode 100644 index 0000000000000000000000000000000000000000..fbccd59e79734c52d7701c35ce42aef4304ef384 GIT binary patch literal 1018 zcmVednV0Z)*%XfYIDJJK`1=GSM)57J`!tvrROLLi1 zF58ennkI~j3RUJCb~#QF(nL}0m|Fw9xaU%)uh@T2lj0Nys^#ZwJ2!LVoJYqK_dudY z%L9+(>hAH4!c}SCy^;1UFL;o!F6+6Fqp9DGqrSO2W%Yh}d>|VtZN0}sgqg>@^N)vk z!y{I_LbF4e9!;xSZ2nr*n{uZHrdnzo)+IzjcPy{fe|b5kje3LYieu1F^6k^zUQD!j zb`XIy_?v~YcK=UFMMU$+xG{d`Lg{&KOH@o6Ob+|_bLh#?%Y$KZ&LiDP3G7DNzsCZP(#zQ%(P;gT%aB{K|M1Z_A8TaNhL zLoH?9`{0Z-PF=w&*@mRi$z<_e0(D{&0&g)OmgTFxfS%<~R94!Kc1mf6!1uurI0i#} z0B3K1?D)X(W*#8kZMg*qSl%SGXnEJo9P~a2;f_QIPwxBDe1?3}s`m0{m15khU(NvvBhm#$0%B-Qm_)i$}l|9Nm zhS)Vj&=?FMy4<57o!E)|Al12Ise{F~)JF;HTSFQispHbZZT>B8N%ak^%8_V8vN1pX zrDuG4)b{=%Rw`sSp8mzSr)!?2L-p`)EZH*2LwZR1OYB%N9V z*&7f6Y}o{>%e7Urh+RA!xyjB`8G0Go;cTWsn!^#kWeta;36I5^_3bfJwWLBk2di@m zbHPllG_IXIFGj%$E15q|C39y!fD;rlSNF%ryCnb<1&M6ue^tb8e(WOVT0U_hb|LaT oGFc64ar0*h`%X((wemb{u5QcG_44Xqw!OUi7ua#z4gVeh0M-}uqyPW_ literal 0 HcmV?d00001 diff --git a/opamp/opamp.png b/opamp/opamp.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1118322b8d80bdc2a98cfac660ed1498a109cb GIT binary patch literal 2688 zcmV-`3V-#9P);`q(*J-t_4^yfbsosh{0$2RvN6c5Ua*omp8~nEI!gKYo}r>-GB7)Ksh0%4W00 zVsUYC@$%)%aSTK=AN+Ck>+gT!#EH<*P@PU!Qc}WVvCf}AKR7suX*ilWu;XNMa#Ajr zZ{EBajpgs}&*gFz3WddD!8$I@EHG;3@pxP=*JiWX?e?aoCZSLm6cmJfr>3S#rP8lo zzv3I6#u1E~0|NsAU}k29I`aARXQ@=WZrwU0o55fRg~I0MW_&TwATVlXFc<(ZH8nNs zxYcT{t*zy9xqg0r$TyqKE-NdWn3%v9jE{p+b7*KN0E~~1|L%nM@83%#k`*gfAlb38 zu@Z^o)2C1PLh@NKYL1MI1b}bfzWw>M@87?dm6dJUw8^ndtF5g?|I}$*0!Ga%SFQwr zk&%&koC=J@z{05BSjPPDaHEWa$%CMPFd9;YvWQ8UWOzP`SNbkf<`DUnE`qN0%OxVSip zMAF;a>#87q1dN)Klam3Ur>AG(U7<2<fdZOD-?=ZWtvqTJH%x1FzpsA?|-w=+NOs2B3GHS9)KtKSW&sVF}beU$ys(Htb9RTq9^=s#vJN-Hw zm1*ex7yzWFr%R>M(a}-o!dMz$)SR824FFoL*16^job_NZ7^G4ulgUK=golTV#p1Vb z-#Xo)SA$XWu3ftT;Much&NX+*2 zjNXk>W!eIt(0LJfCkX+-!-o%@YmQ^88YXj>3 zzJC1*01*)pM~)mREiLu3m7e&%LC23D2Y~C>uRGTqcX)rr)YOzhq2O>h)aT}1Wg4y( zkpO`1N-Y)(z9AM327^HmL}O!PQ&STv)3jQxKp;p=Ogwk)+?Ow3+#TQ?(3<}aG{Mwh zFvw)GD(dv<(;q*6L}i-QY9&dM z$K$ct?DF#RA3uJ$JHXk{+3Y;ja&5F2EG8zVxw*Ndq=d<2mXwsVx3{}H!2d&Qb^&O) z_Q1e^LZQgc&Ni7$<>loYH*VzdcqB=B!YAOl7j0A`x-=rZpfXLX)uJ+u!C+`K8i7EN zl$3Pt+_~Z5VK>G`XS3@;Wt!1wl*wdCNl6BS!R=+5=Vr6FgUYn-?rybO&FAx{r>9Yw zwtf5d^78VDiHXGwhSrQ1RHms^s;;gsi9`||9gVhDTC--&>C>lsdU_Tq418Vt>_z*R zpyk>F0|Rooe9M+CCX?y%<;yG<3zccOlOYge*R zi>1E4o+Qco`g-)z8UQwI*dP!HkX`CbOpbxloSmI*G#YUXFg7-Zqg&5sW@e_Lp@AgH z2M->MjEtaznVFdcLCmtd2>jH%Zr!?&kPz2)JvKHrJUl#~j9eO7i=gb@zkh#pbQB%r za5w}(ErRS41d*4Qmz0#`?f`#6-%vTjj~_qo-n~nb#>T3vt4Wf4^yty#7T?T`(fB$}hAaZkasSSUZ z48E1kgM)(#g~HKpXlUr+!-sQna(F!6(z8q96WMGu8cC8QN%G~(mo}RX0K&q;4jno~ z5X9cSdwt`eQt42xZU%F*uX)vM8zIoj@g@aT(nV`C#pl67@;)LNr8Yt|GN z77_%Jot^FPk8x$t62s%N*>1OMwOW!SYinzJdwbDACX-oEP(a&t8c)$o*}Zq~o?fp< z2UAm1i;IhMa&oqA-AdbC2yVV;Q+8`=YWn*6&_Nc9b?n%&#h=W)gmF(c+ibQMFJ6!& zSzTS--`|f8rl+SLJ$jV3i-SeYW@?#9Lqh|#7e_`$2D&4n?c!rGvYA?lFy|s78cbl+ zY_r)eT)6P`>C^c5cxn+5o6SaZGibYu2`@gS&=uZ}lRajV9SXj7i+cr!i u()IJ_x6x|Bo!0000 Date: Sun, 21 Aug 2011 19:18:09 +0100 Subject: [PATCH 2/2] shading and framed text box example --- latex_examples/color_shade_and_frame.tex | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 latex_examples/color_shade_and_frame.tex diff --git a/latex_examples/color_shade_and_frame.tex b/latex_examples/color_shade_and_frame.tex new file mode 100644 index 0000000..40a36dc --- /dev/null +++ b/latex_examples/color_shade_and_frame.tex @@ -0,0 +1,26 @@ +\documentclass{article} +\usepackage[table]{xcolor} +\usepackage{framed} + + +\begin{document} +\begin{table}[h] +\centering +\colorbox{blue!20}{ +\begin{minipage}{.5\textwidth} +\centering +\begin{tabular}{ccc} + test & test & test\\ + test & test & test + \end{tabular} + \caption{testcaption} +\end{minipage}} +\end{table} + + +\begin{framed} + This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. + This is framed text, I hope. This is framed text, I hope. This is framed text, I hope. +\end{framed} + +\end{document}