MAX10 & Arduino SPI通信 (1)回路準備

シェアする

いよいよArduinoとMAX10で何か動かしてみます。

(おい、Nios IIどうなった

え、何のこと。
と言うかこの記事は途中経過報告だよ(あ?

取りあえず通信出来る回路を用意する。


動作内容は、Arduino nanoとMAX10-FB間に単純にレベルシフタを入れてSPI通信を行います。

SPIでやることは、MAX10上の3色LED制御。

それと、以前実験したドットマトリクスをMAX10上に実装します。

予定としては、MAX10内部に各ドットのレジスタと表示器点灯/消灯の制御用レジスタを用意します。

  • レジスタアドレス一覧

MAX10の内部レジスタアドレスは以下の通り

0x00:LED_Rレジスタ 0~7bit (輝度:0~255)
0x01:LED_Gレジスタ 0~7bit (輝度:0~255)
0x02:LED_Bレジスタ 0~7bit (輝度:0~255)

0x08:ドットマトリクス制御 bit0 HIGH でON

0x10:ドットマトリクス1列目0~7bit

0x17:ドットマトリクス8列目0~7bit

  • SPIの送信データは内容

0~7bit:アドレス 0x00~0xFF
8~14bit:未使用(将来アドレスにも使える)
15bit:リード/ライト
16~23bit:データ

SPIのモジュールはIPを使わず(と言うか分かんない)自作します。
クロック極性(CPOL)、とクロック位相(CPHA)をArduinoと同じにする必要があるため変更(要コンパイル)出来るようにしておきます。(マスター側のArduinoを変更すればいい話ですが)

SPIについての詳しい説明は以下のリンクが参考になるかと。
複数の周辺機器を制御するSPI/I²Cバスライン

現状、Arduino側はSPIの確認が取れているので後は簡単に指示方法を考えるだけなのですが、FPGA側が中々進まずです。

でも、これさえ出来れば拡張出来そうなので、次回以降にでも進捗記事を載せておきます。

Nios IIは取り合えずこれが終わった”以降”になりそうです。
もうEnglishなUIの影響でアレルギーが辛いです。

フォローする

コメント

  1. nog2020 より:

    FPGAでSPI設計興味あります。自分もラズパイとFPGAでSPI通信してみたいなぁと思ったりです。(なかなか手が付けられてませんが。。)
    IPコア使用せずなんですね!ぜひソースを参考にさせていただきたいです。笑
    次回も楽しみにしてます~。

    • おがぴ より:

      こんばんは!ラズパイと言えば、ちょうど今使っているトラ技のMX10-FBはラズパイと接続する基板が販売されていたような・・・。違ってたらすみません。IPは前に別基板(cyclone3)でやったような気がするんですが、今はインテル社となってアプリが割と変更がされていてNiosII向けにIPも変更される感じで、ロジック設計としては使い勝手がちょっと悪くなったかなあ。有料向けのIPも増えてて作るしかなさそうです。特にMAX10-FBでも使えそうなSDRAMコントローラなんか有料に(涙 なぜかSDRAM DDR2は無料で使えるのに酷い話ですよね。