The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design Languages >> Verilog-AMS >> Current sense
https://designers-guide.org/forum/YaBB.pl?num=1121766972

Message started by noreng on Jul 19th, 2005, 2:56am

Title: Current sense
Post by noreng on Jul 19th, 2005, 2:56am

How do I make a current sense in Verilog-A?

Title: Re: Current sense
Post by Eugene on Jul 19th, 2005, 9:00am

If you simply want to sense a current so you can use it in the same module, simply use I(p,n). You may need to add a node for the current sensor. For example, suppose you want to sense the current flowing into an input pin, "in". Try:

electrical inx; //defines an internal node
...
LHS variable = ...I(in,inx)...;//uses sensed current

You would then use inx inside your module in place of in. Beware that the current sensor shorts the nodes "in" and "inx" together. The current sensor is like a voltage source that has zero volts across it.

Title: Re: Current sense
Post by Geoffrey_Coram on Jul 19th, 2005, 9:12am

Eugene -
I think the recommended way to sense a port (terminal) current is with

LHS = ... I(<in>) ... ;


-Geoffrey

Title: Re: Current sense
Post by Eugene on Jul 19th, 2005, 10:27pm

Thanks Geoffrey.  Am I correct in assuming the single node current sensor only works for ports?

Title: Re: Current sense
Post by noreng on Jul 20th, 2005, 12:19am

Thanks for your reply.

Yes, I want to sense a port current and I've noticed that I(in) short circuits in to ground.

However, I've tried your advice, but it didn't work. I get the following error messages:

In file src/switch_sense.vla line     52:
        LHS sense=I(p);
            ^
[Failure] Syntax error : received IDENTIFIER
         while expecting '('
                      or '[' or '='

and

In file src/switch_sense.vla line     52:
        LHS=I(p);
        ^
[Error] Symbol LHS has not been defined
Error: (valog) Compilation: Analysis failed.

Title: Re: Current sense
Post by Andrew Beckett on Jul 20th, 2005, 3:53am

It wasn't something to use literally. LHS meant "Left Hand Side" and was a placeholder for some left-hand-side expression (e.g. some variable, or a contribution statement, or something like that).

Try reading Ken and Olaf's book on Verilog-AMS.

Andrew.

Title: Re: Current sense
Post by Geoffrey_Coram on Jul 20th, 2005, 4:21am

Eugene - Yes, that is special syntax only for ports (aka terminals).

One typical use of a current sensor is a controlled source:


Code:
module ccvs(in, out);
 inout in, out;
 electrical in, out;
 parameter real gain = 1;

 analog begin
   V(out) <+ gain * I(in); // shorts "in" to ground
 end
endmodule


As noted before, this shorts "in" to ground, and then measures the current flowing through this shorted branch to generate the output voltage.

One might use the I(<port>) syntax in a more complicated module

Code:
module bjt(c,b,e);
 inout c,b,e;
 electrical c,b,e;

 real ic, ib, ie;

 analog begin
   // put BJT equations here

   ic = I(<c>);
   ib = I(<b>);
   ie = I(<e>);

   $strobe("Terminal currents: i(c)=", ic, " i(b)=", ib, " i(e)=", ie);
 end
endmodule

       

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.