クランク軸の回転に伴い所定の角度間隔で発生する信号列中に所定の角度位置を表わす基準位置信号を有するクランク角信号と、カム軸の回転に伴って各気筒に対応した所定の角度位置で発生するカム角信号とに基づいて気筒判別を行い、前記クランク角信号に基づいて1燃焼サイクルにおけるエンジン回転位置を判定するエンジン制御装置において、前記クランク角信号の異常を判定する異常判定手段と、前記クランク角信号が正常時の気筒判別情報に基づいてエンジン停止時の気筒位置を記憶部に記憶する記憶手段と、エンジン始動時に前記クランク角信号が異常の場合、前記記憶部に記憶しているエンジン停止時の前記気筒位置に基づいて前記カム角信号を検出するときの気筒位置を推定する気筒推定手段と、エンジン始動時に前記クランク角信号が異常の場合、前記気筒推定手段の推定結果に基づいて燃料を噴射し燃焼させる運転制御手段と、を備えることを特徴とするエンジン制御装置。前記気筒推定手段は、前記気筒推定手段の推定結果に基づいて前記運転制御手段が噴射させた燃料が該当気筒で燃焼しなかった場合、推定する気筒位置をずらすことを特徴とする請求項1に記載のエンジン制御装置。前記記憶手段は、イグニションスイッチがオフの状態でも記憶情報を保持する記憶部に前記気筒位置を記憶することを特徴とする請求項1または2に記載のエンジン制御装置。エンジン始動時に前記クランク角信号が異常の場合、前記カム角信号の間隔に基づいて所定間隔で疑似クランク角信号を生成する信号生成手段を備え、前記気筒推定手段は、エンジン始動時に前記クランク角信号が異常の場合、前記記憶部に記憶している前記気筒位置と前記カム角信号と前記疑似クランク角信号とに基づいて前記エンジン回転位置を推定する、ことを特徴とする請求項1から3のいずれか一項に記載のエンジン制御装置。前記エンジンは3気筒エンジンであり、前記カム角信号は各気筒に対応して等角度間隔に発生することを特徴とする請求項1から4のいずれか一項に記載のエンジン制御装置。カム角信号により特定の気筒を判別する構成に対し、カム角信号が各気筒に対応して所定の角度位置で発生するものが知られている。ここで、カム角信号により特定の気筒を判別する構成の場合、クランク角信号が異常であっても、カム角信号だけで気筒を判別することは可能である。一方、カム角信号が各気筒に対応して所定の角度位置で気筒毎に発生する構成の場合、クランク角信号が異常になるとカム角信号だけでは気筒の判別ができない。その結果、エンジンを始動できないという問題がある。本発明は、上記課題を解決するためになされたものであり、カム角信号が各気筒に対応した所定の角度位置で発生する構成において、クランク角信号が異常の場合にエンジンを始動できるエンジン制御装置を提供することを目的とする。請求項1から5に記載の発明によると、クランク軸の回転に伴い所定の角度間隔で発生する信号列中に所定の角度位置を表わす基準位置信号を有するクランク角信号と、カム軸の回転に伴って各気筒に対応した所定の角度位置で発生するカム角信号とに基づいて気筒判別を行い、クランク角信号に基づいて1燃焼サイクルにおけるエンジン回転位置を判定するエンジン制御装置において、記憶手段は、クランク角信号が正常時の気筒判別情報に基づいてエンジン停止時の気筒位置を記憶部に記憶し、気筒推定手段は、エンジン始動時にクランク角信号が異常の場合、記憶部に記憶しているエンジン停止時の気筒位置に基づいてカム角信号を検出するときの気筒位置を推定し、運転制御手段は、エンジン始動時にクランク角信号が異常の場合、気筒推定手段の推定結果に基づいて燃料を噴射し燃焼させる。尚、1燃焼サイクルは、吸入行程、圧縮行程、膨張行程、排気行程からなり、クランク軸の2回転、カム軸の1回転の角度に相当する。そして、エンジン回転位置は、1燃焼サイクルの回転角度におけるエンジンの回転位置を表わしており、エンジン回転位置に基づいて各気筒の行程の位置を判定できる。このように、エンジン始動時にクランク角信号が異常の場合、カム軸の回転に伴って各気筒に対応した所定の角度位置で発生するカム角信号を検出すると、記憶部に記憶しているエンジン停止時の気筒位置に基づいてカム角信号を検出するときの気筒位置を推定し、気筒位置を更新できる。したがって、推定した気筒位置に基づいて燃料を噴射して燃焼させ、エンジンを始動できる。これにより、例えばクランク角信号が異常になったために燃料噴射が停止されエンジンが停止してもエンジンを始動できるので、車両を退避走行させることができる。尚、エンジンが停止するときに記憶部に記憶する気筒位置は、クランク角信号が正常であればエンジンが停止するときの気筒判別情報に基づいて記憶し、クランク角信号が異常であれば、クランク角信号が正常時の気筒判別情報に基づいて、例えばエンジンが停止するまでカム角信号を検出する毎に気筒位置を更新することにより記憶できる。ところで、エンジン停止時には、最後のカム角信号を検出してから上死点を乗り越えて停止するか、上死点を乗り越えられずに逆転して停止するかのいずれかが考えられる。したがって、エンジン停止時に、クランク角信号が正常時の気筒判別情報に基づいてエンジン停止時の気筒位置を記憶すると、気筒位置がずれる可能性がある。そこで、請求項2に記載の発明によると、気筒推定手段は、気筒推定手段の推定結果に基づいて運転制御手段が噴射させた燃料が該当気筒で燃焼しなかった場合、推定する気筒位置をずらす。このように、噴射させた燃料が該当気筒で燃焼しなかった場合に推定する気筒位置をずらすことにより、ずらした気筒で燃料を噴射し、いずれかの気筒で燃料を燃焼させることができる。請求項3に記載の発明によると、記憶手段は、イグニションスイッチがオフの状態でも記憶情報を保持する記憶部に気筒位置を記憶する。これにより、エンジンが停止してイグニションスイッチがオフされても、エンジン停止時の気筒位置を記憶部に保持できるので、イグニションスイッチをオフにしてからオンにしてエンジンを始動するときに、記憶部に記憶している気筒位置に基づいてカム角信号を検出したときの気筒位置を推定できる。請求項4に記載の発明によると、信号生成手段は、エンジン始動時にクランク角信号が異常の場合、カム角信号の間隔に基づいて所定間隔で疑似クランク角信号を生成し、気筒推定手段は、エンジン始動時にクランク角信号が異常の場合、記憶部に記憶している気筒位置とカム角信号と疑似クランク角信号とに基づいてエンジン回転位置を推定する。このように、カム角信号の間隔に基づいて所定間隔で疑似クランク角信号を生成することにより、エンジン始動時にクランク角信号が異常であっても、記憶部に記憶している気筒位置とカム角信号と疑似クランク角信号とに基づいてエンジン回転位置を高精度に推定できる。尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、またはそれらの組合せにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。以下、本発明の実施形態を図に基づいて説明する。図1に、車両に搭載される本実施形態の電子制御装置ECU:ElectronicControlUnit10を示す。ECU10は、例えば、3気筒のガソリンエンジン用のインジェクタの噴射制御、点火プラグの点火制御を行うエンジンECUであり、CPU12、ROM14、RAM16、SRAMスタンバイRAM18、EEPROM20、入力回路30および出力回路32等から構成されている。ECU10は、ROM14に記憶されている制御プログラムをCPU12が実行することにより、各種センサが検出するアクセル開度、スロットル開度、車速、クランク角、カム角、イグニションスイッチ等の各種信号を入力回路30を介して入力する。そして、これらセンサの検出信号に基づいて、図示しないインジェクタの噴射制御、点火プラグの点火制御等の制御信号を出力回路32を介して出力する。ECU10の制御プログラムが作業用に使用し、イグニションスイッチがオフされると電力供給が遮断されて記憶データが消失するRAM16と異なり、イグニションスイッチのオン、オフに関わらず、SRAM18にはバッテリから電力が供給される。したがって、SRAM18は、バッテリの交換等により電力供給が遮断されない限り、記憶しているデータを保存する記憶部である。EEPROM20は、書き換え可能な不揮発性の記憶部である。バッテリから電力供給が遮断されても、EEPROM20に記憶されているデータは保存される。ECU10は、イグニションスイッチをオフして車両の運転を停止しても記憶する必要のあるデータを、SRAM18またはEEPROM20に記憶する。気筒判別ECU10は、クランク軸の回転に伴って所定の角度間隔で発生する信号列中に所定の角度位置を表わす基準位置信号を有するクランク角信号と、カム軸の回転に伴って各気筒に対応した所定の角度位置で発生するカム角信号とに基づいて気筒判別を行い、吸入行程、圧縮行程、膨張行程、排気行程からなる1燃焼サイクルにおけるエンジン回転位置をクランク角信号に基づいて判定する。クランク角信号は、クランク軸に固定されたクランクロータの外周に所定の角度間隔例えば10°で形成された歯を、クランク軸の回転に伴って図示しないクランク角センサが検出することにより発生する。尚、クランクロータの外周に形成される歯の間隔は10°に限るものではなく、10°より小さくてもよいし、大きくてもよい。クランクロータの歯列の途中には、1個の歯を挟んで2個の歯が2箇所で連続して欠損した欠歯の連欠け200図2参照と、2個の歯が1箇所で欠損した欠歯の単欠け202図2参照とが、所定の角度位置として180°反対側に形成されている。連欠け200、単欠け202を検出するときのクランク角信号は、気筒判別および1燃焼サイクルにおけるエンジン回転位置の判定を行うときの基準位置信号になる。ECU10は、クランク角信号に基づいて1回転中におけるクランク軸の角度位置を検出するとともに、単位時間当たりのクランク角信号のパルス数を算出することにより、エンジン回転数を検出する。カム軸は、クランク軸に対して1/2の比率で回転するので、クランク軸が2回転720°CAする間に1回転する。カム角信号は、カム軸に固定されたカムの外周に3気筒エンジンに対応して、所定の角度位置として240°CAカムロータの角度としては120°の等角度間隔で形成されたカム歯210図2参照を、カム軸の回転に伴って図示しないカム角センサが検出することにより発生する。本実施形態では図2に示すように、カム歯210の30°CA後に各気筒の圧縮TDC圧縮上死点に達する構成になっている。ECU10は、クランク角信号の連欠け200および単欠け202と、カム歯210との組合せにより、カム歯210を検出した次の圧縮TDCが3気筒のうちのどの気筒に相当するかを判定する。連欠け200を検出する角度範囲内でカム歯210を検出すると、次の圧縮TDCは第2気筒であり、単欠け202を検出してからカム歯210を検出すると、次の圧縮TDCは第3気筒であり、連欠け200を検出する角度範囲内でカム歯210を検出しないと、カム歯210を検出したときの次の圧縮TDCは第1気筒である。ECU10は、クランク角信号の連欠け200および単欠け202と、カム歯210との組合せにより気筒を判別すると、図2に示すように、カム歯210を検出する毎に、次の圧縮TDCに該当する気筒を表わす気筒位置情報を気筒判別情報に基づいて更新する。エンジン回転位置エンジン始動時にカム角信号を検出すると、30°CA後にいずれかの気筒の圧縮TDCに達する。そこで、ECU10は、エンジン始動時に、クランク角信号の連欠け200および単欠け202と、カム歯210との組合せにより気筒を判別し、カム角信号を検出することにより30°CA後に該当する気筒の圧縮TDCになることを判定する。そして、クランク角信号を30°CA毎にカウントすることにより、該当気筒の行程位置であるエンジン回転位置を判定する。ECU10は、エンジン回転位置に基づいて、インジェクタによる燃料の噴射タイミング、点火プラグによる点火タイミングを、エンジン運転状態に適したタイミングに設定する。次に、ROM14等に記憶されている制御プログラムをCPU12が実行することにより、ECU10が実行するエンジン停止時処理およびエンジン始動時処理について説明する。エンジン停止時クランク角信号が正常のままエンジンが停止するときには、正常なクランク角信号とカム角信号とにより気筒判別を行った気筒判別情報に基づき、最後にカム角信号を検出したときの気筒位置情報をSRAM18またはEEPROM20に記憶する。クランク角センサの故障等によりエンジン運転中にクランク角信号に異常が発生し、図3に示すようにクランク角信号が出力されない場合、エンジン回転位置を判定できないので、点線で示すように燃料の噴射点火処理は中止される。その後、エンジンは惰性で回転し、停止する。クランク角信号は、例えば信号レベルがロウまたはハイに固定されている場合、異常と判定される。クランク角信号が異常になると、ECU10は、クランク角信号が正常時の気筒判別情報に基づいて、気筒位置情報をカム角信号を検出する毎に更新し、最後にカム角信号を検出したときの気筒位置情報をSRAM18またはEEPROM20に記憶する。図3では、気筒位置情報が第2気筒を表わしているときにクランク角信号が異常になり、燃料噴射を停止している。そして、次にカム角信号を検出し気筒位置情報を第3気筒に更新してからエンジンが停止している。エンジン始動時エンジン始動時にクランク角信号が正常の場合、ECU10は、正常なクランク角信号とカム角信号とにより気筒判別を行った気筒判別情報とクランク角信号とに基づいてエンジン回転位置を判定し、該当気筒に燃料を噴射して点火する。一方、エンジン始動時にクランク角信号が異常の場合、カム角信号を検出する毎に、240°CA間隔で発生するカム角信号の時間間隔をタイマ等で測定し、測定したカム角信号の時間間隔に基づいて、燃料を噴射、点火制御するために30°CA間隔で生成する疑似クランク角信号の時間間隔を算出する。疑似クランク角信号は、クランク角信号の代わりに30°CA毎にエンジン回転位置をカウントするための信号である。したがって、疑似クランク角信号は、エンジン始動時にスタータモータを回転させ、2回目のカム角信号を検出してから、カム角信号の時間間隔に基づいて生成できる。ECU10は、生成した疑似クランク角信号とカム角信号と気筒位置情報とに基づいて、エンジン回転位置を推定する。図4は、エンジン停止時にクランク角信号が異常であったときのエンジン始動時のタイムチャートである。図4においてエンジンを始動したときに記憶している気筒位置情報は第3気筒であり、カム角信号を検出する毎に気筒位置情報を1して更新する。更新する前の気筒位置情報が第3気筒であれば次の気筒位置情報は第1気筒に更新される。尚、エンジン停止時に最後にカム角信号を検出してから、エンジンが上死点を超えて停止するか、上死点を超えずに逆転して停止するかは判定できない。本実施形態では、最後にカム角信号を検出すると、エンジンは上死点を超えずに逆転して停止すると判断する。それ故、図4に示すように、エンジン停止時に最後にカム角信号を検出したときの気筒位置が第3気筒であれば、エンジンは第3気筒の圧縮上死点を超えずに停止したと判断する。したがって、エンジン始動時にクランク角信号が異常の場合、1回目のカム角信号を検出したときの気筒位置は第3気筒であり、2回目のカム角信号を検出したときの気筒位置は第3気筒の次の第1気筒であると推定する。そこで、2回目のカム角信号を検出し疑似クランク角信号を生成できるようになると、まず、第1気筒の圧縮上死点近傍で燃料を噴射して点火させる。このとき、例えばスタータモータで駆動しているときのカム角信号の時間間隔よりも短くなれば、2回目のカム角信号を検出したときに推定した気筒位置は第1気筒で正しかったことになる。噴射燃料に点火してもカム角信号の時間間隔が短くならない場合、2回目のカム角信号を検出したときの気筒位置は第1気筒ではなかったと判断する。つまり、エンジン停止時に最後にカム角信号を検出してから、エンジンは上死点を超えて停止したと考えられる。つまり、エンジンが停止したときの気筒位置は第3気筒の次の第1気筒であり、エンジン始動時に1回目のカム角信号を検出したときの気筒位置は第1気筒であり、2回目のカム角信号を検出したときの気筒位置は第2気筒であると考えられる。そこで、エンジン始動時に第1気筒の圧縮上死点であると推定して燃料を噴射して点火してもカム角信号の時間間隔が短くならない場合には、推定した気筒位置をずらし、第1気筒の次の第2気筒ではなく第3気筒の圧縮上死点であると推定して燃料を噴射して点火させる。これでカム角信号の時間間隔が短くなれば、適切な気筒で燃料を噴射して燃焼したと判断する。以後、カム角信号を検出毎に気筒位置情報を更新し、気筒位置情報とカム角信号と疑似クランク角信号とに基づいてエンジン回転位置を判定し、燃料を噴射して燃焼させることができる。次に、エンジン停止時処理のフローチャートを図5に示し、エンジン始動時処理のフローチャートを図6に示す。図5に示すフローチャートは常時実行され、図6に示すフローチャートはカム角信号検出時に実行される。図5および図6においてSはステップを表わしている。エンジン停止時処理エンジンが停止するとS400:Yes、ECU10は、エンジン停止時の気筒位置として、後述する図6で設定される今回気筒推定位置を記憶済みか否かを判定するS402。今回気筒推定位置をまだ記憶していない場合S402:No、ECU10は、エンジン停止時にクランク角信号が正常か異常かに関わらず、今回気筒推定位置をSRAM18またはEEPROM20に記憶するS404。エンジン始動時処理カム角信号を検出すると、図6のS410においてECU10は、クランク角信号が異常か否かを判定する。クランク角信号が正常の場合S410:No、ECU10は、クランク角信号とカム角信号とに基づいて気筒判別を行って今回の気筒位置を判定しS412、S412で判定した今回気筒判定位置を今回気筒推定位置として設定しS414、xflg1を1に設定しS416、S438に処理を移行する。xflg1は、クランク角信号が正常であったことを示す変数であり、エンジン始動時に初期値の0に設定される。クランク角信号が異常の場合S410:Yes、ECU10は、xflg1が1であるか否か、つまりクランク角信号が異常になる前に正常であったか否か、言い換えればエンジン運転中にクランク角信号が異常になったか否かを判定するS418。xflg1が1の場合S418:Yes、ECU10は本処理を終了する。これにより、S438が実行されず燃料の噴射が停止されるので、エンジンは停止する。xflg1が1ではない場合S418:No、ECU10はエンジン始動時からクランク角信号は異常であると判断する。そして、ECU10は、本処理において前回設定した今回気筒推定位置を前回気筒推定位置とし、前回気筒推定位置を1して更新し今回気筒推定位置とするS420。更新前の前回気筒推定位置が第3気筒の場合、今回気筒推定位置は第1気筒に設定される。エンジンを始動して最初にカム角信号を検出する場合には、前述したエンジン停止時処理でSRAM18またはEEPROM20に記憶した今回気筒推定位置を前回気筒推定位置とする。次にECU10は、前回噴射した燃料が正常に燃焼したか否かを判定するS422。クランク角信号が異常な状態で、前回噴射した燃料が正常に燃焼したか否かの判定は、カム角信号の時間間隔で判断する。例えば、エンジン始動時にスタータモータでエンジンを駆動しているときには、スタータモータで駆動しているときよりもカム角信号の時間間隔が短くなれば、前回噴射した燃料が正常に燃焼したと判定する。スタータモータによる駆動後は、カム角信号の時間間隔が所定の時間間隔以下であれば、前回噴射した燃料が正常に燃焼したと判定する。ただし、エンジン始動時に2回目のカム角信号を検出するまではS438の噴射、点火処理は実行されないので、S422の判定はNoになる。前回噴射した燃料が正常に燃焼していない場合S422:No、ECU10は、xflg2が0か否かを判定することにより、エンジン始動後に最初のカム角信号を検出したか否かを判定するS424。xflg2は、エンジン始動時に初期値の0に設定される。最初のカム角信号の検出の場合S424:Yes、ECU10は、xflg2を1に設定しS426、前回気筒推定位置を今回気筒推定値に設定するS428。そして、最初のカム角信号を検出するタイミングでは、まだ疑似クランク角信号を生成するためのカム角信号の時間間隔を測定できないので本処理を終了する。今回が最初ではなくS424:No、2回目のカム角信号の検出であればS430:Yes、ECU10は、xflg2を2に設定しS432、疑似クランク角信号を生成するためのカム角信号の時間間隔を測定できるので、S436に処理を移行する。2回目のカム角信号の検出であるか否かは、xflg2が1であるか否かで判定する。xflg2が1であれば2回目のカム角信号の検出であると判定する。エンジン始動後に今回が3回目以降のカム角信号の検出であればS430:No、ECU10は、エンジン始動後に前回推定した気筒位置で燃料を噴射したが正常に燃焼していないと判断し、S420で設定した今回気筒推定位置をさらに1して更新するS434。更新前の今回気筒推定位置が第3気筒の場合には第1気筒に設定する。そして、S436に処理を移行する。前回の噴射燃料が正常に燃焼している場合S422:Yes、ECU10は、今回が少なくとも3回目以降のカム角信号の検出であり、疑似クランク角信号を生成するためのカム角信号の時間間隔を測定できるので、S436に処理を移行する。S436においてECU10は、カム角信号の時間間隔に基づいて、30°CA間隔で生成する疑似クランク角信号の時間間隔を算出する。算出された疑似クランク角信号の時間間隔に基づいて、図示しないルーチンで疑似クランク角信号が生成される。S438においてECU10は、クランク角信号が正常時にはS414で設定した今回気筒推定位置とクランク角信号とに基づいてエンジン回転位置を判定し、クランク角信号が異常時にはS420またはS434で設定した今回気筒推定位置とカム角信号と疑似クランク角信号とに基づいてエンジン回転位置を推定し、所定のエンジン回転位置で該当気筒に燃料を噴射して点火させる。S438の燃料の噴射、点火処理において実際に燃料を噴射し点火する処理は、クランク角信号の正常時にはクランク角信号を30°CA毎にカウントするカウント値に基づいたエンジン回転位置において、あるいはクランク角信号の異常時に疑似クランク角信号が30°CA間隔で生成される場合には疑似クランク角信号のカウント値に基づいたエンジン回転位置において、その実行タイミングが設定される。以上説明した上記実施形態では、クランク角信号が正常時の気筒判別情報に基づいて、エンジン停止時の気筒位置をSRAM18またはEEPROM20に記憶する。これにより、エンジン始動時にクランク角信号が異常であっても、エンジン停止時の気筒位置とカム角信号とに基づいて今回燃料を噴射して点火する気筒を推定できる。そして、推定した気筒に燃料を噴射して点火してもカム角信号の所定の時間間隔以下にならない場合には、燃料を噴射して点火する気筒をずらす。これにより、エンジン始動時にクランク角信号が異常であっても適切な気筒に燃料を噴射して燃焼させエンジンを運転することができるので、エンジン始動時にクランク角信号が異常であっても、車両の退避走行が可能である。さらに、エンジン始動時にクランク角信号が異常の場合、カム角信号の時間間隔に基づいて疑似クランク角信号を生成することにより、疑似クランク角信号に基づいてエンジン回転位置を推定し、高精度に燃料を噴射して点火できる。また、エンジンが停止するときの気筒位置をSRAM18またはEEPROM20に記憶することにより、エンジンを停止してイグニションスイッチをオフにしてから再びオンにしても、記憶している気筒位置に基づいて燃料を噴射して点火できる。本実施形態では、図5の処理において、S404の処理が本発明の記憶手段が実行する機能に相当する。また、図6の処理において、S410の処理が本発明の異常判定手段が実行する機能に相当し、S420、S428およびS434の処理が本発明の気筒推定手段が実行する機能に相当し、S436の処理が本発明の信号生成手段が実行する機能に相当し、S438の処理が本発明の運転制御手段が実行する機能に相当する。また、ECU10は、本発明のエンジン制御装置に相当し、本発明の異常判定手段、記憶手段、気筒推定手段、運転制御手段および信号生成手段が実行する機能を実現する。[他の実施形態]上記実施形態では、エンジン始動時にクランク角信号が異常の場合、カム角信号の時間間隔に基づいて疑似クランク角信号を生成し、疑似クランク角信号と気筒位置とカム角信号とに基づいてエンジン回転位置を推定して該当気筒に燃料を噴射して点火させた。これに対し、疑似クランク角信号を生成せず、気筒位置とカム角信号とだけに基づいてエンジン位置を判定し、該当気筒に燃料を噴射して点火させてもよい。例えば、カム角信号を検出した直後に該当気筒に燃料を噴射して点火させてもよい。本発明は、ガソリンエンジンに限らず、ディーゼルエンジン等の内燃機関を駆動源とする車両に適用できる。また、エンジンの気筒数は3気筒に限るものではない。また、上記実施形態では、異常判定手段、記憶手段、気筒推定手段、運転制御手段および信号生成手段の機能を、制御プログラムにより機能が特定されるECU10により実現している。これに対し、上記複数の手段の機能の少なくとも一部を、回路構成自体で機能が特定されるハードウェアで実現してもよい。このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。