2013年4月30日火曜日

LatticeECP3 Versa Development Kit その4

Versa Kitのデバッグ用PCとデバイスドライバ関係のセットアップを行った。

デバッグ用PCには現在使用していないPCが1セットあるのでそれを使うことにした。

PCにVersa Kitを装着し、火入れしたところ。

lspciでボードが認識されているか確認、、、されている。


この手のボード用のデバイスドライバは数年前に作成したことがあり、今回はそれをベースにして自作するつもりでいるが、今日のところは環境も含めて簡単な動作確認をしたかったので、LatticeのDesign sampleを用いて動作確認を行うことにした。Design sampleはここから入手できる。これらのsampleの内、PCIe DemoにPCI用デバイスドライバと簡単なテストアプリが入っているが、バージョンが古くてLinux 3.0に対応しておらず、若干の修正が必要だった。デバイスドライバはlscdma_Linux26とlscpcie2_Linux26が存在するが、今日は簡単な動作確認をしたかったので、lscpcie2_Linux26で動作確認した。
具体的な修正箇所は以下の3項目だ。

1. file_operaions 構造体のioctlをunlocked_ioctlに修正
(unlocked_ioctl自体の情報はこれが参考になる。)

lscpcie2_ioctlはlscpcie2_unlocked_ioctlを介してコールする。
lscpcie2_unlocked_ioctlはmutexで排他処理を行っている。

また、unlocked_ioctlの引数にはinodeが無くなっているので、lscpcie2_ioctlからinode参照部を削除した。lscpcie2_ioctlではデバッグメッセージの表示要素で参照しているだけなので、削除しても問題は無い。

2. 1199行のclass_device_create、1273行のclass_device_destroy APIはdeivce_create、device_destroyに変更になっているので修正する。

3. 594行のDMA_32BIT_MASKをDMA_BIT_MASK(32)に修正する。

以上の修正を行った結果、コンパイルが通り、insmodでモジュールをinsert出来た。


lscpcie2_Linux26/testsに簡単なテストアプリがあるが、これも若干の修正が必要だった。
具体的には、78行目の"/dev/LSC_PCIe/%s"を"/dev/%s"に修正した。
このプログラムを実行してみた結果、無事ボードの制御が出来ることが確認できた。


プログラムが動作している様子

PCI側の動作確認も一応できたので、後は色々作って実装するのみだ。このボードは拡張用コネクタがピンヘッダになっている点もいい感じだ。抵抗ラダー式のVGA変換基板を追加すれば、VGAボードもどきの実験も出来そうだ。 (ECP3というFPGAは高速シリアルI/F部のドライバがPCMLになっていて、これを使ってHDMIやDVI(TMDS)相当を出力することもできるのだが、Versa Kitに搭載されているECP3-35は入出力ともに4CHのみであり、あいにくその内の1CHをPCI expressに使ってしまっている。) また、DAC基板を作って以前作成したDDS IPを実装すればファンクションジェネレータボードが出来そうだし、ADC基板を作成しDFT IPを実装し、x1ではあるがPCIe busのバンド幅を活かして高速なスペクトル解析ボードも出来るかも知れない。 色々と楽しめそうな気がする。


2013年4月22日月曜日

FPGA関連本

二泊三日で帰省していた。  その間はIP unreachableな状態だったので、こうしてネットにつながる環境に戻ってきて色々な情報を見ると、僅かの間にも世界はどんどん変化しているんだと感じる。

それはそれとして、

今月はFPGA関連書籍が多数発刊されているようだ。Amazonで検索すると6種(6冊?)か。
FPGA関係の書籍が一月に6種も発刊されるなんて、珍しいんじゃなかろうか。 やっぱ、FPGAって流行ってるんだろうか?

今月と来月はFPGA関連のイベントもあるんだよな。たしか。
TabulaのTabulaSpacetimesフォーラムってのが4/18にあったんだよな、たしか。
参加申し込みしたかったのだが、都合がつかず断念したのだった。
来月はアルテラのSOCシンポジウムがあるんだっけ。
アルテラSOCに関しては先月、某商社のセミナーに参加する機会が得られたので参加した。
講師の方が説明がお上手でおもしろく、判りやすかった。



2013年4月16日火曜日

LatticeECP3 Versa Development Kit その3

Kit購入時に登録したライセンスは期限が切れてしまっていたが、再登録することで取得することができた。で、次にサンプルデザインを合成してみたところ、mapの段階でLSC_ADVANCED_ORCAのライセンスエラーが出て終了してしまった。この時点での開発環境 Diamondのバージョンは2.1だったのだが2.1.1のパッチが出ていることが判ったのでこれを適用して再度合成してみたところ、今度は無事最後のbitstreamファイルの生成まで実行できた。

実機へのダウンロードも出来るようになったが、Linuxの場合FTDI用のシリアルドライバ(ftdi_sioとusbserialモジュール)をrmmodで外す必要があった。(ここを参考にした。)

これで、合成から実機にダウンロードして動作させるまでの確認は出来た。

で改めてこのKitのスペックを見てみる。
Latticeのサイトからの引用
The LatticeECP3 Versa Evaluation Board features the following:
  • LatticeECP3 FPGA: LFE3-35EA-8FN484C
  • 64 Mbit SPI Flash Memory
  • 1 Gbit DDR3
  • PCI Express x1 Interface
  • 4 SMA Connectors for Electrical Testing of one full-duplex SERDES channel
  • Two RJ45 Interfaces to 10/100/1000 Ethernet to GMII
  • Expansion Connectors for prototyping
  • 14-segment alpha-numeric display
  • Switches, LEDs, and Displays for demo purposes
  • Push buttons for General Purpose I/O and Reset
  • Onboard reference clock sources
  • Programmed using a Mini USB cable via PC
これはECP3ハンドブックからの引用


この表からECP3-35はSpartan6-LX45相当か?  もっとも、ECP3のLUTは4入力なのでSpartan3系と比較すべきかも知れない。そうするとこれでDDR3コントローラを組んだ場合にどの位のクロックで動かせるのか疑問も湧くが、リソース規模はそこそこデカいので色々と詰め込むことは出来そうではある。そう考えるとやはり$99というのは格安だという気がする。このKitの定価は$299らしいのだが、Lattice online storeでは$99に戻っている。ただしStockはNoとなっている。 $99で買えるならもう1枚買っておこうと思って注文してみたところ、送料が$98かかるけど、本当に買うの? 買うなら手続きを進めるけど。っていう内容のメールが来た。で、結局キャンセルしてしまった。


2013年4月3日水曜日

LatticeECP3 Versa Development Kit 2

そういえば、2年程前にLatticeのLatticeECP3 Versa Development Kitというのを購入したんだっけ。すっかり失念していた。  この開発キットは当時特別セールで$99(手数料、配送料込みで$145.45)で購入できた。

PCIE I/FのFPGA開発ボードはどれも非常に高価で私には買えない。
このボードはちゃんと動かすことが出来ればかなりお得な買い物だと思う。

購入してからまだ一度もプログラミングしていない。
知り合いのお手伝いも佳境に入ってきてFPGA活動再開はもう少し先になりそうだが、
今度はこのKitで何かやってみようかな。

ライセンスはまだ有効なんだろうか? 要確認だな。

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...