The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Design Languages >> Verilog-AMS >> Modelling OTA with "piece-wise" transfer func https://designers-guide.org/forum/YaBB.pl?num=1207529578 Message started by wgtan on Apr 6th, 2008, 5:52pm |
Title: Modelling OTA with "piece-wise" transfer func Post by wgtan on Apr 6th, 2008, 5:52pm Hi, I was trying to model in Verilog-A a differential OTA by the equations ΔId = K.ΔVin.√( 4*Iss/(2.K) - sq(ΔVin) ) for |ΔVin| <= √2.(Veff) -- (1) ΔId = Iss for |ΔVin| > √2.(Veff) -- (2) ΔId = -Iss for |ΔVin| < √2.(Veff) -- (3) Simulating in transient mode with the OTA in a negative feedback configuration, I got convergence problems. I had to change (1) such that ΔId = K.ΔVin.√abs( 4*Iss/(2.K) - sq(ΔVin) ) to get around the convergence problems. But this method failed when I used the OTA in a switch-cap circuit at the top-level. There were no error messages, but the output was wrong and it started to occur when |ΔVin| <= √2.(Veff) . Anyone knows the way to get around such problems of "piece-wise" functions? Apologize if I got the term "piece-wise" wrong, but I hope u get the idea. Thanks!! |
Title: Re: Modelling OTA with "piece-wise" transfer func Post by Stefan on Apr 7th, 2008, 1:37am You should smoothen the corners of your piecewiese definition by using a tanh-expression for example. That way you shouldn't run into your convergence problems. |
Title: Re: Modelling OTA with "piece-wise" transfer func Post by Ken Kundert on Apr 7th, 2008, 7:26am Smoothing is rarely, if ever, needed. I suspect the key here is not to make your transfer curve smooth, but to make it continuous. What is ΔId when ΔVin == √2×Veff? It should be Iss, is it? -Ken |
Title: Re: Modelling OTA with "piece-wise" transfer func Post by wgtan on Apr 7th, 2008, 9:45pm ΔId is Iss when ΔVin == √2×Veff in the equations. But I discovered that instead of comparing at ΔVin == √2×Veff, I was comparing at ΔVin == 2*√2×Veff .... Thanks for the help! :) One last question - does anyone know under what kind of conditions will messages like "Zero diagonal found in Jacobian at 'O1P' and 'O1P' " start popping out? |
Title: Re: Modelling OTA with "piece-wise" transfer func Post by Ken Kundert on Apr 8th, 2008, 2:05pm It generally means that O1P has suddenly become floating. -Ken |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |