KiCad PCB EDA Suite
Loading...
Searching...
No Matches
C_MICROSTRIP Class Reference

#include <c_microstrip.h>

Inheritance diagram for C_MICROSTRIP:
TRANSLINE

Public Member Functions

 C_MICROSTRIP ()
 
 ~C_MICROSTRIP ()
 
void setProperty (enum PRMS_ID aPrmId, double aValue)
 
double getProperty (enum PRMS_ID aPrmId)
 
void getProperties ()
 @function getProperties More...
 
void checkProperties ()
 @function checkProperties More...
 
void setResult (int, double, const char *)
 
void setResult (int, const char *)
 
bool isSelected (enum PRMS_ID aPrmId)
 
void Init ()
 
virtual void synthesize ()
 
virtual void calc ()
 
void analyze ()
 

Public Attributes

const char * m_Name
 
KIGFX::COLOR4D errCol = KIGFX::COLOR4D( 1, 0.63, 0.63, 1 )
 
KIGFX::COLOR4D warnCol = KIGFX::COLOR4D( 1, 1, 0.57, 1 )
 
KIGFX::COLOR4D okCol = KIGFX::COLOR4D( 1, 1, 1, 1 )
 

Protected Member Functions

bool minimizeZ0Error1D (double *)
 @function minimizeZ0Error1D More...
 
double skin_depth ()
 @function skin_depth calculate skin depth More...
 
void ellipke (double, double &, double &)
 
double ellipk (double)
 
void setErrorLevel (PRMS_ID, char)
 @function setErrorLevel More...
 

Protected Attributes

double m_parameters [EXTRA_PRMS_COUNT]
 

Private Member Functions

double delta_u_thickness_single (double, double)
 
void delta_u_thickness ()
 
void compute_single_line ()
 
double filling_factor_even (double, double, double)
 
double filling_factor_odd (double, double, double)
 filling_factor_odd() - compute the filling factor for the coupled microstrips odd-mode without cover and zero conductor thickness More...
 
double delta_q_cover_even (double)
 
double delta_q_cover_odd (double)
 
void er_eff_static ()
 er_eff_static() - compute the static effective dielectric constants More...
 
double delta_Z0_even_cover (double, double, double)
 delta_Z0_even_cover() - compute the even-mode impedance correction for a homogeneous microstrip due to the cover More...
 
double delta_Z0_odd_cover (double, double, double)
 delta_Z0_odd_cover() - compute the odd-mode impedance correction for a homogeneous microstrip due to the cover More...
 
void Z0_even_odd ()
 Z0_even_odd() - compute the static even- and odd-mode static impedances. More...
 
void er_eff_freq ()
 
void conductor_losses ()
 
void dielectric_losses ()
 
void attenuation ()
 
void line_angle ()
 
void diff_impedance ()
 Note that differential impedance is exactly twice the odd mode impedance. More...
 
void syn_err_fun (double *, double *, double, double, double, double, double)
 
void synth_width ()
 
void Z0_dispersion ()
 
void calcAnalyze () override
 Computation for analysis. More...
 
void calcSynthesize () override
 Computation for synthesis. More...
 
void showAnalyze () override
 Shows synthesis results and checks for errors / warnings. More...
 
void showSynthesize () override
 Shows analysis results and checks for errors / warnings. More...
 
void show_results () override
 Shows results. More...
 
void syn_fun (double *, double *, double, double, double, double)
 

Private Attributes

double h
 
double ht
 
double t
 
double rough
 
double w
 
double w_t_e
 
double w_t_o
 
double l
 
double s
 
double Z0_e_0
 
double Z0_o_0
 
double Zdiff
 
double Z0e
 
double Z0o
 
double c_e
 
double c_o
 
double ang_l_e
 
double ang_l_o
 
double er_eff_e
 
double er_eff_o
 
double er_eff_e_0
 
double er_eff_o_0
 
double w_eff
 
double atten_dielectric_e
 
double atten_cond_e
 
double atten_dielectric_o
 
double atten_cond_o
 
MICROSTRIPaux_ms
 

Detailed Description

Definition at line 31 of file c_microstrip.h.

