●専用基板の設計

『1』 使用するマイコン

専用基板には、IICバスデータ取り込み
用マイコンとして川崎製鉄(株)の
KL5C80A12CFP (以下、メインマイコン)と、
パソコンとのUSB通信用マイコンとして、
マイクロチップ社の PIC16C765
(以下、PICマイコン)を採用することにしました。
PIC16C765 KL5C80A12

最初の案としては、メインマイコンは KL5C80A12CFP 1個、USBインターフェースには 、
以前に使ったことのある、ナショナルセミコンダクター社のUSBN9603を採用しようと考えたのですが、
200KHzで動作しているIICデータを取り込みながらUSB通信をするとメインマイコンソフト負荷が重く
なりそうなので、機能を分離し2個のマイコンで処理するようにしました。

『2』 IICバスデータ取り込み入力バッファー

 最近のIICデバイスは3.3V電源で動作するものもあり、
 バスのHighレベル電圧が3.3V でも5Vでも対応できるように、
 入力バッファーにはアナログデバイセス社の高速コンパレータ
 AD8564Aを採用します。
 このコンパレータはヒステリシスの設定を外部抵抗で設定可能
 なので ゆるやかなスロープの入力信号でも安心です。
AD8564A

『3』 IICバスデータ取り込み回路

ICバスはクロック同期式シリアルバスなので、マイコンに取り込み易いようシリアル→パラレル
変換回路を設けます。
クロックが低速ならば、メインマイコンのポートからクロックのエッジに同期してソフトによるデータ取り
込みも可能ですが、200KHzのスピードではソフトでのデータ取り込みは無理です。  

ということで、IICバスのデータを取り込む回路を
アルテラ社のEPM7064SLC(以下、FPGAと呼びます)
に組み込むことにしました。

FPGAの内部には9ビットシフトレジスタを設け、9ビットの
データが揃ったところで、メインマイコンへ割り込み信号を
出力するようにしました。
EPM7064SLC44

 『4』 IICバスデータの取り込み用メモリーのサイズ

メインマイコンでは、シリアル→パラレル変換回路から割り込み要求があった時、FPGAの内部の9ビット
パラレルデータを取り込んだ後、メモリーに保存することにしました。
(1データ9ビットなので、メモリー保存時には1データ2バイトを使うことになります)

5秒程度の取り込みデータを保存するためのメモリー必要容量を計算してみます。
IICバス1チャンネル当たり1秒間に200Kbit取り込む場合では、5秒間で1Mbit、
2チャンネル同時モニターだと2Mbitとなります。

2Mbitのデータをデータ件数に換算すると、約22万件(2Mbit÷9Bit)となり、
1件当たり2バイトを使用するので、5秒間分のモニターデータ記憶に必要なメモリー容量は、
22万件×2バイト=44万バイト(約430Kバイト)となります。
このため、取り込みデータ保存用メモリーは、4Mbit(512Kバイト)容量の日立製 HM628512C
を使用することにしました。

HM628512

ただ、メインマイコン(KL5C80A12CFP)を今回はノーマルモード(26、27ピンオープン)で使用する
ため、メインマイコンのアドレスバスは A0〜A16 しか使用できません。このため HM628512Cの
A17とA18ピンにはメインマイコンのポートを接続し、バンク切り替えにて HM628512C をアクセス
する必要があります。

『5』 取り込んだIICバスデータのPICマイコンへの送信

取り込んだデータはUSBインターフェースを持つPICマイコンへ渡す必要があります。
このデータを渡す速度はモニター全体の処理速度に影響するので、極力速い方法で渡す必要があります。

このため、PICマイコンポートDとEをパラレルスレーブモードに設定して渡すようにしました。

PICマイコンのポートDとEをパラレルスレーブポートとして使用

メインマイコンから見ると、PICマイコンはメインマイコンのI/Oポートでしかありません。
こうすることで、1つの出力命令でデータを渡すことが可能になります。
また PICマイコン側では、データを渡された時点(WR信号立ち上がり)で割り込みをかけ、
PICマイコンのメモリーに保存するようにします。

PICマイコン側では、常にポートに空きメモリー量とBusyを出力しておき、メインマイコン
はこのポート出力を確認しながら、データを1バイトずつPICマイコンへ渡すことにします。

『6』 PICマイコンへからUSBバスへのデータ送出

ホストからのINトランザクションに応えて、PICマイコンのバッファーに受け取っている
データを送出します。PICマイコンがUSBインターフェースを内蔵している為、比較的
簡単にUSB通信が可能です。

『7』 PICマイコンとメインマイコンとの232C通信機能を実装

2つのマイコン間で、双方向に232C通信できるようにします。
パソコンからの収集開始、収集停止などのコマンドをPICマイコンからメインマイコンに
知らせるのに使用します。

『8』 消費電流について

USBバス電源を使用するので、ボードの消費電流は

コンフィギュレーション状態の時     最大 500mA
デフォルト状態、アイドル状態の時   最大 100mA
サスペンド状態の時            最大 500uA

に制限されます。

バス電源を使用すると、動作時消費電流やUSBコネクタ挿入時の突入電流に制限が出てきそうです。
また、USBコネクタを抜いた時には基板内のコンデンサーに蓄えられた電荷をスムーズに放電できるか
等の注意すべき点もあります。

しかし、今回は市販目的での製作ではないので、消費電流についてはサスペンド時の対応は除外する
ことにしました。 突入電流についても、USBのHOST側にはカレントリミッターがあるので、
特に考慮しないことにしました。
また、コネクターを抜いた時の放電については、「基板に容量の大きなコンデンサーを実装しない」
ことで対応することにしました(突入電流を減らす効果にもなります)。

『9』 メインマイコンのリセット

USBがデフォルト状態、アイドル状態の時には消費電流最大 100mAという制限があるので、
コンフィギュレーション状態になるまでは、メインマイコンのリセット端子をLowレベルにして
おくことにします。これは、メインマイコンをリセット状態にしておくことで、消費電流を低減
できるからです。
メインマイコンのリセット端子は、PICマイコンの出力ポートで制御します。

PICマイコンでメインマイコンをリセット