2014年5月24日土曜日

my_FPGA_BOARD 3 (基板発注 2)

私の勤務先の建物の1階玄関はガラス張りの自動ドアになっているのだが、3日位前にそのドアに思いっきり激突してしまった。それがまた、痛いの痛くないのってもー、どっちなんだっていう感じだが。まぁ、端的に言うと、痛かった。 それも too much な感じで。 おかげで、激突直後は左頬と左目の上瞼が腫れ上がるは、頭はクラクラするわで。その日は帰宅してからも頭の違和感(ふらつく感)が続いていたのだが、一晩寝たら楽になった。頬と瞼は今も触ると痛い。 それにしても、なぜドアに激突したのか不思議だ。1階に降りてから激突するまでが記憶にない。よほどボォーっとしてたのか、それとも記憶が飛んだのか定かでは無いが・・・ なんで激突した? → 俺  うーん、思い出せない。

基板は製造が完了して出荷されたようだ。

問合せとか来るかな?と不安もあったが、そういったやり取りは一切無く、発注して6日で出荷された。 私のデータ作成がミスっているかもしれないので実物を見るまでは安心できないが、ここまでは拍子抜けするほど順調に進んでいるようだ。


2014年5月17日土曜日

my_FPGA_BOARD 2 (基板発注)

一応、チェックも済んだのでFusionPCBに発注した。

基板サイズはチマチマとパターンや部品移動を行って80mmx73mmまで小さくすることができた。
LatticeのMachXO2 7000HE Breakout Boardは大体76mmx76mmなので、1勝1敗というところか…、違うか。
部品面のパターンを原寸大で印刷してみた。
FPGA等の主要な部品を置いてみると、こんな感じになった。

基板の製造枚数は5枚で注文した。 FusionPCBでは5枚が注文可能な最小枚数だ。
料金は送料も加わり、最終的に$30.48となった。

さーて、ちゃんと基板になってくるかな?


2014年5月11日日曜日

my_FPGA_BOARD (基板設計)

これまで、Communication Boxとロジックアナライザの製作を通じてLattice Mach XO2を使用してきたが、感想としては非常に使い易いデバイスだと思う。  SDRAMを搭載したボードを何枚か持っておけば実験や工作には重宝しそうだ。 ただ、今回やったようなBreakOutボードにSDRAMを貼り付けてジャンパーで配線・・・なんてことは何枚もはやりたくない。
そこで、SDRAMを搭載した基板を作っておくことにした。
構成はFT2232HL+MachXO2+MachXO2用EEROM+SDRAMだけというシンプルな内容だ。
MachXO2はコンフィグレーションデータ用のFLASH ROMも内蔵しているので外付けのコンフィグROMは要らない。但し、FPGAの機能としては外付けのROMからコンフィグするモードも持っていて、内蔵ROMからのコンフィグでエラーになった場合は、自動で外付けROMからコンフィグするということも出来るようだ。

USB I/F (FT2232HL)部

FT2232HLはパラレルモード(FT245RLモード)でも使えるようにしている。ロジアナ作成ではUARTで8Mbpsまで動かすことができたが、パラレルモードにすればもっと上がる筈だ。

FPGA、SDRAM部
User I/OとしてはBANK3とBANK0を使う。 VCCIO電圧は+3.3Vだが、BANK3は外部から別電圧を供給できるようにもした。 Bank2のSPIは8pinヘッダ用ランドに引き出すことにした。


設計にはKiCADを使っている。また、層数は2層(両面基板)としている。
基板サイズはBreakOutBoardよりも小さくしたかったのだが、逆に若干大きくなってしまった。


部品面側の3D View   User I/Oの部分は差動モードでも使えるようにしたかった事もあり、半田面側を可能な限りベタGNDとするために信号配線はなるべく部品面のみで行うようにした。

半田面側

GerbViewによる部品面の表示

半田面


基板の発注はFusion PCBにしようと考えている。 料金は外形が10cm x 10cm以下2層板を5枚製造する場合は $9.9 + $11.0 = $20.90 なので、2,000位か?
ただ、いくら安いとは言っても何回も作り直したくはないので、慎重に図面を見なおしてから発注しようと思う。


2014年5月3日土曜日

なんちゃってロジアナ 11

ロジアナとCommunication Boxを同時に使う場合等のようにFTDI社のUSB I/F LSIが複数PCに接続されている場合を考えると、GUIプログラムはロジアナのポートを選択できるようにする必要がある。そこで、プログラム起動時にPCに接続されているデバイスの数を調べ、2つ以上接続されている場合は以下のようなダイアログを表示して選択できるようにした。

