MAX10 Nios IIを試してみる (1)準備編

以前紹介したMAX10。FPGA内にCPUを作成できる機能のこと。

これは使いこなせれば!と思いつつインターフェイスが英語だからな・・・

用意するもの


前と同様、トラ技で入手したこの2つと他

  • MAX10-FB(FPGA)基板
    Amazonではこちら
  • MAX10-JB(JTAG)基板
    Amazonではこちら
  • ジャンパー
  • ブレッドボード2つ
    ここではブレッドボードを二つ用意して連結します。
    片側5マスのものですと両端まで占拠されてしまいます・・・。
  • お勧めの参考書
    FPGA電子工作スーパーキット (トライアルシリーズ)

    ここで紹介する「Nios IIを試す」記事は大体これに沿って行いますが、(凄く大事な)詳しい事は本書に記載されています。
    また、細かい説明がありますので、これから始める方にはお勧めです。
    ただ、内容は正直古い物となります。(現Intel社だが前のAltera社の時に書かれたもの。ソフトの機能は同じでも名称が違ったりする。)
    ※本書は、基板付属(細かい部品は買う必要あり)です。USB-Blasterなど持ってる方は別のMAX10ボードをお勧めします。

 

準備しよう


ブレッドボードをこのように2つつなげ合わせて実装します。

DSC_1114DSC_1116

Arduino nanoの見過ぎか大きく感じますねこの基板。

 

Nios IIを用意する


今回使用するのは無償版となりますので、制限のあるNios II/eが使われます。

プロジェクト作成は「MAX10 RGB LED制御」の下層い書いてありますので参考に。

では、ここからNios IIの設定をしていきます。

