とっても怪しいイーサネットLANボード


1997年9月1日 版(最終更新 2000年5月10日)


実験機-配線写真
試作機#1

この冗談のような実装をされた怪しい基板こそが、巷で噂のLANボードって やつです。


製作に最低限必要であろうと思われる情報をこのページで公開しています。 製作には、ある程度の ハードウェアの知識を必要とします。回路構成は簡単ですので、回路としての難易度 は低いのですが、初心者の方には難しいかもしれません。

回路が Ver 0.4 になりました。これは、v0.3から、より安定した動作を目指し たものですが、本当に安定しているのかは謎です(ぉぃ)。

-- 無保証 --

この回路により発生した損害等に関しては、私は一切関知いたしませんので、 御了承下さい。



回路図お持ち帰りコーナー

クリックしたら、大きめの回路図が表示されますので、適当に保存して くださいね。

アドレスデコーダ回路図

アドレスデコーダーまわり


変更点:ver0.3 : 論理整合(回路変更はありません)
    ver0.4 : -ASデコードを別図に。メモリ空間占有選択を付加。

割り込み要求回路図

アドレスバスバッファ及び割り込み要求 まわり


変更点:ver0.3 : 論理整合(回路変更はありません)
    ver0.4 : IRQの並列化(お好みで)など。

バスバッファ回路図

データバスバッファ及び割り込みベクタ生成まわり


変更点:ver0.2 : 端子表記の修正
    ver0.3 : IDDIRを使わないようにした

バスブリッジ回路図

バスブリッジまわり


変更点:ver0.2 : バス幅を認識させる抵抗付加
    ver0.3 : IDDIRの代替作成および論理整合
    ver0.4 : Read/Writeまわりの変更などなど。

ISAバスの端子配列も知りたい?

NE2000クローンで使われていた端子配置

ISAバスの端子配置及び簡単な解説



X68k拡張スロットの端子配列も知りたい?

X680x0拡張スロットの端子配置及び簡単な解説



製作してみませう

今回の製作の部品(か?)の要である、NE2000(クローン)ですが、私は 95年の夏ごろに大阪ー日本橋のAT互換機パーツのお店の 「ふぁすとばっく」にて、3980円 (税抜き)で購入しました。安いものです。今ならもっと安く買えるでしょう。

さて、注意です。 すべてのNE2000(クローン)を利用できるわけではありません。

ここでの回路は、NE2000がI/Oアドレス200h〜3FFhの 間を利用するものとして設計されていますが、ソフトウェアの都合上 (v0.3までの互換性の都合上^^;)、先頭を300hに設定されることを おすすめします。また、割り込みは並列化配線をされた方の場合、 どれを選んでも(たぶん)問題ないのですが、v0.3までと同様に IRQ10のみの配線の場合、NE2000の割り込みもIRQ10に設定する 必要があります。

買ってきたNE2000が以上の設定になっていれば いいのですが、たぶん異なる設定となっているでしょうから、NE2000の設定が必要 となります。NE2000によっては、ジャンパーピン設定もできるものがありますが、 たいていは、付属の設定プログラムで行なうようになっているでしょう。

そのため、誠に申し訳ないのですが、お友達や、親戚、御近所、お店(ぉぃ)などの AT互換機をお借りして、以上のような設定にしてやってください。
しかし、「おれは X68000一筋なんだぁ。AT互換機の手を借りるなど、嫌いだぁぁ!(けど NE2000はAT互換機のパーツなんだけどね)」って人には、ボードの回路の 変更や、ドライバソフトの変更で欲求を満たすことが可能ですので、御安心を(^^;)。

回路図「アドレスデコーダーまわり」でメモリ占有空間選択を付加しました。 ジャンパーでY0とY1を選択します。それぞれ、以下のアドレスを占有します。

が、今のところ、ソフトで対応させていませんので、「Y0」を選択するように してください。

エクセレント系アクセラレータを68に搭載されている方はエクセレントの占有 アドレスに注意してください。エクセレントのデフォルト設定ではNeptune-X と占有アドレスが重なり、動作しません。

また、Jupiter-X β版を68に搭載されている方はDMACアドレスのすりかえ の変更をおこなってください。

