SiTCPXG 説明書

第 1.6.4 版

2023 年 1 月 6 日㈱Bee Beans Technologies

改版履歴
版数

日付

内容

1.0

2020/10/19

初版

1.1

2020/10/30

0xFFFF_FF08～0xFFFF_FF0F の定義変更

1.2

2020/11/17

8 推奨 FPGA の追加

1.3

2021/04/01

9 使用リソースの追加
表 3-8 その他の信号
ForceDefault 状態の補足説明を訂正
4.1 EEPROM 空間
コマンド 1 回で書き込み可能な最大 Byte 数を追記
4.2.4 SiTCPXG Version register

1.4.6

2021/11/19

説明文の表現をわかりやすく修正
4.2.13 TCP Timeout(Connecting) register
セッション切断時にも使用する(V2 以降)
9 使用リソース
SiTCPXG_XC7V_128K_V2 の使用リソースに更改
10 リリース履歴新設
表 8-1 推奨 FPGA

1.5.3

2021/12/08

ライブラリ名の末尾を任意に変更
選定上の注意事項の追加
4.2.4～4.2.20
レジスタの初期値を追記
表 8-1 推奨 FPGAXC7K70T には対応パッケージがないため対象外に変更
Zynq UltraSCALE+ RFSoC Gen1 を追加

1.6.4

2023/01/06

9. 使用リソース
V3 の値に更新
表 10-1 各バージョンの修正履歴
V3 を追加
10.1～10.3
バージョンレジスタの詳細を新設

【目次】
1.

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

2.

SiTCPXG の接続 ............................................................................................................. 13.

信号の説明 ....................................................................................................................... 2

4.

3.1.

XGMII インタフェース ............................................................................................... 2

3.2.

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

3.3.

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

3.4.

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

3.4.1.

TCP セッションの確立と切断 .............................................................................. 4

3.4.2.

TCP 送信データ................................................................................................. 6

3.4.3.

TCP 受信データ................................................................................................. 7

3.5.

その他の信号............................................................................................................ 9

3.6.

ライブラリ固有信号 .................................................................................................. 10

レジスタマップ ..................................................................................................................11
4.1.

EEPROM 空間 .......................................................................................................11

4.2.

SiTCPXG レジスタ空間 .......................................................................................... 12

4.2.1.

User Version register .................................................................................... 12

4.2.2.

User Identifier register ................................................................................. 12

4.2.3.

SiTCPXG Identifier register......................................................................... 13

4.2.4.

SiTCPXG Version register ............................................................................ 13

4.2.5.

Control register ............................................................................................. 13

4.2.6.

MAC Address register ................................................................................... 13

4.2.7.

IP Address register ........................................................................................ 13

4.2.8.

TCP Port Number register ........................................................................... 14

4.2.9.

TCP maximum segment size register .......................................................... 14

4.2.10. UDP Port Number register........................................................................... 14
4.2.11. TCP Keepalive Time(buffer not empty) register ......................................... 14
4.2.12. TCP Keepalive Time(buffer empty) register ............................................... 14
4.2.13. TCP Timeout(Connecting) register .............................................................. 14
4.2.14. TCP Timeout(Disconnect) register............................................................... 14
4.2.15. TCP Maximum Segment Lifetime register ................................................. 15
4.2.16. TCP Retransmission time register............................................................... 15
4.2.17. TCP Server MAC Address register .............................................................. 15
4.2.18. TCP Server IP Address register ................................................................... 15
4.2.19. TCP Server Port Number register ............................................................... 15
4.2.20. Transmission rate register ........................................................................... 16

5.

SiTCPXG のインプリメント .............................................................................................. 17
5.1.

10G Ethernet PCS/PMA の IP コア生成 .............................................................. 17

5.2.

10G Ethernet PCS/PMA(10GBASE-R/KR)の IP コアの接続 .............................. 19

6.

EEPROM の変更方法 ................................................................................................... 207.

障害対応 ........................................................................................................................ 21
7.1.

送信転送速度が著しく低い ...................................................................................... 21

7.1.1.

SiTCPXG の設定の誤り .................................................................................. 21

7.1.2.

データ転送経路の障害 ..................................................................................... 21

7.1.3.

データ転送経路の遅延 ..................................................................................... 21

7.1.4.

PC の受信性能がネックの場合 ........................................................................ 21

7.2.

SFP に接続される極性の反転................................................................................. 22

8.

推奨 FPGA .................................................................................................................... 22

9.

使用リソース ................................................................................................................... 22

10.

リリース履歴 ............................................................................................................... 23

10.1. FPGA ファミリ・コード .............................................................................................. 23
10.2. オプション・コード ..................................................................................................... 24
10.3. バージョン・コード..................................................................................................... 24

1. 概要本文書は、SiTCP を 10GbE 用に変更した SiTCPXG について説明するものです。本文書では
SiTCP については理解していることを前提に説明します。

2. SiTCPXG の接続
SiTCPXG は XGMII で 10GbE の PCS/PMA に接続して使用します。SiTCPXG のクロック
は、送受信共通の XGMII クロックである 156.25MHz の単一クロックです。TCP、RBCP いずれ
もこのクロックに同期して動作します。
なお、接続する PCS/PMA は、ザイリンクス社から提供される 10G Ethernet PCS/PMA を想定しています(10GBASE-R 用)。
SiTCPXG の設定情報およびライセンス情報格納用メモリとして AT93C46D を接続して下さい。
独立したネットワーク上で、性能評価のために一つの SiTCPXG ライブラリを搭載した装置を使用する場合には、このメモリは必要ありません(ForceDefault 状態での使用となります)。
SiTCPXG ライブラリは、表 2-1 に示すファイルで構成されます。
表 2-1 SiTCPXG ライブラリ・ファイル
ファイル名
SiTCPXG_xxxx_xxxx_Vx.edf
SiTCPXG_xxxx_xxxx_Vx.v
TIMER_SiTCPXG.v
WRAP_SiTCPXG_xxxx_xxx.v

