2013年10月27日日曜日

Communication Box 6

uart部のコーディングが終わりシミュレーションしてみた。コアモジュール(uart_core)はこれまでずっと使い続けており動作実績はある。そこで、シミュレーションではcomモジュールで新しく追加したハードウェアフロー制御関係を見てみた。シミュレーションはテストベンチ内部でTXD - RXD、 RTS - CTS間を接続してループバック状態にして行った。

以下はハードウェアフロー制御無しの場合で、受信側FIFOの段数以上のデータを送信し、受信FIFOからの読み出しは行っていない。RTSが制御されないので、FIFOがフルになって以降も通信は継続しFIFOオーバフロー(rx_ovf_**)になっている。

以下はハードウェアフロー制御有りの場合。
この場合、FIFO内のデータ数が30以上になると(因みに、FIFOの段数は32段である。)、RTSがネゲートされ、これが送信側のCTSとして入力されるので送信が停止している。その後、FIFOのデータを読み出すと自動的にRTSがアサートされ通信が再開されている。

ブレークの送受信も見てみた。こちらも問題なさそうである。

問題なさそうなので、GPIB以外のモジュールを組み上げて合成し、リソースの状況を見てみることにした。全体構成は以下のようであるが、現状、GPIBのみが未実装である。MachXO2はハードマクロでI2CとSPIを内蔵しているが、今回はそれらを使用せず全て自作IPで構成している。

以下が合成結果だ。
SLICEの使用率は60%程度なので、大丈夫そうだ。タイミングもMetしている。


ということで、次はGPIB IPの作成に挑戦だ。

2013年10月20日日曜日

Communication Box 5

UART用のレベルコンバータと、前回のブログで検討したGPIBのクリッピング用にSBD(ショットキーバリアダイオード)を買った。ICL3232はパッケージにRX, TXがそれぞれ2CHずつ入っているので、UART 1CHに付き1個づつになる。

このSBDのVFはデータシートによると0.33V(typ, IF=1mA時)となっているので、LDOで3Vのクリッピング用電圧源を作りSBDを介してそこに逃そうと考えている。

UART用モジュールの設計に着手した。 UARTはコアの部分のIPは既に持っているので、これにFIFOやレジスタ部を追加して使う。以下にブロック図を示す。

今回は割り込み機能は不要なのだが、このモジュールは、後々CPUと組み合せて違う用途でも使えるかもしれないので、検討しておくことにした。

レジスタ仕様はこんな感じで考えている。

このモジュールを5CH分実装しなければならない。ちょっと仕様がリッチ過ぎるかも。
実装してみてリソース使用量が大きかったら何かを削ることにする。

2013年10月5日土曜日

Communication Box 4

最近はジャンクのことばかりブログに書いていて、このままだとブログのタイトルを「ブラボー ジャンク箱」に変えなきゃいけなくなりそうなので、FPGAの方に戻そう。っていうか元々その予定だったが。

FPGAはLatticeのMachXO2 7000HE Breadkout Boardを使うつもりでいる。このボードは以下のような形状をしていて、2x20ピンヘッダ用ランドが基板左右に2列づつある。

2x20x2x2なので、トータルで160個のランドがある訳であるが、電源のように信号では無いものを除くと108となり、その全てがFPGAに繋がっている。このボードで使われているFPGAのパッケージは144pin TQFPでその中の36本のピンが電源やNC(Non-Connection)等で、信号は108本なので、FPGAの全ての信号がピンヘッダに繋がっていることになる。ボード上にはLEDやFT2232H、水晶発信器(これはパッドのみ)もあり、これらもFPGAに繋がっている。 Communication Boxで使う端子はこのような既存部品で使われているものを避ける必要がある。また、コンフィグやJTAG等の機能を兼用している端子も使用は避けたい。そうやって、使えない端子を除外していった結果、使える端子数は83本だった。
一方、Communication Boxとして必要な信号数は、

・ RS232C部
   RS232Cはハードウェアフロー制御も出きるようにしたいので、TxD,RxD,RTS,CTSの4本とし、これが5CHなので20本。

・ I2C
I2Cは1CHのみで、SCLとSDAの2本

・ SPI
SPIも1CHのみだが、Quadモードも可能としたいので、CLK、CS、DQ0、DQ1、WP、HLDの6本

・ PIO
PIOは2つの9pin D-SUBコネクタで8本づつ出したいので計16本

・ GPIB
GPIBはバスの信号線数だけなら16本となるが、このバスは双方向のためバッファの方向制御用の信号も必要になる。また、GPIBバスの電圧レベルは+5Vのため、電圧レベル変換機能も必要になる。GPIBバスの規格ではドライブ能力は最大48mAとなっているので、厳密に規格に合わせるなら48mAのドライブ能力のある2電源タイプのバッファが必要になるが、ちょっと調べた限りでは(例えば74LVXC3245)最大でも24mAである。  また、データ用バッファは機能としてはLVXC3245のような普通の双方向バッファでもいいのだが、制御系信号、特に、EOIはバス側の信号ATNもデコードして方向を決める必要がある。 データシートの図を見誤っていました。EOIの方向に関係しているATNはターミナルI/O側、つまりFPGA側のATNです。(2013.11.08)

以下は、TIのGPIB用トランシーバSN75161Bのブロック図である。

EOIを考慮するとこのSN75161Bを使った方が良いが、このICは単電源(+5V)である。
そこで、SN75161B - FPGA間の信号を+3.3Vにクリッピングして使おうかと考えている。

