2015年7月12日日曜日

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

ここ数ヶ月、あまり考えないで部品や理工書を購入していたらえらい出費になってしまった。。。orz
しかし、なんで理工書ってのはこんなに高価なのかねー、、、学生や学校関係者ならば学割などで安く購入できる方法が使えるんだろうけど、あたしゃただのおっさんだもんなー。 (>_<) つらい。
どこかに、この50過ぎのおっさんにFPGA三昧の仕事をさせてくれる会社は無いものか・・・
FPGA三昧といってもFPGAを使ったボード開発とかだけど。ハードウェアやソフトウェアのスキルは公開しているRTLやこのブログの記事を見れば大体分かっていただけると思う。良くも悪くもこの程度しか無い。これ以外のスキルとしては、アナログ系回路も多少はできる。。。というか、本業ではこのところアナログ回路の設計開発が多い。あと、TOEICは10ヶ月位前のスコアで730点だった。 仕事のスタイルとしてはどちらかといえば単独でやるスタイルを好むがチームでの仕事も問題無い。ただし、やりたくないオーラ全開で能書きばかり垂れるような奴とのチームだけは勘弁して欲しい。こっちまでやる気が失せてしまう。 また、「あいまい耐性」はある方だと思う。
んーーー、まっ! 多少はねーー、多少はCNWな面もあるかも知れませんよそりゃ。
CNW… ちょっと何言ってるかわかんねー、みたいな。。 50年以上も生きていりゃ考え方とかに癖とかついちゃいますから、白無垢状態でこれから何色にでも染まります、ってな訳には、そりゃー行きませんわ。。ってな事をこんなところに書いてても何にもならないか・・・
いま抱えている仕事を放り出すわけには行かないので、転職できるとしても来年の後半になるが。。
FPGA三昧の仕事がしたいなーー、どこかにいい転職先は無いものか・・・

話は変わって、ツイッターのタイムラインを見ていたら、DIPSYというiCE40Ultraを使ったDIP型のFPGAモジュールの開発プロジェクトの情報を見つけた。 オリジナルはEETimesの記事のようだ。
http://www.eetimes.com/author.asp?section_id=216&doc_id=1327108 
この記事でリンクしているリンク先に実物の写真も載っていた。。。 ちょっと親近感を覚えた。 でも、載っかっているFPGAはiCE40UL1Kなのでリソース規模は小さいし、ピン数も少ないので用途は限られてくる気がする。 フルカラーLEDの調光くらいなのかな? 用途としては。。。

さて、うちの子(ボード)だが、以下のようなアーキテクチャを実装して動かしてみることにした。

PWMとI2Cマスタを持ち、CAN経由でそれらを制御してみる。
RX PIPEは受信フレームのIDフィールドをパターンマッチングして一致したフレームを各ポートに振り分ける。ポート0はPWMの周期設定、ポート1はDuty比設定、でこれらは標準IDフォーマットを使う。また、書込(マスター➔当FPGA)のみとする。 ポート2はI2Cの制御用で拡張IDフォーマットを使い、拡張IDの部分をレジスタインデックスとして使うようにした。リモートフレームによりリードバックも可能とする。



I2Cはハードコアを使わずに自作のI2C IPを使ってみた。 I2CのSDAはinout(双方向)でオープンドレインにする必要があるのだが、iCE40の開発環境ではオープンドレインのRTL記述が出来ないらしくエラーとなってしまう。しかし、FPGAのIOBの構造的には可能な筈だ。

そこで、シミュレーション用ライブラリソース等を参考にして上記のようにSB_IOをインスタンスして見た。合成は一見成功している。しかし、生成されたネットリスト(ゲートシミュレーション用ネットリスト)で確認すると、オープンドレイン出力の系は生成されているのだが何故か入力の系の回路が生成されていない。ネットリストを見るとRTLでインスタンスしたSB_IOはIO_PADとPRE_IOというモジュールに変わっており、PRE_IOのDIN0のポートが未接続となっている。

SB_IOの代わりに、IO_PADとPRE_IOでRTLを使ってみたのだが合成でエラーとなってしまう。。
なぜ、出来ないんだろう??

素直にI2Cのハードマクロを使ったほうがいいのかな…


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である。)

次に、ユーザ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枚づつにカットして、部品を実装してみた。






2015年5月31日日曜日

road to the soldering master 6

前回、フラッシュROMへのアクセスが出来なかった。フラッシュROM単体ではどうか見てみたらアクセスできたので、今度はFPGA単独でFPGA内部のCRAMに書き込めるか見てみようとして配線をばらしていたら、FPGAのコア電圧用のレギュレータの配線が間違っていることが判明した。  他にも問題があるかも知れないので、とにかくFPGA単体での動作確認をしてみることにした。
その結果、単体ではCRAMへのコンフィグレーションデータの書込は旨く行くことが確認できた。
bitmapデータはLatticeのリファレンスデザインのデータを使った。

次に、LEDを点滅させる回路を書いて動かしてみることにした。

iCE40はOn-Chip Strobe Generatorsというパルス発生モジュールを2種(Low Power Strobe Generator と High Speed Strobe Generator)内蔵しており、この出力はクロックソースとしても使える。今回はLPSGをクロックソースとして使用した。LPSGからは10KHzのパルスが出力される。
ちなみに、HPSGは12MHzだ。また、データシートによればiCE40のF/F(フリップフロップ)のfMAXは100MHz程度のようだ。

