プロトコルデコーダ(プロトコルデコーダ)
オシロスコープがキャプチャしたデジタル通信波形をプロトコル仕様に基づいて解析し、ビット列・フレーム構造・データ値・エラー状態を人間が読める形式で表示する機能。I2C・SPI・UART・CAN・LINなどの組込み系プロトコルから、USB・Ethernet・MIL-STD-1553などの高速・特殊プロトコルまで対応範囲は機種により異なる。
プロトコルデコーダとは
プロトコルデコーダとは、オシロスコープがキャプチャした電圧波形をデジタル通信プロトコルの仕様に基づいて解析し、スタートビット・データバイト・ACK/NACK・ストップビットなどのフレーム構造を波形上にオーバーレイ表示する機能である。組込みシステム開発において、UART・I2C・SPI・CANなどのバス通信のデバッグに不可欠なツールであり、ロジックアナライザの代替としても活用される。
対応プロトコル一覧
ポータブルオシロスコープで一般的にサポートされるプロトコルと、その特性を以下に整理する。
| プロトコル | 信号線数 | 最大速度 | 主な用途 | 対応機種例 |
|---|---|---|---|---|
| UART/RS-232 | 2(TX/RX) | 〜921.6kbps | マイコンデバッグ・GPS | ほぼ全機種 |
| I2C | 2(SDA/SCL) | 〜3.4Mbps | センサー・EEPROM | ほぼ全機種 |
| SPI | 3〜4(MOSI/MISO/SCK/CS) | 〜50Mbps | フラッシュ・ADC・LCD | 中上位機種 |
| CAN 2.0 | 2(CANH/CANL) | 〜1Mbps | 車載・産業用 | Fluke, Siglent |
| CAN FD | 2(CANH/CANL) | 〜8Mbps | 次世代車載 | 上位機種 |
| LIN | 1 | 〜20kbps | 車載サブネット | Fluke, Siglent |
| 1-Wire | 1 | 〜16kbps | 温度センサー・iButton | PicoScope |
| I2S | 3(SCK/WS/SD) | 〜12.288Mbps | デジタルオーディオ | PicoScope |
| SENT | 1 | 〜30kbps | 車載センサー | 上位機種 |
| PROFIBUS | 2 | 〜12Mbps | 産業用FA | Fluke 125B |
デコード表示の仕組み
プロトコルデコードの処理フローは以下の4段階で構成される。
1. トリガー設定
プロトコル固有のトリガー条件を設定する。例えばI2Cの場合、「特定のスレーブアドレスへのWriteトランザクション」や「NACKの発生」をトリガー条件として指定できる。これにより、数百万フレームの中から目的のイベントだけを効率的にキャプチャできる。
2. 閾値判定
キャプチャした電圧波形に対して、ロジックレベルの閾値(スレッショルド電圧)を適用してHigh/Low判定を行う。TTL(1.4V閾値)、CMOS 3.3V(1.65V閾値)、CMOS 1.8V(0.9V閾値)など、プロトコルとICの電圧レベルに合わせて設定する。
3. フレーム解析
ビットストリームをプロトコル仕様に従ってフレームに分割する。I2Cの場合:スタートコンディション(SDAがSCL High中にLow遷移)→ 7ビットアドレス → R/Wビット → ACK → 8ビットデータ → ACK → ... → ストップコンディション。
4. オーバーレイ表示
解析結果を波形画面上にカラーコードでオーバーレイ表示する。アドレスフィールド(緑)、データバイト(青)、ACK(灰色)、NACK(赤)、エラー(赤ハイライト)のように色分けされ、16進数値・ASCII文字・10進数値など複数の表示形式を切り替えられる。
プロトコル別デバッグ実践
UART デバッグ
UARTは最もシンプルな非同期シリアル通信で、ボーレート・データビット数・パリティ・ストップビットの設定が必要。デバッグで多い問題は:
- ボーレートミスマッチ: 送受信側のボーレート設定が異なり、文字化けが発生。オシロスコープで1ビット幅の時間を実測し、実際のボーレートを算出して確認する
- 電圧レベル不一致: 3.3V系と5V系の直結によるデータ破損。波形のHigh/Low電圧を確認
- フレーミングエラー: ストップビットの検出失敗。ノイズや信号品質の劣化が原因
I2C デバッグ
I2Cはクロック(SCL)とデータ(SDA)の2線式同期通信。マルチマスター・マルチスレーブ構成が可能で、デバッグの難易度はUARTより高い。
- ACK/NACK判定: スレーブがアドレスにACKを返さない場合、配線・プルアップ抵抗・アドレス設定を確認
- クロックストレッチング: スレーブがSCLをLowに保持して通信を一時停止する機能。タイムアウト設定との関係に注意
- バス競合: マルチマスター環境でのアービトレーション失敗を波形で検出
- 立ち上がり時間: プルアップ抵抗値とバス容量による立ち上がり時間の劣化を確認(I2C仕様では300ns〜1000ns以内)
SPI デバッグ
SPIはフルデュプレックスの同期通信で、クロック極性(CPOL)とクロック位相(CPHA)の組み合わせ(Mode 0〜3)の設定ミスが最も多いデバッグ項目である。
- CPOL/CPHAモード: 4モードの組み合わせを波形から判別し、マスター/スレーブ間の設定一致を確認
- CS(Chip Select)タイミング: CSアサートからクロック開始までのセットアップ時間、最終クロックからCSデアサートまでのホールド時間の適合性
- データ語長とビットオーダー: MSBファースト/LSBファーストの判別
CAN デバッグ
CAN(Controller Area Network)は差動信号の2線式バスで、車載ネットワークの標準プロトコルである。差動プローブまたはCAN H/CAN Lを個別チャンネルでキャプチャする。
- ドミナント/リセッシブ判定: CAN H - CAN Lの差動電圧(ドミナント: 2〜3V、リセッシブ: 0V)を確認
- ビットスタッフィングエラー: 同一ビットが6個以上連続した場合のスタッフエラーを検出
- ACKスロット: 送信ノードがリセッシブで送出するACKスロットを受信ノードがドミナントに上書きすることでACKが成立。ACK未受信はバス上にアクティブな受信ノードが存在しないことを示す
- バスオフ状態: エラーカウンタが256に達したノードのバスオフ遷移を波形で検出
ロジックアナライザとの比較
| 項目 | オシロスコープ+デコーダ | ロジックアナライザ |
|---|---|---|
| チャンネル数 | 2〜4ch | 8〜34ch |
| 電圧波形表示 | ○(アナログ波形) | △(ロジックレベルのみ) |
| 信号品質解析 | ○(リンギング・ノイズ・レベル) | × |
| タイミング分解能 | 高(〜1ns) | 中(〜10ns) |
| プロトコル同時解析数 | 1〜2 | 4以上 |
| 長時間キャプチャ | △(メモリ依存) | ○(ストリーミング対応) |
| 価格 | 中〜高 | 低〜中 |
オシロスコープのプロトコルデコーダは「波形品質 + プロトコル解析」を1台で行える利点がある。信号の電圧レベル・ノイズ・リンギングを同時に確認しながらプロトコルの論理的正否も判定できるため、ハードウェア起因の通信障害のデバッグに強い。一方、8ch以上の多チャンネル同時観測やGBレベルの長時間キャプチャはロジックアナライザが優位である。
よくある質問(FAQ)
Q1: プロトコルデコーダは追加ライセンスが必要ですか?
機種による。Siglent SHS800XやPicoScope 2208Bは主要プロトコル(UART/I2C/SPI)のデコーダを標準搭載(追加費用なし)。一方、Keysight製品やTektronix製品は基本プロトコル以外(CAN FD, USB, Ethernet等)が有料オプションで、1プロトコルあたり1〜10万円の追加ライセンスが必要な場合がある。購入前にデコーダの標準搭載/オプション構成を確認すべきである。
Q2: プロトコルデコーダの精度は専用のプロトコルアナライザと比べてどうですか?
基本的なフレーム解析やエラー検出の精度は専用アナライザと同等である。ただし、オシロスコープのメモリ深度が浅い場合は長時間の通信ログ取得が困難であり、バスのトラフィック統計やエラーレート計測は専用アナライザが優位。組込み開発の日常的なデバッグにはオシロスコープのデコーダで十分だが、量産検査やコンプライアンステストには専用ツールが推奨される。
Q3: I2CとSPIを同時にデコードできますか?
2ch機では原則不可。I2CはSDA+SCLの2ch、SPIはMOSI+SCK(+CS)の3〜4chを必要とするため、同時デコードには4ch以上の機種が必要。Micsig STO1104C(4ch)やPicoScope 2408B(4ch)なら2chをI2C、残り2chをSPIに割り当てて同時デコードが可能。