説明

USBハブ及びUSBハブの制御方法

【課題】USBのハイスピードモードにおいては、SOFパケットのEOPコードが他の種類のパケットとは異なる。このため、ハイスピードモードにおいては、パケットの種類を判別した上でパケットの種類に応じたEOPコードの検出を行う必要がある。
【解決手段】受信したパケットのEOPコードの検出をビットスタッフィングエラーで行い、受信したパケットの転送においては受信したEOPコードは用いず、PIDコードを元に生成したEOPコードを送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえば、パーソナルコンピューターなどの情報処理装置に接続されるUSBハブ及びUSBハブの制御方法に関する。
【背景技術】
【0002】
従来、パーソナルコンピューターと周辺機器とを接続するための汎用インターフェイスの規格としてUSBが存在する。USBにおいては複数のデータ転送速度が規定されており、USB2.0の規格において、以前から規定されていたフルスピードモード及びロースピードモードに加えて、480Mbpsの転送速度のハイスピードモードが導入されている。USBは使い勝手がよく、広く普及しているインターフェイスである。このため、USBのインターフェイスを有する周辺機器(以降、USB周辺機器、USBファンクション、又は、スレーブ装置と呼ぶことがある)の種類が多く、複数の周辺機器を一台のパーソナルコンピューターに接続して使用したいという要求が多い。このため、より多くのUSB周辺機器を接続可能とするために、USBの規格の中にUSBハブの規格が定義されている。USBハブ自身もUSB周辺機器のひとつである。
【0003】
また、ハイスピードモードにおいては、USBがアイドルの状態であることを示すスケルチの検出に要する時間が、4ビットのデータ長に相当する時間を要する可能性がある。このため、パケットを受信する機器においてパケット受信後に受信する本来存在しないデータ、所謂ドリブルビットが4ビットまで許容されている。このスケルチ検出のための回路が、たとえば特許文献1に提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−198392号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、より感度のよいスケルチ検出回路はより回路規模が大きくなる傾向にあり、このための設計に要する負荷も大きくなるという課題がある。また、USBハブの場合は、受信したドリブルビットが規格内であっても該ドリブルビットを送信してしまうことは好ましくない。後段となる機器において発生するドリブルビットが4ビット以下であったとしても、終了コードの後に繋がる余分なデータが4ビットを超える場合も考えられ、後段の機器の設計内容によっては好ましくない動作が起こる可能性があるからである。
【課題を解決するための手段】
【0006】
本発明は、上述した課題若しくは問題の少なくとも一部を解決するためになされたものであり、以下の適用例若しくは実施形態として実現することが可能である。尚、USBの規格は広く知られている規格であることから、以降に記載の適用例及び実施形態においては、USBの規格書などで示されている内容(たとえば、パケットの構造など)については特に必要がない限り説明や図示は行わないこととする。
【0007】
また、パケットは複数のフィールドからなるが、以降の記載において、SYNCフィールドのデータをSYNCコードと呼ぶことがある。また、EOPフィールドのデータをEOPコードと呼ぶことがある。また、PIDフィールドのデータをPIDコードと呼ぶことがある。
【0008】
[適用例1]
本適用例にかかるUSBハブは、受信したパケットの種別の識別を行う第1の制御部と、前記受信したパケットのビットスタッフィングエラーの検出を行う第2の制御部と、第1のEOPコード及び第2のEOPコードを生成する第3の制御部と、を含み、ハイスピードモードによる転送において、前記第1の制御部において前記受信したパケットがSOFパケットであると判断され、かつ、前記第2の制御部において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第1のEOPコードに置き換えて送信し、前記第1の制御部において前記受信したパケットがSOFパケットでないと判断され、かつ、前記第2の制御部において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第2のEOPコードに置き換えて送信することを特徴とする。
【0009】
この構成によれば、生成するEOPコードの種類を受信したパケットがSOFパケットかどうかを判断し、ビットスタッフィングエラーを発生させたビットから7ビット前のビット以降に受信したデータを生成したEOPコードと置き換えることで、受信したパケットの解析を行う回路の規模を小さくすることができ、USBハブにおいて付加されたドリブルビットの伝播をなくすことができる。SOFパケットにおけるEOPコードの長さは40ビットであるが、他の種類のパケットにおけるEOPコードの長さは8ビットである。少なくとも40ビット長のEOPコードを検出するための回路が不要となる。
【0010】
[適用例2]
上記適用例にかかるUSBハブにおいて、前記第1の制御部は、前記受信したパケットの種別の判断を、前記受信したパケットに含まれるPIDコードにより行うことが好ましい。
【0011】
この構成によれば、パケットに含まれる4ビット長のPIDコードを用いることで、SOFパケットの検出を行うことができる。
【0012】
[適用例3]
上記適用例にかかるUSBハブにおいて、前記第1のEOPコードの長さは40ビットであり、前記第2のEOPコードの長さは8ビットであることが好ましい。
【0013】
この構成によれば、生成するEOPコードをUSB2.0の規格に規定されたEOPコードとすることができる。
【0014】
[適用例4]
本適用例にかかるUSBハブの制御方法は、受信したパケットの種別を識別する第1の工程と、前記受信したパケットのビットスタッフィングエラーの検出を行う第2の工程と、第1のEOPコード及び第2のEOPコードを生成する第3の工程と、を含み、ハイスピードモードにおける転送において、前記第1の工程において前記受信したパケットがSOFパケットであると判断され、かつ、前記第2の工程において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第1のEOPコードに置き換えて送信し、前記第1の工程において前記受信したパケットがSOFパケットでないと判断され、かつ、前記第2の工程において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第2のEOPコードに置き換えて送信することを特徴とする。
【0015】
この方法によれば、受信したパケットの種別を識別する第1の工程と、受信したパケットのビットスタッフィングエラーの検出を行う第2の工程と、第1のEOPコード及び第2のEOPコードを生成する第3の工程を含むことで、受信したパケットの解析を行う回路の規模を小さくすることができ、USBハブにおいて付加されたドリブルビットの伝播をなくすことができる。SOFパケットにおけるEOPコードの長さは40ビットであるが、他の種類のパケットにおけるEOPコードの長さは8ビットである。少なくとも40ビット長のEOPコードを検出するための回路が不要となる。
【0016】
[適用例5]
上記適用例にかかるUSBハブの制御方法において、前記第1の工程は、前記受信したパケットの種別の判断を、前記受信したパケットに含まれるPIDコードにより行うことが好ましい。
【0017】
この構成によれば、パケットに含まれる4ビット長のPIDコードを用いることで、SOFパケットの検出を行うことができる。
【0018】
[適用例6]
上記適用例にかかるUSBハブの制御方法において、前記第1のEOPコードの長さは40ビットであり、前記第2のEOPコードの長さは8ビットであることが好ましい。
【0019】
この方法によれば、生成するEOPコードをUSB規格に規定されたEOPコードとすることができる。
【図面の簡単な説明】
【0020】
【図1】USBハブの概略ブロック図。
【図2】システム概略ブロック図。
【図3】1フレームにおけるパケット転送の模式図。
【図4】USBハブの制御における一部のフローチャート。
【図5】SOFパケット以外のEOPを示す概略タイムチャート。
【図6】SOFパケットのEOPを示す概略タイムチャート。
【発明を実施するための形態】
【0021】
以下、本発明に係るUSBハブの実施形態について図を用いて説明する。尚、以降の記載において、シリアルデータの表記は、受信又は送信された順番で“01111010”のように“”を用いて行うこととする。また、NRZ符号又はNRZI符号の区別についてはその都度記載する。
【0022】
(第1実施形態)
図1に、本実施形態の説明に用いるUSBハブ100の概略ブロック図を示す。USBハブ100は、アップストリームポート部10、ダウンストリームポート部11、リピーター部20、トランザクショントランスレーター部21、ハブコントローラー部22及びルーティングロジック部23を含む。リピーター部20、トランザクショントランスレーター部21及びルーティングロジック部23は、アップストリームポート部10又はダウンストリームポート部11のいずれか一方から受信したパケットを他の一方に転送するための制御を行うためのものである。
【0023】
アップストリームポート部10及びダウンストリームポート部11は、USBのドライバー、USBのレシーバー、NRZIデコーダー/エンコーダー、同期検出回路、及び、スケルチ検出回路を含む。NRZIデコーダー/エンコーダーは、USBでのデータ転送はNRZI符号であるがUSBハブ100内部はNRZ符号を用いるために用いられるコード変換のための回路である。同期検出回路はスケルチ検出回路によるスケルチの検出がなくなると、受信データの変化を検出し受信データの同期を検出する部分である。また、アップストリームポート部10には、パーソナルコンピューターなどのUSBホスト装置又はUSBハブが接続され、ダウンストリームポート部11には、USB周辺機器又はUSBハブが接続される。図1に示したUSBハブ100は4個のダウンストリームポート部11を有しているが、ダウンストリームポート部11の個数は本実施形態の説明においては特に意味はなく、USBハブ100に示した個数は便宜上のものである。
【0024】
リピーター部20は、データ転送部40、SYNC検出部41、PID検出部42、ビットスタッフィングエラー検出部43、シーケンス制御部44及びEOP生成部45を含む。データ転送部40は、転送データに対しての制御が行われる部分である。データ転送部40では、転送するデータの送信タイミングの調整やトランザクショントランスレーター部21に対しての制御、EOP生成部45で生成したEOPコードのマージなどが行われる。また、転送データはデータ転送部40を介してSYNC検出部41、PID検出部42及びビットスタッフィングエラー検出部43にも信号71を介して転送される。
【0025】
SYNC検出部41は、転送データに含まれるSYNCフィールドを検出する部分であり、SYNCフィールドの検出開始及び終了が信号72を介してシーケンス制御部44に伝えられる。また、SYNC検出部41は、信号78を介してPID検出部42に対してSYNCフィールドの終了タイミングを通知する。
【0026】
PID検出部42は、信号78で指示されるタイミングに同期してデータ転送部40から転送されるデータがSOFコードと一致するかどうかのチェックを行う部分であり、チェック結果は信号73を介してシーケンス制御部44に伝えられる。
【0027】
ビットスタッフィングエラー検出部43は、データ転送部40から有効な転送データが転送されている期間においてビットスタッフィングエラーのチェックを行い、ビットスタッフィングエラーの検出結果は信号74を介してシーケンス制御部44に通知される。図5にSOFパケット以外のパケットにおけるEOPコードの概略タイミングチャートとEOPコードのNRZ符号によるコードの値を示す。また、図6にSOFパケットにおけるEOPコードの概略タイミングチャートとEOPコードのNRZ符号によるコードの値を示す。SOFパケット以外のパケットの場合、図5のA1のビットでビットスタッフィングエラーを検出する。SOFパケットの場合、図6のA2のビットでビットスタッフィングエラーを検出する。
【0028】
シーケンス制御部44は、SYNC検出部41、PID検出部42及びビットスタッフィングエラー検出部43などからの信号を基にして、信号75を介してデータ転送部40の制御を行う部分である。また、シーケンス制御部44は、信号76を介してEOP生成部45に対し生成するEOPコードの種類を指示する。
【0029】
EOP生成部45は、信号76により指示されたEOPコードを生成し、生成したEOPコードをデータ転送部40に出力する。
【0030】
トランザクショントランスレーター部21は、アップストリームポート部10におけるUSBの送受信がハイスピードモードで行われ、ダウンストリームポート部11におけるUSBの送受信がロースピードモード又はフルスピードモードで行われる場合に、アップストリームポート部10とダウンストリームポート部11との間の転送速度の差を埋めるために、一時的にデータのバッファリングを行うためのものである。この場合、パケットの転送は、リピーター部20、トランザクショントランスレーター部21及びルーティングロジック部23を介して行われる。
【0031】
ルーティングロジック部23は、リピーター部20からの指示により、ダウンストリームポート部11との接続をリピーター部20又はトランザクショントランスレーター部21のいずれかに切り替えるための部分である。本実施形態においては、上述したようにダウンストリームポート部11はハイスピードモードのスレーブ装置が接続されている。従って、本実施形態におけるパケットの転送はトランザクショントランスレーター部21を介さず、リピーター部20及びルーティングロジック部23を介して行われる。
【0032】
上述したが、USBハブもUSB周辺機器のひとつであり、USBアドレスが割り振られている。USBホスト装置から制御され、スレーブ装置として応答し、USBハブ100の内部を制御するのがハブコントローラー部22である。ハブコントローラー部22の動作の説明は、本実施形態の説明には直接関係ないことから省略する。
【実施例1】
【0033】
本実施例は、USBハブ100のアップストリームポート部10にUSBホスト装置を接続し、USBハブ100のダウンストリームポート部11のひとつにUSB周辺機器を接続したシステムにおけるパケットの転送例である。パケットはUSBホスト装置からUSB周辺機器に送信される。以降、本実施例においてはUSBホスト装置をホスト装置と記載し、USB周辺機器をスレーブ装置と記載することとする。
【0034】
本実施例におけるシステム構成図を図2に示す。また、ホスト装置200から送信されるパケットの模式図とホスト装置200からUSBハブ100へ、及びUSBハブ100からスレーブ装置300へのパケットの伝達状態を示した模式図を図3に示す。ホスト装置200はSOFパケット1001及びトークンパケット1002をUSBハブ100に送信し、USBハブ100はSOFパケット2001及びトークンパケット2002をスレーブ装置300に送信する。パケットは複数のフィールドからなるが、模式図においては送信されるフィールドの順番に左から記載している。最初に送信されるのはSYNCフィールドのコード(SYNCコード)であり、最後に送信されるのはEOPフィールドのコード(EOPコード)である。
【0035】
まず、SOFパケット1001がホスト装置200から送信される。これによりUSBはアイドル状態ではなくなり、アップストリームポート部10においてスケルチの検出がなくなる。アップストリームポート部10はUSBから有効なデータを受信していることをリピーター部20に通知する。ホスト装置200は、SOFパケット1001を構成する各々のフィールドのデータを、SYNCフィールド、PIDフィールド、PID’フィールド、フレーム番号フィールド、CRCフィールド及びEOPフィールドの順番で送信する。ホスト装置200は、EOPフィールドのデータ(EOPコード)の送信を終えるとUSBをアイドル状態とする。
【0036】
アップストリームポート部10の出力データが有効であることを認識したリピーター部20は、アップストリームポート部10の出力データ(以降受信データと呼ぶ)をバッファリングするとともに信号71を介してSYNC検出部41、PID検出部42及びビットスタッフィングエラー検出部43に転送データとして転送する。受信データはUSB上のNRZIデータをNRZデータに変換したデータである。
【0037】
SYNC検出部41は、転送データにおいてSYNCコードを検出すると、信号72を介してSYNCコード検出をシーケンス制御部44に通知する。
【0038】
シーケンス制御部44は、SYNCコードの検出が通知されるとデータ転送部40に対してバッファリングした受信データの中のビット位置を特定するための信号を出力する。データ転送部40は、受信データの中からSYNCコードと認識されたビットの位置を特定すると、対応するビット以降の受信データをUSBハブ100からの送信データとしてルーティングロジック部23に出力する。ルーティングロジック部23は送信データをダウンストリームポート部11に出力し、ダウンストリームポート部11はNRZコードである送信データをNRZIコードに変換してスレーブ装置300に対してSOFパケット2001の送信が開始される。また、シーケンス制御部44は、SYNCコードの検出が通知されることで、ビットスタッフィングエラー検出部43から信号74を介して通知されるエラー情報を有効と判断できる期間の開始を規定することができる。
【0039】
続いてSYNC検出部41は、SYNCコードの終了を検出すると信号72を介してSYNCフィールドの終了をシーケンス制御部44に通知する。シーケンス制御部44は、これにより信号73を介して伝えられるPID検出部42の検出結果を有効と判断する期間を規定することができる。
【0040】
PID検出部42は、信号71を介しての転送データにおいてSOFパケットを示すコードと一致するビットの並びを検出すると、信号73を介してシーケンス制御部44に通知する。シーケンス制御部44は、これにより受信データがSOFパケットであるかどうかの情報を有することができ、受信データがSOFパケット1001であることを認識する。シーケンス制御部44は、EOP生成部45に対し、信号76を介して40ビット長である第1のEOPコードの生成を指示する。第1のEOPコードは、信号77を介してEOP生成部45からデータ転送部40に出力される。
【0041】
ビットスタッフィングエラー検出部43は、信号71を介しての転送データにおけるビットスタッフィングエラーの発生状態を監視する。ビットスタッフィングエラーを検出すると信号74を介してエラー情報をシーケンス制御部44に通知する。シーケンス制御部44は、これによりエラー検出を有効とする期間においてビットスタッフィングエラーの発生を認識することが可能となる。
【0042】
USBハブ100は、ホスト装置200から送信されるSOFパケット1001のデータを順次受信し、EOPコードが受信されると、ビットスタッフィングエラー検出部43において、EOPコードの8番目のビットでビットスタッフィングエラーが検出される。ビットスタッフィングエラーは、信号74を介してシーケンス制御部44に伝えられる。
【0043】
シーケンス制御部44は、ビットスタッフィングエラーが伝えられると、信号75を介してビットスタッフィングエラーが発生したビット位置を特定するための信号をデータ転送部40に対して出力する。データ転送部40は、この信号を受け取るとビットスタッフィングエラーを引き起こしたビットから7ビット前のビット以降の受信データを送信データとせず、代わりに第1のEOPコードをEOPフィールドの送信データとしてルーティングロジック部23に出力する。ルーティングロジック部23は第1のEOPコードの送信を終えるとUSBをアイドル状態にする。これにより、SOFパケット2001のスレーブ装置300に対しての送信が終了する。
【0044】
続いて、トークンパケット1002がホスト装置200から送信される。ホスト装置200は、トークンパケット1002の送信を終えるとUSBをアイドル状態とする。トークンパケット1002に対しては、PID検出部42における検出結果がSOFパケットでないこと、これに対応してEOP生成部45が生成するのが8ビット長の第2のEOPコードになること、が上述したSOFパケット1001の場合と異なる。このため、詳細な説明は省略する。ルーティングロジック部23は第2のEOPコードの送信を終えるとUSBをアイドル状態にする。これにより、トークンパケット2002のスレーブ装置300に対しての送信が終了する。
【0045】
以上、ホスト装置200からスレーブ装置300へSOFパケット及びトークンパケットが送信される場合のUSBハブ100の動作の説明を行った。尚、SOFパケット及びトークンパケット以外のパケットが送信された場合のUSBハブ100の動作は、トークンパケットの場合と同じとなる。いずれにしても、データ転送部40においてビットスタッフィングエラーを引き起こしたビットから7ビット前のビット以降の受信データを送信データとしないことで、アップストリームポート部10におけるスケルチ検出の際に付加される可能性のあるドリブルビットは送信データとなることはない。また、パケットの種類により異なるEOPコードの受信の判定を行わないことから、異なるEOPコードを解析するための回路をなくすことができる。
【0046】
(第2実施形態)
第1実施形態は、USBハブを構成する複数の機能ブロックの中の一部を示し、示した機能ブロックの各々に本発明を適用するための機能を割り振った形での実施形態である。しかしながら、本発明の適用は第1実施形態で示した機能の割り振り方に限るものではない。よって、本実施形態は、本発明の適用をUSBハブにおける処理フローとして説明するためのものである。本発明を適用したUSBハブにおける処理の一部を図4のフローチャートに示す。
【0047】
図4のフローチャートにおける受信スタートは、USBのスケルチ検出がなくなった時点である。USBレシーバーからの出力データが有効となる。まず、パケットの最初のフィールドであるSYNCフィールドの検出(図4・S001)、及びSYNCフィールドの終了の検出(図4・S002)が行われる。SYNCフィールドの終了を検出すると受信しているパケットがSOFパケットであるかどうかの識別を行う(図4・S003)。受信しているパケットがSOFパケットの場合は、送信するEOPコード(図4におけるT−EOP)として40ビット長のEOPコードを生成し(図4・S004)、受信しているパケットがSOFパケット以外の場合はT−EOPとして8ビット長のEOPコードを生成する(図4・S005)。次に、ビットスタッフィングエラーの検出(図4・S006)によりEOPフィールドのコードが受信されたことを判定し、ビットスタッフィングエラーを引き起こしたビットから7ビット前のビット以降の受信データの代わりにT−EOPコードをEOPフィールドの送信データとして出力(図6・S007)する。S007によりひとつのパケットに対しての処理が終わり、次のパケット受信のためにS001の処理に戻る。
【0048】
USBハブにおいて、図4で示した処理フローを実行することにより、USBハブにおいてスケルチ検出の際に付加される可能性のあるドリブルビットが送信データとなることを防ぎ、パケットの種類により異なるEOPコードの受信の判定をしなくて良いことから、使用するハードウェアにおいて異なるEOPコードを解析するための回路をなくすことができる。
【符号の説明】
【0049】
10…アップストリームポート部、11…ダウンストリームポート部、20…リピーター部、21…トランザクショントランスレーター部、22…ハブコントローラー部、23…ルーティングロジック部、40…データ転送部、41…SYNC検出部、42…PID検出部、43…ビットスタッフィングエラー検出部、44…シーケンス制御部、45…EOP生成部、71…信号、72…信号、73…信号、74…信号、76…信号、78…信号、100…USBハブ、200…ホスト装置、300…スレーブ装置、1001…SOFパケット、1002…トークンパケット、2001…SOFパケット、2002…トークンパケット。