説明
SiTCPXG 本体です。FPGA のファミリ名、送信バッファサイズ、バージョン
でファイル名が構成されます。
SiTCPXG 本体の入出力を定義したファイルです。edif ファイルと同名のVerilog ファイルです。
SiTCPXG のタイミングを生成するモジュールです。
クロック周波数が 156.25MHz であることを前提にしています。
SiTCPXG を使用しやすくするための wrapper です。
ファイル名に FPGA のファミリ名、送信バッファサイズが入ります。

※x で示される文字数は目安であり変更される場合があります。

1

3. 信号の説明
本章では、ライブラリ本体、および wrapper のポートについて説明します。

3.1. XGMII インタフェース
10G Ethernet PCS/PMA に接続する信号です。XGMII_CLOCK は、XGMII の送受信クロックですが、SiTCPXG 全体もこのクロックに同期しています。
表 3-1 XGMII インタフェース信号
信号名

入出力

説明
XGMII の送受信共通クロックであり、

XGMII_CLOCK入力

SiTCPXG 全体のクロック
全入出力信号はこのクロックに同期しています。

XGMII_RXC[7:0]入力

受信コントロール信号

XGMII_RXD[63:0]

入力

受信データ

XGMII_TXC[7:0]出力

送信コントロール信号

XGMII_TXD[63:0]

出力

送信データ

3.2. EEPROM インタフェース
SiTCPXG の 設 定 情 報 や ラ イ セ ン ス 情 報 を 格 納 す る た め の 不 揮 発 性 メ モ リ で あ る
AT93C46D に接続するためのポートです。接続する AT93C46D の ORG ピンは GND に接続し X8 モードとして下さい。
なお、評価用として ForceDefault 状態でのみ使用する場合は EEPROM_DO に 1 を入力
し、他のポートはオープンとして下さい。
表 3-2 EEPROM インタフェース信号
信号名

入出力

説明

EEPROM_CS

出力

AT93C46D の CS 端子に接続

EEPROM_SK

出力

AT93C46D の SK 端子に接続

EEPROM_DI

出力

AT93C46D の DI 端子に接続

EEPROM_DO

入力

AT93C46D の DO 端子に接続
外部または FPGA でプルアップして下さい。

2

3.3. RBCP インタフェース
RBCP インタフェースは、UDP のコマンドでバスマスタとして動作するインタフェースです。
RBCP インタフェースも、XGMII_CLOCK に同期して動作します。SiTCP と互換となっています。一つのコマンドで最大 255 個のバスサイクルが発生します。一つのコマンドが開始すると RBCP_ACT が 1 になります。一つのコマンドが終了するまで RBCP_ACT は 1 を継続します。コマンドが終了するかタイムアウトすると RBCP_ACT=0 になります。タイムアウト時間
はバスサイクル数に関わらず、1 コマンドあたり 256ms です。
バスサイクルの始まりは、RBCP_WE または RBCP_RE が 1 クロック 1 になったところから、ユーザ回路が RBCP_ACK を 1 クロック 1 にするところまでです。

図 3-1 RBCP リードアクセス

図 3-2 RBCP ライトアクセス3表 3-3 RBCP インタフェース信号
信号名

入出力

説明

RBCP_ACT

出力

バスサイクルが実行中

RBCP_ADDR[31:0]

出力

アドレス

RBCP_WE

出力

書き込みアクセス開始

RBCP_WD[7:0]

出力

書き込みデータ

RBCP_RE

出力

読出しアクセス開始

RBCP_ACK

入力

アクセス終了応答

RBCP_RD[7:0]

入力

読出しデータ3.4. TCP インタフェース
TCP インタフェースは SiTCP と同様にストリーミング・データです。データの入出力のインタ
フェースはビット幅の拡大に伴い変更しています。TCP インタフェースも XGMII_CLOCK に同期して動作します。

3.4.1.

TCP セッションの確立と切断
セッションを SiTCPXG から確立しないモードをサーバーモード、SiTCPXG から接続するモードをクライアントモードと呼びます。いずれのモードでも、セッションが確立すると
USER_SESSION_ESTABLISHED が 1 になり、セッションが切断されると 0 になります。
また、相手からの切断要求があると USER_SESSION_CLOSE_REQ が 1 になります。
サーバーモードでセッションを切断する場合は USER_SESSION_CLOSE_ACK を 1 にし ま す 。 USER_SESSION_CLOSE_ACK は 、 USER_SESSION_CLOSE_REQ と
USER_SESSION_ESTABLISHED が 0 になるまで 1 を継続して下さい。SiTCPXG からセッションを切断しない場合は、USER_SESSION_CLOSE_REQ は直接または、必要なタイミングの待ち合わせ回路を経由して USER_SESSION_CLOSE_ACK に接続します。
クライアントモードでセッションを開始する時は、USER_SESSION_OPEN_REQ を 1 にします。また、切断する場合は、USER_SESSION_OPEN_REQ を 0 にします。
クライアントモードで USER_SESSION_CLOSE_REQ が 1 になった場合は、接続先からセッション終了が送られてきているので、USER_SESSION_OPEN_REQ を 0 にすることが求められます。
相手からのセッション終了を受信しても SiTCPXG は、送信バッファが空になるまでセッシ
ョンを維持しようとします。この時、データを送信すると相手から強制的にセッションを切断されることがありますが、異常ではありません。
なお、現仕様では、クライアントモードで使用する場合、接続先の IP アドレスだけでなく
MAC アドレスも設定する必要があります。
4

