Universal Interface:Design
本ボードシリーズの設計思想を以下に列挙します。
これが本ボードの狙いであり、重要事項です。 それなりの規模の回路が作れるように、そこそこの規模のPLDを搭載します。 また、PLDの選択でグレードが変えられることも考慮します。
PLDを使用する場合、一般には回路は固定されます。 一度設定したら変更不可能なヒューズタイプ、内部のEEPROMで回路を保持するタイプのほか、電源を切ると回路が揮発するSRAMタイプであっても大抵は外部に専用EEPROMを接続し、電源投入時に自動的に回路データをロードします。 一般的な回路では、電源投入後すぐに動作することは必須ですが、本ボードはオプショナルなものであり、OS起動後でも、使用するアプリケーションが起動する前に設定が済めばいいという判断が一つ、また自由に変更できることも利点であるのとの認識もあります。
また、変更はPC側から簡単に出来ることを求めました。
PCI拡張カードに大規模PLDを搭載したボードはすでに複数種が市販されています。 ところがこれらは、「PCIボードを新規開発するためのキット」という位置づけで、デバイスやものによってはPCIブリッジを搭載していても、外部との接続コネクタやその保護回路は搭載されておらず、そのままインターフェイスとしては使えません。本ボードは、手を加えずに、すぐに使えるものを目指しました。
また、この手の市販ボードはどんなものでも開発できるようにとオーバースペックに作ってあり、一般に高価です。
PCIバスの信号は(特に初期化時)複雑で、素人設計では太刀打ちできません。 PCIバスのIPコア(設計済の機能ブロック)が市販されてたりしますが、それを使うにしても専門知識が必要となります。 それに対して、16bitCPUくらいまでは当たり前の、アドレスバス、データバス、読み書きイネーブル信号をつかう形式は非常に理解もしやすく、簡単な回路で済ませられます。 極端には、アドレスデコーダとバッファで入力ポート、同ラッチで出力ポートが出来てしまいます。 使いやすさを考えるとそういった形が望ましいと言えます。また、PCIコアの分でデバイスのロジックが消費されることもありません。
なんでも出来るように拡張性を高める設計を心掛けます。
本ボードシリーズの設計を以下に列挙します。また、右図にその構造を示します。
設計を検討した段階で、まわりでユーザが多かった、Altera社製のSRAM構造のPLDを採用することにしました。 このPLDは、外部からシリアルデータとして回路データを流し込むことが可能で、様々なラインナップがあります。
このボードを構想するきっかけにもなった、アドテックシステムサイエンス社製PCIバスブリッジLSI APIC21 を採用し、PCIバスアクセスをCバスにも似たローカルバスアクセスに変換します。 ローカルバスの仕様は、
  • データバス: 16bit
  • アドレスバス: 8bit(I/O) 17bit(MEM)
  • 制御信号: クロック16.6M(PCI-33M/2)、MEM-R, MEM-W, IO-R, IO-W、割り込み制御ほか
  • チップセレクト信号:最大16
となっています。ここで便利なのが、最後のチップセレクト信号で、ブリッジ内部にアドレスデコーダ回路を持っており、特定アドレスの読みや書きの際にのみアクティブになるチップセレクト信号を作り出せます。 これを用いるとラッチやバッファのTTLを接続するだけで、入出力ポートを作ることができます。 これを利用して、PLD設定回路を作りました。
最初からボードをたくさん同時に挿して使うことを前提に考えていましたので、市販のインターフェイスボードにんらって、Board Serial Number(BSN)スイッチをつけて、最大16枚まで識別可能としました。
IOマップ上に設けた8bit入力ポートと8bit出力ポートを用いて、PLDに回路データを設定する際に使用するようにしました。この入力ポートにBSNスイッチもつながっています。
外部バスは、市販のディジタル入出力ボードによくみられた、48bitを確保することにしました。 これは50pinのコネクタで、2本をGND、48本を6×8bitと使います。この48という数字は昔パラレルIOに多用されていた8255というICが24bitで、それを2個使用することが多かった時代の名残でしょう。 ただし、この配置ではGNDが多少貧弱で、高速信号をやりとりするとGNDがぶれるケースがあることがわかっており、仕様の弱点の一つです。

