EXPRESSIONS, FUNCTIONS και CONSTANTS

 

Τα δεδομένα των Spice και Nutmeg είναι στην μορφή των διανυσμάτων (vectors) : time, voltage, κλπ. Κάθε διάνυσμα έχει έναν τύπο και τα διανύσματα μπορούν να λειτουργήσουν και να συνδυαστούν αλγεβρικά με τρόπους σύμφωνα με τους τύπους τους. Τα διανύσματα κανονικά δημιουργούνται όταν ένα data file διαβάζεται και όταν το αρχικό data file φορτώνεται. Επίσης, μπορούν να δημιουργηθούν με την εντολή let.

Μία expression είναι ένας αλγεβρικός τύπος που εμπλέκει vectors και scalars (scalar είναι ένα vector με μήκος 1) και τις παρακάτω πράξεις : +, -, *, /, ^, %.

Το % είναι ένας modulo τελεστής. Ο τελεστής comma έχει δύο έννοιες : Αν είναι παρόν σε μία λίστα ορισμάτων μίας user-definable function, χρησιμεύει στον διαχωρισμό των ορισμάτων. Αλλιώς, ο όρος x, y είναι συνώνυμος με το x+j(y).

Επίσης, διαθέσιμες είναι και οι λογικές πράξεις & (and), | (or), ! (not) και οι σχεσιακές πράξεις <, >, >=, <=, = και <> (όχι ίσο). Αν χρησιμοποιούνται σε αλγεβρικές expressions δουλεύουν όπως στην C, παράγοντας τιμές 0 ή 1. Οι σχεσιακές (relational) πράξεις έχουν τα παρακάτω συνώνυμα:

gt > , lt < , ge >= , le <= , ne <> , eq = , and & , or | , not !

Αυτά είναι χρήσιμα όταν τα < και > μπορεί να μπερδευτούν με την ΙΟ redirection (ανακατεύθυνση).

Οι παρακάτω functions είναι διαθέσιμες :

mag(vector) The magnitude of vector
ph(vector) The phase of vector
j(vector) i (sqrt(-1)) times vector
real(vector) The real component of vector
imag(vector) The imaginary part of vector
db(vector) 20 log10(mag(vector))
log(vector) The logarithm (base 10) of vector
ln(vector) The natural logarithm (base e) of vector
exp(vector) e to the vector power
abs(vector) The absolute value of vector.
sqrt(vector) The square root of vector.
sin(vector) The sine of vector.
cos(vector) The cosine of vector.
tan(vector) The tangent of vector.
atan(vector) The inverse tangent of vector.
norm(vector) The vector normalized to 1( i.e,the largest magnitude of any componentis 1)
rnd(vector) A vector with each component a random integer between 0 and the absolute value of the vectors's corresponding component.
mean(vector) The result is a scalar (a length 1 vector)that is the mean of the elements of vector.
vector(number) The result is a vector of length number, with elements 0, 1, ... number - 1. If number is a vector then just the first element is taken, and if it isn't an integer then the floor of the magnitude is used.
lenght(vector) The length of vector.
interpolate(plot.vector) The result of interpolating the named vector onto the scale of the current plot. This function uses the variable polydegree to determine the degree of interpolation.
deriv(vector) Calculates the derivative of the given vector.This uses numeric differentiation by interpolating a polynomial and may not produce satisfactory results (particularly with iterated differentiation).The implementation only caculates the dirivative with respect to the real componant of that vector's scale.

 

Ένα vector μπορεί να είναι είτε το όνομα ενός vector που έχει ήδη ορισθεί ή ένας floating-point αριθμός (ένα scalar). Ένας αριθμός μπορεί να γραφεί σε οποιοδήποτε αποδεκτό format στο Spice, όπως 14.6Meg ή -1.231e-4. Σημειώστε ότι μπορείτε να χρησιμοποιήσετε την επιστημονική σημειογραφία ή κάποια από τις συντομεύσεις, όπως MEG ή G, αλλά όχι και τις δύο μαζί. Με το Spice, ένας αριθμός μπορεί να έχει μία ακολουθία από αλφαβητικούς χαρακτήρες μετά από αυτόν.

Η σημειογραφία expr [num] δηλώνει το num'οστο στοιχείο του expr. Για πολυδιάστατα vectors, επιστρέφεται ένα vector μικρότερο κατά μία διάσταση. Ακόμη για πολυδιάστατα vectors, η σημειογραφία expr{m][n] θα επιστρέψει το n'οστο στοιχείο του m'στου subvector. Για να πάρουμε μία υπο-περιοχή (subrange) ενός vector, χρησιμοποιούμε τον τύπο expr[lower,upper].

Για να αναφέρουμε ένα vector σε ένα σχέδιο (plot) το οποίο δεν είναι το τρέχον σχέδιο (current plot), μπορούμε να χρησιμοποιήσουμε την σημειογραφία plotname.vecname.

Είτε το plotname ή ένα vector name μπορεί να είναι η wildcart all. Αν το plotname είναι all, ορίζονται όλα τα vectors που ταιριάζουν, ενώ αν το vector name είναι all, αναφέρονται όλα τα vectors στα καθορισμένα σχέδια (plots). Σημειώστε ότι δεν μπορείτε να χρησιμοποιήσετε binary πράξεις σε expressions που εμπλέκουν wildcards, γιατί για παράδειγμα, δεν είναι φανερό τι δηλώνει το all+all. Παρακάτω είναι μερικά παραδείγμα από expressions :

cos(TIME) + db(v(3))

sin(cos(log([1 2 3 4 5 6 7 8 9 10])))

TIME * rnd(v(9)) - 15 * cos(vin#branch)^[7.9e5 8]

not ((ac3.FREQ[32] & tran1.TIME[10]) gt 3)

Τα ονόματα των vector στο Spice μπορεί να είναι σαν @name[param], όπου name είναι είτε το όνομα ενός εξαρτήματος ή μοντέλου. Αυτό δηλώνει την τιμή της παραμέτρου param του device ή του μοντέλου. Η τιμή είναι ένα διάνυσμα με μήκος 1. Αυτή η function είναι επίσης διαθέσιμη με την εντολή show και με μεταβλητές για ευκολία για command scripts.

Υπάρχει ένας αριθμός από προκαθορισμένες constants (σταθερές) στο nutmeg. Αυτές είναι :

pi π (3.14159…)
e Η βάση των φυσικών λογαρίθμων (2.71828…)
c Η ταχύτητα του φωτός (299792500 m/sec)
i Η τετραγωνική ρίζα του -1
kelvin Απόλυτο μηδέν σε βαθμούς κελσίου (-273.15 C)
echarge Το φορτίο του ηλεκτρονίου (1.6021918e-19 Q)
boltz Σταθερά Boltzman (1.3806226e-23)
planck Σταθερά Planck (h=6.6262e-34)

 

Επιστροφή στο Interactive Interpreter