Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

multiconductor termination network

rickcwalker

Newbie
Joined
Feb 14, 2024
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
32
I'm trying to solve a multiconductor transmission line problem for a practical application.

I've written a classic FDM simulator on a square grid. I'm using a simple relaxation equation to solve for the E field for an arbitrary set of conductors, and then I do a contour integral around each conductor to get the charge on each conductor. I do this setting each conductor to 1.0 volt and all the others to 0.0. I've compared my results to the literature and I think I correctly have an approximate Maxwell capacitance matrix [C0] for vacuum and another [CC] with included dielectrics.

The literature says that [L]=MU*E0*inv[C0] and that [Z] is given by sqrt(MU*E0*inv[C0]*inv[CC]).

I'm putting the upper diagonal terms for L and C into the Ngspice CPL transmission line model. I was hoping to terminate the line in a network that would absorb all modes to eliminate ringing.

If I simply take the [Z] matrix at face value and create a network with all the Rij terms it doesn't properly terminate the line.

How is the [Z] matrix to be interpreted? What is the equation that it is the solution to?

I've got textbooks by Visscher, Paul, and Dworsky, but none of them go beyond generating the [L] and [C] matrices to a practical application of terminating the line for all modes. Any hints are appreciated!

kind regards,
--
Rick Walker
 
Welcome, Rick.

It sounds like you're on the right track. However, saying that the MTL is terminated in [Zc] is not the same as implementing a network of impedances, each of which has the same value as the entry of [Zc]. This is because the [Zc] corresponds to the total impedance seen between each pair of terminals, whereas of course in application we know that a network of impedances will have many elements in parallel, which each affect the effective impedance seen by each terminal.

I believe Clayton Paul's text has the correct solution. I also wrote an algorithm for this, which takes in [Zc] and returns [ZNetwork], which are the physical values between terminals that you are looking for; see below. (Note: I wrote this c++ function using the Eigen linalg library quite a few years ago, and it was never exhaustively tested. However, I recall being reasonably happy with it).

C++:
MatrixXcld TerminationMatrix(const MatrixXcld& Zc)
{
  MatrixXcld Yct = Zc.inverse();
  MatrixXcld YNetwork = -Yct;
  for(unsigned int row = 0; row < YNetwork.rows(); row++)
  {
    complex<long double> ColumnSum = complex<long double>(0,0);
    for(unsigned int col = 0; col < YNetwork.cols(); col++) ColumnSum+= Yct(row,col);
    YNetwork(row,row) = ColumnSum;
  }

  MatrixXcld ZNetwork = YNetwork.cwiseInverse();

  return ZNetwork;
}


I'm also curious about why you are using the "the upper diagonal terms for L and C"? I don't know much about Ngspice, can you elaborate on this format?
 
Hi Planar,

Ngspice has a poorly documented model called CPL. The manual says it takes the upper diagonal terms of the R,L,C,G maxwell matrices and produces an N-port model of the line.

My tool takes an ascii configuration file like this:

# coupler3.geo
# three conductor tranmission line
workspace 200 60
fill_diel 0 0 200 60 3.3
fill_diel 20 30 180 36 4.8
fill_rect 85 29 115 30 // bottom plate
fill_rect 85 36 95 37 // first conductor
fill_rect 105 36 115 37 // second conductor
boundary_fill

and then produces an NGSPICE include file like:

* use like this
* P1 in1 in2 in3 0 out1 out2 out3 0 coupler3

.model coupler3 cpl
+r= 1.00 0.00 0.00
+ 1.00 0.00
+ 1.00
+l= 307.32n 209.96n 209.96n
+ 437.46n 173.19n
+ 437.46n
+g= 0.00 0.00 0.00
+ 0.00 0.00
+ 0.00
+c= 273.14p -93.91p -93.91p
+ 152.94p -15.48p
+ 152.94p
+length=1.0 // in meters

.subckt coupler3_term in1 in2 in3
r11 in1 0 44.6984
r12 in1 in2 8.0905
r13 in1 in3 8.09053
r22 in2 0 -303.918
r23 in2 in3 -69.3351
r33 in3 0 -303.921
.ends term_coupler3

You can see that the specification of R,L,G,C elements are only the upper (N^2+N)/2 elements of the symmetrical matrices. In particular, you can see that the C matrix is in Maxwell form because of the negative off diagonal elements.

The essence of my question is properly generating the "coupler3_term" network. Currently my algorithm from "General equations for the characteristic impedance matrix and termination network of multiconductor transmission lines", Knockaert et al. is giving negative resistor values. Of course, if I am putting the transmission line parameters in the wrong order for SPICE all bets are off. There are a few example networks in the Ngspice source code that make me think I'm doing that part of the problem correctly.

Thank you for your pointers!
--
Rick
 
Ah, yes, the Knockaert et al. paper may have been the algorithm source I was thinking of, it seems my terminology is similar. I might suggest starting with the three-conductor example provided in the paper to validate the NGSpice.

Good Luck!
 
  • Like
Reactions: rickcwalker

    rickcwalker

    Points: 2
    Thank you for taking the time to read my post and look up some code to help me out. It really made a difference.

LaTeX Commands Quick-Menu:

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top