【KiCad】自作プラグインの紹介
KiCad-Transmission-Line-Toolkit
こんな名前を付けてはいますが、普通の設計でも使える汎用プラグインです。汎用性が高そうな名前にしても埋もれるだけなので尖ってみました。
Square Track Generator
選択した配線をいい感じにポリゴンに置き換えるプラグインです。
疑似的ながら矩形で終端された配線を使うことができます。
用途は無限大です。




Via Fence Generator
選択した配線に沿ってビアをいい感じに並べてくれるプラグインです。
UIはKiCad標準の「配線とビアのプロパティ」とほぼ同じ構成なので、使い慣れた操作感のまま設定可能です。
指定されたネットの導体ゾーンの設定を読み込むことで、ビアと配線のクリアランスを自動補間します。

コプレーナ導波路をつくるときに絶大な効力を発揮します。
注意点
- 高周波伝送線路に使うことを想定しているため滑らかでなく屈曲部のある配線に対しては正しくビアを配置できません。
- 使い方によってはビアの座標が重なることがあります。
すでに広く?使われているRF-Tools for KiCADのVia Fence Generatorと比較すると、あちらは屈曲部のある配線に対しても使用できる一方で、滑らかな配線に対してはこちらの方が綺麗なビア配置になります。
Grid Origin Aligner
選択したパッドのアンカー位置にグリッド原点を配置するだけの、単純ながらKiCadの使用感を大きく改善するプラグインです。こちらも用途は無限大です。

インストール方法
あとがき
Pythonスクリプトの命名規則が怪しいので次にアプデしたときに直します。

【KiCad】ライブラリ整理方法の新提案
よく使われがちなライブラリ管理方法
適当な名前のリポジトリがあり、その中にKiCadプロジェクトとKiCadライブラリのフォルダが入ってる感じの管理方法はよく使われがちです。(プロジェクトフォルダの中にライブラリフォルダが入ってる場合も含む)
SampleRepository
├─Lib
│ │ Symbols.kicad_sym
│ │
│ └─Footprints.pretty
│ Footprint.kicad_mod
│
└─Project
fp-lib-table
Project.kicad_pcb
Project.kicad_pro
Project.kicad_sch
sym-lib-table

この方法のメリットとデメリットをいくつか挙げます。
メリット
- 単一のリポジトリにプロジェクトに加えライブラリが含まれるため他人と設計を共有しやすい
- 分かりやすい
デメリット
- 同じシンボル/フットプリントが複数のリポジトリに存在しうるため新旧が行方不明になる
- 自分が今までに作ったシンボル/フットプリントを一覧で見ることができない
- ライブラリのパスの入力が面倒
- シンボル/フットプリントを部品カテゴリごとに分けると更に煩雑
総じて、同じシンボル/フットプリントを複数のリポジトリで使いまわす場合に向いていません。「あのシンボル前に作った気がするけど何処のリポジトリにあるか分からん」みたいなこともよく起こります。
上記の問題を解決するライブラリ管理方法の提案
まず、ライブラリを下記のような構造のリポジトリで管理するようにします。
takuhoTech-KiCad-Libraries
│ table_generator.pyw
│
└─Lib
├─Converter_DCDC_extlib
│ │ Converter_DCDC_extlib.kicad_sym
│ │
│ └─Converter_DCDC_extlib.pretty
│ Converter_DCDC_AnalogDevices_LTM4693.kicad_mod
│ Converter_DCDC_BananaPi_BPI-9600.kicad_mod
│
├─RF_Antenna_extlib
│ │ RF_Antenna_extlib.kicad_sym
│ │
│ └─RF_Antenna_extlib.pretty
│ Taoglas_GGBLA.125.A_GNSS.kicad_mod
│ Taoglas_GPDF6010.A_GNSS.kicad_mod
│
└─RF_GNSS_extlib
│ RF_GNSS_extlib.kicad_sym
│
└─RF_GNSS_extlib.pretty
ublox_NEO.kicad_mod
グローバルライブラリのようにシンボルとフットプリントに分けてからカテゴリ分けするのではなく、カテゴリ分けしてからシンボルとフットプリントに分けることで利用性を上げています。
KiCadプロジェクトの「シンボルライブラリを管理」から指定したシンボルライブラリのパスはプロジェクトフォルダ内のsym-lib-tableに保存されています。フットプリントも同様です。
sym-lib-tableの中身はこんな感じになっています。
(sym_lib_table
(version 7)
(lib (name "Symbols")(type "KiCad")(uri "${KIPRJMOD}/../Lib/Symbols.kicad_sym")(options "")(descr ""))
)
table_generator.pywを実行しライブラリのディレクトリ構造を読み取ることでこのような構造を持つsym-lib-tableとfp-lib-tableを自動生成し、生成したsym-lib-tableとfp-lib-tableでKiCadのプロジェクトフォルダ内の同名ファイルを上書きすることでプロジェクトにライブラリを読み込ませることができます。このとき、KiCadの「パスを設定」で環境変数'KICAD_USER_LIB_DIR'をローカルリポジトリのパスに設定する必要があります。

メリット
- ライブラリ自体の共有に向く
- 同じシンボル/フットプリントが複数のリポジトリに存在することが無い
- シンボル/フットプリントを一覧で確認できる
- パスの手動入力が不要
デメリット
総じて同じシンボル/フットプリントを複数のリポジトリで使いまわす場合に向いています。
既にグローバルライブラリにあるライブラリ名+"extlib"の要な命名に統一することでグローバルライブラリが増えたかのように検索できます。

それぞれの部品もグローバルライブラリと同じような命名になっています。

グローバルライブラリのtableをスクリプトから弄ることもできそうですが色々と面倒そうなので保留です。
ライブラリのリポジトリは公開しています。
【GNSS】NEO-F9PのIntegration manualの要約
NEO-F9PのIntegration manualを自らの解釈を含め日本語でいい感じに要約していきます。間違いがあるかもしれませんので予めご了承ください。
https://content.u-blox.com/sites/default/files/documents/NEO-F9P_IntegrationManual_UBX-22028362.pdf

