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ではピンヘッダを傾けて実装することで対応するつもりだ。

2 件のコメント:

  1. 穴のピッチがずれているなんて、ちょっと前のCQの付録基板(なみのクォリティ)
    みたいですね。
    この基板(秋月で買えるやつですよね⁇)、個人的にも興味が有ったので、この先
    どのように"料理"されていくのか楽しみです。

    返信削除
  2. まちゅうさん、コメント有り難うございます。
    穴が2.54mm座標にのっていない件は不思議ですよね。
    1.27mmでもないですし。。。
    "料理"ですか、実は構想してる回路が全部入りきるかどうかの検討はまだしてないんですよ。入るんじゃないかなぁーとは思うんですが。

    返信削除

自作CPUで遊ぶ 25

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