図 3-3 接続相手によるセッション切断時のシーケンス(サーバーモード)

図 3-4 SiTCPXG によるセッション切断時のシーケンス(サーバーモード)

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

図 3-6 SiTCPXG によるセッション切断時のシーケンス(クライアントモード)5

表 3-4 TCP インタフェース・セッション関連信号
信号名

入出力

説明
セッション開始要求信号

USER_SESSION_OPEN_REQ

入力

USER_SESSION_ESTABLISHED

出力

セッション確立表示

USER_SESSION_CLOSE_REQ

出力

セッション終了要求表示(FIN の受信)

USER_SESSION_CLOSE_ACK

入力

サーバーモードのセッション終了指示

3.4.2.

サーバーモードでは 0 に固定

TCP 送信データ
SiTCP と同様に送信バッファはライブラリ内にあります。SiTCPXG ではこのバッファに最大 64bit バスで書き込みできます。最大性能を出すためには、書き込みのバス幅を 64bitにする必要があります。バス幅は 8bit 単位に 1Byte から 8Byte まで 1Byte 単位かつ動的に変更できます。
USER_TX_B で 1～8 を設定することで Byte 数を指定します。0 を設定すると送信デー
タの書き込みは行いません。また、9～F は設定禁止です。データは USER_TX_D で設定しますが、USER_TX_D のバス幅は 64bit なので、64bit 未満の場合は MSB から詰めて使用します。USER_TX_D の送出順序は、データの MSB 側の Byte データが先に送出されます。送信バッファの Almost Full を示す USER_TX_AFULL が 1 になった場合は、
16 クロック以内に書き込みを中断して下さい。

図 3-7 TCP 送信データのフロー制御
表 3-5 TCP データ送信関連信号
信号名

入出力

説明

USER_TX_AFULL

出力

送信バッファの Almost Full

USER_TX_B[3:0]入力

送信データ数(送信しない場合は 0 に設定)

USER_TX_D[63:0]

入力

送信データ

6

3.4.3.

TCP 受信データ
SiTCP と同様に受信バッファはユーザ回路内に設ける必要があります。SiTCPXG では、64bit バスでの書き込みが必要となります。また、書き込みは Byte レーン独立に行う必要が あ る た め 、 通 常 の FIFO は 使 用 で き ま せ ん 。 そ こ で 書 き 込 み ア ド レ ス(USER_RX_WADR)と読出しアドレス(USER_RX_RADR)を用いたインタフェースとなっています。読出しアドレスはユーザ回路内に設けて下さい。いずれのアドレスも Byte 単位
で、書き込んだ Byte 数が加算されます。読出しアドレスは、そのアドレスまで読出しが終わったものとしてバッファの空き容量を計算するために SiTCPXG が使用します。読出しアド
レスの初期化は書き込みアドレスの値をコピーして下さい。
Xilinx のブロックメモリでは、書き込みと読出しのバス幅を別々に設定できます。この機能を用いることで読み出しのバス幅を固定することができます。書き込みと読出しのバス幅が異なる場合、データバスの LSB 側が若番のアドレスとなりますが、SiTCPXG では MSB
側が先に受信したデータとなります。そのため、データバスを固定して使用する場合に接続が容易になるよう wrapper で、読出しのバス幅に応じて Byte レーンを入れ替えています。
バス幅を固定して使用する場合、wrapper の RxBufferSize パラメータにバス幅を設定して下さい。8bit バス固定の場合は”Byte”、16bit 固定の場合は”Word”、32bit 固定の場合
は”LongWord”を設定して下さい。なお、読出しのバス幅未満での読出し回路を設けない
限り、送信データはバス幅の整数倍とする必要があります。
USER_RX_CLR_REQ は、書き込みバッファを 8Byte アラインに整列させます。この機能はバッファに書き込む可能性がある期間は行えません。USER_RX_CLR_ENB が 1 の期間中はクリアを行うことができます。多くのアプリケーションでは USER_RX_CLR_ENBの 1 で USER_RX_CLR_REQ を 1 とし、USER_RX_RADR に USER_RX_WADR をコピーします(受信バッファのクリア)。
USER_RX_SIZE は、TCP における最大ウインドウとなります。[バッファサイズ-16]以下の固定値を入力して下さい。
USER_RX_WADR は Byte 単位で次に書き込みを開始するアドレスを示しています。従って、バッファへの書き込みデータは、USER_RX_WADR の bit15～bit3 が書き込む
64bit でのアドレスを指定し、USER_RX_WENB が書き込む Byte レーンを指定、書き込
むデータを USER_RX_WDAT で指定します。SiTCPXG ライブラリからの出力では MSB
側 が 若番 のア ドレ スとなり ます 。 書 き込 みイネーブ ル とデー タの Byte 位置 関 係は
SiTCPXG ラ イ ブ ラ リ の 場 合 も wrapper の 場 合 も 同 じ で 、 USER_RX_WENB[7] がUSER_RX_WDAT[63:56] の 書 き 込 み イ ネ ー ブ ル で あ り 、 USER_RX_WENB[0] が
USER_RX_WDAT[7:0]の書き込みイネーブルとなります。