このドキュメントはNEO-F9P-15B(HPGL1L5 1.40ファームウェア)を対象にしています。
【1】Integration manual概要
省略
【2】システムの詳細
【2.1】概要
NEO-F9Pは、センチメートル級の精度を実現するu-bloxのマルチバンドRTKおよびPPP-RTKテクノロジーを統合しています。
[2.1.1]
NEO-F9Pは、観測空間表現(OSR)と状態空間表現(SSR)の2種類に分類される補正サービスを使用できます。
観測空間表現(OSR):単一の基準局の観測データをそのまま補強データとする形式で狭範囲
状態空間表現(SSR):複数の基準局の観測データを統合して誤差要因ごとに表したものを補強データとする形式で広範囲
このドキュメントでは、RTKはRTCM補強データを使用したOSRベースの測位、PPP-RTKはSPARTNまたはCLAS補強データを利用したSSRベースの測位方法を指す。
[2.1.2]
NEO-F9Pは、RTK BaseとRTK Roverの動作に対応
NEO-D9Cと組み合わせてCLAS補強データの受信に対応
NEO-D9Sと組み合わせてSPARTN補強データの受信に対応
SPARTN補強データはインターネットでも配信されている
NTRIPプロトコルはRTCM(OSR)のみならずSPARTN補強データ(SSR)のストリーミングにも使われる
NTRIPシステムにはClient、Server、Casterが含まれる。
NTRIPの詳細の記述
【2.2】アーキテクチャー
[2.2.1]

[2.2.2]
典型的なアプリケーションについての記述
【3】レシーバの機能
【3.1】レシーバの構成
NEO-F9PはUBX configuration interface keyによって全ての設定が可能
RAMに保存されている設定は電源が切られるまたはリセットされると消える
battery-backed RAMに保存された設定はバッテリが切れると消える
フラッシュメモリに保存した設定は永続
古いUBX configuration interface keyはいずれサポートされなくなるので注意
UBX configuration interfaceの構成と規則についての記述
[3.1.1]
設定メッセージへの応答の挙動についての記述
[3.1.2]
デフォルトのGNSS設定
GPS: L1C/A
GLONASS: L1OF
Galileo: E1B/C, E5a
BeiDou: B1I, B2a
QZSS: L1C/A, L5
SBAS: L1C/A
[3.1.3]

UART2は主に補正データの受信のために使用する
UART2はファームウェアアップグレード、セーフブート、バックアップモードなどの一部のUBXの機能を使用できず、start-up boot screenも出力しないため、ホストへの唯一のIOとしてはならない。
[3.1.4]

メッセージの出力レートの設定方法についての記述
あるプロトコルに含まれるメッセージは、そのプロトコルのIO出力が無効の状態では出力されない
QZSSとSBASはGPSが有効の場合のみ有効
GNSSに含まれる各衛星システムにおいて、L1とL5は両方有効もしくは両方無効にしか設定できず、サポートされていない組み合わせをしようとすると警告メッセージが送信される(BeiDouではB1+B2またはB1のみ、GPSではL1+L5またはL1のみの組み合わせができる)
Galileo衛星システムで使える周波数の組み合わせを例示する表あり
デフォルトでは無効のNMEA high precision modeを有効にすることで、緯度経度は小数点以下7桁、高度は小数点以下3桁まで含まれるようになるが、これはNMEA規格に違反している(NMEA互換モードが有効またはNMEAの文字数が82文字に制限されている場合は使えない)
[3.1.5]
RTKについて
RTCMのプロトコルとメッセージタイプの記述
NEO-F9PはRTCM 10403.3とDifferential GNSS Services – Version 3 (October 7, 2016)で定義されているRTCMをサポート
RTCMの仕様はversion 3.3のもので、version 2はサポート外



[移動局の動作]
RTKローバーは、観測データ(MSM4またはMSM7)とアンテナ位置(RTCM1005またはRTCM1006)の両方を必要とする
RTKローバーには二つの動作モードがある
RTK fixed mode:可能な限り曖昧さを修正しようとする
RTK float mode:曖昧さを修正せずにfloatのままにする
どれだけ古いRTCMデータまで使うか設定が可能。デフォルトは60秒
RTCM1005(RTCM1006)とMSM観測データに含まれる基準局IDは一致している必要がある
GLONASSの曖昧さの修正にはRTCM1230またはRTCM1033が必要 無いとRTK fixed modeであっても曖昧さは修整されずにfloatになる
目的の基準局IDとフィルタリングの厳密さを設定できる
NMEAとUBXメッセージに含まれるRTKの状態を表すフラグについての記述
基線長が100kmを超えるとUBXメッセージに警告と実際の距離が含まれる
[基準局の動作]
RTCMを出力するように設定すると観測データは出力されるが、アンテナ位置は初期設定が完了し、time modeで動作するまで出力されない
Survey-in手続きを使用することでアンテナ位置を推定し、自動でtime modeへ移行する
既知のアンテナ位置や、移動局モードでの動作で得たアンテナ位置も使用可能
Survey-inの具体的な手続きとパラメータついての記述
Survey-inの代わりに、手動で座標を入力することもできる
手動で座標を設定する際のパラメータ一覧表
精度はcm級かmm級か設定でき、入力するパラメータが異なる
設定した位置と現在位置が50m以上ずれているとエラーが出る
デフォルトのGNSS設定においてRTK基準局が出力するべきRTCMメッセージは以下
RTCM 1005 Stationary RTK reference station ARP
RTCM 1074 GPS MSM4
RTCM 1084 GLONASS MSM4
RTCM 1094 Galileo MSM4
RTCM 1124 BeiDou MSM4
RTCM 1230 GLONASS code-phase biases
上記を設定するメッセージの記述
すべての観測メッセージは同じレート
GLONASSの曖昧さの修正にはRTCM1230またはRTCM1033が必要 無いとRTK fixed modeであっても曖昧さは修整されずにfloatになる(二回目)
アンテナ位置は観測メッセージと異なるレートでも良い
衛星システムごとに観測メッセージが必要
MSM4とMSM7を混在させてはいけない
複数のポートからRTCMを出力する場合、全てのポートでRTCM設定は同じである必要がある
[3.1.6]
[SPARTNについて]
SPARTNについては使わないので簡単に
現時点ではQZSSの補正データはPPP-RTKで使用されないが、ファームウェアアップグレードにより対応の可能性あり?
SPARTNをLバンドとインターネットのどちらで受信するか、事前に設定する必要あり
暗号化SPARTNなるものがあるらしい
[CLASについて]
CLAS補正はCompact SSRプロトコルでエンコードされている。
CLASサービスでは、GPS,Galileo,QZSSの補正を提供している
詳細はNEO-D9Cのマニュアルを参照
[PPP-RTKローバーの動作]
UBXには、どのポートでどのデータを受信したかの情報が含まれる
SPARTN,CLAS,RTCMを切り替える場合はレシーバのリセットが推奨される
[3.1.7]
UBX設定メッセージの下位互換性について
[3.1.8]
測位プラットフォームの設定について
動的に変更が可能で、適した設定をすると精度が向上する


高加速度用のプラットフォームモデルを選択すると位置の標準偏差が大きくなる
動的プラットフォームモデルの限界に対するサニティチェックが失敗した場合、位置解は無効になる。上記の表は特定の動的プラットフォームモデルに対して適用されるサニティチェックのタイプを示す

