Main Content

pcbComponent

Create single or multifeed PCB component

Since R2021b

Description

Use the pcbComponent object to create a multiport PCB component consisting of metal and dielectric layers.

Creation

Description

pcb = pcbComponent creates a two-port PCB component.

example

pcb = pcbComponent(Name=Value) sets Properties using one or more name-value arguments. For example, pcb = pcbComponent(Name=PCBWilkinson) creates a PCB component named 'PCBWilkinson' Properties not specified retain their default values.

Properties

expand all

Name of the PCB component, specified a character vector or string scalar.

Example: component = pcbComponent(Name='PCBsplitter')

Data Types: char | string

Design revision details of the PCB component, specified as a character vector or string scalar.

Example: component = pcbComponent(Revision='v2.0')

Data Types: char | string

Shape of the PC board, specified as a shape object. You can specify any one of the shapes from Custom Geometry and PCB Fabrication.

Example: trace = tracerectangular; component = pcbComponent(BoardShape=trace) creates a rectangle shaped trace on a PCB.

Data Types: shape object

Height of the PCB component, specified as a positive scalar in meters. To understand more about BoardThickness, see Board Thickness versus Dielectric Thickness in PCB.

Example: component = pcbComponent(BoardThickness=0.0026)

Data Types: double

Metal and dielectric layers, specified as a cell array of metal and dielectric layers. You can specify one metal shape or one dielectric substrate per layer starting with the top layer and proceeding downward.

Data Types: cell

Feed locations on the PCB component in Cartesian coordinates, specified as either an N-by-3 or N-by-4 array with N representing the number for ports on the PCB component. You can place the feed inside the board or at the edge of the board. The arrays translate into the following:

  • N-by-3 – [x, y, Layer]

  • N-by-4 – [x, y, SigLayer, GndLayer]

Example: component = pcbComponent(FeedLocations=[-0.0187 0 1 2])

Data Types: double

Diameter of center pin of the feed connector, specified as a positive scalar in meters.

Example: component = pcbComponent(FeedDiameter=2.000e-04)

Data Types: double

Electrical short locations on the PCB component in Cartesian coordinates, specified as a real vector of size M-by-4 array. The array translates into the following:

  • M-by-4 – [x, y, SigLayer, GndLayer]

Example: component = pcbComponent(ViaLocations=[0 -0.025 1 2])

Data Types: double

Diameter of electrical shorting pin used between metal layers, specified as a positive scalar in meters for a single pin or a positive vector in meters for multiple pins. Number of values specified in this property must match the number of pins.

Example: component = pcbComponent(ViaDiameter=1.0e-3)

Data Types: double

Model used for approximating the feed and the via, specified as one of the following:

  • 'strip' – A rectangular strip approximation to the feed and via cylinder. This approximation is the simplest and results in a small mesh.

  • 'square' – A four-sided polyhedron approximation to the feed and via cylinder.

  • 'hexagon' – A six-sided polyhedron approximation to the feed and via cylinder.

  • 'octagon' – An eight-sided approximation to the feed and via cylinder.

Example: component=pcbComponent(FeedViaModel='square')

Data Types: string | char

Type of metal used in conducting layers, specified as a metal object. For more information see metal.

Example: m=metal('Copper'); component=pcbComponent(Conductor=m)

Data Types: metal object

Lumped elements added to the PCB component feed, specified as a lumped element object handle. For more information, see lumpedElement (Antenna Toolbox).

Example: p=pcbComponent;p.Load=lumpedElement;

Angle of component tilt, specified in degrees, around the Z axis.

Example: component=pcbComponent(Tilt=30)

Data Types: double

Tilt axis of a PCB component, specified as [0 0 1] or 'Z'.

Note

Only the Z axis is currently supported.

Example: pcb.TiltAxis = 'Z'

Data Types: double

Specifies whether the FeedLocations property, or the FeedDefinitions property is used to configure the feeds of the pcbComponent object.