7

表 3-6 TCP データ受信関連信号
信号名

入出力

説明
最大受信ウインドウサイズ

USER_RX_SIZE[15:0]

入力

バッファサイズ－16 以下の固定値を設定
受信未使用時は 16’hFFF0 を設定
USER_RX_WADR の初期化可能期間表示

USER_RX_CLR_ENB

出力

USER_RX_CLR_REQ

入力

USER_RX_WADR[15:0]

出力

次回書き込み開始アドレス(Byte 単位)

USER_RX_WENB[7:0]

出力

書き込みイネーブル

USER_RX_WDAT[63:0]

出力

書き込みデータ

USER_RX_RADR[15:0]

入力

USER_RX_WADR の初期化要求
受信未使用時は USER_RX_CLR_ENB を接続

読出しアドレス
未使用時は USER_RX_WADR[15:0]を接続

表 3-7 データ受信バッファ設定バラメータ(wrapper ファイルのみ)
パラメータ名

設定値

説明
デフォルト

“LongLong”

64bit 固定バス幅または可変バス幅用設定
ライブラリのバス並びと同じ64bit のデータの並びはネットワークオーダー

RxBufferSize“LongWord”“Word”“Byte”

32bit バス固定用設定
32bit のデータの並びはネットワークオーダー
16bit バス固定用設定
16bit のデータの並びはネットワークオーダー
8bit バス固定用設定※ネットワークオーダー:先に受信した Byte が上位 Byte となる並び

8

3.5. その他の信号
この章では、今までに説明していない SiTCPXG ライブラリと wrapper ファイルに共通の信号について説明します。
表 3-8 その他の信号
信号名

入出力

RSTs

入力

説明
1 で SiTCPXG の初期化を行います。
XGMII_CLOCK 同期信号として下さい。
SiTCPXG の接続先に対する初期化信号です。

SiTCP_RESET_OUT

出力

SiTCPXG が初期化中は 1 となります。
XGMII_CLOCK 同期出力です。

FORCE_DEFAULTn

入力

0 で ForceDefault 状態になります。
この値は RBCP レジスタの 0xFFFFFF00 からの

REG_FPGA_VER[31:0]

入力

4Byte に表示されます。
ユーザ回路の合成した日付等を設定して Version
レジスタとして利用して下さい。
この値は RBCP レジスタの 0xFFFFFF04 からの
4Byte に表示されます。

REG_FPGA_ID[31:0]

入力

ユーザ回路の回路種別等の識別に利用して下さい。識別子がユニークとなるように、開発に使用した MAC アドレスの下位 4Byte を用いることをお勧めします。

ForceDefault 状態とは、ライセンスなしで動作可能な状態です。1 台の SiTCPXG と PC の閉
じたネットワークでのみ使用可能です。初期設定やレジスタに設定した IP アドレス等がわからなくなった場合にも使用できます。ForceDefault 状態では、MAC アドレスは固定のローカルアドレスとなり、すべてのレジスタは既定値に設定されます。
表 3-9

ForceDefault 状態

項目

設定値

MAC アドレス02:00:C0:A8:0A:0A

IP アドレス※

192.168.10.10

TCP ポート番号※24

RBCP ポート番号※

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

9

3.6. ライブラリ固有信号
この章では、SiTCPXG ライブラリの信号で wrapper ファイルでは使用していない信号について説明します。
表 3-10 ライブラリ固有信号
信号名

説明

入出力

TIM_1US入力

1μs に 1 パルスのタイミング信号

TIM_1MS

入力

1ms に 1 パルスのタイミング信号

TIM_1S

入力

1 秒に 1 パルスのタイミング信号

MY_MAC_ADDR[47:0]

出力

MAC アドレス

MY_IP_ADDR[31:0]

入力

IP_ADDR_DEFAULT[31:0]

出力

MY_TCP_PORT[15:0]

入力

TCP_PORT_DEFAULT[15:0]

出力

MY_RBCP_PORT[15:0]

入力

RBCP_PORT_DEFAULT[15:0]

出力

TCP_SERVER_MAC_IN[47:0]

入力

TCP_SERVER_MAC_DEFAULT[47:0]

出力

TCP_SERVER_ADDR_IN

入力

TCP_SERVER_ADDR_DEFAULT

出力

TCP_SERVER_PORT_IN

入力

TCP_SERVER_PORT_DEFAULT

出力

IP アドレス設定(注１)wrapper では IP_ADDR_DEFAULT を接続
IP アドレス用レジスタの値(注２)
TCP ポート設定(注１)wrapper では TCP_PORT_DEFAULT を接続
TCP ポート用レジスタの値(注２)
RBCP ポート設定(注１)wrapper では RBCP_PORT_DEFAULT を接続
RBCP ポート用レジスタの値(注２)
接続先サーバーの MAC アドレス(注１)wrapper では TCP_SERVER_MAC_DEFAULT を接続
接続先サーバーの MAC アドレス用レジスタ(注２)
接続先サーバーの IP アドレス(注１)wrapper では TCP_SERVER_ADDR_DEFAULT を接続
接続先サーバーの IP アドレス用レジスタ(注２)
接続先サーバーの TCP ポート番号(注１)wrapper では TCP_SERVER_PORT_DEFAULT を接続
接続先サーバーの TCP ポート番号用レジスタ(注２)（注１） 対応する専用レジスタに接続することで確認、初期値の設定ができます。
（注２） 初期値は EEPROM または ForceDefault の値となります。