NEO-F9Pは、衛星が3機しか見つからなくても4番目の衛星を補って測位を行う
3D-Fixが2D-Fixになっても一定時間は高度の値が保たれる
測位出力フィルタについて
NEO-F9Pは推測航法できない
UBXに含まれるFix TypeとFixの基準についての記述
2D/3Dの測位出力フィルタはRTKに適用されない
速度にはローパスフィルタを掛けることができる
Course over ground low-pass filter、Low-speed course over ground filterの記述(ゆっくり動いている時の進行方向の算出に関わる?)
Static hold modeにより位置のばらつきを減らすことができる(デフォルトは無効)
速度がStatic hold modeの閾値を下回ると、位置出力が静的に保たれ、再び動き始めたと判定されるまで速度は0になる
閾値の速度は設定可能
Static hold modeのフローチャートあり
Low-speed course over ground filterが無効な場合について
【3.2】プライマリおよびセカンダリ出力
UBX-MAV-* :プライマリ
UBX-MAV2-* :セカンダリ デフォルトでは無効
セカンダリ出力UBX-MAV2-*を有効にし、UBX-MAV2-*に含まれるメッセージの出力レートを0から変更することでメッセージを出力させられる。レートや設定内容はプライマリと異なっても良い
【3.3】SBAS
NEO-F9Pは最適なSBAS衛星を自動的に選択する QZSSにおいてはみちびき3号機のL1Sb信号で配信されている。
サポートするSBASメッセージの表あり
最適なSBAS衛星は自動的に選択されるが、地域によっては不要なSBAS衛星を除外する設定が推奨される。
SBASを構成するパラメータの表あり
SBASが適用されると、SBASの補正データが利用できない信号は使われなくなる。
最低でも5機のGPS衛星についてのSBAS補正データが利用可能な場合にのみSBASが有効になる
SBASは補正サービスが使われていない場合にのみ有効 補正データを利用中にストリーミングが停止した場合、CFGNAVSPG-CONSTR_DGNSSTOで設定された時間(デフォルトでは60s)が経過後にSBASに切り替わる
【3.4】QZSS SLAS
みちびき全機が送信するL1S信号より配信されている
RTCM,SPARTN,CLASなどの他の補正サービスが利用できない場合にのみ使われる
最適なみちびき衛星はL1S信号の品質やレシーバ構成、受信機の位置によって自動的に決定される。カバーエリア外ではSBASが利用される。
対応するSLASメッセージの表あり
SLASの有効化にはCFG-SIGNAL-QZSS_L1S_ENAを設定する
【3.5】Logging
ロギング機能を使うと、position fixesと任意のbyte stringをフラッシュメモリに保存することができる
必要なUBXメッセージの記載アリ
循環ログ:ログが溜まると古いログから削除され新しいログが書き込まれる
非循環ログ:一杯になったら以降は書き込めない
ログは明示的に消去するまで残る
必要とする容量と記録可能な回数の記述あり
ログの開始方法とレートの設定方法の記載あり
保存される位置は圧縮されているのでリアルタイムのものと若干異なる場合がある
実際のログの内容についての記載あり
記録したログの出力方法の記載あり
フラッシュ読み書きに時間が掛かるためログに関連するUBXメッセージには常に応答メッセージが返ってくる
【3.6】Protection level
protection level(PL)により位置情報の信頼性の定量化を行う
PLの計算は無効化が可能

Alert Limitを定義することが推奨されている
PLの有効性はMI(misleading information)とは無関係にUBXから得られる。
PLは各座標軸に対して計算される。
芝刈り機やUAVにおける活用
【3.7】通信IO
複数のプロトコルを単一のポートに割り当てることができる
複数のポートに割り当てたプロトコルはそれぞれ個別の設定を持つ
IOは、HPG L1L5 1.40 Interface descriptionドキュメントで説明されている構成方法で構成される

VCCが取り除かれるときはIOを絶縁することが重要(floatまたはHigh-Zに接続)

[3.7.1]UART
フロー制御には非対応
受信と送信に異なるbaudrateを設定することはできない
UART1:設定、監視、制御のためのホストとのIO
UART2:オプション
UARTのRXは、1秒間に100フレーム以上のエラーを検出すると無効になる(baudrateが間違っているまたはRXがGNDに接続されている)


デフォルトの38400より低いbaudrateにしないことを推奨
セーフブートモードのbaudrateは9600
baudrate変更のメッセージを送ってから新しいbaudrateで入力が可能になるまで標準で100ms待つ必要がある
Data bits長は、電気的にではなくNMEAやUBXのプロトコル側で決められている
データ量に対してbaudrate(帯域)が足りないとバッファが埋まり、新しいメッセージは捨てられる
[3.7.2]I2C
I2CはペリフェラルモードでのホストCPUやu-blox cellular moduleとの通信に使用可。
最大SCLクロック周波数が400kHzのFast-modeをサポートする
Standard-modeとの下位互換性はサポートされていない
SDA,SCLには内部プルアップ抵抗があり、殆どのアプリケーションでは十分(ホストのスピードやI2Cラインの負荷によっては追加の外部プルアップ抵抗が必要になる場合がある)
I2Cの利用にはD_SELはopenにしておく必要がある
殆どのu-bloxのレシーバは通常は同じデフォルトのI2Cアドレスを持つため、アプリケーションによっては変更が必要になる場合がある
I2Cの詳細な通信仕様についての記述
[3.7.3]SPI
D_SELをlowにすることでSPIを利用できる
ペリフェラルモードのみ
[3.7.4]USB
USB 2.0 FS (Full speed, 12 Mbit/s)をホストとの通信に利用可 ハードウェアの実装によりUSBインターフェースを認証できない場合がある
フラッシュに保存されたファームウェアイメージが検出されない場合、レシーバはコードを内部ROMから実行するが、この際のUSBの動作は異なる場合があるので、この場合においてはUSBホストの互換性を確かめることが推奨される。
NEO-F9Pレシーバは、レシーバ自身が持つ電源から電源供給を行うセルフパワーモードのみをサポートする。
V_USBピンはUSBポートの可用性を検出するため(レシーバがUSBホストに接続されているか)に使われる
V_USBの電圧は3.0V to 3.6V(VCCは2.7V to 3.6V)
USBサスペンド、USBバスパワーはサポートしない
USBをアプリケーションで使用しない時は、V_USBをGNDに接続し、D+D_はopenにする
USBポートには、USBエニュメレーションの後でboot screenが送られる。
レシーバ起動からUSBエニュメレーションの間に生成されたメッセージはUSBポートからは見えない

R11はプルダウン、R4,R5はダンピング抵抗、C23は電圧安定化のための1uFキャパシタ
余談:USBのVBUSに直接ぶら下げて良いパスコンは10uFまで、それ以上は電流制限回路の向こう側に置く
【3.8】定義されたPIO
[3.8.1]D_SEL
ハードウェアバックアップモードを使う場合はインターフェースの適切な絶縁が必要

