図1に、本発明による画像形成装置の第一の実施形態の全体構成図を示す。この画像形成装置は、単一の光源からの出射光を走査光学系により感光体に照射して画像(静電潜像)を形成するシングルビーム走査光学系を用いたものである。
図1において、光源としての半導体レーザ11から出射されたレーザ光はコリメータレンズ12とシリンダーレンズ13を介することで整形され、その後、偏光器としてのポリゴンミラー14に入射することで、周期性を持って感光体18を走査するように反射される。ポリゴンミラー14で反射されたレーザ光は、fθレンズ15、ミラー16、及びトロイダルレンズ17を介して感光体18に照射され、光スポットを形成する。これにより、感光体105上には、半導体レーザ101の出力に応じた画像(静電潜像)が形成される。
ミラー16の両端にはフォトディテクタ(PD1)19、フォトディテクタ(PD2)20がそれぞれ配置されており、毎ラインごとの走査の開始時点と終了時点とが検出される。すなわち、ポリゴンミラー14により反射されたレーザ光は感光体18を1ライン走査する前にPD1(19)に入射され、走査後にPD2(20)に入射される。これらのフォトディテクタ19、20では、入射されたレーザ光をそれぞれライン走査の開始を示す第1の同期信号SPSYNC及び終了時点を示す第2の同期信号EPSYNCに変換し、画素クロック生成部21に供給する。画素クロック生成部21は、2つの同期信号SPSYNC及びEPSYNCから、PD1(19)とPD2(20)間をレーザ光が走査される時間間隔を測定し、その時間間隔に予め定められた所定数のクロックが収まるように求められた周波数の画素クロックPCLKを生成し、それを画像処理部22とレーザ変調データ生成部23に供給する。フォトディテクタ(PD1)19の出力信号である第1の同期信号SPSYNCは、ライン同期信号として画像処理部22にも与えられる。画像処理部22は、同期信号SPSYNCと画素クロックPCLKを基準に画像データを生成して変調データ生成部23に出力する。変調データ生成部23は、画素クロックPCLKを基準として、入力された画像データから変調データを生成し、レーザ駆動部24を介して半導体レーザ11を駆動する。
本発明の画像クロック生成装置及びパルス変調装置は、図1に示すような画像形成装置の画素クロック生成部や変調データ生成部に使用される。これにより、走査速度誤差を高精度に補正した画素クロックを基準に感光体上に画像を形成でき、高品質な画像が得られる。
以下に、本発明における画素クロック生成装置及びパルス変調装置の実施形態を図面に基づき詳しく説明する。
図2は、本発明による画素クロック生成装置の第1の実施形態を示す全体的な構成図である。この画素クロック生成装置100は高周波クロック生成部110、第1エッジ検出部120、第2エッジ検出部130、分周器140、比較部150、フィルタ160、及び周波数演算部170を備えている。
高周波クロック生成部110は基準クロックRefCLKを基に、逓倍した高周波クロックVCLKを生成するものであり、一般的なPLL(Phase Locked Loop)回路により構成される。入力する基準クロックRefCLKを例えば精度のよい水晶発振器出力を用いることにより精度のよい高周波クロックVCLKが得られる。この高周波クロックVCLKを基準に画素クロックPCLKを生成する。
分周器140は、高周波クロックVCLKをM分周した画素クロックPCLKを生成する。これは例えばM進カウンタにより構成され、カウント値countMを出力する。ここで同期信号SPSYNCの立ち上がりでカウントを開始するようにすれば、走査開始時点に位相同期した画素クロックが生成できる。また、分周比Mは周波数演算部170からの画素クロック周波数指示信号Mnowに従って変更される。このように画素クロックPCLKの生成は安定かつ高精度に発振させた高周波クロックVCLKを分周することにより生成されるので、この分周比を変更することにより瞬時にかつ安定に画素クロック周波数を変更することが可能となる。よって、ライン毎周波数を変更しても瞬時に移行できる。
第1エッジ検出部120は、第1の同期信号SPSYNCの立ち上がりエッジを高周波クロックVCLKを基準として検出するものであり、同期信号SPSYNCの立ち上がりを検出すると画素クロックPCLKに同期した検出パルスSPplsを出力する。第2エッジ検出部130は、第2の同期信号EPSYNCの立ち上がりエッジを高周波クロックVCLKを基準として検出し、検出パルスEPplsとカウント値EPmを出力する。これら第1エッジ検出部120及び第2エッジ検出部130は、入力される第1の同期信号SPSYNCや第2の同期信号EPSYNCに含まれるノイズを除去する機能を備えている。この詳細については詳述する。
比較部150は、2つの同期信号SPSYNC、EPSYNC間の時間Tlineを検出し、書き込み周波数と2つのフォトディテクタPD1とPD2との距離に応じて予め定められた基準時間RefNと該計測した時間Tlineとの差を当該ラインの誤差Lerrとして算出する。つまり適正な走査時間(基準時間)RefNと当該ラインの実際の走査時間Tlineとの差が走査速度の誤差である。この誤差Lerrは高周波クロックVCLKを基準としてカウントし演算を行っても良いが、高周波クロックVCLKは非常に高周波であり、またカウントするビット数も非常に大きくなるので、回路規模、消費電力の点で不利である。そこで本実施形態では、時間Tlineを画素クロックPCLKを基準としてカウントし、基準値RefNとの比較をし、最後に高周波クロック基準の当該ラインの誤差Lerrとして変換している。
フィルタ160は、ライン誤差Lerrをフィルタリングして誤差データErrを出力するデジタルフィルタであり、例えば簡単には、直近の複数ライン分の誤差Lerrを平均して誤差データErrを得る。
周波数演算部170は、誤差データErrに従って適正な画素クロック周波数を算出し、これを画素クロック周波数指示信号Mnowに変換して出力する。高周波クロック周期をTv、画素クロック周期をTpとし、今、Tp=KTvとして画素クロック周波数を設定して走査した時、目標値Tp'(Tp'=K'Tv)との誤差Errが入力される。従って、RefN・Tp'=RefN・Tp+Err・Tvであるので、
K'=K+Err/RefN (1)
としてK'を設定するようにすれば、画素クロック周波数を目標値に制御することができる。
つまり、分周器140、比較部150、フィルタ160及び周波数演算部170でデジタルPLL制御を行っている。ここで、フィルタ160の特性がこのPLL制御特性を決定し、制御系が安定になるようにフィルタ特性が決定される。なお、K'=K+α・Err/RefNとしてループゲインを変えるようにしても良い。
また、分周器140の分周比Mは自然数であるので、画素クロック周波数の設定値Kを次のようにして画素クロック周波数指示信号Mnowに変換すると、まるめ誤差を低減することができ、より精度のよい画素クロックが得られる。例えば、通常は設定値Kを四捨五入して整数にまるめた値をMとし、Mnow=Mとし、画素クロックのCサイクルに1回、Mnow=M+1またはM-1とすることにより、K=(M±1/C)となり丸め誤差を低減できる。また丸め誤差の振り分けも均等に行えるので、画素クロックの局所的な偏差も抑えられる。この場合は前記M値とC値を制御するようにすればよい。詳細な説明は後述する。
以下、図2の画素クロック生成装置の高周波クロック生成部100、分周器140を除く各部の詳細構成例及び動作について説明する。
図3は第1エッジ検出部120の詳細構成例を示す図である。この第1エッジ検出部120は受信部1201、デジタルフィルタ1202、コンパレータ1203、及び、フリップフロップ1205とANDゲート1206を組み合わせたエッジ検出部1204からなる。図4は図3の第1エッジ検出部における内部信号の一例を示したものである。図4に基づき、図3に示す第1エッジ検出部120の構成例の動作を詳述する。
図4において、(a)SPSYNCは該第1エッジ検出部120に入力される走査開始を示す第1の同期信号であり、(b)VCLKは立ち上がりエッジ検出の基準となる高周波クロック生成部110で生成される高周波クロックである。図4に示すように、同期信号SPSYNCは伝送距離や雑音の影響により、高周波クロックVCLKに対して単調増加ではない劣悪な信号である場合が多い。受信部1201は高周波クロックVCLKを基準クロックとして同期信号SPSYNCを取り込み、適切な閾値電圧Vtに基づいた二値化信号を、(c)SPrcvとして出力する。SPrcvはデジタルフィルタ1202によって適切な平滑化を施され、(d)SPfilとして出力され、コンパレータ1203によって再二値化されて、(e)SPcmpとして出力される。
平滑化を行うデジタルフィルタ1202についてはIIRフィルタやFIRフィルタを用いて実現する事が可能であり、それらは公知の技術であるので、詳細説明は省略する。図4の例では、デジタルフィルタ1202は、伝達関数H(z)=1+2*z^(-1)+z^(-2)を持つFIRフィルタとし、コンパレータ1203の閾値はref=2とした例を挙げている。なお、デジタルフィルタ1202の特性を、外的要因等に基づいて変更する手段を設ければ、様々なシステムや環境に対応する事が可能となる。
エッジ検出部1204は、画素クロックPCLKに同期して動作し、フリップフロップ1205とANDゲート1206により、二値化信号SPcmpの立ち上がりエッジを検出してエッジ検出信号を、(f)SPplsとして出力する。ここでは、エッジ検出部1204にはフリップフロップ1205とANDゲートを組み合わせた構成を用いたが、必ずしもこの構成である必要はない。
図5は第2エッジ検出部130の詳細構成例を示す図である。この第2エッジ検出部130は受信部1301、デジタルフィルタ1302、コンパレータ1303、フリップフロップ1305とANDゲート1306を組み合わせたエッジ検出部1304、カウンタ1307及びラッチ1308からなる。
図3の第1エッジ検出部120の構成例と同様に、この第2エッジ検出部130においても、受信部1301は高周波クロックVCLKを基準クロックとして、走査終了を示す第2の同期信号EPSYNCを二値化してEPrcvとして出力し、デジタルフィルタ1302はEPrcvを平滑化してEPfilとし、コンパレータ1303はEPfilを再度二値化してEPcmpとして出力する。エッジ検出部1304はPCLKに同期し、フリップフロップ1305とANDゲート1306により、EPcmpの立ち上がりエッジを検出してEPplsとして出力する。ここまでの動作は、図4において、(a)SPSYNC,(c)SPrev,(d)SPfil,(e)SPcmp,(g)SPplsを、それぞれ(a)EPSYNC,(c)EPrev,(d)EPfil,(e)EPcmp,(g)EPplsと置き換えれば、図3の第1エッジ検出部120と同じである。
第2エッジ検出部130には、更にカウンタ1307とラッチ1308が付加されている。カウンタ1307はVCLKに同期して動作し、EPcmpが「L」の時にリセットされ、「H」の時にインクリメントされるカウンタである。カウンタ1307の出力をEPcountとする。ラッチ1308は画素クロックPCLKに同期して動作し、EPplsが「L」の時にカンウト値EPmを保持し、「H」の時にカウンタ1307からの出力値EPcountに更新される。
図6は第1エッジ検出部120の別の詳細構成例を示す図である。この第1エッジ検出部120はシュミットトリガ回路1211、フリップフロップ1212、及びフリップフロップ1214とANDゲート1215を組み合わせたエッジ検出部1213からなる。図7は図6の構成例における内部信号の一例を示したものである。図7に基づき、図6に示す第1エッジ検出部120の構成例の動作を説明する。
図7において、(a)SPSYNCは第1エッジ検出部120に入力される第1の同期信号である。シュミットトリガ回路1211は、該同期信号SPSYNCを二値化して、(b)SPschmittとして出力する。フリップフロップ1202は、シュミットトリガ出力SPschmittを(c)VCLKにより取り込んで、(d)SPcmpとして出力する。エッジ検出部1213は、(e)PCLKに同期して動作し、SPcmpの立ち上がりエッジを検出してエッジ検出信号(f)SPplsとして出力する。エッジ検出部1213の動作は、図3の場合と同じである。
シュミットトリガ回路1211は、出力が「L」の場合に閾値電圧Vhを、出力が「H」の場合には閾値電圧Vlを持つような、ヒステリシス特性を持つコンパレータの事である。Vh、Vlの値をそれぞれ外部から設定できるような手段を設ければ、様々なシステムや環境に対応する事が可能となる。この種のシュミットトリガ回路は公知の技術であり、その詳細な説明は省略する。
図8は第2エッジ検出部130の別の詳細構成例を示す図である。この第2エッジ回路130はシュミットトリガ回路1311、フリップフロップ1312、フリップフロップ1314とANDゲート1315を組み合わせたエッジ検出部1313、カウンタ1316及びラッチ1317からなる。
図6の第1エッジ検出部120の構成例と同様に、シュミットトリガ回路1311は第2の同期信号EPSYNCを二値化してEPschmittとし、フリップフロップ1312は、シュミットトリガ出力EPschmittを高周波クロックVCLKにより取り込んでEPcmpとして出力する。エッジ検出部1313は、画素クロックPCLKを基準としてEPcmpの立ち上がりエッジを検出してEPplsとして出力する。また、カウンタ1316は高周波クロックVCLKに同期して動作し、EPcmpが「L」の時にリセットされ、「H」の時にインクリメントされるカウンタであり、その出力はEPcountである。ラッチ1317は、画素クロックPCLKに同期して動作し、EPplsが「L」の時にカウント値EPmを保持し、「H」の時にカウンタ1307からの出力値EPcountに更新する。エッジ検出部1313、カウンタ1316、ラッチ1317は図5の構成例と同じである。
図9は比較部150の詳細構成例を示す図ある。この比較部150はカウンタ1501、演算部1502及び誤差演算部1503からなる。図10は、図2の画素クロック生成装置100における一部信号のタイミング図の一例であり、これに基づき図9に示す比較部150の動作を詳述する。
図10において、(a)SPSYNCは走査開始を示す第1の同期信号であり、先に説明した第1エッジ検出部120に入力される。(b)EPSYNCは走査終了を示す第2の同期信号であり、先に説明した第2エッジ検出部130に入力される。(c)VCLKは高周波クロック生成部110で生成される高周波クロックの立ち上がりエッジを示している。(d)countMは分周器140で高周波クロックVCLKを基準としてカウントされるカウント値であり、(e)PCLKは(d)countMが0の時立ち上がる画素クロックである。(f-1)SPpls及び(f-2)EPplsは先に説明した第1エッジ検出部120と第2エッジ検出部130から出力される信号で、それぞれSPSYNC,EPSYNCの立ち上がりを示すPCLKに同期したパルスである。(g-2)EPmは、先に説明した第2エッジ検出部130から出力されるカウント値で、(b)EPSYNCの立ち上がり時の(d)countMの値である。(h)は当該比較部150における画素クロックPCLK基準でカウントするカウンタ1501の値であり、(f-1)SPplsで0にリセットされ、(f-2)EPplsでカウントが停止される。
図9において、カウンタ1501は、上記のように画素クロックPCLKをカウントするカウンタであり、SPplsで0にリセットされ、EPplsでカウントを停止する。減算器1502はカウント停止後のカウンタ1502の値countN(図10ではn)から適正走査時間を示す基準カウント値RefNの減算を行い、減算結果diffNを出力する。誤差演算部1503は、下記(2)式の演算を行い高周波クロックVCLKの周期Tvを単位とする誤差Lerrを出力する。
Lerr=diffN・K+EPm (2)
ここで、diffN=n-RefN,EPm=m2,Tp=K・Tvであり、TpはPCLKの周期である。
なお、走査開始時点と終了時点を検出する2つのフォトディテクタPD1とPD2(図1)との距離がドット幅の整数倍でない場合、つまり基準時間が目標とする画素クロック周期の整数倍でない場合、その端数を高周波クロックVCLKのサイクル数に換算し、これをRefMとして誤差演算部1503に入力し、Lerr=diffN・K+EPm-RefMと演算するようにすると、より正確な画素クロック周波数の制御が行えるようになる。
図11は周波数演算部170の詳細構成例を示す図である。この周波数演算部170は演算制御部1701、レジスタ群1703、1704、1705、選択部1706、1707、カウンタ1708及び加算部1709からなる。本実施形態では、ポリゴンミラーは6面構成であるとし、面毎の誤差を補正するため面毎に画素クロック周波数を制御するとする。
図11において、演算部1702は、現在の設定値M,C,Rとフィルタ160から与えられる誤差データErrとから次の設定値NextM,NextC,NextRを演算するものであり、この演算を演算面指示信号CalcNoに従い、各面(ここでは6面)毎行う。このM,C,Rの関係は、上述したようにTp=(M±1/C)Tvであり、C=RefN/Rである。これらの式と先の(1)式より、(NextM=M'、NextR=R'、RefN=Nrと記す)
M'+R'/Nr=M+R/Nr+Err/Nr、 C'=Nr/R'
であるので、演算は次の手順で行う。
(1) R+Err(=TmpRとする)を計算する。
(2) TmpR>Nr/2であれば、M'=M+1としてR'=TmpR-Nrとする。TmpR<-Nr/2であれば、M'=M-1としてR'=TmpR+Nrとする。それ以外は、M'=M、R'=TmpRとする。
(3) Nr÷R'の商をC'とする。なお、R'=0であれば、C'=0とする。
レジスタ1703は上記の演算により求めたM値を保持しておくデータ保持部であり、保持する値はポリゴンミラーの各面毎F0M〜F5Mの値を保持する。また、更新信号Renewに従い対応するレジスタ値をNextMに更新する。ここでF*(*はポリゴンミラーの面番号0〜5)はポリゴンミラーの面番号に対応する値であることを示す(以下同様)。なお、この面番号は相対的な関係を示すものであり、対応する値は自動的に制御されるので、実際の面と一致させる必要はない。同様にレジスタ1704は現在設定しているC値を保持しておくデータ保持部であり、レジスタ1705は現在設定しているR値を保持しておくデータ保持部である。これらレジスタ1704、1705も、それぞれ更新信号Renewに従い対応するレジスタ値をNextC,NextRに更新する。
選択部1706は、面選択信号FNoに従い、レジスタ1703におけるF0M〜F5Mのうち対応するM値を選択出力するものである。同様に選択部1707は、面選択信号FNoに従い、レジスタ1704らおけるF0C〜F5Cのうち対応するC値を選択出力するものである。なお、CsignはC値の符号を示す。
カウンタ1708は、画素クロックPCLKを基準としてC値をカウント(0からC-1まで)するもので、カウント値がC-1となったとき、Csignが正を示していれば+1を、負を示していれば-1を出力し、それ以外の時は0を出力する。なお、C=0の時は常に0を出力する。
加算部1709は選択部1706の出力するMとカウンタ1708の出力する値を加算し、結果を画素クロック周波数指示信号Mnowとして出力する。よって、画素クロックPCLKのCサイクルに1回、M値が+1または-1されるように変換され、画素クロックの平均周期は(M±1/C)Tvとなる。
演算制御部1701は上述した演算を制御するものであり、図12に示すフローチャートに従い、演算面指示信号CalcNo、更新信号Renew及び面選択信号FNoを生成し出力する。
図12において、ステップ1ではFNo=0、CalcNo=0として初期化を行う。ステップ2では1ラインの走査が終了するまで待機する。つまり、信号EPplsにより走査終了を検知するまで待機する。なお、待機時間には誤差データErrの演算が確定するまでの時間の猶予も含む。ステップ3では現在のCalcNoに対応した前述の演算を行う。ステップ4では現在のCalcNoに対応した更新信号Renewをアクティブにし、各レジスタ1703、1704、1705の値をNext値に更新する。ステップ5ではCalcNoをインクリメントする。なお、CalcNo=5の時は0に戻る。
ステップ6では、画素クロック周波数制御がロックしているか否かを示すロックフラグLockに従い分岐する。ここでロックフラグLockは、例えば、所定ラインの間(例えば6ラインとする)、誤差Lerr(あるいは誤差データErr)が所定の範囲内(面間誤差のバラツキ範囲や所望の制御精度などから決めればよく、例えば±2M以内とする)に収まっていれば、ロックしているとみなす信号で、この信号の生成部は例えばフィルタ160内に備えればよい。あるいは制御応答性より予め制御開始より所定時間(ライン数などで指定)を決めておき、この時間が経過したらLock信号をアクティブにするようにしても良い。
ステップ7では、ステップ6の判定結果がNoの場合(つまりまだロックしていない場合)、全ての面で演算を行い設定値を更新したかを判定する。6面全て演算していればFNo=CalcNoとなるのでステップ8に移る。否であればステップ2に戻り別の面の演算を行う。ステップ8ではFNoをインクリメントし(5の場合は0に戻る)、CalcNoにFNoを代入する(インクリメント後の値)。これにより画素クロック周波数指示信号Mnowに変換するM及びC値が次ラインの設定値に変更される。
なお、ここまでの操作を次ラインの走査開始(SPSYNCが検知される)までに行う。その後ステップ2に戻り上記のルーチンを繰り返す。
以上のように制御すれば、各面のクロック周波数が所定誤差内に収まるまでは、全ての面で誤差Errを縮小するように制御していくので高速な引き込みができ、また所定誤差内に収まった後は各面毎個別に制御するので面間の誤差も低減され、高精度なクロック周波数制御ができる。
図13は、上記の制御方法による引き込み過程の様子の一例を示す図であり、横軸は時間、縦軸はライン誤差Lerrである。また黒丸は第0面に対応する誤差であり、その他の面の誤差は×で示す。また点線は6面分の誤差の平均値を示す。
図14は周波数演算部170の別の詳細構成例を示す図である。この周波数演算部170は演算制御部1711、演算部1712、レジスタ群1713、1714、選択部1715、1716、カウンタ1717、変換部1718及び加算部1719からなる。演算制御部1711は図11の演算制御部1701と同様であり、演算部1712、レジスタ群1713、1714、選択部1715、1716を制御する。
演算部1712は、現在の設定値M,Fと誤差データErrとから次の設定値NextM,NextFを演算するものであり、この演算を演算面指示信号CalcNoに従い、各面毎行う。この実施形態では画素クロック周波数の設定値Kは次のようにして画素クロック周波数指示信号Mnowに変換する。すなわち、設定値Kの整数部をMとし、小数部をa桁(2進数表記)の値Fに丸める。そして2^a(=Naとする)サイクルにF回、Mnow=M+1とすることにより、K=(M+F/Na)と設定される。ここで設定値による丸め誤差は最大Nref/Naとなるので、所望の誤差許容値に収まるように小数部の桁数aを決定すればよい。また、局所的な周波数偏差を抑えるため+1するF回のサイクルは均等に振り分けられるようにする。この機能は変換部1718が担う。
ここで、(1)式と上記Kの関係式により、(NextF=F'とする)
K'+F'/Na=M+F/Na+Err/Nr
であるので、演算は次の手順で行う。
(1) F+Err/Nr*Na(=TmpFとする)を計算する。Naは2^aであるので、*Naは被乗数(Err/Nr)の上位aビットを取ればよく、またNrはこの周波数制御を行っている間は固定であるので、予めNrの逆数を計算しておいてこれをErrに乗算すれば演算は簡便に行える。
(2) TmpF>Naであれば、M'=M+1、F'=TmpF-Naとする。TmpF<0であれば、M'=M-1、F'=TmpF+Naとする。
レジスタ1713は上記の演算により求められたM値を保持しておくデータ保持部であり、レジスタ1714は同様にF値を保持しておくデータ保持部である。レジスタ1713、1714では、これら値M,Fをはポリゴンミラーの各面毎F0〜F5に保持する。そして、それぞれ更新信号Renewに従い対応するレジスタ値をNextC、NextRに更新する。
選択部1715は、面選択信号FNoに従い、F0M〜F5Mのうち対応するM値を選択して出力する。同様に選択部1716は、面選択信号FNoに従い、F0F〜F5Fのうち対応するC値を選択して出力する。
カウンタ1717は、画素クロックPCLKを基準にカウントするaビットカウンタであり、そのカウント値countAを出力する。変換部1718は、カウント値countAに従い、Na(=2^a)サイクル中、Fサイクルは「1」を、残りのNa-Fサイクルは「0」として信号UPを出力する。このUP信号の生成は、カウント値countA[a-1:0]のビット並びを逆転させたcountA[0:a-1]をArevとした時、ArevがFより小さい場合1とするようにすれば(UP=(Arev<F))、Naサイクル中均等にF回「1」が生成される。
加算部1719は、選択部1715の出力するMと変換部31の出力するUPを加算し、結果を画素クロック周波数指示信号Mnowとして出力する。よって、PCLKのNaサイクルにF回、M値が+1されるように変換され、画素クロックの平均周期は(M+F/Na)Tvとなる。
前述したように、画素クロック周波数の制御は1ライン毎に位相誤差Lerrを検出し、これが0になるようにディジタルPLL制御を行っている。図2のフィルタ160は制御ループ内に置かれたデジタルフィルタであり、このフィルタ特性を変更することにより、制御帯域を設定できる。
以下にフィルタ160の設定例を示す。ループフィルタを除くDPLL制御系のループゲインは図15の(a)に示すようになる。ここでfsはサンプリング周波数で、つまりここではライン周波数である。この制御系に(b)のような特性を持つラグリードフィルタを挿入し、(c)のループゲインとすることにより、制御系を安定化させることができる。
いま、τ1=1/2πf1、τ2=1/2πf2とすると、ループフィルタの伝達関数H(s)は次の式(2)のようになる。
H(s)=(1+τ2s)/(1+τ1s) (3)
上記式(2)を、双一次変換(s=2/T・(1-z^-1)/(1+z^-1))してz変換形式にし、さらにT=1として正規化すれば、ループフィルタの伝達関数H(z)は次の式(4)となる。
H(z)=(b0+b1z^-1)/(1+a1z^-1) (4)
ここで、a1=(1-2τ1)/(1+2τ1)、b0=(1+2τ2)/(1+2τ1)、b1=(1-2τ2)/(1+2τ1)である。
図16は上記式(4)の伝達関数H(z)を実現するフィルタ160の構成例であり、1601と1606は加算器、1602は遅延素子、1603、1604、1605は乗算器を示している。このフィルタ160は、一次のIIR型フィルタであり、加算器1601及び1606はそれぞれの入力を加算し、乗算器1603、1604、1605はそれぞれ入力に対し、計数-a1、b1、b0を掛けた値を出力し、遅延素子1602は中間変数wを1サンプル毎(つまり1ライン毎)遅延させる。
このフィルタ1601に比較部150から出力させるライン誤差Lerrを入力すれば、誤差データErrが得られる。また、乗算器1603、1604、1605の各計数を変更する手段を設ければ、動的にフィルタ特性を変更可能となり、例えば、上述のLock信号に従いフィルタ特性を変更するようにしても良い。
なお、本例のフィルタ特性及び構成は一例であり、本発明はその他の構成のフィルタでも適用できる。デジタルフィルタについては公知技術であるので、その他の構成の例示は省略する。
次に、図1の画素クロック生成部21に図2の実施形態の画素クロック生成装置100を用い、該画素クロック生成装置100で生成した画素クロックPCLKを基準に画像データに従いパルス幅変調する図2の変調データ生成部23の好適な変調方法を説明する。
図17は、変調データ生成部23の動作を説明するタイミング図である。ここでは画像データPDataに従い8値のパルス幅変調を行った変調データMDataを生成する場合とする。図17において、(a)VCLKは高周波クロック(周期Tv)の立ちあがりを示し、(b)countMは分周器140でカウントしたカウント値であり、今、Mnow=16と設定されているものとする。(c)PCLKは画素クロックであり、ここでは周期は16Tvとなっている。(d)PDataはPCLKに同期して入力される画像データであり、この値Dmに従って出力する変調データ(e)MDataのパルス幅Twを変調する。変調データMDataの生成は高周波クロックVCLKを基準にして行われ、Dm≠0であれば、countM=0の時「H」とする。また、countM=Dm/Nm・Mnow(Nmは階調数でここでは8)の時「L」とする。またはcountM=(Nm-Dm)/Nm・Mnowの時「H」とし、Dm≠8であれば、countM=0の時「L」とするようにすると、(e')のような変調データが生成できる。またこれら2つの生成モードを切り替えられるようにし、ドット毎変更できるようにしても良い。
なお、上記説明では、走査開始と終了との2点間の走査時間の変動に合わせて画素クロック周波数を制御する形態について説明したが、1ライン中の走査速度がほぼ一定であれば、1ライン中の任意の2点間の走査時間の変動に合わせて制御を行うようにしても良く、この第1の実施形態で適用できる。
また、図3乃至8に述べたような構成によってSPSYNC及びEPSYNCの立ち上がりエッジを検出する事ができるが、PCLKをSPSYNCに同期させる為には、分周器140の中にも同様のエッジ検出部を持つ必要がある。この場合、図3または図6に示した第1エッジ検出部120のSPcmpを出力するパートまでを用いてSPcmpを生成し、この立ち上がりエッジとPCLKを同期させるようにする事で、所望の画素クロックPCLKを生成する。あるいは、第1エッジ検出部120から直接SPcmpを分周器140に入れる構成でも構わない。
また、画素クロック生成装置100はSPSYNCの立ち上がりエッジとEPSYNCの立ち上がりエッジの時間差を検出して画素クロックの制御を行うため、実際のSPSYNC/EPSYNCの立ち上がりから検出までの遅延時間が検出部によって異なると、正確な制御が行えない。そのため、第1エッジ検出部120、第2エッジ検出部130及び分周器140で用いるエッジ検出は、同じ回路構成であることが必要である。
以上説明したように、画素クロック生成装置の第1の実施形態によれば、高精度に生成された高周波クロックVCLKを基準として画素クロックを生成し、走査時間の変動に合わせて画素クロック周波数を制御しているので、走査平均速度の変動があってもこの誤差を高精度に補正できる画素クロックが生成でき、さらに画素クロック周波数の制御はポリゴンミラーの各面に対応してそれぞれ制御しているので、面毎の走査速度誤差があっても高精度に補正できる画素クロックが生成できる。また、この画素クロック生成装置を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
特に、図3乃至図8で説明した第1エッジ検出部及び第2エッジ検出部の実施形態によれば、同期信号SPSYNC及びEPSYNCの立ち上がりエッジを検出する際に、ノイズ等の影響による信号揺らぎを除去する為のフィルタを一度通してから、高精度に生成された高周波クロックVCLKによって立ち上がりエッジを検出しているので、画像形成装置内部の様々な要因により同期信号が劣化していても、高精度にその立ち上がりエッジを検出する事ができ、高精度の画素クロックが生成できる。また、このエッジ検出部を適用した画素クロック生成装置を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
次に、図18は本発明による画素クロック生成装置の第2の実施形態を示す全体的構成図である。この画素クロック生成装置200は高周波クロック生成部210、第1エッジ検出部220、第2エッジ検出部230、計数部240、比較部250、フィルタ260、周波数演算部270及び画素クロック出力部280で構成される。
図18において、高周波クロック生成部210は、基準クロックRefCLKを基に逓倍し、位相差が等間隔の多相クロックを生成するものであり、本実施形態では16位相の多相クロックVCLK0〜15を生成するものとする。高周波クロック生成部210は、また、多相クロックのうちの1つをQ分周(ここではQ=4とする)した内部動作用クロックGCLKを生成し、図18では省略したが、当該画素クロック生成装置200の各部へ供給する。高周波クロック生成部210の詳細構成例は後述する。
図19は、高周波クロック生成部210で生成する各クロックのタイミングを示す図である。(a-0)〜(a-15)は多相クロックVCLK0〜15のそれぞれのクロックであり、互いに等間隔の位相差を有しており、この時間間隔をTvとする。また、(b)GCLKは(a-0)VCLK0を4分周したクロックである。画素クロック生成装置200は基本的にこのクロックGCLKを動作クロックとして動作する。ここで、GCLKを4分割した期間を順にQT0、QT1、QT2、QT3と称し、また多相クロックVCLK0〜15の立ち上がりにそれぞれ対応した時刻をPH0〜PH15と称し、この期間QTと位相PHとによりGCLK中の時間情報QPを表す。この時間情報QPは0〜63の64値であり、本実施形態ではこの多相クロックの等間隔の位相差Tvを基準として画素クロックPCLKを生成する。つまり、画素クロック周波数の制御演算を、動作クロックGCLKを基準に時間情報QP(QT,PH)の演算を行うことにより実施する。
図18に戻り、第1エッジ検出部220は、第1の同期信号SPSYNCの立ち上がりエッジを多相クロックVCLK0〜15を基準として検出するものであり、同期信号SPSYNCの立ち上がりを検出すると、クロックGCLKに同期した検出パルスSPplsと立ち上がり時の期間QTと位相PHを示す時間情報SPqpを出力する。同様に、第2エッジ検出部230は、第2の同期信号EPSYNCの立ち上がりエッジを多相クロックVCLK0〜15を基準として検出するものであり、同期信号EPSYNCの立ち上がりを検出すると、クロックGCLKに同期した検出パルスEPplsと立ち上がり時の期間QTと位相PHを示す時間情報EPqpを出力する。
計数部240は、周波数演算部270からの画素クロック周波数指示信号Mnowに従って画素クロックPCLKの立上り時刻及び立下がり時刻を計数するものであり、Mnowに達する度にSet信号(GCLKに同期したSETpls信号と時間情報SETqpからなる)を生成し、またSet信号からMnow/2にあたる時間を計数し、Rst信号(GCLKに同期したRSTpls信号と時間情報RSTqpからなる)を生成する。この計数する時間単位は多相クロックVCLK0〜15の位相差Tvである。
比較部250は、2つの同期信号SPSYNC、EPSYNCの間の時間Tlineを計測し、書き込み周波数と2つのフォトディテクタPD1とPD2(図1)との距離に応じて予め定められた基準時間Rewと該計測した時間Tlineとの差を当該ラインの誤差Lerrとして算出する。つまり、適正な走査時間(基準時間)と当該ラインの走査時間Tlineとの差が走査速度の誤差である。ここでは、SPpls入力後EPplsが入力されるまでの期間中に計数部240から入力されるSETplsの数をカウントし、この値と基準値RefNとの比較をし、さらに各パルスの時間情報とから当該ラインの誤差Lerrとして変換している。この誤差の単位は位相差Tvである。
フィルタ260は、ライン誤差Lerrをフィルタリングして誤差データErrを出力するデジタルフィルタである。これは、図2におけるフィルタ160と同様である。
周波数演算部270は、フィルタ260が出力する誤差データErrに従って適正な画素クロック周波数を算出し、これを画素クロック周波数指示信号Mnowに変換して出力する。画素クロック周期をTpとし、今、Tp=KTvとして画素クロック周波数を設定して走査した時、目標値Tp'(Tp'=K'Tv)との誤差Errが入力される。よって、前述と同様に(1)式により求めたK'を設定するようにすれば、画素クロック周波数を目標値に制御することができる。周波数演算部270は、図2の周波数演算部170と同様の機能を果たし、構成も図14の構成が同様に適用できる。
画素クロック出力部280は、計数部240より供給されるSet信号及びRst信号に従って「H」<->「L」を切り替えて画素クロックPCLKを生成し出力する。
以下に、図18の第2の実施形態の画素クロック生成装置200におけるフィルタ260及び周波数演算部270を除く各部の詳細構成及び動作を説明する。
図20は高周波クロック生成部210の構成例を示す図である。この高周波クロック生成部210は、図19に示したように、基準クロックRefCLKから、多相クロックVCLK0〜15と内部動作用クロックGCLKを生成するもので、分周器2101、位相周波比較器(PFD)2102、ローパスフィルタ(LPF)2103、電圧制御発振器(VCO)2104及び分周器2106からなる。
電圧制御発振器(VCO)2104は、8段の差動バッファ2105a〜2105hを接続したリングオシレータで構成され、16位相のクロックVCLK0〜VCLK15を生成する。分周器2101は、この多相クロックのうちの1つ(ここではVCLK8)をNv分周する。位相周波比較器(PFD)2102は、基準クロックRefCLKと分周器2101出力との位相比較を行い、この位相差情報に基づき内在するチャージポンプを駆動する。ローパスフィルタ(LPF)2103はチャージポンプ出力を平滑化し、制御電圧VcをVCO2104に供給する。VCO2104内の差動バッファ2105a〜2105hは、この制御電圧Vcに従って遅延量が変化し、位相同期制御が行われる。例えば基準クロックRefCLKとして100MHzのクロックを供給し、分周比Nvを20とすると、多相クロックVCLK0〜VCLK15は2GHzで互いに等間隔の位相差を有するクロックが生成できる。分周器2106は、多相クロックVCLK0〜VCLK15のうちの1つ(ここではVCLK0)をQ分周(ここではQ=4とする)して、クロックGCLKを生成する。このクロックGCLKが図18の各部に供給されることになる。なお、適用しうる多相クロックの相数は本実施例の16に限らないが、演算の簡便性より2のべき乗がもっとも望ましい。同様にGCLKを生成するための分周比Qも2のべき乗がもっとも望ましい。
図21は第1エッジ検出部220の構成例を示す図である。この第1エッジ検出部220はPH検出部2210、QT検出部2220及びエンコーダ2230からなる。PH検出部2210は、第1の同期信号SPSYNCの立ち上がりエッジがVCLK0〜VCLK15のどこにあるかを検出し、その結果をVCLKの中の一つに同期させ、SPphとして出力する。QT検出部2220は、PH検出部2210が出力したSPphを元に、SPSYNCの立ち上がりエッジがクロックGCLKの中のどのQT(図19)に含まれるかを検出し、SPqtとして出力する。エンコーダ2230はSPqtとSPphを元にして適切なエンコードを施し、クロックGCLKに同期したSPplsとSPqpを生成して出力する。エンコード方法等はインターフェイスの形態によって様々なので、詳細な説明は省略する。
図22はPH検出部2210の詳細構成例を示す図である。このPH検出部2210は多相受信部2211、同期部2212、デジタルフィルタ2213、各ビット二値化部2214及びエッジ検出部2215からなる。図23は各信号のタイミングの一例を示す図であり、これに基づき図22のPH検出部2210の詳細動作を説明する。
図23において、(a)SPSYNCは該第1エッジ検出部220に入力される第1の同期信号であり、(b-0)〜(b-15)は多相クロックVCLK0〜VCLK15である。多相受信部2211は、先の図3における受信部1201を多相クロックの位相数(本実施例では16個)だけ並列に並べたものであり、それぞれ多相クロックVCLK0〜VCLK15に同期して第1の同期信号SPSYNCを取り込み、閾値電圧Vtに基づいて二値化した出力(c-0)SPrcv0〜(c-15)SPrcv15として出力する。同期部2212は二値化出力SPrcv0〜SPrcv15を一旦それぞれのVCLK0〜VCLK15で取り込み、それらを全て一つのクロック(本実施例ではVCLK0)に同期するように取り直して15ビット並列データ(d)SPparaとして出力する。これ以降、本PH検出部2210は全て同一のクロックで動作する。
デジタルフィルタ2213は、15ビット並列データSPparaを適当なフィルタリングによって平滑化する。その際にデータSPparaは時間順に並んだシリアルデータであるとみなし、必要であれば1クロックないし複数クロック前のSPparaを保持してフィルタリングに用いる等の処理を行う。各ビット二値化部2214はデジタルフィルタ2213が平滑化したデータを各ビットごとにそれぞれ再二値化して、15ビット並列データ(e)SPcmpとして出力する。エッジ検出部2215は再二値化出力SPcmpの隣接ビットを比較してSPSYNCの立ち上がりエッジを検出し、(f)SPphとして出力する。その際、1クロック前の最下位ビット(LSB)のデータを残しておき、現在の最上位ビット(MSB)のデータと比較する事で全ビットの検出を行う。図23の例では、SPpara、SPcmp及びSPphはMSBから時間順に並んでおり、簡単の為に16進数(HEX)で表されている。
なお、デジタルフィルタ2213が行う平滑化と各ビット二値化部2214が行う再二値化の詳細については、先の図3の構成のものと同様なので、詳細説明は省略する。ただし、デジタルフィルタ2213のフィルタ次数は図3のデジタルフィルタ1202とは異なっている。エッジ検出部2215は、例えば図3に示した回路1204を並列に並べる事で実現する事ができる。こうして、第1の同期信号SPSYNCの立ち上がりエッジが、VCLK0〜VCLK15のどこにあるかという位相PHの情報としてデータSPphを得る。
図24はPH検出部2210の別の詳細構成例を示す図である。このPH検出部2210はシュミットトリガ回路2216、フリップフロップ2217-a〜2217-p、同期部2212、エッジ検出部2218及びエッジ検出部2219からなる。シュミットトリガ回路2216及びフリップフロップ2217-a〜2217-pは、先の図6の構成例と同様である。ただし、フリップフロップ2217-a〜2217-pは多相クロックの位相数(本実施例では16個)だけ用意される。同期部2218及びエッジ検出部2219は図22で述べたものと同じである。
図25は、図24のPH検出部2210の各部の信号のタイミングのいた例を示す図である。シュミットトリガ回路2216は(a)SPSYNCを閾値Vh、Vlに基づいて二値化して(b)SPshumittとする。フリップフロップ2217-a〜2217-pは、それぞれ(c-0)VCLK0〜(c-15)VCLK15に同期して動作し、シュミットトリガ出力SPshumittをそれぞれのクロックに同期して取り込んで(d-0)SPff0〜(d-15)SPff15とする。同期部2218はSPff0〜15を取り込み、ある一つのクロック(本実施例ではVCLK0)に同期するように取り直し、多相クロックの位相数だけの15ビット並列データ(e)SPcmpとして出力する。エッジ検出部2219は並列データSPcmpの隣接ビットを比較してSPSYNCの立ち上がりエッジを検出し、(f)SPphとして出力する。
図26はQT検出部2220の詳細構成例を示す図である。このQT検出部2220は論理ゲート2221、シフトレジスタ2222及びラッチ回路2223からなる。シフトレジスタ2222は適当なビット数(本実施例では4ビット)を持ち、信号SPphと同期したVCLK(本実施例ではVCLK0)で動作する。該シフトレジスタ2222には、論理ゲート2221を介して、SPphによってエッジが検出された時に「H」が、エッジが検出されていない場合は「L」が入力され、VCLK0ごとに順次シフトされる。該シフトレジスタ2222のデータはクロックGCLKによってラッチ回路2223にロードされ、必要ならば何らかのエンコードを施されてSPqtとして出力される。
図27はQT検出部2220の別の詳細構成例を示す図である。このQT検出部2220は論理ゲート2224、カウンタ2225及びQT変換部2226からなる。カウンタ2225は必要なビット数(本実施例では2ビット)を持つカウンタであり、そのカウント値をSPcountとして出力する。該カウンタ2225はSPphと同期したVCLK(本実施例ではVCLK0)でカウントアップされ、GCLKによってリセットされる。QT変換部2226は、論理ゲート2224を介してSPphによってエッジが検出された時にSPcountを読み出し、必要ならば適当なエンコードを施して、SPqtとしてGCLKに同期して出力する。
以上、図18の第1エッジ検出部220の詳細構成例を説明したが、第2エッジ検出部230についても同様に実現できるので、その詳細は省略する。なお、第1及び第2の同期信号の検出にかかる遅延時間を揃える為に、二つのエッジ検出部220、230は同じ構成のものを用いる事が望まれる。
図28は、図18における計数部240の構成例を示す図である。また、図29は画素クロック出力部280の構成例を示す図である。計数部240はSET時間演算部2401、RST時間演算部2402、カウンタ2403、フリップフロップ2404、2405、カウンタ2406及びフリップフロップ2407からなる。画素クロック出力部280は遅延部2810、2820及びSRフリップフロップ2830からなる。
図30は計数部240及び画素クロック出力部280の各信号のタイミングの一例を示す図である。図30に基づき、図28の計数部240と図29の画素クロック出力部280により、画素クロック周波数指示信号Mnowに従って画素クロックPCLKを生成する動作を詳述する。
図28において、各部はクロックGCLKに同期して動作する。SET時間演算部2401は、現在のPCLK立ち上がり時間情報に画素クロック周波数指示信号Mnowを加算し、次のPCLKの立ち上がり時間を表すセット時間情報nextSを演算するものであり、この演算の更新はカウンタ2403の出力であるpSet信号により行う。なお、セット時間情報nextSを64で割った商をnextSc、余りをnextSqpとする。つまりnextSc=nextS[MSB:6]、nextSqp=nextS[5:0]とする。また、SPSYNCの立ち上がりに位相同期してPCLKの生成を始めるので(正確には所定の信号処理時間後でここでは2GCLK後)、最初のPCLK立ち上がり時間情報はSPqpとする。
同様に、RST時間演算部2402は、現在のPCLK立ち上がり時間情報に画素クロック周波数指示信号Mnowの1/2を加算し、次のPCLKの立ち下がり時間を表すリセット時間情報nextRを演算するものであり、この演算の更新も、カウンタ2403の出力であるpSet信号により行う。また、nextRc=nextR[MSB:6]、nextRqp=nextR[5:0]とする。なお、Mnow/2を加算するのはPCLKのデューティをほぼ50%にするためであり、デューティー50%を要求しない場合はこの演算を簡略化できるような値を加算するようにしても良い。
カウンタ2403は、クロックGCLKを基準としてnextScサイクルのカウントを行い、pSet信号を生成する。このpSet信号が「H」の時カウンタは「1」にクリアされ、カウント値がnextScと一致する時、pSet信号を「H」とする。フリップフロップ2404はpSet信号及びSPpls信号を1GCLK遅延させてSETpls信号を生成するフリップフロップである。フリップフロップ2405は、pSet信号をイネーブルとしてnextSqpを、SPplsをイネーブルとしてSPqpをラッチし、SETqp信号を生成するフリップフロップである。このSETpls信号はPCLKの立ち上がりをGCLK単位で指定し、これに同期したSETqp信号によりそのGCLKサイクル内での立ち上がり時間情報を指定する。これらSETplsとSETqpをSet信号として、画素クロック出力部280に供給する。
また、カウンタ2406は、クロックGCLKを基準としてnextRcサイクルのカウントを行い、RSTpls信号を生成する。SETplsが「H」の時カウンタを「1」にクリアし、カウント値がnextRcに一致する時、RSTpls信号を「H」とする。フリップフロップ2407は、SETplsをイネーブルとしてnextRqpをラッチし、RSTqp信号を生成するフリップフロップである。RSTpls信号はPCLKの立ち下がりをGCLK単位で指定し、RSTqp信号によりそのGCLKサイクル内での立ち下がり時間情報を指定する。これらRSTplsとRSTqpをRst信号と称し、画素クロック出力部58に供給する。
なお、SETqp信号及びRSTqp信号は、それぞれSETpls及びRSTpls信号が「H」の時有効となってればよいので、各部の制御タイミングはこの実施形態のみに限定されるものではない。
図29において、遅延部2810は、多相クロックVCLK0〜VCLK15を基準として、計数部240から供給されるSETplsを時間情報SETqpに従って遅延させたパルスSを出力するものであり、また、GCLKサイクル中の期間QTを特定するためクロックGCLKも入力する。あるいは期間を示す期間信号QTを入力しても良い(この場合は高周波クロック生成部51でこのQT信号を生成する)。つまり、パルスSはSETplsをSETqp・Tvだけ遅延させたパルスとなる。遅延部2810の詳細構成例については後述する。遅延部2820は、同様に、多相クロックVCLK0〜VCLK15を基準として、計数部240から供給されるRSTplsを時間情報RSTqpに従って遅延させたパルスRを出力するものであり、パルスRはRSTplsをRSTqp・Tvだけ遅延させたパルスとなる。SRフリップフロップ2830は、パルスSの立ち上がりでセット「H」し、パルスRの立ち上がりでリセット「L」した画素クロックPCLKを出力するSet-Resetフリップフロップである。
図30において、(a)はGCLKである。第1エッジ検出部220では、第1の同期信号(b)SPSYNCの立ち上がりを検出すると、その次のGCLK1サイクルが「H」となる(c-1)SPpls信号を出力し、またGCLKサイクル内のどの時刻で立ち上がったかを示す(c-2)SPqp信号(本例では10とする)も出力する。(d)Mnowは周波数演算部270から供給される画素クロック周波数指示信号であり、図示したように入力されるものとする。
(e-1)nextSは、計数部240のSET時間演算部2401で演算される次のPCLKの立ち上がり時間を表す。まず、最初はSPSYNCの立ち上がりに同期してPCLKが立ち上がるようになっているので、次のPCLKの立ち上がりはSPqp+Mnow=250Tv後となる。ここで右辺のカンマの前の数値はnextScを、カンマの後の数値はnextSqpを表す。その次のnextSは、nextSqp+Mnow=298となる。(e-2)nextRはRST時間演算部2402で演算される次のPCLKの立ち下がり時間を表す。まず、最初はSPSYNCの立ち上がりにMnow/2を加算した値(=130)がPCLKの立下がり時間となる。(e-1)nextSと同様に右辺のカンマの前の数値はnextRcを、カンマの後の数値はnextRqpを表す。
(f)pSetは、SETqp信号を更新するためにSETplsの1GCLK前に出力するパルスであり、計数部240のカウンタ2403のカウント値がnextScと一致した時「H」となる。なお、図中示した丸数字はnextScのカウント値を表す。(g-1)SETplsは、SPplsとpSet信号を1GCLK遅延させたパルスであり、PCLKの立ち上がりをGCLK単位で指定する。(g-2)SETqpはこのSETplsの遅延値を示すPCLK立ち上がり時間情報であり、(f)pSetが「H」の時の(e-1)nextSqpの値に更新していく。(h-1)RSTplsはPCLKの立ち下がりをGCLK単位で指定したパルスであり、カウンタ2407のカウント値がnextRcと一致した時「H」となる。(h-2)RSTqpはRSTplsの遅延値を示すPCLK立ち下がり時間情報である。
(i-1)Sは、画素クロック出力部280における遅延部2810の出力パルスで(g-1)SETplsを対応する(g-2)SETqpの値だけ遅延させたパルスであり、遅延値の単位は多相クロックVCLK0〜15の位相差Tvである。同様に、(i-2)Rは遅延部2820の出力パルスで、(h-1)RSTplsを対応する(h-2)RSTqpの値だけ遅延させたパルスである。(j)PCLKはSRフリップフロップ2830の出力で、(i-1)Sの立ち上がりで「H」に、(i-2)Rの立ち上がりで「L」として生成される画素クロックである。
図31は画素クロック出力部280の遅延部2810の詳細構成例を示す図である。この遅延部2810はセレクタ2811、窓関数生成部2812及び演算器2813からなる。図32は図30に示す遅延部2810の構成例における内部信号の一例を示したもので、これに基づき該遅延部2810の動作を詳述する。
図32において、(a)GCLKと(b-0)VCLK0〜(b-15)VCLK15の関係は、先の図19に示した通りとする。(c)SETplsと(d)SETqpは遅延部2810に入力される信号であり、SETplsはパルス生成を指示し、SETqpは生成するパルスのGCLK立ち上がりからの遅延時間を示す。セレクタ2811は、入力信号SETqpを元にVCLK0〜VCLK15の中から適切なクロックを選択し、(e)VCLKphとして出力する。本実施例においては、選択されるのはVCLK{SETqp
mod 16}であり、従って、図32ではVCLK1が選択される。窓関数生成部2812は、SETplsが「H」の時に、SETqpによって決まる窓関数(f)SETwinを生成する。窓関数SETwinはあるQTの期間だけVCLKphを通し、それ以外のVCLKphは通さないような適切な形をしている事が求められる。窓関数SETwinはVCLK0〜VCLK15の中の適当なクロックに同期して生成する事ができる。演算器2813は、こうして得られたVCLKphとSETwinの論理積を出力パルス(g)Sとして出力する。なお、本実施例でのセレクタ2811と窓関数生成部2812の動作順番を入れ替えても、全く同じ結果を得ることができる。
図33は遅延部2810の別の詳細構成例を示す図である。この遅延部2810はQT遅延部2814、フリップフロップ2815-a〜2815-p及び演算器2816からなる。図34は図33に示す遅延部2810の構成例における内部信号の一例を示したもので、これに基づき該遅延部2810の動作を詳述する。
図34において、(a)GCLKと(b-0)VCLK0〜(b-15)VCLK15の関係は、先の図19に示した通りとする。(c)SETplsと(d)SETqpは遅延部2810に入力される信号であり、SETplsはパルス生成を指示し、SETqpは生成するパルスのGCLK立ち上がりからの遅延時間を示す。QT遅延部2814はVCLKの中の一つ(本実施例ではVCLK0)を基準として動作し、SETplsが「H」の時に、SETqpを元に(e)SETdelayを生成する。SETdelayはVCLKの本数(本実施例では16)だけのビット数を持ち、SETplsが「L」の間は全ビットが「0」である。SETplsが「H」の時には、SPqpによって示される所望のPHにあたるビットが「1」で、残りのビットは「0」となる。図34ではSPdelayは時間順にMSBから並んでおり、SETqp=33であるため{33 mod 16}=1ビット目(図34の実施例ではMSBを0ビット目とする)が「1」となり、他のビットは全て「0」となっている。QT遅延部2814はさらに、GCLKの立ち上がりからSETqpが示すQTのクロック数だけ遅延させたタイミングで次段のフリップフロップ2815-a〜2815-pに取り込まれるように、SETdelayを遅延させて出力する。本実施例ではSETqp/16=2であり、GCLKの立ち上がりから2クロック後に取り込まれるようにしてSETdelayが出力されている。フリップフロップ2815-a〜2815-pはそれぞれVCLK0〜VCLK15で動作し、SETdelayの各ビットを各VCLK0〜VCLK15に同期して出力する。演算器2816は、これらのフリップフロップ251−a〜251−pの出力の論理和を出力パルス(f)Sとして出力する。全てのビットの論理和を取る演算器2816の好適な構成としては、ワイヤードオアが挙げられるが、必ずしもその限りではない。
以上、図28に示した画素クロック出力部280内のパルスSを生成する遅延部2810の詳細構成例を説明したが、全く同じ構成でパルスRを生成する遅延部2820も実現できる。なお、パルスSとRの遅延を一致させる為には二つの遅延部2810、2820は同じ回路構成であることが求められる。
図18に戻り、図35は比較部250の詳細構成例を示す図である。この比較部250はカウンタ2501、減算部2502、誤差演算部2503及び誤差検出部2504からなる。図36は該比較部250の各信号のタイミングの一例を示したもので、これに基づき該比較部250の動作を詳述する。
図36において、(a)はGCLKである。(b-1)はSPSYNC、(b-2)はEPSYNCである。この2つの信号の立ち上がりの時間間隔が当該ラインの走査時間Tlineである。(c-1)はSPpls、(c-2)はEPplsである。また、(d-2)EPqpは同期信号EPSYNCの時間情報である。さらに(e-1)SETpls、(e-2)SETqpはPCLKの立ち上がりを表す時間情報である。これらは前述したので説明は省略する。(e-3)SETcntは、計数部240(図28)のカウンタ2403のカウント値である。本例ではMnow=192で一定とする。このとき(f)PCLKが生成される。PCLKはSPSYNCの丁度2GCLK後に同期して生成されるので、走査終了時点EPもEPSYNCから2GCLK遅らせた時点で検出する。よって、(c-2)EPplsを1GCLK遅延させた(d-1)EPdetが「H」の時の各信号値から誤差Lerrを検出する。(g)はpSetであり、(h)countNは、(c-1)SPplsで'0'クリアされ、(g)pSetによりインクリメントされるカウンタ2501のカウント値である。これらより、走査開始から走査終了時点EPまでのPCLKのサイクル数nと位相誤差m2を検出する。
図35において、カウンタ2501は、SPplsで'0'クリアし、pSetによりインクリメントするカウンタであり、そのカウント値countN(図36の(h))を出力する。減算部2502は、EPdetが「H」の時のカウンタ2501の値countN(図36ではn)から基準カウント値RefNの減算を行い、減算結果diffN(=n-RefN)を出力する。
誤差検出部2504は、EPdetが「H」の時のSETqp及びSETcntをそれぞれEndqp、Endcntとすると、次式(5)の演算を行い位相差diffMを算出する。
diffM=Endcnt・Mp+(EPqp-Endqp) (5)
ここでMpはGCLKの時間情報分割数であり、本実施例では64である。また、図36の例ではdiffM=144となる。
誤差演算部2503は、下記次式(6)の演算を行い多相クロックVCLK0〜15の位相差Tvを単位とする誤差Lerrを出力する。
Lerr=diffN・K+diffM (6)
ここで、Tp=K・Tv,Tp:PCLKの周期である。
なお、先の図9と同様に、Lerr=diffN・K+diffM-RefM と演算し、基準時間の設定値をより細かく設定するようにして、より正確な画素クロック周波数の制御を行うようにしても良い。
次に、図18の画素クロック生成装置200で生成した画素クロックPCLKを基準に画像データに従い変調データを生成する変調データ生成部23の好適な構成例及びその動作を説明する。
図37は、図18の変調データ生成部23として用いられるパルス変調装置の詳細構成例を示す図である。本パルス変調装置300はクロックパターン生成部310、画像データデコード部320、変調パターン生成部330及びシリアルライザ340からなる。図38は、該パルス異変調装置300の各信号のタイミング図の一例を示したもので、これに基づき該パルス変調装置300の動作を詳述する。なお、本例では画像データPDataに従い8値のパルス幅変調を行った変調データMDataを生成するものとする。
図37において、パルス変換装置300はクロックGCLKが各部へ供給され、基準クロックとして動作する。クロックパターン生成部310は、画素クロック生成装置200から供給されるSETpls及びSETqp信号から構成されるSet信号と画素クロック周波数指示信号Mnowとから、画素クロックPCLKの所定の位相差を持ったクロックに相当するクロックパターン信号CKP(ここではCKP0〜CKP3で、PCLKとそれぞれ、0、π/8、π/4、3π/8位相の遅れたクロックのパターン)を生成する。このクロックパターン信号CKPは、クロックGCLKを基準に変化する信号で、GCLKサイクルを時間情報QPで区切った64の期間Tqpにそれぞれ対応する64ビットのデータであり、期間Tqpが「H」の場合は対応するビットが「1」であり、「L」の場合は「0」となる。
クロックパターンの生成手順は次のようにして行う。まず、各クロックパターンの立ち上がりを示すオフセットデータsofs0〜3及び立ち下がりオフセットデータrofs0〜3を求める。それぞれ、sofs0=SETqp、sofs1=SETofs+Mnow/8、sofs2=SETofs+Mnow/4、sofs3=SETofs+3Mnow/8であり、rofs0〜3はそれぞれsofs0〜3にMnow/2を加算する。次に、GCLKのサイクル毎クロックパターンCKPのMSBから順にsofsまでは「0」に、sofsからrofsまでは「1」に、rofsからは「0」へと変換する。なお、各オフセットデータが64以上であれば、64毎に1GCLK遅らせて、この変換を行う。例えば、Mnow=192、SETqp=16の場合、CKP1は、sofs=40、rofs=136(=2GCLK+8)であるので、第1のGCLKサイクルのパターンはMSB(=63)〜24ビット目までは「0」、23〜0ビットは「1」に、第2のGCLKサイクルのパターンは全て「1」に、第3のGCLKサイクルのパターンは63〜56ビットは「1」、55〜0ビットは「0」になる。
画像データデコード部320は、画像データPDataを8値のパルス幅変調データDecData(8ビット)に変換する。このパルス幅変調データDecDataは、画素クロックPCLKの1サイクルを8つに時分割した期間の時間順に、MSBからLSBの順で各ビットが対応する。例えば、PData=3であれば、DecData='b11100000と変換する('bはバイナリ表記であることを示す)。あるいは、DecData='b00000111と変換するようにしても良いし、モード切換信号を付加して双方のモードを切り換えられるようにしても良い。なお、この変換方式は、本発明の要旨に反しない範囲で自由に選択できる。
変調パターン生成部330は、パルス幅変調データDecDataとクロックパターン信号CKP0〜CKP3とから、変調パターン信号MDPを生成する。この変調パターン信号MDPは、クロックパターン信号CKPと同様に、GCLKを基準に変化する信号で、GCLKサイクルを時間情報QPで区切った64の期間Tqpにそれぞれ対応する64ビットのデータである。
シリアライザ340は、変調パターン信号MDPを多相クロックVCLK0〜15を基準として、MSBから順に(つまり時間順に)Tv時間ずつシリアル出力した変調データMDataを生成する。
次に、図38により、具体的数値例を挙げて説明する。(a)は基準クロックとなるGCLKである。今、Set信号を構成する(b-1)SETpls及び(b-2)SETqpが図38のように供給される時、画素クロックは(c-1)PCLKのように生成されている。また、画素クロック周波数指示信号Mnow=192であるとする。また実際には生成しないが、PCLKをそれぞれπ/8、π/4、3π/8だけ位相を遅らせたクロックを(c-2)PCLK1、(c-3)PCLK2、(c-4)PCLK3に説明のため示す。(d-1)〜(d-4)はそれぞれPCLK、PCLK1〜3を表すクロックパターンCKP0〜3である。それぞれ64ビットのデータでMSBからLSBに時間順であり、16進(HEX)表記している。よって、これらのクロックパターンCKP0〜3から、画素クロックPCLKを8つに時分割した期間(tp0〜tp7)を示すパターン(それぞれ時間順にPT0〜7と称する)が生成できる。すなわち、PT0=CKP0&~CKP1、PT1=CKP1&~CKP2、・・・、PT7=~CKP3&~CKP0である。ここで、「&」は論理積を、「~」は否定論理を示す。
(e)DecDataはパルス幅変調データであり、図38のように変換されているとする。(f)MDPは変調パターン信号であり、まずiを0〜7まで変化させた時の({64{DecData[7-i]}}&PTi)を演算し、次にこれらの論理和を演算することにより得られる。ここで、{64{DecData[i]}}はDecData[i]を64ビット分連接させたデータである。こうして生成された変調パターン信号をシリアライズすることにより(g)MDataの変調データが生成できる。この例ではPCLK周期Tpのうち最初の3/8の期間が「H」で、残りが「L」となるようにパルス幅変調されたパルスが生成される。
なお、画素クロックをπ/8ずつ位相をずらしたクロックパターンCKP0〜3を生成する代わりに、画素クロックPCLKの1サイクルを8つに時分割したそれぞれの期間を示すパターンPT0〜PT7を生成し、これらとパルス幅変調データDecDataとから変調パターン信号MDPを生成するようにしても良い。
また、本実施例では8値のパルス幅変調を行う場合について説明したが、他の変調方式であっても適用できる。例えば16値のパルス幅変調を行う場合は、画像データデコード部320は、画像データPDataを16ビットのパルス幅変調データDecDataに変換し、クロックパターン生成部310は、画素クロックPCLKとπ/16ずつ位相をずらした8つのクロックパターンCKP0〜CKP7を生成し、変調パターン生成部330で同様にして変調パターン信号MDPを生成するようにすればよい。
さらに、図37の構成例は、図18の画素クロック出力部280に適用してもよい。つまり、画素クロックPCLKのクロックパターンPCKPを生成し(前述のクロックパターン信号CKP0を用いればよい)、これを多相クロックVCLK0〜15を基準として、MSBから順に(つまり時間順に)Tv時間ずつシリアル出力すれば画素クロックPCLKを生成できる。
多相クロックを基準クロックとしてシリアライズを行うシリアライザ340の実現方法としては、例えば、特許第3515087号の特許公報に記載されている多相シリアル−パラレル変換装置が挙げられる。それによれば、高精度に生成された多相クロックVCLK0〜VCLK15に同期して変調データMdataを生成しており、Tvの時間刻みで正確にパルスを出力する事ができる。また、多相クロックVCLK0〜15に同期して動作するので、多相クロックの発振周波数を高くしないでもよいので、回路の設計が容易となり消費電流も低減できる。逆にいえば、同等の発振周波数とした場合、変調データ生成分解能を16倍に向上できる。つまり高精度な変調データが生成できる。
以上説明したように、画素クロック生成装置の第2実施形態によれば、高精度に生成された多相クロックVCLK0〜VCLK15を基準として画素クロックを生成し、走査時間の変動に合わせて画素クロック周波数を制御しているので、走査平均速度の変動があってもこの誤差を高精度に補正できる画素クロックが生成でき、さらに画素クロック周波数の制御はポリゴンミラーの各面に対応してそれぞれ制御しているので、面毎の走査速度誤差があっても高精度に補正できる画素クロックが生成できる。また、画素クロックの生成は多相クロックVCLK0〜15の位相差Tvの単位で正確に制御できるので、多相クロックの発振周波数を高くしないでもよいので、回路の設計が容易となり消費電流も低減できる。例えば、前述の第1実施形態と同等の分解能で画素クロックを生成する場合は、多相クロックの発振周波数は1/16でよい。逆にいえば、同等の発振周波数とした場合、画素クロック生成分解能を16倍に向上できる。つまり高精度な画素クロックが生成できる。さらには、画素クロック生成部の大部分は多相クロックの1つをさらに分周したクロックGCLKで動作するようにしているので、動作周波数がさらに低下され、消費電流の低減ができる。
この画素クロック生成装置を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
また、図21乃至図27で説明した第1エッジ検出部及び第2エッジ検出部の第2の実施形態によれば、同期信号SPSYNC及びEPSYNCの立ち上がりエッジを検出する際に、ノイズを除去する為のフィルタを一度通してから、高精度に生成された多相クロックVCLK0〜VCLK15によって立ち上がりエッジを検出しているので、画像形成装置内部の様々な要因により同期信号が劣化していても、高精度にその立ち上がりエッジを検出する事ができ、高精度の画素クロックが生成できる。また、立ち上がりエッジの検出は多相クロックVCLK0〜VCLK15の位相差Tvの単位で正確に検出できるので、多相クロックの発振周波数を高くしないでもよく、回路の設計が容易となり消費電流も低減できる。逆にいえば、同等の発振周波数とした場合、立ち上がりエッジ検出分解能を16倍に向上できる。つまり高精度なエッジ検出が実現できる。
このようなエッジ検出部を適用した画素クロック生成部を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
さらに、図31乃至図34で説明した遅延部の構成例によれば、高精度に生成された多相クロックVCLK0〜VCLK15に同期して遅延パルスを生成しているので、Tvの時間刻みで正確にパルスを出力する事ができる。また、遅延部の内部もそれぞれ多相クロックVCLK0〜15に同期して動作するので、一般的なロジック回路を用いて実現する事ができ、多相クロックの発振周波数を高くしないでもよいので、回路の設計が容易となり消費電流も低減できる。逆にいえば、同等の発振周波数とした場合、遅延パルス生成分解能を16倍に向上できる。つまり高精度な遅延パルスが生成できる。
このような遅延部を適用した画素クロック生成部を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
次に、本発明による画像形成装置の別の実施形態を説明する。図39は、画像形成装置の第2の実施形態である。この画像形成装置は、複数の光源からの出射光を共通の走査光学系を用いて感光体に照射して画像(静電潜像)を形成するマルチビーム走査光学系を用いたものである。
図39において、半導体レーザ11a及び11bは、コリメートレンズ12a、12bとの光軸を一致させ主走査方向に対称に射出角度を持たせ、ポリゴンミラー14の反射点で射出軸が交差するようレイアウトされている。それぞれの半導体レーザ12a、12bより射出した複数のビームはコリメートレンズ12a、12b、スリット部10、シリンダーレンズ13を介してポリゴンミラー14で一括して走査され、fθレンズ15、ミラー13、及びトロイダルレンズ17により感光体18上に結像される。画像処理部22には各光源ごとに1ライン分の画像データが蓄えられ、ポリゴンミラー1面毎に読み出されて、2ラインずつ同時に書き込みがおこなわれる。
ミラー16の両端にはフォトディテクタ(PD1)19、フォトディテクタ(PD2)20がそれぞれ配置されており、走査の開始時と終了時とが検出される。すなわち、つまりポリゴンミラー14により反射された2つの光源から出射されたレーザ光は感光体18を1ライン走査する前に順次フォトディテクタ(PD1)19に入射され、走査後にフォトディテクタ(PD2)20に入射される。それぞれのフォトディテクタ19、20では、入射されたレーザ光をそれぞれ第1の同期信号SPSYNC及び第2の同期信号EPSYNCに変換し、同期信号分離部30に入力する。2つの光源は感光体18上を時差を持って走査するように配置されているので、同期信号分離部30は、第1の同期信号SPSYNCをそれぞれの光源に対応した同期信号SPSYNCaとSPSYNCbに、同様に第2の同期信号EPSYNCをそれぞれの光源に対応した同期信号EPSYNCa及びEPSYNCbに分離する。
図40は、これらの同期信号のタイミング図の一例を示す図である。(a)は第1の同期信号SPSYNCであり、(b)は第2の同期信号EPSYNCである。ここでは半導体レーザ11aのレーザ光が先に走査されているとすると、同期信号(a)SPSYNCは(c-1)SPSYNCa及び(c-2)SPSYNCbのように分離される。同様に同期信号(b)EPSYNCは、(d-1)EPSYNCa及び(d-2)EPSYNCbのように分離される。
図39に戻り、同期信号分離部30で分離された一方の同期信号の組SPSYNCaとEPSYNCaとは画素クロック生成部21aに供給され、他方の組SPSYNCbとEPSYNCbとは画素クロック生成部21bに供給される。画素クロック生成部21aは、2つの同期信号SPSYNCa及びEPSYNCaから走査時間Tlineaを測定し、その時間間隔に予め定められた所定数のクロックが収まるように求められた周波数の画素クロックPCLKaを生成する。画像処理部22は、画素クロックPCLKaを基準に画像データaを生成する。変調データ生成部23aは、画素クロックPCLKaを基準として、入力された画像データaから変調データaを生成し、レーザ駆動部21bを介して半導体レーザ11aを駆動する。同様にして、画素クロック生成部124aは、2つの同期信号SPSYNCb及びEPSYNCbから画素クロックPCLKbを生成し、画像処理部22において画素クロックPCLKbを基準に生成された画像データbから変調データ生成部23bにて変調データbを生成し、レーザ駆動部24bを介して半導体レーザ11bを駆動する。
ここで、画素クロック生成部21a、21bは図1の画素クロック生成部21と同様の機能を果たし、前述した画素クロック生成装置の第1実施形態及び第2実施形態を適用できるので、その詳細構成及び動作説明は省略する。変調データ生成部23a、23bも同様に説明を省略する。
なお、先の高周波クロック生成部は、画素クロック生成部21aと21bとで共通に用いる構成とすれば、回路規模の小型化や消費電流の低減が図れる。また同期信号を検出する2つのエッジ検出部も、画素クロック生成部21aと21bとでそれぞれ共通化して検出し、検出信号を分離する構成としても良い。
さらには、フィルタや周波数演算部の演算処理の一部は1ラインに1回動作するだけであるので、これを共通化し、複数の画素クロック周波数演算に対し時系列に処理するようにしてもよい。
この実施形態によれば、前述の課題で示した(3)光源毎の走査速度誤差があっても、つまり2つの光源の波長が異なり、走査光学系の色収差により走査速度が変動するなどにより2つのビームの走査速度が異なっても(図40の2つのビームの走査時間TlineaとTlinebが各々独立に変動しても)、それぞれの走査速度変動に合わせて画素クロックPCLKa及びPCLKbの周波数を独立に制御しているので、速度変動が高精度に補正でき、高品質の画像が形成できる。
また、マルチビーム走査光学系は複数の半導体レーザを備えたものでなく、1つの半導体レーザアレイから出射される複数のレーザビームを共通の走査光学系を用いて走査するものもある。このような光学系に対しても同様に適用できる。なお、マルチビーム走査光学系は様々な実施形態があるが、本発明の作用効果は走査光学系の形態によらず適用できるものであるので、詳細な構成の図示及び説明は省略する。
次に、本発明による画像形成装置の第3の実施形態を説明する。図41は機構部の構成例で副走査断面図であり、一部ユニットのみ図示したものである。図42は処理系の構成例で、画像処理部400と処理ユニット410a〜410dからなる。処理ユニット410aは画素クロック生成部411a、変調データ生成部412a、レーザ駆動部413a及び半導体レーザ414aで構成される。処理ユニット410b、410c、410dも同様である。
この画像形成装置の第3の実施形態は、複数の感光体を有する多色対応の画像形成装置であり、シアン、マゼンダ、イエロー、ブラックの各色に対応した別々の感光体309a〜309dを備え、走査光学系もそれぞれの感光体に対応して備えられ、各色に対応した画像(静電潜像)をそれぞれの感光体上に形成する。そして、1枚の画像形成媒体(例えば紙)に各色の画像を転写することによりカラー画像を形成する。この実施形態は単純には図1の画像形成装置を4つ備えることにより実現できる。また、小型化のため走査光学系の一部を共通化した形態も採られるが、それぞれの光路は異なるので、異なる画像形成装置を複数個備えたものと考えてよい。以下、図41及び図42に基づき第3の実施形態の説明を行う。
図41において、ポリゴンミラー301は2段構成となっており、点線を軸として回転しており、各走査光学系で共通に用いている。処理ユニット410aの半導体レーザ414aから出射したレーザ光はコリメータレンズ、シリンダーレンズを介して(いずれも不図示)、ポリゴンミラー301のa点で反射される。同様に、処理ユニット410b〜410dの半導体レーザ414b〜414dから出射したレーザ光はポリゴンミラー301のb〜d点で反射される。ポリゴンミラー301で反射された各レーザ光は、走査レンズ302a〜302d、304a〜304d、及び折り返しミラー303a〜303d、306a〜306dを経由して感光体309a〜309d上を走査し(ビームの走査方向つまり主走査方向は、図面に対して垂直方向である)、画像(静電潜像)を形成する。ここで、図番末尾のa〜dは半導体レーザa〜dに対応したものであり、それぞれイエロー、マゼンタ、シアン、ブラックの各色に対応した画像を形成しているものとする。各感光体309a〜309dに形成された各色の画像は中間転写ベルト310上に置かれ矢印方向に移動する画像形成媒体へ順次、転写されていきカラー画像が形成される。
一方、有効走査範囲外の両側に配備されたミラー307a〜307dにより、各ビームは検出器(フォトディデクタ)308a〜308dに導光されて、走査の開始時点と終了時点とが検出され、同期信号SPSYNCa〜d、EPSYNCa〜dに変換される。処理ユニット410aでは、同期信号SPSYNCa、EPSYNCaが、画素クロック生成部411aに供給され、走査速度誤差を補正するように周波数が制御された画素クロックPCLKaを生成する。また、画像処理部400は、画素クロックPCLKaを基準に画像データPDataaを生成する。変調データ生成部412aは、画素クロックPCLKaを基準として、入力された画像データPDataaから変調データを生成し、レーザ駆動部413aを介して半導体レーザ414aを駆動する。処理ユニット410b、410c、410dでも同様である。つまり、これらを各色の対応ビーム毎同様に行う。
画素クロック生成部411は前述した画素クロック生成部の第1実施形態及び第2実施形態を適用できる。ここで、走査光学系の各部品の製造精度や組付け精度、経時変化などによる変形などの影響により、各走査光学系での走査時間はそれぞれ異なり、また走査開始及び終了を検出する2つのフォトディデクタ間の距離も組付け精度などにより異なるので、画像クロック周波数制御の基準となる基準値RefNを各走査光学系毎に画像形成装置の製造時などに予め求めておき(経時変化などにより画像劣化が生じた時は再度求めなおすようにしても良い)、これらを基準値RefNとして画素クロック生成部411にそれぞれ与える。また、同期信号SPSYNCによる走査開始検出位置も走査光学系毎異なる場合があるので、同期信号SPSYNCの立ち上がりから所定時間後(画素クロックPCLKの所定サイクル後)に、画像の書き込み開始するようにしておき(書き込み開始オフセットと称する)、この書き込み開始オフセットを各走査光学系毎予め求めておく。
図43は、各走査光学系による走査幅、走査時間の関係を示す図である。(a-1)は走査光学系aの1ラインの走査幅を示す。SPa及びEPaは走査開始と終了とを検出する検出器の位置を感光体上に対応付けた位置である。この距離をLaとする。また、画像の1ドット幅をLpとした時、La/Lp=RefNaが1ライン中のドット数となり、これを基準値RefNとして設定する。また実際に画像を形成する範囲はPSPとPEPとの間の領域とする。また(a-2)は、走査光学系aの1ラインの走査時間を示す。走査開始位置SP及び終了位置EPに対応して、同期信号SPSYNC及びEPSYNCがそれぞれ検出され、この時間間隔を走査時間Tlaとする。この走査時間Tlaは前述したように様々な要因により変動するが、画素クロック周期Tpaを、Tpa=Tla/RefNaの関係が成り立つように制御しているので、SPSYNCから所定のPCLKサイクル後(N1とN2とする)、出力する書き込みパルスは常に走査線上の同じ位置にドットを形成する(D1及びD2)。また、実際の画像の書き込み開始をNofsaサイクル後にする。
同様にして、(b-1)は走査光学系bの1ラインの走査幅を示し、走査開始位置SPbと終了位置EPb間の距離をLbとすると、Lb/Lp=RefNbを基準値RefNとして設定する。また(b-2)は走査光学系bの1ラインの走査時間を示し、同期信号SPSYNCとEPSYNCとの時間間隔を走査時間Tlbとする。これも同様に、画素クロック周期Tpbを、Tpb=Tlb/RefNbの関係が成り立つように制御している。さらに双方の走査開始位置SPa及びSPbとの距離差に応じて、画像の書き込み開始オフセットNofsbを設定することにより、実際に画像を形成する範囲PSP〜PEPが走査光学系によらず一致する。
すなわち、この実施形態によれば、走査光学系毎の速度誤差を含め、様々な要因で走査速度誤差が生じても、それぞれの走査速度差・変動に合わせて画素クロックPCLKの周波数を独立に制御しているので、このようにして形成されたカラー画像は、色ずれが生じず、色再現性、解像度の劣化が生じず、高品位の画質を得ることができる。
以上、本発明の画像形成装置、それに使用される画素クロック生成装置及びパルス変調装置の実施形態を説明したが、本発明はこれら実施形態の構成例に限定されるものではないことは云うまでもない。