デバッグボード IP編 | 有限会社 FPGAインフォメーション

BLOG & INFO

デバッグボード IP編

長周期パルスを観測するロジックアナライザー回路を作る

FPGA Debugging: Building a Custom Logic Analyzer IP for Long-Period Signals


📝 English Summary

In this project, I developed a custom logic analyzer IP to debug long-period signals in an FPGA-based pulse generator running at 100MHz. While the output period is around 1ms, this corresponds to about 100,000 clock cycles, making it difficult to observe using conventional waveform capture methods like ILA.

Instead of storing all waveform samples, the custom IP records only signal transition events (rising and falling edges) along with timestamps from a 32-bit global timer. This approach significantly reduces memory usage while preserving essential timing information.

The logic analyzer supports 40 channels, each capable of storing up to 8 transition events. The captured data can be accessed from an internal CPU, allowing flexible analysis and logging.

In practice, combining this event-based logic analyzer with traditional tools like Xilinx ILA provides a powerful debugging strategy: ILA for high-resolution signal inspection, and the custom IP for long-term timing analysis.


はじめに

今回作成しているパルスジェネレーターには、ひとつ特徴があります。
それは、FPGA内部のクロックに対して周期が長いことです。

周期は約1ms程度。
数字だけ見ると長くは感じませんが、FPGA内部は100MHz(10ns/クロック)で動いています。

つまり1msというのは、約10万クロック分に相当します。

このような信号は、実はそのまま波形として観測するのが少し難しくなります。


なぜ長周期の波形は見づらいのか

FPGAのデバッグでは、一般的に
Xilinx ILA
を使うことが多いと思います。

ILAは非常に強力で、

  • クロック単位の詳細な波形観測
  • トリガ条件の設定
  • 内部信号の可視化

といった用途には最適です。

ただし今回のように、

  • 周期がミリ秒オーダー
  • 変化頻度が低い

といった信号の場合、すべてのサンプルを取り続けるのは効率が悪くなります。
メモリを消費しやすく、長時間の挙動を追いにくくなります。


解決方法:変化点だけを記録する

そこで今回は発想を変えて、
波形を全部記録するのではなく、変化した瞬間だけを記録する方式にしました。

構成はシンプルです。

  • グローバルタイマーを常時カウント
  • 各信号の前回値と現在値を比較
  • 変化があった瞬間のタイマー値を保存

これにより、

  • 立ち上がりタイミング
  • 立ち下がりタイミング
  • パルス幅
  • 次のイベントまでの間隔

を、あとから簡単に復元できます。


32ビットのグローバルタイマー

タイミング記録には、32ビットのグローバルタイマーを使用しました。

100MHz動作なので、1カウントは10nsです。
32ビットあれば、ミリ秒オーダーの観測には十分すぎる余裕があります。

すべてのチャンネルがこのタイマーを共有することで、
チャンネル間の時間関係も正確に把握できます。


40チャンネル対応のロジックアナライザー

今回のIPは、40チャンネル対応としました。

理由はシンプルで、

  • 出力信号
  • 内部制御信号
  • トリガ信号
  • デバッグ用信号

を同時に見たかったためです。

多チャンネル構成のパルスジェネレーターでは、
複数の信号を並べて確認できることが重要になります。


各信号ごとに8回分の変化を記録

各信号については、変化点を8回分記録できるようにしました。

この回数については最初少し悩みましたが、

まずは1周期分が見えれば十分

という判断で、この構成にしています。

結果として、初期デバッグ用途には十分実用的でした。


CPUからアクセスできる構成

このロジックアナライザーIPは、FPGA内部のCPUからアクセス可能にしています。

これにより、

  • 記録開始/停止
  • データの読み出し
  • ログ保存(CSVなど)

をソフトウェア側から柔軟に制御できます。

外部測定器に依存せず、FPGA単体で完結するため、
デバッグの自由度が大きく向上しました。


ILAとの使い分けがポイント

今回の結論としては、

👉 ILAは入れておいた方がいいです

ただし使い方が重要です。

  • ILA
    → 高速・細かい波形の確認(クロック単位の解析)
  • 今回のロジックアナライザーIP
    → 長周期・イベントベースの挙動確認

このように役割を分けることで、
デバッグ効率が大きく向上します。

実際の開発では、

  1. ILAで局所的な動作を確認
  2. ロジックアナライザーIPで全体の流れを見る

という使い方が非常に有効でした。


生成AIで開発スピードが向上

このIPも、生成AIを活用して設計しました。

  • 構成の整理
  • HDLの雛形生成
  • 修正と改善

を繰り返すことで、かなり短時間で実用レベルに到達しました。

特に今回のような、

  • 構造が明確
  • 要件が整理されている

タイプの回路は、生成AIとの相性が良いと感じています。


まとめ

長周期の信号を扱う場合、すべての波形を記録するのではなく、
変化点に着目することで効率的な観測が可能になります。

今回のロジックアナライザーIPは、

  • 32ビットタイマー
  • 40チャンネル対応
  • 各信号8イベント記録
  • CPUアクセス対応

という構成で、実用的なデバッグ手段となりました。

そして重要なのは、

👉 ILAと組み合わせて使うこと

です。

用途に応じて観測手段を使い分けることで、
FPGAのデバッグ効率は大きく向上します。


FPGAインフォメーションのホームページはこちらです。

5SQ XC7S25A FPGAボードはこちらから購入できます。

プライバシーポリシー / 特定商取引法に基づく表記 / 利用規約

Copyright © 2026 有限会社FPGAインフォメーション All Rights Reserved.

CLOSE