[3.8.2]
RESET_Nはプルアップ抵抗内臓
100ms以上LOWにするとコールドスタートする
[3.8.3]
電源投入時にLOWの場合セーフブートで起動
セーフブートモードではGNSSが無効になりUSBとUART2が使えない
その際UART1のbaudrateは9600
テストポイントを用意することを推奨
[3.8.4]TIMEPULSE
後のセクションで記述
[3.8.5]EXTINT
外部割込みピン
外部周波数補助によりクロックの校正が可能で、衛星信号のFIXが速くなる可能性がある
バックアップモードにした後でレシーバを起動することができる(デフォルトは無効)
使わない場合は開放。
[3.8.6]RTK_STAT
点滅は補正メッセージがあるが、FIXしていない状態
Highは補正データなし
LowはFIXED
[3.8.7]LNA_EN
ソフトウェアバックアップモード中、LNA_ENにより外部LNAの無効化が可能
【3.9】Multiple GNSS assistance
u-blox AssistNowについて
【3.10】Clocks and time
クロックとGNSSタイム
【3.11】Timing functionality
TIMEPULSE
【3.12】Security
ジャミングとスプーフィング
【3.13】u-blox protocol feature descriptions
【3.14】Forcing a receiver reset
コールドスタート:完全にデータなし
ウォームスタート:4時間以上電源がオフの場合
ホットスタート:4時間以下の場合
【3.15】Firmware upload
【3.16】Spectrum analyzer
内蔵された簡易的なスペクトラムアナライザについて
【4】デザイン
【4.1】ピン配置



【4.2】電源
[4.2.1]VCC:メイン電圧源
短時間のピーク電力に耐える設計が必要
起動時に突入電流が発生するため、入力に低ESRキャパシタが必要
突入電流の低減のため、電流制限付きのLDOが利用可
入力電源の直列抵抗が0.2Ω以上では、電流の変動により電圧変動が大きくなりノイズが発生する。
standard IEC 60950-1のclause 2.5に準拠した電源を推奨
[4.2.2]V_BCKP:バックアップ電圧源
RTCおよびバッテリバックアップRAM(BBR)の維持に必要。
V_BCKPの供給なしではコールドスタートになる
BBRバックアップを代わりにホストに保存することでV_BCKPのエミュレートが可能
直流抵抗は低くするのが望ましい
過渡現象を乗り切るために2uFのキャパシタの追加を推奨
バックアップ電源が無い場合はV_BCKPをVCCに繋ぐ
V_BCKPからRTCとBBRに供給されている状態をハードウェア(HW)バックアップモードといい、その時に全てのIOがfloatまたはハイインピーダンスになるのが許容できる設計をする
[4.2.3]NEO-F9P電源
LDOからモジュールのVCCまでインダクタやフェライトビーズを使わないことを推奨

【4.3】最小構成

バックアップ電源が無い場合はV_BCKPをVCCに繋ぐ
USBを使わない場合はV_USBをGNDに接続
全てのGNDピンを適切に接地する
【4.4】アンテナ
GNSS信号は通常-130 dBmから-167 dBmの範囲の強度
[4.4.1]パッシブアンテナ
パッシブアンテナはDCバイアスを必要とせず、RF_INに直接接続が可能

4:直径150mmのGNDプレーンで測定
5:L1,L5+/-200 MHzを除く、特にセルラーバンド
[4.4.2]パッシブアンテナのデザイン
パッシブアンテナは部品のすぐ近くに配置されることが多く、利用にはノイズの影響を最小限に抑えることが必要
場合によってはインピーダンス整合回路が必要

上記の回路図では、SAWダイプレクサを使うことでジャミング耐性を向上させている。
さらにジャミング耐性を向上させるためには、[4.4.5]のイミュニティ曲線とNFに応じてRF入力にSAWフィルタを追加する。
LTE band 13/14を使用するセルラーデバイスを含むシステムを設計する場合は、780MHzのノッチフィルタ(L100,C101)を追加することを推奨

上記の回路図のようにデュアルフィードアンテナを使う場合は、SAWフィルタをLNAの前段に配置することで帯域外の信号を放射する別のアンテナに影響されないようにすることを推奨。
その他はシングルフィードアンテナの場合と同じ
[4.4.3]アクティブアンテナ



6:フィルタやケーブル、コネクタのロスを含む
[4.4.4]アクティブアンテナの電源

バイアスTインダクタのインピーダンスは1-1.8 GHzの範囲において500Ωより大きいのが目安。
以下の回路図はフィルタされた外部電源V_ANTの電圧が3.3Vであるものとして、電源電圧とアクティブアンテナが短絡した際に流れる電流をもとに抵抗R19とバイアスTインダクタL4の消費電力を考慮したもの。
バイアスTインダクタの定格電流とバイアス抵抗の値、電源が流せる電流の大きさ等を考慮して計算する。


以下の回路図は外部電源V_ANTの電圧が3.3V、電流制限の閾値が60mAの場合の例
フェライトビーズの使用を推奨
一般的なアクティブアンテナは5~20mAの電流を引き込む


以下の回路図はNEO-F9PのVCC_RFを使う場合の例
短絡時に電流を最大300mAに制限するためにR19=10Ωが必要
バイアスTインダクタの直流抵抗は1~2Ω、モジュールの内部給電インダクタの直流抵抗は1.2Ωと見積もられている。


[4.4.5]帯域外ブロッキングイミュニティ
帯域外イミュニティ制限は、パフォーマンスを低下させない最大の帯域外信号の電力を表す。軽微な超過はCNRを劣化させる可能性はあるが必ずしも受信機の性能に影響を与えるとは限らない。大幅な超過は感度の低下や信号受信の喪失を招く。干渉の重大度は信号レベルだけでなく繰り返し率、周波数、変調方式、帯域幅によっても異なる。


上記の測定はLTEと同様の64QAM変調と10MHz帯域幅のテスト信号を用いて行われた。
【4.5】EOS/ESDに関する注意事項
RF_INの定格電力は10dBm
NEO-F9PをGNSS以外の無線を含むシステムに統合する場合は、EOS/ESD/EMIにさらに注意する。
EOS:Electrical Over Stress 過電圧・過電流ストレス
ESD:Electro Static Discharge 静電気放電
EMI:Electromagnetic Interference 電磁干渉
EOS破壊は熱を伴い焼損跡としてチップ上に痕跡が見られる場合が多く、ESD破壊の痕跡は極めて微少で目視出来ない場合がある。
[4.5.1]ESD保護対策

EOSは入力電力が定格電力を上回る状況を指す。EOSはRFエミッタがGNSSアンテナやレシーバの近くにある場合に発生する可能性がある。RF_INが損傷した場合、それがESDとEOSのどちらによるものなのか判断するのは困難。

