SiTCP 入出力ポート解説書

第 1.0.4 版

2021 年 10 月 14 日

㈱Bee Beans Technologies

改版履歴
版数日付

1.0.4

2021/10/14

内容
初版

【目次】
1.

概要 .................................................................................................................................. 12.

信号の説明 ....................................................................................................................... 1
2.1.

システムインタフェース .............................................................................................. 1

2.2.

ネットワークパラメータ設定インタフェース ................................................................... 2

2.2.1.

FORCE_DEFAULTn ....................................................................................... 3

2.2.2.

TCP ポート関連信号 .......................................................................................... 3

2.2.3.

TCP_SERVER 関連信号 .................................................................................. 3

2.3.

EEPROM インタフェース .......................................................................................... 4

2.4.

ユーザ設定用レジスタ ............................................................................................... 4

2.5.

MII/GMII インタフェース .......................................................................................... 5

2.6.

TCP インタフェース・セッション関連信号 .................................................................... 6

2.6.1.

接続相手によるセッション切断時のシーケンス（サーバーモード）......................... 7

2.6.2.

SiTCP によるセッション切断時のシーケンス（サーバーモード） ........................... 7

2.6.3.

セッション開始および接続相手による切断時のシーケンス（クライアントモード） .... 8

2.6.4.

セッション開始および SiTCP による切断時のシーケンス（クライアントモード）...... 8

2.7.

2.7.1.

TCP データ送信................................................................................................. 92.7.2.

TCP データ受信............................................................................................... 10

2.8.

3.

TCP インタフェース・データ送受信関連信号 .............................................................. 9

RBCP インタフェース............................................................................................... 122.8.1.

RBCP インタフェースによる書き込み ................................................................ 122.8.2.

RBCP インタフェースによる読み込み ............................................................... 13

参考文献 ........................................................................................................................ 14

1. 概要本文書は、内田智久博士が作成した文書「SiTCP 説明書」「SiTCP ライブラリ」の補足資料であり、SiTCP の入出力ポートを解説するものです。SiTCP は内田智久博士が開発し、(株)Bee Beans Technologies（以下 BBT）が管理・配布を行っているネットワーク・プロセッサです。

2. 信号の説明
SiTCP の入出力ポートについて説明します。

2.1. システムインタフェース
表 2-1 にシステムインタフェース関連の信号を示します。
表 2-1 システムインタフェース関連信号
信号名

I/O

同期クロック説明
システムクロック 推奨動作周波数は 130MHz 以上

CLKI―（100Mbps 以下のリンクで動作させる場合 15MHz 以上を推奨）
SiTCP に対する非同期リセット（1 でリセット）

RSTI

TIM_1USI

1μs に CLK の 1 パルス幅 1 となるタイミング信号

TIM_1MSI

1ms に CLK の 1 パルス幅 1 となるタイミング信号

TIM_1SI

TIM_1MI

1 分に CLK の 1 パルス幅 1 となるタイミング信号 （※1）

SiTCP_RSTO

SiTCP のリセットおよび初期化中に 1 となる信号（※2）（※3）

非同期

CLK

1 秒に CLK の 1 パルス幅 1 となるタイミング信号※ 1： 現在使用していませんが、将来の互換性確保のため接続してください。
※ 2： RST 解除後も一定時間 1 を保持します。外部回路のリセットとして使用可能です。
※ 3： 内部レジスタによるリセット書き込み後にも一定時間 1 となります（SiTCP 内部レジスタ
解説書を参照）。

12.2. ネットワークパラメータ設定インタフェース
表 2-2 にネットワークパラメータ設定インタフェース関連の信号を示します。また、2.2.1～2.2.3に FORCE_DEFAULTn、TCP ポート関連信号および TCP_SERVER 関連信号の詳細を記載します。
表 2-2 ネットワークパラメータ設定インタフェース関連信号
I/O

同期クロックFORCE_DEFAULTn

I

CLK

0 で ForceDefault 状態に設定

MY_MAC_ADDR[47:0]

O

CLK

使用中の MAC アドレスの値

IP_ADDR_IN[31:0]

I

