投稿者: 運営者

  • FPGA開発環境の構築

    FPGA開発環境の構築

    FPGAで遊ぶために、まずは開発環境の構築を行います。

    今回使用するFPGA開発ボードはこちら

    DIGILENT
    Basys 3 AMD Artix™ 7 FPGA Trainer Board

    DIGILENT-Basys3

    簡単にスペックをまとめるとこんな感じ

    搭載FPGAXC7A35T-1CPG236C
    論理セル数33,280 logic cells
    メモリ・DSPBlock RAM : 1,800 kbit (約225 kB)
    DSP slices : 90
    書き込み方法USB-JTAG
    ※Micro USB Type-B(USB 2.0)で書き込み可
    インターフェースUSB-UART Bridge
    12-bit VGA output
    Pmod ports ×4
    入出力デバイスSwitches ×16
    LEDs ×16
    Push buttons ×5
    4-digit 7-segment display

    スペックを聞いても正直ちんぷんかんぷんです。
    ってことで、わからない部分を調査してまとめてみました。

    論理セル数

    FPGA内部にあるプログラム可能な論理素子の数
    AND・OR・NOT等の論理回路をどれくらい構成できるかの目安

    Block RAM

    演算結果や画像データなどを一時的に格納する揮発性メモリ

    DSP Slices

    DSP = Digital Signal Processing(デジタル信号処理)

    積和演算などを高速で実行するための専用演算ブロック


    早速、開発環境の構築をしていきましょう。
    使用するPCはこんな感じです。

    OSUbuntu 24.04.4 LTS (64-bit)
    CPUAMD Ryzen™ 7 9700X
    MotherboardASUS ROG STRIX B650E-I GAMING WIFI
    MemoryCORSAIR DDR5-6400MHz 16GB ×2
    GPUNVIDIA RTX A2000 (6GB)

    開発ツールは、AMD/Xilinx系FPGA向けのVivadoを選択しました。
    Basys 3に搭載されているFPGAがAMD Artix-7であるためです。

    AMD Vivado


    以下は簡単にVivadoのインストール手順をまとめたものです。
    (2026/7/11時点)

    1. AMD公式サイトからAMD Unified InstallerのLinux版をダウンロードします
    2. Linuxのターミナルを開き、ダウンロードしたファイルを実行します
    3. インストーラーを起動します
      ※Ubuntu 24.04.4は、Vivado 2026.1のインストーラー画面上ではサポート対象OSに含まれていませんでした
    4. インストール方法は「Download and Install Now」を選択します
    5. インストールする製品の選択画面が出てくるので、「Vivado」を選択します
    6. Vivadoのインストールオプションが表示されるので、今回はBasys 3を動かす上で必要なものだけを選択します

      ・「Devices」 → 「7 Series」
      ・「Installation Options」 → 「Acquire or Manage a License Key」

      ※あとから追加でインストールすることも可能です
    7. Vivadoをインストールするディレクトリを指定します
    8. 確認画面が表示されるので、内容に問題なければそのままインストールを実行してください
    9. インストール完了後、「Get License」 → 「Obtain License」を開きます
      「Get My Full or Purchased Certificate-Based License」を選択し、「Connect Now」を実行します
    10. ブラウザでAMDのライセンスポータルが開くので、AMDアカウントにログインします
    11. ライセンス作成画面が表示されるので、「Vivado Basic Tier License, Node Locked License」にチェックを入れ、「Generate Node-Locked License」を実行します
    12. Host IDを入力します
      今回はHost ID Typeで「Ethernet MAC」を選択したため、ターミナルでネットワークインターフェース情報を確認します
    13. ネットワークインターフェースはlo、eno1、wlp9s0、docker0の4つが表示されました
      この中から、内蔵有線LANである eno1 のMACアドレスをHost IDとして使用しました
      ※loやdocker0は使用しません
    14. ライセンス作成後、AMDからライセンスファイルがメールで送られてくるので、添付されたライセンスファイルをダウンロードします
    15. ライセンスファイルを ~/.Xilinx/ ディレクトリに配置します
    16. デスクトップに作成したVivadoショートカットを実行して、Vivadoが起動することを確認します
    17. 次にケーブルドライバをインストールします
      はじめにターミナルでinstall_driversの場所を確認します
    18. install_driversがあるフォルダまで移動し、install_driversを実行します
    19. インストール完了後、Vivadoを起動してメニューバーの「Tools」→「Open New Target」を選択します
    20. Hardware Manager上で、FPGAが表示されればセットアップは完了です

    はい、以上でVivadoのセットアップが完了です。
    一言言わせていただくと、非常に面倒くさいです。。。

    私もAIがなければ、セットアップできなかったかもしれません(涙)

    ですが、ここまでくればいよいよFPGAで遊ぶことができるわけです。
    非常に楽しみですね。

    ということで次回はFPGAを実際に使用し、Vivadoの操作方法とプログラムの作り方について調べていきましょう。

  • 待望のFPGA開発ボード

    待望のFPGA開発ボード

    記念すべき初投稿

    何を投稿しようか悩みましたが、タイミングよくFPGA開発ボードが届いたので、ネタとして丁度いい。

    ということでこちらの話をしましょう。

    そもそもFPGAってなんぞや🤔?

    答えられる自信はありますか?

    はっきり言いましょう。私は自信ありません。
    「バチクソに速くて、並列処理が得意なIC」くらいの認識です。

    まずは、自分なりにFPGAの概要を整理してみます。

    FPGAとは

    FPGAとは、Field Programmable Gate Arrayの略です。
    言ってしまえば「後から中身を書き換えられる論理ゲートの集まり」みたいなものです。

    Gateは、高専時代に嫌というほど聞いた、いわゆる論理素子のことでしょう。
    ビット信号を処理する電子回路の基本部品です。
    ANDとかOR,NOTというやつですね。

    一部の人はアレルギーを誘発するかもしれません。

    ちなみにこの回路は、私が仕事でよく使う回路です。
    入力A~Dのどれか一つでもONしているときに、入力Eが入ったら、出力をONにするという回路ですね。

    ド・モルガン先生がチラチラこっちを見ている気がします。

    様々な運転モードのうち、どれか一つでも実行されている状況で、エラーを検出したら停止指令を出す。
    こんな時に使っています。

    「どうしてA〜DをそのままORで組まないのか?」っていうツッコミが来そうなので、先に説明します。
    それはラダーで組む場合、ORを並列で何個も繋ぐとソフトが見づらくてしょうがないからです。

    話が脱線しました。失敬

    FPGAの強みは何なのか?

    私は先程、FPGAを「後から中身を書き換えられる論理ゲートの集まり」と表現しました。
    先程の論理回路を見てください。

    例えば、入力Aと入力Bの反転信号が入るAND素子をAND1、入力Cと入力Dの反転信号が入るAND素子をAND2とします。
    ではAND1とAND2は、どのタイミングで動くのでしょうか?

    ずばり、入力信号が変化したタイミングです。

    つまりFPGAは、CPUやPLCのようにプログラムを上から順番に処理するというより、書き込んだ論理回路がハードウェアとして同時に存在しているという方が近いかもしれません。

    実際には、クロックに同期して動かす回路も多いですが、複数の処理を並列に構成しやすい点がFPGAの大きな強みです。

    ゆえに速く、並列処理に優れていると言われるのでしょう。

    FPGA「おそろしく速い信号…オレでなきゃ見逃しちゃうね」

    ……言ってみたかっただけです。

    最後に

    今回はここまでにしましょう。
    私自身、FPGAは学校でいじった以来で初心者同然です。

    次回は実際にBASYS3を動かしてみます。