ということで、これが上手くいくと、制御信号はDCとTEの2本になるので、GPIBとしては18本となり、トータルでは、20+2+6+16+18 = 62本となるので大丈夫そうだ。

ところで、このBreadkout Boardのピンヘッダ用ランドだが、一見すると2.54mm、即ち、インチ座標にのっているように見えるのであるが、ところがどっこい、内側のJ3とJ4は微妙にずれている。

どう言う設計思想でこんな配置にするのか理解に苦しむ。
もしかして、やっすいプリント板CADとか使っちゃったんじゃねーの?  -_-;;
ってことは無いと思うが、それにしても不思議である。だれも喜ばないと思うんだが、こんな設計。

Communication Boxではピンヘッダを傾けて実装することで対応するつもりだ。

2013年10月4日金曜日

fpga story 2

久しぶりにYMOの増殖というアルバムを聴いた。それの最後のSNAKEMAN SHOW(若い山彦)を聴いていたら、FPGA版を妄想してしまった。


若い山彦 FPGA版 ... (SNAKEMAN SHOW 若い山彦のパクリ)

司会:みなさん今晩は。若い山彦の時間がやって参りました。
   今夜は若手FPGA技術者の方々にお集まり頂き、
      「2010年代のFPGAシーンを考える」と題しましてお話をお伺い致します。
      皆さん、よろしくお願いします。
一同: よろしくお願いします。
  A : えっとー、それじゃ…、 まず僕から行きます。
      まー、ぼっ、んんっ、僕の場合はね、評価ボードを向こうから取り寄せてんだけどー… 
      今のFPGAはさー、何つーの、こう、良い物もある、だけど、悪い物もあるよね。
司会: なるほどねー
  B : んー、僕の場合はね、ちょっと、君とは違うんだけどね、
    あの、エンジニアの友達がロスとかニューヨークに居るんだけどねー、
    いつも評価ボードを送ってくれるんだけど、使ってみると、まー、あの、良い物もある、悪い物もある。
司会: はい。
  C : ちょっ、ちょっとあのねー、僕はやっぱりDE0が一番良いと思うんだけど。
  A : でもねー、僕なんか、なんちゅーの?、外国に行って展示会を見る機会がすごい多いわけですよ。ね?
司会: はい。
  A : この間も、ニューヨーク、ロンドンを廻ってきたんですよ。ね?
司会: ほーぅ
  A : そこで、一番感じたのはですねー、良い物もあるけど、悪い物もあるというのを一番感じたなぁー
  B : んー…、君とはちょっと違うんだよね、僕は…、英語が解るでしょう。
      だから、向こうのプロジェクトなんかにも参加してくれって何度も頼まれてね、
      断ってんだけど、まぁー…、 
司会: はい。
  B : だけどよく聞くと、良い物もある、んー、悪い物もある、っていう… 
  C : んー、でもねー、やっぱり僕はDE0…
  A : そうじゃなくてさー、君の言い方ちょっとおかしいよ。
    そうじゃなくてさー、僕なんかは、まぁ、一日にね、一日に8時間FPGAをコンフィグしまくって
      生活している訳ですよ。そうすっと、すごいよく解るのは、んー、良い物もある!、だけど、
      悪い物もある!っていう感じかなー
司会: んー、なるほどね。
  B : 違うよー、僕なんか時間の問題じゃないと思うんだよね。
    僕は、評価ボード5万枚だよ。5万枚持ってんだよ。それも安いのばっかりよ。
    だけど、動かしてみると、良い物もある、悪い物もあるんだよ。
  C : ちょっと言わしてもらうとね。
    僕なんかやっぱりねー、DE0が…
  A : あのさー、君、違うよー、だってさー、評価ボードの枚数なんか言ったら僕なんか
   8万枚ありますよFPGA。それをさー、全部使いまくって感じんのは、はっきり言って、
   良い物もある。だけど、悪い物もある。
  B : んー、僕なんかね、君とちょっと違うんだけどね、国際電話でディスカスしたりとかね、
   ちゃーんとFPGAの話して聞くとですね、良い物もある!、悪い物もある!、んだよね。
  C : っといいですか。
司会: はい。
  C : えーっと、あのー僕はね、絶対、DE0が…
  A : あー、何かぜんぜん違う、全然話が違う…、いい?
    FPGAを理解するためにはさー、
司会: はい。
  A : コンフィグレーションと切り離せないと思うわけですよ。
司会: んー、なるほどね。
  A : ねー、聞いてる? ね?
    ほら、僕は今、ダウンロードケーブル持ってますよね? ユニバーサルの、ほら。
司会: ほー
  A : これは別に大したことじゃないですよね。
      ダウンロードケーブル10本ぐらい持ってますよ。だから、そういう風に生活にFPGAを
      取り入れることからね、FPGAを考えると、良い物もある、だけど、悪い物もあると言いきれる
      と思うわけですよ。
  B : ちょっと、まってよ。
      君とちょっと違うんだけどね、海外のエンジニアなんかくるとね全部僕がすき焼きとか、
      天ぷら、しゃぶしゃぶとか、みんな連れていくんだよ。面倒見るんだよ。
      そうやってコミュニケーションしてね、で、FPGAは良い物もある!、悪い物もある!、んだよね。
司会: なるほどねーーー、うんうん
  C : やっぱ、ダウンロードケーブルだったらね、
司会: はい。
  C : 自作だね。
っていう。

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

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