2015年6月28日日曜日

世界最小クラスかも知れないFPGAボード 4 (CPUを実装してみる)

自作CPUのzumi32がiCELM40に入るかを見てみた。
以下のようなアーキテクチャとした。従来であればプログラムダウンロード用のパスも設けるのだが、iCE40LMのEBRAMはtrue dual port ram モードを持っていないため省略した。
合成の結果はP&R(配置配線)でエラーとなってしまった。

iCE40は配線用リソースが少ないと見え、純粋な論理回路としてはLUTやDFFはリソース内に収まっているが、配線経路としてLUTが使用されておりその数と合わせるとデバイスのリソース規模を超過してしまうようだ。

そこで、今度はデバイス設定をiCE40UltraのiCE5LPに変えてやってみたところ成功したが、リソースの使用率は100%で、P&Rに1時間位かかった。

iCE5LPのLUTとBRAMの規模はiCE40LMと同じだが、その他にハードマクロの乗加算器(16x16 Multiply & 32bit Accumulator Blocks)を持っている。 ただし、パッケージはWLCS36 (6x6)とWLCS20 (5x4)である。iCE40LMはWLCS25 (5x5)なので非互換ということになる。
以下の写真の右側がiCE5LPのWLCS36パッケージ品である。こうしてみると大きさ的には大差無いと言える。こいつのハンダ付けも今度挑戦してみようと思う。


iCE40LMに戻って、今度はCAN IPの実装をやってみた。
とりあえず、アーキテクチャは以下のようにした。

合成は旨く行った。

リソースの使用状況はこんな感じになった。

今回のRTLではUARTも入れているが必須ではない。また、iCE40LMはI2CとSPI IPをハードマクロで内蔵しているので、これらを利用すれば、リソース的には余裕が出来る筈だ。


2015年6月13日土曜日

世界最小クラスかも知れないFPGAボード 3 (動作確認)

ユニバーサル基板で作った時にFlashの書込が旨く行かなかったが、これは1.2V LDOの配線ミスが原因だろうと判断したが確認はしていなかったので、基板化したセットでFlashへの書込ができるかを確認した。

結果は成功した。

FPGAへの書込も問題なく出来た。

書き込んだのはLチカのやつだ。LEDを接続すると点滅した。
(※. 緑色のLEDは+3.3V受電確認のためのLEDである。)
video
次に、ユーザI/Oとして使える全てのピンに信号を出して確認することにした。
このボードのピンの信号割り当ては以下のようになっている。

RTLとピン定義は以下のようにした。


確認はロジアナを使った。



んー・・・、バッチ・グーです。

全ての信号で単独のパルスが出ているのでハンダブリッジ等も無いと判断できる。

念の為、オシロでも電圧レベルを確認した。
全ピン、+3.3Vまで振れていた。

この時の電源電流も見てみた。 受電確認用のLEDは外した。
442uA !!
動作クロック周波数が低いのと、実装している回路規模が極めて小さいというのもあるとは思うがかなり少ないと思う。

ハンダ付けは問題無いことが判ったので接着剤(アロンアルファ)を接続部に流し込んで固めることにした。
アロンアルファは固まると白濁してしまうがしょうがない。
今度、紫外線硬化型レジンを試してみようかな。


2015年6月6日土曜日

世界最小クラスかも知れないFPGAボード 2 (FPGAへの配線)

部品を実装した3枚の内、1枚のFPGAの配線が終わった。





世界最小クラスかも知れないFPGAボード (基板が届いた)

世界最小クラスかも知れないFPGAボードの基板が届いた。

基板1枚の寸法は10.16mm × 30.48mmなのだが、FusionPCBで作成できる基板の最小寸法が20mm × 20mmなので3面付にし、板厚は1.0mm、製造枚数10枚で注文した。価格は$9.9、送料$3.64の計$13.54だった。支払いはPaypal経由で行ったのだが日本円で1,699だった。
枚数はこんなに要らないのだが10枚でも価格が$9.9だったので10枚にした。


アクリルカッターで基板を1枚づつにカットして、部品を実装してみた。






TE0720 No.4 (BNN-PYNQを動かしてみる 2)

TE0720でBNN-PYNQを動かすことが出来た。 以下は前回に続いてBNN-PYNQが動くまでの記録。 gdb (GNU debugger)で例外が出る原因を調べてみた。 例外が発生しているのはシェアードライブラリ(python_hw-cnv-pynq.so)の中であ...