一般的によくいわれますが、パスコンをケチらないでください。ISAバスは、グランド ピンが非常に少ないため、電源インピーダンスを下げないとグランドラインが 不安定となります。ISAバスへの電源供給は太めの電線でおこない、アルミ電解コンデンサーやタンタル電解コンデンサーで補強しておいてください。

回路図には、ISAバスへの電源供給は書かれていませんので、注意して下さい。

部品の配置例(v0.3用)を見てみる



パーツリスト

以下のような部品があれば製作はできるでしょう。 もちろん、お手持ちの同等部品に変更するのも安上がりに制作するコツです。


LANカード
AT互換機用NE−2000クローン   ×1

TTL IC
74AS00              ×1
74ALS04             ×1
74LS06              ×1
74ALS08             ×1
74AS27              ×1
74ALS30             ×1
74ALS138            ×1
74LS243             ×1
74LS245             ×2
74ALS245            ×2

抵抗
4.7KΩ8素子集合抵抗        ×1
4.7KΩ               ×7ぐらい

コンデンサ(パスコン用)
0.1μF積層セラミックコンデンサー  12個ぐらい適当に
10μFアルミ電解コンデンサー     2個以上適当に

その他
割り込みベクタ設定ピン         
割り込みレベル設定ピン
占有アドレス設定ピン          適量

X68000用 ユニバーサル基板    1枚

ISAバスコネクタ           1個

ISAバスコネクタ固定基板       適当に

配線用の電線              適量

以上の部品代は、NE2000が3980円(最近は1980円とかもありますね) 、基板が3500円未満ですので、 後の部品をいれても、1万円未満で製作可能です。ハードに関係している方 なら手持ち部品があるでしょうから、さらに安く作れます。拡張スロット にいれないで、X68000内部からバスをとれば、基板代をけちれます ので、うまくいけば、5000円未満でも製作できるでしょう。

私が作成したころ、ISAバスコネクタを売っているのを見かけなかった のですが、私は、 学校のゴミ捨て場から廃棄処分のいにしえの98をひろってきて、拡張 スロットについていたコネクタを抜きとって使いました。98拡張スロット は68と同じ50ピン2列ですが、ISAバスは2つに分かれている点を 除けば49ピン2列と考えられますので、98のスロットコネクタを糸ノコ で、2つに切って使えます。これでコネクタ代もケチれます…あぁ、貧乏。



ボード動作確認プログラム

とりあえず、ボードがメモリマッピングされているのか、また割り込み設定が うまくできているかどうかの確認、ついでに、DP8390のレジスタ試験や、NE2000の バッファRAMの試験までしてくれるプログラムです。試験方法は、Linuxのソースを 参考にしたり、NE2000クローンに付属の設定プログラムを逆アセンブルして得た 方法を用いています。

簡易ボードチェッカーV0.07をお持ち帰りする

本当は、ループバックテストとかもしてみて、回路構成に誤りがないか確認 したいのですが、NE2000クローンが、16ビットバス幅で動作しないという、 謎の動作になやまされていたので、時間がありませんでした。 しかし、ありがたいことに、野首さんが、ループバック試験プログラム を作成してくださりました。感謝、感謝。

Neptune-Xループバック試験プログラム(リンク)



ソフト開発資料について

ISAバスブリッジの簡易化のため、メモリマッピングが少々特殊になっています。 ここらの、特殊な事情は別にソフトウェア開発資料として、まとめようかとは 思いますが、必要な方はいないような…。
ちなみに、このボードの回路では、I/Oマッピング空間を、0xECE000から0xECE3FF まで(もしくは0xECE400から0xECE7FFまで) を占有します。NE2000のI/Oアドレスが300hであれば、0xECE200(または0xECE600 )からマッピング されます。デバッガでダンプすると、わかるでしょう。また、割り込みベクタ 番号はF9に設定されています。

ずーっと前(95年の冬ぐらい)に、資料を求めて日本橋まわりをしました。日本橋の共立にもデジットにもテクノベースにもJ&Pにも三協にも…DP8390 の資料はありませんでした…。しょうがないので、NE2000クローンに付属のプログラム の逆アセンブルをしてしまいました。ふふふふ…、あいかわらず、86系の アセンブラはきたないのぉ…。