非同期IP アドレス設定 (※1)

IP_ADDR_DEFAULT[31:0]

O

CLK

IP アドレス用レジスタの値

TCP_MAIN_PORT_IN[15:0]

I

非同期

TCP メインポート設定 (※1)

TCP_MAIN_PORT_DEFAULT[15:0]

O

CLK

TCP メインポート用レジスタの値

TCP_SUB_PORT_IN[15:0]

I

非同期

TCP サブポート設定 (※1)

TCP_SUB_PORT_DEFAULT[15:0]

O

CLK

TCP サブポート用レジスタの値

RBCP_PORT_IN[15:0]

I

非同期

RBCP ポート設定 (※1)

RBCP_PORT_DEFAULT[15:0]

O

CLK

RBCP ポート用レジスタの値

TCP_SERVER_MAC_IN[47:0]

I

非同期

TCP_SERVER_MAC_DEFAULT[47:0]

O

CLK

TCP_SERVER_ADDR_IN[31:0]

I

非同期

TCP_SERVER_ADDR_DEFAULT[31:0]

O

CLK

TCP_SERVER_PORT_IN[15:0]

I

非同期

TCP_SERVER_PORT_DEFAULT[15:0]

O

CLK

PHY_ADDR[4:0]I

非同期

MIN_RX_IPG[3:0]

I

非同期

信号名

説明

接続先サーバーの MAC アドレス(※1)

接続先サーバーの MAC アドレス用レジスタの値
接続先サーバーの IP アドレス(※1)

接続先サーバーの IP アドレス用レジスタの値
接続先サーバーの TCP ポート(※1)

接続先サーバーの TCP ポート用レジスタの値
PHY デバイスの MIF アドレスを設定 (※2)
TCP 受信時の最小パケット間隔（IPG）※ 1： 対応する専用レジスタ（DEDAULT で終わる信号）に接続することで、初期値の設定および RBCP レジスタを介した確認・設定ができます。
※ 2： PHY デバイスのデータシートを確認の上、設定してください。

22.2.1.

FORCE_DEFAULTn
ForceDefault 状 態 を 設 定 す る た め の ポ ー ト （ 負 論 理 ） で す 。 こ の ポ ー ト の 値 は
SiTCP_RST 解除前に確定される必要があります。ForceDefault 状態とは、評価や設定を目的としたライセンスなしで動作可能な状態であり、1 台の SiTCP と PC の閉じたネットワークでのみ使用可能です。初期設定や設定した IP アドレス等が不明の場合にも使用できます。ForceDefault 状態では MAC アドレスが固定されるとともに、IP アドレス・ポート番号のレジスタ値は初期値に設定されます（表 2-3）。
表 2-3

ForceDefault 状態

項目

設定値

MAC アドレス02：00：C0：A8：00：10

IP アドレス(※)

192.168.10.16

TCP ポート番号(※)

24

RBCP ポート番号(※)

4660※ MAC アドレスを除きこれらの値はレジスタの初期値です。ポートから任意の値を設定できます。

2.2.2.

TCP ポート関連信号SiTCP が確立できるのは 1 セッションですが、2 ポートまで設定可能であり、一方をメインポート、もう一方をサブポートと称しています。メインポート番号は TCP_MAIN_PORT_INへ、サブポート番号は TCP_SUB_PORT_IN へ入力します。なお、1 ポートのみ使用する
場合はメインポートを使用し、サブポート番号は 0 を入力してください。また、サブポートはクライアントモード（後述 2.6 を参照）では使用できません。

2.2.3.

TCP_SERVER 関連信号
後述 2.6 のクライアントモードを使用する場合、TCP_SERVER で始まり IN で終わる信号（TCP_SERVER_MAC_IN 等）にサーバーとする接続先の MAC アドレス、IP アドレスおよび TCP ポート番号を設定してください。また、対応する専用レジスタ（TCP_SERVER で始まり DEDAULT で終わる信号）と接続することで、初期値の設定および RBCP レジスタを介した確認・設定ができます。
SiTCP 内部レジスタ 0xFFFF_FF10 の bit6（Client ARP）を 1 に設定している場合は、TCP_SERVER_MAC_IN の値は使用しません。詳細は「SiTCP 内部レジスタ解説書」を参照してください。

32.3. EEPROM インタフェース
表 2-4 に EEPROM インタフェース関連の信号を示します。これらは CLK の同期信号であり、AT93C46D（SiTCP の設定情報やライセンス情報を格納するための不揮発性メモリ）に接続します。接続する AT93C46D の ORG ピンは GND に接続し、X8 モードとして下さい。
なお、評価用として ForceDefault 状態でのみ使用する場合は EEPROM_DO に 1 を入力し、他のポートはオープンとしてください。
表 2-4 EEPROM インタフェース関連信号
信号名I/OEEPROM_CSO

AT93C46D の CS 端子に接続

EEPROM_SKO

AT93C46D の SK 端子に接続

EEPROM_DIO

EEPROM_DO

同期クロック説明

AT93C46D の DI 端子に接続

CLK

AT93C46D の DO 端子に接続
外部または FPGA にてプルアップしてくI

ださい。

2.4. ユーザ設定用レジスタ
表 2-5 にユーザ設定用レジスタ関連の信号を示します。これらは CLK の同期信号です。
EEPROM（AT93C46D）のレジスタ 0xFFFF_FC3C～0xFFFF_FC3F への設定値がこの領域に反映されます（ユーザが任意に値を設定できます）。FPGA へ設定が反映されるのは
SiTCP_RST が解除された後となります。
表 2-5 ユーザ設定用レジスタ関連信号
信号名

I/O

USR_REG_X3C[7:0]O

USR_REG_X3D[7:0]O

USR_REG_X3E[7:0]O

USR_REG_X3F[7:0]O

同期クロック説明
ユーザ設定用レジスタ
ユーザ設定用レジスタ

CLK

ユーザ設定用レジスタ
ユーザ設定用レジスタ4

2.5. MII/GMII インタフェース
表 2-6 に MII/GMII インタフェースに関連する信号を示します。
表 2-6 MII/GMII インタフェース関連信号
信号名

I/O

MODE_GMIII

同期クロック
非同期

説明
1 で PHY のレジスタへ 1000BASE-T を有効にする設定を行う（MII のみ使用する場合は 0 を設定）
MII/GMII 動作の選択信号 (※1)

GMII_1000M

I非同期

1 ： Gigabit Ethernet (GMII) ／ 0 ： 100Mbps
Ethernet(MII)

GMII_RSTnO

CLK

PHY デバイスのリセットに接続、0 でリセット
MII 動作の時は PHY デバイスの TX_CLK を入力

GMII_TX_CLK

I―(※2)
GMII 動作の時は FPGA 内で生成した GTX_CLKと同じ 125MHz を入力 (※3)

GMII_TX_ENO

PHY デバイスの TX_EN に接続

GMII_TXD[7:0]O

GMII_TX_ER

O

GMII_RX_CLKI

GMII_RX_DVI

GMII_RXD[7:0]

I

GMII_RX_ER

I

GMII_CRSI

GMII_COL

I

GMII_MDCO

PHY デバイスの MDC に接続

GMII_MDIO_IN

I

PHY デバイスの MDIO に接続

GMII_MDIO_OUT

O

GMII_MDIO_OE

O

GMII_TX_CLK

PHY デバイスの TXD[7:0]に接続 (※4)
PHY デバイスの TX_ER に接続―

PHY デバイスの RX_CLK に接続 (※2)
PHY デバイスの RX_DV に接続

GMII_RX_CLK

PHY デバイスの RXD[7:0]に接続 (※5)
PHY デバイスの RX_ER に接続

非同期

CLK

PHY デバイスの CRS に接続
PHY デバイスの COL に接続