ただし、25pin WLCSPパッケージの場合はGND端子が2pinのみだし、今回進めている実験では0.15mmのワイヤーで基板のランドまで引き回しているのでどの周波数までちゃんと動作するかは未知数だ。

合成からbitmap生成までは旨くいった。

早速、生成されたbitmapファイルをiCE40に書いてみた。


そしたら、無事LEDが点滅した。


やったー \(^_^)/
やっべ、超ウレシー

フラッシュROMを繋いだ状態でどうかも見なければならないが、旨く行かなかったのはレギュレータの配線ミスが原因だと思う。  Lチカが確認できれば後は所望の回路を記述して実装して動かしてみるだけだ。 前回、KiCADで基板設計も行ったがその後若干の修正を加えてFusionPCBに発注した。その基板を使えば次のセットは少しは作りやすくなる筈だ。

2015年5月17日日曜日

road to the soldering master 5

先日の基板に電源とコンフィグレーションデータ用フラッシュROMの回路を追加した。
iCE40はコンフィグデータ用不揮発メモリを内蔵していないため外部に設ける必要がある。

反対側

Latticeの評価基板の回路図を見るとコンフィグレーションデータの書込はFT2232Hを使うようだ。この部分は昨年作成したMY FPGA BOARDのFT2232H部を使うことにした。以下はフラッシュROMへの書込を確認している様子。原因がまだ不明だがフラッシュROMへのアクセスが出来ていない。

FPGA本体の確認はこれが解決してからになる。動いてくれるといいんだが。

上記回路のFPGA以外の回路をパターン化した基板を作ってみたくなってパターンを引いてみた。
形状は24pin DIPと同等のサイズにした。


パターン図を原寸大でプリントアウトして部品を載せてみた。
左側のSOTパッケージは1.2V用LDO、右側の8pin SOICはフラッシュROM、真ん中よりやや左よりの金色の部品がFPGAだ。

上の2つのGALは比較のために置いてみた。 Lattice社は昔はこのGALというPLDのメーカーだった。私も仕事で色々と使った。写真のGAL6001は出力ピンに直結しないF/Fも内蔵するタイプの素子だが、入・出力・内部全部でもF/Fの数は70個もなかった。 かたやiCE40 LM4KはLogice Cell (LUT + F/F)が3520、RAMは80Kbit、その他にハードマクロでI2CやSPIまで内蔵している。



2015年5月10日日曜日

road to the soldering master 4

WCSPパッケージへのハンダ付けの見通しがたったので、ユニバーサル基板にデバイスを貼り付けてハンダ付けをしてみた。

2セットハンダ付けしたのだが、一つ(写真の右側)は途中、ハンダ付けの仕上がり確認で線材をツンツンしていたら2つのピンでパッドごと線材が剥がれてしまった。 orz

左側は一応全ピンハンダ付けできた。




電源やコンフィグ用の回路も実装して、FPGAが動作するか確認してみようと思う。






2015年5月9日土曜日

www.hi-ho.ne.jp/bravo-fpga/のstatistics 2

以前も書いたが、このブログで作成した作品はwww.hi-ho.ne.jp/bravo-fpga/で公開しているが、2011/5/14からアクセスログを取るようにしている。  ログといってもそのページを閲覧したIPアドレスと日時だけだ。 プロバイダの有料サービスを利用するともっと色々な情報が得られるようなのだが、お金をかけてまでこれ以上の情報を得たいと思わないので利用していない。

久しぶりにログを解析してみた。
開始時点から現在までの総アクセス数は約10900件になる。日毎のアクセス数をグラフにすると以下のようになった。

青は日毎のアクセス数、赤は累積数

IPのログはページが参照された時のIPアドレスをそのままログファイルに落としているので、ブラウザの表示を更新した場合はその都度IPがログに記録される。また、同じIPアドレスから数日後、数カ月後に再びアクセスされる場合もある。つまり、IPが重複して記録される訳であるが、上記はそのデータでグラフ化したものだ。

重複IPを排除したデータでグラフ化すると以下のようになった。


IPアドレスからJPNICやAPNICのサイトでそのIPアドレスが割り当てられている組織名を調べることができる。その情報から、ISP(インターネットサービスプロバイダ)、企業、学術機関(学校や国公立の研究機関等)に分類してグラフ化すると以下のようになった。  ISPからのアクセスは主に個人と思われるが、個人事業主や法人格でIPを取得していない企業も含まれている可能性はあるかも知れない。

属性每の累積値


全期間トータルでの比率を見ると以下のようになった。


国別で見ると以下のようになった。
AU,BE,...はドメイン名のccTLD(国コードトップレベルドメイン)である。


日毎で見ると以下のようになった。


TW(台湾)からのアクセスが多い。これは、一時期毎日のようにサイトをチェックされる方がいたためだ。 次にUS(米国)の企業からのアクセスが多いが、殆どはMicrosoftやGoogleのドメインからのアクセスなのでもしかするとクローラかも知れない。徐々にではあるが、それ以外の国からの閲覧数が増えて来ている。

世界的にもFPGAが流行ってきていることの表れなのかも知れない。


ERROR: Failed to spawn fakeroot worker to run ...

なにかと忙しくてなかなか趣味の時間を確保できない。 ...orz  家の開発機のOSはLinux Mintなのだが、最近バージョンを22に更新したところ、myCNC用のpetalinuxをビルドできなくなってしまった。ビルドの途中で ERROR: Failed to spawn ...