10

4. レジスタマップ
RBCP のメモリ空間の内、0xFFFF0000～0xFFFFFFFF までが SiTCPXG 内部用にリザーブされています。現在は 0xFFFFFC00～0xFFFFFCFF の EEPROM 空間と 0xFFFFFF00～
0xFFFFFFFF の SiTCPXG レジスタ空間のみが定義されています。
このエリアは、SiTCPXG の基本動作を制御するため、よく理解してから変更して下さい。また、説明のない領域は書き込みだけでなく、読出しも推奨しません。レジスタの未定義 bit についても将来拡張される可能性があるため、変更しないで下さい。

4.1. EEPROM 空間
EEPROM 空間の読出しは常時可能ですが、書き込みをするためには EEPROM のライト
プロテクトを解除する必要があります。0xFFFFFCFF への 0x00 書き込みでライトプロテクトを解除できます。なお、現在ライトプロテクトの解除時に書き込む値は任意ですが、将来拡張時の互換性確保のため 0x00 として下さい。EEPROM への書き込みは、タイムアウトを引き起こさないように 1 コマンドあたり 32Byte 以下を推奨します。
表 4-1

EEPROM のメモリマップ

アドレス

説明

0xFFFFFC10～0xFFFFFC4F

0xFFFFFF10～0xFFFFFF4F の初期値

0xFFFFFCFF

0x00 の書き込みでライトプロテクトの解除

11

4.2. SiTCPXG レジスタ空間
SiTCPXG のパラメータ設定用レジスタです。通常これらのレジスタはデフォルト値またはEEPROM に保存されている値によって、標準的な値に設定されています。変更に際しては十分理解した上で行って下さい。なお、クライアントモードで使用する場合は、接続するサーバーの情報を設定して下さい。
表 4-2

SiTCPXG のレジスタマップ

アドレス
0xFFFFFF00～0xFFFFFF03

User Version register

0xFFFFFF04～0xFFFFFF07

User Identifier register

0xFFFFFF08～0xFFFFFF0B

SiTCPXG Identifier register

0xFFFFFF0C～0xFFFFFF0F

SiTCPXG Version register

0xFFFFFF10

4.2.1.

説明

Control register

0xFFFFFF12～0xFFFFFF17

MAC Address register

0xFFFFFF18～0xFFFFFF1B

IP Address register

0xFFFFFF1C～0xFFFFFF1D

TCP Port Number register

0xFFFFFF20～0xFFFFFF21

TCP maximum segment size register

0xFFFFFF22～0xFFFFFF23

UDP Port Number register

0xFFFFFF24～0xFFFFFF25

TCP Keepalive Time(buffer not empty) register

0xFFFFFF26～0xFFFFFF27

TCP Keepalive Time(buffer empty) register

0xFFFFFF28～0xFFFFFF29

TCP Timeout(Connecting) register

0xFFFFFF2A～0xFFFFFF2B

TCP Timeout(Disconnect) register

0xFFFFFF2C～0xFFFFFF2D

TCP Maximum Segment Lifetime register

0xFFFFFF2E～0xFFFFFF2F

TCP Retransmission time register

0xFFFFFF32～0xFFFFFF37

TCP Server MAC Address register

0xFFFFFF38～0xFFFFFF3B

TCP Server IP Address register

0xFFFFFF3C～0xFFFFFF3D

TCP Server Port Number register

0xFFFFFF40～0xFFFFFF41

Transmission rate register

User Version register
書き込みはできません。REG_FPGA_VER[31:0]ポートに入力した値が表示されます。

4.2.2.

User Identifier register
書き込みはできません。REG_FPGA_ID[31:0]ポートに入力した値が表示されます。

12

4.2.3.

SiTCPXG Identifier register
書き込みはできません。SiTCPXG を示す識別子です。0x58544350 となっています。

4.2.4.

SiTCPXG Version register
書き込みはできません。8 桁の BCD データで SiTCPXG の種別やバージョンを表示します。初めの 2 桁が FPGA のファミリ、次の 2 桁がオプション種別、その次の 2 桁が
SiTCPXG のメジャーバージョン、最後の 2 桁は SiTCPXG のマイナーバージョンとなっています。各フィールドの値は「10 リリース履歴」を参照して下さい。

4.2.5.

Control register
SiTCPXG の動作モードの設定やリセットを行います。フォースデフォルトでの初期値は0x17 となっています。

bit 位置4.2.6.

表 4-3

Control register のビットマップ

シンボル

説明

bit7

RESET

1 の書き込みで SiTCPXG のリセット

bit6

NOT_USE

未使用 0 を設定

bit5

NOT_USE

未使用 0 を設定

bit4

WINDOW_SCALING

window scaling 1:有効 0:無効

bit3

NOT_USE

未使用 0 を設定

bit2

KEEPALIVEkeepalive timer 1:有効 0:無効

bit1

FAST_RETRANS

fast re-transmission 1:有効 0:無効

bit0

NAGLE

Nagle's algorithm 1:有効 0:無効

MAC Address register
書き込みはできません。自局の MAC アドレスです。フォースデフォルトでの MAC アドレ
スは、02:00:C0:A8:0A:0A となっています。

4.2.7.

IP Address register
自局の IP アドレスレジスタです。読出される値は MY_IP_ADDR ポートに入力された値となり、設定した値は IP_ADDR_DEFAULT ポートに出力されます。フォースデフォルトでの出力される初期値は 192.168.10.10(0xC0A80A0A)です。

13

4.2.8.

TCP Port Number register
自局の TCP ポート番号レジスタです。読出される値は MY_TCP_PORT ポートに入力された値となり、設定した値は TCP_PORT_DEFAULT ポートに出力されます。フォースデ
フォルトでの出力される初期値は 24(0x0018)です。

4.2.9.

TCP maximum segment size register
TCP の maximum segment size(MSS)を設定します。1～1460 の値を設定して下さい。
フォースデフォルトでの初期値は 1460 (0x05B4) Byte となっています。

4.2.10. UDP Port Number register
自局の RBCP 用 UDP ポート番号レジスタです。読出される値は MY_RBCP_PORT ポートに入力された値となり、設定した値は RBCP_PORT_DEFAULT ポートに出力されます。フォースデフォルトでの出力される初期値は 4660(0x1234)です。

4.2.11. TCP Keepalive Time(buffer not empty) register
送信バッファにデータが残存している時の Keepalive Timer のタイムアウト値を 1ms 単位で設定します。1～65,535 の範囲で設定して下さい。フォースデフォルトでの初期値は1,000 (0x03E8) ms となっています。

4.2.12. TCP Keepalive Time(buffer empty) register
送信バッファにデータが存在しない時の Keepalive Timer のタイムアウト値を 1ms 単位で設定します。1～65,535 の範囲で設定して下さい。フォースデフォルトでの初期値は60,000 (0xEA60) ms となっています。

4.2.13. TCP Timeout(Connecting) register
セッション確立時、タイムアウト時間を 1ms 単位で設定します。1～65,535 の範囲で設定して下さい。なお、V2 以降ではセッション終了時のタイムアウト時間としても使用します。
なお、クライアントモードでは、セッション確立時のタイムアウトは行いません。フォースデ
フォルトでの初期値は 5,000 (0x1388) ms となっています。

4.2.14. TCP Timeout(Disconnect) register
セッション確立時に有効なパケットを受信しないまま、この時間を経過するとセッションを切断します。タイムアウト時間は 256ms 単位で設定します。値 N を設定した場合のタイム
アウト時間は(N+1)×256ms となります。0～65,535 の範囲で設定して下さい。フォースデ
フォルトでの初期値は 10,000 (0x2710) であり、約 43 分となっています。

14

4.2.15. TCP Maximum Segment Lifetime register
TCP の Maximum Segment Lifetime(MSL)を 0.5ms 単位で設定します。セッション切
断後、この時間の 2 倍の時間が経過するまで新たに接続できません。TCP 状態遷移図における Time Wait 状態に留まる時間を 1ms で設定しているとも言えます。0～65,535 の範囲で設定して下さい。フォースデフォルトでの初期値は 500 (0x01F4)で MSL=250 msとなっています。

4.2.16. TCP Retransmission time register
再送時間を 1ms 単位で設定します。データ送信後 ACK 番号の更新がないままこの時間が経過するとデータを再送します。1～65535 の範囲で設定して下さい。フォースデフォルト
での初期値は 500 (0x01F4) ms となっています。

4.2.17. TCP Server MAC Address register
クライアントモードでのみ使用します。接続先サーバーの MAC アドレスを設定します。読出される値は TCP_SERVER_MAC_IN ポートに入力された値であり、設定した値は、
TCP_SERVER_MAC_DEFAULT ポートに出力されます。フォースデフォルトでの出力される初期値は 00:00:00:00:00:00 です。

4.2.18. TCP Server IP Address register
クライアントモードでのみ使用します。接続先サーバーの IP アドレスを設定します。読出される値は TCP_SERVER_ADDR_IN ポートに入力された値であり、設定した値は、
TCP_SERVER_ADDR_DEFAULT ポートに出力されます。フォースデフォルトでの出力される初期値は 0.0.0.0(0x00000000)です。

4.2.19. TCP Server Port Number register
クライアントモードでのみ使用します。接続先サーバーの TCP ポート番号を設定します。
読出される値は TCP_SERVER_PORT_IN ポートに入力された値であり、設定した値は、
TCP_SERVER_PORT_DEFAULT ポートに出力されます。フォースデフォルトでの出力される初期値は 0 (0x0000)です。

15

4.2.20. Transmission rate register
送信シェーパに設定するレートを 1Mbps 単位で設定します。シェーパは leaky bucket ア
ルゴリズムで Line Rate となっています。
SiTCPXG では受信した window size の許す限り全力でパケットを送信します。このバー
スト転送を損失することなく PC が受信できないと、パケットの再送となり、データ送信性能が著しく低下します。PC の性能に合わせてこのレジスタで送信レートを制限することで最大のパフォーマンスを得られます。1～10,000 の範囲で設定して下さい。フォースデフォルトでの初期値は 10,000 (0x2710)Mbps となっています。

16

5. SiTCPXG のインプリメント
SiTCPXG の XGMII は、ザイリンクス社から提供される 10G Ethernet PCS/PMA への接続を想定しています(10GBASE-R)。
本章では、Virtex-7 または Kintex-7 デバイスを使用する場合の 10G Ethernet PCS/PMA の作成方法の一例について説明します。VIVADO のバージョンによって差異がありますので、詳し
くは 10G Ethernet PCS/PMA の Product Guide をご確認下さい。DRP クロック、MDIO、
Shared Logic については必要に応じて変更して下さい。

