Expressions¶
Expressions are used in the Function Block and CDK Components to enable programmable components and signals.
Expressions are like Cell calculations in spreadsheets like Excel.
FUNCTION( Parmeter1, Parameter2,.. ParameterN )
Expressions have a root function FUNCTION which operate on a collection of Parameters where each Parameter can also be a function.
Expression Grammar¶
Expression = Primitive | Function
Primitive ::= Numeric | Pn | PINn
Function ::= functionName( expression [, expression]* )
functionName ::= CONST | RISING | FALLING | ISHIGH | ISLOW | PULSIN | CINT | NAND | NOR | XOR | XOR | MIN | MAX | ABSDIFF | CSIGN | CEN | SIGN | PWM | NEG | IF | MUL | ADD | SUB | RANGE | MAP | OR | NOT | GT | LT | VOLTS | DAC
Usage¶
Expressions can contain other functions as parameters. For example:
AND(OR(P1,P2),OR(P3,P4) Complex Logic
ADD(P1,P2) ‘Voltage Summer
MUL(SUB(P1,P2),2)’ Differential amplifier gain = 2
Function Groups¶
FunctionName::= Pin Functions | Logic Functions |Math Functions | Special Functions
Pin Functions ::= ISHIGH | ISLOW | RISING | FALLING
Logic Functions ::= AND, OR, XOR, NOT, NAND, NOR, XNOR
Math Functions ::= ABSDIFF, ADD, CEN, CONST, CSIGN, DIV, GT, IF, LT, MAP, MIN, MUL, NEG, RANGE, SIGN, SUB
Special Functions::= DAC, PULSIN,PWM,VOLTS
Pins¶
PN return a value 0 for logic level GND and 1 for Vdd which is nominally 5V
Pin Functions¶
ISHIGH ( PIN ) : Returns 1 if the PIN is HIGH else returns 0
ISLOW( PIN ) : Returns 1 if the PIN is LOW else returns 0
RISING( PIN ) : Returns 1 if the PIN has a rising edge
FALLING( PINS ) : Returns 1 if the PIN has a falling edge
ISPWRD( PIN ) : Returns 1 if the PIN is a voltage source
ISOPEN( PIN ): Returns 1 is the PIN is not wired
Logic Functions¶
AND(F1,F2,..,F3): Returns 1 if all FN return 1
OR(F1,F2,..,FN): Returns 1 if any FN return 1
XOR(F1,F2,…FN): Returns 1 if equal numbers of FN are 1 and 0
NAND(F1,F2,…,F3): Returns 1 if any FN is 0
NOR(F1,F2,…,FN): Returns 1 if no FN is 1
XNOR(F1,F2,…,FN): Returns 1 if odd numbers of FN are 1 and 0
NOT(F1): Return 1 if F1 is 0
Math Functions¶
ABSDIFF(FA,FB): Evaluates a ∣FB−FB∣
ADD(FA,FB,..,FN): Evaluates FA+FB+⋯+FN
CEN(FA) : Evaluates ∣FA−FB∣−0.5
CINT(FA): Converts floating FA to integer
CONST( string ) : Evaluates string as numeric
CSIGN(FA): if FA > 0.5 returns 1 else returns 0
DIV(FA,FB,..,FN) : Evaluates FA÷FB÷…÷FN
GT( FA, FB ): If FA > FB returns 1 else returns 0
GTE( FA, FB ): If FA >= FB returns 1 else returns 0
IF( FA, FB, FC ): If FA != 0 returns RB else returns FC
LT( FA, FB ): If FA < FB returns 1 else returns 0
LTE( FA, FB ): If FA <= FB returns 1 else returns 0
MAP( FA, FB, FC ): Evaluates FA−FBFC−FB clipped to range 0 to 1
MIN(FA,FB,..,FN) : returns the lowest value in the parameter list FA,.. ,FN
MAX(FA,FB,..,FN) : returns the highest value in the parameter list FA,.. ,FN
MUL(FA,FB,..,FN) : Evaluates FA∗FB∗⋯∗FN
NEG( FA ) : Evaluates −FA
RANGE( FA, FB, FC ) : Evaluates FA+(FB−FA)∗FC
SIGN( FA, FB ) : if( FA > FB ) returns 1 else returns 0
SUB( FA,FB,..,FN ) : Evaluates FA−FB−⋯−FN
Special Functions¶
DAC(FA,FB,..FN): Digital To Analog converter using N binary bits to create analog range between 0 and 1
TAP(FA,..FN) : Digital To Analog converter using N taps to create analog range between 0 and 1 where each step is 1/N
PULSIN( FA ): Measure the time in seconds of a pulse where the time is measured between the rising and falling edge
PWM (FA ): Digital to Analog converter using the PWM pulse duty on FA to create an analog value between 0 and 1
PWM(FA,FB): Digital to Analog converter using the PWM pulse duty on Differential FA - FB to create an analog value between 0 and 1
VOLTS (FA) : Converts the result of FA into a volts value by dividing by the nominal voltage value of 5.
ROM()