通信のための簡単なデータフォーマット

ソフトウェアとデジタル回路、またはソフトウェアの異なるプロセス間で通信する際の利用できるアプリケーション・レベルでの簡単なデータフォーマットについて説明する。 データ通信にはシリアル通信、TCP/IP, PCIe, USB等様々な規格があるが、ここで導入するのはこれらに変わるものではなく、これらに乗っかったアプリケーション・データのフォーマットについてである。データは1バイト単位とする。

フォーマット

バイト順

意味

内容

0

先頭文字

'M' (0x4d)

先頭バイトを示す目印

1

データ・タイプ

整数

アプリケーション毎に決める任意の値

2

データ長(上位)

4以上の整数

パケット全体のバイト数

3

データ長(下位)

4以上の整数

パケット全体のバイト数

4~N-1

データの中身

アプリケーションによる

個別のアプリケーション例

NexysVideoによるFEI4との通信

データ・タイプ

役割

データの内容

1

echo

任意のデータ

2

内部レジスタからの読み出し

アドレス(1 byte)

3

内部レジスタへの書き込み

アドレス(1 byte)+データ(4 bytes)

4

フロントエンドへのコマンド送信

FEI4へ送るコマンド列

これは、PCからパケットを受けとった後でデータをどのように処理すべきかを判断するためのものである。

内部レジスタ(一例なので使いやすいように決めて下さい。)1ワードは32 bitとする。

ワード順

意味

内容

ソフトウェアからのR/W

 回路ブロックからのR/W

0

コマンド・タイプ

下の表のとおり

W

-

1

DELAY

Delay値1+Delay値2

R/W

R/W

2

BERT_PRESET_N0

BERTでテストするビット数(下位の数字)

R/W

W

3

BERT_PRESET_N1

BERTでテストするビット数(上位の数字)

R/W

W

4

BERT_N0

BERTでテストしたビット数(下位の数字)

R

W

5

BERT_N1

BERTでテストしたビット数(上位の数字)

R

W

6

BERT_E0

BERTでのエラービット数(下位の数字)

R

W

7

BERT_E1

BERTでのエラービット数(上位の数字)

R

W

複数バイトのデータを送る場合、バイト列の並びはbig endianとする。

コマンド・タイプ(一例なので使いやすいように決めて下さい。)

役割

データの内容

5

IDELAYにDelay値を設定

無し。値は事前にレジスタに書き込んでおく。

6

BERT開始

無し

7

BERT終了

無し

この役割をデータ・タイプに担わせることも可能である。

回路への要求

PCからパケットを受け取ったら、ヘッダに書かれたデータ・タイプに応じて処理を適切に内容を処理する。 PCからできる操作としては内部レジスタの読み書きとフロントエンドに直接データを送るかのどちらかである。導入する目的は、パケットを受け取った回路がそのデータを次にどの回路ブロックに処理させるかを判断するためのものである。 echoは通信できているかをチェックするために使用することを目的としてものである。

SimpleMessageFormat (最終更新日時 2019-01-13 07:28:54 更新者 TakanoriKono)