5.1. 10G Ethernet PCS/PMA の IP コア生成
VIVADO の[IP Catalog]をクリックします(図 5-1 の左)。[IP Catalog]のタブが表示されるの で [Communication & Networking] を 開 き 、 [Ethernet] を 開 く と [10G Ethernet
PCS/PMA(10GBASE-R/KR)]が表示されるので、これをクリックします(図 5-1 の右)。
[Configuration - BASE-R]のタブでは、[XGMII Datapath Width]を 64bit にし、[MDIOManagement]にチェックを入れて[DRP Clocking-Frequency(MHz)]を 156.25MHz に設定します(図 5-2)。[Shared Logic]のタブでは、[include Shared Logic in Core]を選択します(図 5-3)。この状態で[OK]をクリックして IP を作ります。

図 5-1 10G Ethernet PCS/PMA
17

IP コアの選択

図 5-2 10G Ethernet PCS/PMA Configuration – BASE-R

図 5-3 10G Ethernet PCS/PMA Shared Logic
18

5.2. 10G Ethernet PCS/PMA(10GBASE-R/KR)の IP コアの接続生成した 10G Ethernet PCS/PMA コアのポートについて説明します。 以下は「10G
Ethernet PCS/PMA v6.0」を 7 Series で使用した場合の説明となります。VIVADO のバー
ジョンや生成時の設定によってポートが異なることがありますので、参考程度にして下さい。
表 5-1

10G Ethernet PCS/PMA v6.0 のポート

ポート名
refclk_p
refclk_n
reset
coreclk_out

説明156.25MHz の入力です。
txp,txn,rxp,rxn と同じバンクの REFCLK ピンに接続して下さい。
リセットです。
通常は SiTCPXG の RSTs ポートと同じ信号を入力します。
156.25MHz の XGMII を含むクロック出力です。
SiTCPXG の XGMII_CLOCK と接続して下さい。

txp

送信出力です。SFP+の TD+,TD-への出力です。

txn

使用する GTX、GTH の TXP、TXN に接続します。

rxp

受信入力です。SFP+の RD+,RD-からの入力です。

rxn

使用する GTX、GTH の RXP、RXN に接続します。

xgmii_txd[63:0]

XGMII の送信パスです。

xgmii_txc[7:0]

SiTCPXG の XGMII_TXD, XGMII_TXC に接続します。

xgmii_rxd[63:0]

XGMII の受信パスです。

xgmii_rxc[7:0]

SiTCPXG の XGMII_RXD, XGMII_RXC に接続します。

mdc

MDIO インタフェースです。

mdio_in

設定の変更を行わない場合は、mdc=1, mdio_in=1 として残りのmdio_out

mdio_out と mdio_tri は開放で使用できます。

mdio_trisignal_detect

SFP+の LOS の反転を入力または 1 固定とします。

tx_fault

SFP+の Tx Fault に接続または 0 固定とします。

tx_disable

SFP+の Tx Disable に接続、または開放とします。

dclk

Dynamic Reconfiguration Port(DRP) Clock(IP 生成時に設定した周波数のクロックを接続します)
Dynamic Reconfiguration Port(DRP)の入出力信号です。

drp_xxxx

req を gnt に、同名の信号同士を接続します(添字_i と_o を接続)。

19

表 5-1 10G Ethernet PCS/PMA v6.0 のポート (続き)
ポート名
sim_speedup_control

説明
シミュレーション用です。0 を設定します。
SFP の種類を設定します。

pma_pmd_type[2:0]

111:10GBASE-SR
110:10GBASE-LR
101:10GBASE-ER

その他の出力

必要に応じて使用して下さい。使用しない場合は開放とします。

6. EEPROM の変更方法
SiTCPXG のレジスタ 0xFFFFFF10～0xFFFFFF4F までのレジスタの初期値は、EEPROMの 0xFFFFFC10～0xFFFFFC4F に保存できます。なお、ForceDefault 状態ではレジスタの初期値は固定で変更できません。
0xFFFFFC00～0xFFFFFCFF の範囲は、EEPROM のレジスタマップで定義されている領域
以外へのアクセスはしないで下さい。また、0xFFFFFC12～0xFFFFFC17 の MAC アドレスについては書き換えないで下さい。SiTCPXG が起動しなくなります。
EEPROM の初期状態はライトプロテクトとなっていますので、書き込みに先立ってプロテクトの解除が必要です。0xFFFFFCFF に 0x00 を書き込むことでプロテクトを解除できます。
EEPROM の書き込みは時間がかかるため、一度に大量の書き込みを行うとタイムアウトによるエラーが発生します。EEPROM の劣化を考慮すると 1 コマンドでの書き込みは 32Byte 以下にすることを推奨します。
なお、書き込み終了後に誤ってデータが書き換えられることを防止するため、一旦電源を切って下さい(電源断でライトプロテクト状態に戻ります)。

20

7. 障害対応
本章では、問題となりやすい事項について記載します。本文中に記載されている内容も含みます。

7.1. 送信転送速度が著しく低い
送信速度が低い場合はいくつかの原因が考えられます。

7.1.1.

