以下、図面を参照して本発明の実施形態を説明する。ただし、本発明は以下の実施形態に限定されるものではない。
[第1実施形態]
第1実施形態による信号処理装置及び信号処理方法を図1乃至図11を用いて説明する。図10は、本実施形態による信号処理装置1001を示すブロック図である。ここでは、本実施形態による信号処理装置1001が撮像装置である場合を例に説明するが、これに限定されるものではない。
図10に示すように、本実施形態による信号処理装置1001は、撮像素子100と、画像処理部140と、システム制御部1003と、操作部1004と、表示部1005とを有する。信号処理装置1001には、撮像光学系(レンズユニット)1002が備えられる。また、信号処理装置1001には、記憶部1006が備えられる。撮像光学系1002及び記憶部1006は、信号処理装置1001の本体(ボディ)から着脱可能であってもよいし、着脱不能であってもよい。
システム制御部1003は、信号処理装置1001の各部を制御するとともに、信号処理装置1001全体の制御を司る。撮像素子100は、例えばCCDイメージセンサ又はCMOSイメージセンサである。撮像素子100の撮像面(図示せず)には、撮像光学系1002によって形成される被写体の光学像が結像される。撮像素子100の撮像面には、画素部(画像取得手段)105(図1参照)が備えられている。画素部105には、被写体の光学像を電気信号に変換するための不図示の複数の光電変換素子(フォトダイオード)が2次元的に配列されている。撮像素子100は、撮像光学系1002によって形成される被写体の光学像を光電変換することによってアナログの画素信号を生成し、アナログの画素信号に対してアナログ/デジタル変換を行うことによってデジタルの画素信号(画像データ)を生成する。撮像素子100によって取得される画像データは、例えば高速シリアル通信によって画像処理部140に送信される。
画像処理部140は、撮像素子100によって取得された画像データに対して所定の画像処理を行い、画像処理を施した画像データに対して圧縮処理等を行う。なお、撮像素子100と、画像処理部140とは、互いに異なるチップに集積されている。
操作部1004は、信号処理装置1001に対する操作をユーザが行うためのものである。例えば、撮影を行うための操作が、操作部1004を介してユーザによって行われる。また、撮影によって取得された画像の表示画角の変更の操作が、操作部1004を介してユーザによって行われる。表示部1005には、例えば、ライブビュー画像、又は、撮影によって取得された画像が表示される。また、表示部1005には、操作メニューが表示される。また、表示部1005には、信号処理装置1001の設定状態を示す情報等が表示される。信号処理装置1001によって取得された画像は、所定のファイル形式で記憶部1006に記憶される。
図1は、本実施形態による信号処理装置を示すブロック図である。図1には、信号処理装置1001に備えられた様々な構成要素のうちの撮像素子100と発振器101と画像処理部140とが抜き出して示されている。
撮像素子100は、タイミングジェネレータ(TG:Timing Generator)102〜104と、画素部105と、送信データ処理回路106、107と、パラレルシリアル変換器108〜113とを有する。撮像素子100は、PLL(Phase Locked Loop)114、115と、送信ドライバ116〜121とを更に有する。撮像素子100のこれらの構成要素は、第1チップに集積されている。
画像処理部140は、同期信号発生器(SSG:Sync Signal Generator)122と、受信ドライバ123〜128と、シリアルパラレル変換器129〜134と、リンク内スキュー調整回路135、136とを有する。画像処理部140は、データ処理回路137、138と、リンク間スキュー調整回路139と、クロック乗せ換え回路141とを更に有する。画像処理部140のこれらの構成要素は、第1チップとは異なる第2チップ(画像処理チップ)に集積されている。
本実施形態では、画素部105から出力される画素信号(画像信号)が、例えば2つの処理経路、即ち、リンクAの処理経路である第1の処理経路150と、リンクBの処理経路である第2の処理経路151とによって並行して処理される。第1の処理経路150には、送信データ処理回路106、パラレルシリアル変換器108〜110、PLL114、送信ドライバ116〜118、受信ドライバ123〜125、及び、シリアルパラレル変換器129〜131が備えられている。第1の処理経路150には、リンク内スキュー調整回路135、及び、データ処理回路137が更に備えられている。第2の処理経路151には、送信データ処理回路107、パラレルシリアル変換器111〜113、PLL115、送信ドライバ119〜121、受信ドライバ126〜128、及び、シリアルパラレル変換器132〜134が備えられている。第2の処理経路151には、リンク内スキュー調整回路136、及び、データ処理回路138が更に備えられている。クロック乗せ換え回路141は、第1の処理経路150と第2の処理経路151とにおいて共用される。
リンクAには、信号を伝送するレーンが例えば3つ備えられており、リンクBにも、信号を伝送するレーンが例えば3つ備えられている。パラレルシリアル変換器108、送信ドライバ116、受信ドライバ123及びシリアルパラレル変換器129は、リンクAの第1レーンLaneA1に備えられている。パラレルシリアル変換器109、送信ドライバ117、受信ドライバ124及びシリアルパラレル変換器130は、リンクAの第2レーンLaneA2に備えられている。パラレルシリアル変換器110、送信ドライバ118、受信ドライバ125及びシリアルパラレル変換器131は、リンクAの第3レーンLaneA3に備えられている。パラレルシリアル変換器111、送信ドライバ119、受信ドライバ126及びシリアルパラレル変換器132は、リンクBの第1レーンLaneB1に備えられている。パラレルシリアル変換器112、送信ドライバ120、受信ドライバ127及びシリアルパラレル変換器133は、リンクBの第2レーンLaneB2に備えられている。パラレルシリアル変換器113、送信ドライバ121、受信ドライバ128及びシリアルパラレル変換器134は、リンクBの第3レーンLaneB3に備えられている。
発振器101は、信号処理装置1001の動作の基準となるクロック信号(基準クロック)を、撮像素子100の各機能ブロック及び画像処理部140の各機能ブロックに供給する。図1に示すように、発振器101から出力されるクロック信号は、タイミングジェネレータ102〜104、送信データ処理回路106,107,PLL114,115,同期信号発生器122にそれぞれ入力される。なお、発振器101から出力されるクロック信号は、これらの機能ブロックのみならず、他の機能ブロックにも適宜供給される。撮像素子100の各機能ブロック及び画像処理部140の各機能ブロックは、発振器101から供給されるクロック信号に従って動作する。同期信号発生器122は、発振器101から供給されるクロック信号に同期するように、水平同期信号HD及び垂直同期信号VDを出力する。タイミングジェネレータ(駆動手段)102は、同期信号発生器122から供給される水平同期信号HD及び垂直同期信号VDに基づいて、撮像素子100の各機能ブロックを駆動するための駆動パルス信号(駆動信号)を生成する。
画素部105は、撮像素子100の撮像面に配されている。画素部105には、上述したように、被写体の光学像を電気信号に変換するための複数の光電変換素子が2次元的に配列されている。光電変換素子によって得られる画素信号は、タイミングジェネレータ102から供給される駆動パルス信号に従って、不図示の信号線に出力される。当該信号線に出力される画素信号は、不図示のアンプによって増幅される。アンプによって増幅されたアナログの画素信号は、不図示のA/D変換器によってデジタルの画素信号に変換される。こうして得られるデジタルの画素信号が画素部105から出力される。画素部105から出力される画素信号は、リンクAの処理経路である第1の処理経路150とリンクBの処理経路である第2の処理経路151とによって並行処理される。なお、ここでは、リンクが2つである場合を例に説明するが、処理経路の数は2つに限定されるものではない。また、ここでは、リンクAに3つのレーンが備えられており、リンクBにも3つのレーンが備えられている場合を例に説明するが、リンクA、Bにそれぞれ備えられるレーンの数は3つに限定されるものではない。
タイミングジェネレータ103は、タイミングジェネレータ102から供給される水平同期信号HD及び垂直同期信号VDに基づいてタイミング信号を生成し、生成したタイミング信号を第1の処理経路150に備えられた送信データ処理回路106に供給する。タイミングジェネレータ104は、タイミングジェネレータ102から供給される水平同期信号HD及び垂直同期信号VDに基づいてタイミング信号を生成し、生成したタイミング信号を第2の処理経路151に備えられた送信データ処理回路107に供給する。タイミングジェネレータ103は、第1の処理経路150の各部を駆動するために最適な位置に配されている。一方、タイミングジェネレータ104は、第2の処理経路151の各部を駆動するために最適な位置に配されている。このため、タイミングジェネレータ102とタイミングジェネレータ103との間の配線長と、タイミングジェネレータ102とタイミングジェネレータ104との間の配線長とは異なっている。配線長がこのように異なっているため、タイミングジェネレータ103から第1の処理経路150の各部に供給されるタイミング信号と、タイミングジェネレータ104から第2の処理経路151の各部に供給されるタイミング信号とは同期しない。このため、第1の処理経路150の各部と第2の処理経路151の各部とは、非同期で動作する。
送信データ処理回路(送信手段)106、107には、発振器101から出力されるクロック信号と、タイミングジェネレータ103、104からそれぞれ出力されるタイミング信号と、画素部105から出力される画素信号とがそれぞれ入力される。送信データ処理回路106、107は、発振器101からのクロック信号と、タイミングジェネレータ103、104からのタイミング信号とに基づいて、所定のプロトコルに従った処理を画素信号に対して行い、送信データを生成する。送信データ処理回路106、107は、生成した送信データをパラレルデータとして出力する。送信データ処理回路106、107は、画素部105によって取得される画素信号に基づくデータのみならず、トレーニングシーケンスのデータや制御コード等をも出力する。送信データ処理回路106、107は、伝送プロトコル上のリンク層に該当する。送信データ処理回路106、107は、それぞれ非同期で動作する。
パラレルシリアル変換器108〜110は、送信データ処理回路106の後段に位置している。パラレルシリアル変換器111〜113は、送信データ処理回路107の後段に位置している。パラレルシリアル変換器108〜113は、送信データ処理回路106、107からそれぞれ出力されるパラレルデータ(シリアル信号)をシリアルデータ(パラレル信号)に変換する。パラレルシリアル変換器108〜113によって得られたシリアルデータは、送信ドライバ116〜121を介して撮像素子100から出力される。
画像処理部140には、受信ドライバ123〜128が備えられている。送信ドライバ116〜121と受信ドライバ123〜128とは、配線によってそれぞれ電気的に接続されている。撮像素子100の送信ドライバ116〜121を介して出力されるシリアルデータは、受信ドライバ123〜128によってそれぞれ受信される。
PLL114、115は、パラレルシリアル変換器108〜113のシリアル伝送レートに応じたシリアルクロックをクロック信号からそれぞれ生成し、生成したシリアルクロックをパラレルシリアル変換器108〜110、111〜113にそれぞれ供給する。パラレルシリアル変換器108〜110において用いられるシリアルクロックと、パラレルシリアル変換器111〜113において用いられるシリアルクロックとは、周波数は同じであるが、異なるPLL114、115から供給されるものである。このため、パラレルシリアル変換器108〜110において用いられるシリアルクロックと、パラレルシリアル変換器111〜113において用いられるシリアルクロックとは、同期していない。
送信データ処理回路106から出力される複数のパラレルデータは、第1の処理経路150において処理される。送信データ処理回路107から出力される複数のパラレルデータは、第2の処理経路151において処理される。なお、ここでは、送信データ処理回路106、107が、それぞれ3つの出力セレクタ206〜208(図2参照)を介してデータを出力する場合を例に説明するが、これに限定されるものではない。
上述したように、第1の処理経路150と第2の処理経路151とは非同期で動作する。このため、リンクAに備えられた第1の処理経路150を伝搬するデータとリンクBに備えられた第2の処理経路151を伝搬するデータとの間にはスキューが生じ得る。このようなスキューは、リンク間スキューと称される。タイミングジェネレータ103とタイミングジェネレータ104とにタイミングジェネレータ102から分配される水平同期信号HDは、第1の処理経路150と第2の処理経路151とにおいて非同期で取り扱われる。このため、リンク間スキューの量は、水平転送期間(HD期間)毎に変動する。
送信データ処理回路106から出力されるデータは、例えば3つのレーンを伝搬する。パラレルシリアル変換器108〜110におけるリセット解除のタイミングの相違や、各々のレーンの配線長の相違に起因して、これらのレーンを伝搬するデータ間にはスキューが生じ得る。このようなスキューは、リンク内スキューと称される。また、送信データ処理回路107から出力されるデータも、例えば3つのレーンを伝搬する。パラレルシリアル変換器111〜113におけるリセット解除のタイミングの相違や、各々のレーンの配線長の相違に起因して、これらのレーンを伝搬するデータ間にもリンク内スキューが生じ得る。リンク内スキューの発生要因は動的に変化しないため、リンク内スキューの量は一定である。
図2は、送信データ処理回路106を示すブロック図である。なお、ここでは、送信データ処理回路106について説明するが、送信データ処理回路107の構成も、送信データ処理回路106の構成と同様である。送信データ処理回路106は、カウンタ201と、ステートマシン(FSM:Finite State Machine)202と、制御コード生成部203と、トレーニングシーケンス生成部204とをそれぞれ有する。送信データ処理回路106は、更に、IDLEコード生成部205と、出力セレクタ206〜208とをそれぞれ有する。
カウンタ201には、発振器101から供給されるクロック信号が入力される。カウンタ201は、クロック信号に基づいて処理サイクルのカウントを行い、カウントにより得られたカウント値をステートマシン202に供給する。ステートマシン202は、カウンタ201から供給されるカウント値と、タイミングジェネレータ103から供給されるタイミング信号とに基づいて制御信号を生成し、生成した制御信号を出力セレクタ206〜208に供給する。制御コード生成部203は、制御コードを生成し、生成した制御コードを出力セレクタ206〜208の各々に供給する。制御コード生成部203は、複数種の制御コードを生成する。制御コード生成部203によって生成される制御コードは、例えば、同期コード、無効コード及び終了コードである。同期コードは、水平同期信号HDに対応するように、データ列に挿入される。無効コードは、有効なデータが存在しない場合に、データ列に挿入される。終了コードは、1つの水平転送期間に対応するデータ列の末尾に付される。制御コードは、予め決定された語長の特定のパターンのデータ(シンボル)である。制御コードは、例えば4つのシンボルによって構成されるが、これに限定されるものではない。同期コードは、例えば、{第1の同期コード、第2の同期コード、第3の同期コード、第4の同期コード}={0x00、0x00、0xFF、0xFF}とすることができるが、これに限定されるものではない。このような特定のパターンのデータ(シンボル)を例えばパターンマッチングによって検出することによって、同期コードと、当該同期コードの位相とを検出することが可能である。トレーニングシーケンス生成部204は、トレーニングシーケンスのデータを生成し、生成したトレーニングシーケンスのデータを出力セレクタ206〜208の各々に供給する。トレーニングシーケンスのデータには、予め定められた特定の調整コードが含まれる。このような特定の調整コードは、リンク内スキューを解消する際に用いられる。IDLEコード生成部205は、IDLEコードを生成し、生成したIDLEコードを出力セレクタ206〜208の各々に供給する。IDLEコードは、送信すべき有効なデータが画素部105から出力されていない際に用いられる。画素部105から出力される画像データは、出力セレクタ206〜208の各々に供給される。
ステートマシン202から出力セレクタ206〜208に供給される制御信号は、所定のプロトコルに従って出力セレクタ206〜208からデータを出力するためのものである。ステートマシン202は、トレーニングシーケンス生成部204によって生成されるトレーニングシーケンスのデータが、出力セレクタ206〜208からそれぞれ出力されるデータ列の先頭に配されるように、出力セレクタ206〜208を制御する。ステートマシン202は、制御コード生成部203によって生成される制御コードが、出力セレクタ206〜208から出力されるデータ列の適切な位置に配されるように、出力セレクタ206〜208を制御する。ステートマシン202は、水平転送期間以外の期間においては、IDLEコード生成部205によって生成されたIDLEコードが出力セレクタ206〜208からそれぞれ出力されるように、出力セレクタ206〜208を制御する。なお、図2において、第1の出力データは、送信データ処理回路106からリンクAの第1レーンLaneA1に出力されるデータを意味している。また、図2において、第2の出力データは、送信データ処理回路106からリンクAの第2レーンLaneA2に出力されるデータを意味している。また、図2において、第3の出力データは、送信データ処理回路106からリンクAの第3レーンLaneA3に出力されるデータを意味している。
図1に示すように、受信ドライバ123〜128の後段には、シリアルパラレル変換器129〜134がそれぞれ備えられている。シリアルパラレル変換器129〜134には、受信ドライバ123〜128を介してシリアルデータが入力される。シリアルパラレル変換器129〜134は、入力されるシリアルデータを内部のシフトレジスタに蓄える。シリアルパラレル変換器129〜134は、シフトレジスタに蓄えたシリアルデータのうちから、予め決定された語長の特定のパターンのデータ(シンボル)を検出する。シリアルパラレル変換器129〜134は、特定のパターンのデータ(シンボル)が検出されたタイミングに従って、予め決定された語長毎にパラレルデータをクロック乗せ換え回路141に出力する。また、シリアルパラレル変換器129〜134は、シリアルパラレル変換器129〜134に入力されるシリアルデータから書き込みクロック信号をそれぞれ生成し、生成した各々の書き込みクロック信号をクロック乗せ換え回路141にそれぞれ供給する。また、シリアルパラレル変換器129〜134は、書き込みクロック信号をパラレルデータの語長に対応するように分周し、分周により得られた読み出しクロック信号をクロック乗せ換え回路141に出力する。なお、読み出しクロック信号を生成する手法は、これに限定されるものではない。例えば、不図示の発振器を設け、当該発振器から供給されるクロック信号をシリアルパラレル変換器129〜134から出力されるパラレルデータの語長に対応する周波数と同等になるように逓倍することによって、読み出しクロック信号を得るようにしてもよい。
クロック乗せ換え回路141は、FIFOの機能ブロックを備える。クロック乗せ換え回路141には、シリアルパラレル変換器129〜134から出力される信号、具体的には、パラレルデータ、書き込みクロック信号及び読み出しクロック信号が入力される。シリアルパラレル変換器129〜134からそれぞれ供給される書き込みクロック信号を用いて、クロック乗せ換え回路141に備えられたFIFOにパラレルデータが書き込まれる。シリアルパラレル変換器129〜134からそれぞれ供給される読み出しクロック信号のうちのいずれかを用いて、クロック乗せ換え回路141に備えられたFIFOからパラレルデータが読み出される。従って、シリアルパラレル変換器129〜134からそれぞれ出力されるパラレルデータは、共通の読み出しクロック信号に同期してクロック乗せ換え回路141から出力される。
シリアルパラレル変換器129〜131からそれぞれ出力され、クロック乗せ換え回路141によって共通の読み出しクロック信号に同期されたパラレルデータは、リンク内スキュー調整回路135に入力される。シリアルパラレル変換器132〜134からそれぞれ出力され、クロック乗せ換え回路141によって共通の読み出しクロック信号に同期されたパラレルデータは、リンク内スキュー調整回路136に入力される。リンク内スキュー調整回路135、136は、読み出しクロック信号に同期して動作する。リンク内スキュー調整回路135、136は、各々のパラレルデータのリンク内スキューを取り除き、リンク内スキューを取り除いたパラレルデータをデータ処理回路137、138にそれぞれ出力する。
リンク内スキュー調整回路135、136は、リンク内スキューを解消するためのものである。図3は、リンク内スキュー調整回路135を示すブロック図である。なお、ここでは、リンク内スキュー調整回路135について説明するが、リンク内スキュー調整回路136の構成も、リンク内スキュー調整回路135の構成と同様である。
リンク内スキュー調整回路135は、バッファ制御部301と、バッファ制御部311と、バッファ制御部321と、リードポインタ生成部330とを有する。バッファ制御部301には、カウンタ302と、調整コード検出部307と、出力セレクタ308と、バッファ群309とが備えられている。カウンタ302には、クロック信号が入力される。カウンタ302は、クロック信号に基づいて制御信号を生成し、生成した制御信号をスイッチ310に供給する。スイッチ310は、バッファ制御部301に入力されるパラレルデータの格納先となるバッファを切り換えるためのものである。バッファ群309には、例えば8つのバッファを含むバッファ群が備えられている。バッファ制御部301に入力されるパラレルデータの格納先は、カウンタ302から供給される制御信号に従って順次切り換えられる。このため、バッファ制御部301に入力されるパラレルデータは、バッファ群309に備えられた複数のバッファの各々に順次格納される。第1の期間においては、バッファ制御部301に入力されるパラレルデータは、第1のバッファ303aに格納される。第1の期間の次の第2の期間においては、バッファ制御部301に入力されるパラレルデータは、第2のバッファ303bに格納される。第2の期間の次の第3の期間においては、バッファ制御部301に入力されるパラレルデータは、第3のバッファ303cに格納される。同様にして、バッファ制御部301に入力されるパラレルデータは、不図示の第4のバッファ、不図示の第5のバッファ、不図示の第6のバッファ、不図示の第7のバッファ及び第8のバッファ303hに順次格納される。第8のバッファ303hへの格納が完了した後には、バッファ制御部301に入力されるパラレルデータの格納先は第1のバッファ303aに戻り、上記のような動作が繰り返される。出力セレクタ308は、バッファ群309に備えられた複数のバッファのうちのいずれかからの信号を選択的に出力する。調整コード検出部307は、予め決定された特定の調整コードをパラレルデータのうちから検出する。なお、図3において、第1のパラレルデータは、リンクAの第1レーンLaneA1を伝搬してリンク内スキュー調整回路135に入力されるパラレルデータを示している。また、図3において、第2のパラレルデータは、リンクAの第2レーンLaneA2を伝搬してリンク内スキュー調整回路135に入力されるパラレルデータを示している。また、図3において、第3のパラレルデータは、リンクAの第3レーンLaneA3を伝搬してリンク内スキュー調整回路135に入力されるパラレルデータを示している。
調整コード検出部307は、調整コードを検出した場合には、調整コードを検出したことを示す調整コード検出信号をリードポインタ生成部330に供給する。なお、バッファ制御部311、321の構成とバッファ制御部301の構成とは同様であるため、ここでは、バッファ制御部311、321の構成の説明を省略する。図3において、第1の調整コード検出信号は、バッファ制御部301からリードポインタ生成部330に供給される調整コード検出信号を意味している。また、図3において、第2の調整コード検出信号は、バッファ制御部311からリードポインタ生成部330に供給される調整コード検出信号を意味している。また、図3において、第3の調整コード検出信号は、バッファ制御部321からリードポインタ生成部330に供給される調整コード検出信号を意味している。
リードポインタ生成部330は、以下のような処理を行う。即ち、各々のバッファ制御部301、311、321から調整コード検出信号が供給されたタイミングと、全てのバッファ制御部301、311、321から調整コード検出信号が供給されるに至ったタイミングとに基づいて、以下のような処理を行う。リードポインタ生成部330は、これらに基づいて、各々のバッファ制御部301、311、321間の位相差を算出する。リードポインタ生成部330は、こうして算出された位相差に基づいて、各々のバッファ制御部301、311、321に対してバッファのリードポインタを通知する。図3において、第1のリードポインタは、リードポインタ生成部330からバッファ制御部301に供給されるリードポインタを意味している。第2のリードポインタは、リードポインタ生成部330からバッファ制御部311に供給されるリードポインタを意味している。第3のリードポインタは、リードポインタ生成部330からバッファ制御部321に供給されるリードポインタを意味している。また、図3において、第1の出力データは、リンク内スキュー調整回路135からリンクAの第1レーンLaneA1に出力されるデータを意味している。第2の出力データは、リンク内スキュー調整回路135からリンクAの第2レーンLaneA2に出力されるデータを意味している。第3の出力データは、リンク内スキュー調整回路135からリンクAの第3レーンLaneA3に出力されるデータを意味している。
図11は、リンク内スキュー調整回路135の動作の例を示す図である。なお、ここでは、リンク内スキュー調整回路135の動作を説明するが、リンク内スキュー調整回路136の動作もリンク内スキュー調整回路135の動作と同様である。リードポインタ生成部330は、バッファ制御部301、311、321から調整コード検出信号が供給されるのを待つ。リードポインタ生成部330は、バッファ制御部301、311、321のうちのいずれかから調整コード検出信号が出力されると、内部リードポインタのインクリメントを開始する。ここでは、バッファ制御部301からの第1の調整コード検出信号の供給に基づいて、内部リードポインタのインクリメントを開始する場合を例として示している。リードポインタ生成部330は、内部リードポインタと、調整コード検出信号が通知されるタイミングとに基づいて、各々のバッファ制御部301、311、321間のオフセット値を判定する。図11に示す例においては、第2の調整コード検出信号がHighレベルになったタイミングにおいて、内部リードポインタが1となっているため、リードポインタ生成部330は、バッファ制御部311のオフセットを1と判定する。また、図11に示す例においては、第3の調整コード検出信号がHighレベルになったタイミングにおいて、内部リードポインタが2となっているため、バッファ制御部321のオフセットを2と判定する。
バッファ制御部301、311、321の全てから調整コード検出信号が供給されるに至ると、リードポインタ生成部330は、各々のバッファ制御部301、311、321に対して、以下のような処理を行う。即ち、リードポインタ生成部330は、リンク内スキューを取り除くためのオフセット値を内部リードポインタに加えることにより得られるリードポインタを、バッファ制御部301、311、321に通知する。各々のバッファ制御部301、311、321は、こうして得られたリードポインタに従って、バッファ群309からデータを読み出す。このため、リンク内スキュー調整回路135は、リンク内スキューが取り除かれたデータを各々のレーンに出力することができる。
図4は、リンク内スキュー調整回路135、136の動作の例を示す図である。図4(a)は、リンク内スキュー調整回路135、136に入力されるデータの例を示している。図4(b)は、リンク内スキュー調整回路135、136から出力されるデータの例を示している。図4における横軸は時間である。入力データ401、402、403は、リンクAの第1レーンLaneA1〜第3レーンLaneA3をそれぞれ経てリンク内スキュー調整回路135に入力されるデータの例を示している。入力データ404、405、406は、リンクBの第1レーンLaneB1〜第3レーンLaneB3をそれぞれ経てリンク内スキュー調整回路136に入力されるデータの例を示している。各々の入力データは、例えば、トレーニングシーケンスのデータと、各々の水平ラインの先頭に対応するように設けられる同期コードと、画像データと、水平転送期間中に有効な画像データが存在しない場合に用いられる無効コードとを含む。各々の入力データは、例えば、1つの水平転送期間に対応するデータ列の終了を示す終了コードと、水平転送期間以外の期間において用いられるIDLEコードとを更に含む。
トレーニングシーケンスのデータ中には、予め定められた特定の調整コードが含まれている。リンク内スキュー調整回路135、136は、トレーニングシーケンスのデータに含まれている調整コードを調整コード検出部307によって検出するとともに、上記のような処理を行うことにより、リンク内スキューを解消する。
出力データ407、408、409は、リンクAの処理経路である第1の処理経路150の第1から第3のレーンにリンク内スキュー調整回路135からそれぞれ出力されるデータの例を示している。出力データ410、411、412は、リンクBの処理経路である第2の処理経路151の第1から第3のレーンにリンク内スキュー調整回路135からそれぞれ出力されるデータの例を示している。図4に示すように、リンク内スキューは解消されているが、リンク間スキューは解消されていない。
なお、リンク内スキュー調整回路135を、リンクAとリンクBの全てのレーンに対して適用し、全てのレーンにおいてスキューを解消することも考えられる。しかし、上述したように、リンク間スキューの量は、水平転送期間毎に変化し、一定ではない。このため、この段階では、リンク内スキューを解消することに留めておくことが好ましい。
データ処理回路137、138は、入力データに含まれる制御コードを検出し、検出した制御コードが所定の条件を満たす場合に、制御コードを検出したことを示す制御コード検出信号を出力するものである。換言すると、データ処理回路137、138は、入力データに含まれる制御コードを検出し、検出した制御コードを所定の条件に基づいて確定し、確定した制御コードに応じた制御コード検出信号を出力するものであるともいえる。図5は、データ処理回路137を示すブロック図である。データ処理回路137は、レーン内制御コード検出部501、502、503と、加算器504、506と、比較器505と、遅延素子508〜531と、セレクタ507、532、534と、デコーダ533とを有する。
遅延素子508〜531は、例えばフリップフロップによって構成されている。遅延素子508〜531のクロック入力端子には、クロック信号がそれぞれ入力される。遅延素子508〜531は、クロック信号に同期して動作する。遅延素子508〜531は、入力されたデータをそれぞれ出力方向(図5における右方向)にシフトする。
リンクAの処理経路である第1の処理経路150の各々のレーンを伝搬する入力データは、レーン内制御コード検出部501〜503にそれぞれ入力される。図5において、第1の入力データは、リンクAの第1レーンLaneA1を伝搬してデータ処理回路137に入力されるデータを意味している。また、図5において、第2の入力データは、リンクAの第2レーンLaneA2を伝搬してデータ処理回路137に入力されるデータを意味している。また、図5において、第3の入力データは、リンクAの第3レーンLaneA3を伝搬してデータ処理回路137に入力されるデータを意味している。レーン内制御コード検出部501〜503は、入力データのうちに含まれる制御コードをそれぞれ検出する。レーン内制御コード検出部501〜503は、制御コードを検出すると、制御コードを検出したことを示すレーン内制御コード検出信号を加算器504にそれぞれ出力する。加算器504は、レーン内制御コード検出部501〜503から供給されるレーン内制御コード検出信号を加算する。加算器504によって得られる加算値は、直列に接続された遅延素子520〜523によって遅延され、加算器506とセレクタ507とに供給される。また、加算器504によって得られる加算値は、第1の制御コード検出信号としてデータ処理回路137から出力され、データ処理回路138に供給される。
遅延素子508〜511は、直列に接続されている。遅延素子512〜515は、直列に接続されている。遅延素子516〜519は、直列に接続されている。遅延素子508〜511は、レーン内制御コード検出部501を通過した第1の入力データを遅延させる。遅延素子512〜515は、レーン内制御コード検出部502を通過した第2の入力データを遅延させる。遅延素子516〜519は、レーン内制御コード検出部503を通過した第3の入力データを遅延させる。図5において、第1の出力データは、遅延素子508〜511によって遅延されたデータを意味している。また、図5において、第2の出力データは、遅延素子512〜515によって遅延されたデータを意味している。また、図5において、第3の出力データは、遅延素子516〜519によって遅延されたデータを意味している。データ処理回路137からは、第1の出力データと第2の出力データと第3の出力データとを含む第1のパラレルデータがリンク間スキュー調整回路139に出力される。
データ処理回路138の構成は、図5に示すデータ処理回路137の構成と同様である。但し、データ処理回路138からは、第1の制御コード検出信号の代わりに、第2の制御コード検出信号が出力される。また、データ処理回路138からは、第1のリンク内制御コード検出信号の代わりに、第2のリンク内制御コード検出信号が出力される。データ処理回路138から出力される第2の制御コード検出信号は、データ処理回路137に供給される。直列接続された遅延素子524〜531は、データ処理回路138から供給される第2の制御コード検出信号を遅延させる。
遅延素子524〜531の各々から出力される信号が、セレクタ532に入力される。セレクタ532は、遅延素子524〜531からそれぞれ供給される信号のうちから1つの信号を選択し、選択した信号を加算器506に供給する。セレクタ532は、リンク間スキュー調整回路139から供給される遅延サイクル数信号に基づいて、遅延素子524〜531からそれぞれ供給される複数の信号のうちのいずれかを選択する。
データ処理回路138から供給される第2の制御コード検出信号を用いることなく、レーン内制御コード検出部501〜503を用いて制御コードを検出するモードを、第1の検出モードと称することとする。一方、レーン内制御コード検出部501〜503を用いるのみならず、データ処理回路138から供給される第2の制御コード検出信号をも用いて制御コードを検出するモードを、第2の検出モードと称することとする。
加算器506は、遅延素子523からの信号と、セレクタ532からの信号とを加算し、加算により得た信号をセレクタ507に供給する。セレクタ507は、遅延素子523からの信号と、加算器506からの信号とのうちの一方を選択し、選択した信号を出力する。第1の検出モードにおいては前者が選択され、第2の検出モードにおいては後者が選択される。
セレクタ534は、比較器505において用いられる閾値を、予め決定された2種類の閾値のうちから選択し、選択した閾値を比較器505に出力する。第1の検出モードにおいては、セレクタ534は第1の閾値を選択する。第2の検出モードにおいては、セレクタ534は、第2の閾値を選択する。
デコーダ533は、リンク間スキュー調整回路139から供給されるリンク間同期確立信号をデコードすることによりモード切り換え信号を生成し、生成したモード切り換え信号をセレクタ507、534にそれぞれ供給する。セレクタ507、534は、デコーダ533から供給されるモード切り換え信号に基づいて切り換え動作を行う。
セレクタ507によって選択された信号と、セレクタ534によって選択された信号とが、比較器505に入力される。比較器505は、セレクタ507からの信号と、セレクタ534からの信号とを比較し、セレクタ507からの信号がセレクタ534から供給される閾値以上となった場合に第1のリンク内制御コード検出信号を出力する。
第1の検出モードにおける動作の例について以下に説明する。例えば、レーン内制御コード検出部501、502からはレーン内制御コード検出信号が出力され、レーン内制御コード検出部503からはビットエラー等の要因によりレーン内制御コード検出信号が出力されない場合には、以下のようになる。レーン内制御コード検出部501、502からレーン内制御コード検出信号がそれぞれ供給され、レーン内制御コード検出部503からレーン内制御コード検出信号が供給されないため、加算器504によって得られる値は2となる。セレクタ507は、遅延素子523からの信号を出力するため、比較器505の一方の入力端子には、2という値が入力される。第1の検出モードにおいては、セレクタ534は第1の閾値を選択する。第1の閾値が例えば2である場合、比較器505の他方の入力端子には、2という値が入力される。セレクタ507から供給される値が、セレクタ534から供給される値以上であるため、比較器505は、第1のリンク内制御コード検出信号を出力する。
第2の検出モードにおける動作の例について以下に説明する。例えば、データ処理回路137においては、レーン内制御コード検出部501からレーン内制御コード検出信号が出力され、レーン内制御コード検出部502、503からはビットエラー等の要因によりレーン内制御コード検出信号が出力されないものとする。一方、データ処理回路138においては、全てのレーン内制御コード検出部501〜503からレーン内制御コード検出信号が出力されるものとする。この場合、データ処理回路137においては、加算器504から出力される値は1となり、データ処理回路138においては、加算器504から出力される値は3となる。データ処理回路138に備えられた加算器504から出力される値が3であるため、データ処理回路138からデータ処理回路137に供給される第2の制御コード検出信号の値は3となる。遅延素子523から出力される値が1であり、セレクタ532から出力される値が3であるため、加算器506から出力される値は4となる。第2の検出モードにおいては、セレクタ507は、加算器506からの信号を選択するため、比較器505の一方の入力端子には4という値が入力される。第2の検出モードにおいては、セレクタ534は第2の閾値を選択する。第2の閾値が例えば4である場合、比較器505の他方の入力端子には4という値が入力される。セレクタ507から供給される値が、セレクタ534から供給される値以上であるため、比較器505は、第1のリンク内制御コード検出信号を出力する。
なお、データ処理回路138から供給される第2の制御コード検出信号は、遅延素子524〜531によって遅延される。そして、リンク間スキュー調整回路139から供給される遅延サイクル数信号に応じた位相の第2の制御コード検出信号がセレクタ532によって選択される。このため、遅延素子523から加算器506に供給される信号の位相と、セレクタ532から加算器506に供給される信号の位相とが合致し、加算器506からは適切な加算値が出力される。
このように、本実施形態によれば、複数のレーンの制御コード検出結果を総合的に評価することが可能である。このため、特定のレーンでビットエラーが生じ、当該レーンにおいて制御コードを検出できない場合であっても、良好に動作することが可能である。即ち、本実施形態によれば、十分なエラー耐性を確保することが可能となる。
デコーダ533から供給されるモード切り換え信号によって、第1の検出モードと第2の検出モードとが切り換えられる。デコーダ533は、例えば以下のように動作する。デコーダ533は、例えば、リンク間スキュー調整回路139から供給されるリンク間同期確立信号を受信した直後のサイクルにおいて、第1の検出モードから第2の検出モードに遷移するようなモード切り換え信号をセレクタ507、534に供給する。このようなモード切り換え信号を出力した後、デコーダ533は、デコーダ533内に備えられたカウンタによって所定のサイクルをカウントする。所定のサイクルをカウントした後、デコーダ533は、第2の検出モードから第1の検出モードに遷移するようなモード切り換え信号をセレクタ507、534に供給する。従って、第1の検出モードから第2の検出モードへの遷移が行われてから所定の時間が経過した後に、第2の検出モードから第1の検出モードへの遷移が行われることとなる。例えば、第1の検出モードから第2の検出モードへの遷移が行われた後に供給される水平同期信号HDに応じたタイミングで、第2の検出モードから第1の検出モードへの遷移が行われる。所定のサイクルを、水平転送期間に応じたサイクル数とすれば、同期コードについては第1の検出モードで検出することができ、無効コード及び終了コードについては第2の検出モードで検出することができる。これにより、データ処理回路137が無効コード又は終了コードを閾値以下しか検出できない場合であっても、データ処理回路138が検出した無効コード又は終了コードの数と合わせて評価することにより、無効コードもしくは終了コードを検出し得る。したがって、レーンごとに同期コードを検出する場合よりも、エラー耐性を高めることできる。例えば、レーン内制御コード検出信号を出力しないレーン内制御コード検出部が、同期コードが検出された後に増加した場合であっても、無効コードや終了コードを検出することが可能となる。これにより、エラー耐性の向上を図ることができる。
なお、ここでは、リンク間スキュー調整回路139から供給されるリンク間同期確立信号に基づいてデコーダ533がモード切り換え信号を生成する場合を例に説明したが、これに限定されるものではない。例えば、データ処理回路137において同期コードが検出された際に、当該同期コードが検出されたことを示す信号をデコーダ533に供給するようにしてもよい。そして、デコーダ533が、当該信号に基づいて、モード切り換え信号を生成するようにしてもよい。
データ処理回路137は、制御コードの検出を確定する処理手段として機能し得る。データ処理回路137は、第1の検出モードにおいては、リンクAに備えられた複数のレーンのうちの制御コードが検出されたレーンの数に基づいて制御コードの検出を確定する。データ処理回路137は、第1の検出モードにおいては、リンクBに備えられた複数のレーンのうちの制御コードが検出されたレーンの数に基づくことなく、制御コードの検出を確定する。データ処理回路137は、第2のモードにおいては、リンクAに備えられた複数のレーンのうちの制御コードが検出されたレーンの数と、リンクBに備えられた複数のレーンのうちの制御コードが検出されたレーンの数とに基づいて、制御コードの検出を確定する。
図6は、レーン内制御コード検出部501を示すブロック図である。なお、ここでは、レーン内制御コード検出部501を例として説明するが、レーン内制御コード検出部502の構成も、レーン内制御コード検出部503の構成も、レーン内制御コード検出部501の構成と同様である。また、ここでは、各々の制御コードが4つのシンボルによって構成されている場合を例に説明する。また、制御コードとしては、同期コードと、無効コードと、終了コードとが検出され得る場合を例に説明する。
図6に示すように、レーン内制御コード検出部501は、遅延素子601〜604と、比較器605〜608、611〜614、617〜620と、加算器609、615、621と、比較器610、616、622とを有する。
遅延素子601〜604は、直列に接続されており、入力データを遅延させる。遅延素子601〜604のクロック入力端子には、クロック信号が入力される。遅延素子601の出力は、比較器605、611、617にそれぞれ入力される。遅延素子602の出力は、比較器606、612、618にそれぞれ入力される。遅延素子603の出力は、比較器607、613、619にそれぞれ入力される。遅延素子604の出力は、比較器608、614、620にそれぞれ入力される。比較器608は、遅延素子604の出力と期待値X1とが一致した場合には1を出力し、遅延素子604の出力と期待値X1とが一致しない場合には0を出力する。比較器607は、遅延素子603の出力と期待値X2とが一致した場合には1を出力し、遅延素子603の出力と期待値X2とが一致しない場合には0を出力する。比較器606は、遅延素子602の出力と期待値X3とが一致した場合には1を出力し、遅延素子602の出力と期待値X3とが一致しない場合には0を出力する。比較器605は、遅延素子601の出力と期待値X4とが一致した場合には1を出力し、遅延素子601の出力と期待値X4とが一致しない場合には0を出力する。比較器614は、遅延素子604の出力と期待値Y1とが一致した場合には1を出力し、遅延素子604の出力と期待値Y1とが一致しない場合には0を出力する。比較器613は、遅延素子603の出力と期待値Y2とが一致した場合には1を出力し、遅延素子603の出力と期待値Y2とが一致しない場合には0を出力する。比較器612は、遅延素子602の出力と期待値Y3とが一致した場合には1を出力し、遅延素子602の出力と期待値Y3とが一致しない場合には0を出力する。比較器611は、遅延素子601の出力と期待値Y4とが一致した場合には1を出力し、遅延素子601の出力と期待値Y4とが一致しない場合には0を出力する。比較器620は、遅延素子604の出力と期待値Z1とが一致した場合には1を出力し、遅延素子604の出力と期待値Z1とが一致しない場合には0を出力する。比較器619は、遅延素子603の出力と期待値Z2とが一致した場合には1を出力し、遅延素子603の出力と期待値Z2とが一致しない場合には0を出力する。比較器618は、遅延素子602の出力と期待値Z3とが一致した場合には1を出力し、遅延素子602の出力と期待値Z3とが一致しない場合には0を出力する。比較器617は、遅延素子601の出力と期待値Z4とが一致した場合には1を出力し、遅延素子601の出力と期待値Z4とが一致しない場合には0を出力する。期待値X1〜X4は、例えば、同期コードの4つのシンボルの値にそれぞれ対応している。期待値Y1〜Y4は、例えば、無効コードの4つのシンボルの値にそれぞれ対応している。期待値Z1〜Z4は、例えば、終了コードの4つのシンボルの値にそれぞれ対応している。比較器605〜608からそれぞれ出力される信号は、加算器609に供給される。比較器611〜614からそれぞれ出力される信号は、加算器615に供給される。比較器617〜620からそれぞれ出力される信号は、加算器621に供給される。加算器609、615、621によって得られた加算値は、比較器610、616、622にそれぞれ供給される。比較器610、616、622は、加算器609、615、621からそれぞれ供給される値と、予め設定された閾値とをそれぞれ比較する。比較器610は、加算器609によって得られた加算値が閾値以上である場合に、同期コード検出信号を出力する。比較器616は、加算器615によって得られた加算値が閾値以上である場合に、無効コード検出信号を出力する。比較器622は、加算器621によって得られた加算値が閾値以上である場合に、終了コード検出信号を出力する。これらの検出信号は束ねられ、レーン内制御コード検出信号として出力される。また、遅延素子601〜604によって遅延されたデータは、出力データとしてレーン内制御コード検出部501からそれぞれ出力される。
なお、第1のリンク内制御コード検出信号、第2のリンク内制御コード検出信号、第1の制御コード検出信号及び第2の制御コード検出信号のフォーマットは、特に限定されるものではない。例えば、第1のリンク内制御コード検出信号、第2のリンク内制御コード検出信号、第1の制御コード検出信号及び第2の制御コード検出信号が、複数ビットの信号の別々のフィールドにそれぞれ割り当てられていてもよい。
図7は、レーン内制御コード検出部501の動作の例を示す図である。なお、ここでは、レーン内制御コード検出部501を例として説明するが、レーン内制御コード検出部502も、レーン内制御コード検出部503も、レーン内制御コード検出部501と同様に動作し得る。図7には、レーン内制御コード検出部501に入力されるデータの例と、制御コードの期待値の例とが示されている。期待値の第1番目のシンボルは例えばオール0、即ち、0x00である。一方、入力データの第1番目のシンボルも例えばオール0である。従って、第1番目のシンボルについては、期待値と入力データとは一致している。期待値の第2番目のシンボルは例えばオール0である。一方、入力データの第2番目のシンボルもオール0である。従って、第2番目のシンボルについても、期待値と入力データとは一致している。期待値の第3番目のシンボルは例えばオール1、即ち、0xFFである。一方、入力データの第3番目のシンボルは、例えばビットエラー等によってデータが破損しており、0xFDとなっている。従って、この場合、第3番目のシンボルについては、期待値と入力データとが一致していない。期待値の第4番目のシンボルは例えばオール1である。一方、入力データの第4番目のシンボルも、オール1である。従って、第4番目のシンボルについては、期待値と入力データとが一致している。このように、図7に示す例においては、期待値と入力データとの間で、3つのシンボルが一致している。閾値が3である場合、期待値のシンボルと入力データのシンボルの一致数は閾値以上であるため、レーン内制御コード検出部501から制御コード検出信号が出力される。このように、レーン内制御コード検出部501は、制御コードを構成する複数のシンボルのうちの正常に検出されたシンボルの数に基づいて制御コードを検出する。このようにして制御コードを検出するため、本実施形態によれば、エラー耐性の向上を図ることができる。
リンク間スキュー調整回路139は、リンク間スキューを解消するためのものである。図8は、リンク間スキュー調整回路139を示すブロック図である。図8に示すように、リンク間スキュー調整回路139は、遅延素子801〜824と、デコーダ825と、ロード付きDタイプフリップフロップ826と、セレクタ827とを有する。遅延素子801〜824は、例えばフリップフロップによって構成されている。遅延素子801〜824のクロック入力端子には、クロック信号がそれぞれ入力される。遅延素子801〜824は、クロック信号に同期して動作する。遅延素子801〜824は、入力されたデータをそれぞれ出力方向(図8における右方向)にシフトする。
直列接続された遅延素子801〜804は、データ処理回路137から供給される第1のパラレル信号を遅延する。直列接続された遅延素子805〜808は、データ処理回路137から供給される第1のリンク内制御コード検出信号を遅延する。直列接続された遅延素子809〜816は、データ処理回路138から供給される第2のパラレル信号を遅延する。遅延素子809〜816の各々から出力される信号が、セレクタ827に入力される。直列接続された遅延素子817〜824は、データ処理回路138から供給される第2のリンク内制御コード検出信号を遅延する。遅延素子817〜824の各々から出力される信号dlyF1〜dlyF8が、デコーダ825に入力される。
デコーダ825は、第2のリンク内制御コード検出信号が有効、即ち、「1」となっている信号を、遅延素子817〜824の各々から出力される信号dlyF1〜dlyF8のうちから検出する。デコーダ825は、第2のリンク内制御コード検出信号が有効となったタイミングと同じタイミングの第2のパラレル信号が保持されている遅延素子809〜816の出力がセレクタ827によって選択されるようなデコードデータ(デコード信号)を出力する。ロード付きDタイプフリップフロップ826は、遅延素子808の出力がハイレベルになった際に、デコーダ825の出力をラッチする。セレクタ827は、ロード付きDタイプフリップフロップ826から供給されるデコードデータに応じて、遅延素子809〜816のいずれかからの出力を選択する。遅延素子804から出力される第1のデータと、セレクタ827によって選択された第2のデータとが連結されて、出力データとなる。遅延素子808の出力は、リンク間制御コード検出信号としてリンク間スキュー調整回路139から出力される。
遅延素子808から出力されるリンク間制御コード検出信号は、リンク間同期確立信号として、データ処理回路137、138に供給される。また、デコーダ825の出力は、遅延サイクル数信号としてデータ処理回路137、138に供給される。
図9は、リンク間スキュー調整回路139の動作の例を示す図である。ここでは、データ処理回路137から供給される第1のパラレル信号と、データ処理回路138から供給される第2のパラレル信号との間に、クロック信号の1サイクル分に相当するスキューが生じている場合を例に説明する。
上述したように、デコーダ825は、第2のリンク内制御コード検出信号が有効となったタイミングと同じタイミングの第2のパラレル信号が保持されている遅延素子809〜816の出力がセレクタ827によって選択されるようなデコードデータを出力する。
上述したように、デコーダ825の出力は、遅延素子808の出力がハイレベルになった際にラッチされる。このため、クロック信号の例えば4サイクル分に相当する時間だけ遅延させた第1のパラレル信号と、クロック信号の例えば3サイクル分に相当する時間だけ遅延させた第2のパラレル信号とが、揃った状態で出力データとして出力される。
このように、本実施形態によれば、リンクに備えられた複数のレーンのうちの制御コードが検出されたレーンの数に基づいて、制御コードの検出を確定する。このため、本実施形態によれば、制御コードを検出できないレーンがビットエラー等によって生じた場合であっても、制御コードを検出することができる。従って、本実施形態によれば、エラー耐性の高い信号処理装置及び信号処理方法を提供することができる。
また、本実施形態によれば、第1の検出モードにおいては、リンクAに備えられた複数のレーンのうちの制御コードが検出されたレーンの数に基づいて、制御コードの検出を確定する。第1の検出モードにおいては、リンクBに備えられた複数のレーンのうちの制御コードが検出されたレーンの数に基づくことなく、制御コードの検出を確定する。一方、第2の検出モードにおいては、リンクAに備えられた複数のレーンのうちの制御コードが検出されたレーンの数と、リンクBに備えられた複数のレーンのうちの制御コードが検出されたレーンの数とに基づいて、制御コードの検出を確定する。このため、制御コードを検出し得ないレーンが、例えば同期コードが検出された後に増加した場合であっても、例えば無効コード及び終了コードを検出することが可能となる。これにより、本実施形態によれば、エラー耐性の向上を図ることができる。
また、本実施形態によれば、リンク間スキューのみならずレーン間スキューをも解消し得るため、良好に伝送を行うことができる。
[第2実施形態]
第2実施形態による信号処理装置及び信号処理方法を図11及び図12を用いて説明する。図1乃至図10に示す第1実施形態による信号処理装置及び信号処理方法と同一の構成要素には、同一の符号を付して説明を省略又は簡潔にする。
本実施形態による信号処理装置は、同期コードのシンボル数が、無効コード及び終了コードのシンボル数と異なるものである。
図12は、本実施形態による信号処理装置に備えられた送信データ処理回路106を示すブロック図である。なお、ここでは、送信データ処理回路106について説明するが、送信データ処理回路107の構成も、送信データ処理回路106の構成と同様である。
本実施形態による送信データ処理回路106は、制御コード生成部209が更に設けられている点が、第1実施形態による送信データ処理回路106と相違している。制御コード生成部203は、例えば同期コードを生成し、生成した同期コードを出力セレクタ206〜208の各々に供給する。制御コードは、例えば4つのシンボルによって構成される。制御コード生成部209は、例えば無効コード及び終了コードを生成し、生成した無効コード及び終了コードを出力セレクタ206〜208の各々に供給する。無効コード及び終了コードは、例えば3つのシンボルによって構成される。
図13は、本実施形態による信号処理装置に備えられたレーン内制御コード検出部501を示すブロック図である。なお、ここでは、レーン内制御コード検出部501について説明するが、レーン内制御コード検出部502の構成も、レーン内制御コード検出部503の構成も、レーン内制御コード検出部501の構成と同様である。
本実施形態におけるレーン内制御コード検出部501は、比較器611、617が設けられていない点が、第1実施形態におけるレーン内制御コード検出部501と相違している。遅延素子601の出力は、比較器605のみに入力される。遅延素子602の出力は、比較器606、612、618にそれぞれ入力される。遅延素子603の出力は、比較器607、613、619にそれぞれ入力される。遅延素子604の出力は、比較器608、614、620にそれぞれ入力される。期待値X1〜X4は、例えば、同期コードの4つのシンボルの値にそれぞれ対応している。期待値Y1〜Y3は、例えば、無効コードの3つのシンボルの値にそれぞれ対応している。期待値Z1〜Z3は、終了コードの3つのシンボルの値にそれぞれ対応している。比較器605〜608からそれぞれ出力される信号は、加算器609に供給される。比較器612〜614からそれぞれ出力される信号は、加算器615に供給される。比較器618〜620からそれぞれ出力される信号は、加算器621に供給される。
加算器609、615、621によって得られた加算値は、比較器610、616、622にそれぞれ供給される。比較器610、616、622は、加算器609、615、621からそれぞれ供給される値と、予め設定された閾値とをそれぞれ比較する。比較器610は、加算器609によって得られた加算値が閾値以上である場合に、同期コード検出信号を出力する。比較器616は、加算器615によって得られた加算値が閾値以上である場合に、無効コード検出信号を出力する。比較器622は、加算器621によって得られた加算値が閾値以上である場合に、終了コード検出信号を出力する。これらの検出信号は束ねられ、レーン内制御コード検出信号として出力される。また、遅延素子601〜604によって遅延されたデータは、出力データとしてレーン内制御コード検出部501からそれぞれ出力される。
本実施形態では、無効コード及び終了コードのシンボル数が同期コードのシンボル数よりも少ないが、無効コード及び終了コードは第2の検出モードで検出される。第2の検出モードにおいては、リンクAに備えられた複数のレーンにおいて検出される制御コードのみならず、リンクBに備えられた複数のレーンにおいて検出される制御コードにも基づいて制御コードが確定される。このため、無効コード及び終了コードのシンボル数が少なくても、十分なエラー耐性を確保し得る。
このように、本実施形態によれば、無効コード及び終了コードのシンボル数が少ないため、データ量の低減に寄与することができる。無効コード及び終了コードは第2の検出モードで検出されるため、十分なエラー耐性は確保される。
[変形実施形態]
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
例えば、上記実施形態では、制御コードを複数のシンボルによって構成し、制御コードを構成する複数のシンボルのうちの正常に検出されたシンボルの数に基づいて制御コードを検出する場合を例に説明したが、これに限定されるものではない。例えば、調整コードを複数のシンボルによって構成し、調整コードを構成する複数のシンボルのうちの正常に検出されたシンボルの数に基づいて調整コードを検出するようにしてもよい。
また、上記実施形態では、リンク間スキューの量が水平転送期間毎に変動する場合を例に説明したが、これに限定されるものではない。例えば、リンク間スキューの量が垂直転送期間(VD期間)毎に変動し、水平転送期間毎に変動しない場合には、以下のようにすることができる。即ち、垂直転送期間において最初に検出される同期コードは第1の検出モードで検出し、垂直転送期間において最初に検出される同期コード以外の同期コードは第2の検出モードで検出するようにする。無効コード及び終了コードは、いずれも第2の検出モードで検出する。この場合には、第1の検出モードから第2の検出モードへの遷移が行われた後に供給される垂直同期信号VDに応じたタイミングで、第2の検出モードから第1の検出モードへの遷移が行われる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。