Constructor & Destructor Documentation

◆ C_MICROSTRIP()

C_MICROSTRIP::C_MICROSTRIP ( )

Definition at line 39 of file c_microstrip.cpp.

References TRANSLINE::Init(), and TRANSLINE::m_Name.

◆ ~C_MICROSTRIP()

C_MICROSTRIP::~C_MICROSTRIP ( )

Definition at line 74 of file c_microstrip.cpp.

References aux_ms.

Member Function Documentation

◆ analyze()

◆ attenuation()

void C_MICROSTRIP::attenuation ( )
private

◆ calc()

virtual void TRANSLINE::calc ( )
inlinevirtualinherited

Definition at line 97 of file transline.h.

◆ calcAnalyze()

void C_MICROSTRIP::calcAnalyze ( )
overrideprivatevirtual

Computation for analysis.

Reimplemented from TRANSLINE.

Definition at line 797 of file c_microstrip.cpp.

References attenuation(), delta_u_thickness(), diff_impedance(), er_eff_freq(), er_eff_static(), line_angle(), Z0_dispersion(), and Z0_even_odd().

Referenced by calcSynthesize(), and syn_fun().

◆ calcSynthesize()

void C_MICROSTRIP::calcSynthesize ( )
overrideprivatevirtual

◆ checkProperties()

void TRANSLINE::checkProperties ( )
inherited

@function checkProperties

Checks the input parameters (ie: negative length). Does not check for incompatibility between values as this depends on the line shape.

Definition at line 166 of file transline.cpp.

References EPSILONR_PRM, FREQUENCY_PRM, H_PRM, H_T_PRM, TRANSLINE::m_parameters, MUR_PRM, MURC_PRM, RHO_PRM, TRANSLINE::setErrorLevel(), STRIPLINE_A_PRM, TAND_PRM, TRANSLINE_WARNING, TWISTEDPAIR_EPSILONR_ENV_PRM, and TWISTEDPAIR_TWIST_PRM.

Referenced by TRANSLINE::analyze(), and TRANSLINE::synthesize().

◆ compute_single_line()

void C_MICROSTRIP::compute_single_line ( )
private

◆ conductor_losses()

void C_MICROSTRIP::conductor_losses ( )
private

◆ delta_q_cover_even()

double C_MICROSTRIP::delta_q_cover_even ( double  h2h)
private

Definition at line 215 of file c_microstrip.cpp.

Referenced by er_eff_static().

◆ delta_q_cover_odd()

double C_MICROSTRIP::delta_q_cover_odd ( double  h2h)
private

Definition at line 232 of file c_microstrip.cpp.

Referenced by er_eff_static().

◆ delta_u_thickness()

void C_MICROSTRIP::delta_u_thickness ( )
private

◆ delta_u_thickness_single()

double C_MICROSTRIP::delta_u_thickness_single ( double  u,
double  t_h 
)
private

Definition at line 88 of file c_microstrip.cpp.

Referenced by delta_u_thickness().

◆ delta_Z0_even_cover()

double C_MICROSTRIP::delta_Z0_even_cover ( double  g,
double  u,
double  h2h 
)
private

delta_Z0_even_cover() - compute the even-mode impedance correction for a homogeneous microstrip due to the cover

References: S. March, "Microstrip Packaging: Watch the Last Step", Microwaves, vol. 20, no. 13, pp. 83.94, Dec. 1981.

Definition at line 307 of file c_microstrip.cpp.

References atanh(), D, and F.

Referenced by Z0_even_odd().

◆ delta_Z0_odd_cover()

double C_MICROSTRIP::delta_Z0_odd_cover ( double  g,
double  u,
double  h2h 
)
private

delta_Z0_odd_cover() - compute the odd-mode impedance correction for a homogeneous microstrip due to the cover

References: S. March, "Microstrip Packaging: Watch the Last Step", Microwaves, vol. 20, no. 13, pp. 83.94, Dec. 1981.

Definition at line 337 of file c_microstrip.cpp.

References G.

Referenced by Z0_even_odd().

◆ dielectric_losses()

void C_MICROSTRIP::dielectric_losses ( )
private

