sycan.components.active.triode¶
Vacuum-tube triode with Langmuir 3/2-power DC law and small-signal AC model derived by differentiation.
DC:
I_p = K * (mu * V_gk + V_pk) ** (3/2)
(valid in the forward-conduction region mu*V_gk + V_pk > 0), with
V_gk = V(grid) - V(cathode)V_pk = V(plate) - V(cathode)
Plate current flows from plate to cathode internally, so externally it enters the plate terminal and exits the cathode — the same sign convention as the drain-current of an NMOS.
AC small-signal — obtained by differentiating I_p at the
operating point (V_g_op, V_p_op):
g_m = dI_p/dV_gk |_OP = (3/2) K mu (mu V_g_op + V_p_op) ** (1/2)
g_p = dI_p/dV_pk |_OP = (3/2) K (mu V_g_op + V_p_op) ** (1/2)
which obeys the classic triode identity mu = g_m / g_p = g_m * r_p.
Three intrinsic capacitances (grid-cathode, grid-plate, plate-cathode) can be supplied; the grid-plate cap is the dominant Miller contribution in a grounded-cathode amplifier.
If V_g_op / V_p_op are not provided, per-instance symbols are
generated so that multiple tubes in one circuit do not collide.
Classes
|
Vacuum-tube triode. |
- class sycan.components.active.triode.Triode(name, plate, grid, cathode, K, mu, V_g_op=None, V_p_op=None, C_gk=<factory>, C_gp=<factory>, C_pk=<factory>, *, include_noise=None)[source]¶
Bases:
ComponentVacuum-tube triode.
With
include_noise="thermal"(or"all") a thermal noise current source is attached between plate and cathode with PSD4·k_B·T·g_mwhereg_mis the small-signal transconductance evaluated at(V_g_op, V_p_op).- Parameters:
name (str)
plate (str)
grid (str)
cathode (str)
K (Expr)
mu (Expr)
V_g_op (Expr | None)
V_p_op (Expr | None)
C_gk (Expr)
C_gp (Expr)
C_pk (Expr)
include_noise (None | str | list[str] | tuple[str, ...] | frozenset[str])
- name: str¶
- plate: str¶
- grid: str¶
- cathode: str¶
- K: Expr¶
- mu: Expr¶
- V_g_op: Expr | None = None¶
- V_p_op: Expr | None = None¶
- C_gk: Expr¶
- C_gp: Expr¶
- C_pk: Expr¶
- include_noise: None | str | list[str] | tuple[str, ...] | frozenset[str] = None¶
- ports: ClassVar[tuple[str, ...]] = ('plate', 'grid', 'cathode')¶
- has_nonlinear: ClassVar[bool] = True¶
- SUPPORTED_NOISE: ClassVar[frozenset[str]] = frozenset({'thermal'})¶
- noise_sources()[source]¶
Return the small-signal noise sources this component emits.
Default is no-op; concrete components override to emit thermal / shot / flicker contributions weighted by the
include_noiseselection.- Return type:
list[NoiseSource]
- stamp(ctx)[source]¶
- Parameters:
ctx (StampContext)
- Return type:
None
- stamp_nonlinear(ctx)[source]¶
Add transcendental terms to
ctx.residualsat solve time.Only invoked for DC analysis when the circuit contains at least one component with
has_nonlinear = True. Default is no-op.- Parameters:
ctx (StampContext)
- Return type:
None