[4.5.3]安全のための注意事項
standard IEC 60950-1のclause 2.5に準拠した電源を推奨
【4.6】IO配線へのEMI(電磁干渉)
長さが約3mmを超えるIO配線はアンテナとして機能し、発生したノイズはレシーバに入力される。これはシールドされていない(対応するGND層が離れているまたは無い)配線やPCBの端に近い配線において顕著になる。
例えば、セルラー信号がシールドされていないHigh-Zの配線に放射されるとボルトオーダーのノイズが発生し、レシーバに永久的な損傷を与える恐れがある。
シールドされていないIO配線からの放射により発生したノイズがレシーバの性能を低下させる可能性がある。
RF放射デバイスをGNSSレシーバの隣に配置する場合や、セルフジャミングによる性能の劣化を防ぐためにレシーバを適切に接地するなどのEMI対策が必要。
レシーバの性能低下を軽減するために、適切なEMC対策を施し、信号と電源ポートに3メートルを超えるケーブルを接続してはならない。
[4.6.1]干渉に関する注意事項
GNSS信号の公称強度は-128dBmで、これは熱ノイズフロアの-111dBmを下回っている。
帯域外干渉:GNSS以外のあらゆる種類の無線通信システムにより(特にGNSSレシーバと統合されている場合において)レシーバのRF_INに定格を上回る電力が入力される恐れがある。より大きい干渉が発生すると、相互変調によりGNSSバンド内の周波数になり帯域内干渉になる場合がある。
帯域内干渉:あらゆる種類の電子機器は数GHzまでの周波数を広く放射しEMIを発生する。無線機のスプリアス発射により帯域内干渉が生じる場合もある。
例えばGSMは最大+33dBmの電力を扱い、最大+36dBmのスプリアス放射が仕様に含まれている一方でGNSS信号の公称強度は-128dBm
RF_INの絶対最大定格は+15dBm
干渉条件下においてはRFフロントエンド内のすべてのコンポーネントの電力定格だけでなく、ゲインの非線形性やNFの劣化、相互変調による帯域内干渉なども考慮される必要がある。
低デューティサイクルの無線通信による干渉は、電力のピークが大きいため特に破壊的
[4.6.2]帯域内干渉の低減
高調波によって引き起こされる帯域内干渉の低減には以下のような対策が必要
・適切な接地
・シールド
・レイアウトの最適化
・IO配線などのノイズ源のローパスフィルタリング
・アンテナ配置の工夫
・フィルタの追加(相互変調の防止)
[4.6.3]帯域外干渉
・適切な接地
・GNSSバンドパスフィルタの追加
・GSMと共存させる場合でも適切にアンテナを配置することで20dBのアイソレーションを実現させられる。
【4.7】レイアウト
[4.7.1]
レシーバに対するアンテナの配置、接地、シールド、EMIなどを考慮したレイアウトが必要。
RF回路のセクションとデジタル回路のセクションは明確な分離が必要。
RFセクションのGNDには、ノイズまみれのデジタル信号およびそのリターンパスを通してはいけない。
[4.7.2]熱管理
レシーバの発振器は周辺温度の急な変化に敏感なため、熱源や冷源の近くにレシーバを置かないようにする。(GNSS性能に影響を与える可能性がある)
・レシーバと熱源/冷却ファンは遠いか
・レシーバはカバーやケースで周辺の空気と分離されているか
[4.7.3]
フットプリントの推奨仕様について
・銅箔パッド
・はんだ(ペーストマスク)
・寸法
・ステンシルの厚み(ソルダーペーストの量)


[4.7.4]レイアウト
GND付きコプレーナ線路はGNDビアによりノイズから最大限シールドされるため推奨
伝送線路はGNDビアによりシールドされている必要がある
RF_INのパッドはビアで囲む

伝送線路のGNDとの結合が重要
NEO-F9PのVCCパッドは、PCBの下層への大きなビアを使用することでインピーダンスを下げる必要がある。VCCパッドは大きく、デカップリングキャパシタは可能な限り近くに配置する。

【4.8】設計ガイダンス
[4.8.1]一般的な考慮事項
・電源電圧は既定の範囲内かつノイズフリーか
・VCCピンの隣に1uFキャパシタがあるか
・電源はレシーバのピーク電流に耐えうるか
・VCC電源の直列抵抗は0.2Ω未満か
・VCCが0Vのとき全てのIOがfloatまたはHigh-Zになるか
・USBについては[3.7.4]USBを参照
[4.8.2]バックアップバッテリ
バックアップバッテリは十分な電流を供給できるか
VCC無しでバッテリが有効のときに全てのIOがfloatまたはHigh-Zになるのを許容する設計になっているか
[4.8.3]RFフロントエンド
RF入力コネクタを使う場合は入力の保護が必要。
・アクティブアンテナの電力はどのくらいか
・アクティブアンテナの帯域幅とフィルタリングはどのくらいか
・RFフロントエンド全体は群遅延の変動の要件を満たすか
EOS(過電力)、EMI(干渉)について
・干渉信号の特性はどうか
・干渉条件下で求められる性能はどのくらいか
ESD(過電圧)について
・ユーザーはRFコネクタを扱うか
・組立時にパッチアンテナの電荷が放電されてESDが発生する可能性はあるか(TVSダイオードは必要か否か)
・干渉信号の入力電力が定格電力を上回ることは考えられるか
・SAWフィルタはESDに弱いが問題ないか
[4.8.4]アンテナ/RF入力
・アンテナがノイズ源から離れているか
・ESDから保護されているか
・バイアスTインダクタはGNSSバンドで500Ω以上のインピーダンスを持つか
・伝送線路は50Ωか
[4.8.5]GND
・GNDピンは正しく接地されているか
・パッチアンテナのGNDは確保されているか
[4.8.6]最小構成
ここまでの再掲
[4.8.7]レイアウト
いくつかの再掲
・VCCの直列抵抗低減のために0.4mm以上の配線幅を推奨
・電源ラインは短く
・干渉低減のためにモジュールの下はGNDプレーンにする
・伝送線路とIO配線の周囲、モジュールのしたに出来るだけ多くのビアを打つ
【5】製品の取り扱い
【5.1】ESD対策
・基板を扱うときの最初の接点は基板のGNDと机などのGNDとの間にある必要がある
・パッチアンテナをはんだ付けする前にPCBをアースしろ
・RFピンにパッチアンテナや同軸ケーブル、はんだごてなどを近づける際は注意する
・ESD保護されていない状態のアンテナに触れるな
・パッチアンテナと同軸コネクタをはんだするときはESD SAFEのはんだごてを使え
【5.2】はんだ付け
・水とか溶剤で洗うと色々良くないので無洗浄のソルダーペーストを推奨(特に超音波洗浄は発振器を破壊するのでNG)
・リフロー手順について
・複数回のリフローについて
・ウェーブはんだ付けについて
・ヒートガンはレシーバを破壊する
・樹脂ポッティングしたら保証は無効だよ
・シリコンで型取りしたら保証は無効だよ
・F9Pのシールドに直接はんだ付けする形で接地を改善するのは自己責任でやってね(やらなくても十分なはずだよ)
【5.3】テーピング
【5.4】リール
【5.5】モイスチャーレベル
MSL 4

