Network Controler RTL8019AS

アイコン RTL8019ASというLSI
  Realtek製のRTL8019ASはNE2000というかつてNovellから発売されたネットワークインターフェースカードが原型になっています。その当時はNS(ナショナルセミコンダクタ)のDP8390とそのファミリのLSIで構成されていたのでした。(私はNE2000のオリジナルは見たことがありません)RTL8019ASはNE2000の上位互換品ですからDP8390にあったレジスタは全て継承してさらにRTL8019ASのオリジナルレジスタが付加されました。詳しくはマニュアルを参照してください。マニュアルといっても不親切なドキュメントで、信号のアクティブ論理レベルさえ記載されていません。
チップの高密度化が進みそれまで外部付けだったバッファRAMがRTL8019AS内部に入ってしまいました。これによって配線の本数が少なくなったしネットワークカードの小型化に貢献しています。今回作成した器材ではDP8390にあったレジスタ以外は触れていません。人づてに聞いたところによるとRTL8019AS内部には8051CPUが入っているとか・・・

アイコン ネットワークとLSIの融合
CPUからネットワークを見た場合どういうふうに見えるのでしょうか?
実は単純にメモリにしか見えません。それをRTL8019ASが担当しています。CPUはRTL8019ASなどのネットワークLSI同士がどうやって通信しているのか知りません。
CPUは常時RTL8019ASのBNRYレジスタとCURRレジスタを監視しています。(割り込みを使用した場合CPUは常時監視する必要はありません)ネットワークなら何もデータがきていない場合CURR=BNRY+1という関係になっています。この関係が崩れたと言うことはデータがバッファRAMに蓄積されたと言うことになります。レイヤ2より上の層は全てCPUが面倒を見ます。一般的にRTL8019ASは自分に割り当てられたMACアドレスしか反応しません。(設定によって変えられるが普通は自分宛のパケットとブロードキャスト以外は反応しない)

RTL8019AS内部は推奨設定時に1536バイトの送信バッファと14848バイトの受信バッファが入っています。それぞれ40H〜45Hページ(4000H〜45ffH)、46H〜7FHページ(4600H〜7fffH)までのアドレスが割り振られています。しかしRTL8019ASにはそんなに多くのアドレス線はありません。ではどうやってアクセスしているのでしょうか?
 そのカギを握るのがRSAR0,1とRBCR0,1です。RSAR0,1には受信データの読み込み開始アドレスを、RBCR0,1には転送バイト数をそれぞれセットします。そしてデータを読み込むのはリモートDMAポートから読み込みます。8bit接続の場合はRBCR0,1に設定した回数読み込みます。16bit接続の場合はRBCR0,1の1/2回連続して読み込みます。(注1)読み込む毎にRSAR0,1はインクリメントされRBCR0,1はデクリメントされます。RBCR0,1が0になれば転送終了です。
ここでまた疑問が生じます。イーサネットの場合送信されるデータのデータ数は固定ではありません。いったい何バイトのデータが届いたのか特定できません。これを特定するのがバッファ内のデータに隠されています。実は受信データの冒頭部分に受信ステータスと次のフレーム開始ページ番号と受信フレームのバイト数が格納されています。
 
+0 Recive Status 受信時のステータス(RSRがコピーされる)
+1 Next Packet Pointer 次のフレーム開始ページを示す。
+2 Recive Counter(L) 受信フレームのデータ数(下位8bit)
+3 Recive Counter(H) 受信フレームのデータ数(上位8bit)
+4〜+9 宛先MACアドレス 宛先MACアドレス
+10〜+15 送信元MACアドレス 送信元MACアドレス
+16 データタイプ データタイプ参照
+18〜 イーサネット層のデータ データ本体
初期化直後、BNRY=46H,CURR=47Hと設定します。この状態でフレームを受信するとCURR=BNRY+1という関係がくずれます。CPUは直ちに受信バッファの最初の4バイトを読み込みます。このアドレスはBNRY×100HとなりRSAR0,1にセットし、読み込むデータバイト数はRBCR0,1にセットするという仕組みです。
 4バイトを読み込んで正常なパケットであればBNRYを更新します。BNRYを直ちに更新しないと次のフレームを受信しそこなう可能性があるのでできるだけ早く更新します。BNRYを更新し終わってから受信したフレームの解析を行います。

注1:RTL8019ASを16bit接続した場合、ビックエンディアンとリトルエンディアンの設定がありますがリトルエンディアンでしか動作しないようです。今回は8bit接続だったので確認はしていませんが。

アイコン フレームの最低保証
  イーサネットフレームにはデータ数の制限があります。1フレーム60〜1514バイトと決まっています。厳密にはフレームの最後にCRCがつきますがLSIが送信時には勝手に付加して、受信時には勝手に取り除くのでCRCは含めません。送信時に最低保証に届かなかった場合はどうしましょう?フレームの最後に00Hを付加して60バイトに調整してください。1514バイトを超えてしまった場合はフレームを分けるしかありません。



トップページへもどる