ラベル MAX10 の投稿を表示しています。 すべての投稿を表示
ラベル MAX10 の投稿を表示しています。 すべての投稿を表示

2016年5月30日月曜日

BeMicro MAX10にNios IIを入れてLチカ(part 1:構成編)

トランジスタ技術2015年11月号 p61からの「第三章 [STEP2] コピペであっさり! 32ビット・コンピュータを作りこんで動かす」を試してみます。

前回マクニカさんの記事を参考にしたら、これが見事に「わかっている人向けの記事」だったので大いに悩んだのですが、今度は我が心の師匠・岩田利王氏の記事、きっと大丈夫です。でも、もしQurtusの操作についてわからないことがあれば、「FPGA電子工作スーパーキット」が参考になります。

ま、人の作ったもんだから何とかなるでしょ。

■と思ったら■

いきなり「前章で作成したmaxlabプロジェクトを開いて」と来ましたorz ということで、トラ技のダウンロードページから2015年11月号STEP1のプロジェクトをダウンロードして、Velilog下にあるmaxlabを適当な場所にコピーします。

Quartusを起動します。私のはQuartus Prime Lite 15.1.2です。

FileメニューのOpen Project...からmaxlabフォルダの中にあるmaxlab.pdfを開きます。ToolsメニューからQsysを選びます。

…と記事のまま書いてもブログにする意味がないので、以下は記事のわかりにくいところだけ説明します。

  1. Nios II プロセッサをシステムに追加する
  2. オンチップ・メモリをシステムに追加
  3. オンチップ・メモリのサイズを調整
  4. オンチップ・メモリの配線設定
    ちょっと悩みました。本には「マウスでクリックして繋ぐ」とありますが、どこをクリックしてもドラッグしても反応しません。クリックするのは「◯」のところです。例えば、 -<clk と ->clk1 を繋ぐ場合には、nios2_gen2_0のところにある ->clk の左にある「◯」と ->clk1 のところにある「◯」をクリックすると線が太くなって配線!となります。どうでもいいですが「はいせん!」とか書きたいですな(何がだ)。
  5. Nios IIがオンチップ・メモリから起動するように設定
    記事では「画面を閉じます」と書いてありますが、閉じるとこの後の辻褄があわなくなってしまうので閉じません。閉じるときにファイル名をnios2e.qsysにしていれば問題無いです。もし閉じてしまったら、またQuartusのToolsメニューからQsysを選びます。で、メモリベースアドレスの設定をするのですが、「図9のように」という本文の説明は大変わかりにくいです。配線図のところのonchip_memoryの下にあるs1の行の右に「BASE」という欄がありますので、ここをダブルクリックして記事にあるように「0x0001_0000」にしてみます。記事には0xついてないですが、付けます。
なお、記事はこれで「エラーが消えます」とあるのですが、「clk_0, clk_in_reset must be connected to a reset source」というエラーが残ってます。記事の図を見ても接続されていないですが、マクニカの記事だとつながっているのでつないで見たのですが、それだと最後の最後でコンパイルエラーがでます。


調査の結果わかったのは、Qsysでclk_0のckl_in_resetがexportされていないのが原因でした。clk_in_resetの行のExport欄をダブルクリックして表示が「reset」になるのを確認してください。こんな形になればOKです。雑誌の図だと「export」が隠れてて見えないんですよね…困ったもんだ。



■STEP2-2 Nios IIにI/Oを追加■

  1. 加速度センサとSPI通信するためのPIOを追加
    Qsysは開いたままです。1bitのoutputを3つと1bitのinputを1つ追加します。
  2. LED制御用PIOを追加
    width 8のoutputを1つ追加します。
  3. PIOの設定とそれぞれの接続設定をします。記事通りです。

■STEP3 FPGAに書き込む■

  1. Quartus IIで使うためのファイルを生成する
  2. Qsysで生成したファイルをQuartus IIに追加する
  3. MAX 10でNios II/eを使うための設定をする
  4. HDLソースとピン・アサインのファイルを更新
    QuartusのProject Navigator(右上の一覧)からmaxlabをダブルクリックするとmaxlab.vが表示されます。で、リスト1を打ち込みます。すぐお気づきかと思いますが、赤い文字だけが変更箇所ではないのでご注意を。あと「それらをアサインしましょう」はFileメニューからOpen Fileを選び、Files of typeをAll Filesにするとmaxlab.qsfが見えますので、開きます。もっと簡単な開き方ご存知の方、教えてくらさい。開くと雑誌リスト2の中身と大幅に違うものが出てくるのですが、set_global_assignmentは放置しておいて、set_location_assignmentを雑誌のリストと同じにしてみました。結果的にはそれでよかったみたい。
  5. コンパイルの後、FPGAにプログラムする
    ProcessingメニューからStart Compileを選びます。順調にいけば、0:errors, 22 warningsって感じで終わるはずです。

さて、あとはNios IIの上で走らせるソースをコンパイルしたりFPGAをコンフィグ(書き込みのこと)しなきゃいけないんですが、もう眠いっす。

続きは明日…無事動作しました。

2016年5月26日木曜日

FPGA評価モジュール:BeMicro到着


基板を手に持つとずっしり重いです。多層基板でベタGND / ベタVccがあるから?ってことだけじゃないと思うけど、とにかく存在感のある基板っす。

FPGAを使ってみたいと思ったのは、高速性とか自由度などいろいろ理由はあるんですが、GPIOが多いというのが大きいです。

このBeMicro MAX10でもコネクタに出ているだけで
  • 2x40pinのピンヘッダ
  • 80ピンカードエッジ
  • 2個の2x6pin

…こんなにあります。もううんざりするレベル。

ピン番号が横に長いExcelのセル番号みたいになってますww

LPC1114で8x8マトリクスのLED駆動してI2Cつなぐと残りが足りないわー…

MSP430G2552で4桁の7セグLEDをドライブするともうI2Cしか繋げないわー…

とか言ってた人生がイヤになります(もちろんMSP430の超低消費電力はこのFPGAが太刀打ちできる世界じゃないですし、そういう人生好きですけどね)。

さらにGPIOが多いだけでなく、標準の状態で以下のようなデバイスが付いているので、USBつなぐだけである程度のことができてしまいます。

  • 8MB RAM
  • ADC
  • 温度センサー
  • 3軸加速度センサー(ADXL362)
  • CDS
  • LED 8個
  • スイッチ2個
  • オンボードプログラマ(USB Blaster)

これで4000円(chip1stop.com…入手先によって値段は違います)。もちろん難しいんですけど、マニュアルの通りにCPU(Nios II / e)を作りこんで、多少必要な回路をその周囲に貼り付けるぐらいであれば、mbedを扱える人ならそんなにハードル高くないと思います。

この基板にはついてませんが、個人的にFPGAで何とかしたいブツとして「CMOSカメラの接続」っていうテーマがあります。ずっと前にaitendoで1.3MのCMOSカメラを「安い!」って飛びついて買ったんですが、Arduinoや下位のmbedでは簡単に御せる世界ではありません(mbed LPC-4088で制御した作例は見たことありますが)。でもMAX10ならCMOSカメラからの出力が16ピンもあってμ秒単位でいろいろ処理しなきゃならなくても、ぜんぜん余裕な世界です。

…もちろん、使いこなせれば…の話ですけどね。

パッケージ

中身
がんばります!