その後、もしかしたら…という気持ちで、ナショナルセミコンダクター社のホームページをみてきました。すると、あるじゃないですか!DP8390ファミリーの資料が(もちろん、英語)。そこで、いろいろ、落してきて、眺めてみますと、レジスタ設定で、どうやら68000モードが あるみたい。ようするに、データの上位バイトと、下位バイトのならびを68000 系にしてくれる、ありがたい機能。これを知ってたら、データバッファ周りで、 上位バイトと下位バイトを入れ換えなかったのに…。
しかし、恐いのは、NE2000 クローンは怪しい互換チップを載せていますが、このチップのDP8390-Coreが、 完全にコンパチかどうかわからない、ということです。AT互換機での使用を前 提としている(当たり前^^;)チップですし、もしかすると68000系にして くれる機能なんてサポートしていない可能性が考えられました。そこで、回路の 変更は行なわないことにしました。

というわけで、National Semiconductor社に 行ってみる。



回路変更履歴


v0.3を作成された方は以下の簡単な変更で、より安定した動作を期待できます。



NE2000クローン、バス幅自動検出について

ボード認識プログラムを作成していて、気がかりだったことがありました。 EEPROMの14バイト目と15バイト目の2バイトにバス幅認識子が あります。この2バイトが、どちらも42hの場合は8ビットバス幅、 57hの場合は16ビットバス幅です。開発当初、Linuxのソースを参考に 動作確認プログラムを作成していたのですが、Linuxのソースでは、「57h になる。」と、書かれてあったのですが、どうやっても42hしか得られな かったのです。そのころは、NE2000に関する資料がなかったため、この2バイト の意味がわからず、設計した回路の不備か、動作タイミングの違いから引き 起こっているのではないかと、いろいろ疑ったのですが、原因を特定する ことはできませんでした。
最近、ナショナルセミコンダクタ社から落してきたDP8390ファミリーの資料を見ていた ところ、NE2000に関する記述があり、そのおかげで、この2バイトの 意味がわかりました。

42hの場合は、物理データバス幅が8ビットで、57hの場合は16ビット であるという意味だったのです。

これがわかった時は、少し焦りました。「なぜ、8ビット幅と認識されるんだ?」 ナショセミのアプリケーション資料では、どうやら、ATバスで拡張された部分の コネクタ(小さい方のこと)の電源端子を見ていました、ようするに、ATで、 拡張された部分の信号を検出しているわけです。

この事例を参考に、私の 購入したNE2000を調べてみました。すると、-IOCS16が怪しそうです。 本来はこの端子は、カードからの出力のはずですが、オープンコレクタ出力の ため、マザーボードがプルアップしており、この端子は、平時はHレベルに なっているのです。これを踏まえて、NE2000クローンを見てみると、なぜか、 -IOCS16が、27KΩでプルダウンされているのです。なるほどーって感じが しますよね。この端子が、-IOCS16に接続されていればHレベル、解放されて いればLレベルになるのです。そこで、この端子をプルアップするように、 抵抗を付加しました。そして、プログラムで確認したところ、16ビットバス を示す57hを検出することができました。

ここで問題になるのは、このようなデータバス幅自動検出機能が、どのような形で 実装されているか、カードによって異なる可能性があるということです。たまたま 、わたしの購入したNE2000クローンは、以上のような検出方式をとっていますが、 他のカードでは、どうなるかわかりません。そこで、42hを検出したばあいは。 ATで拡張された部分の端子をいろいろ調べてください。

しかし、NE2000は、ATバス用だとおもうのですが、どうしてXTバスに さされた場合を想定しているのでしょうね。XTバス用にNE1000ってのがあるのに…。


参考文献など

トランジスタ技術 1995年3月号「PC/AT互換機ハードウェア研究」 CQ出版

トランジスタ技術 1988年10月号「基礎からの68000応用研究」 CQ出版

National Semiconductor      DP8390ファミリーの資料たくさん

富士通	半導体デバイス 通信制御/ネットワーク用IC DATA BOOK 1995

マーキュリーユニットV3 全回路図    ねねっと

Open Design  No.3  イーサネットとTCP/IP    CQ出版

その他いろいろ



Back to Neptune-X Home Page