SiTCP ライブラリ
ラッパーモジュール解説書

第 1.0.3 版

2022 年 6 月 1 日㈱Bee Beans Technologies

改版履歴
版数日付

内容

1.0.3

2022 年 6 月 1 日

初版

【目次】
1.

概要 ................................................................................................................................ 1

2.

SiTCP ライブラリ 各ファイルの概要 ................................................................................ 1

3.

ラッパーモジュールと SiTCP の入出力ポート対応表......................................................... 2

4.

タイマーモジュール .......................................................................................................... 55.

ネットワークパラメータの設定 ........................................................................................... 6

6.

5.1.

FORCE_DEFAULTn ............................................................................................. 6

5.2.

IP アドレス・TCP/RBCP ポート番号の設定 .............................................................. 7

5.2.1.

ラッパーモジュールでの初期設定 ...................................................................... 7

5.2.2.

IP アドレス・TCP/RBCP ポートの設定例（トップモジュール） ............................... 8

5.2.3.

IP アドレス・TCP/RBCP ポートの設定例（ラッパーモジュール） .......................... 8

TCP 通信の設定 ............................................................................................................. 96.1.

TCP サーバーのネットワーク設定 ............................................................................ 96.2.

通信エラー信号の接続............................................................................................. 97.

参考文献 ...................................................................................................................... 108.

関連ドキュメント ............................................................................................................. 10

1. 概要本文書は、内田智久博士が作成した文書「SiTCP 説明書」「SiTCP ライブラリ」の補足資料であり、SiTCP ライブラリと共に提供しているラッパーモジュール「WRAP_SiTCP_～.V」およびタイマーモジュール「TIMER.V」の解説書です。
SiTCP は内田智久博士が開発し、(株)Bee Beans Technologies（以下 BBT）が管理・配布を行っているネットワーク・プロセッサです。

2. SiTCP ライブラリ 各ファイルの概要
表 2-1 に SiTCP ライブラリおよびその他のファイルに関する説明を、図 2-1 にそれらを使用した場合のソースファイル階層構造を示します。ラッパーモジュールを使用することにより、SiTCPのポートを直接設定せず簡易的に扱うことができます。本文書では GitHub からダウンロード可能な Kintex7 の SiTCP ライブラリについて解説します。
表 2-1 SiTCP ライブラリ（Kintex7） ファイル一覧
ファイル名

説明

SiTCP_XC7K_32K_BBT_V110.V

SiTCP ライブラリ 入出力定義モジュール

SiTCP_XC7K_32K_BBT_V110.ngc

SiTCP ライブラリ本体（ネットリスト）

WRAP_SiTCP_GMII_XC7K_32K.V

SiTCP ライブラリ ラッパーモジュールTIMER.v

SiTCP 用タイマーモジュール

図 2-1 SiTCP ライブラリ（Kintex7）使用時のソースファイル階層構造

1

3. ラッパーモジュールと SiTCP の入出力ポート対応表
ラッパーモジュールと SiTCP の入出力ポートの対応について表 3-1～表 3-3 に示します。両方の欄にポート名が入っているものは、ラッパーモジュールと SiTCP のポートが wire で直接接続されています（欄が緑になっているポートはラッパーモジュール内で状況に応じて切り替えられます）。SiTCP のポートについては入出力ポート解説書を参照してください。
表 3-1 ラッパーモジュールおよび SiTCP 入出力ポート対応表（1/3）
SiTCP

ラッパーモジュール
CLK

CLK

RST

RST

―

TIM_1US―TIM_1MS―

TIM_1S―

TIM_1MFORCE_DEFAULTnFORCE_DEFAULTn―

MODE_GMII―

MY_MAC_ADDR[47:0]

EXT_IP_ADDR[31:0]

IP_ADDR_IN[31:0]―

IP_ADDR_DEFAULT[31:0]

EXT_TCP_PORT[15:0]

TCP_MAIN_PORT_IN[15:0]―

TCP_MAIN_PORT_DEFAULT[15:0]―

TCP_SUB_PORT_IN[15:0]―

TCP_SUB_PORT_DEFAULT[15:0]

EXT_RBCP_PORT[15:0]

RBCP_PORT_IN[15:0]―

RBCP_PORT_DEFAULT[15:0]―

TCP_SERVER_MAC_IN[47:0]―

TCP_SERVER_MAC_DEFAULT[47:0]―

TCP_SERVER_ADDR_IN[31:0]―

TCP_SERVER_ADDR_DEFAULT[31:0]―

TCP_SERVER_PORT_IN[15:0]―

TCP_SERVER_PORT_DEFAULT[15:0]

