RF Toolbox 2.6
Modeling a High-Speed Backplane (Part 1: Measured 16-Port S-Parameters to 4-Port S-Parameters)
This demo is in four parts. This first part shows how to use RF Toolbox™ to import n-port S-parameters representing high-speed backplane channels, and converts 16-port S-parameters to 4-port S-parameters to model the channels and the crosstalk between the channels.
With the 4-port S-parameters, a rational function model can be built for a differential channel. The second part of the demo -- Modeling a High-Speed Backplane (Part 2: 4-Port S-Parameters to a Rational Function Model) -- will show how to use rational functions to model a differential high-speed backplane channel.
With the rational function model, a Simulink® model can be built for a differential channel. The third part of the demo -- Modeling a High-Speed Backplane (Part 3: Rational Function Model to a Simulink Model) -- will show how to build a Simulink model from a rational function model.
With the rational function model, a Verilog-A module can also be generated for a differential channel. The fourth part of the demo -- Modeling a High-Speed Backplane (Part 4: Rational Function Model to a Verilog-A Module) -- will show how to generate a Verilog-A module from a rational function model.
Figure 1: 16-Port differential backplane
Contents
Read the Single-Ended 16-Port S-Parameters
Read a S16P Touchstone® data file into an RFDATA.DATA object using the object's READ method. The data in this file are the 50-ohm S-parameters of a 16-port differential backplane designed for 2 Gbps high-speed signal, shown in Figure 1, measured at 1496 frequencies ranging from 50 MHz to 15 GHz.
FileName = 'default.s16p';
SingleEnded16PortData = read(rfdata.data, FileName);
Freq = SingleEnded16PortData.Freq;
nFreq = length(Freq)
nFreq =
1496
Convert the 16-Port S-Parameters to 4-Port S-Parameters to Model a Differential Channel
Use the SNP2SMP function to convert 16-port S-parameters to 4-port S-parameters that represent the first differential channel. The port index of this differential channel, N2M_Index, which specifies how the ports of the 16-port S-parameters map to the ports of the 4-port S-parameters, is [1 16 2 15]. (The port indices of the second, third and fourth channels are [3 14 4 13], [5 12 6 11] and [7 10 8 9], respectively). The other 12 ports, [3 4 5 6 7 8 9 10 11 12 13 14], are terminated with Z0. Then, create an RFCKT object with 4-port S-parameters for the first differential channel.
(Port 1) (Port 16)
Port 1 > ----->| |<----- < Port 2
| DUT |
Port 3 > ----->| |<----- < Port 4
(Port 2) (Port 15)N2M_Index = [1 16 2 15]; ZT = SingleEnded16PortData.Z0; First4PortSParams = snp2smp(SingleEnded16PortData.S_Parameters, ... SingleEnded16PortData.Z0, N2M_Index, ZT); First4PortChannel = rfckt.passive('NetworkData', ... rfdata.network('Data', First4PortSParams, 'Freq', Freq)); First4PortSParamsDataObj = First4PortChannel.NetworkData
First4PortSParamsDataObj =
Name: 'Network parameters'
Type: 'S-Parameters'
Freq: [1496x1 double]
Data: [4x4x1496 double]
Z0: 50
Plot the S21 and S43 parameters of the first differential channel.
fig = figure; plot(First4PortChannel, 'S21', 'S43'); legend show; % If you want to write the 4-port S-parameters of the differential channel % into a .S4P file, then uncomment the line below. % % write(First4PortChannel, 'firstchannel.s4p');
Convert 16-Port S-Parameters to 4-Port S-Parameters to Model the Crosstalk Between Two Differential Channels
Use SNP2SMP function to convert 16-port S-parameters to 4-port S-parameters that represent the crosstalk between port [3 4] and port [16 15]. As shown in Figure 1, these ports are on different channels. The other 12 ports, [1 2 5 6 7 8 9 10 11 12 13 14], are terminated with Z0. Then, create an RFCKT object with 4-port S-parameters for the crosstalk.
(Port 3) (Port 16)
Port 1 > ----->| |<----- < Port 2
| DUT |
Port 3 > ----->| |<----- < Port 4
(Port 4) (Port 15)N2M_Index = [3 16 4 15]; ZT = SingleEnded16PortData.Z0; CrossTalk4PortSParams = snp2smp(SingleEnded16PortData.S_Parameters, ... SingleEnded16PortData.Z0, N2M_Index, ZT); CrossTalk4PortModel = rfckt.passive('NetworkData', ... rfdata.network('Data', CrossTalk4PortSParams, 'Freq', Freq)); CrossTalk4PortSParamsDataObj = CrossTalk4PortModel.NetworkData
CrossTalk4PortSParamsDataObj =
Name: 'Network parameters'
Type: 'S-Parameters'
Freq: [1496x1 double]
Data: [4x4x1496 double]
Z0: 50
Plot the S21, S43, S12 and S34 parameters to show the crosstalk between these two channels.
plot(CrossTalk4PortModel, 'S21', 'S43', 'S12', 'S34'); legend show; % If you want to write the 4-port S-parameters of the crosstalk into a .S4P % file, then uncomment the line below. % % write(CrossTalk4PortModel, 'crosstalk.s4p');
close(fig);
Store