以下、本発明の実施形態を図面に基づいて説明する。
まず、本発明の基本となる前述の誤差(1)〜(4)を補正するための基本実施形態について説明する。
(第1の実施形態)
図1は、本発明による画像形成装置の第1の実施形態の全体構成を示す図である。この画像形成装置では、光源としての半導体レーザ101からのレーザ光がコリメータレンズ102とシリンダーレンズ103を介することで整形され、その後、偏向器としてのポリゴンミラー104に入射することで、周期性を持って感光体105を走査するようにポリゴンミラー104から反射される。反射されたレーザ光は、fθレンズ106、ミラー110、及びトロイダルレンズ107を介して感光体105を照射し、光スポットを形成する。これにより、感光体105上には、半導体レーザ101の出力に応じた画像(静電潜像)が形成される。
また、ミラー110の両端には、フォトディテクタPD1(108)、フォトディテクタPD2(109)がそれぞれ配置されており、走査の開始と終了とが検出される。つまり、ポリゴンミラー104により反射されたレーザ光は感光体105を1ライン走査する前にPD1に入射され、走査後にPD2に入射される。それぞれのフォトディテクタPD1,PD2では、入射されたレーザ光をそれぞれ第1の同期信号SPSYNC及び第2の同期信号EPSYNCに変換し、画素クロック生成部111に供給する。画素クロック生成部111は、2つの同期信号SPSYNC及びEPSYNCから、PD1とPD2との間をレーザ光が走査される時間間隔を測定し、その時間間隔に予め定められた所定数のクロックが収まるように求められた周波数の画素クロックPCLKを生成し、それを画像処理部112とレーザ変調データ生成部113に供給する。この画素クロック生成部111の構成については後述する。フォトディテクタPD1の出力信号である第1の同期信号SPSYNCは、ライン同期信号として画像処理部112にも与えられる。画像処理部112は、画素クロックPCLKを基準に画像データを生成する。変調データ生成部113は、画素クロックPCLKを基準として、入力された画像データから変調データを生成し、レーザ駆動部114を介して半導体レーザ101を駆動する。
次に、上述の画像形成装置における画素クロック生成部111の詳細についてに基づき説明する。
図2は、本発明による画素クロック生成部の第1の構成例を示す図である。図2の画素クロック生成部において、高周波クロック生成部1は、基準クロックRefCLKを基に、逓倍した高周波クロックVCLKを生成するものであり、一般的なPLL(Phase Locked Loop)回路により構成される。入力する基準クロックRefCLKに例えば精度のよい水晶発振器出力を用いることにより、精度のよい高周波クロックVCLKが得られる。この高周波クロックVCLKを基準に画素クロックPCLKが生成される。すなわち、分周器4は、高周波クロックVCLKをM分周した画素クロックPCLKを生成する。これは、例えばM進カウンタにより構成され、カウント値countMを出力する。ここで、同期信号SPSYNCの立ち上がりでカウントを開始するようにすれば、走査開始時点に位相同期した画素クロックが生成できる。また、分周比Mは周波数演算部7からの画素クロック周波数指示信号Mnowに従って変更される。このように、画素クロックPCLKは、安定かつ高精度に発振させた高周波クロックVCLKを分周することにより生成されるので、この分周比を変更することにより瞬時にかつ安定に画素クロック周波数を変更することが可能となる。よって、ライン毎周波数を変更しても瞬時に移行できる。
第1エッジ検出部2は、第1の同期信号SPSYNCの立ち上がりエッジを高周波クロックVCLKを基準として検出するものであり、同期信号SPSYNCの立ち上がりを検出すると画素クロックPCLKに同期した検出パルスSPplsを出力する。
第2エッジ検出部3は、第2の同期信号EPSYNCの立ち上がりエッジを高周波クロックVCLKを基準として検出し、検出パルスEPplsとカウント値EPmを出力する。
比較部5は、2つの同期信号SPSYNC,EPSYNC間の時間Tlineを検出し、書き込み周波数と2つのフォトディテクタPD1,PD2間の距離とに応じて予め定められた基準時間と計測した時間Tlineとの差を当該ラインの誤差Lerrとして算出する。つまり、適正な走査時間(基準時間)と当該ラインの走査時間Tlineとの差が走査速度の誤差である。
この誤差Lerrは、高周波クロックVCLKを基準としてカウントし演算を行っても良いが、高周波クロックVCLKは非常に高周波であり、またカウントするビット数も非常に大きくなるので、回路規模,消費電力の点で不利である。そこで、本発明では、時間Tlineを画素クロックPCLKを基準としてカウントし、基準値RefNとの比較を行ない、最後に高周波クロック基準の当該ラインの誤差Lerrとして変換している。
フィルタ6は、ライン誤差Lerrをフィルタリングして誤差データErrを出力するデジタルフィルタであり、例えば簡単には、直近の複数ライン分の誤差Lerrを平均して誤差データErrを得る。
周波数演算部7は、誤差データErrに従って適正な画素クロック周波数を算出し、これを画素クロック周波数指示信号Mnowに変換して出力する。高周波クロック周期をTv、画素クロック周期をTpとし、今、Tp=KTvとして画素クロック周波数を設定して走査した時、目標値Tp’(Tp’=K’Tv)との誤差Errが入力される。従って、RefN・Tp’=RefN・Tp+Err・Tvであるので、
K’=K+Err/RefN (式1)
としてK’を設定するようにすれば、画素クロック周波数を目標値に制御することができる。
つまり、分周器4と比較部5とフィルタ6と周波数演算部7とでデジタルPLL制御を行っている。そして、フィルタ6の特性がこのPLL制御特性を決定し、制御系が安定になるようにフィルタ特性が決定される。また、K’=K+α・Err/RefNとしてループゲインを変えるようにしても良い。
また、分周器4の分周比Mは自然数であるので、画素クロック周波数の設定値Kを次のようにして画素クロック周波数指示信号Mnowに変換すると、まるめ誤差を低減することができ、より精度のよい画素クロックが得られる。例えば、通常は設定値Kを四捨五入して整数にまるめた値をMとし、Mnow=Mとし、画素クロックのCサイクルに1回、Mnow=M+1またはM−1とすることにより、K=(M±1/C)となり、丸め誤差を低減できる。また、丸め誤差の振り分けも均等に行えるので、画素クロックの局所的な偏差も抑えられる。この場合は前記M値とC値を制御するようにすればよい。詳細な説明は後述する。
図3は、図2の画素クロック生成部における信号の一例を示すタイミング図である。また、図4は比較部5の詳細構成例を示す図である。図3と図4とを参照して、比較部5の動作の詳細説明を行う。
図3において、(a)SPSYNCは走査開始を示す第1の同期信号であり、第1エッジ検出部2に入力される。(b)EPSYNCは走査終了を示す第2の同期信号であり、第2エッジ検出部3に入力される。(c)VCLKは高周波クロック生成部1で生成される高周波クロックの立ち上がりエッジを示している。(d)countMは分周器4で高周波クロックVCLKを基準としてカウントされるカウント値であり、(e)PCLKは(d)countMが0の時立ち上がる画素クロックである。(f−1)SPpls及び(f−2)EPplsはそれぞれ(a)SPSYNC、(b)EPSYNCの立ち上がりを示すPCLKに同期したパルスである。(g−2)EPmは、(b)EPSYNCの立ち上がり時の(d)countMの値である。(h)は比較部5にある画素クロックPCLK基準でカウントするカウンタの値であり、(f−1)SPplsで0にリセットされ、(f−2)EPplsでカウントが停止される。
図4の比較部5において、カウンタ11は、画素クロックPCLKを基準にカウントするカウンタであり、SPplsで0にリセットされ、EPplsでカウントを停止する。減算器12はカウント停止後のカウンタ11の値countN(図3ではn)から基準カウント値RefNの減算を行い、減算結果diffNを出力する。誤差演算部13は、下記の演算を行い高周波クロックVCLK周期Tvを単位とする誤差Lerrを出力する。
Lerr=diffN・K+EPm
ここで、diffN=n−RefN,EPm=m2,Tp=K・Tv,Tp:PCLKの周期である。
また、2つのフォトディテクタPD1,PD2間の距離がドット幅の整数倍でない場合、つまり基準時間が目標とする画素クロック周期の整数倍でない場合、その端数を高周波クロックVCLKのサイクル数に換算し、これをRefMとして誤差演算部13に入力し、Lerr=diffN・K+EPm−RefM
と演算するようにすると、より正確な画素クロック周波数の制御が行えるようになる。
図5は周波数演算部7の詳細構成例を示す図である。ここでは、ポリゴンミラーは6面構成であるとし、面毎の誤差を補正するため面毎に画素クロック周波数を制御する。
演算部16は、現在の設定値M,C,Rと誤差データErrとから次の設定値NextM,NextC,NextRを演算するものであり、この演算を演算面指示信号CalcNoに従い、各面毎行う。この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とする。
レジスタ17は上記の演算により求めたM値を保持しておくデータ保持部であり、保持する値はポリゴンミラーの各面毎F0M〜F5Mの値を保持する。また、更新信号Renewに従い、対応するレジスタ値をNextMに更新する。ここで、*はポリゴンミラーの面番号0〜5をとるものとして、F*はポリゴンミラーの面番号に対応する値であることを示す(以下同様)。なお、この面番号は相対的な関係を示すものであり、対応する値は自動的に制御されるので、実際の面と一致させる必要はない。
同様に、レジスタ18は現在設定しているC値を保持しておくデータ保持部であり、レジスタ19は現在設定しているR値を保持しておくデータ保持部である。それぞれ更新信号Renewに従い対応するレジスタ値をNextC、NextRに更新する。
選択部20は、面選択信号FNoに従い、F0M〜F5Mのうち対応するM値を選択出力するものである。同様に選択部21は、面選択信号FNoに従い、F0C〜F5Cのうち対応するC値を選択出力するものである。なお、CsignはC値の符号を示す。
カウンタ23は、PCLKを基準としてC値をカウントする。カウントされるC値は0からC−1までである。カウント値がC−1となったとき、Csignが正を示していれば+1を、負を示していれば−1を出力し、それ以外の時は0を出力する。なお、C=0の時は常に0を出力する。
加算部22は選択部20の出力するMとカウンタ23の出力する値を加算し、結果を画素クロック周波数指示信号Mnowとして出力する。よって、PCLKのCサイクルに1回、M値が+1または−1されるように変換され、画素クロックの平均周期は(M±1/C)Tvとなる。
演算制御部15は、上述した演算を制御するものであり、演算面指示信号CalcNo、更新信号Renew及び面選択信号FNoを生成し出力する。これらの信号の出力については、以下のフローチャートとともに説明する。
図6は、演算制御部が信号を出力する手順を説明するフローチャートである。図6において、まずStep1では、演算制御部15は、FNo=0、CalcNo=0として初期化を行う。次に、Step2では、1ラインの走査が終了するまで待機する。つまりEPplsにより走査終了を検知するまで待機する。なお、待機時間には誤差データErrの演算が確定するまでの時間の猶予も含む。
次いで、Step3では、演算制御部15は、現在のCalcNoに対応した前述の演算を行う。Step4では、現在のCalcNoに対応した更新信号Renewをアクティブにし、各レジスタの値をNext値に更新する。Step5では、CalcNoをインクリメントする。なお、CalcNo=5の時は0に戻る。Step6では、画素クロック周波数制御がロックしているか否かを示すロックフラグLockに従い分岐する。ここでロックフラグLockは、例えば、所定ラインの間(例えば6ラインとする)、誤差Lerr(あるいは誤差データErr)が所定の範囲内(面間誤差のバラツキ範囲や所望の制御精度などから決めればよく、例えば±2M以内とする)に収まっていれば、ロックしているとみなす信号で、この信号の生成部は例えばフィルタ6内に備えればよい。あるいは制御応答性より予め制御開始より所定時間(ライン数などで指定)を決めておき、この時間が経過したらLock信号をアクティブにするようにしても良い。
Step7では、Step6の判定結果がNoの場合(つまりまだロックしていない場合)、全ての面で演算を行い設定値を更新したかを判定する。6面全て演算していればFNo=CalcNoとなるので、Step8に移る。否であればStep2に戻り、別の面の演算を行う。
Step8では、FNoをインクリメントし(5の場合は0に戻る)、CalcNoにFNoを代入する(インクリメント後の値)。これにより画素クロック周波数指示信号Mnowに変換するM及びC値が次ラインの設定値に変更される。なお、ここまでの操作を次ラインの走査開始(SPSYNCが検知される)までに行う。その後Step2に戻り以上のルーチンを繰り返す。
演算制御部15がこのように制御すれば、各面のクロック周波数が所定誤差内に収まるまでは、全ての面で誤差Errを縮小するように制御していくので、高速な引き込みができ、また所定誤差内に収まった後は各面毎個別に制御するので面間の誤差も低減され、高精度なクロック周波数制御ができる。
図7は、上述した制御方法による引き込み過程の様子の一例を示す図であり、横軸は時間、縦軸はライン誤差Lerrである。また黒丸は第0面に対応する誤差であり、その他の面の誤差は×で示す。また点線は6面分の誤差の平均値を示す。
図8は周波数演算部7の別の詳細構成例を示す図である。図8の構成例においても、演算制御部15は図5のそれと同様にして、ここでの演算を制御する。演算部25は、現在の設定値M,Fと誤差データErrとから次の設定値NextM,NextFを演算し、この演算を演算面指示信号CalcNoに従い、各面毎に行う。図8の構成例では、画素クロック周波数の設定値Kは、次のようにして画素クロック周波数指示信号Mnowに変換する。すなわち、設定値Kの整数部をMとし、小数部をa桁(2進数表記)の値Fに丸める。そして、2^a(=Naとする)サイクルにF回、Mnow=M+1とすることにより、K=(M+F/Na)と設定される。ここで、設定値による丸め誤差は最大Nref/Naとなるので、所望の誤差許容値に収まるように小数部の桁数aを決定すればよい。また、局所的な周波数偏差を抑えるため+1するF回のサイクルは均等に振り分けられるようにする。この機能は変換部31が担う(動作詳細は後述する)。よって、(式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とする。
図5の場合と同様に、レジスタ26は上記の演算により求められたM値を保持しておくデータ保持部である。レジスタ27は、同様にF値を保持しておくデータ保持部である。これら保持する値はポリゴンミラーの各面毎F0〜F5に対応して保持する。そして、それぞれ更新信号Renewに従い対応するレジスタ値をNextC、NextRに更新する。
選択部28は、面選択信号FNoに従い、F0M〜F5Mのうち対応するM値を選択出力するものである。同様に選択部29は、面選択信号FNoに従い、F0F〜F5Fのうち対応するC値を選択出力する。
カウンタ30は、PCLKを基準にカウントするaビットカウンタであり、そのカウント値countAを出力する。変換部31は、カウント値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」が生成される。
加算部32は、選択部28の出力するMと変換部31の出力するUPを加算し、結果を画素クロック周波数指示信号Mnowとして出力する。よって、PCLKのNaサイクルにF回、M値が+1されるように変換され、画素クロックの平均周期は(M+F/Na)Tvとなる。
前述したように、画素クロック周波数の制御は1ライン毎に位相誤差Lerrを検出し、これが0になるようにデジタルPLL制御を行っている。フィルタ6は制御ループ内に置かれたデジタルフィルタであり、このフィルタ特性を変更することにより、制御帯域を設定できる。以下に、フィルタの設定例を示す。
図9は、フィルタ特性の設定例を説明するための図である。まず、ループフィルタを除くDPLL制御系のループゲインは図9に(a)で示すようになる。ここで、fsはサンプリング周波数で、つまりここではライン周波数である。この制御系に(b)のような特性を持つラグリードフィルタを挿入し、(c)のループゲインとすることにより、制御系を安定化させることができる。
τ1=1/2πf1、τ2=1/2πf2とすると、ループフィルタの伝達関数H(s)は次式のようになる。
H(s)=(1+τ2s)/(1+τ1s)
上式を、双一次変換(s=2/T・(1−z^−1)/(1+z^−1))してz変換形式にし、さらにT=1として正規化すれば、ループフィルタの伝達関数H(z)は次式となる。
H(z)=(b0+b1z^−1)/(1+a1z^−1)
ここで、a1=(1−2τ1)/(1+2τ1)、b0=(1+2τ2)/(1+2τ1)、b1=(1−2τ2)/(1+2τ1)
図10は上式の伝達関数H(z)を実現するフィルタ6の詳細構成例を示す図である。フィルタ6は、一次のIIR型フィルタであり、加算器40及び45はそれぞれの入力を加算し、乗算器42、43、44はそれぞれ入力に対し、係数−a1、b1、b0を掛けた値を出力し、遅延素子41は中間変数wを1サンプル毎(つまり1ライン毎に)遅延させる。このフィルタ6にライン誤差Lerrを入力すれば、誤差データErrを得る。
また、乗算器42,43,44の各係数を変更する手段を設ければ、動的にフィルタ特性を変更可能となり、例えば、上述のLock信号に従いフィルタ特性を変更するようにしても良い。
なお、本例のフィルタ特性及び構成は一例であり、本発明はその他の構成のフィルタでも適用できる。デジタルフィルタについては公知技術であるので、その他の構成の例示は省略する。
次に、図2の画素クロック生成部111で生成した画素クロックPCLKを基準に画像データに従い変調する変調データ生成部113の好適な変調方法を説明する。
図11は、変調データ生成部113の動作を説明するための図である。ここでは画像データPDataに従い8値のパルス幅変調を行った変調データMDataを生成する場合とした。図11において、(a)VCLKは高周波クロック(周期Tv)の立ち上がりを示し、(b)countMは分周器4でカウントしたカウント値であり、今、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の構成例によれば、高精度に生成された高周波クロックVCLKを基準として画素クロックを生成し、走査時間の変動に合わせて画素クロック周波数を制御しているので、走査平均速度の変動があってもこの誤差を高精度に補正できる画素クロックが生成できる。さらに、画素クロック周波数の制御はポリゴンミラーの各面に対応してそれぞれ制御しているので、面毎の走査速度誤差があっても高精度に補正できる画素クロックが生成できる。また、この画素クロック生成部を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
また、図12は本発明による画素クロック生成部の第2の構成例を示す図である。図12の画素クロック生成部118において、高周波クロック生成部51は、基準クロックRefCLKを基に逓倍し、位相差が等間隔の多相クロックを生成するものである。この第2の構成例では、16位相の多相クロックVCLK0〜15を生成するものとする。また、多相クロックのうちの1つをQ分周(ここではQ=4とする)した内部動作用クロックGCLKを生成し、図示はしないが画素クロック生成部118の各部へ供給する。
図13は、高周波クロック生成部51で生成される各クロックのタイミングを示す図である。図13中の信号(a−0)〜(a−15)は、多相クロックVCLK0〜15のそれぞれのクロックであり、互いに等間隔の位相差を有しており、この時間間隔をTvとする。また、信号(b)GCLKは、(a−0)VCLK0を4分周したクロックである。図12の画素クロック生成部118は、基本的にこのクロックGCLKを動作クロックとして動作し、GCLKを4分割した期間を順にQT0、QT1、QT2、QT3と称し、また多相クロックVCLK0〜15の立ち上がりにそれぞれ対応した時刻をPH0〜PH15と称し、この期間QTと位相PHとによりGCLK中の時間情報QPを表す。
ここで、時間情報QPは0〜63の64値であり、この第2の構成例では、この多相クロックの等間隔の位相差Tvを基準として画素クロックPCLKを生成する。つまり画素クロック周波数の制御演算を動作クロックGCLKを基準に時間情報QP(QT,PH)の演算を行うことにより行う。
図12に戻り、第1エッジ検出部52は、第1の同期信号SPSYNCの立ち上がりエッジを多相クロックVCLK0〜15を基準として検出し、同期信号SPSYNCの立ち上がりを検出するとクロックGCLKに同期した検出パルスSPplsと立ち上がり時の期間QTと位相PHを示す時間情報SPqpを出力する。
同様に、第2エッジ検出部53は、第2の同期信号EPSYNCの立ち上がりエッジを多相クロックVCLK0〜15を基準として検出し、同期信号EPSYNCの立ち上がりを検出するとクロックGCLKに同期した検出パルスEPplsと立ち上がり時の期間QTと位相PHを示す時間情報EPqpを出力する。
計数部54は、周波数演算部57からの画素クロック周波数指示信号Mnowに従って時間を計数し、Mnowに達する度にSet信号(GCLKに同期したSETpls信号と時間情報SETqpからなる)を生成し、またSet信号からMnow/2にあたる時間を計数し、Rst信号(GCLKに同期したRSTpls信号と時間情報RSTqpからなる)を生成する。この計数する時間単位は多相クロックVCLK0〜15の位相差Tvである。
画素クロック出力部58は、計数部58より供給されるSet信号及びRst信号に従って「H」と「L」との間で切り替えて画素クロックPCLKを生成し出力する。これらの詳細構成及び動作説明は後述する。
比較部55は、2つの同期信号SPSYNC、EPSYNC間の時間Tlineを検出し、書き込み周波数と2つのフォトディテクタPD1とPD2との距離に応じて予め定められた基準時間と計測した時間Tlineとの差を当該ラインの誤差Lerrとして算出する。つまり適正な走査時間(基準時間)と当該ラインの走査時間Tlineとの差が走査速度の誤差である。ここでは、SPpls入力後EPplsが入力されるまでの期間中に入力されるSETplsの数をカウントし、この値と基準値RefNとの比較をし、さらに各パルスの時間情報とから当該ラインの誤差Lerrとして変換している。この誤差の単位は位相差Tvである。
フィルタ56は、ライン誤差Lerrをフィルタリングして誤差データErrを出力するデジタルフィルタである。周波数演算部57は誤差データErrに従って適正な画素クロック周波数を算出し、これを画素クロック周波数指示信号Mnowに変換して出力する。
画素クロック周期をTpとし、今、Tp=KTvとして画素クロック周波数を設定して走査した時、目標値Tp’(Tp’=K’Tv)との誤差Errが入力される。よって、前述と同様に(式1)により求めたK’を設定するようにすれば、画素クロック周波数を目標値に制御することができる。
なお、これらフィルタ56及び周波数演算部57は、図2のフィルタ6及び周波数演算部7と同様の機能を果たし、構成も同様に適用できるので詳細な説明は省略する。
次に画素クロック生成部の第2の構成例の各部を説明する。図14は高周波クロック生成部51の構成例を示す図である。この高周波クロック生成部51は、基準クロックRefCLKから、多相クロックVCLK0〜15と、内部動作用クロックGCLKとを生成する。
電圧制御発振器VCO63は、8段の差動バッファ64a〜hを接続したリングオシレータで構成され、16位相のクロックVCLK0〜15を生成する。分周器60はこの多相クロックのうちの1つ(ここではVCLK8)をNv分周する。
位相周波比較器PFD61は基準クロックRefCLKと分周器60出力との位相比較を行い、この位相差情報に基づき内在するチャージポンプを駆動する。ローパスフィルタLPF62はチャージポンプ出力を平滑化し制御電圧VcをVCO63に供給する。
VCO63内の差動バッファ64a〜hはこの制御電圧Vcに従って遅延量が変化し、位相同期制御が行われる。例えば基準クロックRefCLKとして100MHzのクロックを供給し、分周比Nvを20とすると、多相クロックVCLK0〜15は2GHzで互いに等間隔の位相差を有するクロックが生成できる。また、分周器65は多相クロックVCLK0〜15のうちの1つ(ここではVCLK0)をQ分周(ここではQ=4とする)してクロックGCLKを生成する。なお、適用しうる多相クロックの相数は、この例の16に限らないが、演算の簡便性より2のべき乗がもっとも望ましい。同様に、GCLKを生成するための分周比Qも2のべき乗がもっとも望ましい。
図15は、計数部54の構成例を示す図である。また図16は画素クロック出力部58の構成例を示す図である。さらに、図17は計数部54及び画素クロック出力部58の各信号のタイミングの一例を示す図である。これらの図を参照して、画素クロック周波数指示信号Mnowに従って画素クロックPCLKを生成する詳細な構成および動作を説明する。
図15において、各部はクロックGCLKに同期して動作する。SET時間演算部70は、現在のPCLK立ち上がり時間情報に画素クロック周波数指示信号Mnowを加算し、次のPCLKの立ち上がり時間を表すセット時間情報nextSを演算するものであり、この演算の更新はpSet信号により行う。なお、セット時間情報nextSを64で割った商をnextSc、余りをnextSqpとする。つまりnextSc=nextS[MSB:6]、nextSqp=nextS[5:0]とする。
また、SPSYNCの立ち上がりに位相同期してPCLKの生成を始めるので(正確には所定の信号処理時間後でここでは2GCLK後)、最初のPCLK立ち上がり時間情報はSPqpとする。
同様にして、RST時間演算部71は、現在のPCLK立ち上がり時間情報に画素クロック周波数指示信号Mnowの1/2を加算し、次のPCLKの立ち下がり時間を表すリセット時間情報nextRを演算するものであり、この演算の更新はpSet信号により行う。また、nextRc=nextR[MSB:6]、nextRqp=nextR[5:0]とする。なお、Mnow/2を加算するのはPCLKのデューティをほぼ50%にするためであり、デューティー50%を要求しない場合はこの演算を簡略化できるような値を加算するようにしても良い。
カウンタ72は、クロックGCLKを基準としてnextScサイクルのカウントを行い、pSet信号を生成する。このpSet信号が「H」の時カウンタは「1」にクリアされ、カウント値がnextScと一致する時、pSet信号を「H」とする。
F/F73はpSet信号及びSPpls信号を1GCLK遅延させてSETpls信号を生成するフリップフロップである。F/F74は、pSet信号をイネーブルとしてnextSqpを、また、SPplsをイネーブルとしてSPqpをラッチし、SETqp信号を生成するフリップフロップである。このSETpls信号はPCLKの立ち上がりをGCLK単位で指定し、これに同期したSETqp信号によりそのGCLKサイクル内での立ち上がり時間情報を指定する。これらをSet信号と称し、画素クロック出力部58に供給する。
カウンタ75は、クロックGCLKを基準としてnextRcサイクルのカウントを行い、RSTpls信号を生成する。SETplsが「H」の時カウンタを「1」にクリアし、カウント値がnextRcに一致する時、RSTpls信号を「H」とする。F/F76は、SETplsをイネーブルとしてnextRqpをラッチし、RSTqp信号を生成するフリップフロップである。このRSTpls信号はPCLKの立ち下がりをGCLK単位で指定し、RSTqp信号によりそのGCLKサイクル内での立ち下がり時間情報を指定する。これらをRst信号と称し、画素クロック出力部58に供給する。
なお、SETqp信号及びRSTqp信号は、それぞれSETpls及びRSTpls信号が「H」の時有効となってればよいので、各部の制御タイミングはこの構成例のみに限定されるものではない。
図16において、遅延部77は、多相クロックVCLK0〜15を基準として、計数部54から供給されるSETplsを時間情報SETqpに従って遅延させたパルスSを出力するものであり、また、GCLKサイクル中の期間QTを特定するためクロックGCLKも入力する。あるいは期間を示す期間信号QTを入力しても良く、この場合は高周波クロック生成部51でこのQT信号を生成する。つまり、パルスSはSETplsをSETqp・Tvだけ遅延させたパルスとなる。
遅延部78は、同様に、多相クロックVCLK0〜15を基準として、計数部54から供給されるRSTplsを時間情報RSTqpに従って遅延させたパルスRを出力するものであり、パルスRはRSTplsをRSTqp・Tvだけ遅延させたパルスとなる。SR−F/F79は、パルスSの立ち上がりでセット「H」し、パルスRの立ち上がりでリセット「L」した画素クロックPCLKを出力するSet−Resetフリップフロップである。
図17において、(a)はGCLKである。第1エッジ検出部52では、第1の同期信号(b)SPSYNCの立ち上がりを検出すると、その次のGCLK1サイクルが「H」となる(c−1)SPpls信号を出力し、またGCLKサイクル内のどの時刻で立ち上がったかを示す(c−2)SPqp信号(本例では10とする)も出力する。
(d)Mnowは、周波数演算部57から供給される画素クロック周波数指示信号であり、図示したように入力されるものとする。(e−1)nextSは、SET時間演算部70で演算される次のPCLKの立ち上がり時間を表す。最初は、SPSYNCの立ち上がりに同期してPCLKが立ち上がるようになっているので、次のPCLKの立ち上がりはSPqp+Mnow=250Tv後となる。ここで右辺のカンマの前の数値はnextScを、カンマの後の数値はnextSqpを表す。またその次のnextSは、nextSqp+Mnow=298となる。
(e−2)nextRは、RST時間演算部71で演算される次のPCLKの立ち下がり時間を表す。まずはSPSYNCの立ち上がりにMnow/2を加算した値(=130)がPCLKの立下り時間となり、(e−1)nextSと同様に右辺のカンマの前の数値はnextRcを、カンマの後の数値はnextRqpを表す。
(f)pSetは、SETqp信号を更新するためにSETplsの1GCLK前に出力するパルスであり、カウンタ72のカウント値が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単位で指定したパルスであり、カウンタ75のカウント値がnextRcと一致した時「H」となる。(h−2)RSTqpはRSTplsの遅延値を示すPCLK立ち下がり時間情報である。
(i−1)Sは、(g−1)SETplsを対応する(g−2)SETqpの値だけ遅延させたパルスであり、遅延値の単位は多相クロックVCLK0〜15の位相差Tvである。同様に、(i−2)Rは、(h−1)RSTplsを対応する(h−2)RSTqpの値だけ遅延させたパルスである。(j)PCLKは、(i−1)Sの立ち上がりで「H」に、(i−2)Rの立ち上がりで「L」として生成される画素クロックである。
図18は、比較部55の詳細構成例を示す図である。また、図19は各信号のタイミングの一例を示す図である。図18,図19を参照して、比較部55の詳細な動作を説明する。
図19において、(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は、カウンタ72のカウント値である。本例では、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によりインクリメントされるカウンタ81のカウント値である。これらより、走査開始から走査終了時点EPまでのPCLKのサイクル数nと位相誤差m2を検出する。
図18において、カウンタ81は、SPplsで‘0’クリアし、pSetによりインクリメントするカウンタであり、そのカウント値countNを出力する。減算部82は、EPdetが「H」の時のカウンタ81の値countN(図19ではn)から基準カウント値RefNの減算を行い、減算結果diffN(=n−RefN)を出力する。
誤差検出部84は、EPdetが「H」の時のSETqp及びSETcntをそれぞれEndqp、Endcntとすると、次式の演算を行い位相差diffMを算出する。
diffM=Endcnt・Mp+(EPqp−Endqp)
ここで、MpはGCLKの時間情報分割数であり、この例では64である。また図19の例ではdiffM=144となる。
誤差演算部83は、下記の演算を行い多相クロックVCLK0〜15の位相差Tvを単位とする誤差Lerrを出力する。
Lerr=diffN・K+diffM
ここで、Tp=K・Tv,Tp:PCLKの周期である。
なお、図4と同様に、Lerr=diffN・K+diffM−RefMと演算し、基準時間の設定値をより細かく設定するようにして、より正確な画素クロック周波数の制御を行うようにしても良い。
次に図12の画素クロック生成部118で生成した画素クロックPCLKを基準に画像データに従い変調する変調データ生成部119の好適な構成及びその動作を説明する。
図20は変調データ生成部119の詳細構成例を示す図である。また、図21は、変調データ生成部119の各信号のタイミング図の一例を示す図である。図20,図21を参照して、詳細な動作を説明する。なお、本例では画像データPDataに従い8値のパルス幅変調を行った変調データMDataを生成する場合とする。
図20において、変調データ生成部119は、GCLKが各部へ供給され、基準クロックとして動作する。クロックパターン生成部90は、画素クロック生成部118から供給されSETpls及びSETqp信号から構成されるSet信号と画素クロック周波数指示信号Mnowとから、画素クロックPCLKの所定の位相差を持ったクロックに相当するクロックパターン信号CKP(ここではCKP0〜3で、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」になる。
画像データデコード部91は、画像データPDataを8値のパルス幅変調データDecData(8ビット)に変換する。このパルス幅変調データDecDataは、画素クロックPCLKの1サイクルを8つに時分割した期間の時間順に、MSBからLSBの順で各ビットが対応する。例えば、PData=3であれば、DecData=’b11100000と変換する(’bはバイナリ表記であることを示す)。あるいは、DecData=’b00000111と変換するようにしても良いし、モード切換信号を付加して双方のモードを切り換えられるようにしても良い。なお、この変換方式は、本発明の要旨に反しない範囲で自由に選択できる。
変調パターン生成部92は、パルス幅変調データDecDataとクロックパターン信号CKP0〜3とから、変調パターン信号MDPを生成する。この変調パターン信号MDPは、クロックパターン信号CKPと同様に、GCLKを基準に変化する信号で、GCLKサイクルを時間情報QPで区切った64の期間Tqpにそれぞれ対応する64ビットのデータである。
シリアライザ93は、変調パターン信号MDPを多相クロックVCLK0〜15を基準として、MSBから順に(つまり時間順に)Tv時間ずつシリアル出力した変調データMDataを生成する。
図21において、具体的数値例を挙げて説明する。(a)は基準クロックとなるGCLKである。今、Set信号を構成する(b−1)SETpls及び(b−2)SETqpが図のように供給される時、画素クロックは(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に時間順であり、HEX表記している。よってこれらのクロックパターンCKP0〜3から、画素クロックPCLKを8つに時分割した期間(tp0〜tp7)を示すパターン(それぞれ時間順にPT0〜7と称する)が生成できる。すなわち、PT0=CKP0&〜CKP1、PT1=CKP1&〜CKP2、・・・、PT7=〜CKP3&〜CKP0である。ここで、&は論理積を、〜は否定論理を示す。
(e)DecDataはパルス幅変調データであり、図にように変換されているとする。(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値のパルス幅変調を行う場合は、画像データデコード部91は、画像データPDataを16ビットのパルス幅変調データDecDataに変換し、クロックパターン生成部90は、画素クロックPCLKとπ/16ずつ位相をずらした8つのクロックパターンCKP0〜7を生成し、変調パターン生成部92で同様にして変調パターン信号MDPを生成するようにすればよい。
また、この構成例は図12の画素クロック出力部58に適用してもよい。つまり、画素クロックPCLKのクロックパターンPCKPを生成し(前述のクロックパターン信号CKP0を用いればよい)、これを多相クロックVCLK0〜15を基準として、MSBから順に(つまり時間順に)、Tv時間ずつシリアル出力すれば画素クロックPCLKを生成できる。
以上説明したように、画素クロック生成部の第2の構成例によれば、高精度に生成された多相クロックVCLK0〜15を基準として画素クロックを生成し、走査時間の変動に合わせて画素クロック周波数を制御しているので、走査平均速度の変動があってもこの誤差を高精度に補正できる画素クロックが生成でき、さらに画素クロック周波数の制御はポリゴンミラーの各面に対応してそれぞれ制御しているので、面毎の走査速度誤差があっても高精度に補正できる画素クロックが生成できる。
また、画素クロックの生成は多相クロックVCLK0〜15の位相差Tvの単位で正確に制御できるので、多相クロックの発振周波数を高くしないでもよいので、回路の設計が容易となり消費電流も低減できる。例えば、前述の第1の構成例と同等の分解能で画素クロックを生成する場合は、多相クロックの発振周波数は1/16でよい。逆にいえば、同等の発振周波数とした場合、画素クロック生成分解能を16倍に向上できる。つまり高精度な画素クロックが生成できる。さらには、画素クロック生成部の大部分は多相クロックの1つをさらに分周したクロックGCLKで動作するようにしているので、動作周波数がさらに低下され、消費電流を低減できる。
また、この画素クロック生成部を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
(第2の実施形態)
次に、本発明による画像形成装置の第2の実施形態を説明する。図22は、本発明による画像形成装置の第2の実施形態の構成を示す図である。第2の実施形態の画像形成装置が、第1の実施形態と異なる点は、複数の光源からの出射光を共通の走査光学系を用いて感光体に照射して画像(静電潜像)を形成するマルチビーム走査光学系を用いた点である。
図22において、半導体レーザ124及び125は、コリメートレンズ122、123との光軸を一致させ、主走査方向に対称に射出角度を持たせ、ポリゴンミラー104の反射点で射出軸が交差するようレイアウトされている。それぞれの半導体レーザ124、125より射出した複数のビームは、シリンダレンズ120を介してポリゴンミラー104で一括して走査され、fθレンズ106、ミラー110、及びトロイダルレンズ107により感光体105上に結像される。画像処理部133には各光源ごとに1ライン分の画像データが蓄えられ、ポリゴンミラー1面毎に読み出されて、2ラインずつ同時に書き込みが行なわれる。
またミラー110の両端にはフォトディテクタPD1(108)、フォトディテクタPD2(109)がそれぞれ配置されており、走査の開始と終了とが検出される。つまりポリゴンミラー104により反射された2つの光源から出射されたレーザ光は、感光体105を1ライン走査する前に順次PD1に入射され、走査後にPD2に入射される。
それぞれのフォトディテクタPD1,PD2では、入射されたレーザ光をそれぞれ第1の同期信号SPSYNC及び第2の同期信号EPSYNCに変換し、同期信号分離部126に入力する。2つの光源は感光体105上を時差を持って走査するように配置されているので、同期信号分離部126は、同期信号SPSYNCをそれぞれの光源に対応した同期信号SPSYNCaとSPSYNCbに、同様に同期信号EPSYNCをそれぞれの光源に対応した同期信号EPSYNCa及びEPSYNCbに分離する。
図23は、フォトディテクタからの同期信号のタイミングの一例を示す図である。(a)は第1の同期信号SPSYNCであり、(b)は第2の同期信号EPSYNCである。ここでは半導体レーザ125のレーザ光が先に走査されているとすると、同期信号(a)SPSYNCは(c−1)SPSYNCa及び(c−2)SPSYNCbのように分離される。同様に同期信号(b)EPSYNCは、(d−1)EPSYNCa及び(d−2)EPSYNCbのように分離される。
分離された一方の同期信号の組SPSYNCaとEPSYNCaとは、図22に示すように画素クロック生成部127に供給され、他方の組SPSYNCbとEPSYNCbとは画素クロック生成部130に供給される。
画素クロック生成部127は、2つの同期信号SPSYNCa及びEPSYNCaから走査時間Tlineaを測定し、その時間間隔に予め定められた所定数のクロックが収まるように求められた周波数の画素クロックPCLKaを生成する。画像処理部133は、画素クロックPCLKaを基準に画像データaを生成する。
変調データ生成部128は、画素クロックPCLKaを基準として、入力された画像データaから変調データaを生成し、レーザ駆動部129を介して半導体レーザ125を駆動する。
同様にして、画素クロック生成部130は、2つの同期信号SPSYNCb及びEPSYNCbから画素クロックPCLKbを生成し、画像処理部133において画素クロックPCLKbを基準に生成された画像データbから変調データ生成部131にて変調データbを生成し、レーザ駆動部132を介して半導体レーザ124を駆動する。
ここで、画素クロック生成部127、130は、図1の画素クロック生成部111と同様の機能を果たし、前述した画素クロック生成部の第1の構成例及び第2の構成例を適用できるので、詳細構成及び動作説明は省略する。変調データ生成部128、131も同様に説明を省略する。
なお、高周波クロック生成部1および51は、画素クロック生成部127と130とで共通に用いる構成とすれば、回路規模の小型化や消費電流の低減が図れる。また同期信号を検出する2つのエッジ検出部2及び3(または52及び53)を画素クロック生成部127と130とでそれぞれ共通化して検出し、検出信号を分離する構成としても良い。
さらには、フィルタ6、56や周波数演算部7、57の演算処理の一部は1ラインに1回動作するだけであるので、これを共通化し、複数の画素クロック周波数演算に対し時系列に処理するようにしてもよい。
この実施形態によれば、前述の従来技術の問題点で示した(3)光源毎の走査速度誤差があっても、つまり2つの光源の波長が異なり、走査光学系の色収差により走査速度が変動するなどにより2つのビームの走査速度が異なっても(図23の2つのビームの走査時間TlineaとTlinebが各々独立に変動しても)、それぞれの走査速度変動に合わせて画素クロックPCLKa及びPCLKbの周波数を独立に制御しているので、速度変動が高精度に補正でき、高品質の画像が形成できる。
また、マルチビーム走査光学系は複数の半導体レーザを備えた構成でなく、1つの半導体レーザアレイから出射される複数のレーザビームを共通の走査光学系を用いて走査する構成もある。このような光学系に対しても同様に適用できる。なお、マルチビーム走査光学系は様々な形態があるが、本発明の作用効果は走査光学系の形態によらず適用できるものであるので、詳細な構成の図示及び説明は省略する。
(第3の実施形態)
さらに、本発明による画像形成装置の第3の実施形態を説明する。本発明による画像形成装置の第3の実施形態は、複数の感光体を有する多色対応の画像形成装置であり、シアン、マゼンダ、イエロー、ブラックの各色に対応した別々の感光体を備え、走査光学系もそれぞれの感光体に対応して備えられ、各色に対応した画像(静電潜像)をそれぞれの感光体上に形成する。そして、1枚の画像形成媒体(例えば紙)に各色の画像を転写することによりカラー画像を形成する。
第3の実施形態の画像形成装置は、単純には図1の画像形成装置を4つ備えることにより実現できる。また、小型化のため走査光学系の一部を共通化した形態も適用できるが、それぞれの光路は異なるので、異なる画像形成装置を複数個備えたものと考えてよい。
図24はこのような構成の一例を示す図である。なお、図24は副走査断面図であり、一部のユニットのみを図示している。以下、図24に基づき第3の実施形態の説明を行う。
図24において、ポリゴンミラー151は、2段構成であり、点線を軸として回転しており、各走査光学系で共通に用いている。半導体レーザー161aから出射したレーザ光は、コリメータレンズ、シリンダーレンズを介して(いずれも図示せず)、ポリゴンミラー151のa点で反射される。同様に、半導体レーザ161b〜dから出射されたレーザ光は、ポリゴンミラー151のb〜d点で反射される。ポリゴンミラー151で反射されたレーザ光は、走査レンズ152、154及び折り返しミラー153、155、156を経由して感光体157上を走査し(ビームの走査方向つまり主走査方向は、図面に対して垂直方向である)、画像(静電潜像)を形成する。ここで図番末尾のa〜dは半導体レーザa〜dに対応したものであり、それぞれイエロー、マゼンタ、シアン、ブラックの各色に対応した画像を形成しているものとする。そして中間転写ベルト158上に置かれ矢印方向に移動する画像形成媒体へ、各感光体157a〜dに形成された各色の画像を転写してカラー画像が形成される。
このとき、有効走査範囲外の両側に配備されたミラー170によりビームを検出器(フォトディデクタ)171に導光して、走査の開始と終了とを検出し、同期信号SPSYNC、EPSYNCに変換する。これらの同期信号SPSYNC、EPSYNCは前述と同様に、画素クロック生成部164に供給され、走査速度誤差を補正するように周波数が制御された画素クロックPCLKを生成する。また、画像処理部165は、画素クロックPCLKを基準に画像データPDataを生成する。変調データ生成部163は、画素クロックPCLKを基準として、入力された画像データPDataから変調データを生成し、レーザ駆動部162を介して半導体レーザ161を駆動する。これらを各色の対応ビーム毎に同様に行う。
また、画素クロック生成部164には、前述した画素クロック生成部の第1の構成例,第2の構成例を適用できる。ここで、走査光学系の各部品の製造精度や組付け精度、経時変化などによる変形などの影響により、各走査光学系での走査時間はそれぞれ異なり、また走査開始及び終了を検出する2つのフォトディデクタ間の距離も組付け精度などにより異なるので、画像クロック周波数制御の基準となる基準値RefNを各走査光学系毎に画像形成装置の製造時などに予め求めておき(経時変化などにより画像劣化が生じた時は再度求めなおすようにしても良い)、これらを基準値RefNとして画素クロック生成部164にそれぞれ与える。
また、同期信号SPSYNCによる走査開始検出位置も走査光学系毎に異なる場合があるので、同期信号SPSYNCの立ち上がりから所定時間後(画素クロックPCLKの所定サイクル後)に、画像の書き込みを開始するようにしておき(書き込み開始オフセットと称する)、この書き込み開始オフセットを各走査光学系毎に予め求めておく。
図25は、各走査光学系における走査時間に対する走査幅の関係を示す図である。(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が走査光学系によらず一致する。
このように、この第3の実施形態の画像形成装置によれば、走査光学系毎の速度誤差を含め、様々な要因で走査速度誤差が生じても、画像形成する各色それぞれに対応する走査速度差・変動に合わせて画素クロックPCLKの周波数を独立に制御しているので、このようにして形成されたカラー画像は、色ずれが生じず、色再現性、解像度の劣化が生じず、高品位の画質を得ることができる。
以上説明したように、第1〜第3の実施形態によれば、前述した従来技術の問題点に示した(1)〜(4)の走査速度誤差を高精度に補正することができる。本発明では、さらに、第1〜第3の実施形態に以下に説明する変更を行うことにより(以下のような第4の実施形態とすることにより)、走査速度の非線形性誤差をも高精度に補正することができる。
(第4の実施形態)
以下図面に基づき、第4の実施形態を説明する。図28は画素クロック生成部の第3の構成例を示す図である。図28の画素クロック生成部は、図1、図22、図24の画像形成装置のそれぞれの画素クロック生成部として適用できる。図28において、図2と同一図番を付したブロックは同様の構成で、同様の機能を果たすので詳細説明は省略する。
図28の周波数演算部201は、図2の周波数演算部7と同様にして、誤差データErrに従って適正な画素クロック周波数を算出し、これを画素クロック平均周波数信号Mavgに変換して出力する。
また、周波数変調部202は、後述の周波数変調データ生成部203から供給される周波数変調データFMDataに従って、画素クロック平均周波数信号Mavgの変換を行うことにより、所望の周波数変調を行う画素クロック周波数指示信号Mnowを生成し、分周器4へ供給する。分周器4ではこの画素クロック周波数指示信号Mnowに従って高周波クロックVCLKを分周して画素クロックPCLKを生成するので、画素クロック平均周波数信号Mavgを変調することにより、画素クロックPCLKの周波数変調が行える。
周波数変調データ生成部203は、第1の同期信号SPSYNCを原点とした走査位置(ここでは画素クロックPCLK数nで表す)に対応した周波数変調データFMDataを生成する。この周波数変調データFMDataは、走査位置nにおける走査速度V(n)に対応した画素クロック周波数であり、ここでは高周波クロックVCLKの分周値で表すしたM(n)と画素クロック平均周波数信号Mavgとの差である。
図29は、走査位置nに対する走査速度V(n)(図29(a))と理想位置からのずれΔ(n)(同図(b))と周波数変調データFMData(n)(同図(c))の一例を示す図である。理想位置からのずれΔは、V(n)−Vavgの積分した値となる。走査速度の非線形性誤差は、走査光学系の精度や組付け誤差が主因となり決まるので、周波数変調データFMDataは、例えば装置の製造時に予め取得しておき、これを格納しておけばよい。周波数変調データの取得方法の一例を示す。まず一定の画素クロック周波数で走査を行い、各走査位置における理想位置からのずれΔを測定する。このずれΔの微分値が走査速度Vであるので、これより画素クロック周波数に換算し画素クロック平均周波数信号Mavgとの差分を求める。簡単には、所定の走査位置間(図29のΔn)の傾きを走査速度V’と近似し、この領域内ではその値からの換算値を周波数変調データとして用いる(図29の各図破線)。このようにすれば、簡便に周波数変調データを求めることができ、かつその領域間は同一データでいいので、データを格納するメモリ量も低減できる。また走査速度補正をより高精度に行いたい場合には、領域Δnを短くすれば良い。周波数変調データFMDataは、簡単には分周比Mの差分データΔMを求めればよい。画素クロック周波数指示信号Mnowへの変換は、画素クロック平均周波数信号Mavgに差分データΔMを加算することにより行える。
また、画素クロックの周波数変調をより高精度に行うため、周波数変調データは分周比Mだけでなく、その小数部も含むようにするとよい。この小数部の処理は前述と同様にすればよい。すなわち図5におけるM値とC値、あるいは図8におけるM値とF値である。上記のように周波数変調を領域に分けて行う場合は、領域長ΔnをNa(Na=2^a、a:2進数表記小数部の桁数)の整数倍(1以上)とすると処理が簡便となり、より好適である。以下の詳細説明では、周波数変調データFMDataを整数部ΔM及びa桁の小数部ΔFで扱う場合について説明する。
次に、画素クロック生成部の第3の構成例の各部詳細を説明する。周波数演算部201は、図8と同様の構成を適用する(図示省略)。但し、カウンタ30、変換部31と加算部32は、後述する周波数変調部202と同等の機能を持つので共通化し、周波数演算部201からは削除するものとする。よって、選択部28の出力Mと選択部29の出力Fを画素クロック平均周波数信号Mavgとして出力する。
図30は、周波数変調部202の詳細構成例を示す図である。図30の周波数変調部202は、画素クロック平均周波数信号Mavg(M、F)と周波数変調データFMData(ΔM、ΔF)とを加算した周波数データ(M’、F’)を画素クロック周波数指示信号Mnowに変換する。ここで、ΔMは正負の数であり、ΔFは正数である。すなわち、加算部211は、FとΔFを加算してF’を得る。このとき桁上がりがあればCOを出力する。また、加算部210は、MとΔMと桁上がり信号COとを加算してM’を得る。カウンタ212、変換部213及び加算部214は、図8のカウンタ30、変換部31及び加算部32とそれぞれ同等の機能を果たし、M’とF’を画素クロック周波数指示信号Mnowに変換する。前述と同様の動作であるので、詳細説明は省略する。
図31は、周波数変調データ生成部203の詳細構成例を示す図である。図31の周波数変調データ格納部220は、走査ライン中の各領域に対応する周波数変調データFMDataを、各領域番号をアドレスとして格納しておくメモリであり、供給されるアドレス信号に対応したデータを出力する。格納するデータは上述のようにして予め求められている。このデータは装置内の他の格納部に保存しておき、装置の立ち上げ時等にロードするようにしても良い。また、周波数変調制御部221は、走査ライン中の領域番号を演算しアドレス信号を生成する。すなわち、同期信号SPSYNCの入力によりアドレスを0クリアし、画素クロックPCLKをカウントして、領域長Δnに達する毎にアドレス信号をインクリメントしていく。なお、同期信号SPSYNCの代わりに検出パルスSPplsを入力するようにしても良い。また、各領域の領域長を予め設定しておき、それぞれの領域長に達する毎にアドレスをインクリメントするようにしておけば、周波数変化量に応じて領域長を変えることができ、格納メモリ量の低減と周波数補正精度向上との両立を果たせる。
ところで、走査速度または画素クロック周波数を変更すると、周波数変調データはこれに比例して変更する必要がある。例えば走査速度(ポリゴン回転速度)を変えずに、画素クロック周波数を変化させ画素密度を変更する場合、予め求めておいた周波数変調データを、変更する倍率に応じて比例して変更すればよい。つまり、例えば周波数変調データを、算出する際の画素クロック周波数を1/2倍して画素密度を1/2にする場合、算出時の周波数変調データを1/2倍したデータを周波数変調データ格納部220に格納するようにすればよい。
この画素クロック生成部の第3の構成例によれば、第1の構成例の効果に加え、非線形性誤差をも補正した高精度な画素クロックが生成できる。また、この画素クロック生成部を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。また、ポリゴンミラーの面毎に走査速度の非線形性誤差が異なるなど非線形性誤差が走査ライン毎の周期性を持つ場合、予め各々の面毎に対応した周波数変調データを取得し、走査時にはその面に対応した周波数変調データを用いるようにすればよい。
図32はこのような場合に好適な周波数データ生成部の別の構成例を示す図である。図32において、周波数変調制御部221は、図31と同様に走査ライン中の領域番号を演算しアドレス信号を生成する。周波数変調データ格納メモリ223(1)〜(Nf)は、ポリゴンミラーの面数をNfとした時に、各面に対応し、走査ライン中の各領域に対応する周波数変調データFMDataを、各領域番号をアドレスとして格納しておくメモリであり、供給されるアドレス信号に対応したデータを出力する。ここで、どの面に対応するメモリが有効に選択されるかはメモリ選択信号によって選択される。メモリ選択信号生成部222は、周波数演算部201から出力される面選択信号FNoをメモリ選択信号に変換し出力する。ここで面選択信号FNoは相対的な面番号を示すものであり、メモリ選択信号は絶対的な面番号に対応しているので、ここでその対応付けを行う。
この対応付けの方法の一例を示す。周波数変調データの取得時に、まず一定の画素クロック周波数で(周波数制御を行わずに)走査を行い、各面毎に各走査位置における理想位置からのずれΔを測定するが、このとき各面毎走査速度が異なるので比較部5の出力Lerrは各面毎固有であり異なった値をとる。通常、少なくともその誤差Lerrの順列から各面の絶対的な面番号は特定できる。よって、この各面毎の誤差Lerrも理想位置からのずれΔから算出した周波数変調データを格納したメモリ番号に対応して格納しておく。次に通常動作時には、ポリゴンミラーの回転が安定した後、一定の画素クロック周波数で(周波数制御を行わずに)走査を行い、面選択信号FNoと誤差Lerrを対応付けて取得し、その計測した誤差Lerrの並びと格納しておいた誤差Lerrの並びとを一致させることにより、面選択信号FNoとメモリ番号が対応付けられることになる。その後、画素クロック周波数制御動作を行うようにすればよい。なお、誤差Lerrの複数ライン分の平均を使用することにより確度を向上できる。このようにすれば、ポリゴンミラーの面毎に走査速度の非線形性誤差が異なっていても、各々の非線形性誤差に応じた画素クロック周波数補正を行えるので、より高精度な画素クロックが生成できる。
次に、画素クロック生成部の別の構成例を説明する。図33は画素クロック生成部の第4の構成例を示す図である。図33の画素クロック生成部は、図1、図22、図24の画像形成装置のそれぞれの画素クロック生成部として適用できる。図33において、図12と同一図番を付したブロックは同様の構成で、同様の機能を果たすので、詳細説明は省略する。図33の周波数演算部231は、図12の周波数演算部57と同様にして、誤差データErrに従って適正な画素クロック周波数を算出し、これを画素クロック平均周波数信号Mavgに変換して出力する。周波数変調部232及び周波数変調データ生成部233は、図28の周波数変調部202及び周波数変調データ生成部203と同様の機能を果たし、同様の構成で適用できるので、詳細説明は省略する。但し本例では、画素クロックPCLKの代わりにクロックGCLKを基準に動作し、セットパルスSetをカウントすることにより走査位置(n)を計数する。もちろん、画素クロックPCLKを基準に動作させても良い。この画素クロック生成部の第4の構成例によれば、第2の構成例の効果に加え、非線形性誤差をも補正した高精度な画素クロックが生成できる。また、この画素クロック生成部を画像形成装置に適用すれば、走査速度誤差を高精度に補正した画素クロックを基準に画像を形成するので、高品質な画像が得られる。
以上説明したように、本発明の第4の実施形態によれば、前述した従来技術の問題点に示した(1)〜(5)の走査速度誤差を高精度に補正する画素クロックを生成することができる。この画素クロックを基準にして、以下に説明する変調データ生成部により画像データを変調した変調データを生成し、レーザ駆動部を介して半導体レーザを駆動することにより、走査速度の誤差をも高精度に補正した高品位な画像を形成できる。
また、図34は、変調データ生成部119の構成例を示す図である。図34の変調データ生成部119は、濃度データDdenと位相データDphからなる画像データから半導体レーザを駆動するための変調データを生成する。この変調は1ドットのパルス幅を変調するPWM変調であり、濃度データがパルス幅を、位相データがドット中のパルス位置を示す。図34の変調データ生成部は、図12、22、24、33の画像形成装置の変調データ生成部として適用すると好適である。
図34において、データ変換部301は、濃度データDdenをPWM変調パルス幅データDoutに変換するものである。上述してきたように1ドットの幅つまり画素クロックPCLKの1周期は高周波多相クロックVCLK0〜15の位相差Tvを単位とするM値で表され、目標の画素クロック周波数がMtargetで定められているとする。このとき濃度データDdenの最大値をdmaxとすると(例えば濃度データが4ビットで表されるとすると最大値dmax=15)、Dout=Mtarget*Dden/dmaxなる演算をして変換データDoutを得る。この変換は1ドット毎演算をして求めてもよいが、予め濃度データに対応する変換データを定めた変換データ表LUT(Look Up Table)を変換データ生成部307により生成しておき、これをデータ変換部301に供給して、この変換データに従って変換するようにしておけばよい。あるいは、変換データ生成部307は、別途求めた変換データを格納するものであっても良い。図35(a)はこの変換データの一例を示す図である。また、データ変換部301は、濃度データが0であるときにDzeroをHに、濃度データがフル濃度(dmax)であるときにDfullをHとする信号を生成する。実際は走査速度の変動により、画素クロックPCLK周波数はその都度制御されており、そのときの画素クロック周波数はMtragetと一致しないこともある。その場合はその差分を補正データとして供給し、データ補正部302により、その差分を補正し、補正したPWM変調データDpwmを生成する。また、画素クロック周波数を1ライン中に周波数変調し、走査速度の非線形誤差を補正する図33の画素クロック生成部を用いる場合は、周波数変調データFMDataを補正データとして供給すると、画素クロックの周波数変調に応じた補正が行われる。詳細な構成及び動作は後述する。また、画素クロックのMtargetとの差が微小な場合、一般にフル濃度での微小な差は画像としてほとんど差異はないので、簡便のためデータ補正部302を省略しても良い。
遅延部303は、位相データDphをデータ変換部301及びデータ補正部302の演算時間分だけ遅延させるものであり、PWM変調データDpwmと供給する時間を一致させる。またDfull及びDzero信号も遅延調整がなされて出力されているものとする。
エッジ時刻演算部304は、PWM変調データDpwm、フル濃度信号Dfull、ゼロ濃度信号Dzeroおよび位相データDphに従い、また画素クロック生成部より供給される画素クロックPCLKの立ち上がり時刻情報などを表すPCLKデータを基準として、変調データの立ち上がり時刻情報WPS及び立下り時刻情報WPRを後述する演算により生成するものである。
Set/Rstパルス生成部305は、変調データの立ち上がり及び立下り時刻情報WPS、WPRからセットパルスWPSpls、リセットパルスWPRpls及びその位相情報WPSqp、WPRqpを生成するものである。
変調データ出力部306は、セットパルスWPSpls、リセットパルスWPRpls及びその位相情報WPSqp、WPRqpから変調データパルスを生成し出力するものである。
次に、図34の各部の詳細構成及び動作を説明する。図36は、データ補正部302の一例を示す図である。図36のデータ補正部302は、目標画素クロック周波数Mtargetと現在の画素クロック周波数Mとの差分をΔMとした時、Dpwm=Dout(1+ΔM/Mtarget)なる演算を行ってデータの補正を行う。なお、前述したように周波数変調データFMData(またはその上位一部のデータ)を差分データに加算してもよい。データ補正部302において、まず割算器310はΔM÷Mtargetの演算を行う。なお、通常、高速な割算器を構成するのは困難なので、Mtargetの逆数を与え、ΔM×1/Mtargetの演算を行う掛算器としてもよい。また、掛算器311は、入力したPWM変調データDoutに割算器310の出力を掛け、Dout・ΔM/Mtargetを求める掛算器である。また、遅延部312は、掛算器311の演算時間分PWM変調データDoutを遅延させる。また、加算器313は、遅延部312出力と掛算器311出力とを加算し、補正したPWM変調データDpwm(==Dout(1+ΔM/Mtarget))を出力する。
図37は、エッジ時刻演算部304で行なう演算を表す表を示す図であり、図38は、演算の一例を示す信号波形図である。いまの例では、画素クロックPCLKの立ち上がり時刻情報などを表すPCLKデータとして、内部動作クロックGCLKを基準に生成されたデータであり、画素クロックの立ち上がりを表すセットパルスPCKsetとその位相情報setph、セットパルスPCKset立ち上がりエッジを起点としその画素クロックの中心位置を表すデータcentpos、及びセットパルスPCKset立ち上がりエッジを起点とし次の画素クロックの立ち上がり位置を表すデータnextposと、からなる情報が供給されている。
そのドットがフル濃度のドットであるかを示すフル濃度信号Dfull(Hがフル濃度時)、そのドットがゼロ濃度(つまり白ドット)のドットであるかを示すゼロ濃度信号Dzero(Hがゼロ濃度時)、位相データDph(ここでは左/右/中の3つのドット位相状態があるものとする)と、前ドットが点灯状態で終わっているか否かを示す信号prev’の各状態(S1〜S10)に応じて、変調データの立ち上がり時刻情報WPS及び立下り時刻情報WPRと前ドット立下り時刻情報prevRSTと、当該ドットが点灯状態で終わるか否かを示す信号prev(次ドットでのprev’になる)が図37に示すように生成される。ここで、Xは、その信号の状態が何であっても良いという意味であり、WPS等の欄に示す”−”はそのドットでは有効データではないことを表す。一例を説明すると、フル濃度信号Dfull=Hの時は、他の信号がどの状態であってもprev=Hとし、prev’=LであればWPS=setphを代入し出力する。このとき他の情報は有効データではない。
図38に基づき、さらに演算例を説明する。ここではDpwm=fullの時、Dfull=Hを示し、Dpwm=zeroの時、Dzero=Hであり、その他は変調データの値を記す。まず、(1)のドットサイクルでは、Dpwm=d0であり(つまりDfull=L、Dzero=L)、Dph=左、またprev’=Lであるので、図37のS5の状態であるので、WPS=setph、WPR=setph+d0、prevRST=無効、prev=Lとなる。図中、各時刻情報を矢印で記し、記入の無いサイクルで無効を表す。
以降、ドットサイクル(2)では、S7の状態であるので、WPS=n1−d1、WPR,prevRST=無効、prev=H
ドットサイクル(3)では、状態S4で、prevRST=setph、他無効、prev=L
と演算される(以降サイクルの記述は省略)。
また、(k)PCLK及び(l)WrPLSは、説明のため、画素クロックと変調データを実時間で表したものである。
次に、Set/Rstパルス生成部305は、変調データの立ち上がり時刻情報WPSが、GCLKのカウント数WPScntと位相情報WPSqpに分けられ(具体的には、例えば、下位6ビットが位相情報、それ以上がカウント数を示す)、PCKsetパルスをGCLKのカウント数WPScnt分遅延させたパルスをセットパルスWPSplsとして出力し、その出力に合わせて位相情報WPSqpも出力する。また同様に、prevRST時刻情報が無効であれば、変調データの立ち下がり時刻情報WPRをGCLKのカウント数WPRcntと位相情報WPRqpに分け、CKsetパルスをWPRcnt分遅延させたパルスをリセットパルスWPRplsとして出力し、合わせて位相情報WPRqpを出力する。prevRST時刻情報が有効であれば、その前にPCKsetパルスと同一サイクルでリセットパルスWPRplsと位相情報setphを出力し、続いて変調データの立ち下がり時刻情報WPRに基づいた生成を行う。
図39は変調データ出力部306の構成例を示す図である。図39において、遅延部320は、多相クロックVCLK0〜15を基準として、Set/Rstパルス生成部305から供給されるWPSplsを位相情報WPSqpに従って遅延させたパルスSを出力するものであり、また、GCLKサイクル中の期間QTを特定するためクロックGCLKも入力する。あるいは期間を示す期間信号QTを入力しても良い(この場合は高周波クロック生成部51でこのQT信号を生成する)。つまり、パルスSはWPSplsをWPSqp・Tvだけ遅延させたパルスとなる。また、遅延部321は、同様に、多相クロックVCLK0〜15を基準として、Set/Rstパルス生成部305から供給されるWPRplsを位相情報WPRqpに従って遅延させたパルスRを出力するものであり、パルスRはWPRplsをWPRqp・Tvだけ遅延させたパルスとなる。SR−F/F322は、パルスSの立ち上がりでセット「H」し、パルスRの立ち上がりでリセット「L」した変調データWrPLSを出力するSet−Resetフリップフロップである。
このように、フル濃度信号Dfullを適用することにより、目標画素クロック周波数Mtargetが現在の画素クロック周波数Mと一致しなくても、例えばDpwm=M−1となっても、パルスが欠けることなくフル濃度のパルスが生成できる。よって、現在の画素クロック周波数を補正データとして供給しなくても良いので、簡便な構成となり、また高速化にも対応できる。
また、通常、画像形成装置には所望の濃度データが忠実に実際の画像濃度として再現できるように、その装置に依存した階調非線形性を補正するため、濃度データを一般にガンマ補正と呼ばれる補正がなされる。このガンマ補正を図34のデータ変換部で同時に行うようにしても良い。つまり、変換データを図35(b)の曲線に示すように、フル濃度dmaxが目標画素クロック周波数Mtargetとなるようなガンマ補正データを変換データとして格納しておくようにすればよい。このようにすれば、回路規模の縮小ができる。
以上説明したように、本実施形態の変調データ生成部とすれば、パルス幅変調分解能を向上させても回路は煩雑になることも無く回路規模が増大することなく簡便な構成で実現できるため、分解能の高いパルス幅変調を行った変調データを生成でき、さらには走査速度の変動があってもその誤差を高精度に追従した画素クロックに基づいて生成しているので、高品質な画像が得られる。また、走査速度の非線形性誤差に応じた画素クロック周波数補正を行ってもその画素クロックの周波数変動に応じた補正がなされるので、走査速度の非線形誤差に拘わらず所望の濃度データに対して忠実な階調の画像が得られる。