PHY_ADDR [4:0]PHY_ADDR[4:0]―

MIN_RX_IPG [3:0]

備考

4.参照

25.1.参照

5.2.参照5.2.参照5.2.参照6.1.参照表 3-2 ラッパーモジュールおよび SiTCP 入出力ポート対応表（2/3）
SiTCP

ラッパーモジュール
EEPROM_CS

EEPROM_CS

EEPROM_SK

EEPROM_SK

EEPROM_DI

EEPROM_DI

EEPROM_DO

EEPROM_DO

USR_REG_X3C[7:0]

USR_REG_X3C[7:0]

USR_REG_X3D[7:0]

USR_REG_X3D[7:0]

USR_REG_X3E[7:0]

USR_REG_X3E[7:0]

USR_REG_X3F[7:0]

USR_REG_X3F[7:0]

GMII_RSTn

GMII_RSTn

GMII_1000M

GMII_1000M

GMII_TX_CLK

GMII_TX_CLK

GMII_TX_EN

GMII_TX_EN

GMII_TXD[7:0]

GMII_TXD[7:0]

GMII_TX_ER

GMII_TX_ER

GMII_RX_CLK

GMII_RX_CLK

GMII_RX_DV

GMII_RX_DV

GMII_RXD[7:0]

GMII_RXD[7:0]

GMII_RX_ER

GMII_RX_ER

GMII_CRS

GMII_CRS

GMII_COL

GMII_COL

GMII_MDC

GMII_MDC

GMII_MDIO_IN

GMII_MDIO_IN

GMII_MDIO_OUT

GMII_MDIO_OUT

GMII_MDIO_OE

GMII_MDIO_OE

SiTCP_RSTSiTCP_RSTTCP_OPEN_REQ

OPEN_REQTCP_OPEN_ACK

MAIN_OPEN_ACK―

SUB_OPEN_ACK

TCP_ERROR

TCP_OPEN_ERROR
TCP_TX_OW_ERROR

TCP_CLOSE_REQ

CLOSE_REQ

TCP_CLOSE_ACK

CLOSE_ACK3

備考

6.2 参照表 3-3 ラッパーモジュールおよび SiTCP 入出力ポート対応表（3/3）
SiTCP

ラッパーモジュールTCP_RX_WC[15:0]

RX_FILL[15:0]

TCP_RX_WR

RX_WR

TCP_RX_DATA[7:0]

RX_DATA[7:0]

TCP_TX_FULL

TX_FULL―TX_FILL [15:0]

TCP_TX_WR

TX_WR

TCP_TX_DATA[7:0]

TX_DATA[7:0]

RBCP_ACTLOC_ACT

RBCP_ADDR[31:0]

LOC_ADDR[31:0]

RBCP_WD[7:0]

LOC_WD[7:0]

RBCP_WE

LOC_WE

RBCP_RE

LOC_RE

RBCP_ACKLOC_ACKRBCP_RD[7:0]

LOC_RD[7:0]4

備考4. タイマーモジュール
タイマーモジュール（TIMER.v）は SiTCP 内部で必要となるタイミング信号（表 4-1）を生成するモジュールです。各タイミング信号は周期ごとにシステムクロックの 1 パルス幅のみ 1 となります。
表 4-1 タイマーモジュールが出力するタイミング信号
信号名

説明TIM_1US

1us 周期のパルス信号

TIM_1MS

1ms 周期のパルス信号

TIM_1S

1 秒周期のパルス信号

TIM_1MIN

1 分周期のパルス信号