3 ステートバッファを介して PHY デバイスの MDIOに接続
GMII_MDIO_OUT の 3 ステートバッファ制御信号※ 1 ： GMII では 1000BASE-T で動 作 し、 MII では それ 以外 （ 100BASE-TX または10BASE-T）で動作します。GMII 動作中は PHY の RX_CLK が 125MHz となります。
※ 2： PHY デバイスの TX_CLK と RX_CLK は FPGA のクロック入力専用ピンに接続してください。
※ 3： GMII と MII を切り替えて使用する場合は、BUFGMUX または同等のプリミティブを使用して GMII_TX_CLK と GTX_CLK（またはそのソースクロック）を切り替えてください。
※ 4： MII のみ対応の PHY 使用時 GMII_TXD[7:4]は使用しないため未接続としてください。
※ 5： MII のみ対応の PHY 使用時 GMII_RXD[7:4]は使用しないため 0 を入力してください。
52.6. TCP インタフェース・セッション関連信号
表 2-7 に TCP インタフェース・セッション関連信号を示します。
セッション相手からの接続要求で受動的にセッションを確立するモードをサーバーモード、
SiTCP から接続するモードをクライアントモードと呼びます。いずれのモードでも、セッションが確立すると OPEN_ACK（サーバーモードでは MAIN_OPEN_ACK、クライアントモードではSUB_OPEN_ACK）が 1、切断されると 0 になり、接続先からのセッション切断要求があるとCLOSE_REQ が 1 になります。セッション切断時のシーケンスを 2.6.1～2.6.4 に示します。
サーバーモードでセッションを切断する場合は CLOSE_ACK を 1 にします。CLOSE_ACK
は、CLOSE_REQ と MAIN_OPEN_ACK が 0 になるまで 1 を継続して下さい。セッション相手からの切断要求で切断する場合は CLOSE_REQ を直接または必要なタイミングの待ち合わせ回路を経由して CLOSE_ACK に接続します。
クライアントモードでセッションを開始する時は OPEN_REQ を 1 に設定し、切断する場合は0 に 設 定 し ま す （ OPEN_REQ を 1 に し た 後 に セ ッ シ ョ ン が 確 立 で き な い 場 合 は 、
TCP_OPEN_ERROR が 1 となります）。CLOSE_REQ が 1 になった場合は接続先からセッシ
ョン切断要求が送られてきているため、OPEN_REQ を 0 にすることが求められます。なお、クライアントモードでは TCP メインポートのみ使用可能であり、サブポートは使用できません。
接続先からのセッション切断要求を受信しても、SiTCP は送信バッファが空になるまでセッションを維持しようとします。この時、データを送信すると相手から強制的にセッションを切断されることがありますが、異常ではありません。
また、クライアントモードで使用する場合は、サーバーMAC アドレス・IP アドレス・TCP ポート番号を設定する必要があります（2.2 参照）。
表 2-7 TCP インタフェース・セッション関連信号
信号名

I/O

OPEN_REQI

MAIN_OPEN_ACKO

メインポートでのセッション確立時に 1 となる信号

SUB_OPEN_ACK

O

サブポートでのセッション確立時に 1 となる信号（※2）

TCP_OPEN_ERRORO

同期クロック説明
クライアントモードでセッション開始要求時に 1、セッション切断要求時に 0 とする信号（※1）

CLK

クライアントモードで SiTCP からセッション切断後、MSL タイマ（※3）が満了する前に OPEN_REQ を1 にした場合 1 となる信号

CLOSE_REQO

CLOSE_ACKI

セッション切断要求（FIN）の受信時に 1 となる信号
サーバーモードでセッション切断を指示する場合に 1とする信号※ 1： サーバーモードでは 0 を入力してください。
※ 2： クライアントモード時はサブポートを使用できないため変化しません（0 固定）。
※ 3： SiTCP 内部レジスタ解説書を参照してください。
62.6.1.

接続相手によるセッション切断時のシーケンス（サーバーモード）
サーバーモードでは接続相手から切断要求があると CLOSE_REQ が 1 になり、その後MAIN/SUB_OPEN_ACK が 0 となります。CLOSE_REQ は直接、または必要なタイミン
グの待ち合わせ回路を経由して CLOSE_ACK に接続してください（図 2-1）。

図 2-1 接続相手によるセッション切断時のシーケンス（サーバーモード）

2.6.2.

