public class LogicLevel extends PowerChannel implements LogicSettable
PowerChannel
for Vdd, so that changes to Vdd in
ChainTest
will also change the master clear voltage.
Using this class ensures that the logic voltage tracks changes to Vdd if the logic state is true. The changes in the two voltage levels occur simultaneously, preventing either of the failure modes likely if the two voltages were set separately: 1) Vdd temporarily exceeds the logic voltage, resulting in an artificial "false" interpretation of the logic level; 2) the logic voltage temporarily exceeds Vdd, resulting in the logic voltage trying to power up the chip through its ESD diodes. These failure modes are prevented if Vdd and the logic voltage are never allowed to differ by more than about 0.5 Vdd or 0.7 V, respectively.
Note: when using this class, the user should not use the
PowerChannel
methods directly to control the voltages.
To synchronize two logic levels with Vdd, create a LogicLevel
object for one and then use that as the vddChannel for a second
LogicLevel
object. For example, for PowerChannel
objects vddChannel
,logicChannel
, and
logicChannel2
, one can use:
LogicLevel level = new LogicLevel(vddChannel, logicChannel, false);LogicLevel level2 = new LogicLevel(level, logicChannel2, false);In this case, the only methods one should invoke in the
level
object are isLogicStateHigh()
and setLogicState()
.
I.e., control of Vdd should only be performed using level2
.Modifier and Type | Field and Description |
---|---|
static float |
MAX_VOLTS_DEVIATION
Maximum difference between Vdd and logic voltages when logic level is
true, used while ramping Vdd up or down.
|
DEFAULT_VOLTAGE_RESOLUTION, maxSettleMsec, name, settleResolution
Constructor and Description |
---|
LogicLevel(PowerChannel vddChannel,
PowerChannel logicChannel,
boolean logicState)
Instantiate a LogicLevel object in the specified
logicState . |
Modifier and Type | Method and Description |
---|---|
float |
getCurrentSetpoint()
Get the Vdd channel's current limit setpoint
|
java.lang.String |
getLogicName()
Returns the name of the logic signal
|
float |
getLogicVoltageSetpoint()
Get the logic channel's voltage
|
java.lang.String |
getState()
Returns the name and state (voltage, current) of the channel
|
float |
getVoltageSetpoint()
Get the Vdd channel's voltage
|
boolean |
isLogicStateHigh() |
static void |
main(java.lang.String[] args)
Unit test exhibits use with one power and two logic channels, then
exercises a single power/logic combination with a real power supply.
|
float |
readCurrent()
Reads back the current provided by the Vdd channel of the power supply.
|
float |
readLogicCurrent()
Reads back the current provided by the logic channel of the power supply.
|
float |
readVoltage()
Reads back the voltage provided by the Vdd channel of the power supply.
|
void |
setCurrent(float amps)
Set the Vdd channel's current limit to the value provided
|
void |
setLogicState(boolean logicState)
If logicState is true, sets voltage for logic level to same values as
Vdd.
|
void |
setVoltageNoWait(float volts)
Set the Vdd channel's voltage to the value provided.
|
void |
setVoltageWait(float volts)
Set the channel's voltage and wait until it reaches requested value.
|
java.lang.String |
toString()
Obsolete, use getState() instead
|
getName, getVoltageResolution, readCurrent, waitForVoltage
isLogInits, isLogOthers, isLogSets, logInit, logOther, logSet, setAllLogging, setLogInits, setLogOthers, setLogSets
public static final float MAX_VOLTS_DEVIATION
public LogicLevel(PowerChannel vddChannel, PowerChannel logicChannel, boolean logicState)
logicState
.
That is, the voltage on logicChannel
is set to 0 V (if
logicState==false
) or to the voltage on vddChannel (if
logicState=true
). Requirements: vddChannel
and logicChannel
must be instantiated, but do not need to
be channels on the same power supply.vddChannel
- Channel of a power supply that supplies V_DDlogicChannel
- Channel of a power supply that supplies V_DDlogicState
- Desired initial state (high or low) of the logic levelpublic java.lang.String toString()
toString
in class PowerChannel
public java.lang.String getState()
getState
in class PowerChannel
public java.lang.String getLogicName()
public float readVoltage()
readVoltage
in interface VoltageReadable
readVoltage
in class PowerChannel
public float getVoltageSetpoint()
getVoltageSetpoint
in class PowerChannel
public void setVoltageNoWait(float volts)
setVoltageNoWait
in class PowerChannel
volts
- new voltage for the channel, in Voltspublic void setVoltageWait(float volts)
setVoltageWait
in class PowerChannel
volts
- new voltage for the channel, in Voltspublic float readCurrent()
readCurrent
in interface CurrentReadable
readCurrent
in class PowerChannel
public void setCurrent(float amps)
setCurrent
in class PowerChannel
amps
- new current limit for the channel, in Ampspublic float getCurrentSetpoint()
getCurrentSetpoint
in class PowerChannel
public boolean isLogicStateHigh()
isLogicStateHigh
in interface LogicSettable
public void setLogicState(boolean logicState)
setLogicState
in interface LogicSettable
logicState
- New value for logic statepublic float readLogicCurrent()
public float getLogicVoltageSetpoint()
public static void main(java.lang.String[] args)
args
- ignored