【特許請求の範囲】
【請求項1】
USBハブであって、
受信したパケットの種別の識別を行う第1の制御部と、
前記受信したパケットのビットスタッフィングエラーの検出を行う第2の制御部と、
第1のEOPコード及び第2のEOPコードを生成する第3の制御部と、を含み、
ハイスピードモードによる転送において、
前記第1の制御部において前記受信したパケットがSOFパケットであると判断され、かつ、前記第2の制御部において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第1のEOPコードに置き換えて送信し、
前記第1の制御部において前記受信したパケットがSOFパケットでないと判断され、かつ、前記第2の制御部において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第2のEOPコードに置き換えて送信することを特徴とするUSBハブ。
【請求項2】
前記第1の制御部は、前記受信したパケットの種別の判断を、前記受信したパケットに含まれるPIDコードにより行うことを特徴とする請求項1に記載のUSBハブ。
【請求項3】
前記第1のEOPコードの長さは40ビットであり、前記第2のEOPコードの長さは8ビットであることを特徴とする請求項1又は2に記載のUSBハブ。
【請求項4】
USBハブの制御方法であって、
受信したパケットの種別を識別する第1の工程と、
前記受信したパケットのビットスタッフィングエラーの検出を行う第2の工程と、
第1のEOPコード及び第2のEOPコードを生成する第3の工程と、を含み、
ハイスピードモードにおける転送において、
前記第1の工程において前記受信したパケットがSOFパケットであると判断され、かつ、前記第2の工程において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第1のEOPコードに置き換えて送信し、
前記第1の工程において前記受信したパケットがSOFパケットでないと判断され、かつ、前記第2の工程において前記受信したパケットの第1のビットでビットスタッフィングエラーを検出した場合は、前記第1のビットから7ビット前のビット以降に受信したデータを前記第2のEOPコードに置き換えて送信することを特徴とするUSBハブの制御方法。
【請求項5】
前記第1の工程は、前記受信したパケットの種別の判断を、前記受信したパケットに含まれるPIDコードにより行うことを特徴とする請求項4に記載のUSBハブの制御方法。
【請求項6】
前記第1のEOPコードの長さは40ビットであり、前記第2のEOPコードの長さは8ビットであることを特徴とする請求項4又は5に記載のUSBハブの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate