趣味のFPGA入門(技術書典2)

趣味のFPGA入門

簡易ロジアナの作成を通じてFPGA概略とVerilog HDLと趣味のFPGA開発がなんとなくわかった気になる本

FPGA とかVerilog-HDL という用語を聞いたことはあるけど、その実態はよくわからないという方向けの本です。 本書ではそれなりに実用的な物として簡易ロジックアナライザー(簡易ロジアナ)を作りながら、FPGA の基礎の基礎とハードウエア記述言語Verilog-HDL の基本の基本について解説を行います。 読み終えた後に「なんとなくFPGAについて雰囲気は分かった」という状態になることを目標としています。

初版発行 技術書典2 (2017/04/09)  B5 84ページ。
2版発行 技術書典4 (2018/4/22) B5 84ページ。

電子データ(内容は書籍版同じ)をBOOTH様にて販売中です。

簡易ロジアナのソースコード一式

本書であつかった簡易ロジアナのVerilog HDLコード一式と、簡易ロジアナを制御するためのPC側ソフトウエア(Pythonコード)をgithubで公開中です。

https://github.com/BOSUKE/logiana

初版の本文の大きな間違い(第二版では修正されています)

本文中に出てくる FT232HL という型番は、すべて FT2232HL の間違いです。
(p.31の図3.3の回路図に書いてあるFT2232HLが正解)

初版の書籍版で欠けてしまっている図(第二版では修正されています)

即売会で頒布した書籍版「趣味のFPGA入門」の一部の図の印刷が欠けてしまっております。
深くお詫び申し上げますとともに、印刷が欠けている部分の図を以下に記載いたします(クリックすると大きくなります)。

3ページ 図1.2 FPGAの内部構造

38ページ 図4.1 簡易ロジアナの内部ロジック


 

簡易ロジアナ基板の使い方(基板購入者サポート)

即売会会場で簡易ロジアナ基板(兼 FPGA学習用基板)を購入された方への情報です。

利用するのに必要なもの

☆印は簡易ロジアナ基板として利用する場合に必要なものです。FPGA学習用基板として利用する場合(Lattice Diamondからコンフィグレーションデータを書き込めれば良い場合)は、☆印は不要です。

  • 必要なハードウエア
    • 簡易ロジアナ基板
    • USB Mini-Bケーブル
      基板に付属していません。
    • ピンコネクタ(または ピンヘッダ)☆
      基板に付属していません。
      秋月電子電子等で購入するとよいでしょう。
    • ピンヘッダ(またはピンコネクタ)と測定対象とをつなぐもの(クリップなど) ☆
      基板に付属していません。
      “テストクリップ” (クリップの検索結果) を秋月電子等で購入すると良いでしょう。
  • 必要なソフトウエア
    • FTDIチップ(FT2232HL)のドライバ
      http://www.ftdichip.com/Drivers/VCP.htm
      FTDI社のページより自身の環境にあったVirtual COM Port Driverというものを印すt-るしてください。
    • Python + pySerialモジュール ☆
      インストール方法などは適当にWebで検索してください。
    • 波形(VCDファイル)を表示することができるソフトウエア ☆
      同人誌中でも紹介していますがLattice Diamondと一緒にインストールされるActive HDLのほか、sigrok (https://sigrok.org/)などが利用できます。
      特に sigrokの波形表示ソフト PulseView はI2CやSPIなどの波形をデコード機能があるため便利です。

使い方

同人誌「趣味のFPGA入門」の”4.5.2 実機動作確認”の内容を参考にしてください

importするlogianaモジュール(LogiAnaクラス)のソースコードは、ソースコード一式内に含まれています。

なお save_vcd メソッドは、完了するまで十数秒かかります。

ピンアサイン

基板上のピンの番号は上の画像の通りです。

簡易ロジアナとして利用する場合は、Pin6(CH0)、Pin8(CH1)、Pin10(CH2)、・・・、Pin20(CH7)を測定対象の信号線に接続し、Pin2 or Pin29 or Pin30のGNDを測定対象のGNDと接続してください。
その他のピン番号に対する信号名は、同人誌「趣味のFPGA入門」の図3.4(32ページ)を参照してください。
なお、Pin22とPin27がともにSPI_CLKに割り当てられているのは誤植ではありません。基板の設計を誤って同じ信号線を二つのピンに割り当ててしまいました。