そのままインターフェイスとして使うことを前提にしていたため、内部保護と出力増強をかねて外部接続バスにはバッファを挿入しました。 バッファはごく一般的なTTL245型の双方向バッファを使います。
(74LS245, 74HC245, 74HC645など)
またソケットで交換できるようにしました。
上述のようにコネクタは48本の信号と2本のGNDで50pinで済みますが、それに電源供給機能を追加して60pinとしています。
1〜48:IO、49,50:GND、51,52:逆挿し防止キー、53,54:GND、55,56:+5V、57,58:12V、59,60:12V。
この電源供給により、A/D変換、D/A変換回路のようなアナログフロントエンド、絶縁回路、フィルタ回路などを動作させることができるようになります。
念のため、ポリスイッチを入れてありますが、気休め程度で外部でショートさせたらあっさり本体もリセットかかりました。便利ですが危険性も多少あります。
各バスバッファへの配線は、バス8本、Enable、Directionの10本で、6グループ合計60本になります。
PLDからバッファへの配線を30本ずつ2グループにわけ、それぞれに、内部接続用のコネクタを用意しました(上図は実際の配線と若干意味が異なっています)。 バッファをDisableすることで、残り27本を自由に使えます。 また、クロック入力専用コネクタも用意し、APIC21より供給される16.6MHzのクロック以外が必要な場合に接続します。 クロックコネクタにはPLD側からのIOも接続し、VCOを接続することでPLLも構成できるようにしました。
以上の基本設計に基づき、Universal Interface Board は大きく分けて3バージョンが開発されています。
初期モデルであり、江村研の4脚歩行ロボットのインターフェイスなどに使用されています。 基板はMITS社製基板加工機で両面ガラエポ基板を加工して作っていました。 基板パターンも含めて独自設計で、このとき基本的な仕様が定まっています。

使用デバイスはAltera社 FLEX 6Kシリーズより、6016(208pin) 6024(208pin)を使用しています。 6016には5Vと3.3V品が、6024は3.3V用デバイスがありますが、それらを使用するために、 1:5V専用基板 2:PCIバスから3.3Vを供給可能とした基板 3:自前の3.3V三端子レギュレータ(uPC2933)によって3.3Vを生成する基板 といくつかのマイナーバージョンが順に開発されました。 ちなみに、この電源供給は以降のバージョンで基板上のジャンパ結線で選択可能になっています。 このころは基板設計データが詳細回路図をかねていて、しかも、回路図は手書きの適当なメモしかなかったというチャレンジャーな設計をしてたので、回路図の正式なものは残っていません。 設計パターンはMITSの古いソフト用で、発掘もしていないので公開していません。

Version 1 で有効性を検証できたため、基本的な設計を変更することなく、基板を外注用に設計し直し、開発したモデルです。そのため、Version 1の上位互換になっています。
基板を外注したことで、基板そのものを作る手間、表と裏をつなぐ手間、検査の手間がなくなり、1枚つくる時間が劇的に短くなりました。Ver1ではほぼ2日要したものが、3時間程度になりました。
基板設計時のパターン引き回しの制約が大幅に緩和されたため、基板も規定サイズに収まり、さらに余裕が若干あったため、2種3個の内部拡張コネクタを装備しました。 これによって、高速RAMの増設や基板のクラスタ接続が可能となりました。 また、より高速なクロックを供給可能となったため、パイプラインを併用し、単位時間あたりの処理量の増加、タイミング信号の精度向上が可能となりました。

使用デバイスはそのままで FLEX6K-PQFP208, 6016, 6016A, 6024A に対応しています。 また電源もレギュレータを搭載し、PLDの電源端子を5V, PCI3.3V, 内部3.3Vと切り替えられるようにしました。

回路および基板設計は OrCADを用いて行いました。

  • OrCAD 回路図
    ※1
    (その他設計ファイルについては別途ご用命下さい)
  • OrCAD パターン (その他設計ファイルについては別途ご用命下さい)
  • ガーバ(基板外注時に使用)※2

    ファイル
Version 2 を使って様々な処理を行ううち、RAM(EAB)があれば便利なのに、と思うことが出てきたため、FLEX10Kを搭載するモデルの検討を開始しました。
Version 3 は、回路図上は単純にVer2のFLEX6KのパターンをFLEX10K用に修正したのみです(ボードの違いを自動認識するための若干の変更あり)。 ただし、Version 2を作ってみて発覚したGNDおよび電源ラインのパターンの貧弱さを解消するため、電源系は大幅に変更を加えました(Ver2では裏面に一カ所電線で増強個所あり)。 表から見えるところも幅が太くなっていますが、裏面はVer2でスカスカだったものをほとんどベタに変更しました。本来は4層で設計すればいいのですが...。 この改良により、組み立てればすぐ動くレベルまで改善されました。

使用デバイスは FLEX10KA-PQFP208, 10K30Aです。10K40まで載せられるはずです。 10K30Aと6024Aの機能的相違点ですが、動作速度はあまり変わらず、外部端子数もあまりかわらず(配置は10K30のほうが親切)、回路規模を示すLE数もほぼ同じで、10K30AはメモリブロックEABが12Kbit搭載されています。 回路および基板設計は OrCADを用いて行いました。

  • OrCAD 回路図
    ※1
    (その他設計ファイルについては別途ご用命下さい)
  • OrCAD パターン (その他設計ファイルについては別途ご用命下さい)
  • ガーバ(基板外注時に使用)※2

    ファイル
