概要
ロジックアナライザ(Logic Analyzer)とは、デジタル信号の論理状態(HIGH/LOW)を複数チャンネル同時に記録・表示する計測器である。時系列の信号変化をキャプチャし、プロトコルデコード機能によってI2C、SPI、UART、CAN、UARTなどのシリアル通信プロトコルのデータを人間が読める形に変換できる。
オシロスコープが電圧の連続的な変化(アナログ波形)を観測するのに対し、ロジックアナライザはHigh/Lowの二値状態の時系列変化と、その意味するプロトコルデータを解析することに特化している。組み込みシステムのデバッグで、通信プロトコルの検証や複数信号のタイミング関係を調べる際に欠かせないツールである。
歴史・背景
ロジックアナライザは1970年代に商業製品として登場した。HP(現Keysight)の1960Aシリーズ(1973年)が初期の代表製品であり、テクトロニクスやTektronixなども参入した。当初は大型で高価な機器だったが、デジタル機器の普及とともに組み込みエンジニアには必須のツールとなっていった。
2000年代後半、Saleaeが「Logic」シリーズ(USB接続、小型、数万円台)を発売し、それまで数十万円〜数百万円だったロジックアナライザが一般開発者にも手の届く価格帯になった。PCソフトウェアでプロトコルデコードや高度な分析を行う「PC接続型ロジックアナライザ」が普及し、現在では数千円〜数万円の製品も広く使われている。
オープンソースのSigrok/PulseViewの登場により、低コストのオープンハードウェアロジックアナライザとの組み合わせでも高機能な解析が可能になった。
技術仕様
ロジックアナライザの主要スペック
| スペック | 説明 | 組み込みでの目安 |
|---|---|---|
| チャンネル数 | 同時記録できる信号線数 | 8〜16ch以上 |
| サンプリングレート | 1秒間のサンプリング回数 | 24MHz以上(UARTデバッグなら1MHz程度でも可) |
| メモリ深度 | 記録できるサンプル数 | 大きいほど長時間記録可能 |
| 電圧スレッショルド | High/Low判定の閾値 | 1.8V / 3.3V / 5V対応が必要 |
| プロトコルデコード | 対応通信プロトコルの種類 | I2C/SPI/UART/CAN等 |
主要な製品比較
| 製品 | チャンネル | サンプリング | 価格帯 | 特徴 |
|---|---|---|---|---|
| Saleae Logic 8 | 8ch | 100MHz | ~5万円 | 使いやすさNo.1、豊富なデコード |
| Saleae Logic Pro 16 | 16ch | 500MHz | ~15万円 | 高速・多チャンネル |
| DSLogic Plus | 16ch | 400MHz | ~3万円 | コストパフォーマンス高い |
| Cypress FX2LP系 | 8ch | 24MHz | 数千円 | 超低コスト、Sigrok対応 |
| RIGOL DS1054Z (混合信号) | 4ch+16ch | 1GSa/s | ~5万円 | オシロ+ロジックアナライザ兼用 |
| Digilent Analog Discovery 2 | 2ch analog + 16ch logic | 100MHz | ~5万円 | 教育・開発用多機能計測器 |
動作原理
サンプリングと記録の仕組み
入力信号(例:SPI SCK)
___ ___ ___
| | | | | |
________| |___| |___| |______
内部サンプリングクロック(100MHz等)
| | | | | | | | | | | | | | | | |
記録データ(0/1の時系列):
0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1
信号をNyquistの定理に従い、観測したい最高周波数の2倍以上でサンプリングすることが精度の基本である。実際には4〜10倍のサンプリングレートが推奨される:
- UARTデバッグ(115200bps): 1MHz以上
- I2C(400kHz): 4MHz以上
- SPI(10MHz): 100MHz以上
- USB FS(12MHz): 専用アナライザが必要
プロトコルデコードの仕組み
ロジックアナライザソフトウェアはキャプチャした波形データを解析し、プロトコルごとの規則に従ってデータを復元する:
[生波形データ]
SDA: __‾‾‾‾‾‾___‾‾‾‾‾___‾‾‾___‾‾‾‾‾...
SCL: ___‾___‾___‾___‾___‾___‾___‾...
↓ I2Cデコード処理
[デコード結果]
START | ADDR=0x48 W | ACK | DATA=0xA5 | ACK | STOP
↓ 表示
[Saleaeの画面イメージ]
I2C: [Write to 0x48] [0xA5] [ACK]
トリガ機能
特定の条件が成立した時点からキャプチャを開始するトリガ機能で、断続的に発生する事象を確実に記録できる:
トリガ条件の例:
- CH0(CS信号)がHighからLowに変化した時
- CH1とCH2が特定のパターン(0b1010)になった時
- プロトコルデコード結果が特定の値(I2Cアドレス0x48)の時
用途・ユースケース
I2Cデバッグ(ACKが返らない問題の解析):
問題: I2Cでセンサと通信できない
ロジックアナライザで確認:
SDA: __‾‾‾‾‾___‾‾‾___‾‾‾___‾‾‾‾‾‾‾‾‾‾‾...
SCL: ___‾___‾___‾___‾___‾...
I2Cデコード結果:
[START][0x48 Write][NACK] ← ACKでなくNACK!
診断: アドレスが間違っている(0x48ではなく0x49が正しい)
または、SCL/SDAの接続が逆になっている
または、プルアップ抵抗が抜けている
SPIタイミングの検証:
// SPIのモード(CPOL/CPHA)が合っているか確認
// ロジックアナライザでCS, SCK, MOSI, MISOを同時観測
// 観測ポイント:
// 1. CSのアサート(Low)からSCKの最初のエッジまでの時間
// 2. SCKのエッジでのMOSI/MISOのサンプリング位置(CPHA=0 or 1)
// 3. 最後のSCKエッジからCSデアサートまでの時間(tCSH)
UARTのボーレートずれの診断:
正しい115200bps:
1ビット = 1/115200 = 8.68μs
実測値(ロジックアナライザで計測):
1ビット = 9.1μs
差異: (9.1 - 8.68) / 8.68 × 100 = 4.8% のずれ
→ MCUのクロック設定が正しくない可能性
複数信号のタイミング関係の確認:
タスク: GPIOトリガからADC変換完了割り込みまでの遅延を測定
CH0: ADC_TRIG (GPIOパルス)
CH1: ADC_EOC (変換完了信号)
_
CH0: | |_______________
CH2: _____________ _
| |__
計測: CH0立ち上がりからCH1立ち上がりまでの時間 = 1.2μs
実装・開発のポイント
1. テストポイントの設計
基板設計時に主要な信号線にテストポイント(露出したパッド)を設けておくことで、ロジックアナライザのプローブを容易に接続できる:
推奨テストポイント:
- すべてのシリアル通信信号(I2C SDA/SCL, SPI CLK/MOSI/MISO/CS等)
- 割り込み信号
- デバッグ用GPIO(処理時間測定に使用)
- 電源ラインのENABLE信号
2. デバッグ用GPIOトグルとの組み合わせ
ロジックアナライザでプログラムの実行時間を測定する手法:
// 処理時間の計測
void time_critical_function(void) {
GPIO_SetHigh(DEBUG_PIN); // 処理開始を示す(ロジックアナライザでキャプチャ)
// 計測したい処理
process_sensor_data();
GPIO_SetLow(DEBUG_PIN); // 処理終了
// ロジックアナライザでHigh区間の時間を読む
}
3. トリガを活用した効率的なキャプチャ
全時間を録画するとメモリが足りなくなるため、関心のある事象をトリガで絞り込む:
例: CAN通信でエラーフレームが発生する瞬間をキャプチャ
トリガ設定:
- CANデコーダのエラーフレーム検出をトリガにする
- トリガの100ms前からのプリトリガ記録を有効にする
→ エラー前後の状況を確実に取得できる
4. サンプリングレートの選択
高いサンプリングレートはメモリを大量消費するため、プロトコルに合わせて適切に選択する:
推奨サンプリングレート:
UART 115200bps : 1 MHz (1ビット≈8.68μs の 8倍程度)
I2C 400kHz : 4 MHz (1クロック≈2.5μs の 10倍)
SPI 10MHz : 100MHz (1クロック≈100ns の 10倍)
CAN 1Mbps : 10MHz
USB FS 12Mbps : 専用アナライザを使用
他技術との比較
| 比較項目 | ロジックアナライザ | オシロスコープ | インサーキットデバッガ |
|---|---|---|---|
| 観測できる信号 | デジタル(High/Low)のみ | アナログ(電圧波形)も可 | CPU内部状態 |
| チャンネル数 | 8〜16ch+ | 通常2〜4ch | 1CPU |
| プロトコルデコード | 豊富(I2C/SPI/UART等) | 限定的 | なし |
| タイミング精度 | 高い | 最も高い | 低い(停止させるため) |
| プログラム停止 | 不要 | 不要 | 停止させる |
| 価格帯 | 数千円〜数十万円 | 数万円〜数百万円 | 数千円〜数万円 |
オシロスコープは電圧波形を精密に測定するツールであり、ロジックアナライザとは相補的な関係にある。I2CやSPIなどのシリアル通信のデバッグに特に有用である。インサーキットデバッガとロジックアナライザを組み合わせることで、ソフトウェアの状態とハードウェア信号の両面からデバッグできる。