Example: p=pcbComponent;p.FeedFormat='FeedDefinitions'

Data Types: char | string

Specifies feed types used in a pcbComponent object.

Feed Definitions

TypeApplicationsUsage
ArbitraryFiniteGapFeed 

Construct a complicated feed in which one or more signal locations must be excited positively with respect to one or more ground locations.

ProbeFeedMicrostrip patch antennas; vertical launch feed

Construct a via of cross section specified by ViaModel and diameter specified by ViaDiameter centered on SignalLocations(x,y) that runs from GroundLayers to SignalLayers.

Apply excitation at the GroundLayer level.

EdgeFeedMicrostrip form elements whose signal originates on the PCB edge with one ground plane. Stripline form elements with two ground planes.Define a positive feed edge on the metal edge passing through SignalLocations(x,y) on the SignalLayers; define negative feed edges on all metal edges passing through Location (x, y) on all specified GroundLayers.
DeltaGapFeedBalanced structures, lumped loads

Create a delta-gap feed of width SignalWidths at SignalLocations(x,y) on the specified SignalLayers, with the created feed edge normal to CurrentDirection.

CurrentDirection may also take on the value "auto", in which case the feed will attempt to orient itself to best bisect the metal layer on which it resides.

CoaxialFeedHigher-fidelity version of a probe feed

Create a via of arbitrary shape specified by PadShape that runs from GroundLayers to SignalLayers.

Define the positive feed edge along the entire perimeter of PadShape and the negative feed edge along the entire perimeter of AntipadShape on the GroundLayer.

The PadShape and AntipadShape must coincide exactly with shapes already present on the GroundLayer

The PadShape and Antipadshape must have the same number of edges, and each edge in PadShape must be parallel to a corresponding edge in AntipadShape.

FiniteFeedGapCoplanar multi-ground edge feeds, finite-width delta-gap feedsOn the layer specified by SignalLayer, place positive feed edges at each of the N metal edge sites specified by SignalLocations. On the same layer, place negative feed edges at each of the N metal edge sites specified by GroundLocations. Feed n (ε 1:N) has width SignalWidths(n).

Note

FeedDefinitions objects are only accessible when the FeedFormat property is set to 'FeedDefinitions'

Example: p=pcbComponent;p.FeedFormat='FeedDefinitions';p.FeedDefinitions=DeltaGapFeed('SignalLocations',[0 0],'SignalWidths',p.Layers{1}.Width,'SignalLayers',1);

Data Types: FeedDefinitions object

The type of solver used for component analysis, specified as a string: either method of moments ('MoM'), or finite element method ('FEM'). For more information on solvers see Overview of Solvers.

Example: component=pcbComponent(SolverType='FEM')

Note

To enable FEM solver required for the metal shield property, download the Integro-Differential Modeling Framework for MATLAB. To download this add-on:

  1. In the Home tab Environment section, click on Add-Ons. This opens the add-on explorer. You need an active internet connection to download the add-on.

  2. Search for Integro-Differential Modeling Framework for MATLAB and click Install.

  3. To verify if the download is successful, run

    matlab.addons.installedAddons
    in your MATLAB® session command line.

  4. On Windows, to run the IDMF add-on, you must install the Windows Subsystem for Linux (WSL). To install WSL, see Install Linux on Windows with WSL.

    The Windows Defender Firewall can block the PostgreSQL server when using the IDMF add-on. To resolve this issue, you can allow the server to communicate on desired networks if the firewall prompts. Alternatively, you can manually add the executable file of the PostgreSQL server located in <matlabroot>\sys\postgresql\win64\PostgreSQL\bin\postgres.exe. For more information, see https://support.microsoft.com/en-us/windows/risks-of-allowing-apps-through-windows-defender-firewall-654559af-3f54-3dcf-349f-71ccd90bcc5c.

Data Types: string

Flag to add a metal shielding to the PCB component, specified as a logical 0 or logical 1. The default value is logical 0.

