以下、添付図面に従って本発明に係る一実施例を詳細に説明する。
図1は本実施例装置(FLCD)を含む表示システムの構成を示す図である。図1において、1はFLCDインタフェース2を介して本実施例表示装置(FLCD)3を制御するとともに、FLCD3に表示データを供給するホスト、2は本実施例のFLCD3とホスト1側とのインタフェースを司るFLCDインタフェースであり、実際には1枚のインタフェースボードとしてホスト1内に装着されている。また、FLCD3はFLCパネル5の各種表示制御を行うと共に、FLCパネル5より表示データを表示させるパネルコントローラである。
なお、FLCDインタフェース2は、システムに固定的に接続されていても良いし、通常、ワークステーションやパーソナルコンピュータに代表される情報処理装置に設けられた拡張スロットと呼ばれる部分にカード(もしくはボード)として接続されるものであってもよい。そして、ホスト1とFLCDインタフェース2との間は、ISAインタフェース仕様、あるいはVLインタフェース仕様、PCIインタフェース仕様で接続することができる。また、FLCD3とFLCDインタフェース2とはケーブル7で接続されている。
本システムにおいては、ホスト1においてOSやアプリケーションをロードしそれを実行することになる。実行中の画面情報はFLCDインタフェース2内に設けられたVRAMに格納することでFLCD3に表示させることになる。なお、動作するOSやアプリケーションは何でも良く、例えばOSとしては米国マイクロソフト社のMS−WINDOWS(登録商標)があり、同OS上で動作するアプリケーションなどである。
本実施例の図1に示すシステムにおける画像の表示に関するデータの流れの概念を図2に示す。
アプリケーションもしくはOSが、FLCDインタフェース2内のVRAMに対して書き込みを行うと、FLCDインタフェース2はそれを2値化中間調処理(実施例ではED処理)を行い、それをFLCD3の1画面分の容量を有するフレームメモリ(各画素4ビット=R,G,B,I)に書き込む。このフレームメモリの内容をFLCD3に転送し、表示する。
つまり、一般の表示装置では、VRAMの内容がそのまま表示装置に転送されていたのに対し、本実施例におけるFLCDインタフェース2には、VRAMと、FLCD3との間に、フレームメモリを介在させている。
図3に、本実施例におけるFLCDインタフェース2の具体的なブロック構成を示す。
図示において、300はFLCDインタフェース2内に設けられ、当該インタフェース全体の制御を司るCPUである。このCPU300は、ROM308に格納されているプログラムに従って動作する。
301はVRAMであり、1画素に対してR,G,Bそれぞれ1バイト(8ビット)が割り当てられている(計3バイト=24ビット=約1600万色)。一般に、RGB各色要素に対して8ビットを与えたとき、それで再現されるカラー画像はフルカラー画像と呼ばれる。なお、上記VRAMは、1280×1024ドットサイズの画像を記憶可能な容量を有している(1280×1024×3≒4Mバイト)。
302はVRAM301に対するアクセスを制御するためのSVGAチップ(アクセラレータ)であり、ホスト1からの指令に基づいてVRAM301への描画(書き込み)及び読み出しを行うことが可能になっている。また、CPU300からの指令に基づいて図形等の描画を行う機能、及び後述する各機能を備えている。なお、VRAM301に対して各種図形の描画を行ったりするためのLSIは、ディスプレイコントロールチップとして広く用いられるものであり、それ自身は公知のものである。
303は書換検出/フラグ生成回路であって、SVGAチップ302がVRAM301に対する書き込み(描画処理)を行うとき、そのライトイネーブル信号(実際はチップセレクト信号も含む)をトリガにして、書き込みアドレスを検出し、何ライン目が更新されたかを検出し、それを保持する。
より詳細を説明すると、この書換検出/フラグ生成回路303は、SVGAチップ302がVRAM301に対して書き込みを行うときのライトイネーブル信号を活用し、そのとき出力されていたアドレスを不図示のレジスタにラッチする。そして、そのラッチされたアドレスデータから表示画面の何ライン目に対して書き込みが行われたのかを演算し(書き込みアドレスを1ラインのバイト数で割る回路で算出できる)、書換えられたラインに対応する領域フラグに“1”をセットする。
本実施例におけるFLCD3の画面全体のライン数は1024(0ライン目〜1023ライン目)であり、各領域は32ラインを1単位としているので、領域フラグは合計32(=1024/32)ビットである。すなわち、この32ビットのフラグにおける各ビットは、0〜31ライン目、32〜63ライン目、…、992〜1023目の各領域に対する書き込みがあったか否かを保持する。
1ライン毎に書換えられたか否かを保持するのではなく、ある程度のライン数を単位としているのは、一般に、表示画像を変更する際には1ラインのみの書換えはほとんどなく、複数ラインにまたがっているためである。なお、1領域に対して割り当てるライン数は32に限定されるものではなく、これ以外であっても良い。ただし、あまり少ないと領域フラグのビット数が多くなる。また、後述する部分書換え処理の指示回数もその分だけ多くなって、オーバーヘッドが発生する割合が高くなる。また、割り当てるライン数が大きすぎると、部分書換えの処理の不要部分が多くなる可能性が高くなるという不具合も発生する。
また、説明は後述するが、FLCD3の全表示可能は1280×1024であるが、それ以外のドット数でも表示できるようにするため(例えば1024×768、600×480など)、書換えラインを算出するために使用する1ラインの情報量はプログラマブルになっている。表示ドット数の変更は、ホスト側より指示して変更することが可能に構成されている。
以上説明した書換検出/フラグ生成回路303は、VRAM301に対して書き込んだ32ライン単位の領域に対して書換えられたことを検出すると、その領域フラグの内容をCPU300に通知する。また、後述するように、CPU300からの要求に応じて、領域フラグをゼロクリアすることも行う。
304はラインアドレス生成回路であって、CPU300から指示されたラインの先頭アドレス及び、そのラインからのオフセットライン数を受け、SVGAチップに対して、データ転送のためのアドレス及びその制御信号を出力する。SVGAチップ302は、このアドレスデータ及び信号を受け、該当するラインから指示されたのライン数の画像データ(RGB各8ビット)をデガンマ回路309に出力する。
このデガンマ回路309は、ルックアップテーブルで構成され、その内容はCPU300からの指示に基づいて自由に変更可能になっている。デガンマ回路309の役割の詳細は後述するが、FLCD3に設けられた色彩調整スイッチ108で設定された内容に従い、その表示画像のコントラストを変更するためのものである。デガンマ回路309で補正された画像データは、2値化中間調処理回路305に出力される。
2値化中間調処理回路305は、デガンマ回路309を介して送られてきたSVGAチップ302からの画像データ(1画素当たりRGB各8ビット)を誤差拡散法に基づいてRGB及び輝度信号I(各1ビットで計4ビット)に量子化する。なお、RGB各8ビットからRGBを各1ビットに2値化するとともに、輝度の高低を示す2値信号Iを生成する技術は既に本願出願人が提案している(例えば、特願平4−126148号)。また、この2値化中間調処理回路305には、その処理を遂行するため、誤差拡散処理で必要なバッファメモリが内蔵されている。
なお、この2値化中間調処理回路305は、CPU300からの指示に基づいて、2値化する場合のパラメータとなる誤差拡散テーブル(パラメータ)、出力するライン位置及びライン数を受け、それに従って出力する。誤差拡散テーブルを固定とはせず、CPU300から動的に設定できるようにしたのは、例えば、情報処理装置側のCPU(不図示)からの指示に基づいて配色などを変更できるようにするためである。
306は、FLCD3に表示する画像(1画素につきRGBI各1ビットのデータ)を記憶するフレームメモリである。先に説明したように、実施例におけるFLCD3の最大表示可能サイズは1280×1024ドットであり、各ドットは4ビットであるので、1Mバイト(計算では640Kバイト)の容量を有している。
307はフレームメモリ306の書き込み及び読み出し、そして、FLCD3への転送を制御するフレームメモリ制御回路である。具体的には、2値化中間調処理回路305から出力されたRGBIのデータをフレームメモリに格納すると共に、CPU300により指示された領域をデータ転送バス310(内、データバスは16ビット幅であって4画素分のデータを一度に送ることが可能)を介してFLCD3に出力する処理を行う。また、あるまとまったライン数の画像データをFLCD3に転送処理している場合を除き(すなわち、CPU300から転送指示された画像データの転送が完了して、次の転送指示がない場合に)、FLCD3からデータ転送リクエストを受けた場合、その旨をCPU300に割り込み信号として通知する。なお、FLCD3に転送する際のデータフォーマットは、RGBIの計4ビットを一組としており、フレームメモリ306にもこの形式でデータが格納されている。
さらに、このフレームメモリ制御回路307は、2値化中間調処理回路305からの画像データをフレームメモリに格納完了した場合にも、その旨の割り込み信号をCPU300に出力する。そしてまた、CPU300から指示されたラインの画像データの転送が完了した場合(複数ラインの転送の指示があれば、指示されたライン数の画像データの転送が完了した場合)にも、その旨の割り込み信号をCPU300に出力する。
なお、CPU300に対する割り込みは、上記以外にもある。例えば、FLCD3とのコミュニケーション専用に設けられたシリアル通信線(例えばRSー232C仕様の通信線等)311からデータを受信した場合である。これについての詳細は後述する。
さて、上述した構成において、今、ホスト1がOS或いはアプリケーション等の実行プログラムから文字や図形等の描画要求を受けると、それに対するコマンドあるいはイメージデータをFLCDインタフェース2内のSVGAチップ302に出力する。SVGAチップ302は、イメージデータを受信した場合にはそのイメージをVRAM301の指示された位置に書き込み、図形データ等の描画コマンドを受けるとVRAM301に対して対応する位置にその図形イメージを描画する。すなわち、SVGAチップ302はVRAM301に対して書き込み処理を行う。
書換検出/フラグ生成回路303は、上述したように、SVGAチップ302の書き込みを監視している。この結果、書き込みの行われた領域に対するフラグをセットしていくと共に、それをCPU300に知らせる。
CPU300は、書換検出/フラグ生成回路303に格納されている領域フラグをリードすると共に、書換検出/フラグ生成回路303に対してその領域フラグをリセットし、次回の書換えに備える。なお、このリセット動作は、読み出しと同時に行うようハード的手段を用いても良い。
さて、CPU300はリードした領域フラグから、どのビットがセットされているか、すなわち、どの領域(複数ある場合もある)に対して書換えが行われたかを判断する。そして書換えが行われたと判断した領域をVRAM301から2値化中間調処理回路305に転送すべく、その転送開始ラインの先頭アドレス(通常は画面左隅のアドレス)と、その位置から何ラインの画像を転送するかを示すデータを、ラインアドレス生成回路304に対して出力する。
ここで注目する点は、VRAM301の例えば10番目の領域、すなわち、320〜351ラインの領域に書き込みが行われたことを検出した場合、ラインアドレス生成回路に、320ライン目の先頭画素のアドレスとそこから32ライン分の転送を行わせる指示を行うのではなく、320ライン目より5ライン前のライン(315ライン目)の先頭画素アドレスからの転送を行なわせる。つまり、315ライン目〜351ラインに対しての転送指示を行なわせる。
この理由は以下の通りである。一般に誤差拡散処理を行う場合、発生した誤差を未処理の画素群に拡散するため、重み付け要素値(配分の比率を示す値)を有する2次元的なマトリックスを用いる。発生した誤差は、次々と伝播していく。ここで、2つの画素A,Bを想定し、画素Aの位置で2値化処理したときに発生する誤差の画素B(未処理の画素)の位置に与える影響を考える。
この場合、B画素に与えるA画素で発生した誤差の影響は、AB画素間の距離が大きいほど小さくなる。換言すれば、その距離がある程度あれば、B画素位置に与えるA画素からの誤差の影響は無視できるほど小さい。上記5ラインは、かかる理由を根拠にしている。
なお、誤差の影響を無視できるための距離は、誤差拡散のマトリックスのサイズ及び重み付け要素値に依存して決まる。また、本実施例における2値化中間調処理回路305での誤差拡散処理が画像の左上隅から右下隅に向かうものとしているのは、上記を考慮した結果である。
また、CPU300は、2値化中間調処理回路305に対しては2値化中間調処理結果のラインデータのどの部分を出力するのかを示す指示を与える。
すなわち、先に示したように、VRAM301の320ライン〜351目の領域に対して書き込みがなされた場合には、315〜351ライン目のデータが2値化中間調処理回路305に転送されるが、CPU300は2値化中間調処理回路305に対してはライン320〜351ラインのデータを出力するよう指示する。
以上の結果、2値化中間調処理回路305からは、319ライン目以前の未変更部分の画像の影響を受けた、320〜351ラインのデータをフレームメモリ制御回路307に出力することになる。
フレーム制御メモリ回路307は、CPU300からの指示に基づいて、2値化中間調処理回路305より出力されてきたライン単位のデータ(1画素につき4ビット)を対応するフレームメモリ306に書き込んでいく。すなわち、CPU300は、2値化中間調処理回路から出力されるライン数及びその先頭のラインが画像の何ライン目であるのか知っており、フレームメモリ制御回路307に対し、入力するラインのアドレス(フレームメモリ306に対する書き込み先頭アドレス)及び連続して何ライン分のデータを書き込むのかを示すデータをセットする。
こうして、フレームメモリ306には、書換えられた(更新された画像)の部分のみの画像、しかも書換えられていない画像との接合部分が自然な画像が書き込まれることになる。なお、フレームメモリ制御回路307は、CPU300から指示された領域に対する、2値化中間調処理回路305から転送されたデータのフレームメモリ306への格納を完了すると、先に示した割り込み信号を発生する。
ところで、本実施例における2値化中間調処理回路305の処理速度は、1画面分にして現時点では約1/30秒である。これはCRT等の垂直同期信号が60Hz程度であるのに対して、約半分である。しかしながら、画面全体が書換えられることは、通常のアプリケーションを使用している限りは希である。換言すれば、2値化中間調処理回路305が処理するライン数は実際はそれほど多くはなく、必然、処理量が少ないから画面全体として見た場合の処理が完了するまでの期間は、CRTの表示更新期間と比較してさほど変わらなか、半分の領域以下であればむしろCRTより速い。
また、フレームメモリ制御回路307は、詳細を後述するCPU300からFLCD3に対する出力指示も受ける。出力指示は、FLCD3へどのライン(ラインの先頭アドレス)から何ライン分(連続ライン数)を転送するかを指示するが、フレームメモリ制御回路307は、この転送が完了した場合にもCPU300に対してその旨を通知する割り込み信号を発生する。これは先に説明した通りである。
以下、フレームメモリ制御回路307がFLCD3に転送するデータフォーマットは、
書き込みラインアドレス+RGBI+RGBI+…RGBI
である。
FLCD3はかかるデータを受け、その先頭のアドレスに従って、その直後から続くデータをFLCD3の駆動のために使用する。
2値化中間調処理回路305からの書き込みが複数の不連続の領域の処理結果を出力することもあり、且つ、フレームメモリ制御回路307に対するFLCD3への転送指示は、前回のFLCDへの転送の完了の通知を受けてからであるので、フレームメモリ306に書き込まれた画像データが直ちに、FLCD3に出力される画像データとなるとは限らない。すなわち、上記の如く、フレームメモリ306を介して処理することで、VRAM301への書き込みと、FLCD3への出力はまったく非同期に処理することになる。
次に図4乃至図6を参照して図1に示すFLCD3の詳細構成を説明する。図4は本実施例のFLCD3の概略構成を示す図、図5は本実施例のFLCD3の概観を示す図、図6はFLCDのホスト側(FLCDインタフェース側)との接続部分を示す図である。
図4において、101は詳細を後述する主要各種制御を司るNFXコントローラ、102はFLCパネル150のU−セグメントの表示素子の信号ラインを駆動するためのU−SEGドライバ、103はFLCパネル150のL−セグメントの表示素子の信号ラインを駆動するためのL−SEGドライバであり、この2つのドライバ102、103で表示素子の1つおきのセグメントを交互に駆動する。104はFLCパネル150の表示素子のコモン信号ラインのラインのドライバであるCOMドライバである。
本実施例のFLCパネル150の表示画素は、表示素子の例えばマトリクスの横方向の駆動信号線であるセグメント駆動信号とマトリクスの縦方向の駆動信号線であるコモン駆動信号が共に駆動された時に付勢状態となる。そして、上述したようにセグメント駆動信号は2つのドライバ回路102、103で駆動するように構成されており、FLCパネルのセグメント信号線を1つおきに交互にU−SEGドライバ102とL−SEGドライが103とで駆動するようにして回路の分散実装を行っており、発熱量の均等化等を図っている。
また、105はFLCパネル面に直接接触するように配設されているFLCパネル150の温度を測定する温度センサ、106は輝度調整を行うための輝度調整トリマ、107は画質調整を行うための画質調整トリマ、108は色彩を調整するための色彩調整スイッチ、109はFLCパネル150の状態を報知する状態報知手段であるLEDである。本実施例においては、図5に示すようにFLCD3の右下部分に配設されている。
120は本実施例のFLCD3の各種駆動電源を生成するスイッチング電源であり、電源供給の制御を行う電源スイッチ122を介して一般商用電源121より電力の供給を受けることができる。なお、この電源スイッチ122も図5に示すようにFLCD3の右下部分に配設されている。なお、本実施例では、世界各国での使用が可能なように、85V〜264V(48Hz〜62Hz)迄の各種電圧の交流電源で動作可能に構成されている。
130はインバータであり、本実施例のFLCパネル150に光を照射する蛍光ランプ(熱陰極蛍光ランプ)131〜134を駆動する。
本実施例では以上の構成を備えるFLCD3は、FLCパネルを用いているために非常に奥行きの薄い表示装置とすることができる。そして、本実施例では、(ホスト1及び)FLCDインタフェース2との接続はインタフェースケーブル11を介して行っており、FLCD3とは、図6に示すように表示装置背面に設けられた受けコネクタ15にケーブル側のコネクタ12を固定ねじ13で固定することにより行われる。即ち、本実施例では、単にこの1本のケーブル11を接続するのみで表示装置とインタフェースユニットとを接続することができる。
図4に示すFNXコントローラの詳細構成を図7に示す。
図7において、160は例えばマイクロコンピュータ等で構成することも可能なシステムコントローラであり、システムコントローラ160は、本実施例FLCD3の後述する各種表示制御を司ると共に、FLCDインタフェース2を介して受け取った表示データをドライバコントローラ190を介してFLCパネル150へ表示させる。なお、このシステムコントローラ160はROM161及びRAM162を内蔵しており、このROM161に格納された後述する制御手順に従い各種制御を司る。
そして、本実施例のシステムコントローラ160の各種ステータス及びRAM162の記憶内容は、FLCDインタフェース2を介してホスト側で読み出すことが可能であり、一部は直接書き込むことも可能に構成されている。これらの詳細については後述する。
また、171は温度センサ105よりのよりの検知温度を対応するアナログ信号に変換してシステムコントローラに供給する温度インタフェース、172はインバータ130を制御して熱陰極蛍光ランプ131〜134(バックライト)の光量を制御するバックライトコントローラ、173は液晶駆動電圧レギュレータ183を制御してFLCパネル150の画質を制御するVOPコントローラ、174は輝度調整トリマ106、画質調整トリマ107の設定値をシステムコントローラ160に供給すると共に、色彩調整スイッチ(SESW)108の設定常態をシステムコントローラに供給するトリマインタフェースである。
また、181は液晶駆動電源スイッチ182の駆動電源供給を制御する電源スイッチコントローラ、182はFLCパネル150への駆動電源の供給を制御する液晶駆動電源スイッチ、183は液晶駆動電圧レギュレータである。
ここで、FLCDインタフェース2との入出力信号について説明する。BUSY信号はホスト側への画像データ要求信号、AHDLは、ホスト側よりの走査アドレス/画像データ識別信号であり、”H”で走査アドレス、”L”で画像データを示している。PD0〜PD15は16ビット幅のアドレスつき画像データ、FCLKはホスト側よりの画像データの転送クロック、SINはホスト側よりのシリアル通信データ、SOUTはFLCD3よりホスト側へのシリアル通信データ、POWERONはFLCDインタフェース2に電源が投入されたことを示すパワーON信号、RESETはホスト側よりのFLCDリセット信号、ENABLEは本実施例に特有の信号であり、FLCDインタフェース2との間のコネクタ接続信号であり、負論理構成となっている。図6に示すケーブル11が外れたような場合にはこの信号がローレベルとはならず、FLCD3側で容易にケーブル外れを認識することができる。そして、このケーブル外れを認識した場合には、以後の表示データの受信は行われず、表示画面の更新も行われない。この信号がない場合における、表示データがこないことに伴う詳細を後述する省電力動作モードであるスリープモードに移行したのみでは、ユーザはこの状態を正確に認識することができず、なんらの対処も行われない状態が続く虞がある。
しかしながら、本実施例ではこのケーブル外れを正確に且つ迅速に知ることができ、上述したLED109の表示態様を上記省電力動作モードとは異なるものとすることにより、容易にケーブル外れなどの現在の状態を認識することができ、不具合を解消する処理を迅速に実行可能となっている。
図7における画像データの入出力に関する部分の詳細構成を図8に示す。
画像データの入出力は主にドライバコントローラ190及びFLCパネル150ドライバ102〜104によりFCLパネルに供給され、表示される。
ドライバコントローラ190は少なくとも以下の構成を備える。システムコントローラ160よりの画像データ(PD0−15)を少なくとも1ライン分記憶可能な2つのバッファ521、522、このバッファ521、522の切り替え制御を行う入力側のスイッチ523、出力側スイッチ524を備え、切り換えて表示のためのセグメントドライバ102、103への表示画像データID0−7U/Lを出力する。
また、これらのスイッチの制御を含む各種のFLCパネル150駆動タイミング信号を生成するタイミングコントローラ525、FLCDインターフェース2より送られてくる表示データを表示させるべきラインアドレスを保持するとともに、システムコントローラ160より内容を読み出し可能な受信アドレスレジスタ526を備える。
同じく、システムコントローラ160より内容を書き込み可能であり表示データに対応するアドレスデータを保持する走査アドレスレジスタ527、システムコントローラ160よりの表示制御実行開始を指示するディスプレイスタート(DST)が書き込まれるDSTレジスタ528より構成されている。DSTレジスタ528にDSTが書き込まれるとFLCパネルの1走査線の書き込み動作が開始される。
また、U−SEGドライバ102は、バッファ(521又は522)より送られてくる表示データの内U−SEGに対応する1つおきのデータを取り込むためのU−SEGラッチ回路531、U−SEGラッチ回路531でのラッチ表示データをタイミングコントローラ525よりの駆動タイミング信号に従って記憶するU−SEGメモリ532、メモリ532よりの表示データに従ってU−SEG信号を駆動するドライバ回路533より構成されている。
また、L−SEGドライバ103は、バッファ(521又は522)より送られてくる表示データの内L−SEGに対応する1つおきのデータを取り込むためのL−SEGラッチ回路538、L−SEGラッチ回路538でのラッチ表示データをタイミングコントローラ525よりの駆動タイミング信号に従って記憶するL−SEGメモリ537、メモリ537よりの表示データに従ってL−SEG信号を駆動するドライバ回路536より構成されている。
また、COMドライバ104は、走査アドレスレジスタ527よりのアドレス情報をタイミングコントローラ525よりのタイミング信号に従って格納するアドレスデコーダ541、アドレスデコーダ541の内容をタイミングコントローラ525よりのタイミング信号に従って格納するアドレスメモリ542、アドレスデコーダ541に格納されたアドレスに従い走査選択信号の前半を選択されたコモン信号ラインに出力するとともに、アドレスメモリ542に格納されたアドレスに従い走査選択信号の後半を選択されたコモン信号ラインに出力するドライバ回路543より構成されている。
次に図4に示すスイッチング電源120の詳細構成を図9に示す。
スイッチング電源120は、電源スイッチ122を介して受け取った商用電源121よりの電力に対して、まずノイズフィルタ123により進入するノイズ成分を取り除き、その後スイッチングレギュレータ用制御回路126及びトランス126を含むスイッチング回路124により所定の高周波信号を生成して5端子レギュレータ127及びロジック回路用の+5V電源回路128、及び熱陰極蛍光ランプ131〜134より構成されるバックライト駆動用の電源回路129に供給している。なお、5端子レギュレータ127は、GND端子を基準に+35V、+26V、+17V、+9Vの各直流電源を生成する4つの回路127a〜127dより構成されている。 また、図9における165は、AFC検知回路であり、スイッチング電源120に供給されている電力がストップした時にこれを検出するための回路であり、このAFC回路165よりの出力信号(AFC信号)は、システムコントローラ160への緊急用の割り込み信号となっている。
本実施例の表示装置は環境温度の変動に関わらず常に良好な表示品質を得るために、FLCパネル150に温度センサ105を設け、検知された温度に基づいて駆動電圧と1走査線駆動時間(1H)及び駆動波形に最適値を選びFLCパネルの駆動制御を行う。この温度補償に関する部分の構成を図10に示す。
本実施例においては、温度センサインタフェース171を通して温度センサ105の検知温度に対応するアナログ信号をアナログデジタル変換器904によりデジタル信号による温度情報に変換する。また、トリマインタフェース174を通して画質調整トリマからのアナログ信号をアナログデジタル変換器905によりデジタル信号へ変換し温度情報に加えて微調整する。この調整された温度情報に基づき温度補償テーブルを検索して駆動電圧を決定するVopコードと、1H時間を決定する1Hコードを得る。
VopコードはVopコントローラ173を構成するデジタルアナログ変換器に供給され、アナログ信号DAOUTに変換される。液晶駆動電圧レギュレータ183はアナログ信号DAOUTに基づいて液晶駆動電圧V1、V5、V3、V4、V2を生成する。
1Hコードはシステムコントローラ内のタイマユニットにセットされ液晶駆動の基本クロックを生成する。この基本クロックはドライバコントローラ190に供給され、さらにCSCLKとしてU−SEGドライバ、L−SEGドライバ、COMドライバへ供給される。
駆動波形は、アナログデジタル変換器904より出力され画質調整トリマにより調整される前の温度情報に基づいて波形設定部903により決定される。即ち、ユーザによる画質調整トリマの操作には依存しない。波形決定部903では予め定められた波形から温度情報に基づいて最適な波形が選択され、波形データとしてドライバコントローラ190にセットされる。波形データはCSCLKに同期してU−SEGドライバ、L−SEGドライバへはSWFD0−3として、COMドライバへはCWFD0−3として供給される。後述する通り本実施例の駆動波形はCSCLK5クロックで1Hを構成し、1Hの時間はCSCLKのパルス幅の可変によりFLCパネルの温度に最適な値に調整される。
なお、このドライバコントローラ190の動作については後述する。
次に、以上の構成を備える本実施例におけるFLCDインタフェース2とFLCD3との間の表示データ及び各種制御命令等の授受について以下に詳説する。
先に説明したFLCDインタフェース2からの、
書き込みラインアドレス+RGBI+RGBI…
のデータはデータ転送バス310を介して転送され、その先頭の書き込みアドレスは受信アドレスレジスタへ、それ以降の画素データRGBIRGBI…のデータはバッファ521,522のいずれか一方へ格納される。システムコントローラ160は受信アドレスレジスタ526のアドレスを読み走査アドレスレジスタ527へ書き込んだのち、DSTレジスタ528へ1走査線の駆動開始を指示する。また、このシステムコントローラ160は、温度センサ105より得た温度に依存した時間間隔でFLCDインタフェース2に対してデータ転送要求信号を発生する。
従って、FLCDインタフェース2のフレームメモリ制御回路307は、例えばCPU300から32ライン分の転送要求を指示されている場合、FLCD3よりのデータ転送要求を受ける毎に先に示したフォーマットに従って1ライン単位に出力する。こうして、指示された全てのラインの転送が完了し、次の転送要求指示を受けていない場合であって、なおかつ、FLCD3からデータ転送要求信号を受けると、その旨をCPU300に割り込み信号として通知する。
CPU300はこの通知を受けると、部分書換えした画像の未転送データがあるか判断し、もしなければ、フレームメモリ306内に格納されている全画面の画像データをインタレース方式で、FLCD3に転送指示させる。すなわち、この割り込み信号を受信する度に、例えば、1ライン目、3ライン目…1023ライン目、2ライン目、…1024ライン目という順序で、1ラインずつ転送を行なわせるべく、フレームメモリ制御回路307に指示を与える。なお、実際には、FLCD3からの転送要求信号が来た場合には、次の転送要求信号が来た場合に転送させるラインの指定を行う。FLCD3側の制御については後述する。
上記如く、画像に変動がない場合に、インタレース転送する理由は以下の通りである。
本実施例で使用したFLCD3は、先に説明したように、表示画像を記憶保持する機能を有するので、理論上、変更箇所のみの画像の転送を行えば良い。しかし、全く変更がなくリフレッシュすることがない画像と、変更があって新たに駆動表示された(部分書換えられた)画像との間での輝度に微小ならが差が発生することがわかったからである。
すなわち、本実施例におけるFLCD3は、表示画像の部分的な更新があった場合には、その更新された部分のみでFLCDの表示を更新するが、表示画像に対する変化がない場合には、フレームメモリ306内の全画像をインタレース的にFLCD3に転送する処理を行う。各ラインを順次転送するのではなく、インタレース転送する理由は、一般に、液晶表示器はその応答が早くないので、見かけ上の表示画像の更新を早くするためである。
以上説明した処理内容に従って、FLCDインタフェース2内のCPU300の動作処理手順を、図11を用いて説明する。
以下で使用する各フラグの意味は次の通りである。
A)量子化完了フラグ:
フレームメモリ制御回路307が2値化中間調処理回路305から出力されてきた画像データをフレームメモリ306に格納し終えたか否かを示す情報を保持するフラグ。
B)転送完了フラグ:
フレームメモリ制御回路307が、CPU300によって指示された位置の画像のFLCD3への転送が完了したか否か示す情報を保持するフラグ。
C)転送要求フラグ:
FLCD3が次のデータ転送要求を要求してきたか否かを示す情報を保持するフラグ。ただし、この転送要求フラグは、フレームメモリ制御回路307が、CPU300で指示されたライン数分の転送が完了していない限りはセットされない(なぜなら、この間の転送要求信号は、フレームメモリ制御回路307の転送タイミングに使用しており、その転送要求信号に対する割り込み信号は発生しないからである)。
さて、今、書換検出/フラグ生成回路303からリードした領域フラグ(32ビット)が、図示のようになっているものとする(タイミングT1)。
この場合、CPU300は、その先頭から調べて最初に“1”にセットされている領域位置(以下「領域NO」という。)“2”を検出できる。そこで、この領域NOに従ってフレームメモリ制御回路307、2値化中間調処理回路305、ラインアドレス生成回路304の各々にセットするアドレス及びライン数を演算し、その順番にセットする。
フレームメモリ制御回路307を最初にした理由は、各回路のイネーブル信号(図3参照)がイネーブル状態になった場合に、その動作を行うからであり、逆にセットしてしまうと下位の回路の準備ができていないにも拘らず上位の回路が出力してしまうからである。
SVGAチップ302は、最後のラインアドレス生成回路304にアドレス及びライン数のセットを行うと、それをトリガとして下位の2値化中間調処理回路305のイネーブル信号をセットしてデータの転送を始める。
2値化中間調処理回路305は、これに従いRGB各8ビットに基づいて誤差拡散処理によりRGBI各4ビットの画像データを生成するが、CPU300によって設定されたライン(5ライン目)に到達してはじめて下位のフレームメモリ制御回路307へのイネーブル信号をセットし、処理結果を出力する。
フレームメモリ制御回路307は、2値化中間調処理回路305から入力した処理済みの画像データを、CPU300から指示されたフレームメモリ306のアドレス位置から順次格納していく。こうして、フレームメモリ制御回路307がその格納処理が完了すると、CPU300に対して格納完了を意味する割り込み信号を出力する。CPU300は、この割り込み信号を受けて量子化完了フラグをセットし(タイミングT2)、フレームメモリ制御回路307に対してFLCD3への転送指示(アドレス及びライン数のセット)を行う。
また、CPU300は、領域フラグ中の領域NO“2”以外にセットされている領域NOがあるか否かを検索し、もし領域NO“2”以外にセットされている領域NOがあればその部分に対しても同様の処理を行なわせる。図示の場合、領域NO“4”に関しても、書き込みが確認されているから、領域NO“4”に関しても上記のフレームメモリ306への格納までの処理を行なわせる。そして、この格納処理が完了すると(タイミングT3)、それ以降の領域フラグ中のセットされている領域NOに対して同様の処理を行っていく。
この過程で、フレームメモリ制御回路307から先に転送指示された領域NO“2”の転送が完了した旨の割り込みを受けると、領域NO“2”に対する転送完了フラグを1にセットし(タイミングT4)、量子化完了フラグが“1”になっている他の領域NOがあるか否かを判断する。そして、量子化完了フラグが“1”になっている他の領域NOがあれば、FLCD3への転送を行うよう指示する。
なお、タイミングT4とタイミングT3のいずれが早く発生するかは、処理するデータ量に依存し、不定である。
こうして、転送完了通知を受け、その時点で次に転送すべきデータがなくなると、FLCD3からのデータ転送要求信号に基づく割り込み信号をフレームメモリ制御回路307が出力してくる(タイミングT5)。これを受け、CPU300は、書換検出/フラグ生成回路303の領域フラグのリード処理を行う。
そして、このときリードした領域フラグ中に“1”のビットがないとき、先に説明したように、フレームメモリ306のインタレース転送(1ラインずつ飛び越し転送)を行うべく、転送する1ラインのアドレスをセットする。この転送が完了すると、フレームメモリ制御回路307は、FLCD3からデータ転送要求信号を受けることになるが、その時点で転送が1ラインのデータ転送が完了しているから、CPU300に割り込みをかける。
CPU300は、この割り込みがかかる度に、書換検出/フラグ生成回路303から領域フラグをリードするが、全てのビットが“0”の間は、先のインタレース転送を継続して処理を行うことになる。
以上説明した様に本実施例によれば、図11における領域フラグを読み出し、その中に1つでも“1”がセットされている領域NOがある場合には、あたかも領域フラグが図示のフラグテーブルを右方向にシフトしていくかの如く各処理を行なう。
次に、本実施例における上記FLCDインタフェース2の処理を実現するためのCPU300の処理の例を図12〜図15のフローチャートに従って説明する。以下の制御手順は、例えばROM308に格納されている。
図12は、本実施例のFLCDインタフェース2内のCPU300のメイン処理ルーチンを示すフローチャートである。
FLCDインタフェース2に電源が投入されると、図12の処理に移行する。そしてまずステップS1で、FLCDインタフェース2内の各回路の初期化等の一連の初期化処理を実行する。このとき、FLCD3に対しても、Unit Start等のコマンド発行及びそれに対するFLCD3よりのステータス受信の処理も行う。
次にステップS2でホスト1のバス102(図1の符号6)を介して表示ドット数等、表示に関する状態指示があったか否かを判断する。表示ドット数等、表示に関する状態指示があればステップS3に進み、指示された処理、例えば表示ドット数にするべく、書換検出/フラグ生成回路303を初めとする各回路305〜307に対する環境情報としてセットする。
一方、ステップS2で、ホスト1からの指示がなかったと判断した場合にはステップS4に進み、現在の状況を探索する。そして続くステップS5で現在の状況に応じた処理を行う。例えば、FLCD3の表示能力の変更などがある。
本実施例におけるFLCD3は、1280×1024ドットの表示能力を有しているが、例えばホスト1より1024×768にするよう指示を受けた場合には、画像はFLCD3の表示画面の中央に表示される方が、操作者に自然な感じを与えるので好ましい。そこで本実施例ではステップS3における処理において、これを実現するための表示画面の変更処理等を行っている。例えば、書換検出/フラグ生成回路303は、書換えられたライン位置を特定するときに、書換えられたアドレスを、1ライン分のバイト数で除算することにより上記処理を行っている。なお、この場合には、この1ライン分のバイト数は、表示ドット数によって決まる。
また、同時に、FLCD3側でも対応した処理を行う必要があり、このためにその旨のコマンドをFLCDインタフェース2よりシリアル通信線311を介してFLCD3に発行し、互いの動作の対応をとる。
なお、以下の説明では、1280×1024ドットの表示指示を受けた場合を説明する。
フレームメモリ制御回路307は、上述したようにCPU300から指示されたライン数の画像のFLCD3への転送指示を受けると、FLCD3から送られてくるデータ転送要求信号に同期して転送を行うが、CPU300からFLCD3への転送指示を受けていない場合、或いは、指示された転送が完了した場合には、FLCD3からこのデータ転送要求信号を受けると、それをそのままCPU300に対する割り込み信号として出力する。一方、フレームメモリ制御回路307は、一連の転送要求を受け、その転送を行っている最中にFLCD3からデータ転送要求を受けている場合には、その信号をCPU300に出力しない。
以下、この割り込み信号を受けた場合のCPU300の処理、すなわち、送るべきデータの転送が完了した後の割り込み処理を図13を参照して説明する。図13は、フレームメモリ制御回路307からデータ転送要求信号を受けたときに起動するCPU300における割り込みルーチンのフローチャートである。
フレームメモリ制御回路307からデータ転送要求信号を受けると、まず、ステップS11で書換検出/フラグ生成回路303より領域フラグ(32ビット)をリードすると共に、書換検出/フラグ生成回路303の内部のリセットするべき領域フラグをゼロクリアする。
続いてステップS12でリードした領域フラグ中に、セットされているビットがあるか否か、つまり、書換えられた部分があるか否かを判断する。ここで、セットされているビットがなく、全てのビットが“0”であると判断した場合にはステップS13に進み、インタレース転送を行う処理を行う。即ち、VRAM301に対して何等書き込みが検出されていない場合には、FLCD3からデータ転送要求を受ける度にインタレース転送(フレームメモリ306から1ラインのデータを、且つ、飛び越して転送する旨の指示)を行うことになる。そして当該処理を終了してリターンする。
一方、ステップS12でリードした領域中に、セットされたビットが存在する場合にはステップS14に進み、各回路へセットするアドレス及びライン数を演算する。なお、領域NO10〜12(289〜384ラインの領域)に対するビットが共にセットされている場合には、これらを1つの領域として、アドレス及びライン数を演算する。
ステップS14における演算が完了すると、処理はステップS15〜S17に移行し、フレームメモリ制御回路307、2値化中間調処理回路305、ラインアドレス生成回路304にそれぞれ対応する情報をセットし、2値化中間調処理(量子化処理)を開始させる。上述したように、ラインアドレス生成回路304には書換えられた領域の先頭ラインよりも5ライン前のアドレスをセットする。ただし、領域NO“1”が書換えられた場合には、その5ライン前は存在しない。この場合には、領域NOから割り出されたアドレスをそのまま活用する。そして当該処理を終了してリターンする。
以上の処理の結果、領域フラグをリードし、その中にセットビットが存在する場合の最初の量子化処理が開始される。
図14は、フレームメモリ制御回路307が、2値化中間調処理回路305から量子化後の画像データを受け、それをフレームメモリ306に格納する作業が完了した場合に、同回路307より出力される割り込み信号に対する処理を示すフローチャートである。
まず、ステップS21で、フレームメモリ制御回路307が現在部分書換え画像のFLCD3への転送処理を行っている最中か否かを判断する。フレームメモリ制御回路307が現在部分書換え画像のFLCD3への転送処理を行っている最中である場合にはステップS23に進む。
一方、フレームメモリ制御回路307が現在部分書換え画像のFLCD3への転送処理を行っていない場合、すなわち、その時点ではインタレース転送を行っており、最初の部分書換え画像のフレームメモリ306への格納が完了したと判断した場合にはステップS22に進み、今、格納が完了した量子化後の画像データの転送を行なわせるべく、フレームメモリ制御回路307にそのアドレス、及び、ライン数をセットし、部分書換え画像の転送を行なわせる。そしてステップS23に進む。
ステップS23では、既に読み込んだ領域フラグを調べて、次に量子化する領域があるか否かを判断する。次に量子化する領域がない場合には当該処理を終了する。
一方、ステップS23で未量子化処理の領域があると判断した場合にはステップS24に進み、未量子化処理の領域に対するアドレス及びライン数を演算し、ステップS25〜ステップS27において、各回路に情報をセットし、次の量子化処理を開始させる。なお、このステップS24〜ステップS27の処理は、上述したステップS14〜ステップS17と同じであるので、その詳述は省略する。そして当該処理を終了する。
次に、フレームメモリ制御回路307より、CPU300によって指示された部分書換え画像のFLCD3への転送が完了した場合に通知される割り込み処理を、図15のフローチャートを参照して説明する。
まず、ステップS31で、次に転送すべきデータがあるか否かを判断する。転送すべきデータがないケースは、部分書換えに対する全ての領域の画像をFLCD3に転送し終えた場合と、先に説明した量子化処理が完了していず、それを待っている場合の2通りである。いずれにしても、転送すべきデータがないと判断したら、当該処理を終了する。
また、ステップS31で、転送すべきデータがあると判断した場合にはステップS32に進み、その領域をFLCD3に転送すべく、フレームメモリ制御回路307に対して転送開始ラインアドレス及びライン数をセットして転送処理を開始させる。そして当該処理を終了する。
以上説明したように、CPU300は、上記処理を行うことにより、上述した部分書換え部分の表示の更新、及び、変化がない場合のインタレース表示を行なわせることが可能になる。これらの処理の中核となるのは、CPU300は勿論であるが、フレームメモリ制御回路307に依存する部分、すなわち、フレームメモリ306を設けたことによる影響が大である。
以上説明したように本実施例によれば、VRAM301への書き込みとFLCD3への表示更新が、全く非同期に行えるので、FLCD3の特徴を最大限に利用した表示を行なわせることが可能になる。
なお、上記実施例では、フレームメモリ制御回路307は、CPU300から部分書換えによる転送指示があった場合、その部分書換え画像の転送中ではFLCD3からのデータ転送要求信号による割り込み信号をCPU300に出力しないとしたが、その動作中の状況に拘らず割り込み信号を出力するようにしても良い。
この場合には、CPU300は、部分書換え指示を行った場合に、転送するライン数を知っていることになるから、割り込み信号を受ける毎にカウントダウンし、その値を検査すれば、その割り込みが転送完了による割り込みなのか、インタレース転送中の割り込みなのかを判断できる。
また、上記実施例におけるCPU300の処理手順は、一例であって、これによって本願発明が限定されるものではない。要は、先に説明したごとく、部分書換え画像をFLCD3に転送する際、フレームメモリ306を介在させ、非同期に行うようになっていれば良い。
次に、本実施例におけるFLCDインタフェース2とFLCD3間のシリアル通信線311を介して行われるコミュニケーションについて説明する。
なお、図3ではシリアル通信線311は1本の線で示されているが、実際には全二重通信可能なRS−232C仕様のものを使用しているおり、その線数は同シリアルインタフェース仕様(クロスインタフェース)に準拠しているものとする。また、データ転送バス310には、先に説明したデータバスとデータ転送要求線が含まれるが、これ以外にもFLCDインタフェース2の電源(情報処理装置側の電源)がオンになった場合に、その旨をFLCD3に通知するための1本の論理レベル信号を送出する信号線も含まれる。勿論、これ以外にも転送クロック等の所定の信号も含まれる。
また、シリアル通信線311における通信は、調歩同期式の9600bps、データビット長8ビット、偶数パリティ規格で行われる。但し、これらは一般にシリアル通信においては通常の如く行われている条件であり、本発明特有のものではないので詳細説明を省略する。
以下に説明するコミュニケーションによって、FLCD3を含む本実施例システムを最適な状態で使用することが可能になる。例えば、ホスト側の電源が投入された後に、FLCD3の電源が投入された場合であっても、たとえ部分書換えによる画像のみが転送されて全画面の表示が行われなくなるという不具合もこれによって解消する。
本実施例におけるこのコミュニケーションは、原則として1バイト単位のデータを使用して行われる。これは、双方の制御部(CPU300やシステムコントローラ160)にとってのデータ転送及び受信量が少なくて済み、制御が簡単になるからである。
また、シリアル通信プロトコルとしては、FLCDインタフェース2側(CPU300)からFLCD3に対するコードと、FLCD3(システムコントローラ160)からFLCDインタフェース2に対するコードがある。混乱を避けるため、前者(FLCDインタフェース2→FLCD3)のコードを“コマンド”或いは“コマンドコード”と呼び、後者(FLCD3→FLCDインタフェース2)のコードを“アテンション”或いは“アテンションコード”と呼ぶ。
なお、FLCDインタフェース2からFLCD3へのコマンドに対するFLCD3よりのステータスの返送と、FLCD3よりFLCDインタフェース2へのアテンション発行を起動要因とする特定コマンド/ステータスの送信も存在する。
本実施例のコマンドの詳細と、それに対するFLCD3からのステータスを図16に示す。なお、図示において、大項目“コマンド”中のコード欄の“H”は16進数を示し、“x”は可変4ビットを示している。また、大項目“ステータス”における“B”は2進数であることを、“x”は可変1ビット(コマンドにおける“x”とは相違する)を示している。
以下、順を追って各コマンド及びそれに対するステータスを説明する。
Request Unit ID:00H
このコマンドは、接続されたFLCD3の種別を問い合わせるコマンドである。
ステータス:
FLCD3は、このコマンドを受信した場合に、システムコントローラ160内のROM161に記憶されているID情報を付加して、FLCDインタフェース2に、正常時には00xxxxxxBという、異常時には01xxxxxxBという形式のステータスを送出する。
ここで、下位6ビットの最上位ビットはFLCD3がカラー表示であるか(:0)、モノクロ表示であるか(:1)を示し、次の上位2ビットは画面サイズ(最大表示可能ドット数)が例えば15インチであるか(:00)、21インチであるか(:01)を示すビットが含まれる。つまり、FLCDインタフェース2側では、このコマンド“00H”を発行することで、どのようなFLCDが接続されているかを知ることが可能になっている。なお、本実施例ではカラー表示であるが、FLCDインタフェース2にはモノクロ表示の表示装置も接続することができ、係るコマンドが用意されている。
異常時(エラー時)について規定されているのは、FLCDインタフェース2からFLCD3に対してコマンドを送出したとき、ノイズ等の影響を受けて正常に送られなかった場合にも対処するためであり、このような時は上位2ビットが“01”で始まるステータスを返す。なお、エラー時におけるステータスは、各コマンドに対して共通であるので、ここで受信したコマンドに対するエラー時のアテンションを説明する。
エラー時のステータスの下位6ビットは、エラーの種別を示す種別データ4ビットと、その内容を示す2ビットの内容データの組み合わせで構成される。種別データと内容データは次の通りである。
種別データ:Send Diagnostic エラー
内容データ:
“Send Diagnostic(自己診断結果)”に対応するエラーであり、システムコントローラ160内のROM161のチェックサムエラー、ワークメモリとして使用されるRAM162のエラー(書き込みと読み出しでのベリファイエラー)、ACフェールエラー、その他の表示動作中のエラーが含まれる。なお、FLCD3としては他にケーブル外れエラーがあるが、通常この状態時には通信を行うことはできない。
種別データ:受信時エラー
受信時のエラーであり、パリティーエラー、オーバーラン、定義外コマンド等がある。
種別データ:Send Host ID エラー
内容データ:
“Send Host ID”コマンドを受信した際に、そのHost(FLCDインタフェース2)が定義外IDであると判断したことを示すエラー
種別データ:Set Modeエラー
内容データ
“Set Mode”に対するものであり、遷移不能(指定されたモードへの移行不能を示す)、定義外動作Modeが行われたことを示す。
種別データ:Read/Write エラー
内容データ:
“Read/Write”コマンドに対するもので、Read Only領域に対しての書き込み、Hidden領域に対するアクセス、Address未定義であることを示す。
種別データ:Set Address エラー
内容データ:
“Set Address”コマンドに対応するものであり、範囲外addressが設定されたことを示す。
種別データ:Unit Start エラー
内容データ:
“Unit Start”コマンドに対応するものであり、未だSartできる状態ではない、Error状態である、既にStartしている、を示す。
種別データ:Request Attention エラー
内容データ:
“Request Attention”コマンドに対応するものであり、送信すべきアテンションがないことを示す。
種別データ:Request Status エラー
内容データ:
“Request Status”コマンドに対応するものであり、送信すべきstatusがないことを示す。
以上である。なお、上記はその一例であって、例えば種別データは4ビットであるから、原理的には16通りの種別データを定義できる。また、先に説明したように、FLCD3が、受信したコマンドに対するエラーが発生した際に送出するステータスは各コマンドに共通であるので、以下に説明するコマンドについてのエラー時のアテンションについての説明は省略する。
Request 1H:01H
FLCD3は、詳細を後述するように、温度センサ105によって検出されたFLCパネル温度に依存してその動作速度(1走査分の画像表示周期)を変えている。このコマンドは、FLCDインタフェース2がFLCD3に対して、現在の1走査分の駆動速度がどのようになっているのか(FLCDパネルの1H情報)を問い合わせるためのものである。FLCD3からの応答であるステータスは、図16に示す如く、下位6ビットでもって現在の1走査駆動周期を示す1H情報を返す。
FLCDインタフェース2はこのコマンド発行による応答ステータスを受け、インタレースの飛び越し間隔を変えたり、部分書換えと全画面の更新の割合を変えたりする。
上述したように、FLCDインタフェース2では、FLCD3に転送すべきデータがなくなった場合、インタレース表示させるが、例えば、FLCD3の所定の領域に動画等を表示させている間は、その表示更新された部分のみの画像が更新されていことになる。従って、この動画の表示時間が長いと、未変更部分と変更部分の画像の輝度差が発生し、それが徐々に強調されてしまう。
そこで、部分書換えが継続している間でも、ある程度の間隔で、全画面分の画像を表示するようにすることが必要になる。係る点を考慮して、本実施例では、最低でも1Hzの周期内で1画面全部の更新(フレームメモリ306内の全画像データ転送)を行うように制御している。この1Hz、すなわち、1秒間に表示できるフレーム数が、FLCD3の1走査ラインの駆動周期が温度に依存して変化するので、かかるコマンドを用いる必要があるのである。
また、このコマンドは、画面に変化がなくなった際のインタレース表示における飛び越し間隔にも影響する。すなわち、温度があまり高くない場合には、FLCD3の表示速度は遅くなるため、かかる場合におけるインタレース表示における飛び越し間隔を大きめにして全画像の見掛け上の更新を早くする。逆に、十分な表示速度が可能な温度であれば、当然飛び越し間隔は小さくできることになる。
Unit Start:02H
このコマンドは、接続されたFLCD3の描画を起動する(駆動開始を指示する)ためものである。これを受けて、はじめてFLCD3は画像の表示を行うことが可能になる。FLCD3は、Busy信号を出力し、正常に動作が開始されたか否かを応答すれば良いので、正常時におけるステータスには図示の如くオペランドはない。
Request Attention inf.:03H
このコマンドは、FLCD3からのアテンションを受信したとき、そのアテンションの詳細内容の送信を要求するためのものである。これを受けて、FLCD3側からは下位6ビットにアテンションの内容を示すコードを付加して送出する。
Request Attention Bit:04H
このコマンドは、FLCD3がもっているアテンションステータスビットの送信を要求するためのものである。FLCDが持っているアテンションステータスには、例えば、FLCDがReadyになったかどうか、1H情報が変更されたかどうか、コントラストが変更されたかどうか、エラーが発生したかどうか等であり、FLCD3側からはこれらの内容を示すデータを下位6ビットにセットしたステータスを送出してくる。
Get Mode:05H
現在のFLCD3の表示モードの送信要求をするためのコマンドである。FLCD3の表示モードには、詳細を後述するように例えば、動作モード番号0である通常動作モード(LED及びバックライトが点灯し走査を行う通常描画状態表示モード)、動作モード番号1であるスタティックモード(画像データの受信をやめ、LED及びバックライトが点灯し走査停止状態である表示画像をフリーズするモード:静止画鑑賞に適する)、動作モード番号2であるスリープモード(画像の表示をやめ、バックライトの駆動もやめるモード:省電力・バックライトとFLCDの延命効果)がある。FLCD3は、現在このいずれの表示モードで動作しているかを示す動作モード番号をステータスとして返す。
Request Status:06H
これはFLCD3から送られてきたアテンションにパリティーエラー等が発生した際に、そのステータスを再送するよう要求するためのコマンドである。FLCD3は、これを受けて再度、前回送出したものと同じ内容を示すアテンションを送出することになる。
Attention Clear:0AH
このコマンドはFLCD3のアテンションをクリアさせるものである。FLCDは正常にクリアされたか否かを通知すれば良いので、もし正常であれば全ビット“0”のステータスを送出する。
Get Contrast Enh.:0BH
このコマンドは、FLCD3の輝度・画質トリマ106、107の設定値等により定まるコントラストエンハンスメント値を獲得するためのものであり、これに対するレスポンス(ステータス中の6ビット)に従って、先に説明したデガンマ回路309のデガンマテーブル内容を更新する。なお、デガンマテーブルを更新した場合、部分書換えされた画像のみのコントラストが変更されてしまうので、VRAM301の全画像に対して書き込みがなされたものとして、全画像の2値化処理を行わせ、全画像をFLCD3に転送することになる。
Get Multi:0CH
本実施例におけるFLCD3は、3つの走査モードを有しており、FLCDインタフェース2よりの画像データのヘッダ部にセットされるスキャンモード情報と、後述するSet Multiコマンドにより指定される3つの走査モードでの動作が可能であり、Set Multiでの指定が先のマルチスキャンモードでの指定に優先する。
この3つの走査モードは、入力した1ラインの画像データに対して、nライン(現時点では、nは1、2、4のいずれかである)の画像として表示するモードであり、01Hである1本同時選択モード、02Hである2本同時選択モード、03Hである4本同時選択モードを有している。例えば、近年、マルチメディアがさけばれる中、動画表示のデフォルトは、せいぜい300×200ドット程度の大きさであり、アプリケーションによってはそのサイズが固定のものもある。これでは、表示画像が小さくなりすぎるので、受信した原画像1ラインに対して2ライン、もしくは4ライン分同じ画像を表示する。
このようにして、そのままでは小さい画像であっても視覚的に負担のない画像を表示することが可能になる。また、FLCDインタフェース2にとっては、同じラインのデータを複数回転送することがないので、負担は少ない。但し、主走査方向に関しては、同じ画素をn回続けて転送するよう、フレームメモリ制御回路307に指示する。なお、主走査方向への繰り返し回数も別途指示するようにしても良いのは勿論である。
このGet Multiコマンドは、現在のFLCDのかかる状態がどのようになっているのかを送信要求するためのものである(現在の状態はステータスの6ビットで返される)。このコマンドを設けた理由は、後述するSet Multiコマンドでもって、FLCD3に対して上記nを“2”にセットした以降、情報処理システム(例えばパーソナルコンピュータ)側の電源を遮断して、再度投入した際の画像データの送り手と受けての不整合を防止するためのものである。
Send Diagnostic:1xH
このコマンドは、FLCD3に自己診断を行わせ、その結果を送信するよう要求するためのものである。“x”で示される4ビットには、その診断モードを指定する。診断モードにはいくつかあって、FLCD3は指定されたモードに対する診断結果をステータス情報として返す。
Send Host ID:2xH
このコマンドは、FLCDインタフェース2のID(種類)をFLCD3に通知するためのものである。“x”の4ビット中、2ビットはFLCDインタフェース2のバージョン、残りの2ビットにはFLCDインタフェース2のカードのID(情報処理装置の種類にもなる)である。FLCD3は、受信したIDを許容できると判断した場合には全ビット“0”のステータスを返す。
Set Mode:3xH
このコマンドは、“Get Mode”コマンドに対応するものであり、“x”の4ビットでもって、FLCD3に対し、通常モード、スタティックモード、スリープモードのいずれかを設定を指示する上述した動作モード番号を送る。FLCD3からは正常にそのモードへの移行ができた場合には、全ビット“0”のステータスを返す。このコマンドの発行タイミングであるが、例えば、ホスト1のユーザがそのモードとするよう指示入力し、FLCDインタフェース2にこの指示があった場合等である。また、所定期間(この期間はユーザによりプログラマブルである)経過しても画像に変化がなくなった場合に、スタティックモードへ移行することもある。
Set Multi:4xH
このコマンドは、先に説明した“Get Multi”に対応するものであり、FLCD3における1ラインの画像を1、2、或いは4ライン分の画像として表示させるための指示を行うものである。“x”で示される4ビットは、0の場合にはFLCDインタフェース2よりの画像データのヘッダ部にセットされるスキャンモード情報によることを示し、01Hは1本同時選択モード、02Hは2本同時選択モード、03Hは4本同時選択モードである。
ステータスは正常には全ビット“0”を返す。本実施例では、例えば横640ドット、縦480ドットのいわゆるVGAモードが選択した場合には、それを検出して、2ライン同時駆動を行なわせ、FLCD3の1280ドット×960ドットを駆動対象にさせる。但し、ユーザの好みに応じて変更できるようにするこも望まれるので、情報処理装置のFLCDインタフェースの環境設定ユーティリティプログラムによって各種設定を行なえるようにしても良い。
さて、これ以降の、Write High/Low Memory(8xH、9xH)、Read High/Low Memory(08H,09H)は、FLCD3内のシステムコントローラ160(アドレス空間は64Kバイト)の任意のアドレスにデータを書き込んだり、読み込み指示を与えたりするためのものである。Write High/Low Memoryそれぞれの下位4ビットでもって書き込むべきデータ1バイトを示すことになる。なお、Read High/Low Memoryに関してはオペランド(可変4ビット)は存在しないのは当然である。
いずれにしても、書き込むべきアドレス、あるいは読み込むべきアドレスを指定することが必要になるが、このアドレスは図示のSet HH/MH/ML/LL Addressコマンド(Ax、Bx、Cx、DxH)それぞれの下位4ビット(計16ビット)でもって設定する。アドレスは、読み込もうとするアドレス、或いは書き込もうとするアドレスである。こうしてアドレスが確定した後に、Read コマンド或いはWriteコマンドで読み込み或いは書き込みを行うことになる。
なお、Readコマンドでは、指定されたアドレスのバイトの内容のうち上位4ビット或いは下位4ビットをステータスとして返すが、それ以外のコマンドに対してはそれが正常であれば全ビット“0”のアテンションを返す。
これらFLCD3内のメモリに対する読み込み或いは書き込みは、主としてデバッグに用いられるが、勿論これに限定されるものではなく、FLCD3内のワーク領域を変更させることで換えることも可能である。また、FLCD3内のシステムコントローラ160の動作処理プログラムをRAMに常駐させて実行するようにして、そのRAM上にホスト1から機能を向上させたプログラムを格納させることも可能になる。
以上、FLCDインタフェース2からFLCD3に対して送出されるコマンド(コマンドコード)及びそれに対する応答ステータスを述べた。
次に、FLCD3が自発的にFLCDインタフェース2に対してアテンションを送出する場合を説明する。
FLCD3によるアテンションは次のフォーマットである。即ち、
10xxxxxxB
である。つまり、最上位ビット(MSB)を“1”にする。
理由は、FLCDインタフェース2があるコマンドをFLCD3に対して送出すると同時に、FLCD3が自発的にアテンションをFLCD120に対して送出した場合において、FLCDインタフェース2側としては送出したコマンドに対するレスポンスを受信したのではなく、自発的なアテンションを受信したと判断できるようにするためである。つまり、先に説明したように、コマンド発行に対する全ての応答アテンションはそのMSBが“0”であるので、FLCDインタフェース2側ではその判断が容易になる。
さて、FLCD3からのアテンションの下位6ビットは以下の通りである。
ビット0:FLCDがREADYになった場合にセット、
ビット1:1H情報が変更された場合にセット、
ビット2:コントラストエンハンスメントが変更された場合にセット、
ビット3:未定義
ビット4:FLCDに回復可能なエラーが発生した場合にセット、
ビット5:FLCDに回復不可能なエラーが発生した場合にセット、
以上である。
ここで、回復可能なエラーには、例えばアテンション状態でない場合、画像データが所定期間経過しても送られてこない場合、定義外表示モードが設定されたされている場合等がある。また、回復不可能なエラーには温度センサ105の断線による検出不能、その短絡による検出不能、A/D変換器によるサンプリングタイムアウト、変換終了タイムアウト、データセットタイムアウト、自己診断によるROMチェックエラー、RAMチェックエラー等がある。
なお、ROMチェック等は、FLCDインタフェースからの指示によって行われる自己診断でも行うが、ここで言うエラーは、次に説明するFLCD3に電源が投入されたときの初期チェックにおけるエラー発生時のものである。
また、FLCDインタフェース2がコマンドを発行すると共に、FLCD3が自発的なアテンションを発行した際、すなわち、双方が最初のコードを送出した場合には、FLCD3からのアテンションを優先して処理する。理由は、FLCDからの要求は画像表示というユーザとのインタフェースで一番近いところにあるからである。
以上の各コマンド及びアテンションによる通信プロトコルのFLCDインタフェース2サイドより見た具体的な例を図17〜図19を用いて説明する。FLCD3については後でまとめて説明を行う。
図17は、FLCDインタフェース2からFLCD3に対して、FLCD3のIDを獲得する場合のシーケンスを示している。
まず、FLCDインタフェース2(CPU300)は、FLCD3に対してシリアル通信線311を介し、Request Unit ID(00H)を送出する。これを受けて、FLCD3(システムコントローラ160)は、自身のROM161等に書き込まれたFLCD固有の情報を読み込み、それをステータスとしてFLCDインタフェース2に返す。
なお、上記シーケンスにおいて、例えば、FLCDインタフェース2から発行したコマンドに通信上のエラーが発生した場合(例えばパリティーエラー等)、FLCD3はその受信が正常には行われなかったことを示すためにエラーステータスを返す。FLCDインタフェース2はこのステータスを受信した場合には再度同じコマンドを発生する処理を行う。また、逆に、FLCD3からのアテンションに通信上のエラーがあった場合、FLCDインタフェース2は、Request Statusコマンドを送出し、ステータスの再送を促す。
図18は、FLCD3から自発的なアテンションを発生した場合(ここでは、コントラストエンハンスメントが変更されたときに発生するアテンションの場合)のシーケンスを示している。
まず、FLCD3は後述する図59のステップS415に示す処理により、シリアル通信線311を介してコントラストエンハンスメントが変更となった旨を示す自発的なアテンションを示す“10000100B”をFLCDインタフェース2に送信する。
FLCDインタフェース2側では、このアテンションを受けて、コントラストエンハンスメントが変更された旨を知ることができるので、どのように変更されたのかを問い合わせるためのRequest Statusコマンド(06H)を送出する。これを受けて、FLCD3はステップS413で保持しているコントラストエンハンスメントを示すバイナリデータをFLCDインタフェース2に送出する。
FLCDインタフェース2は、このコントラストエンハンスメント値を受け、ROM308を参照することでデガンマ回路309内のデガンマテーブルを書換える。そして、このアテンションに対する処理を終了すべく、Attention Clearコマンドを発行する。FLCD3は、これによってコントラスト値によるデガンマ変換が完了された、もしくは変更されることが約束されたことを知ることになるので、了解した旨のアテンション“00000000B”を返し、本処理を終える。
図19は、FLCDインタフェース2からのコマンド発行(ここでは、Set
Mulitコマンド)と、FLCD3からの自発的なアテンション(ここでは温度センサ105による1Hが変更された旨を報知するアテンション)が入れ違いになった場合のシーケンスを示している。
FLCDインタフェース2は、受信したアテンションのMSBが“1”になっていることを知ると、このアテンションは、FLCD3がアテンションを発行してきたと判断し、先に送信したSet Multiコマンドに対する処理は後回しにする。そして、そのReques Attention inf.コマンドを発行して、1走査駆動周期値を送信するよう指示する。FLCD3は、これを受けて、現在の温度センサ105からの温度値に基づく1Hを、図10に示す温度補償テーブル901を参照して、下位6ビットにその値をセットしてFLCDインタフェース2に送信する。
FLCDインタフェース2は、これを受けて、上述したように自身の動作内容を変更すると共に、FLCD3に対してAttention Clearコマンドを発行し、FLCD3からの“00000000B”を受信することで、FLCD3からのアテンションに対する処理を終了する。
この後、FLDC3は先に受信したSet Mulitコマンドに対する処理を行いステータスを返す。FLCDインタフェース2は、このステータスが正常終了である00000000Bを受けて、Set Mulitコマンドに対する処理を終了する。
以上の説明では、一部のコマンド及びアテンションに対してのプロトコルを説明したが、その他のコマンド或いはアテンションに対してのプロトコルも略同じシーケンスを踏むことになるのは、上記説明からすれば容易に想到できよう。従って、これ以外の説明については省略する。
次に、本実施例のFLCD3の電源投入と、FLCDインタフェース2の電源投入(情報処理装置の電源投入でもある)における動作を説明する。
一般には、例えばパーソナルコンピュータ等のホスト側装置と表示装置とが一体に構成されていても、あるいは別体に構成されていても、かかる構成上の相違はさほど問題はならない。なぜなら、一般の表示装置は、単に上位装置から垂れ流しで出力された画像データを表示するだけであり、上位装置よりの情報が停止するとその表示も停止するからであり、互いにコミュニケーションを取ることがないからである。
しかしながら、上述した本実施例のFLCD3は、FLCDパネル150に自己記憶機能があり、表示装置もある程度のインテリゼンスを持っているため、互いに相手の状態を把握して処理することが必要である。そこで本実施例では、以下のようにしてこの問題を解決した。
データ転送バス310には、FLCDインタフェース2の電源が投入されたか否かを示す1本の信号線が含まれる。この信号線を用いることで、以下の通りの制御が可能となっている。
ケース1.FLCDインタフェース2の電源が先に投入されていて、その後でFLCD3に電源が投入された場合
この場合には、FLCD3はその電源投入時の初期処理段階で、データ転送バス310内のPOWERON信号がLであることにより、FLCDインタフェース2の電源が投入されていることを知ることができるので、これを検出して、且つ、自身の初期化処理が完了した場合に、アテンション(10000001B=FLCD3がready状態になったことを示している)をFLCDインタフェース2に送出する。
FLCDインタフェース2はこのアテンションを受信することで、FLCD3が動作可能になったことを認識して、Attention Clearコマンドを発行し、FLCD3からのアテンション“00000000B”の受信を待ち、次にUnit Startを送出することによりFLCD3にBUSY信号の送出を催し、持って画像の表示を行なわせる。
なお、実際には、FLCD3に電源が投入されると、例えば、電源投入時におけるコントラスト値、後述する1H値を得るために、FLCDインタフェース2は、コントラスト値、1Hの送出要求をコマンドを発行し、それぞれの情報を獲得する処理を行う。
ケース2.FLCD3が先に電源が投入されていて、FLCDインタフェース2が後から電源が投入される場合(例えば、ホスト1の電源遮断を行ないながらも、表示装置であるFLCD3の電源遮断を忘れてしまった場合等)
この場合、FLCDインタフェース2は、自身の初期化処理が終了すると、POWERON信号がFLCDインタフェースによりLにセットされるのを待ち、Unit Startコマンドを発行する。これを受けて、FLCD3は自身の動作を再開することが可能になる。
説明が前後するが以下、FLCD3内のシステムコントローラ160の動作処理を説明する。以下の説明は、システムコントローラ160のメインとしてチップ構成のコンピュータ(MPU)を用いた場合を例として説明する。
図20はこの場合におけるFLCD3の電源投入後又はリセット状態時における動作開始時の基本処理を示すフローチャートである。
電源スイッチ122が入り、装置に電源が投入されると図20の処理に移行し、まずステップS41でシステムコントローラ160の最初の初期化処理が行われ、割り込みの設定が行われる。続いてステップS42でシステムコントローラ160による自己診断ルーチンが実行され、自己の動作が正常であるか否かが判断される。そして、つづくステップS43でステップS42における自己診断ルーチンでのAFC信号およびENABLE信号の診断の結果、AFC回路165よりのAFC信号が出力されていない場合、およびケーブル11が外れた状態でENABLE信号がローレベルでない場合であるか否か判断する。ケーブルが正しく接続されていない場合や、スイッチング電源120の入力か何かの原因により再び低下した場合には再びステップS41に戻り、以後のFLCパネル150の表示制御を行わないようにする。これにより、不用意に表示制御が行われ、所望以外の表示がなされることを有効に防止している。
一方、ステップS43でケーブル11が接続されておりENABLE信号がローレベルであり、またスイッチング電源120が正常であった場合で、AFC信号が出力されている場合にはステップS44に進み、システムコントローラ160の初期化処理の2が行われ、リソースの設定などが行われる。続いてステップS45でドライバコントローラ190の初期化処理を行う。続いてステップS46で、パワーONウエイト処理を実行し、その後ステップS47の動作選択処理に移行する。
また、本実施例装置においては、電源投入時にのみ図20の処理を実行するのではなく、割り込みの設定が行われた後は、割り込みがかかった場合にも実行される。
即ち、何等かの原因でスイッチング電源への電力の供給がとだえた事をACF検知回路165が検出し、AFC信号が出力された場合や、FLCDインタフェース2からのリセット信号を受けた場合、およびENABLE信号がオフとなった場合にもこの初期化等の処理が実行される。
AFC検知回路165が電源異常等を検知してAFC信号を出力した場合にはAFC検知で示すAFC検知割り込み処理S50が実行される。そして、この割り込み処理に移行するとまずステップS51で他のすべての割り込みを禁止する。そして続くステップS52でパワーOFFルーチンを実行する。その後ステップS53で15V電源をオフしてLED表示器109を消勢する。そしてステップS41よりの初期化処理を実行する。
一方、本実施例装置がリセット状態となった場合には、リセット割り込み処理S55が実行される。そして、この割り込み処理に移行するとまずステップS56で他のすべての割り込みを禁止する。そして続くステップS57でパワーOFFシーケンスを実行する。その後ステップS53で15V電源をオフしてLED表示器109を消勢する。そしてステップS41よりの初期化処理を実行する。
更に、図6に示す本実施例装置とFLCDインタフェース2との間のケーブル11がコネクタ15より何等かの理由で外れた場合や、ケーブル11が途中で断線したような場合には、ENABLE信号がリセットされてローレベルとならない状態となる。この場合にはENABLE信号オフで示すケーブル外れ割り込み処理S58が実行される。そして、この割り込み処理に移行すると、ステップS59で他のすべての割り込みを禁止する。そして上述したステップS57に進み、パワーOFFシーケンスを実行し、その後ステップS53で15V電源をオフしてLED表示器109を消勢する。そしてステップS41よりの初期化処理を実行する。
次に図21を参照して図20のステップS42に示す自己診断ルーチンの詳細を説明する。
まずステップS61でENABLE信号およびAFC回路165よりのAFC信号をチェックする信号チェック処理を行う。続いてステップS62でROM161のチェック処理を行う。続いてステップS63のRAM162のチェック処理を実行してリターンする。
このステップS61における信号チェック処理の詳細を図22に示す。
まず、ステップS65でAFC信号がハイレベルであり、AFC信号が出力されていないか(電源が正常であるか)否かを調べる。AFC信号が出力されていない場合にはステップS66に進み、例えばFLCDインタフェース2において読み出し可能なエラーステータスのACフェールビットをセットしてリターンする。
一方、AFC信号が出力されている場合にはステップS65よりステップS67に進み、ENABLE信号がローレベルでケーブルが正しく接続された状態であるか否かを調べる。ENABLE信号がローレベルでケーブルが正しく接続された状態である場合には当該処理を終了してリターンする。
一方、ENABLE信号がローレベルでなく、ケーブルが正しく接続された状態でない場合にはステップS67よりステップS68に進み、例えばFLCDインタフェース2において読み出し可能なエラーステータスのケーブル外れビットをセットしてリターンする。
図21のステップS62におけるROM161のチェック処理の詳細を図23に示す。ROMのチェック処理においては、ROM領域の全データをワード単位で加算し、オーバーフローを無視した16ビット符号無し整数を、予め計算された値(チェックサム=xxxxh)と比較し、合致することを確認する処理を行う。
まずステップS71で、加算結果を格納するレジスタであるsumをクリアする。続いてステップS72でROMチェックを行うアドレス値を保持するアドレスレジスタにROMのスタートアドレスを格納する。そして、ステップS73でROMのアドレスレジスタで特定されるアドレスより書き込まれている内容を読み出し、レジスタsumの内容と加算する。この時、この加算結果は、オーバーフローを無視した16ビット符号無し整数となる。
そして、ステップS74でアドレスレジスタの値をROMの次のアドレスを指定するように更新する。そしてステップS75でこの更新したアドレス値がROMのエンドアドレスを越えているか否か、即ち、ROMの全領域に対する処理が終了したか否かを調べる。すべての領域に対する処理が終了していない場合にはステップS73に戻り、ステップS74で更新した次のワードの内容の読み出し及びレジスタsumの内容との加算処理を行う。
一方、ステップS75でROMの全領域に対する処理が終了した場合にはステップS75よりステップS76に進み、レジスタsumの加算結果と予め計算された値(チェックサム=xxxxh)とを比較する。そして、レジスタsumの加算結果と予め計算された値(チェックサム=xxxxh)とが一致した場合にはROMは正常であるとしてそのままリターンする。
ここで、レジスタsumの加算結果と予め計算された値(チェックサム=xxxxh)とが異なる場合には、ROMのエラーであり、ステップS77で回復不可能なエラーとしてのエラービットをセットしてリターンする。その後は、例えば上述したFLCDインタフェース2に回復不可能エラーアクションを発行し動作モード中の寡黙モードに移行する処理を行う。
続いて、図21のステップS63におけるRAM162のチェック処理の詳細を図24及び図25に示す。RAMのチェック処理においては、RAM領域にワード単位でデータを書き込んだ後に、このデータを読み出して、書き込んだデータを合致することを確認する。書き込むデータは例えば(00h)及び(FFh)とし、書き込みに際しては書き込むべきアドレスに記憶されているデータはレジスタに一旦退避し、当該アドレスに対するチェックが終了した時点で再びRAMに戻される。
本実施例においては、レジスタ群がRAM内に複数セット割り当てられている。このレジスタ群をレジスタバンク0、レジスタバンク1、…と呼ぶ。まず最初にRAMの先頭からレジスタバンク1までの領域についてチェックを行うべく、ステップS81でレジスタをレジスタバンクの1と設定する。続いてステップS82で書き込むパターンデータとしての(00h)をパターン0としてpatn0レジスタに登録し、続いて書き込むパターンとしての(FFh)をパターン1としてpatn1レジスタに登録する。そしてステップS83でRAMの最初のアドレスであるRAMスタートアドレスをアドレスレジスタにセットする。
これでRAMチェックの準備ができたため、続くステップS84でアドレスレジスタで指定されるRAMの番地の内容を読み出してきて退避レジスタに格納する。続いてステップS85でpatn0レジスタの内容をアドレスレジスタで指定されるRAMの番地に書き込み、続いて書いた内容を読み出してきてpatnレジスタに格納する。そしてステップS86で読み出してきたpatnの内容と書き込んだpatn0レジスタの内容とを比較する。
ここで、RAMエラーとなり両レジスタの内容が異なっている時には図25のステップS101に進み、退避レジスタに退避していた内容をアドレスレジスタで示されるRAMの番地に書き込む。そしてステップS102でエラーステータスのRAMエラービットをセットしてリターンする。その後は、例えば上述したFLCDインタフェース2に回復不可能エラーアクションを発行し動作モード中の寡黙モードに移行する処理を行う。
一方、ステップS86で読み出してきたpatnの内容と書き込んだpatn0レジスタの内容とが一致していた場合にはステップS87に進み、続いてpatn1レジスタの内容をアドレスレジスタで指定されるRAMの番地に書き込み、続いて書いた内容を読み出してきてpatnレジスタに格納する。そして続くステップS88で読み出してきたpatnの内容と書き込んだpatn1レジスタの内容とを比較する。ここで、RAMエラーとなり両レジスタの内容が異なっている時にはステップS101に進む。
一方、ステップS88で読み出してきたpatnの内容と書き込んだpatn1レジスタの内容とが一致していた場合にはステップS89に進み、ステップS84で退避レジスタに退避しておいたRAMのアドレスレジスタで示される番地の内容を元に戻す。続くステップS90でアドレスレジスタをインクリメントして次にチェックすべきRAMアドレスとする。そしてステップS91でレジスタバンク1までの領域のチェックがすべて終了し、アドレスレジスタの内容がレジスタバンク1のアドレス以上となったか否かを調べる。レジスタバンク1までのアドレスである場合にはステップS84に戻り、次の番地に対するチェックを続行する。
一方、レジスタバンク1までの領域に対するチェックが終了してアドレスレジスタの内容がレジスタバンク1のアドレス以上となった場合には図25に示すステップS92に進む。
ステップS92では、レジスタバンク1の領域を先頭にRAMの最後までのRAMチェックを行うべく、レジスタをレジスタバンクの0と設定して書き込みパターン0とパターン1を改めてレジスタに設定する。続くステップS93でアドレスレジスタで指定されるRAMの番地の内容を読み出してきて退避レジスタに格納する。続いてステップS94でpatn0レジスタの内容をアドレスレジスタで指定されるRAMの番地に書き込み、続いて書いた内容を読み出してきてpatnレジスタに格納する。そして続くステップS95で読み出してきたpatnの内容と書き込んだpatn0レジスタの内容とを比較する。ここで、RAMエラーとなり両レジスタの内容が異なっている時にはステップS101に進む。
一方、ステップS95で読み出してきたpatnの内容と書き込んだpatn0レジスタの内容とが一致していた場合にはステップS96に進み、続いてpatn1レジスタの内容をアドレスレジスタで指定されるRAMの番地に書き込み、続いて書いた内容を読み出してきてpatnレジスタに格納する。そして続くステップS97で読み出してきたpatnの内容と書き込んだpatn1レジスタの内容とを比較する。ここで、RAMエラーとなり両レジスタの内容が異なっている時にはステップS101に進む。
一方、ステップS97で読み出してきたpatnの内容と書き込んだpatn1レジスタの内容とが一致していた場合にはステップS98に進み、ステップS93で退避レジスタに退避しておいたRAMのアドレスレジスタで示される番地の内容を元に戻す。続くステップS99でアドレスレジスタをインクリメントして次にチェックすべきRAMアドレスとする。そしてステップS100でRAM領域のチェックがすべて終了し、アドレスレジスタの内容がRAMの最終アドレス以上となったか否かを調べる。最終のアドレス以下である場合にはステップS93に戻り、次の番地に対するチェックを続行する。
一方、RAM領域に対するチェックが終了してアドレスレジスタの内容がRAMの最終アドレス以上となった場合には処理を終了してリターンする。
続いて、図26を参照して図20のステップS46におけるパワーONウエイト処理を説明する。
まずステップS111で電源スイッチコントローラ181に指示してLEDの電源となる15V電源をオンする。続いて16ms待った後ステップS112でLED109を点灯させる。更に16ms待った後ステップS113でシステムコントローラ160に対するAFC割り込みを許可する。次にステップS114でFLCDインタフェース2側よりのRESET信号がこの時点でリセットされた状態でありHレベルでない場合にはこれがHレベルとなるのを待つ。
続いてステップS115でFLCDインタフェース2側の電源が投入されていることを示すPOWERON信号がセットされていることを確認する。ここでもしPOWERON信号がセットされていない場合には、FLCDインタフェース側の電源が投入されるのを待つ。ここで、ホスト側の電源が投入された状態となりPOWERON信号がセットされている状態であればステップS116に進み、システムコントローラ160の図9に示すFLC制御部分を初期化(停止状態)する。
更にステップS117で内部変数を初期化する。具体的には、エラー状態を示すステータス(errstat)を0クリアし、続いて表示モードコントロール(dispmode)を表示を行わないモードであるnotstartedにセットする。また走査モード(scanmode)を×1の走査モード(×1mode)にセットし、直前の走査アドレス(preadd)にダミーアドレスをセットし、タイマユニット902のON/OFFフラグ(timer)をOFFにセットし、FLC制御部をOFFしてFLCDパネル150の表示を行わない様に制御する初期化処理などを行う。
次に、ステップS118で先の自己診断ルーチン等によるエラーステータスがセットされているか否かを調べる。エラーステータスがセットされていなければステップS119に進み、パワーONシーケンスを実行する。続くステップS120でステップS116で停止状態としたFLC制御部の動作を有効とし、SCSWをオンとしてトリマインタフェース174を起動して画質調整トリマ107の設定値及び温度センサ105の検出値に基づく駆動信号を制御する。そしてステップS121でFLCDインタフェース2側に対してシリアルインタフェース11を介してユニットレディアテンションを発行してリターンする。
一方、ステップS118でエラーステータスがセットされている場合にはステップS122に進み、FLCDインタフェース2側に対してシリアルインタフェース11を介して自己診断エラーアテンションの発行処理を実行する。続いてステップS123でエラー状態を示すerrstatをエラーにセットする。次にステップS124でLED109を後述する回復不可能モードの場合のLED109を早い周期でON−OFFするブリンクモードに設定し、LED109を早い周期でブリンクさせる。これにより、FLCD3がエラー発生状態であることが容易に目視確認できる。そしてステップS119のパワーONシーケンスに移行する。
次に、図26のステップS119のパワーONシーケンスルーチンを図27を参照して説明する。
まず、ステップS130でVOPコントローラ173をリセットする。そして続くステップS131で色彩スイッチルーチンを実行し、続くステップS132において(S/CCR)をハイレベルとする。そしてステップS133で温度補償ルーチンを実行し、ステップS134で温度補償ルーチンの処理の結果であるリターンコード(終了コード)が0であるか否かを調べる。ここでリターンコードが0でない場合にはステップS139に進み、リターンコードとして(ffff)Hをセツトしてリターンする。
一方、ステップS134でリターンコードが0の場合にはステップS135に進み、各ドライバ回路の出力チャネル電源(VEE)を付勢するためのVEESW信号をONとする。VOPコントローラ173に各ドライバ回路の出力チャネル電源をオンする様に指示する。その後16ms経過するのを待ち、ステップS136でDRVSW信号をONとして液晶駆動電圧レギュレータの出力を投入する。続いてステップS137でBLSW信号をONし、バックライトコントローラ172に指示してバックライト電源を投入する。そして、リターンコードとして0をセツトしてリターンする。
以上に説明したFLCD3のパワーON時の一連の動作の結果における信号のタイミングチャートを図28に示す。図のシリアル通信は、1で図26に示すFLCDよりのUnit Readyアテンションの発行及びこれに対するClearアテンションコマンドの返送がおこなわれ、その後3で示すバックライトの点灯後通常表示モードに移行してのFLCD2よりのUnitStartコマンドの送信及び4に示すStatusの送信へと移行することになる。
次に、このパワーONに続く図20に示すステップS47以下の動作選択処理を図29〜図31を参照して説明する。
動作選択処理では、まずステップS140でワークレジスタの初期化処理を実行する。ワークレジスタの0(rw0)をユーザトリマ監視タイミング用描画ライン数カウンタ(linc)値とし、ワークレジスタの1(rw1)をdispmodeで設定される表示動作に、及びエラー状態をerrstatとし、ワークレジスタの2(rw2)を画像データヘッダ部に付加された走査モード(scanmode)に、ワークレジスタの3(rw3)を直前の走査アドレス(preadd)に、ワークレジスタの4(rw4)をステータス及びアテンションの送信に際し、送信データに加え、送信の優先順位と送信後の保持動作情報、及びアテンションにおいてはアテンションインフォメーションを含む送信イメージを設定しなければならず、係る送信イメージ等をバッファリングする送信データバッファのバッファポインタ(buffpointer)に、ワークレジスタの5(rw5)をタイマユニット902のON/OFFフラグ(timer)に設定して夫々を初期化する。
続いてステップS141でFLCDインタフェース2の電源が投入されており、FLCDインタフェース2よりのPOWERON信号がハイレベルか否かを調べる。POWERON信号がハイレベルであればステップS142に進み、rw1を調べ、動作モードが通常動作モードであるNORMALであるか否かを調べる。ここで、動作モードが通常動作モード(NORMAL)でなければステップS176に進む。
一方、rw1がNORMALであり、動作モードが通常動作モードであればステップS143に進み、rw5を調べる。rw5はタイマユニット902が動作中であるか否かを示しており、rw5がONであればタイマユニット902が動作中であることを示している。ここで、タイマユニット902が動作中でない場合にはステップS144に進み、タイマを再起動すると共に、rw5をONして図30のステップS145に進む。
一方、ステップS143で、rw5がONでタイマユニット902が動作中である場合には、そのまま図30のステップS145に進む。ステップS145では、ユーザトリマ監視タイミング用描画ライン数カウンタ(linc)であるrw0が0であるか否かを調べる。rw0が0でない場合にはステップS146の通常描画処理を実行する。そして続くステップS147でユーザトリマ監視タイミング用描画ライン数カウンタ(linc)であるrw0を1つデクリメントすると共に、タイムアウトのリトライカウンタ(ahdiret)に0を格納する。そして続くステップS148でAttention Time Outか否かを調べる。Attention Time OutでなければステップS149に進む。そして、ここでFLCDインタフェース2よりの受信データがあるか否かを調べる。受信データがなければステップS150に進み、FLCDインタフェース2への送信データがあるか否かを調べる。送信データもなければステップS141に戻り、以上の通常描画処理を行う。
以上の状態時に、ステップS150で送信データが発生した場合にはステップS150よりステップS151以降の処理に進み、送信モード処理を実行する。まずステップS151でPhase Overlaid Driveの後処理を行ってFLCDパネル150の駆動を停止させる。そして続くステップS152で送信バッファデータの送信処理を行う。その後rw4にこのバッファアドレスポインタの値をセットしてバッファを再び読み出し使用可能にすると共にrw5をOFFとしてタイマユニット902のON/OFFフラグをリセットする。そしてステップS141に戻る。
一方、ステップS149で受信データがある場合にはステップS149よりステップS155に進み、Phase Overlaid Driveの後処理を行ってFLCDパネル150の駆動を停止させる。そして続くステップS156でSC受信処理ルーチンを実行してFLCDインタフェース2よりのデータを受信する。
その後ステップS157でSC受信で受信した画像データヘッダ部に付加されているデータのRAM162のワークレジスタ領域へのセットを行う。即ち、rw1の表示動作モード(dispmode)及びエラー状態(errstat)をセットし、(rw4)の送信データバッファのバッファポインタ(buffpointer)を更新し、rw5のタイマユニット902のON/OFFフラグ(timer)をOFFとし、更にrw6に画像データのヘッダ部から走査モードを抽出するマスク1(scmodmsk1)をセットする。c0000Hであれば画像データヘッダ部に従い、0000Hであれば通信による指定による。また、rw7に画像データのヘッダ部から走査モードを抽出するマスク2(scmodmsk2)をセットする。00000Hであれば画像データヘッダ部、又は×1指定となり、4000Hであれば×2指定、8000Hであれば×4指定である。通信による指定による。そしてステップS141に戻る。
更に、ステップS148でアテンションタイムアウトの場合にはステップS148よりステップS160に進み、Phase Overlaid Driveの後処理を行ってFLCDパネル150の駆動を停止させる。そして続くステップS161でアテンションタイムアウトを示すフラグ(attntmoutflg)をセット(ON)する。次にステップS162でLED109を回復不可能モードの早い周期で点滅するブリンキングモードに設定する。これにより、操作者は表示装置のLEDの表示を一目みるのみで装置がエラー状態であることを容易に目視確認可能となっている。
その後ステップS163でエラー状態を示すerrstatをエラーにセットし、rw1の表示動作モード(dispmode)及びエラー状態(errstat)をセットし、rw5のタイマユニット902のON/OFFフラグ(timer)をOFFとしてステップS141に戻る。
一方、ステップS145でrw0のユーザトリマ監視タイミング用描画ライン数カウンタが0の場合にはステップS165に進み、Phase Overlaid Driveの後処理を行ってFLCDパネル150の駆動を停止させる。そして続くステップS166で温度補償ルーチンを、ステップS167で色彩調整スイッチルーチンを実行する。
その後ステップS168で、ワークレジスタの0(rw0)をユーザトリマ監視タイミング用描画ライン数カウンタ(linc)値とし、ワークレジスタの1(rw1)をdispmodeで設定される表示動作に、及びエラー状態をerrstatとし、ワークレジスタの4(rw4)を送信データバッファのバッファポインタ(buffpointer)に、ワークレジスタの5(rw5)のタイマユニット902のON/OFFフラグ(timer)をOFFに設定してステップS141に戻る。
また、図29のステップS141の判定でPOWERON信号がハイレベルでない場合には、FLCDインタフェース2側の電源が投入されていないため、ステップS170の処理に移行し、ここで64μs待った後ステップS171で再度POWERON信号がハイレベルか否かを調べる。ここでもPOWERON信号がハイレベルでない場合にはステップS172でパワーOFFシーケンスを実行して図20のステップS41よりの電源投入時の処理に移行する。
一方、ステップS171でPOWERON信号がハイレベルであった場合にはステップS171よりステップS173に進み、rw5がON(タイマユニット902が動作中)であるか否かを調べる。タイマユニットが動作中でない場合にはステップS141に戻る。
一方、ステップS173でタイマユニット902が動作中の場合にはステップS174に進み、パネル駆動停止処理を行ってFLCDパネル150の駆動を停止させる。そして続くステップS175ワークレジスタの4(rw4)を送信データバッファのバッファポインタ(buffpointer)に、ワークレジスタの5(rw5)のタイマユニット902のON/OFFフラグ(timer)をOFFに設定してステップS141に戻る。
更に、ステップS142の表示動作モードの判断で通常動作モードでなかった場合にはステップS142よりステップS176に進み、ワークレジスタの1(rw1)の設定が本実施例表示装置で通常の動作モードとして遷移可能な他の2つの表示動作モードであるスタテック動作モード(static)か、あるいは低消費電力モードであるスリープ動作モード(sleep)であるか否かを判断する。いずれかのモードでない場合にはステップS180に進む。
一方、いずれかのモードであった場合にはステップS176よりステップS177に進み、ユーザトリマである、輝度調整トリマ106、画質調整トリマ107をチェックする。そして、色彩調整スイッチ108の設定に従う色彩スイッチルーチンを実行する。
その後、ステップS179でrw1をdispmodeで設定される表示動作に、及びエラー状態をerrstatとし、ワークレジスタの4(rw4)を送信データバッファのバッファポインタ(buffpointer)に設定してステップS180に進む。
ステップS180では、ステップS176と同様にワークレジスタの1(rw1)の設定が本実施例表示装置で通常の動作モードとして遷移可能な他の2つの表示動作モードであるスタテック動作モード(static)か、あるいは低消費電力モードであるスリープ動作モード(sleep)であるか否かを判断する。いずれかのモードでない場合にはステップS182に進む。
一方、いずれかのモードであった場合にはステップS180よりステップS181に進み、LED109を短い周期で点滅させるブリンキング表示としてステップS182に進む。
ステップS182では約1Hの時間の待ち、ステップS183に進む。ステップS183でAttention Time Outか否かを調べる。Attention Time OutでなければステップS184に進む。そして、ここでFLCDインタフェース2よりの受信データがあるか否かを調べる。受信データがなければステップS185に進み、FLCDインタフェース2への送信データがあるか否かを調べる。送信データもなければステップS141に戻り、以上の通常描画処理を行う。
以上の状態時に、ステップS185で送るべき送信データが発生している場合にはステップS185よりステップS186の処理に進み、送信バッファのデータをシリアル通信ラインを介してFLCDインタフェース2に送信する。その後ステップS187でrw4にこのバッファアドレスポインタの値をセットして次のバッファ格納データを読み出し使用可能にする。そしてステップS141に戻る。
一方、ステップS184で受信データがある場合にはステップS184よりステップS190に進み、SC受信処理ルーチンを実行してFLCDインタフェース2よりのデータを受信する。その後ステップS191でSC受信で受信した画像データヘッダ部に付加されているデータのRAM162のワークレジスタ領域へのセットを行う。即ち、rw1の表示動作モード(dispmode)をセットし、(rw4)の送信データバッファのバッファポインタ(buffpointer)を更新し、rw6に画像データのヘッダ部から走査モードを抽出するマスク1(scmodmsk1)をセットする。c0000Hであれば画像データヘッダ部に従い、0000Hであれば通信による指定による。また、rw7に画像データのヘッダ部から走査モードを抽出するマスク2(scmodmsk2)をセットする。00000Hであれば画像データヘッダ部、又は×1指定となり、4000Hであれば×2指定、8000Hであれば×4指定である。通信による指定による。そしてステップS141に戻る。
更に、ステップS183でアテンションタイムアウトの場合にはステップS183よりステップS195に進み、アテンションタイムアウトを示すフラグ(attntmoutflg)をセット(ON)する。次にステップS196でLED109を早い周期で点滅するブリンキングモードに設定する。これにより、操作者は表示装置のLEDの表示を一目みるのみで装置がエラー状態であることを容易に目視確認可能となっている。
その後ステップS197でエラー状態を示すerrstatをエラーにセットし、rw1の表示動作モード(dispmode)及びエラー状態(errstat)をセットし、rw5のタイマユニット902のON/OFFフラグ(timer)をOFFとしてステップS141に戻る。
以上の説明中の表示モードについて説明すると、本実施例のFLCD3は正常動作状態時には大きく3つの表示モードを備えており、図32に示す様に、通常動作表示モード(Normal)、静止画像を表示する場合等に最適の静止表示モード(Static)、FLCD3の表示画面を全黒消去し、バックライトも消灯した低消費電力状態のスリープモード(Sleep)3つの表示モードを備えている。また、このほかに、回復不可能エラー発生時の表示モードもあり、この場合には画面表示は回復不可能エラー発生直前状態を維持する。そして、各動作モード状態を判別可能とするために、LED109の点滅制御も併せて行っており、上述した様にスリープモードではLEDを1秒間隔で点滅させ、回復不可能エラーでは更に早いブリンキングである0.5秒間隔で点滅させている。
本実施例では、以上の様に各動作状態でLEDの点灯状態を区別しているので、しばらく表示装置より離れていたものが、このLEDの点灯状態をみるだけで現在の表示装置の状態を知ることができる。この結果、スリープモードでの動作にもかかわらず電源断状態と間違えることもなく、また、回復不可能エラー発生状態か否かも容易に知ることができ、誤操作を防げると共に、適切な対処をすることも可能となる。
以下、図30に示す通常描画処理の詳細を説明する。この処理の説明の前に本実施例におけるFLCDパネル150の画像データ表示位置を説明する。FLCDパネル150の画像データ表示位置は、RGBWの4色で1つの画素を形成しており、画素データも4色のD0〜D3で表されており、例えば本実施例の表示パネルが1280画素×1024ラインである場合には、図33に示す様に1つのコモンスキャンラインアドレスA0〜A11に対しセグメントデータは合計5119で構成されている。
そして、ホスト側のFLCDインタフェース2は、BUSY信号をネガティブとしてノットビジイとする。これを受けたFLCDインタフェース2は、AHDLをハイレベルとすると同時に、12ビットのスキャンアドレスを画像データバスPD0〜PD15にFCLKに同期させて1クロック分送出する。このため、FLCD3のNFXコントローラ101はこれをFLCD3の1ライン書き込み周期(1H)に合わせて受け取って再びBUSYをハイレベルとする。
この間のタイミングチャートを図34に示す。
更に、この図34に示すタイミングチャートに従って、FLCDインタフェース2より送られる実際のデータフォーマットを図35に示す。図35に示す様に、PD0〜PD15を用いてFCLK信号に同期して順次D0〜D15よりD5104〜D5119までの表示データが順次送られてくることになる。
ここで、AHDLがハイレベルの時のスキャンアドレスと同時に、上述した様に表示モードも送られる。この場合の転送手順を図36に示す。図36に示す様にスキャンアドレスは12ビットであり、上位4ビットに余裕があるため、これを利用して最上位の2ビットで走査モードを指示できる様にしている。即ち、最上位2ビットが(00)であれば×1、(01)であれば×2、(10)であれば×4の走査モードである。
この走査モードは画像データに先立って送出されるヘッダ部に常にセットされる。そして、直前に送出された走査モードデータと異なる走査モードを受け取った場合、今までの走査モードが受け取った走査モードに変更される。ただし、シリアル通信によるSetMultiコマンドにより走査モードが指定された場合、コマンドにより指定された走査モードが優先される。
以上の様にしてFLCDインタフェース2より送られてくる表示データの受信及びFLCDパネル150への描画処理(図30に示す通常描画処理)の詳細を図37〜図43を参照して以下に説明する。
図30のステップS146の通常描画処理では、まずステップS201で、SDIを送出し、ドライバコントローラ190の図8に示すバッファ521、522の何れかを入力し、他方より読み出しを行う様にチェンジする。続いてステップS202で割り込み要因レジスタをクリアする。その後ステップS203でFLCDインタフェース2に対する画像データ要求信号であるBUSY信号をネガティブとしてノットビジイとする。
FLCD3がBUSY信号をネガティブとしてノットビジイとすると、FLCDインタフェース2は、上述した様にAHDLをハイレベルとすると同時に、走査アドレスつき画像データを画像データバスPD0〜PD15にFCLKに同期させて順次送ってくる。ドライバコントローラ190がこの内の走査アドレスを受け取ると、受信アドレスレジスタ526に格納すると共にIREQ信号を送ってくるので、ステップS204でこれを受け取ったか否かを調べスキャンアドレス受信が終了したか否かを調べる。未だ受け取っていなければステップS205でAHDL信号がこないでAHDL信号のタイムアウトが発生したか否かを調べる。タイムアウトが発生していなければ上述のステップS204、205に戻る。
ここで、ドライバコントローラ190がスキャンアドレスを受け取った場合にはステップS204よりステップS206に進み、FLCD3の1ライン書き込み周期(1H)に合わせてBUSY信号をハイレベルとする。そして続くステップS207で図36に示す受信したスキャンアドレスの上位2ビットのスキャンコードのみを抽出すべくスキャンコードのマスク処理を行ない、以下でスキャンモードコードの判別を行う。
まずステップS208で以前のモードと違うモードが指定されたMODE変更指示か否かを調べる。MODE変更でなければステップS209に進み、スキャンアドレスを調べ、アドレス範囲であるか否かを調べる。アドレス範囲指示であった場合にはステップS210に進み、同一アドレスであるか否かを調べる。同一アでレスでない場合には図38のステップS211に進む。
ステップS211以下では通常のアドレス描画処理を行うことになる。まずステップS211で受信したスキャンアドレスをドライバコントローラ190の受信アドレスレジスタ526より読み出して再び走査アドレスレジスタ527に格納する。続いてステップS212で読み出したアドレス値を直前の走査アドレス値(preadd)としてrw3に格納する。そしてステップS213でタイマユニット902のコンペア割り込みビット(新しい走査アドレスの駆動開始タイミングとなるまで)を待つ。転送される画像データは、2つあるバッファ521、522の一方に格納される。
その後ステップS214で1Hをスタートさせ、図10に示す構成によりCOMドライバ104、セグメントドライバ102、103によるFLCDパネル150の駆動、表示データの書き換え制御を行う。そしてステップS215でタイマユニット902をクリアし、次のステップS216でドライバコントローラ190側の1H動作を行った後にドライバコントローラから送られるLATHD信号がハイレベルとなるのを待つ。そしてその後リターンする。
ドライバコントローラ190より各ドライバへは、走査アドレスレジスタ527に設定された情報に基づいて行われるが、これはシステムコントローラ160よりのDSTレジスタ528への書き込みが行われたことにより開始される。DSTレジスタ528への書き込みが行われると、タイマユニット902より出力されるTOUT0に同期して新しい1H期間としてドライバ制御信号の送出を開始し、同時に1Hディレイバッファであるバッファ521又は522に格納された画像データがU−SEGドライバ102、L−SEGドライバ103に分割されて転送される。なお、この1H制御の詳細は後述する。
これにより、通常アドレス描画が行われ、FLCD側の送られてきたラインの表示更新制御が行われることになる。
一方、ステップS210の判断でアドレス範囲が同一アドレスであった場合にはステップS210よりステップS220に進み、受信したアドレス値を直前の走査アドレス値(preadd)としてrw3に格納する。そしてステップS221でダミーアドレスを走査アドレス(CSADS)レジスタ527にセットする。続いてステップS222でタイマユニット902のコンペア割り込みビット(直前の走査アドレスの駆動開始タイミングとなるまで)を待つ。
その後ステップS223でDSTレジスタ528に書き込んで1Hをスタートさせ、図10に示す構成によりCOMドライバ104、セグメントドライバ102、103によるFLCDパネル150の駆動、表示データの書き換え制御を行う。そしてステップS224でタイマユニット902をクリアし、次のステップS225でドライバコントローラ190側の1H動作を行った後にLATHD信号がハイレベルとなるのを待つ。
LATHD信号がハイレベルとなるとステップS226でrw3にセットしていた直前の走査アドレス値(preadd)を走査アドレス(CSADS)レジスタ529に格納する。そしてステップS227でタイマユニット902のコンペア割り込みビット(次の走査アドレスの駆動開始タイミングとなるまで)を待つ。その後ステップS228で1Hをスタートさせる。そしてステップS229でタイマユニット902をクリアし、次のステップS230でドライバコントローラ190側の1H動作を行った後にLATHD信号がハイレベルとなるのを待つ。
LATHD信号がハイレベルとなるとステップS231に進み、SDIを送出してセグメントデータの転送を開始してFLCDパネル150より次のラインの走査を開始する。そして、以下のステップS232〜ステップS236で上述したステップS221〜ステップS225と同様の処理を行い、その後ステップS237でrw3にダミーアドレスをセットしてこれを直前の走査アドレス値(preadd)とする。そしてリターンする。
これにより、同一アドレスのくり返し表示制御が可能となる。
更に、ステップS208の判定で走査モードの変更が指示されていた場合にはステップS208よりステップS240に進み、受信したスキャンモード値をrw2に格納する。そしてステップS241でダミーアドレスを走査アドレス(CSADS)レジスタ527にセットする。続いてステップS242でタイマユニット902のコンペア割り込みビット(ダミーアドレスの駆動開始タイミングとなるまで)を待つ。
その後ステップS243でDSTレジスタ528に書き込んで1Hをスタートさせ、図10に示す構成によりCOMドライバ104、セグメントドライバ102、103によるFLCDパネル150の駆動、表示データの書き換え制御を行う。そしてステップS244でDACT信号がローレベルとなるのを待ってステップS245に進み、rw5にOFFをセットし、タイマを停止する。
続いてステップS246でマスクした受信データの図36に示すコモンスキャンアドレスを除く4ビットを調べ、スキャンコード部分の下2ビットが0であるか否かを調べる。下2ビットが0であればステップS247に進み、スキャンモードをここで指定されたスキャンコードとして走査モードを指示された走査モードとする。そして、ドライバコントローラ190の走査アドレス(CSADS)レジスタ527等を更新してリターンする。
一方、ステップS246でスキャンコード部分の下2ビットが0でない場合にはステップS249に進む。この場合には、走査モードの指定が誤っていることが考えられるため、回復可能エラーアテンション(スキャンエラーアテンション)を選択し、ステップS250でFLCDインタフェース2に送信する。そして続くステップS251でrw2に現在のスキャンモードをセットしてバッファポインタを更新してrw4に格納してリターンする。その後通常の表示モードでの通常描画処理に移行することになる。
更に、ステップS209でスキャンアドレスがアドレス範囲でなかった場合にはステップS260に進み、ダミーアドレスを走査アドレス(CSADS)レジスタ527にセットする。続いてステップS261でタイマユニット902のコンペア割り込みビット(ダミーアドレスの駆動開始タイミングとなるまで)を待つ。その後ステップS262でDSTレジスタ528に書き込んで1Hをスタートさせ、図10に示す構成によりCOMドライバ104、セグメントドライバ102、103によるFLCDパネル150の駆動、表示データの書き換え制御を行う。そしてステップS263でDACT信号がローレベルとなるのを待ってステップS264に進み、rw5にOFFをセットし、タイマを停止する。
次にステップS265でアドレス範囲外のアテンションを選択する。そしてステップS266で同一のアテンションについてチェックし、ステップS267で同一アテンションがあるか否かを調べる。ここで。同一アテンションがある場合にはそのままリターンし、通常のスキャン停止モードに移行する。
一方、ステップS267で同一のアテンションがなかった場合にはステップS268に進み、選択したアドレス範囲外のアテンションを送信し、rw4のバッファポインタを更新する。そして上述同様リターンする。
また、上述したステップS204、205のループ処理において、FLCDインタフェース2よりのAHDL信号がハイレベルとなることなくタイムアウトとなった場合にはステップS205より図42のステップS270に進み、BUSY信号をローレベルとし、続くステップS271でダミーアドレスを走査アドレス(CSADS)レジスタ527にセットする。ステップS272でタイマユニット902のコンペア割り込みビット(ダミーアドレスの駆動開始タイミングとなるまで)を待つ。
その後ステップS273でDSTレジスタ528に書き込んで1Hをスタートさせ、図10に示す構成によりCOMドライバ104、セグメントドライバ102、103によるFLCDパネル150の駆動、表示データの書き換え制御を行う。そしてステップS274でDACT信号がローレベルとなるのを待ってステップS275に進み、rw5にOFFをセットし、タイマを停止する。
続いてステップS276でAHDLのタイムアウトのリトライカウンタ(ahdlretry)が0か否かを調べる。0であればステップS277に進み、回復可能エラーアテンション(AHDLタイムアウトアテンション)を選択し、ステップS278でFLCDインタフェース2に送信する。そして、ステップS280に進む。
ステップS280では、AHDLのタイムアウトのリトライカウンタ(ahdlretry)を1つ加算し、ワークレジスタの1(rw1)をdispmodeで設定される表示動作に、及びエラー状態をerrstatとし、ワークレジスタの3(rw3)をダミーアドレスに、ワークレジスタの4(rw4)のバッファポインタを更新する。そして通常スキャン停止モードにリターンする。
また、ステップS276でAHDLのタイムアウトのリトライカウンタ(ahdlretry)が0でない場合にはステップS279に進み、AHDLのタイムアウトのリトライカウンタ(ahdlretry)が40以下か否かを調べる。AHDLのタイムアウトのリトライカウンタ(ahdlretry)が40以下の場合にはステップS280に進む。
一方、ステップS279でAHDLのタイムアウトのリトライカウンタ(ahdlretry)が40以下でない場合にはステップS281に進み、回復可能アテンションを選択する。そしてステップS282で同一のアテンションがあるか否かを調べる。ここで。同一アテンションがない場合にはステップS283に進み、回復不可能アテンションを選択する。そしてステップS284でこれを送信する。
続いてステップS287でエラーステータスにAHDLエラーをセットする。そして次にステップS288でLED109を短い周期(0.5秒間隔)でブリンクさせ、ステップS280に進む。
一方、ステップS282で同一アテンションがあった場合にはステップS285に進み、回復不可能アテンションを選択し、ステップS286でこのアテンションを送信することなく送信バッファの入れ換えを行う。そしてステップS287に進む。
以上におけるAHDLのタイムアウト時間は、具体的にはBUSY信号を立ち上げた後25msとなっており、この時間が経過するとBUSY信号を出力し、回復可能エラーアテンションを発行した後再びBUSY信号をリセットしてハイレベルとし、再度のAHDL信号の受信を監視することになる。そして、AHDL信号がきた場合にはClearアテンション発行して以後正常動作に移行する。この状態遷移を図44に示す。
また、AHDLタイムアウトが発生して回復可能エラーアテンションを発行した後、このリトライが規定の回数(40回)に達した場合にはFLCDパネル150を走査しない寡黙モードに移行する。そして、Clearアテンション発行し、その後回復不可能アテンションを発行することになる。この状態遷移を図45に示す。
更に、アテンションがクリアされても、AHDLを受け取るまではBUSYはローレベルに維持されており、25msが経過した時点で新たなAHDLタイムアウトが発生したものとして扱っている。この際の状態遷移を図46に示す。
以上の様にして表示データの授受に関してはFLCD3側の主導で行われており、以下に説明するFLCDパネルの温度により走査タイミングを補正して表示画質の高画質化を図ることを可能としている。
以下、本実施例におけるFLCDパネル150における検知温度に従った走査タイミングの補正制御を説明する。本実施例におけるセグメントドライバ102及び103、COMドライバ104による駆動波形の例を図47に示す。この波形は、図10に示すドライバコントローラ190よりのCWFD0−3及びSWFD0−3によって規定される波形であり、この波形は温度補償テーブルより出力される1Hコード及びタイマユニット902の発生する クロックタイミングにより1周期が決定され、液晶駆動電圧レギュレータ183の出力電圧V1、V5、V2、V3、V4及びVCにより波高値が決定される。
この本実施例のFLCDパネル駆動波形の例を図47に示す。図の走査選択信号がCOMドライバ104の駆動信号波形を示し、情報信号がSEGドライバ102、103の駆動波形を示している。VopcodeとFLCDパネル駆動電圧との関係は、以下に示すようなものとなる。
DAOUT=VopCode×5.0/256
V1−VC=VC−V2=3.49×DAOUT
=0.0681×VopCode [V]
V5−VC= 1.58×DAOUT
=0.0309×VopCode [V]
V3−VC=VC−V4=1.44×DAOUT
=0.0282×VopCode [V]
であり、1HCodeと1Hの関係は、
1H=(CSCLK周期)×5×(1HCode+1)×0.4×5
[μsec]となる。
以上の駆動波形を生成するFLCDパネルの駆動条件に対する温度特性の補償を、温度センサ105により検知されるFLCDパネル150近傍の温度信号に基づき、パネルに印加される駆動電圧(Vop)と駆動周期(1H)によって行なう。そして、すべての電気系のばらつきと、FLCDパネル特性のばらつきとを吸収するため、画質調整トリマ107により温度信号が微調整される。
なお、駆動波形電圧は、Vcを中心に温度変化に伴い上下対称に電圧値が変化する様に構成している。この補償は図10に示す構成により行う。
図10に示す温度補償テーブル901の例を図48、図49に示す。図48は温度補償テーブル901に入力されるアナログ−デジタル変換回路904、905よりの入力AD値に対する出力1H時間及びVop駆動電圧出力値を示しており、AD値が小さいほど温度が高くなっており、AD値0で略60℃程度、175程度で略5℃程度となっている。本実施例では、60℃以上に温度が上昇することが無い様に設計されており、テーブルは60℃迄の補償データが備えられている。
図49は各環境温度におけるスタート時とスタートから十分な時間が経過して内部温度が飽和した時点とにおけるフレーム周波数の例である。
ここでフレーム周波数とは、本実施例における走査線1024本が書き換えられる時間の逆数である。
次に、以上に概略を述べた温度補償の具体的な制御を図50〜図57を参照して以下に説明する。本実施例では、ユーザトリマ監視のインターバルは1Hに依存しない100ms毎であり、ユーザトリマの値が直前の値に対して変化しない場合には処理を終了し、変化があった場合には温度補償を行う。また、ユーザトリマに変化が無い場合においても、30秒毎に温度補償を行う。
この温度補償ルーチンは、上述したステップS133又はステップS166の処理である。本実施例では、画質調整トリマ107よりトリマインタフェース174を介してシステムコントローラに入力されるアナログ調整信号Vuをアナログ−デジタル変換器905で対応するデジタル信号(UVR)に変換して取り込む必要があり、まずステップS301で、このアナログ−デジタル変換器905を入力する対象として指定する。
そしてステップS302でアナログ−デジタル変換器905を起動する。そして、続くステップS303でリターンコードが0か否かを調べる。これは、ステップS302でアナログ−デジタル変換器905が起動されると、所定時間内にアナログ−デジタル変換が行われ、変換終了の旨の割り込みがなされ、この時にアナログ−デジタル変換が終了した場合にはリターンコードが0となっており、0でなければアナログ−デジタル変換のタイムアウトが発生していることになる。このため、ステップS303でリターンコードが0でない場合には後述する図55に示すステップS345以下のアナログ−デジタル変換タイムアウト処理に移行する。
一方、ステップS303でリターンコードが0の場合にはステップS304に進み、アナログ−デジタル変換器905の変換結果をユーザトリマAD値を保持するuvrレジスタにセットする。続いてステップS305で、温度補償タイミング用カウンタ(compc)を1つデクリメントする。そしてステップS306で温度補償タイミング用カウンタ(compc)が0か否かを調べる。温度補償タイミング用カウンタ(compc)が0でなければステップS307に進み、ステップS304でセットして読み込んだユーザトリマAD値とuvrprevに格納されている直前のユーザトリマAD値とを比較し、両値が等しいか否かを調べる。両値が等しければユーザによる調整は行われなかったことになるため、図51のステップS310に進む。
ステップS310では、ユーザトリマ監視のインターバルである100msを1Hで除算し、結果をユーザトリマ監視タイミング用描画カウンタ(linc)に格納してステップS311に進む.
そしてAHDLタイムアウトのカウンタ値をセットし,リターンコードに0をセットして当該処理を終了する。
一方、ステップS306で温度補償タイミング用カウンタ(compc)が0である場合、又はステップS307で読み込んだユーザトリマAD値と直前のユーザトリマAD値とが異なっている場合には共にステップS315に進む。そしてステップS315でユーザトリマAD値を保持するuvrレジスタ値をuvrprevに格納する。そして、続くステップS316で温度センサ105より検知温度を読み込むべく、アナログ−デジタル変換器904を入力する対象として指定する。
そしてステップS317でアナログ−デジタル変換器904を起動する。そして、続くステップS320でリターンコードが0か否かを調べる。ステップS320でリターンコードが0でない場合には後述する図55に示すステップS345以下のアナログ−デジタル変換タイムアウト処理に移行する。
一方、ステップS320でリターンコードが0の場合にはステップS321に進み、検知したパネル近傍の温度が予め定めた温度の上限値以上か否かを調べる。上限値以上であれば図56に示す温度上限ルーチン(comp htmperr)に移行する。
また、ステップS322で、検知したパネル近傍の温度が予め定めた温度の上限値以下の場合にはステップS323に進み、検知したパネル近傍の温度が予め定めた温度の下限値以下か否かを調べる。下限値以下であれば図57に示す温度下限ルーチン(comp ltmperr)に移行する。
更に、ステップS323で、検知したパネル近傍の温度が予め定めた温度の下限値以上の場合には図53に示すステップS325に進む。ステップS325では、検知したパネル近傍の温度が予め定めた境界温度以上か否かを調べる。検知したパネル近傍の温度が予め定めた境界温度以上でない場合にはステップS326に進み、検知した温度領域が高温域か否かを調べる。検知した温度領域が高温域の場合にはステップS330に進む。
一方、検知した温度領域が高温域でない場合にはステップS326よりステップS327に進み、波形変更ルーチンを実行する。続いてステップS328で高温域用境界温度を新たな境界温度とする。そして続くステップS329で高温域用温度補償テーブルを選択する。そしてステップS330に進む。ステップS330では、ユーザトリマAD値を保持するuvrレジスタ値を新たな測定温度として登録し、温度センサ105のAD値と画質調整トリマ調整値を加えてadvalueに格納して図54のステップS335に進む。
一方、ステップS325で検知したパネル近傍の温度が予め定めた境界温度以上の場合にはステップS331に進み、検知した温度領域が低温域か否かを調べる。検知した温度領域が低温域の場合にはステップS330に進む。
一方、検知した温度領域が低温域でない場合にはステップS331よりステップS332に進み、波形変更ルーチンを実行する。このルーチンでは、検知温度に対応した温度補償テーブル中の波形データテーブルを参照して駆動条件を設定し、波形を決定して温度に応じて波形を変更可能とし、リターンコードを0に設定する処理である。続いてステップS333で低温域用境界温度を新たな境界温度とする。そして続くステップS329で低温域用温度補償テーブルを選択する。そしてステップS330に進む。
また、ステップS330よりステップS335に進むと、ステップS335で画質調整トリマ調整値を加えた温度センサ105のAD値を記憶するadvalueの値に従って、温度補償テーブルのタイマユニット902に対する1HCodeテーブルを読み出し、システムコントローラ160内のclkレジスタにセットする。続いてステップS336でこれを不図示の16ビットタイマにセットする。続いてステップS337でこのclkレジスタをインクリメントしてタイマレジスタ902へセットする1HCode(hcode)として出力する。
また、ステップS338で、画質調整トリマ調整値を加えた温度センサ105のAD値を記憶するadvalueの値に従って、温度補償テーブルのドライバコントローラ190に対するVopCodeテーブルを読み出す。続いてステップS339で読み出したVopCodeをVopコントローラ173のデジタルアナログ変換器にセットする。
また、ステップS339−2で温度補償タイミング用カウンタ(compc)に300をセットしてステップS340に進む。
そして次のステップS340で画質調整トリマ調整値を加えた温度センサ105のAD値を記憶するadvalueの値をコードテーブルとしてhcode(1Hをホストに通知するためのコード)にセットする。そして続くステップS341でこのデータが直前の値と同じか否かを調べる。直前の値と同じである場合にはステップS310に進む。
一方、ステップS341でhcodeが直前の値と同じでない場合にはステップS342に進み、1Hコード変化アテンションを選択する。そしてステップS343でこのアテンションをFLCDインタフェース2の送信する。そしてステップS310に進む。
また、図52のステップS322で温度センサ105の検知温度が予め定めた上限値以上であった場合には図56に示すステップS360に進み、温度センサ105より検知温度を読み込むべく、アナログ−デジタル変換器904を入力する対象として指定する。そしてステップS361でアナログ−デジタル変換器904を起動する。そして、続くステップS362でリターンコードが0か否かを調べる。ステップS362でリターンコードが0でない場合には後述する図55に示すステップS345以下のアナログ−デジタル変換タイムアウト処理に移行する。
一方、ステップS362でリターンコードが0の場合にはステップS363に進み、再度読み込んだ結果温度センサ105の検知温度が予め定めた上限値以上か否かを調べる。上限値以上でない場合には図52のステップS321に進む 。
一方、ステップS363で検知温度が予め定めた上限値以上の場合には、温度センサであるサーミスタの断線であると判断してステップS364に進み、エラー状態を示すerrstatにエラー状態をセットし、続くステップS365で自己診断結果コードdiagnosisのサーミスタ断線エラービットを設定する。そしてステップS366でサーミスタ断線エラーアテンションを選択する。続いてステップS377でこのアテンションをFLCDインタフェース2に送信する。そして、ステップS388でLED109をエラー状態を示す短い周期のブランキング状態に設定して当該処理を終了してリターンする。
また、図52のステップS323で温度センサ105の検知温度が予め定めた下限値以下であった場合には図57に示すステップS390に進み、温度センサ105より検知温度を読み込むべく、アナログ−デジタル変換器904を入力する対象として指定する。そしてステップS391でアナログ−デジタル変換器904を起動する。そして、続くステップS392でリターンコードが0か否かを調べる。ステップS392でリターンコードが0でない場合には後述する図55に示すステップS345以下のアナログ−デジタル変換タイムアウト処理に移行する。
一方、ステップS392でリターンコードが0の場合にはステップS393に進み、再度読み込んだ結果温度センサ105の検知温度が予め定めた下限値以下か否かを調べる。下限値以下でない場合には図52のステップS321に進む。
一方、ステップS393で検知温度が予め定めた下限値以下の場合には、温度センサであるサーミスタの短絡であると判断してステップS394に進み、エラー状態を示すerrstatにエラー状態をセットし、続くステップS395で自己診断結果コードdiagnosisのサーミスタ短絡エラービットを設定する。そしてステップS396でサーミスタ短絡エラーアテンションを選択する。続いてステップS397でこのアテンションをFLCDインタフェース2に送信する。そして、ステップS398でLED109をエラー状態を示す短い周期のブランキング状態に設定して当該処理を終了してリターンする。
さらに、以上の各ステップでリターンコードが0でない場合には、アナログ−デジタル変換のタイムアウトであると判断して図55に示すステップS345に進む。そしてステップS345でエラー状態を示すerrstatにエラー状態をセットし、続くステップS346で自己診断結果コードdiagnosisのAD変換エラービットを設定する。そしてステップS347でAD変換エラーアテンションを選択する。
続いてステップS348でこのアテンションをFLCDインタフェース2に送信する。そして、ステップS349でLED109をエラー状態を示す短い周期のブランキング状態に設定する。そしてステップS350でリターンコードをffffHにセットして当該処理を終了してリターンする。
上述した様に本実施例においては、ユーザトリマ監視のインターバルは100ms毎であり、ユーザトリマの値が直前の値に対して変化しない場合には温度補償ルーチンを終了し、変化があった場合には温度補償を行う。また、ユーザトリマに変化が無い場合においても、30秒毎に温度補償を行う。
次に図58を参照して図29のパネル停止処理を説明する。ここでは、ドライバコントローラ190及びCOMドライバ104の後処理を行ってFLCDパネル150の駆動を停止させる。
まずステップS401でSDIを送出してセグメントデータの転送を開始してFLCDパネル150より次のラインの走査を開始する。そして、ラインバッファをチェンジする。続いてステップS402でダミーアドレスを走査アドレス(CSADS)レジスタ527にセットする。次にステップS403でタイマユニット902のコンペア割り込みビット(走査アドレスの駆動開始タイミングとなるまで)を待つ。
その後ステップS404でDSTレジスタ528に書き込んで1Hをスタートさせ、図10に示す構成によりCOMドライバ104、セグメントドライバ102、103によるFLCDパネル150の駆動、表示データの書き換え制御を行う。そしてステップS405でDACT信号がローレベルとなるのを待ち、DACT信号がローレベルとなるとステップS406でタイマユニット902をクリアしリターンする。
続いて、図27のステップS131その他の色彩スイッチルーチンの詳細を図59を参照して以下に説明する。
まずステップS410でトリマインタフェース174を起動して色彩調整を行うための色彩調整スイッチ(コントラストエンハンスメントスイッチ)108の設定値であるグレイコード(GrayCode)、即ちコントラストエンハンスメントスイッチの値(cevalue)を取り込む。そしてステップS411でこの値が直前のコントラストエンハンスメントスイッチの値(cevalue)と等しいか否かを調べる。直前の値と等しければ処理を終了してリターンする。
一方、直前のコントラストエンハンスメントスイッチの値(cevalue)と等しくない場合にはステップS411よりステップS412に進み、読み込んだ値に対してグレイ−バイナリ変換処理を行い、グレイコードを対応するバイナリコードに変換してこの値を新たなコントラストエンハンスメント値(cecode)とする。そしてステップS414でCEcode変化アテンションを選択し、これをFLCDインタフェース2に送信し、リターンする。
以上の様にして、FLCD3よりFLCDインタフェース2にこの色彩調整スイッチ108の設定値(コントラストエンハンスメントスイッチ(CESW)の値)を送ることができる。このFLCD3における色彩調整スイッチ108の詳細構成を図60に、コントラストエンハンスメントスイッチの値との関係を図61に示す。
図60に示す様に本実施例においては、色彩調整スイッチ108は、3回路のスイッチであり、各スイッチのON/OFF状態に従って8ポジションのグレーコードを発生し、トリマインタフェース174のプルアップ抵抗Rpによりスイッチ回路開放状態でハイレベル、閉接状態でローレベルの出力となる様に構成されている。そして、各信号の状態は図61に示す様になっており、ポジション0がもっとも階調の少ないFLCDパネル150の基本スペックである16階調であり、以下階調が上がりポジション7では略32K階調を指示する構成となっている。
そして、このCESWのグレイコードを受け取ったシステムコントローラ160がステップS413の処理で図61に示すグレイコードをバイナリコードに変換してステップS415でFLCDインタフェース2に送ることになる。この送信処理の詳細は図18において詳細に示した通りである。
スイッチの値を受け取ったFLCDインタフェース2では、ルックアップテーブルで構成されているデガンマ回路309内のデガンマテーブルをROM308を参照することで書換える。この結果、FLCDパネル150の表示画像のコントラストを変更することになる。デガンマ回路309で補正されたホスト1よりの画像データは、2値化中間調処理回路305に出力され、2値化中間調処理回路305は、この画像データを誤差拡散法に基づいてRGB各8ビットからRGBを各1ビットに2値化すると共に輝度の高低を示す2値信号を出力することになる。
次に、図20におけるステップS57のパワーOFFシーケンスの詳細を図62を参照して以下に説明する。本実施例においては、パワーOFFシーケンスが実行されるのは、以下の3つの場合がある。
1.SW電源120の電源がOFFされ、SW電源120よりのAFC信号が付勢されて実行される場合(図62の処理終了後ハードウエアリセットのエントリーポイントに戻る。)。
2.FLCDインタフェース2よりのRESET信号が付勢されて実行される場合(図62の処理終了後RESET信号が消勢されるのを待ち、RESET信号の消勢後ハードウエアリセットのエントリーポイントに戻る。)。
3.FLCDインタフェース2よりのPOWERON信号が消勢されて実行される場合(この場合には図62の処理終了後POWERON信が付勢されるのを待ち、POWERON信の付勢後ハードウエアリセットのエントリーポイントに戻る。)。
パワーOFFシーケンスでは、まずステップS420でドライバコントローラ190による走査である1Hが終了して、この1Hの終了を報知するDACT信号がくるのを待ち、続いてステップS421でバックライトコントローラ172に指示してBLSWをOFFしてバックライトを消灯させる。そして続くステップS422〜ステップS424でFLCDパネル150にすべて黒を書き込む全黒消去処理を実行する。これは、FLCDパネル150は表示データを記憶する構成であるため、この処理を行わなければ表示画面に従前の表示データが残ってしまうためである。
具体的には、ステップS422でCOMドライバ104及び両セグメントドライバ102、103を付勢し全出力がVCを選択する様にセットする。続くステップS423でセグメントドライバ102、103への情報信号を(1H×30)の間暗を表示するための情報信号レベルであるV4に固定する。そしてステップS424で(1H×30)の間Vc固定する。以上によりFLCDパネル150のすべての表示セグメントが全黒消去される。
このため、続くステップS425でDRVSW信号をOFFとして液晶駆動電圧の出力をオフする。その後2ms待ってステップS426に進み、各ドライバ回路の出力チャネル電源(VEE)を付勢するVEESW信号をOFFとする。その後当該処理を終了してリターンする。
このパワーOFFシーケンスによる本実施例表示装置のパワーOFFシーケンスのタイミングチャートを図63に示す。図63に示す例はAFC信号が消勢したAFC検知による割り込みルーチンよりの場合を例として示している。
本実施例においては、FLCDインタフェース2とFLCD3とは、シリアル通信により各種制御データ等を通信しており、このために、FLCD3のシステムコントローラ160は以下の通信制御を行っている。
通常描画中であるNormalモードにおいては、1H毎に内蔵するRAM162の受信バッファと送信バッファをポーリングしている。そして静止状態であるStaticモード、全黒消去中であるSleepモード及び回復不可能エラー状態時等のWaitモードにおいては、シリアル通信送受信処理とバッファからの送信が終了する毎に受信バッファと送信バッファをポーリングする。
はじめに受信バッファを確認し、新しい受信データがある場合には以下に説明する受信処理を行う。ついで、送信データバッファに送信データがある場合には送信処理を行う。
以上の処理において、通常描画の場合において、ポーリングまではFLCDパネル150の駆動と同時に行うが、受信処理又は送信バッファからの送信処理を行う場合には、駆動を停止した後にこれらの対応する処理を行う。なお、電源ONからUnitReady Attention発行までの間と、自己診断実施中は、送受信コマンドや受信したコマンドに対する処理は行わず、係る処理の終了後に行う。
通信制御手順は上述した通りであるため、ここで再度の説明は行わないが、FLCD3の内部処理においては以下の様に動作する。
即ち、コマンドを受信した場合には、FLCDパネル150の駆動を停止し、受信したコマンドの処理とステータスの送信を行うことになるが、この際、送信したステータスは上述したフローチャートで示した様に次のコマンドを受信するまでの間ポインタを操作しないため、ステータスも次のコマンドを受信するまで保持されることになる。従って再送する必要が生じた場合にも特別の操作などを行わずに速やかに再送することができる。この間のFLCD3の内部処理の状態を図64に示す。
また、アテンション発行を起動要因としてシリアル通信を行う場合においても、アテンション状態が、アテンション発行からアテンション状態を解消するコマンド(ClearAttntion)を受信するまで設定され、この間は特定コマンドのみに応答する。アテンション事象の詳細情報(AttentionInformation)はアテンションの間保持される。この間のFLCD3の内部処理の状態を図65に示す。
更に、アテンション状態の間にコマンドを受信した場合には、受信したコマンドに対するステータスは、アテンション状態が解消された後に送信される。また、特定コマンドに対するSendedStatusの保持は行われず、直前のものが更新されずに保持される様に制御する。この間のFLCD3の内部処理の状態を図66に示す。
以上の送信イメージとステータス等の送信データバッファへのバッファリング制御を説明すると、本実施例のFLCD3は、ステータス及びアテンションの送信に対し、送信データに加え、送信の優先順位と送信後の保持動作情報、及びアテンション事象の詳細情報(AttentionInformation)を含む送信イメージを設定する。そして、直前の送信が終了していない場合や、アテンションの終了していない場合は、優先順位に従いバッファリングを行い、送信が可能になった段階で送信及び保持動作を行う。
以上の処理における本実施例の送信イメージの例を図67に、送信イメージにおける優先順位の設定例を図68に示す。
また、本実施例においては、シリアル通信のコマンドによりFLCD3のメモリ空間へのアクセスが可能であり、ROM161のメモリ空間の読み出し/RAM162のメモリ空間に対する読み書きが可能である。この際、通信によりアクセスできるメモリ空間をアクセス空間、ROM161およびRAM162内の実際のアドレス空間を実アドレス空間と定義すると、本実施例においてはシリアル通信時における伝送量の減少化のためにメモリアクセスの写像化を行っており、通信によるアクセスでは実アドレス空間を認識することができない。そして、アクセス空間64Kバイトは、16Mバイトの実アドレス空間の任意のアドレスへ4Kバイト単位で写像される構成としている。
この本実施例のFLCD3のメモリアクセスの写像化を以下図69を参照してに説明する。
シリアル通信によるコマンドでの指定アドレス空間は1001に示す16ビットであり、この内の下位12ビットを実アドレス空間の下位12ビットとして使用し、残りの上位4ビットを属性テーブル1002へのポインタとして用いている。本実施例では、属性テーブル1002は全部で16ワードの構成となっており、4ビットで指定可能となっている。
この属性テーブル1002は、1003に示す様に実アドレス空間で4Kバイト単位に区切られたブロックを指定する12ビットの実アドレス部分と、各ブロックの読み出し/書き込み属性を指定する4ビットの部分とより構成されている。
以上の様に属性テーブルを用いて写像化を行っているため、少ない通信量でより大容量の実アドレス空間をアクセスでき、通信効率が向上する。
以下、以上の制御を伴う本実施例の上述したシリアル通信処理を図70〜図97を参照して以下に説明する。まず、図70〜図95を参照して図31のステップS190におけるSC受信処理ルーチンを説明する。
SC受信処理においては、まず図70のステップS430で受信データがあるか否かを調べる。ここで、受信データがなければそのままリターンする。一方、受信データがある場合にはステップS430よりステップS431に進み、正常受信であったか否かを調べる。正常受信でなければステップS432に進み、エラー内容に従ってエラーステータスを選択し、続くステップS433で選択したエラーステータスのFLCDインタフェース2への送信処理を実行する。
一方、ステップS431において、正常受信であった場合にはステップS434に進み、受信コマンドの上位4ビットを調べてコマンド種類を判別する。そしてステップS436でコマンドの要求に応じて以下の図71〜図82に示す処理のいずれか1つを実行する。その後処理を終了してリターンする。
次に、ステップS436の受信コマンドに対応した処理を説明する。
ステップS434で上位4ビットが(0x)hの場合には図71の処理を実行する。まずステップS440で残る下位4ビットを調べてさらにコマンド種類を判別して、SC受信処理ルーチン3においてコマンドの要求に応じた処理を実行してリターンする。このSC受信処理3については後述する。
ステップS434で上位4ビットが(1x)hの場合には、図72の処理を実行する。この場合にはFLCD3の自己診断の指示であるため、まずステップS445で上述した図21に示す自己診断ルーチンを実行する。そして、続くステップS446で自己診断の結果によりステータスを選択し、ステップS447でFLCD2へ送信する。そして当該処理を終了してリターンする。
ステップS434で上位4ビットが(2x)hの場合には、図73の処理を実行する。この場合にはホストのIDを通知するコマンドであるため、まずステップS450で受信したホストのIDが予め認められたものであるか否かを調べる。ここで、ホスト側(FLCDインタフェース2側)より送られたホストのIDが予め認められたもの、即ち接続を許されたものである場合にはステップS451に進み、この送られてきたホストのIDを所定の記憶領域に格納する。そして続くステップS452で正常終了ステータスを選択して生成し、ステップS453で送信する。そして当該処理を終了する。
一方、ステップS450でホストのIDが予め認められたものでない場合にはステップS450よりステップS454に進み、異常終了ステータス(定義外ホストID)を選択して生成し、ステップS453に進んでこれをFLCDインタフェース2に送信する。
ステップS434で上位4ビットが(3x)hの場合には、図74の処理を実行する。この場合にはFLCD3の表示モードの切り換え指示であるため、ステップS455でまず遷移コードでコール先を判別し、ステップS456で上述した動作モードルーチンを実行する。そして、表示モードを通常表示、スタティク表示、およびスリーブの3モードの内より判別した表示モードに設定する。そして当該処理を終了してリターンする。
ステップS434で上位4ビットが(4x)hの場合には、図75の処理を実行する。この場合にはFLCD3をマルチ駆動モードに設定するコマンドであるため、まずステップS460でコマンドと共に送られてくるMultiValueを取り込んで格納する。そしてステップS461でマスクパターン1を表引きして格納し、続くステップS462でマスクパターン2を表引きして格納する。そしてステップS463で正常終了ステータスを選択して生成し、ステップS464で送信する。そして当該処理を終了する。
一方、通常のユーザ使用状態である場合においては、ステップS434で上位4ビットが(4x)h以上であった場合には、図76の処理に移行し、ステップS465で定義外コマンドを示すエラー終了を送出してリターンする。これは、(8x)h以上のコマンドはデバック用であり、一般ユーザにおけるアプリケーションプログラムによる使用状態時には、用いないものであるからである。
ただし、不図示の保守モード(デバックモード)への設定時においては、(8x)h以上のコマンドであってもデバック様に用いる必要があり、係る場合には図76に進む処理は行わず、図77〜図82に示す処理を実行可能に構成されている。以下、この保守モード時のSC受信処理を説明する。この場合には以上の図71〜ス75の処理に加え、以下の各コマンド受信および対応処理を実行する。
ステップS434で上位4ビットが(8x)hの場合には、図77の処理を実行する。この場合には、FLCD3のメモリ(RAM162)に上位データを書き込むことを指示するWriteHightMemoryコマンドである。このためまずステップS470で指示されたメモリの実アドレス空間が書き込み可能か否かを判断する。このコマンド実行の前提として、後述するSetHH/MH/ML/LLAdorressコマンドによってデータを書き込むべきメモリアドレスのセットが行われていることが必須であり、この先のアドレスセット時に受信した図69に符号1001で示すアドレスのうち、属性テーブル指定情報により指定された属性テーブルの書き込み可能か否かを指示するステータスビットを調べることにより行なう。
書き込みが可能な場合にはステップS471に進み、セットされている実アドレス空間上のデータをいったんロードする。そしてステップS472で上位4ビットに受信データをセットし、ステップS473でセットされている実アドレス空間に再びこのデータを格納する。その後ステップS474で正常終了ステータスを選択し、ステップS475に進む。そしてステップS475でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS470で属性を調べた結果、書き込む可能でない場合にはステップS476に進み、書込不能ステータスを選択し、ステップS475に進む。そしてステップS475でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
また、ステップS434で上位4ビットが(9x)hの場合には、図78の処理を実行する。この場合には、FLCD3のメモリ(RAM162)に下位データを書き込むことを指示するSetLowMemoryコマンドであるため、まずステップS480でステップS470と同様にして指示されたメモリの実アドレス空間が書き込み可能か否かを判断する。
書き込みが可能な場合にはステップS481に進み、セットされている実アドレス空間上のデータをいったんロードする。そしてステップS482で下位4ビットに受信データをセットし、ステップS483でセットされている実アドレス空間アドレス位置に再びこのデータを格納する。その後ステップS484で正常終了ステータスを選択し、ステップS485に進む。そしてステップS485でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS480で属性を調べた結果、書き込む可能でない場合にはステップS486に進み、書込不能ステータスを選択し、ステップS485に進む。そしてステップS485でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
また、ステップS434で上位4ビットが(ax)hの場合には、図79の処理を実行する。この場合には、上述したデータの書き込みを含むFLCD3のメモリアドレスのうちのアドレスビットの上位4ビット(A15−A12)をセットするコマンドであるため、まずステップS490で受信したコマンドのOPコードに含まれる4ビットの受信データを、アクセス空間アドレスの15−12ビットにセットして格納する。
そしてこの場合には属性テーブルの指示であるためステップS491で実アドレス空間アドレスをロードし、実アドレス空間アドレスの23−12ビットをクリアする。続いてステップS493で受信データから属性テーブルを引き、続くステップS494で属性データの15ー4ビットを実アドレス空間アドレスの23−12ビットに格納する。そして、属性データの読み出し書き込み属性を格納する。
その後ステップS497で正常終了ステータスを選択し、ステップS498に進む。そしてステップS498でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
また、ステップS434で上位4ビットが(bx)hの場合には、図80の処理を実行する。この場合には、上述したデータの書き込みを含むFLCD3のメモリアドレスのうちのアドレスビットの中上位4ビット(A11−A8)をセットするコマンドであるため、まずステップS500で受信したコマンドのOPコードに含まれる4ビットの受信データを、アクセス空間アドレスの11−8ビットにセットして格納する。
そしてステップS501で実アドレス空間アドレスの11−8ビットに受信データをセットして格納する。続いてステップS502で正常終了ステータスを選択し、ステップS503に進む。そしてステップS503でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
また、ステップS434で上位4ビットが(cx)hの場合には、図81の処理を実行する。この場合には、上述したデータの書き込みを含むFLCD3のメモリアドレスのうちのアドレスビットの中下位4ビット(A7−A4)をセットするコマンドであるため、まずステップS505で受信したコマンドのOPコードに含まれる4ビットの受信データを、アクセス空間アドレスの7−4ビットにセットして格納する。
そしてステップS506で実アドレス空間アドレスの7−4ビットに受信データをセットして格納する。続いてステップS507で正常終了ステータスを選択し、ステップS508に進む。そしてステップS508でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
更に、ステップS434で上位4ビットが(dx)hの場合には、図82の処理を実行する。この場合には、上述したデータの書き込みを含むFLCD3のメモリアドレスのうちのアドレスビットの下位4ビット(A3−A0)をセットするコマンドであるため、まずステップS510で受信したコマンドのOPコードに含まれる4ビットの受信データを、アクセス空間アドレスの3−0ビットにセットして格納する。
そしてステップS511で実アドレス空間アドレスの3−0ビットに受信データをセットして格納する。続いてステップS512で正常終了ステータスを選択し、ステップS513に進む。そしてステップS513でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
以上のアドレスセットコマンドにより図69に示すアドレス写像化による実アドレス空間指定が実現し、上述したデータセットコマンドによりFLCDインタフェース2側で自由にFLCD3のメモリの内容をアクセスすることができ、例えばこれを利用して容易にFLCDの制御プログラムを書き換えることも可能であり、制御プログラムのバージョンアップにも極めて容易に対処できる。
また、以上の保守モード時のメモリ内容の読み出し処理については後述する。
上述したステップS434で上位4ビットが(0x)hでステップS441のSC受信処理ルーチン3を実行する場合の詳細を説明する。この場合には、下位4ビットの値により図83〜図95の処理を実行することになる。以下、下位4ビットの値に従った説明を行う。
ステップS440で下位4ビットが0で合計8ビットが(00)hの場合には、FLCD3のユニットのID要求コマンドであるため、図83の処理に移行する。まずステップS520でFLCD3のユニットIDをステータスに設定する。そしてステップS521でこのステータスをFLCDインタフェース2に送信し、当該処理を終了してリターンする。
一方、ステップS440で下位4ビットが1で合計8ビットが(01)hの場合には、FLCD3のユニットの1H要求コマンドであるため図84の処理に移行する。そして、ステップS525でFLCD3の現在の1HCodeをステータスに設定する。そしてステップS526でこのステータスをFLCDインタフェース2に送信し、当該処理を終了してリターンする。
一方、ステップS440で下位4ビットが2で合計8ビットが(02)hの場合には、FLCD3のユニットを起動すると共に、BUSY信号を出力させることを要求するコマンドであるため図85の処理に移行する。そして、ステップS530でFLCD3の現在の動作モードが待機状態であるか否かを調べる。ここで、待機状態でなければステップS531に進み、動作モードを設定する。続いてステップS532で正常終了ステータスを選択し、ステップS533に進む。そしてステップS533でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS530で現在の動作モードが待機状態である場合にはステップS534に進み、既にスタート状態であるエラー終了を設定し、ステップS533に進む。そしてステップS533でこの設定したステータスをFLCDインタフェース2に送信してリターンする。
一方、ステップS440で下位4ビットが3で合計8ビットが(03)hの場合には、アテンション情報の要求コマンドであるため図86の処理に移行する。そして、ステップS535でFLCD3の状態がアテンション状態であるか否かを調べる。現在アテンション状態であればステップS536に進み、アテンション情報を設定する。続いてステップS537でこの設定したアテンション情報をFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS535で現在アテンション状態でない場合にはステップS538に進み、アテンション状態でないエラー終了を設定し、ステップS537でこの設定したステータスをFLCDインタフェース2に送信してリターンする。
一方、ステップS440で下位4ビットが4で合計8ビットが(04)hの場合には、アテンションステータスビットの要求コマンドであるため図87の処理に移行する。そして、ステップS540でFLCD3の状態がアテンション状態であるか否かを調べる。現在アテンション状態であればステップS541に進み、アテンションビットを設定する。続いてステップS542でこの設定したアテンションステータスビットをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS540で現在アテンション状態でない場合にはステップS543に進み、アテンション状態でないエラー終了を設定し、ステップS542でこの設定したステータスをFLCDインタフェース2に送信してリターンする。
一方、ステップS440で下位4ビットが5で合計8ビットが(05)hの場合には、FLCD2の表示モード(通常表示モード、スタティクモード、スリープモード)を要求するコマンドであるため図88の処理に移行する。そして、ステップS545でFLCD3の現在の表示モードが上述したいずれの表示モードであるかをステータスに設定する。そしてステップS546でこのステータスをFLCDインタフェース2に送信し、当該処理を終了してリターンする。
一方、ステップS440で下位4ビットが6で合計8ビットが(06)hの場合には、コマンドに対するステータスを要求するコマンドであるため図89の処理に移行する。そして、ステップS550でFLCD3の状態がコマンド保持状態であるか否かを調べる。現在コマンド保持状態であればステップS551に進み、保持しているコマンドをステータスに設定する。続いてステップS552でこの設定したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS550で現在コマンド保持状態でない場合にはステップS553に進み、ステータスを設定してステップS552に進む。そしてこのステップS552で設定したエラーステータスをFLCDインタフェース2に送信してリターンする。
一方、ステップS440で下位4ビットが8で合計8ビットが(08)hの場合、および下位4ビットが9で合計8ビットが(09)hの場合には、FLCD3のメモリの上位4ビットの内容をFLCDインタフェース2側で読み出すコマンドである。これは、上述した上位4ビットが8〜dの場合と同様にデバック用のコマンドである。
ステップS440で下位4ビットが8で合計8ビットが(08)hの場合には、FLCD3のメモリの上位4ビットの内容を読み込むコマンドであり図90の処理に移行する。ステップS555で指示されたメモリの実アドレス空間が読み出し可能か否かを判断する。このコマンド実行の前提として後述するSetHH/MH/ML/LLAdorressコマンドによるデータを書き込むべきメモリアドレスのセットが行われていることが必須であり、この先のアドレスセット時に受信した図69に符号1001で示すアドレスのうち、コマンド中の属性テーブル指定情報により指定された属性テーブルの読み出し可能か否かを指示するステータスビットを調べることにより行なう。
読み出しが可能な場合にはステップS556に進み、セットされている実アドレス空間上のデータをロードする。そしてステップS557で上位4ビットをステータスに設定する。続いてステップS558でこの設定したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS555で属性を調べた結果、読み出し可能でない場合にはステップS559に進み、読み出し不能ステータスを選択し、ステップS558でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
また、ステップS440で下位4ビットが9で合計8ビットが(09)hの場合には、FLCD3のメモリの下位4ビットの内容を読み込むコマンドであり図91の処理に移行する。ステップS560で指示されたメモリの実アドレス空間が読み出し可能か否かを判断する。このコマンド実行の前提として後述するSetHH/MH/ML/LLAdorressコマンドによるデータを書き込むべきメモリアドレスのセットが行われていることが必須であり、この先のアドレスセット時に受信した図69に符号1001で示すアドレスのうち、コマンド中の属性テーブル指定情報により指定された属性テーブルの読み出し可能か否かを指示するステータスビットを調べることにより行なう。
読み出しが可能な場合にはステップS561に進み、セットされている実アドレス空間上のデータをロードする。そしてステップS562で下位4ビットをステータスに設定する。続いてステップS563でこの設定したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS560で属性を調べた結果、読み出し可能でない場合にはステップS564に進み、読み出し不能ステータスを選択し、ステップS563でこの選択したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS440で下位4ビットがaで合計8ビットが(0a)hの場合には、アテンション状態のクリアコマンドであるため図92の処理に移行する。そして、ステップS565でFLCD3の状態がアテンション状態であるか否かを調べる。現在アテンション状態であればステップS566に進み、アテンション状態をクリアして終了ステータスを設定する。続いてステップS567でこの設定したアテンション終了ステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS565で現在アテンション状態でない場合にはステップS568に進み、アテンション状態でないエラー終了を設定し、ステップS567でこの設定したステータスをFLCDインタフェース2に送信してリターンする。
一方、ステップS440で下位4ビットがbで合計8ビットが(0b)hの場合には、FLCDのコントラストエンハンスメント送信要求コマンドであるため図93の処理に移行する。そして、ステップS570でFLCD3のCE(GrayCode)をバイナリコードに変換する。この詳細は上述した。そしてステップS571でこのバイナリ情報に変換したコントラストエンハンスメントをステータスに設定する。続いてステップS572でこの設定したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS440で下位4ビットがcで合計8ビットが(0c)hの場合には、FLCDのマルチ駆動モード(走査モード)の取得要求コマンドであるため図94の処理に移行する。そして、ステップS575でFLCD3の走査モードを示すMultiValueをステータスに設定する。続いてステップS576でこの設定したステータスをFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
一方、ステップS440で下位4ビットが以上に説明したコード以外の場合(7h、0dh、0e、0fh)には図95の処理に移行する。そして、ステップS580で定義外コマンドのエラー終了を設定する。続いてステップS581でこの設定したエラー終了をFLCDインタフェース2に送信する。そして当該処理を終了してリターンする。
次に以上の説明中のFLCDインタフェース2への送信処理を図96を参照して詳細に説明する。
まず、ステップS651で送信のためのハードウエアバッファであるSCIバッファが空か否かを調べる。SCIバッファが空でない場合にはステップS660に進み、送信バッファをサーチし、図68に示す優先順位の高いものの次の位置を探す。そして続くステップS661で挿入位置にデータをセットする。そしてステップS662でSCIバッファのバッファポインタ(buffpointer)を更新してリターンする。
一方、SCIバッファが空の場合にはステップS652に進み、送信情報が図68に示す優先順位のレベル3より低いものであるか否かを調べる。ここで、優先順位がレベル3より高い場合にはステップS653に進み、アテンション状態か否かを調べる。アテンション状態であればステップS660に、アテンション状態でなければステップS654に進む。
一方、優先順位がレベル3より低い場合にはステップS654に進む。ステップS654では、SCIバッファが空か否かを調べる。SCIバッファが空でない場合にはステップS660に進む。
一方、ステップS654でSCIバッファが空の場合にはステップS655に進み、システムコントローラ160はSCIバッファのバッファポインタ(buffpointer)で送信が指示されているデータをFLCDインタフェース2に送信する。続いてステップS656で現在のホールド状態更新処理(ホールド状態のクリア処理)を実行してホールド状態を更新し、ステップS657で送信バッファを更新する。そしてステップS658でSCIバッファのバッファポインタ(buffpointer)を更新してリターンする。
以上の処理におけるステップS656のホールド状態更新処理の詳細を図97のフローチャートを参照して以下に説明する。
まずステップS600で保持しているクリアコードにより以下に示す各ルーチンを選択して処理を実行する。即ち、クリアコードが0であった場合にはステップS601で何もする必要が無いためそのままリターンする。
一方、クリアコードが2である場合にはアテンションビットのクリアであるのでステップS605よりステップS606に進み、送信済みステータス/アテンションの保持状態であるholdstatのアテンションビットをクリアして当該処理を終了してリターンする。
また、クリアコードが3の場合にはアテンションのホールドであるため、ステップS610よりステップS611に進み、送信済みのアテンションイメージを送信済みのアテンションイメージsendedsttenに設定する。続いてステップS612で送信済みステータス/アテンションの保持状態であるholdstatのアテンションビットをセットしてリターンし、当該処理を終了する。
さらに、クリアコードが4である場合にはステータスクリアであるためステップS615よりステップS616に進み送信済みステータス/アテンションの保持状態であるholdstatのステータスビットをクリアしてリターンし、当該処理を終了する。
一方、クリアコードが5の場合にはステータスのホールドであるため、ステップS620よりステップS621に進み、送信済みのステータスイメージを送信済みのステータスイメージsendedatatに設定する。続いてステップS622で送信済みステータス/アテンションの保持状態であるholdstatのステータスビットをセットしてリターンし、当該処理を終了する。
更にまた、クリアコードが以上の値以外であった場合にはエラーであるためステップS625よりステップS626に進み、エラーであるとして何もせずにリターンする。
以上説明した様に本実施例によれば、情報処理システム(或いは装置)では、情報の視覚的表現機能を実現する手段としてCRTと比較して極端に薄くできる強誘電性液晶(Ferroelectric Liquid Crystal)の液晶セルを用いた表示器(FLCD)が、表示内容を記憶する特性を有することに鑑みて、ホスト側と互いの状態を確認するなどのインテリジェンス機能を有しており、システムの立ち上げ時および立ち下げ時に表示内容が見に難くならない様にホスト側の状態にかかわらず自動的に、最適の状態とすることができ、従来の表示装置と比較しても違和感なく使用することができると共に、表示装置側の状態をLEDの表示態様を変えて容易に認識可能に構成しており、適切な対応が可能となる。
また、FLCDはその温度に依存して表示速度が微妙に変化する(温度が高くなるとその速度は早くなる)事に鑑み、データの転送周期もそれに応じて変更する事により、より表示画質の向上が図れる。
更に、FLCDへの表示画像データの転送以外のコミニュケーションはシリアル通信を用いて行うため、FLCDへの表示画像データの転送が犠牲にならず、表示画質がそこなわれることも防止できる。
また、本実施例におけるFLCDインタフェース2とFLCD3との間は、画像データ専用のバス310と、コマンド及びアテンションのやり取りを行うシリアル通信線311の2つのインタフェースを設ける例を説明した。しかし、実際は、これらのインタフェースを1本のケーブル内に納めて接続しているので、ユーザにとっては、あたかも1つのインタフェースを介してデータの授受が行われているように見え、配線の混乱は避けるようにしている。そしてこのケーブルが外れた場合にもこれを容易に認識することができ、ホスト側よりの表示装置側に対する表示データがこなくなった場合にも、表示内容が乱れた状態となってしまうようなことを防ぐことができる。
尚、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用しても良い。また、本発明はシステム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。
以上説明した様に本実施形態によれば、複数の動作モードを備える表示装置であっても、現在の表示動作状態が確実且つ迅速に目視確認することが可能な表示装置及び表示装置の制御方法を提供することが可能となる。
更に、例え表示器に表示内容の記憶機能が備えられていても、確実に表示内容が残って見難くなることを防止できる。また、接続ケーブルが正しく接続されていない場合に、表示制御を停止させることにより、表示に不要な情報が残ることが防止できる。更にまた、接続ケーブルが抜けた時に初期化処理を実行することにより、他の異常発生と同様動作不良が未然に防止できる。