投稿者: 運営者

  • FPGA開発ボード #1 | VivadoでBasys 3用プロジェクトを作成

    FPGA開発ボード #1 | VivadoでBasys 3用プロジェクトを作成

    お久しぶりです。
    前回の投稿からだいぶ時間が経ってしまいました。

    申し訳ありません。


    前置き

    今回は、前回インストールしたFPGA開発ソフトのVivadoを使用して、
    Basys 3用の新規プロジェクトを作成するところまで進めます。

    Vivadoでは、使用する機器によって、プロジェクト作成前に事前準備が必要になるケースがあります。

    私の環境では、Digilent製のBasys 3がVivadoに登録されていなかったため、
    プロジェクトを作成する前にボードファイルを追加する必要がありました。

    よって、新規プロジェクトを作成するまでの手順を、大まかに整理すると以下のようになります。

    1. Basys 3のボードファイルをGitHubから入手する
    2. 取得したボードファイルをVivadoに登録する
    3. Basys 3用の新規プロジェクトを作成する

    手順に入る前におさらいですが、今回の開発環境はこんな感じです。
    (2026/8/11時点)

    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)
    VivadoVivado 2026.1

    1. Basys 3のボードファイルをGitHubから入手する

    1. Digilent公式のGitHubを確認します
    2. vivado-boardsリポジトリを開きます
    3. ボードファイルの保存先を決めます
      私の場合は、<~/.local/share>ディレクトリを使用
    4. Ubuntuのターミナルから、ボードファイルを保存するディレクトリへ移動します
    Bash
    cd ~/.local/share
    1. DigilentのGitHubリポジトリをクローンします
    Bash
    git clone --depth 1 https://github.com/Digilent/vivado-boards.git digilent-vivado-boards
    1. クローンが正常に完了すると、<~/.local/share>内に
      <digilent-vivado-boards>ディレクトリが作成されます

    2. 取得したボードファイルをVivadoに登録する

    概要

    Vivadoでは、ボードファイルの保存先を登録することで、標準では表示されない開発ボードを認識できるようになります。

    今回は、前項で取得したボードファイルの保存先をVivado_init.tclに登録し、Vivado起動時に自動で読み込まれるよう設定します。

    詳細

    1. Ubuntuのターミナルから、Vivadoの初期設定ファイルを保存するディレクトリを作成します
    Bash
    mkdir -p ~/.Xilinx/Vivado
    1. Ubuntuのターミナルから、Vivado_init.tclを作成します
    Bash
    nano ~/.Xilinx/Vivado/Vivado_init.tcl
    1. ボードファイルの保存先を記述します
    Bash
    set_param board.repoPaths [list [file join $env(HOME) .local share digilent-vivado-boards new board_files]]
    1. Vivado_init.tclを保存して、nanoを終了します

    Ctrl + O : ファイルを保存
    Ctrl + X : nanoを終了

    1. Vivadoを起動します
    2. Tcl Consoleを立ち上げます
    1. Tcl Consoleが立ち上がると画面下に「Tcl Console」タブが表示されます
    1. 初期設定が読み込まれていることを確認します
      Tcl Consoleにて、以下のコマンドを実行します
    Bash
    get_param board.repoPaths
    1. 以下の保存先ディレクトリが表示されることを確認します
    1. Basys 3が認識されていることを確認します
      Tcl Consoleにて、以下のコマンドを実行します
    Bash
    get_board_parts *basys3*
    1. 以下のようなボード情報が表示されれば登録完了です

    3. Basys 3用の新規プロジェクトを作成する

    1. ホーム画面の「New Project」を選択します
    1. プロジェクト名ならびにファイルの保存先を設定します
    Create project subdirectory

    ファイルの保存先に設定したディレクトリに、プロジェクト名でディレクトリを増やすかという設定になります。

    プロジェクト名:FPGA
    保存先ディレクトリ:<~/firmware>

    保存先(チェック有り):<~/firmware/FPGA/>
    保存先(チェック無し):<~/firmware/>

    1. 設定が完了したら「Next」で進みます
    1. 作成するプロジェクトの種類を選択します
    RTL Project

    VerilogやVHDLを使って、FPGA内部に作るデジタル回路を設計するためのプロジェクトです。

    通常、FPGAの回路を新しく作成する場合は、このプロジェクトを選択します。

    Verilog/VHDL

    ハードウェア記述言語(HDL:Hardware Description Language)の一種

    FPGA内部に作るデジタル回路の構成や動作を記述するために使用

    Post-synthesis Project

    VerilogやVHDLから作成された回路データを読み込み、その後の配置配線や解析を行うためのプロジェクトです。

    別の開発ツールで作成したデータや、過去に作成したデータを再利用する場合などに使用します。

    論理合成

    VerilogやVHDLの記述から、FPGA内部に作る回路データを作成する処理

    I/O Planning Project

    どの信号をFPGAのどの端子へ割り当てるか、使用する電圧や端子数に問題がないかなどを検討するためのプロジェクトです。

    FPGAを搭載した基板を設計する際、端子配置を先に決めたい場合などに使用します。

    Imported Project

    Vivado以外の対応している開発ソフトで作成したプロジェクトを、Vivadoへ移行するためのプロジェクトです。

    Vivado 2026.1では、Synplifyで作成したプロジェクトファイルを読み込む場合に使用します。
    (2026/8/11時点)

    Synplify

    Synopsys社が提供するFPGA向けの開発ソフト

    Example Project

    Vivadoにあらかじめ用意されているサンプルやテンプレートをもとに作成するプロジェクトです。

    回路やIPの使用例を確認したい場合や、サンプルをもとに動作を試したい場合に使用します。

    1. 選択が完了したら「Next」で進みます
    1. Source Fileを追加します

    Source File

    FPGA内部に作る回路の構成や動作を記述したファイル
    VerilogやVHDLなどで作成

    1. 今回はプロジェクト作成後に追加するため、そのまま「Next」で進みます
    1. Constraint Fileを追加します

    Constraint File

    FPGAの端子割り当てやクロック条件など、回路を実装するための条件を記述したファイル

    Vivadoでは主にXDC形式を使用

    1. 今回はプロジェクト作成後に追加するため、そのまま「Next」で進みます
    1. 使用するFPGAもしくは開発ボードを選択します
    2. 今回はBasys 3を使用するので、「Basys 3」と検索して該当のボードを選択します
    1. 選択が完了したら「Next」で進みます
    1. プロジェクトの設定内容を確認します
    2. 内容に問題がなければ「Finish」を選択します
    1. 以下のようなプロジェクト画面が表示されれば作成完了です

    まとめ

    今回は、Digilentが公開しているボードファイルをVivadoへ登録し、Basys 3用の新規プロジェクトを作成しました。
    これで、Basys 3を使用してFPGA回路を開発する準備が整いました。

    次回は、ソースファイルと制約ファイルを追加し、実際にBasys 3上で回路を動かしていきます。

  • 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を動かしてみます。