mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-13 17:53:11 +02:00
Add calculation of unit propagation delay to PCB calculator
This commit is contained in:
parent
1af76a9bef
commit
2483ab4d7a
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -372,7 +372,7 @@ PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, con
|
||||
sbMessagesSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Results") ), wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgSizerTranslResults;
|
||||
fgSizerTranslResults = new wxFlexGridSizer( 8, 2, 4, 0 );
|
||||
fgSizerTranslResults = new wxFlexGridSizer( 10, 2, 4, 0 );
|
||||
fgSizerTranslResults->AddGrowableCol( 1 );
|
||||
fgSizerTranslResults->SetFlexibleDirection( wxBOTH );
|
||||
fgSizerTranslResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
@ -441,6 +441,22 @@ PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, con
|
||||
m_Message8->Wrap( -1 );
|
||||
fgSizerTranslResults->Add( m_Message8, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
m_left_message9 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_left_message9->Wrap( -1 );
|
||||
fgSizerTranslResults->Add( m_left_message9, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
m_Message9 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_Message9->Wrap( -1 );
|
||||
fgSizerTranslResults->Add( m_Message9, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
m_left_message10 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_left_message10->Wrap( -1 );
|
||||
fgSizerTranslResults->Add( m_left_message10, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
m_Message10 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_Message10->Wrap( -1 );
|
||||
fgSizerTranslResults->Add( m_Message10, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
sbMessagesSizer->Add( fgSizerTranslResults, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
@ -4150,7 +4150,7 @@
|
||||
<property name="name">fgSizerTranslResults</property>
|
||||
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="rows">8</property>
|
||||
<property name="rows">10</property>
|
||||
<property name="vgap">4</property>
|
||||
<object class="sizeritem" expanded="false">
|
||||
<property name="border">5</property>
|
||||
@ -5144,6 +5144,254 @@
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">dummy</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_left_message9</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; Not forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">dummy</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_Message9</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; Not forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">dummy</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_left_message10</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; Not forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">dummy</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_Message10</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; Not forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -121,6 +121,10 @@ class PANEL_TRANSLINE_BASE : public CALCULATOR_PANEL
|
||||
wxStaticText* m_Message7;
|
||||
wxStaticText* m_left_message8;
|
||||
wxStaticText* m_Message8;
|
||||
wxStaticText* m_left_message9;
|
||||
wxStaticText* m_Message9;
|
||||
wxStaticText* m_left_message10;
|
||||
wxStaticText* m_Message10;
|
||||
wxButton* m_buttonTransLineReset;
|
||||
|
||||
// Virtual event handlers, override them in your derived class
|
||||
|
@ -221,12 +221,9 @@ void PANEL_TRANSLINE::SetPrmBgColor( enum PRMS_ID aPrmId, const KIGFX::COLOR4D*
|
||||
*/
|
||||
void PANEL_TRANSLINE::SetResult( int aLineNumber, const wxString& aText )
|
||||
{
|
||||
#define MSG_CNT_MAX 8
|
||||
wxStaticText* messages[MSG_CNT_MAX] =
|
||||
{ m_Message1, m_Message2, m_Message3,
|
||||
m_Message4, m_Message5, m_Message6,
|
||||
m_Message7, m_Message8
|
||||
};
|
||||
#define MSG_CNT_MAX 10
|
||||
wxStaticText* messages[MSG_CNT_MAX] = { m_Message1, m_Message2, m_Message3, m_Message4, m_Message5,
|
||||
m_Message6, m_Message7, m_Message8, m_Message9, m_Message10 };
|
||||
|
||||
wxASSERT( ( aLineNumber >= 0 ) && ( aLineNumber < MSG_CNT_MAX ) );
|
||||
|
||||
|
@ -452,6 +452,7 @@ void C_MICROSTRIP::er_eff_freq()
|
||||
F_e = P_1 * P_2 * pow( ( P_3 * P_4 + 0.1844 * P_7 ) * f_n, 1.5763 );
|
||||
/* even-mode effective dielectric constant */
|
||||
er_eff_e = m_parameters[EPSILONR_PRM] - ( m_parameters[EPSILONR_PRM] - er_eff ) / ( 1.0 + F_e );
|
||||
prop_delay_e = calcUnitPropagationDelay( er_eff_e );
|
||||
|
||||
er_eff = er_eff_o_0;
|
||||
P_8 = 0.7168 * ( 1.0 + 1.076 / ( 1.0 + 0.0576 * ( m_parameters[EPSILONR_PRM] - 1.0 ) ) );
|
||||
@ -468,6 +469,7 @@ void C_MICROSTRIP::er_eff_freq()
|
||||
F_o = P_1 * P_2 * pow( ( P_3 * P_4 + 0.1844 ) * f_n * P_15, 1.5763 );
|
||||
/* odd-mode effective dielectric constant */
|
||||
er_eff_o = m_parameters[EPSILONR_PRM] - ( m_parameters[EPSILONR_PRM] - er_eff ) / ( 1.0 + F_o );
|
||||
prop_delay_o = calcUnitPropagationDelay( er_eff_o );
|
||||
}
|
||||
|
||||
|
||||
@ -874,13 +876,15 @@ void C_MICROSTRIP::show_results()
|
||||
|
||||
setResult( 0, er_eff_e, "" );
|
||||
setResult( 1, er_eff_o, "" );
|
||||
setResult( 2, atten_cond_e, "dB" );
|
||||
setResult( 3, atten_cond_o, "dB" );
|
||||
setResult( 4, atten_dielectric_e, "dB" );
|
||||
setResult( 5, atten_dielectric_o, "dB" );
|
||||
setResult( 2, prop_delay_e, "ps/cm" );
|
||||
setResult( 3, prop_delay_o, "ps/cm" );
|
||||
setResult( 4, atten_cond_e, "dB" );
|
||||
setResult( 5, atten_cond_o, "dB" );
|
||||
setResult( 6, atten_dielectric_e, "dB" );
|
||||
setResult( 7, atten_dielectric_o, "dB" );
|
||||
|
||||
setResult( 6, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
setResult( 7, Zdiff, "Ω" );
|
||||
setResult( 8, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
setResult( 9, Zdiff, "Ω" );
|
||||
}
|
||||
|
||||
|
||||
|
@ -55,6 +55,8 @@ private:
|
||||
double ang_l_o; // odd-mode electrical length in angle
|
||||
double er_eff_e; // even-mode effective dielectric constant
|
||||
double er_eff_o; // odd-mode effective dielectric constant
|
||||
double prop_delay_e; // even-mode unit propagation delay (ps/cm)
|
||||
double prop_delay_o; // odd-mode unit propagation delay (ps/cm)
|
||||
double er_eff_e_0; // static even-mode effective dielectric constant
|
||||
double er_eff_o_0; // static odd-mode effective dielectric constant
|
||||
double w_eff; // Effective width of line
|
||||
|
@ -35,6 +35,7 @@ COPLANAR::COPLANAR() : TRANSLINE()
|
||||
{
|
||||
m_Name = "CoPlanar";
|
||||
backMetal = false;
|
||||
unit_prop_delay = 0.0;
|
||||
Init();
|
||||
}
|
||||
|
||||
@ -172,6 +173,8 @@ void COPLANAR::calcAnalyze()
|
||||
|
||||
m_parameters[EPSILON_EFF_PRM] = sr_er_f * sr_er_f;
|
||||
m_parameters[Z0_PRM] = zl_factor / sr_er_f;
|
||||
|
||||
unit_prop_delay = calcUnitPropagationDelay( m_parameters[EPSILON_EFF_PRM] );
|
||||
}
|
||||
|
||||
|
||||
@ -180,10 +183,11 @@ void COPLANAR::show_results()
|
||||
{
|
||||
|
||||
setResult( 0, m_parameters[EPSILON_EFF_PRM], "" );
|
||||
setResult( 1, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
|
||||
setResult( 2, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
|
||||
setResult( 1, unit_prop_delay, "ps/cm" );
|
||||
setResult( 2, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
|
||||
setResult( 3, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
|
||||
|
||||
setResult( 3, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
setResult( 4, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,6 +37,7 @@ public:
|
||||
|
||||
protected:
|
||||
bool backMetal;
|
||||
double unit_prop_delay;
|
||||
|
||||
private:
|
||||
void calcAnalyze() override;
|
||||
|
@ -305,6 +305,9 @@ void MICROSTRIP::dispersion()
|
||||
D = Z0_dispersion( u, e_r, e_r_eff_0, e_r_eff_f, f_n );
|
||||
Z0_f = Z0_0 * D;
|
||||
|
||||
// 1e10 factor is to convert from s/m to ps/cm
|
||||
unit_prop_delay = calcUnitPropagationDelay( e_r_eff_f );
|
||||
|
||||
m_parameters[EPSILON_EFF_PRM] = e_r_eff_f;
|
||||
m_parameters[Z0_PRM] = Z0_f;
|
||||
}
|
||||
@ -465,10 +468,11 @@ void MICROSTRIP::show_results()
|
||||
setProperty( ANG_L_PRM, m_parameters[ANG_L_PRM] );
|
||||
|
||||
setResult( 0, m_parameters[EPSILON_EFF_PRM], "" );
|
||||
setResult( 1, atten_cond, "dB" );
|
||||
setResult( 2, atten_dielectric, "dB" );
|
||||
setResult( 1, unit_prop_delay, "ps/cm" );
|
||||
setResult( 2, atten_cond, "dB" );
|
||||
setResult( 3, atten_dielectric, "dB" );
|
||||
|
||||
setResult( 3, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
setResult( 4, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
}
|
||||
|
||||
|
||||
|
@ -49,6 +49,7 @@ private:
|
||||
double w_eff; // Effective width of line
|
||||
double atten_dielectric; // Loss in dielectric (dB)
|
||||
double atten_cond; // Loss in conductors (dB)
|
||||
double unit_prop_delay; // Unit propagation delay (ps/cm)
|
||||
|
||||
// private params
|
||||
double Z0_h_1; // homogeneous stripline impedance
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "stripline.h"
|
||||
#include "units.h"
|
||||
|
||||
STRIPLINE::STRIPLINE() : TRANSLINE()
|
||||
STRIPLINE::STRIPLINE() : TRANSLINE(), unit_prop_delay( 0.0 )
|
||||
{
|
||||
m_Name = "StripLine";
|
||||
Init();
|
||||
@ -104,6 +104,8 @@ void STRIPLINE::calcAnalyze()
|
||||
m_parameters[ANG_L_PRM] = 2.0 * M_PI * m_parameters[PHYS_LEN_PRM]
|
||||
* sqrt( m_parameters[EPSILONR_PRM] ) * m_parameters[FREQUENCY_PRM]
|
||||
/ C0; // in radians
|
||||
|
||||
unit_prop_delay = calcUnitPropagationDelay( m_parameters[EPSILON_EFF_PRM] );
|
||||
}
|
||||
|
||||
|
||||
@ -163,10 +165,11 @@ void STRIPLINE::show_results()
|
||||
{
|
||||
|
||||
setResult( 0, m_parameters[EPSILON_EFF_PRM], "" );
|
||||
setResult( 1, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
|
||||
setResult( 2, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
|
||||
setResult( 1, unit_prop_delay, "ps/cm" );
|
||||
setResult( 2, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
|
||||
setResult( 3, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
|
||||
|
||||
setResult( 3, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
setResult( 4, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
|
||||
}
|
||||
|
||||
|
||||
|
@ -39,6 +39,8 @@ private:
|
||||
void showAnalyze() override;
|
||||
double lineImpedance( double, double& );
|
||||
void show_results() override;
|
||||
|
||||
double unit_prop_delay;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -438,3 +438,9 @@ void TRANSLINE::setErrorLevel( PRMS_ID aP, char aErrorLevel )
|
||||
default: SetPropertyBgColorInDialog( aP, &okCol ); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
double TRANSLINE::calcUnitPropagationDelay( const double epsilonEff )
|
||||
{
|
||||
return std::sqrt( epsilonEff ) * ( 1.0e10 / 2.99e8 );
|
||||
}
|
@ -135,6 +135,9 @@ protected:
|
||||
void ellipke( double, double&, double& );
|
||||
double ellipk( double );
|
||||
void setErrorLevel( PRMS_ID, char );
|
||||
|
||||
/// Calculates the unit propagation delay (in ps/cm) for the given effective dielectric constant
|
||||
static double calcUnitPropagationDelay( double epsilonEff );
|
||||
};
|
||||
|
||||
#endif /* __TRANSLINE_H */
|
||||
|
@ -116,16 +116,12 @@ void PANEL_TRANSLINE::TranslineTypeSelection( enum TRANSLINE_TYPE_ID aType )
|
||||
m_radioBtnPrm2->Show( tr_ident->m_HasPrmSelection );
|
||||
|
||||
// Setup messages
|
||||
wxStaticText* left_msg_list[] =
|
||||
{
|
||||
m_left_message1, m_left_message2, m_left_message3, m_left_message4, m_left_message5,
|
||||
m_left_message6, m_left_message7, m_left_message8, nullptr
|
||||
};
|
||||
wxStaticText* left_msg_list[] = { m_left_message1, m_left_message2, m_left_message3, m_left_message4,
|
||||
m_left_message5, m_left_message6, m_left_message7, m_left_message8,
|
||||
m_left_message9, m_left_message10, nullptr };
|
||||
|
||||
wxStaticText* msg_list[] =
|
||||
{
|
||||
m_Message1, m_Message2, m_Message3, m_Message4, m_Message5, m_Message6, m_Message7, m_Message8, nullptr
|
||||
};
|
||||
wxStaticText* msg_list[] = { m_Message1, m_Message2, m_Message3, m_Message4, m_Message5, m_Message6,
|
||||
m_Message7, m_Message8, m_Message9, m_Message10, nullptr };
|
||||
|
||||
unsigned jj = 0;
|
||||
|
||||
|
@ -117,6 +117,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
|
||||
m_BitmapName = BITMAPS::microstrip;
|
||||
|
||||
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
|
||||
m_Messages.Add( _( "Unit propagation delay:" ) );
|
||||
m_Messages.Add( _( "Conductor losses:" ) );
|
||||
m_Messages.Add( _( "Dielectric losses:" ) );
|
||||
m_Messages.Add( _( "Skin depth:" ) );
|
||||
@ -159,6 +160,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
|
||||
m_HasPrmSelection = true;
|
||||
|
||||
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
|
||||
m_Messages.Add( _( "Unit propagation delay:" ) );
|
||||
m_Messages.Add( _( "Conductor losses:" ) );
|
||||
m_Messages.Add( _( "Dielectric losses:" ) );
|
||||
m_Messages.Add( _( "Skin depth:" ) );
|
||||
@ -193,6 +195,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
|
||||
m_HasPrmSelection = true;
|
||||
|
||||
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
|
||||
m_Messages.Add( _( "Unit propagation delay:" ) );
|
||||
m_Messages.Add( _( "Conductor losses:" ) );
|
||||
m_Messages.Add( _( "Dielectric losses:" ) );
|
||||
m_Messages.Add( _( "Skin depth:" ) );
|
||||
@ -302,6 +305,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
|
||||
|
||||
m_Messages.Add( wxString::Format( _( "Effective %s (even):" ), wxT( "εr" ) ) );
|
||||
m_Messages.Add( wxString::Format( _( "Effective %s (odd):" ), wxT( "εr" ) ) );
|
||||
m_Messages.Add( _( "Unit propagation delay (even):" ) );
|
||||
m_Messages.Add( _( "Unit propagation delay (odd):" ) );
|
||||
m_Messages.Add( _( "Conductor losses (even):" ) );
|
||||
m_Messages.Add( _( "Conductor losses (odd):" ) );
|
||||
m_Messages.Add( _( "Dielectric losses (even):" ) );
|
||||
@ -349,6 +354,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
|
||||
m_BitmapName = BITMAPS::stripline;
|
||||
|
||||
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
|
||||
m_Messages.Add( _( "Unit propagation delay:" ) );
|
||||
m_Messages.Add( _( "Conductor losses:" ) );
|
||||
m_Messages.Add( _( "Dielectric losses:" ) );
|
||||
m_Messages.Add( _( "Skin depth:" ) );
|
||||
|
6
pcbnew/dialogs/panel_setup_condition_help_1clauses.h
Normal file
6
pcbnew/dialogs/panel_setup_condition_help_1clauses.h
Normal file
@ -0,0 +1,6 @@
|
||||
// Do not edit this file, it is autogenerated by CMake from the .md file
|
||||
_HKI( "### Clause\n"
|
||||
"\n"
|
||||
" (condition \"<expression>\")\n"
|
||||
"\n"
|
||||
"<br>" );
|
7
pcbnew/dialogs/panel_setup_condition_help_6notes.h
Normal file
7
pcbnew/dialogs/panel_setup_condition_help_6notes.h
Normal file
@ -0,0 +1,7 @@
|
||||
// Do not edit this file, it is autogenerated by CMake from the .md file
|
||||
_HKI( "### Notes\n"
|
||||
"\n"
|
||||
"Use Ctrl+/ to comment or uncomment line(s).\n"
|
||||
"<br><br><br>\n"
|
||||
"\n"
|
||||
"" );
|
Loading…
x
Reference in New Issue
Block a user