Amplifier
Circuit Setup
Two-port measurement with 20 dB gain amplifier.
using CircuitSim
# Create circuit
circ = Circuit()
# AC power sources (S-parameter ports)
port1 = ACPowerSource("P1", port_num=1, impedance=50.0)
port2 = ACPowerSource("P2", port_num=2, impedance=50.0)
# Amplifier voltage gain: 20 dB gain = linear gain of 10, NF = 2.0
amp = Amplifier("AMP1", gain=10.0, nf=2.0)
# Ground
gnd = Ground("GND")
# Add components
add_component!(circ, port1)
add_component!(circ, amp)
add_component!(circ, port2)
add_component!(circ, gnd)
# Connections
@connect circ port1.nplus amp.input
@connect circ amp.output port2.nplus
@connect circ port1.nminus gnd.n
@connect circ port2.nminus gnd.nS-Parameter Simulation
Measure S-parameters at 2.4 GHz (qucsator requires at least 2 points).
# S-parameter analysis: 2.4 GHz with minimal span (2 points required by simulator)
analysis = SParameterAnalysis(start=2.4e9, stop=2.4001e9, points=2, z0=50.0)
# Run simulation - returns typed SParameterResult directly
sp_result = simulate_qucsator(circ, analysis)
# Get S-parameters at first frequency point
s11 = sp_result.s_matrix[(1,1)][1]
s21 = sp_result.s_matrix[(2,1)][1]
s12 = sp_result.s_matrix[(1,2)][1]
s22 = sp_result.s_matrix[(2,2)][1]
s11_dB = 20 * log10(abs(s11))
s21_dB = 20 * log10(abs(s21))
s12_dB = 20 * log10(abs(s12))
s22_dB = 20 * log10(abs(s22))
println("S11 (input reflection) = $(s11_dB) dB")
println("S21 (forward gain) = $(s21_dB) dB")
println("S12 (reverse isolation) = $(s12_dB) dB")
println("S22 (output reflection) = $(s22_dB) dB")S11 (input reflection) = -Inf dB
S21 (forward gain) = 20.0 dB
S12 (reverse isolation) = -Inf dB
S22 (output reflection) = -Inf dBNoise Parameters
Enable noise parameter extraction to get noise figure, minimum noise figure, optimal source reflection coefficient, and equivalent noise resistance.
# S-parameter analysis with noise enabled
analysis_noise = SParameterAnalysis(start=2.4e9, stop=2.4001e9, points=2, z0=50.0, noise=true)
sp_noise = simulate_qucsator(circ, analysis_noise)
# Extract noise parameters at first frequency
if !isnothing(sp_noise.F)
F_dB = 10 * log10(sp_noise.F[1])
Fmin_dB = 10 * log10(sp_noise.Fmin[1])
Sopt_mag = abs(sp_noise.Sopt[1])
Sopt_angle_deg = angle(sp_noise.Sopt[1]) * 180 / π
Rn = sp_noise.Rn_Ohm[1]
println("Noise Parameters:")
println(" F (Noise Figure) = $(round(F_dB, digits=2)) dB")
println(" Fmin (Minimum NF) = $(round(Fmin_dB, digits=2)) dB")
println(" Γopt = $(round(Sopt_mag, digits=3)) ∠ $(round(Sopt_angle_deg, digits=1))°")
println(" Rn = $(round(Rn, digits=2)) Ω")
endNoise Parameters:
F (Noise Figure) = 3.01 dB
Fmin (Minimum NF) = NaN dB
Γopt = NaN ∠ NaN°
Rn = 12.5 Ω