◆ diff_impedance()

void C_MICROSTRIP::diff_impedance ( )
private

Note that differential impedance is exactly twice the odd mode impedance.

Odd mode is not the same as single-ended impedance, so avoid approximations found on websites that use static single ended impedance as the starting point

Definition at line 591 of file c_microstrip.cpp.

References Z0_o_0, and Zdiff.

Referenced by calcAnalyze().

◆ ellipk()

double TRANSLINE::ellipk ( double  k)
protectedinherited

Definition at line 321 of file transline.cpp.

References TRANSLINE::ellipke().

Referenced by COPLANAR::calcAnalyze().

◆ ellipke()

void TRANSLINE::ellipke ( double  arg,
double &  k,
double &  e 
)
protectedinherited

Definition at line 256 of file transline.cpp.

References INFINITY, M_PI_2, and NR_EPSI.

Referenced by TRANSLINE::ellipk().

◆ er_eff_freq()

void C_MICROSTRIP::er_eff_freq ( )
private

◆ er_eff_static()

void C_MICROSTRIP::er_eff_static ( )
private

er_eff_static() - compute the static effective dielectric constants

References: Manfred Kirschning and Rolf Jansen, "Accurate Wide-Range Design Equations for the Frequency-Dependent Characteristic of Parallel Coupled Microstrip Lines", IEEE Trans. MTT, vol. 32, no. 1, Jan. 1984

Definition at line 253 of file c_microstrip.cpp.

References aux_ms, compute_single_line(), delta_q_cover_even(), delta_q_cover_odd(), MICROSTRIP::delta_q_thickness(), EPSILONR_PRM, MICROSTRIP::er_eff_0, er_eff_e_0, er_eff_o_0, filling_factor_even(), filling_factor_odd(), H_PRM, H_T_PRM, TRANSLINE::m_parameters, PHYS_S_PRM, T_PRM, w_t_e, and w_t_o.

Referenced by calcAnalyze().

◆ filling_factor_even()

double C_MICROSTRIP::filling_factor_even ( double  u,
double  g,
double  e_r 
)
private

Definition at line 176 of file c_microstrip.cpp.

References v3, and v4.

Referenced by er_eff_static().

◆ filling_factor_odd()

double C_MICROSTRIP::filling_factor_odd ( double  u,
double  g,
double  e_r 
)
private

filling_factor_odd() - compute the filling factor for the coupled microstrips odd-mode without cover and zero conductor thickness

Definition at line 198 of file c_microstrip.cpp.

Referenced by er_eff_static().

◆ getProperties()

void TRANSLINE::getProperties ( )
inherited

@function getProperties

Get all properties from the UI. Computes some extra ones.

Definition at line 147 of file transline.cpp.

References DUMMY_PRM, EPSILON_EFF_PRM, TRANSLINE::getProperty(), TRANSLINE::m_parameters, RHO_PRM, TRANSLINE::setErrorLevel(), SIGMA_PRM, TRANSLINE::skin_depth(), SKIN_DEPTH_PRM, and TRANSLINE_OK.

Referenced by TRANSLINE::analyze(), and TRANSLINE::synthesize().

◆ getProperty()

◆ Init()

◆ isSelected()

◆ line_angle()

void C_MICROSTRIP::line_angle ( )
private

Definition at line 564 of file c_microstrip.cpp.

References ang_l_e, ang_l_o, C0, er_eff_e, er_eff_o, FREQUENCY_PRM, TRANSLINE::m_parameters, and PHYS_LEN_PRM.

Referenced by calcAnalyze().

◆ minimizeZ0Error1D()

bool TRANSLINE::minimizeZ0Error1D ( double *  aVar)
protectedinherited

@function minimizeZ0Error1D

Tries to find a parameter that minimizes the error ( on Z0 ). This function only works with a single parameter. Calls calcAnalyze several times until the error is acceptable. While the error is unnacceptable, changes slightly the parameter.

This function does not change Z0 / Angl_L.

Parameters
avarParameter to synthesize
Returns
'true' if error < MAX_ERROR, else 'false'

Definition at line 346 of file transline.cpp.