【6】付録
U-centerの設定例とかいろいろ
【GNSS】u-bloxのZED-F9シリーズの比較と私見
CLASレシーバの構成を検討するついでに書いた記事です。あんまり深い内容は期待しないでください。間違いや追加情報などがあればコメントして頂けると喜びます。

RTKとは
基準局の位置を固定し、基準局に対する移動局の相対位置を高精度に得るための機能。あらかじめ基準局の座標を設定しておくため実際には絶対位置が得られる。詳細はジオセンス社の記事を参照。基準局から移動局にRTCMフォーマットの補強メッセージを何らかの手段で送る必要がある。
2周波RTKモジュール u-blox ZED-F9P の設定方法 - 株式会社ジオセンス
CLASとは
全国の電子基準点から計算したデータを衛星から送って基準局を代替することで、移動局だけで高精度な絶対位置が得られる機能。CLASに該当する補強メッセージが汎用のRTCMフォーマットに無いため、u-bloxのレシーバに固有の生データであるUBXフォーマットが補強メッセージとして使われる。
MovingBaseとは
基準局と移動局を同じ移動体に固定し、移動体のheadingと相対位置を得るための機能。この記事ではMovingBaseをMBと略す、またはMovingBaseLineと書くことがあるかもしれません。
ZED-F9PのMovingBase設定方法 - 株式会社ジオセンス
MB基準局が出力するべきRTCM3.3メッセージについて
(MovingBase AppNoteより)
MovingBaseでは1.13以降のファームウェアを使うことが推奨されている。
1.13以降の場合のフォーマット
• RTCM 1074 GPS MSM4
• RTCM 1084 GLONASS MSM4
• RTCM 1094 Galileo MSM4
• RTCM 1124 BeiDou MSM4
• RTCM 1230 GLONASS code-phase biases
• RTCM 4072.0 Reference station PVT information
1.12の場合のフォーマット
• RTCM 1077 GPS MSM7
• RTCM 1087 GLONASS MSM7
• RTCM 1097 Galileo MSM7
• RTCM 1127 BeiDou MSM7
• RTCM 1230 GLONASS code-phase biases
• RTCM 4072.0 Reference station PVT information
• RTCM 4072.1 Additional reference station information
4072メッセージはアンテナ位置と基準局の移動を表すベクトルを含むu-blox独自のフォーマット。1.13以降のファームウェアではRTCM 4072.1は不必要になり、RTCM MSM7メッセージはRTCM MSM4メッセージに置き換えることができる。必ずしも置き換える必要は無いが、MSM4はMSM7よりも容量が小さいので通信の遅延が少ないらしい。1.12でMSM4が使えるかは不明。
1.13は1.12とくらべて通信のタイムアウトが緩和されてるらしい。(詳細不明)
RTK基準局が出力するべきRTCM3.3メッセージについて
4072メッセージの代わりに事前に設定したアンテナ位置の情報のみを含む1005メッセージが必要。ZED-F9Pは1005の代わりにアンテナ位置に加えて高さの情報を含む1006メッセージの入力にも対応しているが、自身は1006メッセージを出力できない。他のメッセージはMovingBaseの場合と同様。
MB基準局がRTKやCLASの移動局を兼ねているときに、MB基準局が出力する4072メッセージに含まれるアンテナ位置によって、MB移動局でheadingと相対位置に加えて高精度な絶対位置が得られるかは要調査。
SPARTNについて
SPARTNの入力に対応していればNEO-D9Sと組み合わせてPointPerfectの補強情報を受信できる? なんもわからんなため要調査。

ZED-F9P
そのへんの2周波対応GNSSモジュールに載ってるのは大体これ。

update rateは最大20Hz
time pulse(PPS)は最大10MHzでタイミング精度は30nsから60ns(要調査?)
ZED-F9P-04B
L1/L2対応と謳われているがL5の上半分(B2bとE5b)にも対応しているため、GPS、GLONASS、QZSSに加えてBeidouとGalileoでも2周波を受信することができる。
RTCMの入出力とSPARTNの入力に対応。
RTK基準局/移動局、MB基準局/移動局とだいたい何でもできる偉い子。
MB移動局として動作時のheadingのupdate rateは最大8Hz(5Hzが現実的?)(データシート1.2節より)
ZED-F9P-15B
L1/L5対応 みちびきが7機体制になるのを見越しての採用もアリ。
送信信号一覧|みちびきとは|みちびき(準天頂衛星システム:QZSS)公式サイト - 内閣府
RTCMの入出力とSPARTNの入力に対応。RTCM3.3 4072の入出力に対応していないためMB基準局/移動局にはなれないが1005の入出力には対応しているためRTK基準局/移動局にはなれる。ファームウェアアップデートによるMovingBaseへの対応を期待。
ZED-F9H
MB移動局として動作時のheadingのupdate rateは最大10Hz(データシート1.2節より)
time pulse(PPS)はF9Pと同様に最大10MHzだがタイミング精度の記述が見当たらない。
ZED-F9H-01B(執筆時点で他の派生なし)
CLAS非対応。対応バンドはZED-F9P-04Bと同様。
RTCMの出力とSPARTNの入出力に非対応(データシート1.6節より)であるため、基準局としては使えない。RTCM3.3 1005の入力に対応していないためRTK移動局にはなれないが4072の入力に対応しているためMB移動局にはなれる。
MB移動局として使う場合、F9Pであればheadingに加えて2つのアンテナ間の基線長が得られるが、F9Hの場合は基線長は正規化されて常に1mとなるらしい。(MovingBase AppNote 2.4節より)N(北)E(東)D(下)の座標についてもおそらく同様。headingを計算することだけに特化している。ZED-F9Pと比べてMovingBaseの精度が良いとかは特にないが計算負荷が軽いためか測位条件によってはupdate rateが倍になる。機能的にはZED-F9Pの廉価版的な位置づけだと思われる。なおZED-F9Pと比べて廉価かというとそうでもない模様。
ZED-F9R
6軸IMU搭載で色々補完してくれるらしい。IMUの生データも取り出せるらしい。
補完が効いてるのかupdate rateは最大30HzとF9Pよりも高い。
time pulse(PPS)の仕様はF9Pと同じ。
ZED-F9R-01B
CLAS非対応。
ZED-F9R-02B
CLAS非対応。
ZED-F9R-03B
CLASの補強情報の入力に対応。対応バンドはZED-F9P-04Bと同様。
RTCM(とSPARTN)の出力に非対応(データシート1.6節より)であるため、基準局としては使えない。RTCM3.3 4072の入力に対応していないためMB移動局にはなれないが1005の入力に対応しているためRTK移動局にはなれる。
ZED-F9K
車載用のため入手困難。
ZED-F9L
車載用のため入手困難。
ZED-F9T
時刻同期用。time pulse(PPS)は最大25MHzでタイミング精度は5ns
RTCMの入出力ができるが、これは2つのZED-F9T(同じ派生である必要がある?)をDifferential timing modeで動作させ、タイミング精度を2.5nsまで上げるためのものらしい。SPARTNの入出力には非対応(データシート1.6節より)
相対測位の類には一切対応していないと思われる。
ZED-F9T-00B
対応バンドはZED-F9P-04Bと同様。
ZED-F9T-10B
対応バンドはZED-F9P-15Bと同様。
感想
ZED-F9P-04Bが強すぎる。
【RF】伝送線路の設計と基板の層構成(2層基板編)
例によって些細なことでも間違いがあれば指摘して頂けると喜びます。伝送線路の意義については以前の記事を参照してください。
この記事では、伝送線路のうち比較的に高密度な基板に向いているGND付きコプレーナ線路について特に扱っていきます。

