agentee

Simuleren

RF-simulatie: FDTD en cascading

Voer een full-wave FDTD uit van een layout op de GPU, voeg vendor S-parameters en ruisdata toe, en lees gain, noise figure, match en stabiliteit.

Voor RF-werk is de gebruikelijke indeling twee simulaties. Een FDTD-run van de passieve printplaat, met een poort op elke plek waar een actieve component of een gemeten component zit, levert de S-parameters van de printplaat op. Een cascade voegt dan de S-parameters, ruis- en lineariteitsdata van de fabrikant toe aan die poorten. Verander je de printplaat, dan voer je de FDTD opnieuw uit; verander je een component, dan voer je alleen de cascade opnieuw uit, wat enkele seconden duurt.

Het LNA-voorbeeld is zo opgebouwd, en deze handleiding gebruikt die bestanden.

De FDTD-run

name = "lna-rf"
layout = "lna"
cell = 0.1

[frequency]
start = "50MHz"
stop = "6GHz"
points = 596

[[ports]]
name = "IN"
pad = "J1.1"
reference = "In2.Cu"

[[ports]]
name = "AMP_IN"
pad = "U1.1"
reference = "In2.Cu"

[[ports]]
name = "AMP_OUT"
pad = "U1.3"
reference = "In2.Cu"

Een poort is een lumped port over een heel pad, tot de volgende kopercaplaag of tot de reference-laag die je noemt, 50 ohm tenzij anders vermeld. Koper wordt gemodelleerd als platen op elke kopercaplaag: pads, sporen, vias als geplateerde kolommen tussen de lagen die ze overspannen, en kopervlakken met hun clearances. De dielektrica komen uit de stackup met hun loss tangent. Condensatoren, spoelen en weerstanden nemen standaard hun schemawaarde aan als lumped components; [[models]] overschrijft dit met een eigen waarde, of laat het open. Elke andere component is open.

Geverifieerd op een 50-ohm microstrip: return loss onder -25 dB, insertion loss onder 0,2 dB, en fase-snelheid binnen 1,2% van Kirschning-Jansen.

Bepaal de grootte voordat je het uitvoert

FDTD is duur. De zes-poort run van de LNA kostte 27 minuten op een workstation GPU. Voer altijd eerst een dry-run uit:

agentee sim lna-rf --dry-run
{
  "cells_millions": 4.202388,
  "dt_fs": 120.43,
  "grid": [335, 234, 55],
  "runs": 6,
  "max_steps": 150000
}

Dat duurt een seconde en geeft aan wat de run zal kosten: één run per gedreven poort, elk over een raster van dat aantal cellen. Om te itereren:

  • Begin met cell = 0.1 en verstrak alleen naar de standaardwaarde 0.05 zodra het ontwerp is gestabiliseerd. Het mesh verfijnt zich vanaf koper randen, dus de fijnste cel bepaalt de kosten.
  • Knip af met region = [x0, y0, x1, y1] naar het deel van de printplaat waar het signaal overheen gaat.
  • Drijf alleen de poorten die je nodig hebt met excite = ["IN"]. Een cascade heeft elke poort gedreven nodig, dus laat excite daar weg.
  • Voer lange simulaties op de achtergrond uit en ga door met het bewerken van andere dingen. De controle waarschuwt als een resultaat verouderd is.

Voer uit en lees het

agentee sim lna-rf
agentee show sim:lna-rf
agentee render sim:lna-rf -o lna-rf.png

De run schrijft een .result.json en een Touchstone .s6p naast de specificatie, vernoemd naar het specificatiebestand. show toont de metingen, en render tekent het amplitudeplot en een Smith-diagram, zoals de viewer dat doet.

S-parameters van de LNA-printplaat uit de FDTD-run

Het resultaat registreert een hash van het kopervlak dat het zag (alleen de region van de simulatie) en van de stackup. Als een van beide verandert, waarschuwt de controle dat het resultaat verouderd is, en faalt alles dat het leest, een cascade of een interface-meting, totdat je het opnieuw uitvoert.

De cascade

name = "lna-cascade"
kind = "cascade"
board = "lna-rf"
bandwidth = "2MHz"
report = ["900MHz", "1090MHz", "1.9GHz"]

