土曜日, 3月 16, 2013

ターゲットボード(DE0-Nano)

理論的な事ばかりをだらだらと書いていても仕方がないので、そろそろ実際の製作に入りたいと思います。

以前使っていたCQ出版のボードはさすがにもう設計が古く、パラレルポートが必要、初代Cycloneが最新の開発ツール(Quartus II Web Edition)のサポート対象外、といった問題があるので別のターゲットボードを探していたのですが、まさにうってつけのボードが見つかりました。

Terasic社のDE0-Nanoです。

この一万円前後の激安ボードに載っているCyclone IVはかなり大きな回路が入るので、8コアや16コア位はなんとかいけそうです。あと、A/Dコンバータや加速度センサ、SDRAMが付いているので、本体だけでも色々と遊べそうです。

ただ、惜しむらくは表示手段がボード上のLED 8個しかなく、またホストPCとの通信手段も基本的にJTAGで統合環境のみからのアクセスとなります。JTAG-UARTを使えば一応通信は可能だと思われますが、ゆくゆくはXilinxにも対応していきたいのでなるべくSOPC Builderは使いたくありません。Arduinoではダウンロードケーブルでそのままシリアル通信ができるのですが…。

マルチコアプロセッサの論理合成はそれなりに時間が掛かりますので、プログラム書き換えのたびに論理合成からやり直すのでは話になりません(無償のWeb Editionはインクリメンタル・コンパイル未対応)。ホストPCとの通信ができれば論理合成をせずにプログラムだけダウンロードすることも可能になるので、開発の効率が断然違います。また、ホストPCの自作プログラムとリアルタイムで通信できれば、さらに応用が広がることが期待されます。色々と調べてみると統合環境のコンソール入出力を無理やりリダイレクトするといった涙ぐましいものまであり、これは無理かなと一旦諦めかけたのですが、UrJTAGというフリーのJTAGツールからボードにアクセス可能なことがわかり、ここから調べていってようやくJavaからJNA経由でUSB Blasterを制御できるようになりました。(ただし、あくまでもDE0-Nano上の互換機能のみで、本物は未テスト)

こういった情報もこれから徐々に公開していきたいと思います。