- ブリッジとスイッチング技術
-
2019-02-07
セクメント間のTrafficを制御するBR
Ethernetの代表的な特徴の一つにそのアクセス手法のCSMA/CD(Carrier Sense Multiple Access with Collision Detection)があります。このCSMA/CDによって、複数ネットワークノード間の衝突発生時のアクセス調停が実現されているわけですから、ネットワークの拡張と共に接続ノード数が増加すると衝突発生率も増加し、それがそのままネットワーク利用効率の低下につながってしまうことは自明の理でもあります。
衝突発生率の増加をからくるネットワークの利用効率の低下を緩和させる手法として最初に考案されたネットワーク機器がブリッジです。ブリッジは各ネットワークセグメントに接続されているネットワークノードのMACアドレスを自動学習し、そのMACアドレスをベースにして不要なセグメント間トラッフィクを制御する機能を提供します。
MACアドレスの自動学習は、各セグメントを流れているパケットの送信元アドレス部を抽出することで実現されています。例として、一つのセグメントにノードAとノードB、もう一方のセグメントにノードCとノードDが存在する簡単なネットワークを想定してみて下さい(図1参照)。ノードAとノードB間の通信及びノードCとノードD間の通信はそれぞれが属するセグメント内で終結しますので、もう一方のセグメントへトラフィックを転送する必要はありません。ブリッジによってセグメントを分離することにより(コリジョンドメインを分離するとも表現されます)、2系統のノード間通信を同時に実行することが可能になるわけです。
これはネットワーク系全体の帯域を実効的に倍増させたことにもなります。DATA転送経路を切替えるSwitch技術
スイッチングとはデータ転送経路を選択する技術の一般的な呼称で、データ転送経路はあたかもスイッチを切り替えるがごとく、データの転送先アドレスに応じて所定の経路が選択されます。
ではスイッチング技術を応用したスイッチングハブとブリッジとではどこが違うのでしょうか。実は基本的な機能においては両者の違いはほとんどありませんので、スイッチングハブはブリッジの一種と解釈しておいても特に問題はありません。
一般的には、それまでのブリッジが主にソフトウェア処理によって行なっていたデータ転送経路の処理を専用のハードウェアによって高速動作(通常フルワイヤスピード)するようにした多ポートブリッジがスイッチングハブであると説明される場合が多いようです。最近ではMACアドレスではなく、ネットワークアドレスをベースにハードウェア処理でルータ動作をするレイヤ3スイッチと呼ばれるスイッチングハブも登場しています。
また、レイヤ3スイッチと区別するために、MACアドレスによるスイッチング動作をするものはレイヤ2スイッチと呼ばれるようになってきました。
ここでいうレイヤというのはOSIのネットワーク階層モデルにおける階層のことです。Ethernetで採用されているスイッチング方式の違い
Ethernetにおけるスイッチング技術には以下の方式が採用されています。
- カットスルー方式
受信パケットのアドレス部分の検査が完了した時点で、選択された転送経路へパケットの転送を開始する方式です。
パケット全体の受信完了をまたずに転送が開始されるので、転送遅延時間が小さいのが特徴です。
その一方で、CRCエラー等を含んだエラーパケットが転送されてしまう欠点もあります。
カルパナ社(現在はシスコ社が吸収)がクロスバー回路の応用として採用した方式で、スイッチングハブの歴史はここから始まっています。 - ストア&フォワード方式
受信パケットのアドレス部分の検査は受信しながら実行されますが、選択された転送経路へのパケットの転送はパケット全体の受信が完了した後で開始されます。
このためエラーパケットが転送されることを防ぐことが可能になりますが、転送遅延時間は大きくなります。
また、パケット全体がメモリに一旦バッファされるため、異速度調整やメディア変換等への応用が広がります。
この方式は、通常のブリッジに採用されているものと同じ方式です。 - 適応型カットスルー方式
メーカによって呼び方はまちまちですが、カットスルー方式及びストア&フォワード方式の両機能を装備し、これらを条件に応じて使いわけることによって互いの欠点を補い合うことを目的とする方式です。
一般的にはCRCエラー等エラーパケットの発生頻度が低い環境ではカットスルー方式で動作し、エラーパケットの発生頻度が高い環境ではストア&フォワード動作をするような機能として提供されています。
また、カットスルー方式で動作している場合でも、転送開始の判断を最小パケット長(64バイト長)受信まで遅延させることで、衝突によって発生したエラーパケットを排除する機能を提供しているメーカもあります。
- カットスルー方式
- スイッチング用LSI
-
2019-02-07
LSI概要
近年スイッチング技術が脚光を浴びるにつれて、汎用のスイッチング用LSIを手掛ける半導体メーカが増えてきています。その主なメーカを以下に示しておきます。
- ガリレオテクノロジー社 http://www.marvell.com
- テキサスインスツルメンツ社 http://www.ti.com
- MMCネットワーク社 http://www.mmcnet.com
- PMCシェラ社 http://www.pmc-sierra.com
これから紹介するガリレオテクノロジー社はその代表的なメーカの一つであり、数多くのネットワーク機器メーカがそのスイッチング用LSIを製品に採用しています。また、そのスイッチングLSIは、PCIバスがスイッチングバックプレーンとして利用できるという他のメーカにはない特徴があります。
開発拠点をイスラエルにおいているガリレオ社は、設計のみを行なういわゆるファブレスカンパニーです。
製品投入及び不具合点の改善サイクルは非常に早いメーカですが、その分バグも多いといったところが正直な感想です。GT-48001A/GT-48002A
ガリレオ社の代表的なスイッチングLSIにGalNetファミリーと呼ばれているシリーズがあります。以下の2品種がその代表的なものです。
◆8ポートの10BASE-TをサポートするGT-48001A
◆2ポートの10/100BASE-TをサポートするGT-48002A過去にはGT-48003として100VG-AnyLANも開発予定がありましたが、現在は消滅しています。ガリレオ社は次世代のスイッチングLSIファミリーとしてGalNet-IIファミリーを最近発表しました。興味のある方はガリレオ社のWWWサイトを覗いてみて下さい。GalNetファミリーの特徴を以下に示します。
●PCI Rev 2.1対応バスマスター動作
●メモリデバイス動作(4MByte空間占有)
●LANインタフェース- GT-48001A : AUI/10BASE-T モード切替
- )GT-48002A : MII(Auto-Negotiation)
●EDO-DRAM直接接続可能(1MByte/2MByte)
- 受信バッファ容量(最大1,008パケット)
- アドレステーブル(最大8,000アドレス)
●ストア&フォワード方式スイッチング
- フルワイヤースピード
- 個々のデバイスがそれぞれアドレステー ブルを保持する分散型スイッチング
- GalNetプロトコルによるデバイス間通信
- 最大31デバイスまで接続可能
- CPU介入による転送先制御可能
●ネットワーク管理機能
- リピータMIB
- HP-EASE対応パケットサンプリング機能
- VLANサポート
●208ピンQFPパッケージ
●+5V動作バスマスター動作調停用のアービタ機能を備えたPCIバス上にGT-4801A及びGT-48002Aを配置することにより、様々な構成の10BASE-T + 100BASE-Tのスイッチングハブを構成することができます。
GalNetファミリーとしては最大31デバイスまでの構成が可能ですが、PCIバスは一つのバス上のデバイス数は10に制限されていますので、大規模構成では所定の個所にPCI-to-PCIブリッジを配置する必要があります。
図2にGT-4801AとGT-48002Aによるスイッチングハブの構成例を示しておきます。GalNetファミリのメモリ・マップ
GalNetファミリーデバイスはPCIバス上ではメモリデバイスとして認識されますが、システムとして協調動作するためには各GalNetファミリーデバイスが所定のメモリ空間にマッピングされていなければなりません。
図3にGalNetファミリのメモリ・マップを示します。GalNetファミリーはそのアーキテクチュア上、システムが占有するPCI上のメモリ空間として128MByteの連続領域を必要とします。GT-48001A及びGT-48002Aのような個々のGalNetファミリーデバイスは、この128MByteのメモリ空間の中に4MByteのメモリとして配置されます。
つまり、PCIにおける32Bitアドレスの最上位5Bit(Bit31:27)がGalNetファミリーのベースアドレスとして機能し、それに続く5Bit(Bit26:22)が個々のGalNetファミリーデバイスを区別するためのデバイスIDとして機能するわけです。 さらに個々のGalNetファミリーデバイスが占有する4MByteのメモリ空間はアドレスBit21によって2分割され、前半の2MByteが制御レジスタ領域、後半の2MByteがDRAM領域としてマッピングされます(図4)。128MByte÷4MByte=32ですので、デバイスIDの総数は32となりますが、制御用のCPUを配置した場合にはそのCPUもデバイスIDを必要としますので、GalNetファミリーデバイスの最大構成としては一つ減らした31個となります。
電源投入及びリセット時の初期値としては、ベースアドレスは[00001]で固定ですが、デバイスIDは抵抗によるプルアップ/プルダウンの選択によって任意の値が設定可能です。
これらの値はPCIコンフィギュレーションレジスタを介しての変更が可能ですので、パソコンに装着した場合にはPCI BIOSによってベースアドレス及びデバイスIDが設定されます。GalNetプロトコル
同一デバイス内のポート間におけるスイッチングは単純にハードウェアで処理できますが、GalNetファミリーデバイス間のスイッチング処理はPCIバスを経由しますので、何らかのデバイス間通信プロトコルが必要になります。そのデバイス間通信プロトコルとして定義されているのがGalNetプロトコルです(図5)。
このGalNetプロトコルはGalNetファミリーデバイス間の通信のみならず、CPUとGalNetファミリーデバイス間の通信にも一部利用されます。GalNetプロトコルはGalNetファミリーデバイスが配置されているメモリ空間へのデータの書き込み操作を通信メッセージとして定義したものです。メッセージの種類によって必要なデータワード数が異なります。また、複数データワードが必要な場合はバーストアクセスをする必要がありますので注意して下さい。 GalNetプロトコルでは以下の5つのメッセージが用意されています。
- NEW_ADDRESSメッセージ
他のデバイスにアドレステーブルの更新要求をするためのメッセージです。
GalNetアーキテクチュアでは、個々のデバイスがそれぞれのDRAM内にアドレステーブルを自己管理していますが、新規アドレスの検出やアドレステーブル内容の更新(ネットワークノードの移動等)を検出したデバイスがこのメッセージで他のGalNetファミリーデバイスにアドレステーブルの更新要求をすることによって、システム全体のアドレステーブルの整合性が維持されています。 - BUFFER_REQUESTメッセージ
転送ターゲットとなるGalNetファミリーデバイスに対して、パケット転送のためのバッファ領域の確保を要求をするためのメッセージです。 - )START_OF_PACKETメッセージ BUFFER_REQUESTメッセージに対する応答メッセージで、確保したパケット転送のためのバッファ領域のアドレスを返します。
- PACKET_TRANSFERメッセージ
START_OF_PACKETメッセージに対応して発行されるパケット転送のためのメッセージで、その実態はSTART_OF_PACKETで返されたバッファ領域へのパケットのコピー操作です。
パケットのコピーは32Byte単位のバースト書き込みで実行され、特定のデバイスがPCIバスを長時間占有するのを防止しています。
パケット全体がコピーされるまで、バッファ領域のアドレスポインタを更新しながらPACKET_TRANSFERメッセージが繰り返し発行されます。 - END_OF_PACKETメッセージ
PACKET_TRANSFERメッセージの完了を通知するためのメッセージで、転送先のポート指定も同時に行われます。このメッセージを受け取ったGalNetファミリーデバイスは所定のバッファ領域にコピーされているパケットを指定されたポートへ転送します。
転送先のポート指定は複数指定が可能ですので、ブロードキャストパケットもユニキャストパケットも同じ手順での処理が可能です。
図6に、パケット受信時のデータ・フローを示しておきます。
- GalNetファミリの応用
-
2019-02-07
EtherFormationの紹介
スイッチングLSIの設計例としてGalNetファミリーデバイスであるGT-48001A及びGT-48002Aを採用して弊社が開発したEtherFormationシリーズを紹介します。
EtherFormationシリーズは、CPUを搭載しないノンインテリジェントタイプのLANアダプタでありながら、スイッチング技術をLANアダプタに融合させることに成功したもので、以下の2種がPCIバス対応LANアダプタカードとして提供されています。◆SC802TX : 10/100BASE-T x 2 ポート
◆SC808T : 10BASE-T x 8 ポートPCIバスを1Gbps相当の仮想アップリンクパスとして利用することでGigaEthernet NICと10/100Mスイッチングハブとの組み合わせに相当するパフォーマンスが期待できます。
これらのアダプタは[スイッチングハブ+LANカード]としての基本動作以外にもドライバソフトウェアとの組み合わせによって多彩な機能を提供しています。
例えば、各ポートそれぞれを独立したLANカードとして振る舞わせたり、各ポートを束ねてビッグパイプとして利用するようなことが可能です。
またEtherFormationシリーズの各アダプタはCPUによる初期設定がなくてもバスマスターとして動作することができますので、5枚-10枚程度までのPCI-to-PCIブリッジを必要としない構成であれば、アービタ機能を備えたPCIバスに各アダプタを装着するだけで、PCIバスをスイッチングバックプレーンとしたスイッチングハブユニットが簡単に実現できます。
図7に、ドライバ関連図を示しておきます。
- SC802TXスイッチング回路
-
2019-02-07
SC802TX概要
図8にEtherFormationシリーズSC802TXのハードウェア構成のブロック図を示します。
SC802TXはスイッチングLSIにGT-48002Aを採用したスイッチングLANアダプタです。
GT-48002A単体そのままではLANアダプタとして使用することができませんので、制御用I/OポートやMACアドレス格納用EEPROM等を付加する必要があります。
SC802TXは以下の主要回路で構成されています。◆スイッチング回路
・GT-48002A
・EDO-DRAM (2MByte)◆10/100M PHY回路
・LXT970◆クロック回路
・25MHz OSC◆コンフィギュレーション回路
・制御用I/Oポート
・MACアドレス格納用EEPROM
・設定用スイッチ◆LED表示回路
・LED (緑:4個, 赤:2個)では各構成回路の詳細を見て行きましょう。
GT-48002AのEDO-DRAM ADD・MAP
SC802TXのスイッチング回路は、GT-48002AとEDO-DRAMで構成されています。
EDO-DRAMは他の追加回路を必要とせずに直接GT-48002Aに接続することができ、リフレッシュもCAS-before-RAS方式で自動的に行われます。
EDO-DRAMは1MByteが2プレーン分サポートされており、1MByteでも2MByteのどちらでも動作可能です。
このメモリ容量の差は、パケットの受信バッファ容量の差として現れ、1MByte時の受信バッファ総数は320パケット分、2MByte時の受信バッファ総数は1008パケット分となります。なお、受信バッファは1536Byteの固定長で管理されています。SC802TXでは2MByteのEDO-DRAMを搭載しており、256K*16構成の4Mbitチップを採用しています。
GT-48002Aの基本動作クロックは33MHzですが、これはPCIバスの33MHzクロックがそのまま利用されます。
また、GT-48002AはPCIバスコネクタからできるだけ近い位置に配置し、PCIバス関連の信号の引き回しが長くならないように配慮する必要があります。
GT-48002Aが占有する4MByte連続メモリ空間の後半2MByteの領域にEDO-DRAMはマッピングされます。
そのEDO-DRAM領域のアドレスマップを図9に示します。GT-48002AのADD・テーブル
GT-48002AはEDO-DRAM内に384KByteの大きさのアドレステーブルを構築し、それに基づいたスイッチング処理を実行します。このアドレステーブルの操作はGalNetプロトコルのNEW_ADDRESSメッセージを介して行ないますが、直接EDO-DRAM領域にアクセスしてその内容を変更することも可能です。
アドレステーブルはガリレオ社独自のハッシュ手法で管理されています。その技術情報は機密事項として一般には非公開となっていますので残念ながらここで説明することはできませんが、ガリレオ社と機密保持契約を締結すれば情報の入手が可能です。GT-48002Aは受信パケットの送信元アドレス部の情報を元にアドレステーブルの内容を更新します。
また、受信パケットの送信先アドレス部の情報でアドレステーブルを検索してパケットの転送先を決定します。
その最大登録アドレス数は公称8,000となっていますが、ハッシュ管理ですのでそれ8,000以上登録できる場合もありますし、8,000以下となる場合もあります。
最大登録アドレスを越えた場合は新規のアドレス登録がでなくなるだけで動作に支障をきたすわけではありません。
GT-48002A自体はアドレステーブルのエージング処理機能を持っていませんので、エージング処理にはCPUが介入してアドレステーブルを操作する必要があります。GT-48002Aの制御レジスタのADD・MAP
GT-48002Aが占有する4MByte連続メモリ空間の前半2MByteの領域には制御レジスタ類がマッピングされています。そのアドレスマップを図10に示します。
各レジスタの詳細説明はページの都合上省略せざるを得ませんので詳細に関してはGT-48002Aのデータシートを参照願いますが、CPUインタフェース関連レジスタに関しては次に概説しておきます。
CPU I/F関連レジスタ
テムメモリとのデータ交換が可能です。
個々のデバイスが持つアドレステーブルにLANアダプタとしてのMACアドレスを登録し、その転送先としてCPUのデバイスID(通常0をアサインする)を指定しておくと、そのMACアドレス宛のパケットはCPUの指定システムメモリ領域へ転送されます。
CPUがGalNetファミリーデバイスとインタフェースするためには、個々のGalNetファミリーデバイス毎に所定のメモリ領域をCPU側のシステムメモリ上に確保し、以下の制御レジスタにそれらのアドレスを設定しておかなければなりません。また、ネットワーク管理サポート用のレジスタについても触れておきますので併せて参考にして下さい。CPU Buffer Base Addressレジスタ
CPU宛てのパケットの受信領域として32KByteのアドレス境界(アドレスの下位15Bitが全部"0")から始まる物理メモリを連続32KByte確保し、その先頭アドレスをこのレジスタにセットします。
このパケット受信領域は2KByteの固定長で管理されていて16パケット分のデータが受信可能です。16個のパケット受信毎に割り込みが発生しますので、それに対応してCPUパケット受信領域のアドレスを更新する必要があります。このレジスタはシャドウレジスタと呼ばれるダブルバッファ構造になっているためアクセスには注意が必要です。なお、初期化時には連続2回書き込みます。
内部構造としては16パケット毎にレジスタ内容をアドレスカウンタの初期値として取り込む方式ですので、このレジスタの更新が遅れると受信バッファ領域が上書きされてしまいます。CPU START_OF_PACKET Base Addressレジスタ
CPU発行のBUFFER_REQUESTメッセージに対して応答されるSTART_OF_PACKETメッセージを格納するためのメモリ領域を指定します。256Byteのアドレス境界(アドレスの下位8Bitが全部"0")から始まる物理メモリを連続256Byte確保し、その先頭アドレスをこのレジスタにセットします。
CPUへのSTART_OF_PACKETメッセージは、1メッセージで8Byteのデータ構成ですので、32メッセージ分となります。また、この領域は固定利用され、リングバッファとして管理されます。CPU NEW_ADDRESS Base Addressレジスタ
CPUに対するNEW_ADDRESSメッセージを格納するためのメモリ領域を指定します。256Byteのアドレス境界(アドレスの下位8Bitが全部"0")から始まる物理メモリを連続256Byte確保し、その先頭アドレスをこのレジスタにセットします。
CPUへのNEW_ADDRESSメッセージは、1メッセージで8Byteのデータ構成ですので、32メッセージ分となります。この領域も固定利用され、リングバッファとして管理されます。CPU Intervention Base Addressレジスタ
Interventionモードは、CPUがパケットの転送先の決定に介入するために用意されたモードです。アドレステーブルに登録されているそれぞれのMACアドレスに対して、パケットの送信先アドレスとして検出時にInterventionを行なうか、パケットの送信元アドレスとして検出時にInterventionを行なうかが指定できます。また、Interventionの設定はアドレステーブル情報の一部です。
Intervention設定が検出されたパケットはすぐには転送されずに、先ずCPUに対してBUFFER_REQUESTメッセージが発行されますので、CPUの判断によってそのパケットの廃棄もしくは所定のGalNetファミリーデバイスへの転送が可能になります。
このレジスタは、そのBUFFER_REQUESTメッセージを格納するためのメモリ領域を指定するために用意されています。2KByteのアドレス境界(アドレスの下位11Bitが全部"0")から始まる物理メモリを連続2KByte確保し、その先頭アドレスをこのレジスタにセットします。
CPUに対してのBUFFER_REQUESTメッセージは、1メッセージで8Byteのデータ構成ですので、256メッセージ分となります。このレジスタはCPU Buffer Base Addressと同様にシャドウレジスタ形式になっていますので、そのアクセスには同様の注意が必要です。Device Tableレジスタ
このレジスタにはGalNetシステムが占有する128MByteのメモリ空間にどのデバイスIDをもったGalNetファミリーデバイスが存在するかを指定します。
32Bitの各ビットがそれぞれのデバイスIDに対応しています。通常はCPUから初期設定しますが、CPU無しの動作モードでは各GalNetファミリーデバイスが他のデバイスの存在を自動検出してこのレジスタの内容を自動更新します。デバイスの存在の有無は、GalNetメッセージに対する応答の有無で判断されます。
また、CPUが存在する場合には、CPUのデバイスIDに相当するビットを"1"にしておく必要があります。リピータMIBカウンタレジスタ
ネットワーク管理サポート用に以下のMIBカウンタが各ポート毎に用意されています。
Bytes Received
Bytes Sent
Frames Received
Total Bytes Received
Total Frames Received
Broadcast Frames Received
Multicast Frames Received
CRC Error
Oversize Frames
Fragments
Jabber
Collision
Late Collision
Frames 64 Bytes
Frames 65-127 Bytes
Frames 128-255 Bytes
Frames 256-511 Bytes
Frames 512-1023 Bytes
Frames 1024-1522 Bytes
MAC Rx Error
Dropped FramesHP_EASEレジスタ
HP社が提唱している簡易ネットワークモニタ手法で、カウンタによる定期的なパケットサンプリングやエラーパケット検出時の送信元アドレスのレポート機能がサポートされています。
- PHY回路とクロック回路
-
2019-02-07
10M/100M PHY回路
10/100M PHY回路にはレベルワン社のLXT970を採用しました。
LXT970はフィルタ回路が内蔵されていますので、ネットワーク側のトランスに高次フィルタ付きのものを使用する必要がありません。但し、コモンモードフィルタはほとんどの場合で必要です。
また、SC802TXでは使用していませんが、このLXT970は100BASE-TXだけではなく100BASE-FXもサポートしているのも特徴の一つです。設計上の留意点は、アナログ系統とデジタル系統の電源を分離することです。
SC802TXは4層基板ですが、内層を切り分けして電源分離を行なっています。100M系の差動信号はその引き回しを極力短くしますが、差動信号ペアのそれぞれの信号ライン長が等しくなるような配線を心がけることも重要です。
信号の引き回しを考慮して、ネットワーク側のトランスもそのピン配置に様々なバリエーションのものが用意されていますので部品配置に応じて最適なピン配置のものを選定します。SC802TXのトランスにはハロー社のコモンモードフィルタ内蔵タイプを採用しました。
GT-48002AとLXT970はMII(Media Independent Interface)で接続されますが、GT-48002AはPHYアドレスをポート0は"1"、ポート1は"2"としてアクセスしますので、各々のLXT970のPHYアドレスはそのように設定しておく必要があります。LXT970ではこれらの設定を抵抗によって分圧した電圧の組み合わせで行ないます。
これはデバイスのピン数削減のための手法のようですが、少し混乱し易い仕様なので注意して下さい。
GT-48002AもLXT970もネットワークの通信モードを自動認識するオートネゴシエーションをサポートしています。クロック回路
クロック回路としてはLXT970用に25MHzの水晶発振器を搭載しています。また、MACアドレス格納用のEEPROMにはシリアルタイプのものを採用していますので、そのアクセス基準クロックとして、25MHzを256分周したものを使用しています。クロック回路もEMI対策として電源分離を施しています。
- コンフィギュレーション回路とモニタ回路
-
2019-02-07
概要
SC802TXはドライバーソフトウェアによるCPU制御下での動作の他に、CPU制御を必要としない独立動作も可能です。これらの動作設定を行なうために、これから説明するコンフィギュレーション回路が付加されています。
制御用I/Oポート
CPU制御の有無でSC802TXの動作を切り替えるためには、10/100M PHYのON/OFF制御が必要です。その理由は、CPU制御時にPHYが動作状態にあると、CPUによる初期化が完了する前にGT-48002AがGalNetデバイスの自動検出を始めてしまい、CPUシステム側メモリの内容破壊につながる可能性があるからです。
ところがGT-48002Aには汎用のI/Oポートが存在しませんので、別途制御用I/Oポートが必要になります。SC802TXではラティス社のオンボードプログラミング可能なFPGAであるispLSIでこの制御用I/Oポートを実現しています。
ispLSIはボードに実装したままの状態で回路変更が可能ですので、仕様変更への対応が簡単です。また、このデバイスはクロック指定やI/Oピンの割り振り指定に対しての柔軟性が高いのも特徴です。
制御用I/Oポートには、PHYのON/OFF制御機能の他、シリアルEEPROMのR/W制御機能、及びGT-48002Aへのハードウェアリセット機能が装備されています。PCIバスへの接続形態にすると回路が複雑になりますで、GT-48002AのDRAM空間にマッピングしてEDO-DRAM動作をエミュレーションする方式で実装しています。
MAC ADD格納用EEPROM
MACアドレス格納用EEPROMとして1Kbitの容量を持つザイコー社の24C01Aを採用しています。これはシリアルアクセスタイプのEEPROMですので制御用I/Oポートを経由してアクセスします。
ポート毎の仮想LANアダプタ動作のために、ここにはポート数分のMACアドレスが格納してあります(SC802TXでは2個、SC808Tでは8個)。
MACアドレスの書き込みはPCIバス経由で行なうこともできますが、書き込み専用のコネクタから直接書き込むことが可能です。設定用スイッチ
CPU制御の有無、10/100M PHYの動作モード指定(速度固定、全二重・半二重、オートネゴシエーション)、及びデバイスID等を設定するために各スイッチが用意されています。
GT-48002Aではその動作設定を抵抗によるプルアップ/プルダウンで行なわなければなりませんので、コパル社の小形3極スイッチを採用しました。これは見かけがポテンショメータによく似ています。LED表示
LEDは各ポート毎に以下の表示を行なっています。
- リンク(リンク時点灯)→緑
- 速度(100M時点灯)→緑
- 送信(送信時点灯)→緑
- 受信(受信時点灯)→緑
- 衝突(衝突時点灯)→赤
- 受信バッファ不足 (不足時点灯)→赤
GT-48002Aではポート数が少ない分デバイスのピン数に余裕があり、LED表示用のピンが独立して存在しますのでLED表示の実装は簡単です。
一方、GT-48001Aではその余裕がないためLED表示情報は128Bitのシリアルデータとして出力されていますので、外部にデコード回路が必要になります。、SC802TXでは使用していませんが、同様のシリアルデータ出力はGT-48002Aにも存在します。おわりに
皆さんご存知のように最近のネットワーク機器の価格低下には目をみは るものがあります。
ここで紹介したチップセットがそれに一役買ってい るのは言うまでもありません。一般の技術者の方々にとってネットワーク機器はまだまだブラックボックス的要素が強いかも知れませんが、今回の記事がそのブラックボックス解明のための何かのお役に立てば幸いです。
ブラックボックスのままでは技術的な工夫は難しいものです。
しかし、一歩でも二歩でもその中に踏み込めば何か良いアイデアが浮かんでくるのではないでしょうか。
技術者にとって不変なのは好奇心とチャレンジ精神です。
"学びてこれを破る"という日本古来の伝承精神に立ち返り、技術者としての腕を磨いて下さい。