sycan.components.blocks.transfer_function¶
Generic linear time-invariant transfer-function block.
Behavioural two-port that enforces
V(out_p) - V(out_m) = H * (V(in_p) - V(in_m))
where H is an arbitrary sympy expression in var (default
s). Useful for signal-flow / loop-filter modelling — sigma-delta
modulators, behavioural filters, control-system blocks — where the
device-level realisation is irrelevant. The control inputs are
high-impedance (no current is drawn) and the output drives like an
ideal VCVS.
DC handling: H is evaluated at var = 0. If the result is
finite the block stamps as a static VCVS with that DC gain; otherwise
the output is left open (no MNA contribution and no auxiliary row),
matching the way an ideal capacitor or integrator would behave at DC.
Pass dc_gain to override either choice.
Classes
|
- class sycan.components.blocks.transfer_function.TransferFunction(name: 'str', in_p: 'str', in_m: 'str', out_p: 'str', out_m: 'str', H: 'cas.Expr', var: 'cas.Symbol' = <factory>, dc_gain: 'Optional[cas.Expr]' = None, *, include_noise: 'NoiseSpec' = None)[source]¶
Bases:
Component- Parameters:
name (str)
in_p (str)
in_m (str)
out_p (str)
out_m (str)
H (Expr)
var (Symbol)
dc_gain (Expr | None)
include_noise (None | str | list[str] | tuple[str, ...] | frozenset[str])
- name: str¶
- in_p: str¶
- in_m: str¶
- out_p: str¶
- out_m: str¶
- H: Expr¶
- var: Symbol¶
- dc_gain: Expr | None = None¶
- include_noise: None | str | list[str] | tuple[str, ...] | frozenset[str] = None¶
- ports: ClassVar[tuple[str, ...]] = ('in_p', 'in_m', 'out_p', 'out_m')¶
- has_aux: ClassVar[bool] = True¶
- SUPPORTED_NOISE: ClassVar[frozenset[str]] = frozenset({})¶
- aux_count(mode)[source]¶
Number of auxiliary branch currents the component needs in
mode.- Parameters:
mode (str)
- Return type:
int
- stamp(ctx)[source]¶
- Parameters:
ctx (StampContext)
- Return type:
None