タイマーモジュールはラッパーモジュール内でインスタンシエーションされており（図 4-1）、システムクロックから各タイミング信号を生成します。使用する際は SiTCP を動作させるクロック周波数をパラメータ TIM_PERIOD に設定する必要があり、ラッパーモジュール内で直接設定する方法（図 4-2）と、トップモジュールでラッパーモジュールのインスタンスのパラメータとして設定する方法（図 4-3）があります。両方記述した場合、トップモジュールから設定した値が適用されます。
なお、TIM_PERIOD の設定可能範囲は 2～257 です。SiTCP のシステムクロックの推奨動作周波数については入出力ポート解説書を参照してください。
TIMER #(TIM_PERIOD - 8'd2)
TIMER(// System.CLK(CLK.RST(RST// Interrupts.TIM_1US(TIM_1US.TIM_1MS(TIM_1MS.TIM_1S(TIM_1S.TIM_1M(TIM_1MIN);),),// in : System clock// in : System reset),),),)// out : 1 us interval// out : 1 ms interval// out : 1 s interval// out : 1 min interval

図 4-1 ラッパーモジュール内のタイマーモジュール インスタンス
parameter [7:0] TIM_PERIOD = 8'd130;// = System clock frequency(MHz)

図 4-2 ラッパーモジュールでの TIM_PERIOD 設定例（130MHz）
WRAP_SiTCP_GMII_XC7K_32K #(.TIM_PERIOD(8'd200) // = System clock frequency(MHz), integer only)
SiTCP・・・

図 4-3 トップモジュールでの TIM_PERIOD 設定例（200MHz）

55. ネットワークパラメータの設定
5.1. FORCE_DEFAULTn
SiTCP は、FORCE_DEFAULTn を 0 に設定すると ForceDefault 状態となり、MAC アドレスが特定の値に固定されます。また、IP アドレス・TCP/RBCP ポート番号はラッパーモジュール内で初期値に設定されます（表 5-1、後述 5.2.1、および入出力ポート解説書を参照）。ト
ップモジュールでラッパーモジュールをインスタンシエーションした際、多くの場合はこのポートに DIP スイッチやピンヘッダの信号を接続します（図 5-1）。評価ボード上でのテスト等、1 台の SiTCP と PC の閉じたネットワークで使用する場合は、このポートに 1’b0 を設定してForceDefault 状態で使用することも可能です。
表 5-1

ForceDefault 状態

項目

※

設定値

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

IP アドレス(※)

192.168.10.16

TCP ポート番号(※)

24

RBCP ポート番号(※)

4660

MAC アドレスを除きこれらの値はレジスタの初期値です。ポートから任意の値を設定できます。
WRAP_SiTCP_GMII_XC7K_32K#(.TIM_PERIOD(8'd200)
SiTCP(.CLK(CLK_200M・・・.FORCE_DEFAULTn(DIP_SW[0]・・・

図 5-1)// = System clock frequency(MHz), ...

),// in : System Clock...

),// in : Load default parameters

FORCE_DEFAULTn と DIP スイッチの接続例

65.2. IP アドレス・TCP/RBCP ポート番号の設定
5.2.1. ラッパーモジュールでの初期設定

IP アドレスおよび TCP/RBCP ポート番号は、FORCE_DEFAULTn の値によらず、表5-2 に示す SiTCP のポートへ入力した値が常に使用されます。ラッパーモジュールの初期設定では、これらのポートに対し MY_IP_ADDR、MY_TCP_PORT、MY_RBCP_PORTが assign 文によって接続されています（図 5-2）。その結果、ラッパーモジュールの EXTから始まるポートへ 0 を設定すると SiTCP 内部レジスタの値（DEFAULT から始まる信号）が使用され、0 以外を設定するとポートへの設定値がそのまま使用されます。また、
FORCE_DEFAULTn が 0 の場合は、SiTCP 内部レジスタの値を接続することにより初期値となるようにしています。
表 5-2 SiTCP の IP アドレス・TCP/RBCP ポート番号 設定ポート
SiTCP ポート名

説明

IP_ADDR_IN[31:0]

IP アドレス

TCP_MAIN_PORT_IN[15:0]

TCP 通信で用いるポート番号

RBCP_PORT_IN[15:0]

RBCP（UDP 通信）制御で用いるポート番号

assignMY_TCP_PORT[15:0]=(~FORCE_DEFAULTn | (EXT_TCP_PORT[15:0]==16'd0)
EXT_TCP_PORT[15:0]);
assignMY_RBCP_PORT[15:0] =(~FORCE_DEFAULTn | (EXT_RBCP_PORT[15:0]==16'd0)
EXT_RBCP_PORT[15:0]);
assign
MY_IP_ADDR[31:0] =(~FORCE_DEFAULTn|(EXT_IP_ADDR[31:0]==32'd0)
EXT_IP_ADDR[31:0]);?

?

DEFAULT_TCP_PORT[15:0]:

DEFAULT_RBCP_PORT[15:0]:?

DEFAULT_IP_ADDR[31:0]:

図 5-2 ラッパーモジュール内 IP アドレス・TCP/RBCP ポート番号の assign 文

7

5.2.2. IP アドレス・TCP/RBCP ポートの設定例（トップモジュール）トップモジュールでラッパーモジュールをインスタンシエーションした際に設定値を入力することで、IP アドレス・TCP/RBCP ポート番号を変更することができます（図 5-3）。5.2.1 のassign 文を書き換えずにこの方法を採用した場合、IP アドレスは FORCE_DEFAULTn
が 0 の時は SiTCP 内部レジスタで設定されている IP アドレス（DEFAULT_IP_ADDR）が使用され、1 の時はラッパーモジュールに入力した設定値が使用されます。
なお、図 5-3 のように固定値と DIP スイッチの値を EXT_IP_ADDR へ接続した場合、IPアドレスの値を 192.168.10.0 から 192.168.10.15 の間で変更することができます。
WRAP_SiTCP_GMII_XC7K_32K#(.TIM_PERIOD(8'd200)
SiTCP(・・・.EXT_IP_ADDR({28'hc0a80a0, DIP_SW[3:0]}.EXT_TCP_PORT(16'h0019.EXT_RBCP_PORT(16'h1235・・・)// = System clock frequency...

),),),// in : IP address[31:0]// in : TCP port #[15:0]// in : RBCP port #[15:0]

図 5-3 ラッパーモジュール インスタンスにおける IP アドレス・TCP/RBCP ポート番号設定例
5.2.3. IP アドレス・TCP/RBCP ポートの設定例（ラッパーモジュール）ラッパーモジュール内の記述を以下の図 5-4、図 5-5 のように書き換えることで、FORCE_DEFAULTn の値によらず IP アドレス・TCP/RBCP ポート番号を変更可能です。
図 5-4 では IP アドレスが 192.168.10.10 に固定され、図 5-5 ではラッパーモジュールのインスタンスのポート EXT_IP_ADDR へ入力した設定値がそのまま使用されます。
TCP/RBCP ポート番号（MY_TCP_PORT、MY_RBCP_PORT）についても同様です。
assign

MY_IP_ADDR[31:0]＝ 32'hc0a80a0a;

図 5-4 assign 文による IP アドレス設定例（192.168.10.10 に固定）
assign

図 5-5

MY_IP_ADDR[31:0]＝ EXT_IP_ADDR[31:0];

assign 文による IP アドレス設定例（ラッパーモジュールへの入力による設定）

8

6. TCP 通信の設定
6.1. TCP サーバーのネットワーク設定
SiTCP はクライアントモード（入出力ポート解説書を参照）で通信を行う場合、接続先とするサーバー側の MAC アドレス、IP アドレスおよび TCP ポート番号を予め設定しておく必要があります。表 6-1 に示す SiTCP のポートに接続先のネットワークパラメータを設定します。ラッパーモジュールの初期設定では、これらのポートは名前が DEFAULT で終わるポートと接続されており、これによって SiTCP の内部レジスタの値が適用されます（内部レジスタ解説書を参照）。
また、接続先とするサーバー側のネットワークパラメータを固定する場合は、5.2.2 と同様にラッパーモジュール内で直接 SiTCP ポートに値を設定します（図 6-1）。
表 6-1 クライアントモード使用時における接続先ネットワークパラメータの入力ポート
SiTCP ポート名

説明

TCP_SERVER_MAC_IN[47:0]

接続先 MAC アドレス

TCP_SERVER_ADDR_IN [31:0]

接続先 IP アドレス

TCP_SERVER_PORT_IN [15:0]

接続先 TCP ポート番号

SiTCP_XC7K_32K_BBT_V110 SiTCP(.CLK・・・.TCP_SERVER_MAC_IN.TCP_SERVER_MAC_DEFAULT.TCP_SERVER_ADDR_IN.TCP_SERVER_ADDR_DEFAULT.TCP_SERVER_PORT_IN.TCP_SERVER_PORT_DEFAULT・・・(CLK),(48'h0200C0A80A0A),(),(32'hC0A80A0A),(),(16'h0018),(),// in : System clock// in : Client mode, ...
// out : Default value ...
// in : Client mode, ...
// out : Default value ...
// in : Client mode, ...
// out : Default value ...

図 6-1 接続先ネットワークパラメータの設定例

6.2. 通信エラー信号の接続
SiTCP は TCP 通信時に TCP_OPEN_ERROR と TCP_TX_OW_ERROR の 2 つのエラー信号を出力します。TCP_OPEN_ERROR はクライアントモードで SiTCP からセッション切断後、MSL タイマが満了する前に OPEN_REQ を 1 にした場合 1 となる信号、
TCP_TX_OW_ERROR は SiTCP 内部にある送信バッファへの上書きエラー時に 1 となる信号です（入出力ポート解説書を参照）。ラッパーモジュールではこの 2 つの論理和を取った
TCP_ERROR を出力しています（図 6-2）。
assign TCP_ERROR= TCP_OPEN_ERROR | TCP_TX_OW_ERROR;

図 6-2 TCP_ERROR の assign 文9

7. 参考文献
SiTCP 説明書

内田智久/BBTSiTCP ライブラリ

内田智久/BBT

8. 関連ドキュメント
SiTCP 入出力ポート解説書

BBT

SiTCP 内部レジスタ解説書

BBT10