参考として:マクニカ MAX® 10 の UFM で Nios® II をブートさせてみよう [前編]

  1. Platform Designerの立ち上げ。

    まず、「Tool」から「Platform Designer」をクリックして立ち上げます。
    vlcsnap-2018-01-18-14h59m20s385
    この時点で参考書と名称が異なりますので注意してください。

  2. Platform Designer

    立ち上げたら取りあえず何があるか流して見ていきます。(以下初期設定)

    • 左上「IPカタログ」
      プロジェクトや様々なライブラリが格納されています。
      後々、何度も触れるところとなります。
    • 左下(1)「Hierarchy」
      プロジェクト内で使用されている信号やブロックが表示されます。
    • 左下(2)「Device Settings」
      使用するMAX10デバイスの型式が記載されます。
    • 中央(1)「System Contents」
      名称通りシステムの構造が表示されます。クロックなどの信号線がどこに接続されているか一目で分かるようになっています。
    • 中央(2)「Address Map」
      ここではアドレスマップを設定します。
    • 中央(3)「Interconnect Requirements」
      システム全体やシステム内のコンポーネントの要件などの設定を行えます。
    • 右側「Parameters」
      様々なパラメーターを設定できます。例えば、「System Contents」でclk_0を選択するとこの「Parameters」でclk_0のクロック設定が出来ます。
    • 下側「Messages」
      悪魔のささやき声、エラーメッセージが流れる場所だよ…。
    • 最下層は正常な構成の場合、グリーンになります。
      vlcsnap-2018-01-18-15h03m52s213ここまで来たら一度左上の「File」から「Save As…」で保存しましょう。
  3. クロックの設定/確認

    次にクロックの設定を行います。ここでは、ボード上に実装されている発振子の周波数を指定します。
    MAX10-FBには48MHzのものが実装されていますが「System Contents」でclk_0を選択し、「Parameters」のClock frequencyに「50,000,000」と入力してシステム内では50MHzで動作するように設定します。
    vlcsnap-2018-01-18-15h38m00s390

  4. Nios II プロセッサーの追加

    左上の「IP Catalog」より「Prossessors and Peripherals」→「Embedded Processors」にある「Nios II Processor」を選択して「Add…」をクリックし追加します。
    vlcsnap-2018-01-18-15h44m20s267.png

    追加するとclk_0ブロックの下にnios2_gen2_0が追加されます。
    無償版のソフトを使用しているので「Parameters」よりNios II Coreは「Nios II/e」を選択します。

    追加後は、nios2ブロックにクロックを接続しますclkに繋がっているグレーの丸いボタンを押すことで接続がされ黒いラインになります。
    vlcsnap-2018-01-18-15h52m35s801

  5. フラッシュメモリーを追加する

    左上の「IP Catalog」より「Basic Functions」→「On Chip Memory」にある「Altera On-Chip Flash」を選択して「Add…」をクリックし追加します。

    ウィンドウが立ち上がったら「Configuration Mode」を「Single Compressed Image with Memory Initialization」を選択し、Flash Memoryの3番目を「Hidden」に変更します。
    vlcsnap-2018-01-18-16h02m46s976

    右下「Finish」で戻ったらonchip_flash_0のcsrに繋がるグレーの丸を押してラインを接続してください。

  6. RAMを追加する

    左上の「IP Catalog」より「Basic Functions」→「On Chip Memory」にある「On-chip Memory (RAM or ROM)」を選択して「Add…」をクリックし追加します。

    ウィンドウが表示されたらSizeの「Total memory size」に”32768″と入力します。
    入力したらMemory initializationの「initialize memory content」のチェックを外します。
    vlcsnap-2018-01-18-16h10m18s687
    右下「Finish」で戻ったらonchip_memory_2_0のs1とreset1に繋がるグレーの丸を押してラインを接続してください。

  7. System ID

    左上の「IP Catalog」より「Basic Functions」→「Simulation, Debug and Verification」にある「System ID Peripheral」を選択して「Add…」をクリックし追加します。

    ウィンドウが表示されても特に操作せず「Finish」を押します。
    戻ったらsysid_qsys_0のclkとreset、control_slaveに繋がるグレーの丸を押してラインを接続してください。

  8. JTAG UARTの追加

    左上の「IP Catalog」より「Interface Protocols」→「Serial」にある「JTAG UART」を選択して「Add…」をクリックし追加します。

    ウィンドウが表示されても特に操作せず「Finish」を押します。
    戻ったらjtag_uart_0のclkとreset、avalon_jtag_slave、irqに繋がる(全て左にある)グレーの丸を押してラインを接続してください。

  9. Altera Dual Configurationの追加

    左上の「IP Catalog」より「Basic Functions」→「Configuration and Programing」にある「Altera Dual Configuration」を選択して「Add…」をクリックし追加します。

    ウィンドウが表示されても特に操作せず「Finish」を押します。
    戻ったらdual_boot_0のclkとnreset、avalonに繋がる(全て左にある)グレーの丸を押してラインを接続してください。

  10. Interval Timerの追加

    左上の「IP Catalog」より「Processors and Peripherals」→「Peripherals」にある「Interval Timer」を選択して「Add…」をクリックし追加します。

    ウィンドウが表示されても特に操作せず「Finish」を押します。
    戻ったらdual_boot_0のclkとreset、s1、irqに繋がる(全て左にある)グレーの丸を押してラインを接続してください。また、同じInterval Timerをもう一つ追加してください。

  11. PIOの追加

    左上の「IP Catalog」より「Processors and Peripherals」→「Peripherals」にある「PIO(Parallel I/O)」を選択して「Add…」をクリックし追加します。
    Basic Settingの「Direction」は「Bidir」。
    Output Registerの項目にチェック。
    Edge capture registerの「Synchronously capture」と「Enable bit-clearing for edge capture register」にチェック。
    Interruptの「Generate IRQ」にチェック。
    Test bench wiringの「Hardwire PIO inputs in test bench」にチェック。
    設定を終えたら「Finish」を押します。
    vlcsnap-2018-01-18-16h50m53s937

    戻ったらpio_0のclkとreset、s1、irqに繋がる(全て左にある)グレーの丸を押してラインを接続してください。また、external_connectionを右クリックして「Connections: pio_0.external_connection」の「Export as: pio_0_external_connection」を選択。

  12. IRQの設定
    System Contentsの右側にIRQ列があると思います。そこのライン上に入力箇所がありますので設定していきます。
    「jtag_uart_0」が0、「timer_0」が1、「timer_1」が2、「pio_0」を4に設定します。
  13. アドレスの設定
    ウィンドウ中央にある「Address Map」を開き以下の通りアドレスを設定します。環境によってはアドレス名称の順序が異なる場合がありますので注意してください。
    vlcsnap-2018-01-18-17h05m44s571-e1516262808714.png
  14. Nios II Processorの設定

    System Contensに戻り、nios2_gen2_0を選択し、「Parameters」の「Vectors」を選択します。以下の通り設定します。
    vlcsnap-2018-01-18-17h08m19s915

  15. Generation
    設定が終わったら右下の「Generate HDL…」をクリックします。
    ウィンドウが表示されたらSimulationのモデルをVerilogに変更し右下「Generate」を選択します。
    後は、ジェネレートが実行されエラーが無ければ下準備は以上で完了です。

 

長い….

次回以降は「なにか動く」ことをしたいと思います。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中