SiTCPXG の設定の誤り
送信レートは Transmission rate register の値で制限されます。Transmission rate
register の値が小さすぎると性能がでません。また、TCP maximum segment size
register の値(MSS)が小さい場合も同様に性能はでません。
Transmission rate register で設定する値(Speed)は Line Rate なので実際に転送できる最大速度は Speed *MSS/(MSS+78)となります。

7.1.2.

データ転送経路の障害
データ転送経路でパケットが破壊されると再送となり、データ転送速度は遅くなります。主な原因は、SFP の劣化、光ケーブルの劣化等の劣化や故障の他に SFP の種類違いや光ファイバの種類違いの可能性もあります。

7.1.3.

データ転送経路の遅延
データ転送経路の遅延が大きいと Round Trip Time (RTT)が増大し性能が低下します。
window size と送信バッファの小さい方のデータを送信する時間に対する PC の ACK 応
答時間に RTT を加えた時間の比で送信速度が劣化します。

7.1.4.

PC の受信性能がネックの場合
SiTCPXG では受信した window size の許す限り全力でパケットを送信します。このバー
スト転送を損失することなく PC が受信できないと、パケットの再送となりデータ送信性能が著しく低下します。PC の性能に合わせて送信レートを制限することで最大のパフォーマンスを得られます。最適な送信レートとなるように Transmission rate register を設定します。

21

7.2. SFP に接続される極性の反転
SFP+の TD+,TD-と FPGA の TXP,TXN が逆に接続されている場合や、SFP+の RD+,RDと FPGA の RXP,RXN が逆に接続されている場合、「10G Ethernet PCS/PMA Ver6.0」では、ten_gig_eth_pcs_pma_block.v の gt0_txpolarity と gt0_rxpolarity で極性を変更できます。KC705 評価ボードの Rev1.0 では、送受信共に入れ替わっているため、いずれの変数
も 1 に設定して下さい。

8. 推奨 FPGA
本章では、リリースされている SiTCPXG コアを利用する上で推奨する FPGA サイズを記載します。
表 8-1 推奨 FPGA
ライブラリ名ファミリ

推奨 FPGASiTCPXG_XC7K_128K_Vx ※1

Kintex-7

XC7K160T 以上※2※3

SiTCPXG_XC7V_128K_Vx ※1

Virtex-7

XC7V585T 以上※3

Zynq
SiTCPXG_ZCU2DR_128K_Vx ※1

UltraSCALE+XCZU2xDR※4

RFSoC Gen1
※1 ライブラリ名の末尾の x はバージョンを示し、1 桁または 2 桁の数字となります。
※2 トランシーバ性能が 10.3125Gb/s 未満のパッケージは使用できません。
※3 トランシーバ性能が 10.3125Gb/s 未満のスピードグレードは使用できません。
※4 x は 1,5,7,8,9 が対象です。

9. 使用リソース
参考として SiTCPXG_XC7V_128K_V3 の使用するリソースを表 9-1 に示します。
表 9-1 使用リソース
リソース名

使用量

Slice LUTs (Slice) ※1

5,560(1,390)

Slice Registers(CLB Flip-Flops)

9.729(9.729)RAMB36 (Total Block RAM) ※2

70.5(2,538kb)※1 Slice は Slice LUTs×0.25 として換算しています。
※2 RAMB18 は RAMB36×0.5 として換算しています。

22

10. リリース履歴
コアのバージョンの修正差分を表 10-1 に示します。
表 10-1 各バージョンの修正履歴
バージョン
V1

変更点
初版
受信時の最小 IFG を 12Byte から 4Byte に短縮
送信時の IFG を 74Byte(1518Byte パケット時)から平均 12Byte に短縮

V2

RST 受信後の送信が異常になる不具合を修正
クライアントモード時、セッション確立前のタイムアウト機能を削除
ファスト・リトランスミッションの改善(不要な再送の削減)
セッション終了時のタイムアウト追加
双方向通信で ACK とデータ送信が重なった場合に発生する不具合の修正

V3

ACK 送信とデータ送信の効率化の修正
セッション終了待ち合わせ中は Nagle アルゴリズムを無効にするように修正

10.1. FPGA ファミリ・コード
SiTCPXG Version register の初めの 1Byte は対応する FPGA ファミリを示します。表 10-2に現在定義済みの FPGA ファミリ・コードを示します。なお、表 10-2 で定義されているデバイスに対応することを保証するものではありません。
表 10-2 FPGA ファミリ・コード
FPGA ファミリ・コード

FPGA ファミリ

0x01

KINTEX7

0x02

VIRTEX7

0x03

ARTIX UltraSCALE+

0x04

Zynq UltraSCALE+ RFSoC Gen1

23

10.2. オプション・コード
SiTCPXG Version register の 2Byte 目の 1Byte は受信バッファサイズなど SiTCPXG のオプション条件を示します。表 10-3 に現在定義済みのオプション・コードを示します。
表 10-3 オプション・コード
オプション・コード
0x00

オプションの内容
送信バッファ(内蔵) 128kByte
WS=1 (受信バッファ最大 64kByte)

10.3. バージョン・コード
SiTCPXG Version register の 3～4Byte 目の 2Byte は SiTCPXG のバージョンを示します。表 10-4 に現在定義済みのバージョン・コードを示します。
表 10-4 バージョン・コード
バージョン・コード

対応バージョン

0x0100予約

0x0101

予約

0x0102SiTCPXG_V1

0x0103SiTCPXG_V2

0x0104SiTCPXG_V3

24