The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Jul 17th, 2024, 4:19am
Pages: 1
Send Topic Print
Electrical Vs Real (Read 4368 times)
gandhi_gaurav
New Member
*
Offline



Posts: 6

Electrical Vs Real
Nov 02nd, 2008, 10:24pm
 

I am designing a block with three inputs v1,v2,v3, one internal node v4 and the one output v5. Now v4 = 1 if (v1+v2+v3) > 3; V4 =0 if (v1+v2+v3) lies between 1 and 2 and V4 = -1 if (v1+v2+v3) <1.
V5 = sin(omega) * v4 where omega is externally specified.

Can anyone help me as how to model these mathematical functions in Verilog-AMS ?

Mainly I am stuck at which to define electrical and which net is real.

Thanks,
-Gaurav
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: Electrical Vs Real
Reply #1 - Nov 3rd, 2008, 5:36am
 
Are v1,v2,v3 digital inputs?  You don't specify what v4 is if (v1+v2+v3) is, say, 2.5 (nor, actually, if it's exactly == 1 or == 3), yet clearly v5 is a real-valued output.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
jbdavid
Community Fellow
*****
Offline



Posts: 378
Silicon Valley
Re: Electrical Vs Real
Reply #2 - Nov 3rd, 2008, 2:28pm
 
If this is an osc, you'll need to integrate omega over time to get Phase (phi) and then take sin(phi) ..

this sounds like a variation on a voltage to frequency converter.. ?
--
my rule of thumb is this..
if the variable needs the spice-like integration (& numerical error) control handled well, make it electrical (or other continuous/conservative discipline).

g'luck!
Back to top
 
 

jbdavid
Mixed Signal Design Verification
View Profile WWW   IP Logged
gandhi_gaurav
New Member
*
Offline



Posts: 6

Re: Electrical Vs Real
Reply #3 - Nov 4th, 2008, 11:20pm
 
Thanks for the reply.

Let me explain the problem again.

Just trying to realize spice statements like the following into veriloga

.FUNC Q(v1,v2,v3,v4) { (Cg1*v3+Cg2*v4+C1*v1+C2*v2)/E }  
.FUNC VN(v) { CSUM*v/E }                                    
.FUNC GAMMA(u) { IF(T==0,IF(u<0,-u,0),IF(u==0,T,u/(EXP(u/T)-1)))}


.FUNC ALPHA(v1,v2,v3,v4) { ROUND(-Q(v1,v2,v3,v4)+(CSUM/E)*(v1*RN2+v2*RN1)) }  
In the above statements the function N_OPT calls Function Q, CSUM.


.FUNC R1L(n,v1,v2,v3,v4) {GAMMA(0.5 - n - Q(v1,v2,v3,v4) + VN(v1))/RN1} In the above statement the function R1L calls GAMMA.

Now my query is regarding
> best modeling practice regarding function calling functions  the
> number of values that can be returned If  declarations in functions are real and these cant take values which are defined electrical?
For  example:-

`include "constants.vams"
`include "disciplines.vams"

module setmod2(v1, v2, v3, v4,v5);
inout v1, v2, v3, v4,v5;
electrical v1, v2 ,v3, v4,v5;
parameter real C1=1                     ;
parameter real C2=1                      ;
parameter real R1=1                       ;
parameter real R2=1                       ;
parameter real Cg1=1                     ;
parameter real Cg2=0.1                         ;
parameter real C0=0                          ;
parameter real Q0=0                          ;
parameter real TEMP=4.2                      ;

parameter real  PI=3.14       ;
parameter real  E=1.5            ;
parameter real  KB=1.3             ;
parameter real  CSUM={C1+ C2+ Cg1+ Cg2+ C0}     ;
parameter real  T={TEMP*CSUM*5.3785467E14}  ;
parameter real  RN1={R1/(R1+ R2)}            ;
parameter real  RN2={R2/(R1+ R2)}            ;


analog function real Q1;
input v_1, v_2, v_3, v_4;
real v_1,v_2, v_3,v_4;
Q1 =  (Cg1*V(v_1)+Cg2*V(v_2)+C1*V(v_3)+C2*V(v_4))/(E+Q0) ; endfunction

analog begin

V(v5) <= Q1(v1,v2,v3,v4);

endmodule
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: Electrical Vs Real
Reply #4 - Nov 5th, 2008, 5:15am
 
A couple quick points:

gandhi_gaurav wrote on Nov 4th, 2008, 11:20pm:
parameter real  PI=3.14       ;


Ugh!  If you're including constants.vams, why not use `M_PI?

Quote:
analog function real Q1;
input v_1, v_2, v_3, v_4;
real v_1,v_2, v_3,v_4;
Q1 =  (Cg1*V(v_1)+Cg2*V(v_2)+C1*V(v_3)+C2*V(v_4))/(E+Q0) ; endfunction

analog begin

V(v5) <= Q1(v1,v2,v3,v4);

endmodule


Note that the LRM forbids you from using access function references in a function; you should change this to

Q1 =  (Cg1*v_1+Cg2*v_2+C1*v_3+C2*v_4)/(E+Q0) ; endfunction

...

V(v5) <+ Q(V(v1), V(v2), V(v3), V(v4));


-Geoffrey

Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: Electrical Vs Real
Reply #5 - Nov 5th, 2008, 5:17am
 
gandhi_gaurav wrote on Nov 4th, 2008, 11:20pm:
In the above statements the function N_OPT calls Function Q, CSUM.

There's no N_OPT in what you posted ...

Quote:
In the above statement the function R1L calls GAMMA.

also no R1L ...
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.