JP2023019552A - 通信装置、通信方法およびプログラム - Google Patents
通信装置、通信方法およびプログラム Download PDFInfo
- Publication number
- JP2023019552A JP2023019552A JP2021124343A JP2021124343A JP2023019552A JP 2023019552 A JP2023019552 A JP 2023019552A JP 2021124343 A JP2021124343 A JP 2021124343A JP 2021124343 A JP2021124343 A JP 2021124343A JP 2023019552 A JP2023019552 A JP 2023019552A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- transmission
- tag
- time
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
- H04L7/0033—Correction by delay
- H04L7/0041—Delay of data signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/66—Remote control of cameras or camera parts, e.g. by remote control devices
- H04N23/661—Transmitting camera control signals through networks, e.g. control via the Internet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/04—Synchronising
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
【課題】タイムスタンプとパケットの対応付けを適正化する。【解決手段】一態様に係る通信装置は、パケットの送信要求を行う要求手段と、前記パケットの送信要求に基づいて前記パケットを転送する転送手段と、前記転送手段にて転送された前記パケットを送信するとともに、前記パケットの送信に基づいてタイムスタンプを出力する送信手段と、前記転送手段と前記送信手段との間のインターフェースから読み取り可能な所定情報に基づいて、前記パケットと前記タイムスタンプとを対応付けるタグの出力を制御する制御手段と、を備える。【選択図】 図1
Description
本発明は、通信装置、通信方法およびプログラムに関する。
複数のカメラを異なる位置に設置して多視点で同期撮像し、同期撮像により得られた複数視点の画像を用いて仮想視点コンテンツを生成する技術が注目されている。仮想視点コンテンツを用いることにより、例えば、サッカーやバスケットボールのハイライトシーンを様々な角度から視聴することができるため、通常の画像と比較して視聴者に高臨場感を与えることができる。
同期撮像を実現するため、ネットワークを用いた同期方法の一つに、PTP(Precision Time Protocol)がある。PTPでは、正確な時刻を発生させるマスタ装置がPTPパケットにその時刻の情報を付して送信し、スレーブ装置がそのPTPパケットを受信することで時刻同期が行われる。
ネットワークを構成する複数の通信装置の接続方法として、各通信装置を直列に接続するデイジーチェーンと呼ばれる接続方法がある。各通信装置は、複数のコネクタを持ち、各コネクタを介して別々の通信装置と接続することでデイジーチェーンの接続を確立することができる。
各通信装置がデイジーチェーンで接続される通信ネットワークでは、様々な通信パケットが転送されている。このような通信パケットとして、例えば、通信装置間またはマスタ装置と通信装置との間の時刻同期を行うPTPパケット、通信装置の制御を行うTCP/IPパケット、カメラにより撮像された画像/映像パケットなどがある。
これらの通信パケットは、DMAC(Direct Memory Access Controller)の送信順の制御に基づいて転送される。このとき、リクエスタがDMACに転送要求することで、通信パケットがMAC(Media Access Control)/PHY(Physical Layer)へ転送される。そして、MAC/PHYがハードウェアタイムスタンプ出力に対応する場合、1マイクロsec以下の非常に高い同期精度で通信パケットのタイムスタンプを出力することができる。ハードウェアタイムスタンプを出力させる場合、通信パケットと出力するタイムスタンプを対応付けるタグと呼ばれる識別情報をPHY/MACに対してセットすることが一般的である。
特許文献1には、DMACを用いて通信パケットを転送する方法が開示されている。特許文献1に開示された方法では、データ送信する複数のリクエスタがDMACに対して送信要求する際、データサイズに応じて優先順位を付けてデータ転送のアービトレーションを実施する。転送するデータのサイズが小さい場合は、転送するデータのサイズが大きい場合と比較して優先的に転送処理される。そして、データサイズが小さい転送が行われていない場合、データサイズが大きい転送が優先的に転送処理される。
しかしながら、特許文献1に開示されたDMA転送では、アービトレーションされることでDMACが転送するデータの順番とリクエスタが送信要求した順番とが異なることがあり、リクエスタが送信要求した順番でDMACからデータ転送されないことがある。この場合、リクエスタは、転送されるデータの順番が分からないため、適切なタグをPHY/MACにセットすることができず、PHY/MACから出力されるタイムスタンプと、リクエスタが送信要求した通信パケットとの対応付けができなかった。
本発明が解決しようとする課題は、タイムスタンプとパケットの対応付けを適正化することである。
本発明が解決しようとする課題は、タイムスタンプとパケットの対応付けを適正化することである。
一態様に係る通信装置は、パケットの送信要求を行う要求手段と、前記パケットの送信要求に基づいて前記パケットを転送する転送手段と、前記転送手段にて転送された前記パケットを送信するとともに、前記パケットの送信に基づいてタイムスタンプを出力する送信手段と、前記転送手段と前記送信手段との間のインターフェースから読み取り可能な所定情報に基づいて、前記パケットと前記タイムスタンプとを対応付けるタグの出力を制御する制御手段と、を備える。
本発明の1つの態様によれば、タイムスタンプとパケットの対応付けを適正化することができる。
以下、添付図面を参照して本発明の実施形態を詳細に説明する。なお、以下の実施形態は本発明を限定するものではなく、また、実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。実施形態の構成は、本発明が適用される装置の仕様や各種条件(使用条件、使用環境等)によって適宜修正または変更され得る。本発明の技術的範囲は、特許請求の範囲によって確定され、以下の個別の実施形態によって限定されない。
<第1実施形態>
図1は、第1実施形態に係る同期撮像システムの構成例を示すブロック図である。
図1において、同期撮像システム100は、例えば、体育館、スタジアムまたはコンサートホールなどにおいて、異なる位置に設置された複数のカメラで多視点から同期撮像し、同期撮像により得られた複数視点の画像を用いて仮想視点画像を生成可能である。同期撮像システム100は、仮想視点画像を生成することにより、ユーザは、例えば、サッカーまたはバスケットボールのハイライトシーンを様々な角度から視聴したり、体操や格闘技などを所望の視点から視聴したりすることができる。このとき、同期撮像システム100は、同期撮像を実現するため、PTPを用いる。そして、同期撮像システム100は、通信パケットのタイムスタンプに基づいて、PTP時刻同期処理を実施する。なお、同期撮像システム100は、静止画および動画の何れについても処理可能である。本実施形態では、特に断らない限り、画像は、動画と静止画を含むものとする。
図1は、第1実施形態に係る同期撮像システムの構成例を示すブロック図である。
図1において、同期撮像システム100は、例えば、体育館、スタジアムまたはコンサートホールなどにおいて、異なる位置に設置された複数のカメラで多視点から同期撮像し、同期撮像により得られた複数視点の画像を用いて仮想視点画像を生成可能である。同期撮像システム100は、仮想視点画像を生成することにより、ユーザは、例えば、サッカーまたはバスケットボールのハイライトシーンを様々な角度から視聴したり、体操や格闘技などを所望の視点から視聴したりすることができる。このとき、同期撮像システム100は、同期撮像を実現するため、PTPを用いる。そして、同期撮像システム100は、通信パケットのタイムスタンプに基づいて、PTP時刻同期処理を実施する。なお、同期撮像システム100は、静止画および動画の何れについても処理可能である。本実施形態では、特に断らない限り、画像は、動画と静止画を含むものとする。
同期撮像システム100は、タイムサーバ101、ハブ102、制御端末103、画像コンピューティングサーバ104、ユーザ端末105およびセンサシステム110a~110zを備える。ハブ102と各センサシステム110a~110zは、デイジーチェーン106a-106zを介して接続される。
なお、センサシステム110a~110zの台数は限定されることなく、何台でもよい。また、各センサシステム110a~110zは、必ずしも同一の構成でなくてもよく、例えば、各センサシステム110a~110zは、それぞれが異なる機種であってもよい。
タイムサーバ101は、時刻情報を配信する機能を有し、GNSS(Global Navigation Satellite System)107に時刻同期した時刻情報を各センサシステム110a~110zに配信する。なお、タイムサーバ101は、タイムサーバ101が発生させるローカル時刻をマスタ時刻として、各センサシステム110a~110zに配信してもよい。
ハブ102は、タイムサーバ101が配信する時刻情報が付加されたPTPパケットを各宛先に振り分けたり、各センサシステム110a~110zが画像コンピューティングサーバ104に送信する画像データを各宛先に振り分けたりする。
制御端末103は、同期撮像システム100に含まれる各ブロックの動作状態を、ネットワークを通じて管理したり、パラメータ設定制御などを行ったりする。ここで、ネットワークは、Ethernet(登録商標)であるIEEE標準準拠のGbE(ギガビットイーサーネット)または10GbEでもよいし、インターコネクトInfiniband、産業用イーサーネットなどの組み合わせでもよい。ネットワークは、これらに限定されず、他の種別のネットワークでもよい。
各センサシステム110a~110zは、カメラ111a~111zおよびカメラアダプタ112a~112zを備える。各センサシステム110a~110zは、必ずしもこの構成に限定されなくてもよい。例えば、マイクなどの音声デバイス、HDD(Hard Disk Drive)、SSD(Solid State Drive)などのストレージ装置またはカメラの向きを制御する雲台等を含んでもよい。また、例えば、各センサシステム110a~110zは、1台のカメラアダプタと、複数のカメラで構成されてもよいし、1台のカメラと、複数のカメラアダプタで構成されてもよい。
センサシステム110a~110z同士はデイジーチェーンにより接続される。デイジーチェーン接続により、撮像画像の4Kまたは8Kなどへの高解像度化および高フレームレート化に伴う画像データの大容量化において、接続ケーブル数の削減および配線作業の省電力化を図ることができる。ただし、接続形態として、各センサシステム110a~110zがハブ102を経由してセンサシステム110a~110z間のデータ送受信を行うスター型のネットワーク構成でもよい。
また、図1では、センサシステム110a~110zの全てがデイジーチェーン接続されている例を示したが、これに限定するものではない。例えば、複数のセンサシステム110a~110zをいくつかのグループに分割し、分割したグループ単位でセンサシステム110a~110z間をデイジーチェーン接続してもよい。このような構成は、スタジアムにおいて特に有効である。例えば、スタジアムが複数階で構成され、センサシステム110a~110zをフロア毎に配備する場合がある。この場合に、フロア毎、あるいはスタジアムの半周毎に画像コンピューティングサーバ104への入力を行うことができる。そして、全てのセンサシステム110a~110zを1つのデイジーチェーンで接続する配線が困難な場所でも、設置の簡便化およびシステムの柔軟化を図ることができる。
各カメラ111a~111zは、互いに異なる方向から被写体を撮像する。なお、以下の説明では、各カメラ111a~111zは、同一構成の場合を例にとるが、性能または機種が異なっていてもよい。
各カメラアダプタ112a~112zは、カメラ111a~111zにそれぞれ接続され、各カメラ111の制御、撮像画像取得、同期信号提供、および時刻設定などを実施する。また、各カメラアダプタ112a~112zは、各カメラ111a~111zで撮像された撮像データに対して画像処理を施す。
例えば、各カメラアダプタ112a~112zは、各カメラ111a~111zで撮像された撮像データから前景画像と背景画像とを出力することで、複数の視点から撮像された前景画像と背景画像に基づいて仮想視点画像を生成する。なお、カメラアダプタ112a~112zの一部は、撮像画像から分離した前景画像を出力し、背景画像は出力しなくてもよい。そして、各カメラアダプタ112a~112zは、画像処理したデータをデイジーチェーンで接続されたハブ102を介して、画像コンピューティングサーバ104へ伝送する。
このとき、各カメラアダプタ112a~112zは、PTPスレーブとして動作し、GM(Grand Master)装置であるタイムサーバ101と時刻同期する。また、各カメラアダプタ112a~112zは、PTPマスタとしても動作し、他のセンサシステム110a~110zとも時刻同期するBC(Boundary Clock)装置として動作する。
あるいは、各カメラアダプタ112a~112zは、GM装置からのPTPパケットに対して時刻補正を行い他のセンサシステム110a~110zに転送するTC(Transparent Clock)装置として動作してもよい。あるいは、各カメラアダプタ112a~112zは、GM装置からのPTPパケット、別のセンサシステム110a~110zから転送されたPTPパケットを用いて時刻同期のみを行うOC(Ordinary Clock)装置として動作してもよい。
あるいは、各カメラアダプタ112a~112zは、GM装置からのPTPパケット、別のセンサシステム110a~110zから転送されたPTPパケットを用いて時刻同期を行い、かつPTPパケットに対して時刻補正を行ってもよい。このとき、各カメラアダプタ112a~112zは、時刻補正したPTPパケットを他のセンサシステム110a~110zに転送するTC+OC装置として動作をしてもよい。そして、各カメラアダプタ112a~112zは、同期した時刻やリファレンス信号を利用し、撮像タイミング(制御クロック)を各カメラ111a~111zに提供することができる。
画像コンピューティングサーバ104は、各センサシステム110a~110zから取得したデータの処理を行う。例えば、画像コンピューティングサーバ104は、各センサシステム110a~110から取得した撮像データを再構成してデータ形式を変換した後、各カメラ111a~111zの識別子、データ種別およびフレーム番号に応じて記憶する。そして、画像コンピューティングサーバ104は、制御端末103から視点の指定を受け付け、指定された視点に基づいて、記憶した情報から対応する撮像データを読み出し、レンダリング処理を行って仮想視点画像を生成する。なお、画像コンピューティングサーバ104の機能の少なくとも一部を制御端末103、各センサシステム110a~110zまたはユーザ端末105が有してもよい。
ユーザ端末105は、画像コンピューティングサーバ104からレンダリング処理された画像を受信し、ユーザ端末105を操作するユーザの指定に応じた視点の画像を提供する。なお、仮想視点コンテンツは、画像コンピューティングサーバ104により生成されてもよいが、制御端末103またはユーザ端末105により生成されてもよい。
図2は、第1実施形態に係るカメラアダプタの構成例を示すブロック図である。
図2に示す各機能ブロックのうち、ソフトウェアにより実現される機能については、各機能ブロックの機能を提供するためのプログラムがROM(Read Only Memory)等のメモリに記憶される。そして、そのプログラムをRAM(Random Access Memory)に読み出してCPU(Central Processing Unit)が実行することにより実現される。ハードウェアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能ブロックの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてゲートアレイ回路を形成し、ハードウェアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。なお、図2に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
図2に示す各機能ブロックのうち、ソフトウェアにより実現される機能については、各機能ブロックの機能を提供するためのプログラムがROM(Read Only Memory)等のメモリに記憶される。そして、そのプログラムをRAM(Random Access Memory)に読み出してCPU(Central Processing Unit)が実行することにより実現される。ハードウェアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能ブロックの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてゲートアレイ回路を形成し、ハードウェアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。なお、図2に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
図2において、センサシステム110は、カメラ111およびカメラアダプタ112を備える。なお、センサシステム110は、図1の各センサシステム110a~110zとして用いることができる。カメラ111は、図1の各カメラ111a~111zとして用いることができる。カメラアダプタ112は、図1の各カメラアダプタ112a~112zとして用いることができる。
カメラアダプタ112は、CPU200、映像パケット処理部201、第一記憶部202、第二記憶部203、DMA制御部204、PHY/MAC205およびタイムスタンプ制御部210を備える。CPU200、映像パケット処理部201、第一記憶部202、第二記憶部203、DMA制御部204およびタイムスタンプ制御部210は、システムバス206を介して相互に接続されている。また、カメラアダプタ112は、画像伝送用ケーブル209を介してカメラ111と接続されている。
CPU200は、OSI(Open Systems Interconnection)参照モデルで定義されるアプリケーション層でアプリケーションソフトウエアを実行したり、カメラアダプタ112全体の制御を実行したりする。このとき、CPU200は、アプリケーションソフトウエアを実行する上で必要となるデータおよびプログラムなどを第一記憶部202の内部に記憶する。そして、CPU200は、必要に応じてシステムバス206を介して第一記憶部202との間でデータの読み出しおよび書き込みを行う。具体的には、CPU200は、PTPスタック処理、DMA制御部204を用いたDMA転送制御のためのディスクリプタ生成、PHY/MAC205にセットするタグの生成などを行う。タグは、DMA制御部204に対して送信要求した通信パケットと、PHY/MAC205が出力したタイムスタンプとを対応付ける識別情報である。なお、CPU200は、GPU(Graphics Processing Unit)であってもよい。
映像パケット処理部201は、カメラ111で撮像された画像データを、画像伝送用ケーブル209を介して受信し、画像データのパケタイズを行う。そして、映像パケット処理部201は、DMA制御部204を用いたDMA転送制御のためのディスクリプタを生成する。なお、映像パケット処理部201の機能は、ASICなどの専用ハードウェアで実現してもよいし、CPUで実現してもよいし、FPGAなどを用いたハードウェアで実現してもよい。カメラアダプタ112は、映像パケット処理部201の機能をCPUで実現するため、CPU200と別個のCPUを備えてもよい。
第一記憶部202は、CPU200が用いる記憶領域である。第一記憶部202は、DRAM(Dynamic Random Access Memory)またはSRAMStatic Random Access Memory)などの半導体メモリで構成することができる。第一記憶部202の内部領域は、プログラムを格納する領域およびアプリケーションソフトウエアが使用するアプリケーションバッファ領域などに分けられ、パケット転送用のディスクリプタおよびタグなどが格納される。ディスクリプタは、DMA制御部204がパケット転送に用いる情報である。ディスクリプタは、データ転送を行うソース側のアドレス情報、ディスティネーション側のアドレス情報、データ転送の転送サイズ等の情報を含む。
第二記憶部203は、映像パケット処理部201が用いる記憶領域である。第二記憶部203は、DRAMまたはSRAMなどの半導体メモリで構成することができる。第二記憶部203の内部領域は、画像パケット伝送するためのディスクリプタが格納される。
なお、第一記憶部202および第二記憶部203は、CPU200および映像パケット処理部201がそれぞれ占有している使用してもよいが、そのような使用に限定されない。第一記憶部202および第二記憶部203を一つの記憶部にまとめて、CPU200および映像パケット処理部201で共有して使用してもよい。
DMA制御部204は、CPU200もしくは映像パケット処理部201からのパケット送信要求により、DMA転送を実行する。このとき、DMA制御部204は、CPU200または映像パケット処理部201が生成したディスクリプタの内容に従ってDMA転送を実行する。ここで、DMA制御部204は、DMA転送要求を受ける送信要求口を複数持ち、送信要求口単位で優先制御を実施する。このとき、送信要求口単位でパケットの送信順番が入れ替わる。なお、一つの送信要求口の内部では、パケット送信順番が入れ替わることはない。そして、DMA制御部204は、DMA転送完了後に使用したディスクリプタに対応した完了割り込み207をCPU200または映像パケット処理部201に通知する。
PHY/MAC205は、LAN(Local Area Network)などのネットワーク208とのインターフェースである。PHY/MAC205は、通信におけるPHY層(物理層)とMAC層(データリンク層)の通信制御を担う。そして、PHY/MAC205は、ネットワーク208との間で送信または受信する通信パケットの送受信タイムスタンプとタグを出力する。タイムスタンプは、PHY/MAC205がパケットを送信または受信したタイミングの時刻情報である。タイムスタンプは、PTPプロトコル処理の時刻補正の計算などに使用される。
タイムスタンプ制御部210は、DMA制御部204とPHY/MAC205との間のインターフェースから読み取り可能な所定情報に基づいて、通信パケットとタイムスタンプとを対応付けるタグの出力を制御する。例えば、タイムスタンプ制御部210は、DMA制御部204とPHY/MAC205との間のインターフェースのスヌープ処理に基づいて、所定情報を読み取ることができる。所定情報は、パケット送信要求を出すリクエスタがDMA制御部204の送信要求口に対して送信要求した情報と、DMA制御部204が送信したパケットのパケット種別と、送信パケットのヘッダ領域およびデータ領域に埋め込まれたタグである。このとき、CPU200または映像パケット処理部201は、リクエスタとして動作することができる。また、タイムスタンプ制御部210は、DMA制御部204から出力されるパケットの順番に合わせてパケットとタイムスタンプを対応付けるタグをPHY/MAC205に入力する。
タイムスタンプ制御部210は、レジスタ部211、TAG記憶部#N212、選択処理部213、TS&TAG一時記憶部214、振分処理部215およびTS&TAG記憶部#N216を備える。
レジスタ部211は、CPU200によってタグをセットされる。このとき、レジスタ部211には、CPU200によるDMA転送要求前、あるいはDMA転送要求と同時にタグがセットされる。そして、CPU200は、PHY/MAC205が出力したタイムスタンプとタグを、レジスタ部211を経由してリードする。なお、映像パケット処理部201は、CPU200と同様に、タグのセットおよびタイムスタンプとタグのリードを実施してもよい。以下の説明では、CPU200がタグのセットおよびタイムスタンプとタグのリードを実施するものとする。
TAG記憶部#N212は、CPU200がレジスタ部211を経由して書き込んだタグを格納する。TAG記憶部#N212は、複数個の先入れ先出し可能なFIFO(First Input First Output)メモリで構成することができ、DMA制御部204が持つ送信要求口の数だけ用意される。TAG記憶部#N212は、通信パケットの送信要求を行うリクエスタにて生成されたタグを格納する複数のキューとして用いることができる。このとき、それぞれのTAG記憶部#N212は、送信要求口と対応付けられる。
選択処理部213は、通信パケットの転送時に用いられるインターフェースから読み取り可能な所定情報に基づいて、通信パケットとタイムスタンプとを対応付けるタグの出力を制御する。このとき、選択処理部213は、DMA制御部204とPHY/MAC205とのバスインターフェースをスヌープ処理することで所定情報を読み取ることができる。所定情報は、送信要求したリクエスタ情報、送信パケットがDMA制御部204のどの送信要求口から送信されているのかの情報、送信パケットのパケット種別および送信パケットに付与されたタグなどを含む。そして、選択処理部213は、所定情報を基にTAG記憶部#N212を選択し、その選択したTAG記憶部#N212に格納されているタグをPHY/MAC205に送出する。
TS&TAG一時記憶部214は、PHY/MAC205が出力したタイムスタンプとタグを一時的に格納する。TS&TAG一時記憶部214は、FIFOメモリで構成することができる。そして、TS&TAG一時記憶部214は、タイムスタンプとタグが格納されると、それらの情報が格納されたことを振分処理部215に通知する。
振分処理部215は、TS&TAG一時記憶部214に格納されたタイムスタンプとタグをTS&TAG記憶部#N216に振り分ける。例えば、振分処理部215は、リクエスタごと、リクエスタがDMA制御部204に送信要求した送信要求口ごと、DMA制御部204が転送したパケットの種別ごと、あるいはこれらの組み合わせに基づいて、タイムスタンプおよびタグを振り分ける。このとき、選択処理部213は、所定情報を基にTAG記憶部#N212を選択した選択情報を振分処理部215に通知し、振分処理部215は、その選択情報に基づいて振分処理を実施することができる。あるいは、CPU200または映像パケット処理部201は、振分条件情報をタグに含めてレジスタ部211にセットする。そして、振分処理部215は、TS&TAG一時記憶部214に格納されたタグから振分条件情報を読み取り、振り分け処理を実施してもよい。
TS&TAG記憶部#N216は、振分処理部215により振り分けられたタイムスタンプとタグを格納する。TS&TAG記憶部#N216は、複数個のFIFOメモリで構成することができる。そして、TS&TAG記憶部#N216に格納されたタイムスタンプとタグは、レジスタ部211を経由してCPU200によってリードされる。TS&TAG記憶部#N216は、PHY/MAC205から出力されたタイムスタンプおよびタグを格納する複数のキューとして用いることができる。
図3は、第1実施形態に係るPTP時刻同期処理を示す図である。なお、図3では、PTP時刻同期におけるGMC(Grand Master Clock)装置とPTPスレーブ装置の同期パケットの送受信シーケンスを例にとる。このとき、図1のタイムサーバ101はGMC装置として動作し、図2のセンサシステム110はPTPスレーブ装置として動作する。
図3のステップS301において、タイムサーバ101は、同期パケットSyncをセンサシステム110に一定間隔で送信する。タイムサーバ101は、同期パケットSyncを送信すると、その時の送信タイムスタンプt1を保持する。センサシステム110は、同期パケットSyncを受信すると、その時の受信タイムスタンプt2を保持する。
次に、ステップS302において、タイムサーバ101は、同期パケットSyncを送信した送信タイムスタンプt1を同期パケットFollow_Upに載せて、センサシステム110に送信する。センサシステム110は、同期パケットFollow_Upを受信すると、同期パケットFollow_Upに載せられている送信タイムスタンプt1を保持する。なお、図3では、タイムサーバ101は、同期パケットSyncの送信タイムスタンプt1を同期パケットFollow_Upに載せて送信する方法を示した。この方法以外にも、タイムサーバ101は、同期パケットSyncの送信タイムスタンプt1を同期パケットFollow_Upに載せず、同期パケットSync自身に載せて送信してもよい。
次に、ステップS303において、センサシステム110は、同期パケットDelay_Requestをタイムサーバ101に送信する。センサシステム110は、同期パケットDelay_Requestを送信すると、その時のDelay_Requestの送信タイムスタンプt3を保持する。タイムサーバ101は、同期パケットDelay_Requestを受信すると、その時のDelay_Requestの受信タイムスタンプt4を保持する。
次に、ステップS304において、タイムサーバ101は、同期パケットDelay_Responseをセンサシステム110に送信する。このとき、タイムサーバ101は、同期パケットDelay_Requestの受信タイムスタンプt4を同期パケットDelay_Responseに載せてセンサシステム110に送信する。センサシステム110は、同期パケットDelay_Responseを受信すると、同期パケットDelay_Responseに載せられている受信タイムスタンプt4を保持する。
センサシステム110は、ステップS301~S304の同期パケットSync、Follow_Up、Delay_Request、Delay_Responseのやりとりから平均伝送遅延時間Tdを算出し、センサシステム110内の時刻を補正する。平均伝送遅延時間Tdは、以下の式で与えることができる。
Td={(t2-t1)+(t4-t3)}/2
Td={(t2-t1)+(t4-t3)}/2
具体的には、センサシステム110は、同期パケットDelay_Requestをタイムサーバ101に送信する。そして、図2のタイムスタンプ制御部210は、PTP時刻同期処理シーケンスにおける送信タイムスタンプt3を所定のTS&TAG記憶部#N216に格納する。そして、CPU200は、送信タイムスタンプt3を用いてPTP時刻同期処理を実行する。
以下、図2のPHY/MAC205へのタグの送出、タイムスタンプとタグの振分処理およびPTP時刻同期処理について説明する。
図4は、第1実施形態に係るパケット送信要求処理を示すフローチャートである。第1実施形態では、図2のCPU200および映像パケット処理部201がDMA制御部204に送信要求し、DMA制御部204の送信要求口を一つずつ使用する場合を例にとる。なお、ステップS402~S406は、CPU200による処理を示し、ステップS412~S416は、映像パケット処理部201による処理を示す。
図4のステップS401において、図2のセンサシステム110の起動後、本処理が開始される。
次に、ステップS402において、CPU200は、送信するパケットがあるかどうかを判断する。送信するパケットは、例えば、アプリケーションから送信要求され、制御端末103とセンサシステム110との間の制御のためのTCP/IPパケットである。送信するパケットは、タイムサーバ101とセンサシステム110との間の時刻同期のためのPTPパケットであってもよい。CPU200は、送信するパケットがある場合は、ステップS403に移行し、送信するパケットがない場合は、ステップS402に戻る。
次に、ステップS402において、CPU200は、送信するパケットがあるかどうかを判断する。送信するパケットは、例えば、アプリケーションから送信要求され、制御端末103とセンサシステム110との間の制御のためのTCP/IPパケットである。送信するパケットは、タイムサーバ101とセンサシステム110との間の時刻同期のためのPTPパケットであってもよい。CPU200は、送信するパケットがある場合は、ステップS403に移行し、送信するパケットがない場合は、ステップS402に戻る。
ステップS403において、CPU200は、パケット送信の準備を行う。具体的には、CPU200は、第一記憶部202に送信データを格納し、DMA制御部204がパケット転送するためのディスクリプタおよびタグを生成する。CPU200は、パケット送信準備を完了すると、ステップS404に移行する。
ステップS404において、CPU200は、ステップS403で生成したタグをレジスタ部211にセットする。具体的には、CPU200は、CPU200が使用するDMA制御部204の要求口に対応したレジスタ部211にタグを書き込む。CPU200は、タグの書き込みを完了すると、ステップS405に移行する。
ステップS405において、CPU200は、DMA制御部204にパケット送信を要求する。CPU200は、パケットの送信要求を完了すると、ステップS406に移行する。
ステップS406において、CPU200は、ステップS402~S405の一連の処理を継続するかどうかを判断する。このとき、CPU200は、外部機器との通信状態を終了させる要因が発生した場合はステップS407に移行し、外部機器との通信状態を終了させる要因が発生してない場合はステップS402に戻る。
ステップS412において、映像パケット処理部201は、送信するパケットがあるかどうかを判断する。例えば、映像パケット処理部201は、制御端末103からセンサシステム110に対してカメラ111を用いた撮像を要求された場合、撮像データを処理し、映像パケットを生成・送信する。映像パケット処理部201は、送信するパケットがある場合は、ステップS413に移行し、送信するパケットがない場合は、ステップS412に戻る。
ステップS413において、映像パケット処理部201は、パケット送信の準備を行う。具体的には、映像パケット処理部201は、第二記憶部203に送信データを格納し、DMA制御部204がパケット転送するためのディスクリプタおよびタグを生成する。なお、映像パケット処理部201は、その内部に記憶部を別途持ち、その記憶部にディスクリプタおよびタグを生成してもよい。映像パケット処理部201は、パケット送信準備を完了すると、ステップS414に移行する。
ステップS414において、映像パケット処理部201は、ステップS413で生成したタグをレジスタ部211にセットする。具体的には、映像パケット処理部201は、映像パケット処理部201が使用するDMA制御部204の要求口に対応したレジスタ部211にタグを書き込む。映像パケット処理部201は、タグの書き込みを完了すると、ステップS415に移行する。
ステップS415において、映像パケット処理部201は、DMA制御部204にパケット送信を要求する。映像パケット処理部201は、パケットの送信要求を完了すると、ステップS416に移行する。
ステップS416において、映像パケット処理部201は、ステップS412~S415の一連の処理を継続するかどうかを判断する。このとき、映像パケット処理部201は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS407に移行し、外部機器との通信状態を終了させる要因が発生してない場合は、ステップS412に戻る。
CPU200および映像パケット処理部201は、ステップS407に移行すると、処理を終了する。このとき、CPU200および映像パケット処理部201は、DMA制御部204へパケット送信要求を実施せず、センサシステム110は、外部機器と非通信状態になる。
図5は、第1実施形態に係るパケット送信処理を示すフローチャートである。
図5のステップS501において、図2のセンサシステム110の起動後、本処理が開始される。
次に、ステップS502において、DMA制御部204は、図4のステップS405またはステップS415のパケット送信要求を受信したかどうかを判断する。このとき、DMA制御部204は、送信要求を受信した場合は、ステップS503に移行し、送信要求を受信してない場合は、ステップS502に戻る。
図5のステップS501において、図2のセンサシステム110の起動後、本処理が開始される。
次に、ステップS502において、DMA制御部204は、図4のステップS405またはステップS415のパケット送信要求を受信したかどうかを判断する。このとき、DMA制御部204は、送信要求を受信した場合は、ステップS503に移行し、送信要求を受信してない場合は、ステップS502に戻る。
ステップS503において、DMA制御部204は、パケット送信の優先制御を実施する。このとき、DMA制御部204には、CPU200と映像パケット処理部201のそれぞれに割り当てられた専用の送信要求口を設けることができる。そして、CPU200と映像パケット処理部201は、それぞれに割り当てられた専用の送信要求口に送信要求する。ここで、DMA制御部204は、予め決められた優先制御ルールに従ってパケット送信の順番を決定する。
例えば、CPU200が映像パケット処理部201よりも先に送信要求していた場合でも、映像パケット処理部201の映像パケットを最優先で送信する優先制御ルールが設定されているものとする。このとき、DMA制御部204は、CPU200から送信要求されたパケットよりも先に映像パケット処理部201から送信要求された映像パケットを送信する。
あるいは、CPU200または映像パケット処理部201は、送信要求口をパケット種別によって使い分けるようにしてもよい。例えば、時刻同期に用いるPTPパケットが優先的に送信され、映像パケットまたは制御で使用するTCP/IPパケットなどは優先度を下げて送信されるように優先制御ルールを設定してもよい。これらの優先制御ルールは一例であり、優先制御ルールはこれに限らない。DMA制御部204は、パケット送信の順番を決定すると、ステップS504に移行する。
あるいは、CPU200または映像パケット処理部201は、送信要求口をパケット種別によって使い分けるようにしてもよい。例えば、時刻同期に用いるPTPパケットが優先的に送信され、映像パケットまたは制御で使用するTCP/IPパケットなどは優先度を下げて送信されるように優先制御ルールを設定してもよい。これらの優先制御ルールは一例であり、優先制御ルールはこれに限らない。DMA制御部204は、パケット送信の順番を決定すると、ステップS504に移行する。
ステップS504において、DMA制御部204は、ステップS503で決定したパケット送信の順番によりディスクリプタに従ってPHY/MAC205にパケットを送信する。DMA制御部204は、パケット送信が完了すると、ステップS505に移行する。
ステップS505において、PHY/MAC205は、DMA制御部204によって送出されたパケットを受信するとともに、図2のタイムスタンプ制御部210によって送出されたタグを受信する。タイムスタンプ制御部210からPHY/MAC205に送出されるタグは、所定情報を基に選択処理部213により選択されたタグである。PHY/MAC205は、パケットとタグを受信すると、ステップS506に移行する。
ステップS506において、PHY/MAC205は、DMA制御部204から受信したパケットをネットワーク208へ送信する。そして、PHY/MAC205は、パケット送信完了のタイミングに基づいてタイムスタンプおよびタグをタイムスタンプ制御部に210に送信する。PHY/MAC205は、ネットワーク208へパケットを送信し、タイムスタンプおよびタグをタイムスタンプ制御部に210に送信すると、ステップS507に移行する。
ステップS507において、PHY/MAC205は、ステップS502~S506の一連の処理を継続するかどうかを判断する。PHY/MAC205は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS508に移行し、部機器との通信状態を終了させる要因が発生してない場合は、ステップS502に処理を戻す。
PHY/MAC205は、ステップS508に移行すると、処理を終了する。このとき、CPU200および映像パケット処理部201は、DMA制御部204へパケット送信要求を実施せず、センサシステム110は、外部機器と非通信状態になる。
図6は、第1実施形態に係る送信タイムスタンプ制御処理を示すフローチャートである。
図6のステップS601において、図2のセンサシステム110の起動後、本処理が開始される。
次に、ステップS602では、タイムスタンプ制御部210は、図4のステップS402またはステップS412においてCPU200または映像パケット処理部201がタグをレジスタ部211に書き込んだかどうかを判断する。タイムスタンプ制御部210は、レジスタ部211にタグが書き込まれた場合は、ステップS603に移行し、レジスタ部211にタグが書き込まれてない場合は、ステップS602に戻る。
図6のステップS601において、図2のセンサシステム110の起動後、本処理が開始される。
次に、ステップS602では、タイムスタンプ制御部210は、図4のステップS402またはステップS412においてCPU200または映像パケット処理部201がタグをレジスタ部211に書き込んだかどうかを判断する。タイムスタンプ制御部210は、レジスタ部211にタグが書き込まれた場合は、ステップS603に移行し、レジスタ部211にタグが書き込まれてない場合は、ステップS602に戻る。
ステップS603において、レジスタ部211は、CPU200または映像パケット処理部201によって書き込まれたタグをTAG記憶部#N212に格納する。このとき、レジスタ部211は、DMA制御部204が持つ送信要求口単位でタグをTAG記憶部#N212に格納する。例えば、レジスタ部211は、CPU200が書き込んだタグをCPU200専用のTAG記憶部212に格納し、映像パケット処理部201が書き込んだタグを映像パケット処理部201専用のTAG記憶部212に格納する。ここでは、CPU200および映像パケット処理部201がそれぞれ一つの送信要求口を使用する場合を例にとるが、CPU200および映像パケット処理部201は、二つ以上の送信要求口を使用してもよい。レジスタ部211は、TAG記憶部#N212にタグを書き込むと、ステップS604に処理を移行させる。
ステップS604において、タイムスタンプ制御部210は、ステップS602~S603の一連の処理を継続するかどうかを判断する。タイムスタンプ制御部210は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS605に移行し、外部機器との通信状態を終了させる要因が発生してない場合は、ステップS602に戻る。
また、ステップS612では、選択処理部213は、図5のステップS504においてDMA制御部204がPHY/MAC205に送信したパケットを検知したかどうかを判断する。例えば、選択処理部213は、AXI4-STREAMにおけるTVALID信号がアサートされることでパケット送信を検知できる。ただし、パケット送信の検知方法は、AXI4-STREAMインターフェースを用いる方法に限定されることなく、これ以外の方法でもよい。選択処理部213は、パケットを検知すると、ステップS613に移行する。
ステップS613において、選択処理部213は、DMA制御部204とPHY/MAC205とのバスインターフェースをスヌープ処理することで所定情報を読み取る。所定情報は、送信要求したリクエスタの情報、送信パケットがDMA制御部204のどの送信要求口から送信されているのかの情報、送信パケットのパケット種別、あるいは送信パケットに付与されたタグなどである。選択処理部213は、所定情報を読み取ると、ステップS614に移行する。
所定情報を読み取る方法としては、例えば、DMA制御部204がAXI4-STREAMのTUSER、TDEST信号などに送信要求口情報を載せて送信し、選択処理部213がスヌープ処理して、その送信要求口情報を読み取る方法がある。
あるいは、選択処理部213は、DMA制御部204が送信したパケットのMACヘッダをスヌープ処理してEtherType領域を読み取る方法でもよい。このとき、選択処理部213は、EtherType領域に格納された値から送信パケットの種別を判別することができる。
あるいは、CPU200または映像パケット処理部201は、送信パケットのヘッダ領域またはデータ領域にタグを埋め込んでもよい。そして、選択処理部213は、DMA制御部204とPHY/MAC205間の通信インターフェースをスヌープ処理し、送信パケットのヘッダ領域またはデータ領域に埋め込まれたタグを読み取る方法でもよい。ここで、送信パケットのヘッダ領域またはデータ領域にタグを埋め込むことにより、DMA制御部204から出力されるパケットの順番の変更に合わせてタグの順番も変更される。このため、選択処理部213は、MA制御部204から出力されるパケットの順番が変更された場合においても、DMA制御部204から出力されるパケットの順番に合わせてパケットとタイムスタンプを対応付けるタグを読み取ることができる。
あるいは、所定情報を送信する専用インターフェースをDMA制御部204に設けてもよい。このとき、DMA制御部204は、専用インターフェースを介して所定情報を選択処理部213に直接送信することで、選択処理部213は、所定情報を取得することができる。
ステップS614において、選択処理部213は、ステップS613で読み取った所定情報を基にTAG記憶部#N212を選択する。例えば、選択処理部213は、ステップS613で読み取った所定情報を基にCPU200または映像パケット処理部201のどちらが送信したパケットかを判断し、TAG記憶部#N212を選択する。あるいは、選択処理部213は、EtherTypeよりパケット種別情報を取得し、CPU200または映像パケット処理部201のどちらが送信したパケットかどうかを判断し、TAG記憶部#N212を選択してもよい。選択処理部213は、TAG記憶部#N212の選択を完了すると、ステップS615に移行する。
ステップS615において、選択処理部213は、ステップS614で決定したTAG記憶部#N212に格納されているタグをPHY/MAC205に送信する。ここで、選択処理部213は、ステップS614で決定したTAG記憶部#N212にタグが格納されていない場合、CPU200または映像パケット処理部201がセットするタグでなく、任意のタグをPHY/MAC205に送信する。選択処理部213は、PHY/MAC205にタグを送信すると、ステップS616に移行する。
ステップS616において、選択処理部213は、ステップS612~S615の一連の処理を継続するかどうかを判断する。選択処理部213は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS605に移行し、外部機器との通信状態を終了させる要因が発生してない場合は、ステップS612に移行する。
また、ステップS622において、TS&TAG一時記憶部214は、PHY/MAC205が出力したタイムスタンプとタグを一時的に格納する。そして、TS&TAG一時記憶部214は、タイムスタンプとタグの格納完了を振分処理部215に通知する。TS&TAG一時記憶部214は、タイムスタンプとタグの格納が完了すると、ステップS623に移行し、タイムスタンプとタグの格納が完了してないならば、ステップS622に戻る。
ステップS623において、振分処理部215は、TS&TAG一時記憶部214から、タイムスタンプとタグの格納完了の通知を受信する。そして、振分処理部215は、所定情報に基づいて、TS&TAG一時記憶部214に格納されたタイムスタンプとタグをTS&TAG記憶部#N216に振り分ける。
具体的には、振分処理部215は、TS&TAG一時記憶部214からのタイムスタンプとタグの格納完了の通知を受信し、所定情報を基に選択処理部213がどのTAG記憶部#N212を選択したかを示す選択情報を受信する。そして、振分処理部215は、それらの情報に基づいて振分処理を実施する。あるいは、CPU200および映像パケット処理部201は、振分条件情報をタグに含めてレジスタ部211にセットする。そして、振分処理部215は、TS&TAG一時記憶部214に格納されたタグから振分条件情報を読み取り、振り分け処理を実行するようにしてもよい。振分処理部215は、タイムスタンプとタグの振り分け処理を完了すると、ステップS624に移行する。
ステップS624において、振分処理部215は、ステップS622~S623の一連の処理を継続するかどうかを判断する。振分処理部215は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS605に移行し、外部機器との通信状態を終了させる要因が発生してない場合は、ステップS622に処理を戻す。
タイムスタンプ制御部210は、ステップS605に移行すると、処理を終了する。このとき、CPU200および映像パケット処理部201は、DMA制御部204へパケット送信要求を実施せず、センサシステム110は、外部機器と非通信状態になる。
図7は、第1実施形態に係るPTP時刻同期処理を示すフローチャートである。PTP時刻同期処理では、CPU200は、タイムスタンプ制御部210によって振り分けられた同期パケットDelay_Requestの送信タイムスタンプを用いる。そして、CPU200は、タイムサーバ101とセンサシステム110間のPTP時刻同期処理を実施する。
図7のステップS701において、図1の同期撮像システム100のタイムサーバ101がPTPマスタ、図2のセンサシステム110がPTPスレーブと決定されると、本処理が開始される。
次に、ステップS702において、センサシステム110は、タイムサーバ101から同期パケットSync、Follow_Upを受信したかどうかを判断する。センサシステム110は、同期パケットSync、Follow_Upを受信した場合は、ステップS703、ステップS704に移行し、同期パケットSync、Follow_Upを受信してない場合は、ステップS702に戻る。
ここで、同期パケットSync、Follow_Upの送受信処理およびPTP時刻同期処理は、センサシステム101のCPU200または映像パケット処理部201によって実施される。以下の説明では、同期パケットの処理はCPU200によって実施されるものとする。
ここで、同期パケットSync、Follow_Upの送受信処理およびPTP時刻同期処理は、センサシステム101のCPU200または映像パケット処理部201によって実施される。以下の説明では、同期パケットの処理はCPU200によって実施されるものとする。
ステップS703において、CPU200は、同期パケットSync、Follow_Upのタイムスタンプt1、t2を取得する。CPU200は、タイムスタンプt1、t2の取得を完了すると、ステップS708に移行する。
また、ステップS704において、CPU200は、同期パケットDelay_Requestをタイムサーバ101に送信し、タイムスタンプt3を取得する。具体的には、CPU200は、パケット送信をDMA制御部204に要求し、同期パケットDelay_Requestのタグをタイムスタンプ制御部210のレジスタ部211にセットする。そして、タイムスタンプ制御部210は、PHY/MAC205に対してタグを送信する。そして、PHY/MAC205は、同期パケットDelay_Requestを送信完了するタイミングでタイムスタンプとタグを出力する。そして、タイムスタンプ制御部210は、タイムスタンプとタグをTS&TAG記憶部#N216に格納してレジスタ部211から読み取り可能な状態にする。そして、DMA制御部204は、同期パケットDelay_Requestの送信を完了することで、CPU200に送信完了を通知する。そして、CPU200は、DMA制御部204から送信完了通知を受信すると、パケット送信要求時に生成したタグとレジスタ部211から読み取ったタグが一致することを確認する。そして、CPU200は、タグが一致したタイムスタンプを同期パケットDelay_Requestのタイムスタンプt3として取得する。CPU200は、同期パケットDelay_Requestの送信が完了した場合、ステップS705に移行する。
ステップS705において、CPU200は、タイムサーバ101から同期パケットDelay_Responseを受信したかどうかを判断する。CPU200は、同期パケットDelay_Responseを受信した場合は、ステップS707に移行し、同期パケットDelay_Responseを受信してない場合は、ステップS706に移行する。
ステップS706において、CPU200は、タイムサーバ101から同期パケットDelay_Responseを受信せず、一定時間経過したかどうかを判断する。CPU200は、一定時間経過した場合は、ステップS702に戻り、一定時間経過してない場合は、ステップS705に戻る。
ステップS707において、CPU200は、同期パケットDelay_Responseよりタイムスタンプt4を取得する。このとき、PHY/MAC205は、タイムサーバ101から送信された同期パケットDelay_Responseを受信し、DMA制御部204により所定の記憶部にDMA転送される。そして、CPU200は、タイムサーバ101が同期パケットDelay_Requestを受信したタイムスタンプt4を、同期パケットDelay_Responseから取得する。CPU200は、タイムスタンプt4を取得すると、ステップS708に移行する。
ステップS708において、CPU200は、取得したタイムスタンプt1~t4を用いてタイムサーバ101の時刻とセンサシステム110の時刻との時刻差を計算して補正量を決定する。CPU200は、時刻の補正量を決定すると、ステップS709に移行する。
ステップS709において、CPU200は、ステップS708で決定した補正量に基づいてセンサシステム110の時刻を補正する。センサシステム110は、この補正処理が完了することで、タイムサーバ101と時刻同期することができる。CPU200は、時刻補正が完了すると、ステップS710に移行する。
ここで、一度に時刻補正する量が大きい場合、センサシステム110全体の動作が不安定になることがある。そのため、CPU200は、一定時間をかけて徐々に時刻補正してもよいし、一度に補正する量に制限をかけるようにしてもよい。
ステップS710において、センサシステム110は、継続して稼働し続けるかどうかを判断する。このとき、図1の制御端末103は、全てのセンサシステム110a~110zの同期処理を停止するように指示してもよいし、指定したセンサシステム110a~110zのみの同期処理を停止するように指示してもよい。センサシステム110は、稼働を継続する場合は、ステップS702に戻り、稼働を継続する場合は、ステップS711に移行し、この処理を終了する。
以上説明したように、上述した第1実施形態によれば、DMA制御部204は、リクエスタが送信要求した順番と異なる順番で通信パケットをPHY/MAC205に転送することがある。ここで、タイムスタンプ制御部210は、DMA制御部204とPHY/MAC205との間のインターフェースから読み取り可能な所定情報を取得する。そして、タイムスタンプ制御部210は、その所定情報に基づいて、通信パケットとタイムスタンプとを対応付けるタグの出力を制御する。これにより、リクエスタは、PHY/MAC205から出力されるタイムスタンプと、リクエスタが送信要求した通信パケットとの対応付けが可能となる。
<第2実施形態>
第2実施形態では、図2のCPU200がDMA制御部204に送信要求し、DMA制御部204の送信要求口を2つ以上使用する場合を例にとる。なお、DMA制御部204、PHY/MAC205およびタイムスタンプ制御部210については、第1実施形態と同様に動作するため、説明を省略する。
第2実施形態では、図2のCPU200がDMA制御部204に送信要求し、DMA制御部204の送信要求口を2つ以上使用する場合を例にとる。なお、DMA制御部204、PHY/MAC205およびタイムスタンプ制御部210については、第1実施形態と同様に動作するため、説明を省略する。
図8は、第2実施形態に係るパケット送信要求処理を示すフローチャートである。なお、図8では、CPU200がDMA制御部204に対してパケット種別ごと送信要求する場合を例にとる。第2実施形態では、パケット種別がTCP/IPパケット、PTPパケット、それ以外のパケットの場合を例にとるが、これは一例であり、パケット種別はこれらに限らない。
図8のステップS801において、センサシステム110の起動後、本処理が開始される。
次に、ステップS802において、CPU200は、送信するパケットがあるかどうかを判断する。送信するパケットは、例えば、アプリケーションから送信要求され、制御端末103とセンサシステム110との間の制御のためのTCP/IPパケットである。送信するパケットは、タイムサーバ101とセンサシステム110との間の時刻同期のためのPTPパケットであってもよい。CPU200は、送信するパケットがある場合は、ステップS803に移行し、送信するパケットがない場合は、ステップS802に戻る。
次に、ステップS802において、CPU200は、送信するパケットがあるかどうかを判断する。送信するパケットは、例えば、アプリケーションから送信要求され、制御端末103とセンサシステム110との間の制御のためのTCP/IPパケットである。送信するパケットは、タイムサーバ101とセンサシステム110との間の時刻同期のためのPTPパケットであってもよい。CPU200は、送信するパケットがある場合は、ステップS803に移行し、送信するパケットがない場合は、ステップS802に戻る。
ステップS803において、CPU200は、ステップS802で送信するパケットがTCP/IPパケットであるかどうかを判断する。CPU200は、送信するパケットがTCP/IPパケットである場合は、ステップS804に移行し、送信するパケットがTCP/IPパケットでない場合は、ステップS813に移行する。
ステップS804において、CPU200は、パケット送信の準備を行う。具体的には、CPU200は、第一記憶部202に送信データを格納し、DMA制御部204がパケット転送するためのディスクリプタおよびタグを生成する。CPU200は、パケット送信準備を完了すると、ステップS805に移行する。
ステップS805において、CPU200は、ステップS803で生成したタグをレジスタ部211にセットする。具体的には、CPU200は、CPU200が使用するDMA制御部204の送信要求口に対応したレジスタ部211にタグを書き込む。例えば、CPU200は、TCP/IPパケット、PTPパケット、それ以外のパケットを送信するために3つに送信要求口を使用する。そして、CPU200は、それぞれの送信要求口に対応するレジスタ部211にそれぞれのタグを書き込む。CPU200は、タグの書き込みを完了すると、ステップS806に移行する。
ステップS806において、CPU200は、DMA制御部204にパケット送信を要求する。具体的には、CPU200は、TCP/IPパケット、PTPパケット、それ以外のパケットに対応するDMA制御部204の送信要求口に送信要求する。CPU200は、送信要求を完了すると、ステップS807に移行する。
ステップS813において、CPU200は、ステップS802で送信するパケットがPTPパケットであるかどうかを判断する。CPU200は、送信するパケットがPTPパケットである場合は、ステップS814に移行し、送信するパケットがPTPパケットでない場合はステップS824に移行する。
ステップS814~S816の処理は、ステップS804~S806の処理に相当する。ただし、ステップS814~S816では、PTPパケットの送信処理を実施する。CPU200は、ステップS816の処理を完了すると、ステップS807に移行する。
ステップS824~S826の処理は、ステップS804~S806の処理に相当する。ただし、ステップS824~S826では、TCP/IPパケットおよびPTPパケット以外の送信パケットの送信処理を実施する。CPU200は、ステップS826の処理を完了すると、ステップS807に移行する。
ステップS807において、CPU200は、ステップS802~S806、S813~S816、S824~S826の一連の処理を継続するかどうかを判断する。このとき、CPU200は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS808に移行し、外部機器との通信状態を終了させる要因が発生してない場合は、ステップS802に戻る。
CPU200は、ステップS808に移行すると、処理を終了する。このとき、CPU200は、DMA制御部204へパケット送信要求を実施せず、センサシステム110は、外部機器と非通信状態になる。
以上説明したように、上述した第2実施形態によれば、リクエスタが送信要求した順番と異なる順番でDMA制御部204が通信パケットをPHY/MAC205に転送したものとする。この場合においても、リクエスタは、DMA制御部204の送信要求口を2つ以上使用することを可能としつつ、PHY/MAC205から出力されるタイムスタンプと、リクエスタが送信要求した通信パケットとの対応付けが可能となる。
<第3実施形態>
第3実施形態では、図2のCPU200および映像パケット処理部201がDMA制御部204に送信要求し、CPU200および映像パケット処理部201がそれぞれDMA制御部204の送信要求口を2つ以上使用する場合を例にとる。なお、DMA制御部204、PHY/MAC205およびタイムスタンプ制御部210については、第1実施形態と同様に動作するため、説明は省略する。
第3実施形態では、図2のCPU200および映像パケット処理部201がDMA制御部204に送信要求し、CPU200および映像パケット処理部201がそれぞれDMA制御部204の送信要求口を2つ以上使用する場合を例にとる。なお、DMA制御部204、PHY/MAC205およびタイムスタンプ制御部210については、第1実施形態と同様に動作するため、説明は省略する。
図9は、第3実施形態に係るパケット送信要求処理を示すフローチャートである。なお、図9では、CPU200および映像パケット処理部201がDMA制御部204に対してパケット種別ごとに送信要求する場合を例にとる。
図9のステップS901において、センサシステム110の起動後、本処理が開始される。なお、図9のステップS802~S807、S813~S816、S824~S826の処理は、図8の処理と同様のため、説明を省略する。
ステップS902において、映像パケット処理部201は、送信するパケットがあるかどうかを判断する。例えば、映像パケット処理部201は、制御端末103からセンサシステム110に対してカメラ111を用いた撮像を要求された場合、撮像データを処理し、映像パケットを生成・送信する。映像パケット処理部201は、映像パケット以外のデータを処理してパケットを生成・送信してもよい。映像パケット処理部201は、送信するパケットがある場合は、ステップS903に移行し、送信するパケットがない場合は、ステップS902に戻る。
ステップS902において、映像パケット処理部201は、送信するパケットがあるかどうかを判断する。例えば、映像パケット処理部201は、制御端末103からセンサシステム110に対してカメラ111を用いた撮像を要求された場合、撮像データを処理し、映像パケットを生成・送信する。映像パケット処理部201は、映像パケット以外のデータを処理してパケットを生成・送信してもよい。映像パケット処理部201は、送信するパケットがある場合は、ステップS903に移行し、送信するパケットがない場合は、ステップS902に戻る。
ステップS903において、映像パケット処理部201は、ステップS902で送信するパケットが映像パケットであるかどうかを判断する。映像パケット処理部201は、送信するパケットが映像パケットである場合は、ステップS904に移行し、送信するパケットが映像パケットでない場合は、ステップS914に移行する。
ステップS904において、映像パケット処理部201は、パケット送信の準備を行う。具体的には、映像パケット処理部201は、第二記憶部203に送信データを格納し、DMA制御部204がパケット転送するためのディスクリプタおよびタグを生成する。あるいは、映像パケット処理部201は、その内部に記憶部を別途持ち、その記憶部にディスクリプタおよびタグを生成してもよい。映像パケット処理部201は、パケット送信準備を完了すると、ステップS905に移行する。
ステップS905において、映像パケット処理部201は、ステップS904で生成したタグをレジスタ部211にセットする。具体的には、映像パケット処理部201は、映像パケット処理部201が使用するDMA制御部204の要求口に対応したレジスタ部211にタグを書き込む。例えば、映像パケット処理部201は、映像パケットまたはそれ以外のパケットを送信するために2つの送信要求口を使用する。そして、映像パケット処理部201は、それぞれの送信要求口に対応するレジスタ部211にそれぞれのタグを書き込む。映像パケット処理部201は、タグの書き込みを完了すると、ステップS906に移行する。
ステップS906において、映像パケット処理部201は、DMA制御部204にパケット送信を要求する。そして、映像パケット処理部201は、映像パケットおよびそれ以外の通信パケットに対応するDMA制御部204の送信要求口に送信要求する。映像パケット処理部201は、送信要求を完了すると、ステップS907に移行する。
ステップS914~S916の処理は、ステップS904~S906の処理に相当する。ただし、ステップS914~S916では、映像パケット処理部201は、映像パケット以外の通信パケットの送信処理を実施する。映像パケット処理部201は、ステップS916の処理を完了すると、ステップS907に移行する。
ステップS907において、映像パケット処理部201は、ステップS902~S906、S914~S916の一連の処理を継続するかどうかを判断する。このとき、映像パケット処理部201は、外部機器との通信状態を終了させる要因が発生した場合は、ステップS908に移行し、外部機器との通信状態を終了させる要因が発生してない場合は、ステップS902に戻る。
映像パケット処理部201は、ステップS908に移行すると、処理を終了する。このとき、映像パケット処理部201は、DMA制御部204へパケット送信要求を実施せず、センサシステム110は、外部機器と非通信状態になる。
以上説明したように、上述した第3実施形態によれば、複数のリクエスタのそれぞれが送信要求した順番と異なる順番でDMA制御部204が通信パケットをPHY/MAC205に転送したものとする。この場合においても、複数のリクエスタのそれぞれは、DMA制御部204の送信要求口を2つ以上使用することを可能としつつ、PHY/MAC205から出力されるタイムスタンプと、リクエスタが送信要求した通信パケットとの対応付けが可能となる。
<第4実施形態>
図10は、第4実施形態に係るカメラアダプタの構成例を示すブロック図である。
図10において、センサシステム110´は、図2のカメラアダプタ112の代わりにカメラアダプタ112´を備える。カメラアダプタ112´は、図2のカメラアダプタ112にFIFO220が追加されている。FIFO220は、DMA制御部204とPHY/MAC205との間に設けられる。ここで、タイムスタンプ制御部210が通信パケットと同時、または通信パケットよりも前にタグをPHY/MAC205に入力する場合、DMA制御部204は、通信パケットをFIFO220に格納してからPHY/MAC205に入力する。
図10は、第4実施形態に係るカメラアダプタの構成例を示すブロック図である。
図10において、センサシステム110´は、図2のカメラアダプタ112の代わりにカメラアダプタ112´を備える。カメラアダプタ112´は、図2のカメラアダプタ112にFIFO220が追加されている。FIFO220は、DMA制御部204とPHY/MAC205との間に設けられる。ここで、タイムスタンプ制御部210が通信パケットと同時、または通信パケットよりも前にタグをPHY/MAC205に入力する場合、DMA制御部204は、通信パケットをFIFO220に格納してからPHY/MAC205に入力する。
以上説明したように、上述した第4実施形態によれば、DMA制御部204とPHY/MAC205との間にFIFO220を設けることにより、所定情報を読み取り、タグを送信パケットに付与するまでのタイミング調整を実施することができる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給してもよい。そして、上述の実施形態の1以上の機能は、そのシステムまたは装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、FPGAまたはASIC)でも実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給してもよい。そして、上述の実施形態の1以上の機能は、そのシステムまたは装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、FPGAまたはASIC)でも実現可能である。
100 同期撮像システム、101 タイムサーバ、102 ハブ、103 制御端末、104 画像コンピューティングサーバ、105 ユーザ端末、107 GNSS、110 センサシステム
Claims (10)
- パケットの送信要求を行う要求手段と、
前記パケットの送信要求に基づいて前記パケットを転送する転送手段と、
前記転送手段にて転送された前記パケットを送信するとともに、前記パケットの送信に基づいてタイムスタンプを出力する送信手段と、
前記転送手段と前記送信手段との間のインターフェースから読み取り可能な所定情報に基づいて、前記パケットと前記タイムスタンプとを対応付けるタグの出力を制御する制御手段と、
を備えることを特徴とする通信装置。 - 前記制御手段は、前記転送手段と前記送信手段との間のインターフェースのスヌープ処理に基づいて、前記所定情報を読み取ることを特徴とする請求項1に記載の通信装置。
- 前記制御手段は、前記転送手段にて転送される前記パケットの順番に合わせて、前記パケットと前記タイムスタンプとを対応付けるタグを前記送信手段に入力することを特徴とする請求項1または2に記載の通信装置。
- 前記所定情報は、前記転送手段の送信要求口に送信要求された情報、前記転送手段にて転送されたパケットのパケット種別および前記パケットのヘッダ領域およびデータ領域に埋め込まれたタグのうちの少なくとも1つを含むことを特徴とする請求項1から3のいずれか1項に記載の通信装置。
- 前記制御手段は、
前記要求手段にて生成されたタグを格納する複数の第1キューと、
前記所定情報に基づいて前記複数の第1キューから一つの第1キューを選択し、前記選択した第1キューに格納されたタグを前記送信手段に出力する選択処理手段と、
を備えることを特徴とする請求項1から4のいずれか1項に記載の通信装置。 - 前記制御手段は、
前記送信手段から出力されたタイムスタンプおよびタグを格納する複数の第2キューと、
前記要求手段ごと、前記要求手段が前記転送手段に送信要求した送信要求口ごと、前記転送手段が転送したパケットの種別ごと、あるいはこれらの組み合わせに基づいて、前記タイムスタンプおよびタグを前記第2キューに振り分ける振分処理手段と、
を備えることを特徴とする請求項1から5のいずれか1項に記載の通信装置。 - 前記転送手段と前記送信手段との間に設けられ、先入れ先出し可能な記憶手段をさらに備え、
前記制御手段が前記パケットと同時、または前記パケットよりも前に前記タグを前記送信手段に入力する場合、前記転送手段は、前記パケットを前記記憶手段に格納してから前記送信手段に入力することを特徴とする請求項1から7のいずれか1項に記載の通信装置。 - 前記要求手段は、PTP(Precision Time Protocol)に対応していることを特徴とする請求項1から7のいずれか1項に記載の通信装置。
- パケットの送信要求を行うステップと、
前記パケットの送信要求に基づいて前記パケットを転送するステップと、
前記転送された前記パケットを送信するとともに、前記パケットの送信に基づいてタイムスタンプを出力するステップと、
前記パケットの転送時に用いられるインターフェースから読み取り可能な所定情報に基づいて、前記パケットと前記タイムスタンプとを対応付けるタグの出力を制御するステップと、
を備えることを特徴とする通信方法。 - コンピュータを請求項1から8のいずれか1項に記載の通信装置として動作させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021124343A JP2023019552A (ja) | 2021-07-29 | 2021-07-29 | 通信装置、通信方法およびプログラム |
US17/814,482 US20230032204A1 (en) | 2021-07-29 | 2022-07-22 | Communication apparatus, communication method, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021124343A JP2023019552A (ja) | 2021-07-29 | 2021-07-29 | 通信装置、通信方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023019552A true JP2023019552A (ja) | 2023-02-09 |
Family
ID=85038232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021124343A Pending JP2023019552A (ja) | 2021-07-29 | 2021-07-29 | 通信装置、通信方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230032204A1 (ja) |
JP (1) | JP2023019552A (ja) |
-
2021
- 2021-07-29 JP JP2021124343A patent/JP2023019552A/ja active Pending
-
2022
- 2022-07-22 US US17/814,482 patent/US20230032204A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230032204A1 (en) | 2023-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5867765B2 (ja) | マルチプロトコルのi/o相互接続の時間同期化 | |
EP2798506B1 (en) | Multi-protocol i/o interconnect time synchronization | |
CN102754395B (zh) | 由中央控制器控制的接收和存储数据分组的设备和方法 | |
CN111555834B (zh) | 基于ieee1588协议的无线网络的时钟同步方法及系统 | |
WO2010024855A1 (en) | System and method for reducing latency associated with timestamps in a multi-core, multi-threaded processor | |
JP3580789B2 (ja) | データ通信システム及び方法、コンピュータプログラム、記録媒体 | |
CN102763381B (zh) | 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法 | |
WO2014103144A1 (ja) | インタフェース装置、およびメモリバスシステム | |
US11336383B2 (en) | Packet scheduling system with desired physical transmission time for packets | |
JP2017050609A (ja) | 映像処理システム、映像処理装置、映像処理プログラム、及び映像処理方法 | |
JP2007501977A (ja) | イベントのタイムスタンプ | |
JP2023019552A (ja) | 通信装置、通信方法およびプログラム | |
JP5780157B2 (ja) | 計算機、並列計算機システム、同期方法、及びコンピュータプログラム | |
JP2022168409A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US11757614B2 (en) | Accurate timestamp correction | |
WO2023201822A1 (zh) | 多相机同步校正方法、装置及存储介质 | |
JP2021093695A (ja) | 同期制御装置、同期制御装置の制御方法、およびプログラム | |
JP2021164121A (ja) | 通信装置、通信方法およびプログラム | |
JP2024048661A (ja) | 通信装置およびその制御方法 | |
US20240072919A1 (en) | Communication apparatus and control method therefor | |
JP2022169044A (ja) | 通信装置及びその制御方法 | |
JP7480002B2 (ja) | 伝送装置、及び伝送システム | |
US20230155949A1 (en) | Communication apparatus, control method for communication apparatus, and storage medium | |
US20240072990A1 (en) | Synchronous control apparatus, synchronous imaging apparatus, synchronous control method, and storage medium | |
JP2024054943A (ja) | 通信装置およびその制御方法 |