Example: IsShielded = true or 1 add a metal shield.

Note

To enable FEM solver required for the metal shield property, download the Integro-Differential Modeling Framework for MATLAB. To download this add-on:

  1. In the Home tab Environment section, click on Add-Ons. This opens the add-on explorer. You need an active internet connection to download the add-on.

  2. Search for Integro-Differential Modeling Framework for MATLAB and click Install.

  3. To verify if the download is successful, run

    matlab.addons.installedAddons
    in your MATLAB session command line.

  4. On Windows, to run the IDMF add-on, you must install the Windows Subsystem for Linux (WSL). To install WSL, see Install Linux on Windows with WSL.

    The Windows Defender Firewall can block the PostgreSQL server when using the IDMF add-on. To resolve this issue, you can allow the server to communicate on desired networks if the firewall prompts. Alternatively, you can manually add the executable file of the PostgreSQL server located in <matlabroot>\sys\postgresql\win64\PostgreSQL\bin\postgres.exe. For more information, see https://support.microsoft.com/en-us/windows/risks-of-allowing-apps-through-windows-defender-firewall-654559af-3f54-3dcf-349f-71ccd90bcc5c.

Data Types: logical

This property is read-only.

Metal shield for the PCB component, specified as a shape.Box object. The length and width of the box must be equal to the length and width of the ground plane. The center of the box is at [0 0 Shielding.Height].

Dependencies

To enable the Shielding property, set the IsShielded property to true or 1.

Connector specifies the type of RF connector assembled at the feed locations of the pcbComponent, as a RFConnector object. The SolverType must be set to 'FEM' to enable this property.

Example: component=pcbComponent(SolverType='FEM', Connector=RFConnector)

Data Types: RFConnector object

Object Functions

currentCalculate and plot current distribution
chargeCalculate and plot charge distribution
feedCurrentCalculate current at feed port
gerberWriteGenerate Gerber files
layoutPlot all metal layers and board shape
meshChange and view mesh properties of metal or dielectric in PCB component
meshconfigChange mesh mode of PCB component or shape structure
sparametersCalculate S-parameters for RF PCB objects
showDisplay PCB component structure or PCB shape

Examples

collapse all

Create a PCB component using default properties.

pcb = pcbComponent;

View the PCB component.

show(pcb)

Figure contains an axes object. The axes object with title pcbComponent element, xlabel x (mm), ylabel y (mm) contains 7 objects of type patch, surface. These objects represent PEC, feed, Teflon.

Calculate S-parameters over 10 frequencies from 1-5 GHz.

s=sparameters(pcb,linspace(1e9,5e9,10));

Plot the S-parameters.

rfplot(s)

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Magnitude (dB) contains 4 objects of type line. These objects represent dB(S_{11}), dB(S_{21}), dB(S_{12}), dB(S_{22}).

Create a PCB component with a lid at a distance of 2 cm above the component.

p = pcbComponent;
pcblid = traceRectangular(Length=p.Layers{1}.Length,Width=p.Layers{3}.Width); 
dAir = dielectric('Air');
dAir.Thickness = 2e-2;
p.BoardThickness = p.BoardThickness + dAir.Thickness;
p.Layers = {pcblid,dAir,p.Layers{1},p.Layers{2},p.Layers{3}};
p.FeedLocations(:,3:4) = [3 5;3 5];
show(p)

Figure contains an axes object. The axes object with title pcbComponent element, xlabel x (mm), ylabel y (mm) contains 10 objects of type patch, surface. These objects represent PEC, feed, Teflon.

Calculate the S-parameters over the 10 frequencies from 1-5 GHz.

s = sparameters(p,linspace(1e9,5e9,10));
rfplot(s)

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Magnitude (dB) contains 4 objects of type line. These objects represent dB(S_{11}), dB(S_{21}), dB(S_{12}), dB(S_{22}).

Version History

Introduced in R2021b

expand all