Spartan Edge Accelerator Board
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Spartan Edge Accelerator Board(略してSEA Board)は軽量なFPGA開発ボードであり、Xilinx Spartan-7チップを基盤とし、Arduinoシールドのフォームファクターに準拠しています。そのため、LCDやカメラを駆動するArduinoシールドとして使用することも、単独のFPGA開発ボードとして使用することもできます。さらに、オンボードのESP32チップを活用することで、SEAボードはArduinoにWiFiおよびBluetooth機能を提供します。
Spartan-7はXilinxのFPGAファミリーの中で最新かつ最もコスト効率の高いFPGAチップであり、ワットあたりの性能が最高クラスです。
さらに、Arduino向けの完全なFPGA APIを提供しているため、ArduinoユーザーはFPGAについて何も知らなくてもFPGA機能を利用することができます。このボードは、簡単な画像処理やコンピュータビジョンアプリケーション、信号の暗号化と復号化、信号のサンプリングと処理など、Arduinoの能力を多方面で拡張します。
特徴
高速画像処理
- 統合されたMIPI、mini HDMIインターフェース
- Raspberry Piカメラv1.0(OV5640)をサポート
- 最大30fpsの画像伝送をサポート
暗号化されたIoT
- ESP32によるIoT WiFiおよびBluetooth機能
- AWS、Azureなどのクラウドサービスをサポート
- ソフトウェア暗号化アルゴリズムをサポート
複数のI/Oポート拡張
- 20のユーザー定義拡張I/Oポート(単独モード)
- 10のユーザー定義拡張I/Oポート(Arduinoシールドモード)
- Arduino向けの完全なFPGA API
オンボード機能モジュール
- 8ビットADC & DAC
- 6軸加速度計 & ジャイロスコープ
- 2つのユーザーRGB LED & ボタン
2つのカスタマイズ開発モード
- Arduinoシールドモード
- FPGA単独モード
備考: ユーザーは異なるニーズに応じて異なるピンヘッダーを選択し、開発ニーズに応じてピンをはんだ付けすることができます。
対象ユーザー
- Arduino開発者
- IoT開発者
- FPGA開発者
適用事例
- MIPIカメラ入力とHDMI出力のVivadoエンジニアリング
- オンボードLED、DIPスイッチ、ADCおよびDACの参考事例
- オンボードジャイロスコープ事例
- Arduino向けGPIO/UART/ADC/DAC/RGB-LED拡張の提供
- 信号発生器事例(Arduino設定が必要)
- ESP32制御信号発生器事例
- AWS GreenGrass IoTプラットフォームの利用事例
- 色認識と物体追跡事例
- グラフィック認識事例(三角形、円、四角形の認識)
- デジタル文字認識事例
- FPGAでのAES暗号化および復号化アルゴリズムの実装
- FPGAでのPIDアルゴリズムの実装
新しいアプリケーションは随時更新されます.............
より多くの事例リソースについては、こちらのGithubページをご覧ください。
仕様
パラメータ | 値 |
FPGA | |
FPGA チップ | Spartan-7 XC7S15 |
ロジックセル | 12,800 |
Slics | 2000 |
CLB フリップフロップ | 16000 |
最大分散RAM (Kb) | 150 |
ブロックRAM/FIFO w / ECC (各36 kb) | 10 |
最大分散RAM (Kb) | 150 |
合計ブロックRAM (Kb) | 360 |
最大分散RAM (Kb) | 150 |
クロック管理タイル (1 MMCM + 1 PLL) | 2 |
DSP スライス | 20 |
ワイヤレス | |
ワイヤレスチップ | Espressif ESP32-D0WDQ6 |
WiFi | 802.11 b/g/n 2.4GHz |
Bluetooth | Bluetooth 4.1 with BLE |
周辺機器 | |
ビデオ | Mini HDMI x1 |
カメラ | CSI/MIPI インターフェース x1 (Raspberry Pi Camera V1 - OV5640 に対応) |
SDカード | 20 |
DSP スライス | Micro SD/TF カードスロット x1 |
FPGA GPIO | 10ピンヘッダー (IO9~IO0) |
Arduino GPIO | 32ピンヘッダー (Arduino フォームファクター) |
Grove | Grove コネクタ x2 (I2C/D2) |
LED | 単色LED x2 |
ボタン | Boot x1 |
スイッチ | 電源モードスイッチ x1 |
電源 | |
動作電圧 | 5V |
IO電圧 | 5V |
電源モード | USB Type C 5V |
その他 | |
ADC | 8ビット ADC1173 |
加速度計とジャイロスコープ | 6軸 LSM6DS3TR |
SEAシールドのIO電圧は5Vで、FPGAのIO電圧は3.3Vです。そのため、IO電圧を互換性のあるものにするために分圧回路を作成しました。SAM D21シリーズの3.3V IO電圧は分圧後に3.3V未満となり、FPGAのIOを駆動するには不十分です。そのため、現在SEA開発ボードは5V IO Arduinoボードのみをサポートしています。例えば、Arduino UNOやSeeeduino V4.2などです。
ハードウェア概要
番号 | 詳細 |
1 | FPGA : XC7S15-1FTGB196C |
2 | WiFi/Bluetooth : ESP32-D0WDQ6 |
3 | 6軸加速度計およびジャイロスコープ : LSM6DS3TR |
4 | DAC : DAC7311IDCKR |
5 | 降圧型DCDC : TPS62130 |
6 | USB-to-UART : CP2102-GMR |
7 | USB : Type-C |
8 | Mini HDMI |
9 | CSIインターフェース :MIPIカメラ (Raspberry Pi Camera V1 - OV5640と互換性あり) |
10 | Arduinoヘッダー : Arduino UNOと互換性あり |
11 | DIPスイッチ : |
12 | ESP32ボタン :BootおよびRST |
13 | FPGAボタン :USER1 USER2 FPGA_RST |
14 | ユーザーLED: L1/L2/RGB1/RGB2 |
15 | 電源スイッチ : |
16 | 電源モード: |
17 | DAC出力およびADC入力ヘッダー |
18 | FPGA IO : IO9~IO0 |
19 | FPGA JTAGダウンロードインターフェース |
20 | Groveコネクタ : 1x I2C; 1x D2&D3 |
21 | セラミックチップアンテナ |
22 | ADC : ADC1173 |
23 | SPIフラッシュ : W25Q32JVZPIG |
24 | アナログスイッチ :DG2788A |
25 | LDO : XC6221B102MR |
26 | LDO : RT9013-18GB |
27 | LDO : CJ1117-3V3 |
28 | SDカードスロット : Micro SD/TFカード |
はじめに
Spartan Edge Accelerator Boardは以下の2つのモードで動作します:
- Arduinoシールドモード
- スタンドアロンモード
簡単に言えば、Arduinoシールドとして使用してArduinoにFPGAとワイヤレス機能を追加することができます。また、Arduinoを使用せずにFPGA開発ボードとして単独で動作することも可能です。
Arduinoシールドモード
このWikiではSeeeduino V4.2を使用しますが、Arduino UNOも使用可能で、互換性があります。
ハードウェア
必要な材料
ハードウェア接続
- ステップ1. Micro SDカードまたはTFカードをSDカードスロットに挿入します。
- ステップ2. SEAボードをArduinoに接続します。
- ステップ3. 以下の3つの方法のいずれかを使用してシステムに電源を供給します。
電源ポート | 入力電圧 | 電源スイッチ位置 | 電源モード位置 |
SEAボードのUSB Type Cポートから給電 | 5V DC | USB | ON |
Seeeduino V4.2のmicro USBポートから給電 | 5V DC | - | ON |
Seeeduino V4.2のDCポートから給電 | 8~17V DC | 5V | ON |
SEAボードとArduinoの両方に同時に電源を供給することも可能ですが、その場合は必ず電源モード位置をOFFに設定してください。この設定により、システムの電源が分離され、ArduinoとSEAボードを個別に給電することができます。
Spartan Edge Accelerator Board ESP32の起動
まず、Arduinoと連携するために、SDカードからオンボードFPGA(xc7s15)にビットストリーム(FPGAロジック)をロードする必要があります。以下のライブラリを使用してオンボードESP32を介してこれを行う方法を示します。
Spartan Edge Accelerator Board用ライブラリ
このライブラリの目的は、オンボードESP32を使用してSDカードからオンボードFPGA(xc7s15)にビットストリーム(FPGAロジック)をロードすることです。
ソフトウェア開発環境はArduino IDEで、ESP32 Boards supportを使用します。
バージョン1.6.4以降、ArduinoはBoards Managerを使用してサードパーティのプラットフォームパッケージをインストールすることを許可しています。Windows、Mac OS、Linux(32ビットおよび64ビット)向けのパッケージが利用可能です。
- 現在のアップストリームArduino IDEを1.8以上のレベルでインストールします。最新バージョンはArduino公式サイトで確認できます。
- Arduinoを起動し、Preferencesウィンドウを開きます。
https://dl.espressif.com/dl/package_esp32_index.json
をAdditional Board Manager URLsフィールドに入力します。複数のURLを追加する場合は、カンマで区切ります。- Tools > BoardメニューからBoards Managerを開き、esp32プラットフォームをインストールします(インストール後、Tools > BoardメニューからESP32ボードを選択することを忘れないでください)。
- tool->board->DOIT ESP32 DEVKIT を選択します。
安定版リリースリンク: https://dl.espressif.com/dl/package_esp32_index.json
開発版リリースリンク: https://dl.espressif.com/dl/package_esp32_dev_index.json
詳細については、こちらをクリックしてください。
ライブラリの使用方法
- 1. ESP32 Bootライブラリをダウンロードする
次に、このライブラリをArduino IDEに追加します。
ライブラリのインストール方法がわからない場合は、以下を参照してください:
このライブラリには2つの例フォルダが含まれています。
例 | 説明 |
01LoadDefaultBitstream | この例では、SDカードのファイル /overlay/default.bit をFPGAにロードします。 |
02LoadConfigBitstream | この例では、SDカード内のini形式ファイル /board_config.ini を読み取り、キー overlay_on_boot の値で指定されたビットストリームをFPGAにロードします。 |
- 2. SDカードの準備
2.1 SDカードをFAT16/FAT32ファイルシステムでフォーマットします。
2.2 SDカードにoverlayという名前のトップレベルサブフォルダを作成します。
2.3 ビットストリームまたはサンプルビットストリームファイル(拡張子が.bitである必要があります)をoverlayフォルダに配置します。
サンプルビットストリーム:SPIインターフェースで制御されるGPIO拡張機能で、ADC/DAC/RGB-LEDをサポートします。ソースコードを参照してください。
2.4 例01LoadDefaultBitstreamを実行する場合、overlayフォルダ内のビットストリームファイルをdefault.bitに名前変更します。
2.5 例題「02LoadConfigBitstream」を実行する場合は、board_config.ini をSDカードのルートフォルダに配置してください。
2.6 SDカードをSpartan(Edge Accelerator)ボードに挿入してください。
3. 例題のアップロード
3.1 SpartanボードをUSB Type-CケーブルでPCに接続し、USB232ドライバ(チップCP2102)をインストールします。
3.2 電源スイッチ(USB Type-Cスロット付近)をUSB側に切り替えてボードの電源を入れます。
3.3 Arduino IDEでライブラリの例題の1つを開きます。
3.4 前のセクションで説明したように、Arduino IDEでボードとポートの設定を確認します。
3.5 Spartanボードの「BOOT」ボタンを1秒以上押し続けて、ESP32をブートローダーモードに強制的に入れます。
3.6 Arduino IDEで「Upload」ボタンを押して、例題(コンパイル済みバイナリ)をESP32にアップロードします。4. 例題の実行
4.1 オンボードDIPスイッチK5(最後のスイッチ)がSlave(ON)側になっていることを確認してください。これにより、他のデバイス(MCU)によるFPGAプログラミングが有効になります。
4.2 Spartanボードの「RST」ボタンを押して例題を起動します。
4.3 例題が起動して数秒後、ボード上のFPGA_DONE(赤色)LEDが点灯します。
Spartan Edge Accelerator Board IO例題
以下のチュートリアルでは、Spartan Edge Accelerator BoardのGPIO/ADC/DAC/RGB-LEDリソースをArduinoで制御する方法を説明します。
- IO例題ライブラリをダウンロードしてください:
このライブラリをArduino IDEに追加してください。ライブラリのインストール方法がわからない場合は、以下を参照してください:
examples
フォルダに移動し、任意の例題を選択して、.inoファイルをダブルクリックしてください。デモをアップロードしてください。コードのアップロード方法がわからない場合は、コードのアップロード方法を参照してください。
スタンドアロンモード
ハードウェア
必要な材料
Spartan Edge Accelerator BoardをUSB Type Cケーブルで電源供給するだけです。
ソフトウェア
Spartan Edge Accelerator Boardは、従来のFPGA開発ボードとしても動作します。以下では、スタンドアロンモードでの使用方法を説明します。
このセクションでは、プロジェクト作成、ソースファイル管理、設計分析、制約定義、合成および実装の実行管理に関するプロジェクトモードの機能について学びます。これはクイックリファレンスとして使用できます。
まず、vivadoチュートリアルライブラリをダウンロードしてください。一部のソースファイルが必要です。
ステップ1: プロジェクトの作成
Vivadoの起動
新しいプロジェクトの作成
Vivadoを開いたら、スタートページでCreate Projectを選択します。
新しいプロジェクトウィザードでNextをクリックします。
プロジェクト名と場所を指定します(「Create project subdirectory」を選択して、プロジェクト用のフォルダを作成します)。
Nextをクリックします。
RTL ProjectをProject Typeとして選択し、Nextをクリックします。(「Do not specify sources at this time」を選択し、後でファイルを追加します)
(Vivado Design Suiteは、ソースファイルの種類や設計タスクに応じて異なる設計エントリポイントを提供します。適切なプロジェクトタイプを選択してください。)
プロジェクト用にxc7s15ftgb196-1パーツを選択し、Nextをクリックします(図1参照)。
Finishをクリックします。
Vivado IDEは、デフォルトレイアウトでproject_tutorialを開きます(図2参照)。
Flow Navigatorは基本的な設計プロセスを明確に示しています。
SourcesはConstraints、Simulation Sources、Utility Sourcesで構成されています。
Design Runsはデフォルトでsynth_1とimpl_1を作成します。
Vivadoの実行ステータスは右上隅に表示されます。
ステップ2: ファイルの追加と作成
このステップでは、プロジェクトにtest.v、test_pin.xdc、test_sim.vを追加します。これらのファイルはvivado_tutorial/vivado_tutorial.srcsの異なるフォルダにあります。
Flow NavigatorのPROJECT MANAGERでAdd SourcesをクリックしてRTLファイルを追加します。
Add or create design sourcesを選択し、Nextをクリックします。
ボタンをクリックしてオプションを選択するか、直接オプションをクリックしてファイルを追加または作成します(図3参照)。
- ここでは、RTLファイルを直接追加します。Add Filesを選択し、ディレクトリ内のファイルtest.vを追加します(図4参照)。
Finishをクリックします。
Flow NavigatorのPROJECT MANAGERで再度Add Sourcesをクリックして制約ファイルを追加します。
Add or create constraintsを選択し、Nextをクリックします。
Add Filesをクリックして制約ファイルtest_pin.xdcを追加します(図5参照)。
Finishをクリックします。
Flow Navigator の PROJECT MANAGER で Add Sources を再度クリックし、シミュレーションファイルを追加します。
Add or create simulation sources を選択し、次へをクリックします。
Add Files をクリックして、シミュレーションファイル test_sim.v を追加します(図6参照)。
Finish をクリックします。
最後に、追加したファイルが Sources に表示されます(図7参照)。
ステップ3: RTLデザインの展開
Vivado IDE には、RTL解析およびIPカスタマイズ環境が含まれています。また、RTLデザインのパフォーマンスや消費電力を改善する方法を検討するためのいくつかのRTLデザインルールチェック(DRC)も用意されています。
Flow Navigator で Open Elaborated Design を選択してデザインを展開します。
メインツールバーの Layout Selector プルダウンメニューで Default Layout が選択されていることを確認します。展開されたデザインでは、RTLネットリスト、回路図、階層構造のグラフィカルビューなど、さまざまな解析ビューが利用可能です。これらのビューにはクロスセレクト機能があり、RTLのデバッグや最適化に役立ちます。
RTL Netlist ウィンドウでロジック階層を探索し、回路図を確認します。セルをダブルクリックして階層を掘り下げたり、回路図のポップアップメニューから Expand Cone や Expand/Collapse コマンドを使用して回路図をたどることができます。
回路図内の任意のロジックインスタンスを選択し、右クリックして Go to Source または Go to Definition コマンドを選択します。
Vivado IDE の下部にある Messages ウィンドウをクリックし、メッセージを確認します。
Messages ツールバーの Collapse All ボタンをクリックします。
展開されたデザインとメッセージを確認します(図8参照)。
- リンクの1つをクリックすると、テキストエディタが開き、関連する行がハイライトされます。
- テキストエディタウィンドウを閉じます。
- 展開されたデザインウィンドウのバナー右側にある X をクリックして閉じ、確認のため OK をクリックします。
ステップ4: IPカタログの使用
Xilinx IPカタログは、Vivado IPの設定および生成機能へのアクセスを提供します。カタログはさまざまな方法で並べ替えたり検索したりできます。IPはカスタマイズ、生成、インスタンス化が可能です。
Flow Navigator の Project Manager の下にある IP Catalog ボタンをクリックします。
IPカタログを参照して、さまざまなカテゴリやIPフィルタリング機能を確認します。
対応するIPを選択し、ツール内でネイティブなカスタマイズと設定を行い、OK を選択します。
ウィンドウタブの X をクリックしてIPカタログタブを閉じます。
ステップ5: 動作シミュレーションの実行
Vivado IDE は Vivado Simulator を統合しており、プロジェクト内でシミュレーションソースを追加および管理できます。シミュレーションオプションを設定し、シミュレーションソースセットを作成および管理できます。合成前にRTLソースで動作シミュレーションを実行できます。
- Flow Navigator の Project Manager の下にある Settings コマンドをクリックします。Settings ダイアログボックスが開き、上部に Project Settings、その下に Tool Settings が表示されます(図9参照)。
- Simulation ページで利用可能な設定を確認し、Cancel をクリックしてダイアログボックスを閉じます。
- Flow Navigator の Run Simulation コマンドをクリックし、サブメニューで Run Behavioral Simulation をクリックします(図10参照)。
- バーを左にドラッグし、これらのツールを使用してズームインまたはズームアウトして適切な画像を確認します(図11および図12参照)。
- 図13の右上隅にある X をクリックし、OK をクリックしてシミュレーションを閉じます。
ステップ6: デザインラン設定の確認
デザインランは、合成および実装プロセスのさまざまなステップで利用可能な多くのオプションを設定および保存する方法です。これらのオプションを設定し、将来のランで使用する戦略として保存できます。
Flow Navigator の Project Manager の下にある Settings コマンドをクリックします。
Project Settings の下にある Synthesis ページを選択します。これらのオプションの完全な説明については、Vivado Design Suite User Guide: Synthesis(UG901)を参照してください。
Project Settings の下にある Implementation ページを選択します。これらのオプションの完全な説明については、Vivado Design Suite User Guide: Implementation(UG904)を参照してください。
- ステップ7: デザインの合成と実装
合成と実装の実行オプションを設定した後、Design RunsでRun SynthesisおよびRun Implementationを実行するか、Flow Navigator内の対応するボタンをクリックしてこれを行うことができます。合成および実装中のVivadoの実行ステータスは右上隅に表示されます。
このチュートリアルでは、これらの手順をDesign Runsで実行します。
- syth_1を右クリックし、Launch Runsを選択します(図14参照)。
- OKをクリックすると、実行ステータスが右上隅に表示されます(図15参照)。
- Open Synthesized Designをクリックして、さらなる設計と分析を行います。Report Timing Summary、Report Utilizationなどを確認できます(図16参照)。
- 同じ方法で実装を実行します(図17参照)。
- Open Implemented Designをクリックして、実装後のレポートを確認します。
ステップ8: ビットストリームファイルの生成
Implementing the Designが完了すると、Design Runsで合成と実装が完了したことが確認できます(図18参照)。
Flow NavigatorでGenerate Bitstreamをクリックします。
ステップ9: ファイルのダウンロード
Generate Bitstreamが完了した後、FPGAにファイルをロードする方法は2つあります。
VivadoでJTAGインターフェース(図19の右上隅)を使用してビットファイルをFPGAにロードするか、ESP32(図19の右下隅)を使用してビットファイルをFPGAにロードします。
以下の手順に従って、JTAGインターフェースを介してビットストリームをFPGAにロードします
ボードに電源を入れ、Platform Cable USB II(または互換性のあるケーブル)を接続します。
Flow NavigatorでOpen Targetをクリックし、Auto Connectを選択します。
ボードへの接続が成功したら、Program Deviceをクリックし、ビットファイルを選択してProgramをクリックします(図20参照)。
ビットファイルのダウンロード後、FPGAのDONE LEDが点灯します。
このプロジェクトでは、いずれかのキー(USER1またはUSER2)を押すと、LED L1が消灯します。
回路図オンラインビューア
リソース
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートを用意しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。