[after]
nf = 6.0

[[devices]]
ref = "U1"
file = "models/qorvo_spf5189z.s2p"
ports = ["AMP_IN", "AMP_OUT"]

[[devices.datasheet]]
freq = "0.9GHz"
nf = 0.55
oip3 = 38.5
p1db = 22.4

[[devices]]
ref = "L1"
file = "models/coilcraft_bcr-162.s2p"
ports = ["L1"]
mount = "shunt"

Elk apparaat sluit aan bij de printplaat op zijn poorten. Een tweepoortsversterker neemt zijn Touchstone-bestand aan zoals gemeten; een tweeterminalcomponent neemt de fixture-data van de fabrikant, mount = "shunt" of "series" zoals gemeten. De poorten die niet aan een apparaat zijn aangesloten, zijn de poorten van het resultaat.

Ruis en lineariteit komen mee als de data er is: het Touchstone-ruisblok als het bestand er een heeft, anders de datasheet nf, en oip3 en p1db per frequentie. [after] is het stadium achter de uitgang, hier een ontvanger met een ruisfactor van 6 dB, aangesloten via Friis.

agentee sim lna-cascade
agentee show sim:lna-cascade

De metingen voor de LNA:

gain peak       27.0 dB    S21 at 50 MHz
input match     -5.1 dB    S11 at 4.380 GHz
output match    -9.9 dB    S22 at 4.420 GHz
stability mu    1.14       lowest at 60 MHz
noise figure    0.93 dB    best at 800 MHz, worst 2.16 dB at 2.200 GHz
at 900 MHz      gain 17.7 dB, NF 1.00 dB, floor -110.0 dBm, SFDR 86.8 dB, IIP3 20.3 dBm, P1dB out 21.9 dBm
at 1.090 GHz    gain 16.2 dB, NF 1.31 dB, floor -109.7 dBm, SFDR 87.9 dB, IIP3 22.2 dBm, P1dB out 21.9 dBm

Mu boven 1 op elke frequentie betekent dat de versterker onvoorwaardelijk stabiel is op deze printplaat. De ruisvloer is -174 dBm/Hz plus de ruisfactor plus 10 log van de bandbreedte, en SFDR is twee derde van IIP3 boven de vloer.

De cascade: gain, match, noise figure en stabiliteit

Wanneer een apparaat geen data heeft, wordt het bandgebied ingekort naar waar elk apparaat wel data heeft, en wordt een ruisfactor buiten de data leeg gelaten in plaats van geraad.

Nabewerken zonder opnieuw uit te voeren

agentee sparam lna-rf --tdr IN --rise 50ps
agentee sparam link --pair 1,2,3,4
agentee sparam link --xtalk 1,3

sparam werkt op elk FDTD- of cascade-resultaat: een TDR van één poort, mixed-mode S-parameters van een paar, en kruispraten in frequentie en als stap. Het rapporteert altijd passiviteit en reciprociteit wanneer elke poort is aangedreven. Zie Oogdiagrammen, PDN en S-parameters.

Velden en emissies

fields = ["1090MHz", "2.4GHz"]
far_field = true

Een FDTD-run kan ook E- en H-veldkaarten registreren in de prepreg onder de bovenste laag, en het verre veld uit een near-to-far transform, op maximaal vier frequenties. De metingen geven het uitgestraalde vermogen als fractie van de invoer, de directiviteit, en het piekveld op 3 m voor 1 mW in, vergeleken met FCC klasse B. Poorten zijn matched loads, dus kabels en connectoren maken geen deel uit van de straler.

Verliezen

Dielektrisch verlies volgt een causaal Djordjevic-Sarkar-model, afgestemd op de permittiviteit en loss tangent van elke laag. Koper is een oppervlaktesweerstand die de skin effect volgt, de ruwheid van de stackup en, met finish = "ENIG", het goud en nikkel op de buitenste pads, waarvan het nikkel enkele malen de weerstand van kaal koper toevoegt onder een paar GHz. De FDTD-verliezen-referentie bevat de modellen en de metingen waartegen ze zijn gecontroleerd.

Verbeter deze handleiding · Markdown voor agents