読者です 読者をやめる 読者になる 読者になる

guruguru123’s diary

かなり雑な作業日記です。

FPGAでArduino

"FPGAArduino!!Papilioで作るディジタル・ガジェット"という本を見つけ、今までArduinoでやっていた部分をこれに置き換えられないかと思い、やってみた。今回、ザイリンクスのFPGAであるSpartan-6を搭載したPapilio Proを使用した。

まずはArduinoベースのIDEであるZAP IDEを用いて、お決まりのLED点灯スケッチを作成した。驚くほどArduinoと同じようにスケッチができ、簡単にLEDを光らせることができた。

次にザイリンクスの提供しているFPGA開発環境であるISEを用いてLED点灯プログラムを作成した。HDLは初めてだったが、LEDを光らせるだけなら何とかできた。

 

LEDが光ったところで、いきなりだがZPUino(FPGAArduino)のHDLソースコードへ回路を追加しようとしてみた。本に載っているものをそのままやろうとしたので、すぐできるかと思いきや、やはりHDL初心者には厳しく時間がかかった。今回はプロセッサZPUがwishboneバスからリード/ライト可能なレジスタ回路を追加した。大まかなやり方は、レジスタ回路のソースコードファイルを作成し、それをZPUinoのソースコードに追加する。追加する際、信号宣言、コンポーネント宣言が必要になる。wishboneバスではプロセッサZPUがマスタ、周辺ペリフェラルがスレーブとなっており、今回はZPUinoのソースコードにあったSlot13に回路を追加した。

ソースコードに追加できたので、動作確認をしてみた。LEDをピン40,41,42,43につけて確認したところ、点灯した。点灯のさせ方までは制御できなかった。

以下ZPUinoのソースコード追加した部分。

信号宣言とコンポーネント宣言↓

f:id:guruguru123:20151202224600p:plain

ピン指定↓

f:id:guruguru123:20151202224603p:plain

スロット13↓

f:id:guruguru123:20151202224606p:plain