A short description of the code model
This commit is contained in:
parent
0c9d93997f
commit
16fd428729
|
|
@ -0,0 +1,102 @@
|
|||
SEE (single event effects) generator
|
||||
|
||||
|
||||
|
||||
NAME_TABLE:
|
||||
|
||||
C_Function_Name: cm_seegen
|
||||
Spice_Model_Name: seegen
|
||||
Description: "single event effect generator"
|
||||
|
||||
|
||||
PORT_TABLE:
|
||||
|
||||
Port_Name: ctrl out
|
||||
Description: "control input" "output"
|
||||
Direction: in out
|
||||
Default_Type: v i
|
||||
Allowed_Types: [v,vd,i,id] [i,id]
|
||||
Vector: no yes
|
||||
Vector_Bounds: - [1 -]
|
||||
Null_Allowed: yes no
|
||||
|
||||
|
||||
PARAMETER_TABLE:
|
||||
|
||||
Parameter_Name: talpha tbeta
|
||||
Description: "alpha" "beta"
|
||||
Data_Type: real real
|
||||
Default_Value: 500e-12 20e-12
|
||||
Limits: - -
|
||||
Vector: no no
|
||||
Vector_Bounds: - -
|
||||
Null_Allowed: yes yes
|
||||
|
||||
|
||||
PARAMETER_TABLE:
|
||||
|
||||
Parameter_Name: tdelay inull
|
||||
Description: "pulse delay" "max current"
|
||||
Data_Type: real real
|
||||
Default_Value: 0 200e-6
|
||||
Limits: - -
|
||||
Vector: no no
|
||||
Vector_Bounds: - -
|
||||
Null_Allowed: yes yes
|
||||
|
||||
PARAMETER_TABLE:
|
||||
|
||||
Parameter_Name: tperiod ctrlthres
|
||||
Description: "pulse repetition" "control voltage threshold"
|
||||
Data_Type: real real
|
||||
Default_Value: 0 0.5
|
||||
Limits: - -
|
||||
Vector: no no
|
||||
Vector_Bounds: - -
|
||||
Null_Allowed: yes yes
|
||||
|
||||
STATIC_VAR_TABLE:
|
||||
|
||||
Static_Var_Name: last_t_value
|
||||
Data_Type: pointer
|
||||
Vector: no
|
||||
Description: "next pulse start time"
|
||||
|
||||
STATIC_VAR_TABLE:
|
||||
|
||||
Static_Var_Name: pulse_number
|
||||
Data_Type: pointer
|
||||
Vector: no
|
||||
Description: "number of pulse"
|
||||
|
||||
STATIC_VAR_TABLE:
|
||||
|
||||
Static_Var_Name: last_ctrl
|
||||
Data_Type: pointer
|
||||
Vector: no
|
||||
Description: "last control value"
|
||||
|
||||
Description
|
||||
This code model generates "double exponentially" formed current pulses according to
|
||||
i(t) = inull * (exp(-(t-tdelay)/talpha) - (exp(-(t-tdelay)/tbeta) for t > tdelay
|
||||
i(t) = 0 for t < tdelay
|
||||
Minimum is one pulse output (a node pair, or a single node with the other grounded).
|
||||
Several output node pairs may be defined per code model instance. Parameter tperiod
|
||||
may then be used to create pulses in sequence. The first pulse is issued in the first
|
||||
node pair of the node list in the vector [], the second (after time tperiod has elapsed), is injected by the
|
||||
second node (pair) of the list and so on. The control input ctrl (voltage or current) may be used
|
||||
to start or repeat the whole sequence, depending on the circuit status. A rising voltage
|
||||
at ctrl, when crossing the threshold given by ctrlthres, will initiate the sequence (including
|
||||
tdelay and tperiod).
|
||||
|
||||
This model will work in transient analysis.
|
||||
|
||||
Example ngspice usage (with control)
|
||||
|
||||
aseegen1 ctrl [%id(n1 m1) %id(n2 m2) %id(n1 m1) %id(n2 m2)] seemod1
|
||||
.model seemod1 seegen (tdelay = 8n tperiod=25n)
|
||||
|
||||
Example ngspice usage (without control, parameters as offered by default)
|
||||
|
||||
aseegen2 NULL [%id(n1 m1) %id(n5 n6) %id(n6 n7) %i(isingle) ] seemod2
|
||||
.model seemod2 seegen (tdelay = 0 tperiod=0 ctrlthres=0.5 inull=200u talpha=500p tbeta=20p)
|
||||
Loading…
Reference in New Issue