上の図に示したパラメータのうち伝送線路の特性インピーダンスに関わるのはS,W,T,Hです。Lは位相と関係があります。Hは絶縁体(誘電体)の厚みで基板の厚みより薄くなることに注意が必要です。
伝送線路の配線幅は回路で多用する受動素子のパッドの幅に合わせることでギャップを無くして反射を低減することができるとされています。


1608は寄生成分が大きいし0603は小さくて大変なので私は1005推しです。KiCadの場合は1005チップ抵抗のパッドの幅が0.64mm、インダクタも0.64mm、キャパシタは0.62mmなので1005を多用する場合は配線幅は0.64mmかそれより少しだけ太いくらいになると良さそうです。
特性インピーダンスが50ΩのGND付きコプレーナ線路を実現したいとき、一般的な1.6mm厚の2層基板では配線幅が太くなり、配線の取り回しや受動部品・高周波コンポーネントとの接続が難しくなってしまいます。JLCPCBの計算ツールを使って計算してみます。
Controlled Impedance Calculator - JLCPCB


0.8mmの場合の配線幅は約0.66mmと割と良さげに見えますが基板が薄いのでちょっと不安です。
2層基板の層構成は変更できないので、特性インピーダンスを保って配線幅を細くするには基板を薄くして絶縁体(誘電体)を薄くするか、両側面のリファレンス線路(GND)とのクリアランスを狭める必要があります。この場合のクリアランスは既に0.2mmなのでこれ以上狭めるのは良くない気がしますね。
0.8mmの場合についてKiCadのPCB電卓でも計算してみました。JLCPCBの場合は上の計算ツールから分かるように誘電体厚Hは0.665mmです。なお1ozは0.035mmです。周波数は極端に大きくしない限りはあまり特性インピーダンスに影響しないので適当で良いと思われます。

ちょっと配線幅が太くなりました。配線幅を同じく0.66mmとして逆に特性インピーダンスを求めると約53Ωになります。JLCPCBで製造する場合はきっちり材質が指定されているJLCPCBのツールの方が信用できる気がするのでこっちは検算程度に考えることにしました。
次回があれば4層基板の層構成を考慮した伝送線路の設計について書きます。
レーザー加工機を使った基板の製作
まえがき
大陸の業者にプリント基板を格安で製造してもらえる昨今、わざわざ逆張りしてエッチングで基板を自作してみたので備忘録を兼ねて工程をまとめておきます。基板をエッチングで作ると、大陸から着弾するのを待たなくて良いので短い期間に何回も試作することができます。慣れれば2時間掛からないと思います。

基板製作の手順
サンハヤトから新シリーズが出たばかりですが、今回は感光基板は使いません。生基板を塗装し、配線をつくらない部分の塗膜をレーザーで焼き飛ばしてエッチング液に漬けて露出した銅箔を溶かす方法で基板を作ります。
基板パターンの注意点
エッチング基板にソルダーレジスト(緑色の膜)を塗るのは難しそうだったので諦めました。部品や銅線をはんだ付けする際にブリッジしてしまうのを避けるため、部品の配置とパターン間のクリアランスには注意が必要です。配線幅は0.6mmくらいあれば安心だと思います。

SVGファイルの出力・加工

KiCadから出力したSVG画像をレーザー加工機が読み込めるようにPNG画像に変換します。専用ツールを作ったのでご活用ください。
以下のように実行してください。picture.svgはKiCadで出力したSVG画像、17はパターンをどれだけ膨張させるかのパラメータです。ここでパターンを膨張させないと、完成した基板のパターンは想定よりもだいぶ細くなってしまいます。元から細いパターンの場合は消えてしまうかもしれません。これは、レーザー光の直径が0では無いのとエッチング液がマスキング塗料を侵食するのが原因です。このパラメータは適宜いい感じに変更してください。pythonのパッケージが足りないようでしたら適宜ぶち込んでください。
実行すると4つの画像が出力されます。raw.pngはsvgをpngに変換したものをそのまま出力したものです。raw.pngの余分な部分をカットしたものがin.pngです。in.pngの黒い部分を膨張させ、白黒反転したものがout.pngです。diff.pngは膨張した部分を表しています。



ここまでは事前の準備です。ここから実際に基板を加工していきます。
基板の準備
生基板(FR4や紙フェノールの基材に銅箔を張ったもの)を使います。サンハヤトのものがお勧めです。まず、生基板にサーフェーサー(メタルプライマー)をスプレーして下地を作ります。サーフェーサーが乾いてから黒ラッカーをスプレーします。タミヤのものがお勧めです。ここでサーフェーサーを塗布せずに黒ラッカーだけで済ませると、エッチング液に漬けているときに黒ラッカーが剥がれてやり直しになってしまいます。塗装したら基板の外形をカットします。銅箔を傷つけないように注意してください。
レーザー加工
レーザー加工機で塗膜を焼き飛ばしていきます。レーザー加工機はpng画像を読み込めるものなら多分なんでもいけます。私はNEJE Master2 20Wを使いました。加工範囲が塗装した生基板と合っているか確認しましょう。基板が動いてしまわないようにMDFの板に貼り付けるなどの工夫も必要です。
NEJE Master2 20Wと純正ソフトを使う場合の加工パラメータ例
| Laser Power | Burning Time | Speed | 走査回数 |
| 20% | 15mS | Slow | 1 |