ダイアログウィンドウには、ftdi2xxライブラリのFT_GetDeviceInfoList()で得られる情報から、ID、Description、SerialNumberを表示している。 SerialNumberの型は文字列型だが、このLattice MachXO2 Breakoutボードの場合はNULLになっているようである。 残念ながら固有値的な情報は含まれていないので、この内容からロジアナを特定するのは難しい。  ftdi2xxライブラリのAPIを利用してSerialNumberのフィールドに固有値を書き込んでおけば識別可能になるだろう。

それと、測定環境は維持しながらもソフトウェアを立上げ直したりPCを再起動したりというこはよくある事だと思うが、その度にロジアナを再設定するのは面倒である。 プログラム終了時にその時点の設定内容を保存しておいて、再起動時に自動でその内容で復帰できると便利であるのでその機能も追加した。  プログラム終了時にnla.iniというファイルに設定内容を保存し、起動時にそのファイルを読み込んで設定を復活する。 ファイルが存在しない場合は初期状態で起動する。


これで、そこそこ使えそうなロジアナが出来た。 \(^_^)/

snapshot版も最新版に更新した。

www.hi-ho.ne.jp/bravo-fpga/


2014年5月2日金曜日

なんちゃってロジアナ 10

Communication Boxのデバッグ時にI2C液晶を接続して動作確認した。その時のセットでI2Cバスをロジアナで観測してみた。


トリガ条件はI2C通信の開始(SCLがHの時にSDAが立ち下がる)にした。

以下のような波形が採れた。

300msec毎にI2C通信の塊がある。
このデモは300msec周期のタイマー割り込みで動作させており、観測値と合っている。


通信の部分を拡大してみた。  特に異常なところは無いと思う。



次に、GPIBの信号観測をして見た。
Communication BoxのGPIB I/Fの動作確認でシリアルポールを確認した時に、デジタルオシロからのステータスバイトのハンドシェイクが連続発生してしまうという現象があった。今回はそれを見てみた。
以下の画面右側のメニューに対応するボタンを押下すると、デジタルオシロからSRQ(サービスリクエスト)が発行される。

測定風景





以下のような波形が採れた。
表示項目のDIO[7:1]はGTKWaveの機能を使ってDIO7~1をバス表示したものであり、DIO[7:1] (inverted)はさらにその論理値を反転させたものである。  また、GPIBのメッセージは7bitで定義されているのでここでも7bitでのバス表示にしている。
               
 (プロトコル・ハンドブック 朝日新聞社より引用)

 GPIBバスは負論理なのでそのままではデータバスの値が分かり辛い。そこで反転して正論理表示させている。
 シリアルポール時の処理は、SPE(0x18)コマンドに続いてTAx(0x4n)でトーカーを指定しステータスバイトを送信させる。この処理を必要なだけ(デバイスの数だけ)行い、最後にマスタがSPD(0x19)、UNT(0x5F)を送信して終了する。

以下はシリアルポールが開始される箇所で、SPEからTA送信までの波形だ。

以下がステータスバイトのハンドシェイク部とSPD、UNTによるシリアルポール終了の部分だ。

ステータスバイトのハンドシェイク完了を待たずに、SRQがATNがHになった直後にネゲートされているのが少し意外だが、このタイミングはデバイス側が制御するものなのでGPIB IPとしてはどうしようも無い。また、ステータスバイトのハンドシェイクのタイミングに異常は無いと思う。 にも関わらず、1発で終わらずに連続するということは、そういう仕様なんだろう。


2014年5月1日木曜日

なんちゃってロジアナ 9

一応、wxWidget版のGUIプログラムが完成した。
以下はプログラム起動直後に表示される画面で、この時はまだFPGAとの通信路は開いていない。FPGAと通信が開始されると、画面下部のロゴにFPGAの(正確にはロジアナIPの)バージョンが表示される。


信号の検出種別(L、H、立上り、立下り等)設定用のコンボボックスは幅が広いため止めて、代わりにビットマップボタンにした。 このボタンをクリックすると以下のような種別選択用ダイアログが表示される。


選択が完了すると、ビットマップボタンの絵柄が対応するものに更新される。


観測するCHやトリガ条件の設定を完了して、STARTボタンをクリックするとAcquistion動作(信号採取)が開始される。 Acquisiton中はプログレスダイアログがポップアップし状態を表示する。


トリガ条件の成立もしくはCancelボタンのクリックによる中止になると、後処理の完了待ちになる。


後処理が完了するとデータのアップロードが始まり、プログレスバーで進捗が表示される。


・ 動画でみるとこんな感じ
video

・中止の場合
video


GTX1050Ti と Tesla m2050 No.2 (BNN-PYNQのtrainingをやってみた)

BNN-PYNQのtraining(学習)をやってみた。  手順は https://github.com/Xilinx/BNN-PYNQ/tree/master/bnn/src/training に記載されており、特に判りづらい点はなかった。 ・ mnist.py 実行...