References ANG_L_PRM, C0, TRANSLINE::calcAnalyze(), EPSILON_EFF_PRM, FREQUENCY_PRM, TRANSLINE::m_parameters, MAX_ERROR, PHYS_LEN_PRM, and Z0_PRM.

Referenced by COPLANAR::calcSynthesize(), MICROSTRIP::calcSynthesize(), STRIPLINE::calcSynthesize(), and TWISTEDPAIR::calcSynthesize().

◆ setErrorLevel()

◆ setProperty()

◆ setResult() [1/2]

void TRANSLINE::setResult ( int  line,
const char *  text 
)
inherited

Definition at line 124 of file transline.cpp.

References SetResultInDialog(), and text.

◆ setResult() [2/2]

void TRANSLINE::setResult ( int  line,
double  value,
const char *  text 
)
inherited

◆ show_results()

void C_MICROSTRIP::show_results ( )
overrideprivatevirtual

◆ showAnalyze()

void C_MICROSTRIP::showAnalyze ( )
overrideprivatevirtual

Shows synthesis results and checks for errors / warnings.

Reimplemented from TRANSLINE.

Definition at line 818 of file c_microstrip.cpp.

References ang_l_e, ang_l_o, ANG_L_PRM, TRANSLINE::m_parameters, PHYS_LEN_PRM, PHYS_S_PRM, PHYS_WIDTH_PRM, TRANSLINE::setErrorLevel(), TRANSLINE::setProperty(), TRANSLINE_ERROR, TRANSLINE_WARNING, Z0_E_PRM, and Z0_O_PRM.

◆ showSynthesize()

void C_MICROSTRIP::showSynthesize ( )
overrideprivatevirtual

Shows analysis results and checks for errors / warnings.

Reimplemented from TRANSLINE.

Definition at line 845 of file c_microstrip.cpp.

References ANG_L_PRM, TRANSLINE::m_parameters, PHYS_LEN_PRM, PHYS_S_PRM, PHYS_WIDTH_PRM, TRANSLINE::setErrorLevel(), TRANSLINE::setProperty(), TRANSLINE_ERROR, TRANSLINE_WARNING, Z0_E_PRM, and Z0_O_PRM.

◆ skin_depth()

double TRANSLINE::skin_depth ( )
protectedinherited

@function skin_depth calculate skin depth

$ \frac{1}{\sqrt{ \pi \cdot f \cdot \mu \cdot \sigma }} $

Definition at line 234 of file transline.cpp.

References FREQUENCY_PRM, TRANSLINE::m_parameters, MU0, MURC_PRM, and SIGMA_PRM.

Referenced by attenuation(), MICROSTRIP::attenuation(), COPLANAR::calcAnalyze(), STRIPLINE::calcAnalyze(), and TRANSLINE::getProperties().

◆ syn_err_fun()

void C_MICROSTRIP::syn_err_fun ( double *  f1,
double *  f2,
double  s_h,
double  w_h,
double  e_r,
double  w_h_se,
double  w_h_so 
)
private

Definition at line 597 of file c_microstrip.cpp.

References acosh().

Referenced by synth_width().

◆ syn_fun()

void C_MICROSTRIP::syn_fun ( double *  f1,
double *  f2,
double  s_h,
double  w_h,
double  Z0_e,
double  Z0_o 
)
private

◆ synth_width()

void C_MICROSTRIP::synth_width ( )
private

◆ synthesize()

◆ Z0_dispersion()

void C_MICROSTRIP::Z0_dispersion ( )
private

◆ Z0_even_odd()

void C_MICROSTRIP::Z0_even_odd ( )
private

Z0_even_odd() - compute the static even- and odd-mode static impedances.

References: Manfred Kirschning and Rolf Jansen, "Accurate Wide-Range Design Equations for the Frequency-Dependent Characteristic of Parallel Coupled Microstrip Lines", IEEE Trans. MTT, vol. 32, no. 1, Jan. 1984

Definition at line 374 of file c_microstrip.cpp.