つい最近のDESIGNWAVE誌(の某有名な号)をみたら、次が欲しくなりました(笑)。 Cycloneシリーズ、非常に魅力的です。 手持ちのPLDと基板(V2,V3とも7枚分くらい)が減ってきたら、次はCycloneのEP1C6, EP1C12対応で、新しく設計したいところです。CADが使えるようになったら、ですが。
Version 2 をつくってから Version 3を作るまでの1年間のブランクのリハビリをすべく、設計してみたのが、秋月電子のAKI-H8/3052用のUnivIFです。設計したついでに、 OLIMEXにチャレンジして基板をつくってもらいました。 一応、UnivIFシリーズに入れてありますが、まさにPLDをつけただけ、なので、微妙に共通性がありません。 ただ、オンラインで中身を書き換えるというUniversalさは維持していて、シリアルポート経由で、3秒程度で書き換えるサポートソフトウエアは開発してあったりします。

この基板はいくつか特徴があります。

  • 「ゲタ」として、装着します。そのため、コネクタも、あえてスタックスルーにして、AKI-H8本来の信号線を別の回路で使えるようにしています。
  • 可能な限り拡張性をあげようとしました。AKI-H8(というかH8/3052そのもの)は、多くの入出力ピンを持っていますが、外部バス(アドレス,データ)を使おうとすると、極端にそれらが犠牲になります。 その分くらいは確保できるようにと、本来のメインのCN1,CN3をそのまま外にもう一列増やす形で増設しました。 その結果、これ1枚で70本近い入出力端子を増やしました(回路図参照)。
  • 6024を使用して、ラジコンサーボ用のPWMを64CHとか出せる、化け物にしました(笑)
この設計思想のため、リハビリ気分で、OLIMEXに頼むにしては、過激な設計になっています。 特に、写真やガーバからもわかりますが、H8が乗るコネクタのピン間に2本の配線が通っています。これがかなり無謀です。 100milの普通のランド間に2本ならまだ良かったのですが、このコネクタはピンが太いため、穴もでかく、非常にぎりぎりです。 その結果、納品された基板の何枚かはパターンブリッジを起こしていました(汗。
ちなみに、OLIMEXの設計のお約束では、(a)パターンおよび間隔は8mil以上(10milだとなおよい:早い)、(b)パターンのリングは幅8mil以上、となっています。穴は0.9mm(35mil)は必要なので、ピン間に2本というのは、(35/2+8)+8Space+8Line+8S+8L+8S+(8+35/2)=91 で、100milに通すにはかなり危険です。 実際には、パッドを1.4mm=55milにして、中を8milで通しました。ランドとパターンのクリアランスが約10mil=0.25mmくらいです。 レジストしてあってもヒヤヒヤな作りです。 さらに、このスタックスルーなコネクタのはんだ付けがめんどうなのですが...。

いまのところ、実用にしたことはないのですが、ラジコンサーボやエンコーダをたくさんつないだりするには便利なはずです。PLDが直結なので、外にバッファでもつながないと壊れそうですが、ピン単位でこわれるなら、まだ交換もできるな、とか思ってます。 コネクタCN5,6を横向きにだすと、いくらでも積めそうですが、内部設定のための端子に工夫をしなかたので、残念ながら1段だけです。 設計変更するときは、そこがまず改良すべき点です。これを山積みにして、クラスタ接続して、大規模処理、とか楽しそうですし。 回路および基板設計は OrCADを用いて行いました。

  • OrCAD 回路図
    ※1
    (その他設計ファイルについては別途ご用命下さい)
  • OrCAD パターン (その他設計ファイルについては別途ご用命下さい)
  • ガーバ(OLIMEXに基板外注時に使用)※2

    ファイル
  • ※1
    OrCAD回路図のPDF化にはCimmetryのAutoVue SolidModel Proの評価版を使用しました。登録が必要なのと試用は30日のみとのことですが、AutoCAD CaptureおよびLayoutのファイルがさくっと読めました。日本語版はインストーラ(だけ?)が日本語なのと、代理店によるサポートフォーマット一覧がついてきます。
    OrCAD用だけにつかいましたが、実際にはびっくりするくらい多くのフォーマットが扱えるようです。それだけに、正規に買うとお値段も....。
  • ※2
    ガーバファイルの参照にはPentaLogixのViewMate(おためし版)が便利です。ユーザ情報の登録は必要ですが、ダウンロード、インストールして、起動後、ガーバファイルを投げ込むと参照できます。