KiCad PCB EDA Suite
Loading...
Searching...
No Matches
coupled_microstrip.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2001 Gopal Narayanan <[email protected]>
3 * Copyright (C) 2002 Claudio Girardi <[email protected]>
4 * Copyright (C) 2005, 2006 Stefan Jahn <[email protected]>
5 * Modified for Kicad: 2018 Jean-Pierre Charras <jp.charras at wanadoo.fr>
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this package; see the file COPYING. If not, write to
20 * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
21 * Boston, MA 02110-1301, USA.
22 */
23
24#ifndef TRANSLINE_CALCULATIONS_COUPLED_MICROSTRIP_H
25#define TRANSLINE_CALCULATIONS_COUPLED_MICROSTRIP_H
26
27
30
31
33{
35
36public:
65
67 void Analyse() override;
68
70 bool Synthesize( SYNTHESIZE_OPTS aOpts ) override;
71
72private:
74 void SetAnalysisResults() override;
75
77 void SetSynthesisResults() override;
78
85 double delta_u_thickness_single( double, double );
86
94 void delta_u_thickness();
95
98
100 double filling_factor_even( double, double, double );
101
105 double filling_factor_odd( double, double, double );
106
108 double delta_q_cover_even( double );
109
111 double delta_q_cover_odd( double );
112
119 void er_eff_static();
120
127 double delta_Z0_even_cover( double, double, double );
128
135 double delta_Z0_odd_cover( double, double, double );
136
143 void Z0_even_odd();
144
146 void er_eff_freq();
147
149 void conductor_losses();
150
152 void dielectric_losses();
153
155 void attenuation();
156
158 void line_angle();
159
161 void diff_impedance();
162
164 void Z0_dispersion();
165
167 void syn_err_fun( double*, double*, double, double, double, double, double );
168
175 void synth_width();
176
177 void syn_fun( double*, double*, double, double, double, double );
178
181
182 double w_t_e{ 0.0 };
183 double w_t_o{ 0.0 };
184 double er_eff_e_0{ 0.0 };
185 double er_eff_o_0{ 0.0 };
186 double Z0_e_0{ 0.0 };
187 double Z0_o_0{ 0.0 };
188 double er_eff_e{ 0.0 };
189 double er_eff_o{ 0.0 };
190 double prop_delay_e{ 0.0 };
191 double prop_delay_o{ 0.0 };
192 double atten_cond_e{ 0.0 };
193 double atten_cond_o{ 0.0 };
194 double atten_dielectric_e{ 0.0 };
195 double atten_dielectric_o{ 0.0 };
196 double ang_l_e{ 0.0 };
197 double ang_l_o{ 0.0 };
198 double Zdiff{ 0.0 };
199};
200
201
202#endif //TRANSLINE_CALCULATIONS_COUPLED_MICROSTRIP_H
void Z0_dispersion()
Calculate frequency dependency of characteristic impedances.
void delta_u_thickness()
Compute the thickness effect on normalized width for coupled microstrips.
void er_eff_static()
Compute the static effective dielectric constants.
void diff_impedance()
Calculate the differential impedance of the coupled microstrips.
double delta_u_thickness_single(double, double)
Computes the thickness effect on normalized width for a single microstrip line.
MICROSTRIP m_aux_microstrip
Runs intermediate single-track calculations.
TRANSLINE_PARAMETERS TCP
void line_angle()
Compute electrical length in radians.
void synth_width()
Calculate widths given Z0 and e_r.
void syn_err_fun(double *, double *, double, double, double, double, double)
Error function to minimise when synthesising trace geometry.
void attenuation()
Compute attenuation.
double filling_factor_even(double, double, double)
Compute the filling factor for the coupled microstrip even mode without cover and zero conductor thic...
double delta_Z0_odd_cover(double, double, double)
Compute the odd mode impedance correction for a homogeneous microstrip due to the cover.
void compute_single_line()
Computes initial parameters for a single microstrip.
void SetAnalysisResults() override
Sets the output values and status following analysis.
void er_eff_freq()
Compute er_eff as a function of frequency.
void conductor_losses()
Compute conductor losses per unit length.
void Analyse() override
Analyse track geometry parameters to output Z0 and Ang_L.
void SetSynthesisResults() override
Sets the output values and status following synthesis.
void syn_fun(double *, double *, double, double, double, double)
double delta_q_cover_even(double)
Compute the cover effect on filling factor for the even mode.
double delta_q_cover_odd(double)
Compute the cover effect on filling factor for the odd mode.
bool Synthesize(SYNTHESIZE_OPTS aOpts) override
Synthesis track geometry parameters to match given Z0.
double filling_factor_odd(double, double, double)
Compute the filling factor for the coupled microstrip odd mode without cover and zero conductor thick...
void Z0_even_odd()
Compute the static even- and odd-mode static impedances.
void dielectric_losses()
Compute dielectric losses per unit length.
double delta_Z0_even_cover(double, double, double)
Compute the even mode impedance correction for a homogeneous microstrip due to the cover.
TRANSLINE_CALCULATION_BASE(std::initializer_list< TRANSLINE_PARAMETERS > aParameters)
Constructs the transmission line calculation object.
SYNTHESIZE_OPTS
Options for specifying synthesis inputs, targets, or strategies.
TRANSLINE_PARAMETERS
All possible parameters used (as inputs or outputs) by the transmission line calculations.