FPGA開発入門: Xilinx Artix-7で4ビットアダーを構築
編集部注: 高度なアルゴリズムが進化し続ける中、組み込み設計者は現代アプリケーションの処理要求を満たすことに苦労することがよくあります。フィールドプログラマブルゲートアレイ(FPGA)は必要な性能を提供し、最近のハードウェアとツーリングの進歩によりFPGA開発がより幅広い層にアクセス可能になりました。Jim Ledin著『Architecting High-Performance Embedded Systems』から派生したシリーズの第4回となる本記事では、シンプルだが完全なFPGAプロジェクトの構築を実践的にウォークスルーします。
初めてのFPGAプロジェクト開発
Digilent Arty A7開発ボードに搭載されたXilinx Artix-7 FPGA上で、4ビットバイナリアダーを構築します。ボードにはコスト効率の良い35Tモデル(129ドル)と、より強力な100Tモデル(249ドル)の2種類があります。唯一の違いはFPGAバリアントで、利用可能なロジックリソースに影響します。後の章のデジタルオシロスコープ例のような、より多くのリソースを必要とする将来のプロジェクトには100Tが望ましいです。
購入オプション: Digilent Store、Amazon、その他小売店。
このチュートリアルでは、FPGAコア、4つのユーザースイッチ、4つのプッシュボタン、5つのLEDに焦点を当てます。以下の手順で、Vivadoツールスイートのインストール、プロジェクト作成、VHDLコード記述、ビットストリームのボードへの書き込み(揮発性コンフィギュレーションメモリとオンボードフラッシュの両方へ、持続動作用)をカバーします。
プロジェクト概要
この設計は4ビットアダーを実装します。4つのスイッチが最初の4ビットオペランドを、4つのプッシュボタンが2番目のオペランドを提供します。FPGAはこれらのオペランドを継続的に加算し、4ビット和を4つのLEDに表示し、5つ目のLEDでキャリーアウトを示します。このシンプルな設計により、複雑なロジックではなくツールチェーンワークフローに集中できます。
Vivadoのインストール
Xilinx Vivadoを使用します。WindowsとLinuxで無料で利用可能です。以下の手順はWindowsを想定しています。Linuxのインストール手順も類似です。
- Xilinxユーザーアカウントを作成: https://www.xilinx.com/registration/create-account.html
- https://xilinx.comでログインし、ダウンロードページへ移動
- Xilinx Unified Installer(Windows自己解凍Webインストーラ)をダウンロード。本書との整合性のためバージョン2020.1を選択、それ以外は最新リリースを使用
- インストーラを実行(例: Xilinx_1_0602_1208_Win64.exe)。Windowsがダウンロードをブロックする場合は「とにかくインストール」を選択
- ウェルカム画面でNextをクリック
- Xilinx認証情報を入力しNextをクリック
- ライセンス契約を確認しNextをクリック
- Vitisを製品として選択(VitisにはVivadoと追加ツールがバンドル)。Nextをクリック
- デフォルトのコンポーネント選択を受け入れNextをクリック
- 宛先ディレクトリを選択(例: C:\Xilinx)しNextをクリック
- サマリーを確認しInstallをクリック。インストールには数分かかる場合があります
インストール後、デスクトップショートカットまたはスタートメニューからVivadoを起動します。
プロジェクトの作成
- Vivadoを開き、Quick StartペインのCreate Projectをクリック
- プロジェクト名にArtyAdderを入力、ディレクトリを選択(例: C:\Projects)、Create a subdirectory for this projectにチェック。Nextをクリック
- RTL Projectを選択し、Do not specify sources at this timeにチェック。Nextをクリック
- Boardsタブで「Arty」を検索し、ハードウェアに応じてArty A7-100またはArty A7-35を選択。Nextをクリック
- ウィザードを完了して空のプロジェクトを作成
VHDLソースファイルの追加
- SourcesペインでDesign Sourcesを右クリック → Add Sources…
- Add or create design sourcesを選択しNextをクリック
- Create Fileを選択、名前をFullAdder.vhdlとしOKをクリック
- 同様にAdder4.vhdlを作成しFinishをクリック
- Define Modulesダイアログは無視し、OKをクリックしてYesで確認
- FullAdder.vhdlを開き、以下のコードを貼り付け:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end entity FULL_ADDER; architecture BEHAVIORAL of FULL_ADDER is begin S <= (A XOR B) XOR C_IN; C_OUT <= (A AND B) OR ((A XOR B) AND C_IN); end architecture BEHAVIORAL;
- Adder4.vhdlを開き、以下の内容で置き換え:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ADDER4 is port ( A4 : in std_logic_vector(3 downto 0); B4 : in std_logic_vector(3 downto 0); SUM4 : out std_logic_vector(3 downto 0); C_OUT4: out std_logic ); end entity ADDER4; architecture BEHAVIORAL of ADDER4 is component FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end component; signal c0, c1, c2 : std_logic; begin FULL_ADDER0 : FULL_ADDER port map ( A => A4(0), B => B4(0), C_IN => '0', S => SUM4(0), C_OUT => c0 ); FULL_ADDER1 : FULL_ADDER port map ( A => A4(1), B => B4(1), C_IN => c0, S => SUM4(1), C_OUT => c1 ); FULL_ADDER2 : FULL_ADDER port map ( A => A4(2), B => B4(2), C_IN => c1, S => SUM4(2), C_OUT => c2 ); FULL_ADDER3 : FULL_ADDER port map ( A => A4(3), B => B4(3), C_IN => c2, S => SUM4(3), C_OUT => C_OUT4 ); end architecture BEHAVIORAL;
次のステップ
次の記事では、この設計のシミュレーション、Artyボード向け合成、結果のビットストリームをFPGAにプログラミングする手順をガイドします。
Packt Publishingの許可を得て再録. Copyright © 2021 Packt Publishing
Jim Ledin氏はLedin Engineering, Inc.のCEOです。組み込みソフトウェアとハードウェアの設計、開発、テストを専門とし、組み込みシステムのサイバーセキュリティ、ペネトレーションテスト、エシカルハッキングの専門知識を保有。アイオワ州立大学で航空宇宙工学のB.S.、ジョージア工科大学で電気・コンピュータ工学のM.S.を取得。カリフォルニア州登録プロフェッショナル電気エンジニア、CISSP、CEH、CPT保持者。
関連コンテンツ
- FPGAを用いた組み込み設計: ハードウェアリソース
- FPGAを用いた組み込み設計: 実装言語
- FPGAを用いた組み込み設計: 開発プロセス
- オープンソースツールがFPGAプログラミングを簡素化
- FPGAやASICでの浮動小数点アルゴリズム実装
- ディープラーニングへのFPGA活用
- AIアプリケーション向けGPUコードをFPGAに移行するソフトウェアツール
- FPGAがSubaru EyeSightビジョンベースADASでASICに取って代わる
Embeddedの週刊ニュースレターを購読して、さらなる洞察を入手してください。
埋め込み
- Raspberry Pi と Python でロボットを構築:完全ガイド
- Raspberry Pi で自作セグウェイ(自己平衡ロボット)を構築
- GoPiGo v2をWindows 10 IoT Coreで拡張 - Raspberry Pi 3対応
- 高度なアディティブ・マニュファクチャリング・ソフトウェアで生産を最大化
- 液体積層造形:液体材料で3Dオブジェクトを造形
- 組み込みシステム設計:手順、原則、実世界での応用
- 組み込みAIでビッグデータを実用的なスマートインサイトに変換
- PCIe世代を跨ぐ高性能インターコネクトの設計
- Arrow Electronics、欧州FPGA設計コンテスト開催:無料開発ボードと豪華賞品
- MAXREFDES220# - 光学センサーによるカフレス血圧モニタリング
- Microchip、防衛グレードPolarFire SoC FPGAを早期アクセスプログラムで提供開始