焼き飛ばした部分に燃えカスが残ったままだとエッチングの邪魔になるのでティッシュか何かで拭いて落としましょう。
エッチング
基板をエッチング液に漬けていきます。エッチング液はサンハヤトのものをお勧めしますが、クエン酸とオキシドールで自作することもできます。チャック付き袋やカップにエッチング液と基板を入れ、40から45℃のお湯に漬けます。40℃以下の場合は時間がかかるので塗装剥がれに注意しましょう。サーフェーサーを塗布していれば多少時間が掛かっても大丈夫だと思います。エッチング液をこぼさないように...

容器を少し揺らしながらおよそ5分おきに基板を引き揚げて水でエッチング液を洗い流し、銅箔の溶け具合を確認しましょう。20分くらいでエッチングが完了するはずです。
仕上げ
よく水で洗ったらアセトンで塗料を剥がします。Amazonでアセトン100%の除光液が買えます。必要に応じてドリルで穴を開けてスルーホールを作ります。必要に応じてフラックスを塗ります。
ロジン系ポストフラックスは長期的に酸化を防ぐのではなく、酸化膜を取り除きはんだ付け中の酸化を防ぐ役割があります。完成した基板を暫く保管する場合は、ロジン系ポストフラックスを塗って保管すると銅箔が腐食する原因になるので、酸化や腐食を防いで保管したい場合は水溶性プリフラックスを塗って表面処理(OSP)する必要があります。はんだ槽に沈めてはんだコーティング(HASL)するのもありです。

あとがき
エッチングはあんまり精度が出ないし廃液の処理も面倒なので、特に急いでない場合はJLCPCBとかPCBGOGOを使うと幸せになれます。
【RF】高周波回路の基礎
まえがき

高周波回路の部品の選定とアートワークでは、通常は何となくで決める部品の特性や配線幅、取り回し、部品の配置、コネクタのフットプリントなどがすべて重要な要素になります。今までどうでもよかったことがどうでもよくなくなるのは割と苦しいです。
この記事は少し前の私のような完全無学者が技術書を読んだ後に実際に設計するまでのハードルを下げることを目的として書かれています。生暖かい目で見て頂き、間違いがあれば指摘して頂けると喜びます。
伝送線路の設計
LNAやRFスイッチ、パワーディバイダなどの高周波コンポーネントは、想定される周波数帯域での入出力インピーダンスはおおよそ50Ωになっています。(75Ωとかのもあります)
(周波数が低い領域ではオシロスコープなどを使い電圧を基準にして信号を測る一方で、高周波領域ではネットワークアナライザなどを使い電力を基準にして信号を測る)
高周波コンポーネントだけでなく、ただの配線にもインピーダンスが存在し、これを特性インピーダンスといいます。これは伝送する信号の周波数が上がると配線に含まれる微小な寄生レジスタンス・寄生キャパシタンス・寄生インダクタンス成分が無視できなくなるためです。配線の抵抗成分とそれによる損失を考慮した場合、特性インピーダンスも周波数によって微妙に変化することになります。ここでは、高周波を伝送するための配線を特別に伝送線路と呼称します。
伝送線路から高周波ICに信号を入力する場合を考えてみます。ICの入力インピーダンス(想定される周波数帯域では50Ω)と伝送線路の特性(出力)インピーダンスが異なるインピーダンス不連続点では、
反射係数=(入力Z−特性Z)/(入力Z+特性Z)
S11 = -リターンロス = 20 log(|反射係数|)
の式に従い、Sパラメータ表記でS11[dB]の反射が発生します。ここではS11パラメータをDB表記(-∞~0)で扱いましたが、MA表記(-1~1)によって反射係数や透過係数と同じものとして扱う場合もあります。リターンロスは反射電力に対する入力電力の比をdBで表した正の数値で、数字が大きければ大きいほど入力端での反射が小さいことを示しています。(入力電力に対する反射電力の比として定義されて負の数値になってることもあるので絶対値で良し悪しを判断しましょう。)入力Zと特性Zの値が異なるほどリターンロスの値が小さくなり、入力端での電力の反射が無視できないほど大きくなってくるのが解ると思います。逆に高周波コンポーネントから伝送線路に信号を入力する場合でも同様に計算できます。電力の反射すなわちエネルギーのロスなので、配線の伝送線路の特性インピーダンスは使用したい周波数領域で概ね50Ωに合わせる必要があることが判ります。
理論は一旦置いておいて、KiCadでの実際の設計に移ります。KiCadの計算機ツールを使うと簡単に特性インピーダンス50Ωの伝送線路を設計することができます。周波数はGNSSのL1の中心周波数の1575.42 MHzとしています。

伝送線路には幾つかの種類がありますが、ここではGND付きコプレーナ線路を使います。GND付きコプレーナ線路の場合、FR4の2層基板で特性インピーダンス50Ωを得るには、配線幅をかなり太くする必要があります。FR4の4層基板とすることで、比較的細い配線幅で特性インピーダンス50Ωを得ることができます。
GND付きコプレーナ線路の場合、配線の両側にビアを置きます。どのくらい置いたらよいかは正直良く分からないので私はとりあえず沢山置きます。
伝送線路の表面処理
ここまで伝送線路の表面は銅箔そのままだと想定して計算しましたが、実際は表面処理としてソルダーレジストやHASL、ENIGが施されています。住友電気工業さんの検討によると、レジストを剥がしてENIGを施すと下地金属材料として用いられるニッケルが強磁性体であるために伝送損失が大きくなるようです。レジストを剥がしてプリフラックスを塗る場合の特性が最も良いものの、信頼性の観点ではレジストを被せておくのが安牌らしいです。
https://www.jstage.jst.go.jp/article/ejisso/23/0/23_136/_pdf
伝送線路の取り回し
伝送線路の配線幅が途中で変わると特性インピーダンスが変化し電力の反射が起きるので配線幅は一定にするのが望ましいと言えますが、実は伝送線路を曲げる場合にも特性インピーダンスの不連続が発生します。曲げ半径はできるだけ大きくするのが望ましいといえます。
プリント配線の曲げが伝送特性に及ぼす影響|RITAエレクトロニクス
また、コプレーナ線路の場合はリターンパス確保のために両側のGNDベタの幅が配線幅の2~4倍あると望ましいです。やむを得ず別の信号線と基板の裏側で交差する場合、DCカットキャパシタやジャンパ抵抗の下で直角に交差させ、内層にGNDベタを仕込むのが望ましいとされています。一応基板の同じ面で信号を交差させるためだけの素子も存在するらしいです。ビアに高周波の信号を流すのも出来なくはないらしいですが現実的ではありません。
ここで私が設計したGNSSモジュールをアートワークの例として示します。



取り回し以外にも同軸コネクタが変わったり受動素子のフットプリントが小さくなったりしてますがそれについては後程...
次回は(次回があれば)インピーダンス整合・ダンピング抵抗とDCカット・バイアスTについて書こうと思います。