References aux_ms, delta_Z0_even_cover(), delta_Z0_odd_cover(), MICROSTRIP::er_eff_0, er_eff_e_0, er_eff_o_0, H_PRM, H_T_PRM, TRANSLINE::m_parameters, PHYS_S_PRM, w_t_e, w_t_o, MICROSTRIP::Z0_0, Z0_e_0, Z0_o_0, and ZF0.

Referenced by calcAnalyze().

Member Data Documentation

◆ ang_l_e

double C_MICROSTRIP::ang_l_e
private

Definition at line 54 of file c_microstrip.h.

Referenced by calcSynthesize(), line_angle(), and showAnalyze().

◆ ang_l_o

double C_MICROSTRIP::ang_l_o
private

Definition at line 55 of file c_microstrip.h.

Referenced by calcSynthesize(), line_angle(), and showAnalyze().

◆ atten_cond_e

double C_MICROSTRIP::atten_cond_e
private

Definition at line 62 of file c_microstrip.h.

Referenced by conductor_losses(), and show_results().

◆ atten_cond_o

double C_MICROSTRIP::atten_cond_o
private

Definition at line 64 of file c_microstrip.h.

Referenced by conductor_losses(), and show_results().

◆ atten_dielectric_e

double C_MICROSTRIP::atten_dielectric_e
private

Definition at line 61 of file c_microstrip.h.

Referenced by dielectric_losses(), and show_results().

◆ atten_dielectric_o

double C_MICROSTRIP::atten_dielectric_o
private

Definition at line 63 of file c_microstrip.h.

Referenced by dielectric_losses(), and show_results().

◆ aux_ms

MICROSTRIP* C_MICROSTRIP::aux_ms
private

◆ c_e

double C_MICROSTRIP::c_e
private

Definition at line 52 of file c_microstrip.h.

◆ c_o

double C_MICROSTRIP::c_o
private

Definition at line 53 of file c_microstrip.h.

◆ er_eff_e

double C_MICROSTRIP::er_eff_e
private

Definition at line 56 of file c_microstrip.h.

Referenced by calcSynthesize(), er_eff_freq(), line_angle(), and show_results().

◆ er_eff_e_0

double C_MICROSTRIP::er_eff_e_0
private

◆ er_eff_o

double C_MICROSTRIP::er_eff_o
private

Definition at line 57 of file c_microstrip.h.

Referenced by calcSynthesize(), er_eff_freq(), line_angle(), show_results(), and Z0_dispersion().

◆ er_eff_o_0

double C_MICROSTRIP::er_eff_o_0
private

◆ errCol

KIGFX::COLOR4D TRANSLINE::errCol = KIGFX::COLOR4D( 1, 0.63, 0.63, 1 )
inherited

Definition at line 126 of file transline.h.

Referenced by TRANSLINE::setErrorLevel().

◆ h

double C_MICROSTRIP::h
private

Definition at line 38 of file c_microstrip.h.

◆ ht

double C_MICROSTRIP::ht
private

Definition at line 39 of file c_microstrip.h.

◆ l

double C_MICROSTRIP::l
private

Definition at line 45 of file c_microstrip.h.

◆ m_Name

◆ m_parameters

double TRANSLINE::m_parameters[EXTRA_PRMS_COUNT]
protectedinherited

Definition at line 131 of file transline.h.

