VHDLで設計するハードウェアモジュールに限らず、一般に複数のものを組み合わせて利用することは困難なことです。そのため、様々なプラットフォーム上で様々な方法が考えられています。

e-trees.Japan,Incでは、ハードウェアを構成するモジュール群の物理的な接続を

  • Reqeust,Ack,Enableの3つの制御信号
  • Strobe信号(オプション)
  • データバス

に限定し、その上でモジュール同士のデータ授受をシリアライズ化したパケットとしてやり取りすることで、簡単なモジュール間接続を実現しています。この仕組みをUPLと名付けています。この仕組みにより複雑なデータパスの信号遅延の考慮やモジュールのつなぎ替えによるコード改変の手間を大きく削減することができます。

UPLでのデータ転送と転送フロー

UPLでモジュール間を接続するためのポートは,次の通りです。

データバス幅は原理的にはモジュール間で自由に取り決めることができますが、多くの場合,8bit/16bit/32bit/64bit/128bit/256bitなどを利用しています。

UPLでのデータ転送のフローは次の通りです。

送信する側は,

  1. データ送信に先立ってAckが立ち上がるまでRequestをたてる(すでにAckが立っている場合には,省略可能)
  2. Ackが立ち上がったらEnableをたてると同時にデータ転送を開始
  3. データ転送が終わると同時にEnableを下げる

受信する側は,

  1. 受信できる準備が整っていればAckを立ち上げる
  2. Enableの立ち上がりからクロックの立ち上がりでデータを受信
  3. Enableが立ち下がったら受信を終了

ほかのストリームベースのプロトコルと違って,データ転送を開始したらデータ転送の完了まで停止できない分,シンプルな構成になっています.

オプションのStrobeをつけることで,Enableを’1’にしている期間のうち有効なデータを指定することができます.(Enableが’1’でStrobeが’1’のデータのみを有効データとして扱う)

特許

特開2002-208982(P2002-208982A)