Embedded Test 04 · デジタル信号の観測 — ロジックアナライザとオシロで線を読む

Chapter 04

デジタル信号の観測 — ロジックアナライザとオシロで線を読む

この章のゴール.

ロジックアナライザとオシロスコープの役割分担を理解し、 サンプリングレート・トリガ・プロトコルデコードの基本を押さえて、 GPIO・バス・タイミングを「見える化」できるようになること。

この章で使う既出の用語(定義は各リンク先). アナログ(01 章 2 節)、オラクル(01 章 8 節)、記録(01 章 4 節)、判定(02 章 1 節)、電源(02 章 2 節)

1. 2 つの目 — ロジックアナライザとオシロ

ロジックアナライザ(LA)オシロスコープ
見るもの0/1 のデジタル信号を多チャンネル(8〜16 本)電圧のアナログ波形を 1〜4 本
得意バス(I²C/SPI/UART)、GPIO、タイミング関係、プロトコルデコード波形の質(なまり、リンギング、ノイズ)、アナログ、電源
苦手電圧の「質」は見えない(閾値で 0/1 に丸める)チャンネル数が少ない、長時間・多信号
例Saleae Logic、fx2lafw 互換(sigrok/PulseView)任意のオシロ、pyvisa で制御

まずロジックアナライザ。デジタルのやり取りの 9 割はこれで見える。波形が乱れて誤動作する、アナログが絡む、というときにオシロを足す。

ロジアナは「0/1 の意味」、オシロは「電圧の形」を見るロジックアナライザ多チャネル・長時間・デコード向き「1 か 0 か」だけを速く記録オシロスコープ少チャネル・電圧の詳細な形なまり・リンギング・ノイズが見えるデジタルのやり取りの 9 割はロジアナ。波形が乱れる/アナログが絡むときオシロを足す
図4-1 二つの観測器の役割分担。

2. サンプリングレートとナイキスト

ロジックアナライザは、信号を一定周期でサンプリングして 0/1 に記録する。 正しく捉えるには、観測したい信号の最高周波数の最低 4〜10 倍でサンプリングする(理論下限のナイキスト = 2 倍では波形の形が分からない)。

サンプリングが足りないと、エッジがずれる・パルスが消える・デコードが失敗する。「デコードできない」ときはまずレートを疑う。

サンプリングが足りないと、エッジがずれ・パルスが消える十分なレート低すぎるレート(間引き)短いパルスを取り逃し、別の波形に化ける目安: 見たい最速の変化の 4〜10 倍で標本化する。「デコードできない」ときはまずレートを疑う
図4-2 標本化レートと取りこぼし。

3. トリガ — 見たい瞬間だけ捕まえる

ずっと記録し続けるとメモリが足りず、目的の 1 回を探せない。トリガ(trigger)で「この条件が起きた瞬間」を中心に記録する。

トリガの種類例
エッジある線が 0→1 になった瞬間
パターン複数線が特定の組み合わせになった
プロトコルI²C で特定アドレスが出た、UART で特定バイト
パルス幅幅が閾値より短い(グリッチ)/ 長い
シリアル特定のバイト列

「たまに起きる不具合」は、その症状(エラーピン、異常な値)でトリガを張って待つのが定石。捕まえたら前後(プリ/ポストトリガ)を見る。

4. プロトコルデコード — 波形を意味に変える

生の 0/1 の羅列は読めない。プロトコルデコーダが、波形を「I²C: アドレス 0x68 に書き込み、データ 0x3C」のように意味のある表に変換する。

生のエッジを、段階的に「意味」へ持ち上げる生のエッジ(0/1 の列)ロジアナが記録した波形バイト・フレームプロトコルデコーダ(I²C/SPI/UART)意味(レジスタ・コマンド)高位デコーダを重ねる / CSV に出すsigrok/PulseView・Saleae はデコーダをスタックでき、結果を判定スクリプト(19 章)へ渡せる
図4-3 デコーダのスタック。

自分でデコーダを書く.

独自プロトコル・独自チップは既存デコーダがない。sigrok のデコーダは Python で書け、 「エッジの列 → 状態機械 → 注釈」という素直な構造をしている(19 章)。 AI 生成ファームの独自通信フォーマットを検証するとき、専用デコーダを 1 つ書くと以後のテストが桁違いに楽になる。

5. 何をオラクルにするか

デジタル観測から作れる判定の例。

6. プローブの当て方

7. 手を動かす

サンプリングとデコードを体験する


この章のポイント