Referenced by RECTWAVEGUIDE::alphac(), COAX::alphac_coax(), RECTWAVEGUIDE::alphad(), COAX::alphad_coax(), attenuation(), MICROSTRIP::attenuation(), COAX::calcAnalyze(), COPLANAR::calcAnalyze(), RECTWAVEGUIDE::calcAnalyze(), STRIPLINE::calcAnalyze(), TWISTEDPAIR::calcAnalyze(), calcSynthesize(), COAX::calcSynthesize(), COPLANAR::calcSynthesize(), MICROSTRIP::calcSynthesize(), RECTWAVEGUIDE::calcSynthesize(), STRIPLINE::calcSynthesize(), TWISTEDPAIR::calcSynthesize(), TRANSLINE::checkProperties(), compute_single_line(), conductor_losses(), MICROSTRIP::conductor_losses(), delta_u_thickness(), dielectric_losses(), MICROSTRIP::dielectric_losses(), MICROSTRIP::dispersion(), er_eff_freq(), er_eff_static(), RECTWAVEGUIDE::fc(), RECTWAVEGUIDE::get_rectwaveguide_comp(), RECTWAVEGUIDE::get_rectwaveguide_elec(), RECTWAVEGUIDE::get_rectwaveguide_phys(), RECTWAVEGUIDE::get_rectwaveguide_sub(), TRANSLINE::getProperties(), TRANSLINE::Init(), RECTWAVEGUIDE::kc_square(), RECTWAVEGUIDE::kval_square(), line_angle(), MICROSTRIP::line_angle(), STRIPLINE::lineImpedance(), MICROSTRIP::microstrip_Z0(), TRANSLINE::minimizeZ0Error1D(), MICROSTRIP::mur_eff_ms(), show_results(), COAX::show_results(), COPLANAR::show_results(), MICROSTRIP::show_results(), RECTWAVEGUIDE::show_results(), STRIPLINE::show_results(), TWISTEDPAIR::show_results(), showAnalyze(), COAX::showAnalyze(), COPLANAR::showAnalyze(), MICROSTRIP::showAnalyze(), RECTWAVEGUIDE::showAnalyze(), STRIPLINE::showAnalyze(), TWISTEDPAIR::showAnalyze(), showSynthesize(), COAX::showSynthesize(), COPLANAR::showSynthesize(), MICROSTRIP::showSynthesize(), RECTWAVEGUIDE::showSynthesize(), STRIPLINE::showSynthesize(), TWISTEDPAIR::showSynthesize(), TRANSLINE::skin_depth(), syn_fun(), synth_width(), MICROSTRIP::synth_width(), TRANSLINE::TRANSLINE(), Z0_dispersion(), and Z0_even_odd().

◆ okCol

KIGFX::COLOR4D TRANSLINE::okCol = KIGFX::COLOR4D( 1, 1, 1, 1 )
inherited

Definition at line 128 of file transline.h.

Referenced by TRANSLINE::Init(), and TRANSLINE::setErrorLevel().

◆ rough

double C_MICROSTRIP::rough
private

Definition at line 41 of file c_microstrip.h.

◆ s

double C_MICROSTRIP::s
private

Definition at line 46 of file c_microstrip.h.

◆ t

double C_MICROSTRIP::t
private

Definition at line 40 of file c_microstrip.h.

◆ w

double C_MICROSTRIP::w
private

Definition at line 42 of file c_microstrip.h.

◆ w_eff

double C_MICROSTRIP::w_eff
private

Definition at line 60 of file c_microstrip.h.

◆ w_t_e

double C_MICROSTRIP::w_t_e
private

Definition at line 43 of file c_microstrip.h.

Referenced by delta_u_thickness(), er_eff_static(), and Z0_even_odd().

◆ w_t_o

double C_MICROSTRIP::w_t_o
private

Definition at line 44 of file c_microstrip.h.

Referenced by delta_u_thickness(), er_eff_static(), and Z0_even_odd().

◆ warnCol

KIGFX::COLOR4D TRANSLINE::warnCol = KIGFX::COLOR4D( 1, 1, 0.57, 1 )
inherited

Definition at line 127 of file transline.h.

Referenced by TRANSLINE::setErrorLevel().

◆ Z0_e_0

double C_MICROSTRIP::Z0_e_0
private

Definition at line 47 of file c_microstrip.h.

Referenced by conductor_losses(), Z0_dispersion(), and Z0_even_odd().

◆ Z0_o_0

double C_MICROSTRIP::Z0_o_0
private

Definition at line 48 of file c_microstrip.h.

Referenced by conductor_losses(), diff_impedance(), Z0_dispersion(), and Z0_even_odd().

◆ Z0e

double C_MICROSTRIP::Z0e
private

Definition at line 50 of file c_microstrip.h.

◆ Z0o

double C_MICROSTRIP::Z0o
private

Definition at line 51 of file c_microstrip.h.

◆ Zdiff

double C_MICROSTRIP::Zdiff
private

Definition at line 49 of file c_microstrip.h.

Referenced by diff_impedance(), and show_results().


The documentation for this class was generated from the following files: