条件を指定して絞り込む

現在1128件がヒットしています。check

記事カテゴリ
製品カテゴリ
メーカー

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

こんにちは。

マクニカでインテル® FPGA の技術サポートをしている インテル・F・ハナコ です。

 

今回の "FPGA でLチカ" は、インテル® の MAX® 10 FPGA に Nios® II を入れてLチカ です。

Article header img02  2

以前ご紹介した HDL でLチカと同じで、

基板上のプッシュボタン (PB0) を押したときだけ LED (LED0) が点灯し、PB0 を離すと LED0 が消灯します。



こんな感じ →→→

ただ今回のLチカは、FPGA に組み込んだ Nios® II にLチカするプログラムを実行させて実現します。

<参考> Nios® II とは? (左側のナビゲーションをクリックしてご覧ください。)

用意するもの

ここからは、評価ボードに Mpression製 Odyssey(オデッセイ)MAX® 10 FPGA 評価キットを使ってご案内します。

用意するもの

Odyssey MAX® 10 FPGA
Eva Kit

(10M08SAU169C8GES 搭載)

USB-microUSB ケーブル
(PC と Odyssey 接続用)

Quartus® Primeライト・エディション
(有償エディションでもOK)

USB-Blaster™ II ダウンロード・ケーブル
USB-Blaster でもOK)

基板上の プッシュボタン/FPGA/LED の接続構成はこんな感じ

今回 Nios® II でLチカを実現するには、作業が大きく2つあります。

  • FPGA に Nios® II を組み込む
  • Nios® II に実行させるプログラム(C言語)を作る


Lチカ動作は HDL 言語だと簡単に書けてしまえますが、今回はあえて Nios® II を使ってみましょう。
(これが Nios® II を採用したシステム開発への第一歩です!)

Article header img04 1  3
Odyssey:LED / プッシュボタン / Nios® II の関係図

早速 Quartus® Prime でハードウェア設計スタート!

インテル® デバイスの開発環境 Quartus® Prime を使って、FPGA/CPLD の一般的な開発フロー に基づいて作業を進めます。

1. Platform Designer で Nios® II と周辺回路を設計する

Quartus® Prime でプロジェクトを作ります。その後 Platform Designer(Tools メニュー > Platform Designer)を起動して Nios® II プロセッサと周辺のペリフェラルを作ります。
今回作る Nios® II システム構成はこんな感じ。
その際、Nios® II のブートメモリおよび実行メモリは、On-Chip RAM とします。

Article header img05 1  1
サンプル・デザインにおける Nios II システムの構成

では作っていきましょう!

1-1.
Nios® II Processor を追加します。
Platform Designer の左上にある IP Catalog から Nios® II Processor を選び、コアのタイプから Nios® II/e を選択します。(Finish ボタンをクリックすると追加されます。)

Article header img06  2
Nios® II Processor を追加

 

 

1-2.
On-Chip Memory を追加します。
同様に、IP Catalog から On-Chip Memory (RAM or ROM) Intel FPGA IP を選び、図のように設定します。それ以外はデフォルトのまま Finish ボタンをクリックします。

Article header img07  12
On-Chip Memory を追加

 

 

 

 

1-3.
PIO(入力/出力)を追加します。
IP Catalog から PIO (Parallel I/O) Intel FPGA IP を選び、バス幅と入出力属性を指定します。PB0 用、LED0 用の2つ PIO を作ります。

Article header img08  3
PIO(入力/出力)を追加

 

1-4.
JTAG UART を追加します。
printf デバッグをするため、パソコンと JTAG インタフェース(USB-Blaster™ II 経由)で UART 通信する JTAG UART Intel FPGA IP を作ります。

Article header img09  3
JTAG UART を追加

 

1-5.
各コンポーネントの名前を変更します。
System Contents タブの Name 欄で Rename をします。こんな感じにしてみました。

Article header img10  2
各コンポーネントの名前を変更

 

1-6.
各コンポーネントを接続します。
Connections 欄の白丸をクリックして黒丸(接続)に変更します。こんな感じでつなぎます。

Article header img11  1
各コンポーネントを接続

 

1-7.
割り込みポートを接続します。
JTAG_UART の Interrupt Sender と Nios® II Processor の Interrupt Receiver を上図のように接続します。値は優先順位を示しますが、今回は割り込みが1本なので0のままにします。

1-8.
Nios® II のブートメモリを作成した On-chip RAM(onchip_memory)に指定するため、作成した Nios® II の Reset Vector と Exception Vector 設定を、図のように設定します。

Article header article header img12  1
Reset Vector と Exception Vector の設定

 

1-9.
作成した PIO の入力・出力信号を Nios® II システムの外部に Export します。

Article header img13  2
PIO の入力・出力信号をExport

 

1-10.
ベース・アドレスが重複のないように設定します。
Platform Designer の System メニュー > Assign Base Address を実行すると、ベース・アドレスが自動的に適切な値に設定されます。

1-11.
これで Nios® II システムは完成です。File メニュー > Save As… で名前を付けて、.qsys ファイルを保存します。


1-12.
Platform Designer 画面の右下にある [Generate HDL] ボタンをクリックし、Nios II システムのモジュールを生成します。

  • Syntesis:Quartus® Prime でコンパイルするときの論理合成用の HDL 言語を指定します。
  • Simulation:シミュレーション用モデルのHDL言語を指定します。


今回は VHDL で設計するので "VHDL" を選択しています。

[Generate] ボタンをクリックし、モジュールを生成します。その後、Finish ボタンをクリックし、Platform Designer を閉じます。

Article header img14  1
Nios II システムのモジュールを生成

2. FPGA のデザインを完成させる

2-1.
最上位階層の HDL デザインに Platform Designer で作成したモジュールを組み込みます。
最上位階層デザインへ組み込みやすいように Platform Designer で作成した Nios® II システムが保存されているフォルダ内にインスタンス補助ファイル(*_inst.vhd)があるので、コピペ&編集で接続を完了させます。

Article header img15  7
Nios II システムが生成されたフォルダ

例えばこんな感じです。

library ieee;
use ieee.std_logic_1164.all;
entity led_press_button_nios2 is
 port (
    CLK   : in std_logic;
    PB0   : in std_logic;
    LED0   : out std_logic
    );
end led_press_button_nios2;
architecture rtl of led_press_button_nios2 is
 component nios2_system is
  port (
     button_pio_external_connection_export   : in std_logic;
     clk_clk   : in std_logic;
     led_pio_external_connection_export   : out std_logic
     );
 end component nios2_system;
 signal  button_wire  : std_logic;
 signal  wire_led  : std_logic;
begin
 button_wire <= not PB0;
 nios2: nios2_system
 port map (
      clk_clk => CLK,
      button_pio_external_connection_export => button_wire,
      led_pio_external_connection_export => wire_led
       );
 LED0 <= not wire_led;
end rtl;

 

2-2.
HDL デザインと Nios® II システムを Quartus® Prime のプロジェクトに登録します。
Project メニュー > Add/Remove Files in Project において、作成した HDL デザインと Nios® II システムの .qip ファイルを登録します。

Article header article header img16  1
Quartus® Prime のプロジェクトに登録

3. 論理シミュレーションをする

以下のページを参考に実施してください。

4. 制約を設定する

4-1.
ピンアサインを設定します。
Mpression 製 Odyssey MAX 10 FPGA 評価キットの場合、以下のようにピンをアサインしてください。

Article header img21  6
Pin Planner の設定

詳細の操作は 「「Quartus Prime はじめてガイド - ピン・アサインの方法」 を参考にしてください。

4-2.
コンフィギュレーション・モードを選択します。
MAX® 10 の CFM(コンフィギュレーション用のフラッシュ・メモリ)をどう使うか=何モードを選ぶか、になるのですが、今回は Single Compressed Image with Memory Initialization を選択します。

Article header img20  4
コンフィギュレーション・モードを選択

4-3.
タイミング制約を設定します。
Nios® II システム作成時に自動生成された SDC ファイルが、qip ファイルの登録(作業2-2)と同時に Timing Analyzer 設定画面(Assignments メニュー > Settings)に自動セットされます。

また、今回のデザインは50MHzのクロックで動作する仕様なので、クロック定義のコマンドを記述した SDC を別途作成し、プロジェクトに追加登録します。本来は、ユーザー I/O ピンのタイミング制約も必須ですが、入力信号(PB0 を人が押す・離す)も出力信号(LED0 が点灯・消灯)も超低速なので、I/Oのタイミング制約は省略します。

Article header article header img17  1
タイミング制約を設定

5. コンパイルをする

FPGA ではじめてのLチカ!の作業4 をご覧ください。

6. タイミング検証する

コンパイル・レポート内の Timing Analyzer フォルダを展開して、各タイミング・モデルがクロック周波数50MHzの条件をクリアしたことが確認できます。

Article header img18  2
タイミング検証

7. プログラミングする

.sof ファイルを MAX 10 へダウンロードします。
詳細な操作は FPGA ではじめてのLチカ!の作業6 をご覧ください。
Programmer の Progress バーが100%になったらデータ転送完了です。

Article header img19  1
プログラミング

ここまでがハードウェアの開発です。
ハードウェアの回路データは FPGA に転送されましたが、内部の Nios® II が実行するためのプログラムがまだありません。

だから、Odyssey の PB0 を押しても もちろん LED0 はうんともすんとも言いません。

 

続いて、Nios® II に実行させるためのソフトウェアの開発 をしましょう。
FPGA に Nios® II を入れてLチカ!(ソフトウェア編) へ続く。

Nios® II とは?

Article header img01  3

Nios® II とは、"FPGA に入れられるプロセッサ" のようなものです。
プロセッサと言っても Nios® II の場合は FPGA 内部に CPU のチップが内蔵されているわけではなくて、ユーザーが作った論理回路を実現するために使用されるロジック・エレメント(通称 LE)で構築する "ソフトコアのプロセッサ" です。自分の必要なペリフェラル(機能)だけをつないで構築して FPGA に組み込めますし、1つの FPGA に Nios® II を複数組み込むこともできます。また、組み込む器(デバイス・ファミリ)によってパフォーマンスも変わります。要はカスタマイズできる(ソフトコア)プロセッサです。

Nios® II は Fast(Nios® II/f)と Economy (Nios® II/e)の2タイプで、性能が異なります。ちょっとしたマイコンレベルの処理で高速さを求めないのであれば、Nios® II/e は無償で使用できて、無償の Quartus® Prime ライト・エディションでも使用できますので、手軽に気軽に Nios® II を採用することができます。
また Nios® II/f も通常は有償ですが、評価用の環境も用意されています。(通称 "OpenCore Plus" と言ったりもします。)

IP の評価 (OpenCore Plus) については、こちらをご覧ください。

その他の Nios® II に関する情報はこちら
Nios® II プロセッサー

Nios® II の無償ワークショップはこちら
Nios® II 入門編 トライアル

Article header cb line btm  5

おすすめ記事/資料はこちら

Odyssey でLチカしてみた!シリーズ
FPGA ではじめてのLチカ!
FPGA に Nios® II を入れてLチカ!(ハードウェア編)
FPGA に Nios® II を入れてLチカ!(ソフトウェア編)

おすすめセミナー/ワークショップはこちら

Nios® II 入門編 トライアル

商品の購入はこちら