SiTCP によるセッション切断時のシーケンス（サーバーモード）
サーバーモードで SiTCP からセッションを切断する場合は CLOSE_ACK を 1 にします。
CLOSE_ACK は MAIN/SUB_OPEN_ACK および CLOSE_REQ が 0 になるまで 1 を継続して下さい（図 2-2）。

図 2-2 SiTCP によるセッション切断時のシーケンス（サーバーモード）

72.6.3.

セッション開始および接続相手による切断時のシーケンス（クライアントモード）
クライアントモードにおいて、接続相手から切断要求があると CLOSE_REQ が 1 になります。このとき、OPEN_REQ を 0 にすることによって要求に応答します。（図 2-3）。

図 2-3 接続相手によるセッション切断時のシーケンス（クライアントモード）

2.6.4.

セッション開始および SiTCP による切断時のシーケンス（クライアントモード）
クライアントモードにおいて、SiTCP からセッションを切断する場合は OPEN_REQ を 0にします（図 2-4）。

図 2-4 SiTCP によるセッション切断時のシーケンス（クライアントモード）

8

2.7. TCP インタフェース・データ送受信関連信号
表 2-8 に TCP インタフェース・データ送受信関連信号を示します。
表 2-8 TCP インタフェース・データ送受信関連信号
信号名

I/O

同期クロック

説明

TX_WR

I

1 で送信データ書き込みイネーブル

TX_DATA[7:0]

I

送信データ

TX_FULL

O

送信バッファの Almost Full フラグ確立時に1 となる信号（※1）

TCP_TX_OW_ERROR

送信バッファへの上書きエラー時に 1 となる信O
CLK号（※2）

TX_FILL[15:0]

O

送信バッファに格納されているデータバイト数

RX_WR

O

1 で受信データ有効

RX_DATA[7:0]

O

受信データ

RX_FILL[15:0]

I

受信バッファに格納されているデータバイト数※ 1： 送信データ格納数が「送信バッファ容量（32KB）-32Byte」を超えると 1 になる信号です。
※ 2： 送信データ格納数が「送信バッファ容量（32KB）-16Byte」を超えると 1 になる信号です。

2.7.1.

TCP データ送信TCP データ送信のフロー制御について図 2-5 に示します。TCP コネクションが確立しMAIN/SUB_OPEN_ACK=1 の時のみデータの書き込みが可能です。送信データの書き込みは同期 FIFO メモリと同じインタフェースであり、TX_WR と TX_DATA[7:0]を使用します。CLK に同期させ送信データを TX_DATA[7:0]に設定し、TX_WR=1 にすると送信バッファに書き込まれます。同期回路ですので CLK の立ち上がりエッジ毎に 1 バイトのデータと見なされます。
TCP コネクション確立状態、かつ TX_FULL=0 の時にデータを書き込むことができます。
TX_FULL=1 になった場合、8 クロック以内に TX_WR=0 にして書き込みを中断してください。TX_FULL=0 になったら書き込みを再開することが出来ます。TCP コネクションが確立されている間に以上を繰り返してください。

9図 2-5 TCP データ送信のフロー制御

2.7.2.

TCP データ受信
SiTCP の TCP 受信機能を使用する場合、Xilinx 社のツールである ISE Design Suiteの [Core Generator]-[FIFO Generator] 、 ま た は Vivado Design Suite の [IPCatalog]-[FIFO Generator]で作成した受信バッファ用の FIFO メモリをユーザ回路とSiTCP 間に配置し、各信号を接続します。FIFO メモリの設定について表 2-9 に、TCP データ受信のフロー制御について図 2-6 に示します。
SiTCP は RX_DATA[7:0]に受信データを受信順に置き、RX_WR=1 にして有効データを受信したことを通知します。RX_DATA[7:0]を同期 FIFO の書き込みデータ端子に、RX_WR を書き込みイネーブル端子に接続してください。
また、RX_FILL[15:0]により受信バッファのデータ格納数をデータ受信後 8 クロック以内に通知してください（これが TCP ウィンドウサイズとして反映されます）。RX_FILL[15:0]は同期 FIFO の Data count 端子に下位ビットから接続し、未使用ビットは全て 1 を設定してください。例えば、受信 FIFO が 16KB の容量の時、Data count 端子は 14bit になります。
従って RX_FILL[13:0]= Data count[13:0]を接続し、RX_FILL [15:14]のビットに 1 を設定してください（Verilog HDL は RX_FILL [15:14] = 2’b11;となります）。
TCP 受信機能を使用しない場合は RX_FILL [15:0]に 0 を設定してください。他の値を設定しても動作しますが 0 設定を奨励します。
表 2-9 FIFO メモリ設定項目設定

書き込みデータ bit 幅8bit

Data count オプション

有効、bit 幅を最大に設定

FIFO 深さ4KB 以上 64KB 以下（2 のべき乗）

10図 2-6 TCP データ受信のフロー制御

11

2.8. RBCP インタフェース
表 2-10 に RBCP インタフェース関連信号を示します。RBCP インタフェースは、UDP のコマンドでバスマスタとして動作するインタフェースです。RBCP インタフェースも CLK に同期して動作します。一つのコマンドで最大 255 個のバスサイクルが発生します。一つのコマンドが開始すると LOC_ACT が 1 になり、一つのコマンドが終了するまで 1 を継続します。コマンドが終了するかタイムアウトすると LOC_ACT＝0 になります。タイムアウト時間はバスサイクル数に関わらず、1 コマンドあたり約 100ms です。バスサイクルは LOC_WE または LOC_RE が 1 ク
ロック 1 になったところから、ユーザ回路が LOC_ACK を 1 クロック 1 にするところまでです。
なお、RBCP アドレス 0xFFFF0000 から 0xFFFFFFFF は SiTCP 内部レジスタ用に予約されていますので（SiTCP 内部レジスタ解説書を参照）、このアドレス以外を使用してください。
表 2-10 RBCP インタフェース関連信号
信号名

I/O

同期クロック説明

LOC_ACTO

バスサイクルが実行中に 1 となる信号

LOC_ADDR[31:0]

O

アクセス中のアドレス

LOC_WEO

書き込みアクセス時に 1 となる信号

LOC_WD[7:0]O

LOC_REO

読み込みアクセスに 1 となる信号

LOC_RD[7:0]I

読み込みデータ

LOC_ACKI

1 でアクセス終了応答

2.8.1.

CLK

書き込みデータ

RBCP インタフェースによる書き込み
RBCP インタフェースによる書き込みアクセスを図 2-7 に示します。SiTCP は PC からの書 き 込 み コ マ ン ド を 受 信 し た 時 、 LOC_ADDR[31:0] に ア ク セ ス す る ア ド レ ス 、
LOC_WD[7:0]に書き込みデータを設定すると同時に、LOC_WE=1 として書き込み動作であることをユーザ回路に通知します。ユーザ回路は該当するアドレスへの書き込みが終了したら LOC_ACK を 1 クロックのみ 1 にして応答する必要があります。
該当回路がないアドレスをアクセスした場合等は LOC_ACK が 0 のままになりますが、待ち時間が約 100msec を超えた時点で SiTCP はエラーと判断してバスサイクルを終了し、PC に対してエラーを通知するパケットを送ります。

12

図 2-7 RBCP インタフェースによる書き込みアクセス

2.8.2.

RBCP インタフェースによる読み込み
RBCP インタフェースによる読み込みアクセスを図 2-8 に示します。SiTCP は PC からの読み込みコマンドを受信した時、LOC_ADDR[31:0]にアクセスするアドレスを設定すると同時に LOC_RE=1 として読み込み動作であることをユーザ回路に通知します。ユーザ回
路は該当するアドレスのデータを LOC_RD[7:0]に設定すると同時に LOC_ACK を 1 クロックのみ 1 にして応答する必要があります。
なお、読み込みの場合も ACK 応答時間が約 100msec を超えると SiTCP はエラーと判断してバスサイクルを終了し、PC へエラーを通知するパケットを送ります。

図 2-8 RBCP インタフェースによる読み込みアクセス

13

3. 参考文献
SiTCP 説明書 内田智久／BBTSiTCP 内部レジスタ解説書 BBT14