(57)【特許請求の範囲】
【請求項１】
所定ビット数からなるワード単位にアクセスされる表示用メモリに対して、一方向に並ぶ複数画素に対応する展開データをフォントデータから生成し、指定された画素から始まる領域の画素データを、生成された展開データを用いて更新するデータ展開装置であって、
前記指定された画素の画素データを含むワードを指すアドレスと、当該ワードのワード境界から前記指定された画素までに存在する画素数を表すシフト値とを保持する保持手段と、
展開データを保持する第１レジスタと、
バレルシフタを有し、前記第１レジスタに保持された展開データを、指定された画素数に対応するビット数だけ前記バレルシフタによりシフトするシフト手段と、
前記第１レジスタに保持された展開データに隣接して表示されるべき展開データを保持する第２レジスタと、
前記第２レジスタに保持された展開データのうち、前記保持手段に保持されたシフト値が表す画素数に対応する画素データを選択する選択手段と、
前記シフト手段によってシフトされた展開データと、前記選択手段によって選択された画素データとを併合して新たな１ワード分の展開データを生成する併合手段と、
前記保持手段に保持されたシフト値が表す画素数を前記シフト手段に指定することにより前記シフト手段に、前記第１レジスタに保持された展開データを、当該画素数に対応するビット数だけシフトさせ、シフト後の展開データに基づいて、前記保持手段に保持されたアドレスが指すワードを更新し、かつ、前記シフト後の展開データから前記併合手段によって生成された新たな展開データを前記表示用メモリに書き込む更新手段と、
を備え、
前記データ展開装置は、さらに、
前記アドレスが指すワードに対応する全画素の上に一のウィンドウの右側部分が重なって表示される場合、当該ウィンドウの右端の画素の画素データを含むワードを指すアドレスと、当該ワードのワード境界から当該ウィンドウの右端までに存在する画素数を示すシフト値とを保持するように、前記保持手段の保持内容を変更する変更手段、
を備えること、及び、
前記更新手段は、前記保持手段に保持されたアドレスとシフト値とが前記変更手段による変更を受けた場合、前記第１レジスタに保持された展開データを前記シフト手段に、前記変更前のシフト値が示す画素数分のビット数だけ右シフトさせる代わりに、１ワード分に該当する画素数から前記変更前のシフト値を減算した画素数分のビット数だけ左シフトさせること、
を特徴とするデータ展開装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、階調を有するフォントデータから表示用の画素データを展開してＶＲＡＭ（Video RAM）に格納するデータ展開装置に関する。
【０００２】
【従来の技術】
近年、ＴＶ放送（地上波）やＢＳ放送等の受信機、またはＶＴＲやＤＶＤプレイヤー等の機能として、番組表やビデオ内容等に関する文字情報を表示させ、視聴者に提供することが行われている。一般に、上記のようにディスプレイ装置に文字情報を表示させる場合は、「黒と白」というように、２値の階調のフォントによって文字が構成されることが多い。また、文字を表示させる場合に、文字の角張りを緩和したり、ちらつきを軽減させて見やすくするために、上記のように２値ではなく、複数の階調、例えば、「白、グレー、黒」の３階調の無彩色で文字のフォントを構成する方法も実用化されている。さらに、階調を有する有彩色で文字を表現し、見映えを改善する方法も採用されている。
【０００３】
以下、階調を有するフォントデータから、階調を有する有彩色の文字を表現する画素データを生成する処理を「色展開処理」といい、生成された画素データを「色展開データ」という。
図１２は、文字「Ａ」を白、グレー、黒の３階調のフォントで表現する場合のフォント構成図１２０１と、フォント構成に基づいて３階調を表す数字を対応させたフォントデータ１２０２と、フォントデータに基づいて、白、薄緑、緑の３色を当てはめた場合の色展開データ１２０３の例を示す。
【０００４】
図１２のフォント構成図１２０１に示されるように、文字「Ａ」は、７×７画素のフォントから構成される。この場合、各画素は、３つの階調（白、グレー、黒）のうち何れかの階調を有する。フォントデータ１２０２は、文字「Ａ」の各画素の階調に対して、「０（＝白）」、「１（＝グレー）」、「２（＝黒）」の数字が対応づけられている。また、色展開データ１２０３は、フォントデータ１２０２の「０」、「１」、「２」に対して、それぞれ「００（＝背景色）」、「５０（＝薄緑）」、「ＦＦ（＝緑）」が当てはめられて定義されている。なお、この色展開データ１２０３のデータ形式は、ディスプレイ装置に文字の表示を行うために、ＶＲＡＭ（Video RAM）に格納される際のデータ形式である。なお、説明の便宜上、各画素データは８ビットで構成されているものとする。
【０００５】
図１３は、従来における色展開処理を行う色展開装置１３００の機能ブロック図である。色展開装置１３００は、フォントＲＯＭ１３１０、ＲＯＭ１３２０、入力操作部１３３０、ＯＳＤ用記憶部１３４０、ＶＲＡＭ１３５０、主記憶部１３６０、ＣＰＵ１３７０から構成されている。なお、個々の構成は、バス１３８０を介して接続されている。
【０００６】
フォントＲＯＭ１３０１は、階調を有するフォントデータ１２０２を文字単位で格納している。例えば、文字が７×７画素で構成され、１画素の階調が４ビットで表現される場合は、１文字当り１９６ビットのデータを格納することとなる。ＲＯＭ１３２０は、本装置１３００を制御するための制御プログラムを格納する。この制御プログラムは、例えば、ＴＶの番組表としての文字情報を各ウィンドウに表示させるために、本装置１３００を制御するプログラムである。入力操作部１３３０は、ユーザからのリモコン操作等を受け付ける。
【０００７】
ＯＳＤ用記憶部１３４０は、各ウィンドウに関する情報（ウィンドウｉｄ、ウィンドウ位置、ウィンドウサイズ、背景色データ等）と、表示する文字に関する情報（第１文字の左側スペース、表示する文字の文字コード、文字色データ等）とを記憶している。ここで、「第１文字の左側スペース」とは、ウィンドウの左端からそのウィンドウの最も左に表示される文字の左端のフォントまでのスペースをいい、画素数で表す数である。
【０００８】
ＶＲＡＭ１３５０は、画面上に文字をビットマップ表示する場合に、画素データを格納するＲＡＭである。なお、本ＶＲＡＭにおけるデータのビット幅は、８ビット（１バイト）とする。主記憶部１３６０は、上記制御プログラムを実行するための記憶領域を提供する。
ＣＰＵ１３７０は、本装置１３００全体の制御を行う。ＣＰＵ１３７０は、表示させる文字のフォントデータから色展開データを生成し、生成した色展開データを表示させる位置に対応するように、１ワード単位でＶＲＡＭ１３５０に格納する。ここで、「ワード」とは、ＣＰＵ１３７０がＶＲＡＭ１３５０のデータをアクセスする場合のアクセス単位（例えば、３２ビット）のデータをいう。
【０００９】
また、ＣＰＵ１３７０は、ＶＲＡＭ１３５０に色展開データを格納する際、レジスタ等を用いて色展開データに対してシフト処理を行う。これは、ＣＰＵ−ＶＲＡＭ間でアクセスする１ワードの先頭と、色展開データの先頭が必ずしも一致しないからである。
さらに、ＣＰＵ１３７０は、シフト処理におけるシフトビット数を、ＯＳＤ用記憶部１３４０から読み出した情報に基づいて、各文字毎に算出する。ここで、「シフトビット数」とは、シフト処理におけるシフトの大きさ示す数値をいう。なお、ＣＰＵ１３７０は、内部にレジスタ群１３７１（例えば、それぞれのデータ長が３２ビットのレジスタＡ（ＲA）〜レジスタＥ（ＲE）の５個のレジスタ）を有している。
【００１０】
次に、従来の色展開装置１３００における、フォントデータに基づいて色展開データを生成し、生成した色展開データをＶＲＡＭに格納するまでの処理について、図１４〜図１６を参照しながら説明する。
図１４は、ディスプレイ装置の画面１４００上に表示された複数のウィンドウ１４０１〜１４０７からなる「ＴＶ番組表」の例である。この場合の「ＴＶ番組表」は、「タイトル」１４０１と、「時刻情報」１４０２、１４０５と、「ジャンル情報」１４０３、１４０６と、「番組名情報」１４０４、１４０７とから構成されている。なお、画面１４００は、Ｘ方向及びＹ方向において、それぞれ７２０及び４８０の画素から構成されている。従って、画面１４００上におけるＸ座標は０〜７１９、Ｙ座標は０〜４７９となる。
【００１１】
図１５は、上記の画面１４００上のウィンドウのうち、特にウィンドウ１４０２に注目した場合の表示される文字「Ａ」及び文字「Ｍ」の右側シフト量と、これらの文字の色展開データがＶＲＡＭの一部１５０１に格納される様子を例示する図である。ここで、「右側シフト量」とは、ワード間の境界であるワード境界から右方向に見た場合の文字の左端のフォントまでの画素数をいう。従って、文字「Ａ」の右側シフト量は「３画素」であり、文字「Ｍ」の右側シフト量は「２画素」である。この場合、それぞれの文字の右側シフト量は、ＣＰＵ１３７０が、ウィンドウ位置の座標Ｐ（Ｘ，Ｙ）と、第１文字の左側スペースと、その文字の左側に表示される文字の文字数及びそのフォント構成から算出する。
【００１２】
なお、ＶＲＡＭ１３５０におけるワード境界は、４アドレス毎に存在する。また、図１５の例では、ウィンドウ１４０２の左端がワード境界と一致している。
図１６は、ウィンドウ１４０２に「ＡＭ  ８：００」を表示させる場合の、文字「Ａ」及び文字「Ｍ」の色展開データが、フォントデータから色展開され、ＶＲＡＭに格納されるまでの処理過程を示した図である。
【００１３】
なお、同図では、便宜上、図１５におけるＶＲＡＭの一部１５０１に格納される色展開データの数値に代えて、文字「Ａ」及び文字「Ｍ」のフォント構成によって表現している。また、同図における処理(1)〜処理(24)は、文字「Ａ」及び文字「Ｍ」のフォント構成のうち、最上段の１列のフォントに対応する色展開データ１６０１をＶＲＡＭに格納する場合の処理を示している。
＜処理過程＞
(1)ＣＰＵ１３７０は、フォントＲＯＭ１３１０から文字「Ａ」のフォントデータのうち、最初の１行目のフォントデータ（７[画素]×４[ビット/画素]＝２８ビット）を読み出し、レジスタＢ（ＲB）に格納する。
【００１４】
(2)ＣＰＵ１３７０は、読み出したフォントデータに基づいて、色展開処理を実行し、色展開データをレジスタＣ（ＲC）及びレジスタＤ（ＲD）に格納する。この場合の「色展開処理」をより具体的に説明すると、前記制御プログラムの指示に基づいて、ＯＳＤ用記憶部から色データと背景色データを読み出して、フォントデータの階調に応じて色データ及び背景色データを当てはめる処理である。
【００１５】
(3)ＣＰＵ１３７０は、ＯＳＤ用記憶部１３４０から読み出したウィンドウ１４０２のウィンドウ位置及び第１文字の左側スペースに基づいて、文字「Ａ」の右側シフト量を算出し、この右側シフト量に応じて、ＲC、ＲDにおいててシフト処理（この場合は、右に２４ビット分のシフト）を行う。また、シフト処理によって溢れたデータは、レジスタＥ（ＲE）に格納する。
【００１６】
(4)ＣＰＵ１３７０は、ＶＲＡＭ１３５０から３２ビットのデータをレジスタＡ(ＲA)に読み出す。
(5)ＣＰＵ１３７０は、ＶＲＡＭ１３５０からＲAに読み出した文字データにシフト処理後の色展開データ（ＲCの内容）を組込む。この場合の「組込む」とは、ＲA（ＶＲＡＭから読み出した複数の文字データ）の内容の一部を、表示する文字の色展開データで置き換えることをいう。
【００１７】
(6)ＣＰＵ１３７０は、処理(3)で読み出した位置のＶＲＡＭに、ＲAの文字データを格納する。
ここで、上記のように、「ＶＲＡＭから文字データの読み出し」→「色展開データの組込み」→「読み出した位置のＶＲＡＭに色展開データを組込んだ文字データの書き込み」の一連の処理を「リードモディファイライト処理」という。
【００１８】
以下同様に、ＣＰＵは１３７０、ＶＲＡＭ１３５０から読み出した３２ビット毎にリードモディファイライト処理を行う（処理(7)〜処理(9)、及び処理(10)〜処理(12)）。さらに、ＣＰＵは、文字「Ｍ」に対しても文字「Ａ」と同様に「リードモディファイライト処理」を行う（処理(13)〜処理(24)）。
以上のように、従来の色展開装置においては、色展開データをＶＲＡＭに格納する場合に、文字毎に右側シフト量の計算やシフト処理を行いながら、上記のリードモディファイライト処理を繰り返す。
【００１９】
【発明が解決しようとする課題】
しかしながら、上記従来の色展開装置は、図１４に示すように複数のウィンドウに連続で文字を表示させる場合は、それぞれの文字毎に上記のシフト処理が必要であるため、これに要するＣＰＵ負荷が重くなり、文字表示が遅れるという問題がある。
【００２０】
また、従来の色展開装置は、１文字毎にＶＲＡＭへのリードモディファイライト処理を行っているが、この処理に時間が費やされ、文字の表示が遅れるという問題がある。これについては、図１６を参照しながらに説明する。
図１６に示されるように、従来の色展開装置１３００では、表示する文字「Ａ」に対して３回の「リードモディファイライト処理」を行っている。同様に、文字「Ｍ」に対しても３回の「リードモディファイライト処理」を行っている。
【００２１】
そこで、本発明は、上記課題に鑑みてなされたものであり、シフト処理やリードモディファイライト処理に多くの時間を費やさず、文字の表示に要する時間を短縮し得る色展開装置を提供することを目的とする。
【００２２】
【課題を解決するための手段】
上記課題を解決するために、本発明に係るデータ展開装置は、所定ビット数からなるワード単位にアクセスされる表示用メモリに対して、一方向に並ぶ複数画素に対応する展開データをフォントデータから生成し、指定された画素から始まる領域の画素データを、生成された展開データを用いて更新するデータ展開装置であって、展開データを保持する第１レジスタと、バレルシフタを有し、第１レジスタに保持された展開データを、指定された画素数に対応するビット数だけバレルシフタによりシフトするシフト手段と、前記指定された画素の画素データを含むワードを指すアドレスと、当該ワードのワード境界から前記指定された画素までに存在する画素数を表すシフト値とを保持する保持手段と、保持手段に保持されたシフト値が示す画素数を指定してシフト手段に、画素数に対応するビット数だけシフトさせ、シフト後の展開データに基づいて保持手段に保持されたアドレスが指すワードを更新する更新手段とを備える。
【００２３】
これにより、バレルシフタを有するシフト手段によって展開データのシフトを高速に行うので、ＣＰＵにおけるシフト処理が不要となり、文字の表示に要する時間を短縮させることができる。
【００２４】
【発明の実施の形態】
以下、本発明に係る色展開装置について、図面を参照しながら説明する。
（実施の形態１）
図１は、本実施形態における色展開装置の機能ブロック図である。図１に示されるように、色展開装置１００は、フォントＲＯＭ１１０、ＲＯＭ１２０、入力操作部１３０、ＯＳＤ用記憶部１４０、色展開処理部１５０、ＶＲＡＭ１６０、主記憶部１７０、ＣＰＵ１８０から構成されている。
【００２５】
なお、以下では、本実施形態に特有の構成について重点的に説明し、従来の構成と共通するフォントＲＯＭ１１０、ＲＯＭ１２０、入力操作部１３０、ＶＲＡＭ１６０、主記憶部１７０については説明を省略する。
ＯＳＤ用記憶部１４０は、ディスプレイ装置のウィンドウに文字を表示する場合に、各ウィンドウに関する情報（ウィンドウｉｄ、ウィンドウ位置、ウィンドウサイズ、スタック順序等）と、表示する文字に関する情報（第１文字の左側スペース、表示文字コード等）とを記憶している。これらの情報は、ＣＰＵ１８０から読み出される情報である。ここで、「スタック順序」とは、画面上に表示されるウィンドウの重なり具合を決定する情報をいう。例えば、スタック順序が「１」と「２」の場合は、「２」のウィンドウは、「１」のウィンドウより前面にあることを表す。また、「第１文字の左側スペース」とは、ウィンドウの左端からそのウィンドウの最も左に表示される文字の左端のフォントまでのスペースをいい、画素数で表す数である。
【００２６】
なお、従来の前記ＯＳＤ用記憶部１３４０が記憶していた「背景色データ」及び「文字色データ」は、色展開処理部１５０が記憶する。
図２は、ＯＳＤ用記憶部１４０に記憶されているデータの一例を示す図である。同図に示されるように、ＯＳＤ用記憶部１４０には、各ウィンドウ毎のウィンドウｉｄ２０１、ウィンドウ位置２０２、ウィンドウサイズ２０３、スタック順序２０４、及び第１文字の左側スペース２０５、表示文字コード２０６が記憶される。
【００２７】
色展開処理部１５０は、ＣＰＵ１８０から送信されたフォントデータを取り込み、このフォントデータと色展開処理部１５０内に記憶している文字色データ及び背景色データとを用いて色展開処理を実行して色展開データを生成する。この色展開処理部１５０は、本実施形態において特徴的な構成であるので、以下で詳細に説明する。
【００２８】
図３は、色展開処理部１５０の詳細な機能ブロック図を示す。同図に示すように、色展開処理部１５０は、アドレスデコーダ１５１、色展開データ生成部１５２、色データ記憶部１５４、バレルシフタ１５５、前アドレスメモリ１５６、比較器１５７、カウンタ１５８、セレクタ１５９から構成される。なお、色展開データ生成部１５２は、データ長が６４ビットの色展開レジスタ１５３を備える。
【００２９】
アドレスデコーダ１５１は、バス１９０を介して受信したアドレスを解読し、書き込みアドレスが「０x３０００００」の場合に、ＣＰＵから出力されたフォントデータを取り込むように、色展開データ生成部１５２を制御する。また、アドレスデコーダ１５１は、読み出しアドレスが「０x３０００１０〜０x３０００１３」の場合に、バレルシフタ１５５に右側シフト量に応じたシフトビット数とシフト方向の指示を行う。
【００３０】
ここで、「右側シフト量」とは、ワード境界から右方向に見た場合の表示させる文字の左端の画素までの画素数をいう。また、「シフトビット数」とは、バレルシフタにおけるシフトの大きさを示す数値をいう。
アドレスデコーダ１５１がバレルシフタ１５５に対して行うシフトビット数の指示は、例えば、読み出しアドレスが「０x３０００１１」の場合は右に１画素分（８ビット）、読み出しアドレスが「０x３０００１２」の場合は右に２画素分（１６ビット）、読み出しアドレスが「０x３０００１３」の場合は右に３画素分（２４ビット）というように指示を行う。なお、読み出しアドレスが「０x３０００１０」の場合は右側シフト量「０」の指示を行う。また、シフト方向の指示は、バレルシフタ１５５が備えるシフト方向を制御するためのフラグを「０」に設定して「右方向」にシフトさせるように指示する。なお、このフラグを「１」に設定した場合は「左方向」にシフトさせる指示とする。
【００３１】
また、アドレスデコーダ１５１は、解読した読み出しアドレスが「０x３０００１０〜０x３０００１３」の場合に、前アドレスメモリ１５６と比較器１５７に、アドレスの下位４ビットを出力する。さらに、アドレスデコーダ１５１は、セレクタ１５９に対し、バレルシフタ１５５から選択した３２ビットをバス１９０に出力する際のタイミングを制御する。
【００３２】
色展開データ生成部１５２は、ＣＰＵ１８０により書き込みアドレス「０x３０００００」にフォントデータが送信された場合に、アドレスデコーダ１５１の指示により、バス１９０からフォントデータを取り込む。さらに、色展開データ生成部１５２は、取り込んだフォントデータと色データ記憶部１５４の文字色データ及び背景色データとを用いて色展開処理を実行し、色展開データを色展開レジスタ１５３に格納する。この後、色展開データ生成部１５２は、色展開レジスタ１５３に格納されている色展開データをバレルシフタ１５５に出力する。
【００３３】
色データ記憶部１５４は、文字色データ及び背景色データとを記憶する。
バレルシフタ１５５は、色展開レジスタ１５３から出力された色展開データに対し、アドレスデコーダ１５１からの指示に従って、画素単位で「右方向」又は「左方向」にデータのシフトを行う。
前アドレスメモリ１５６は、アドレスデコーダ１５１から出力される読み出しアドレスの下位４ビットを記憶する。また、前アドレスメモリ１５６は、ＣＰＵから読み出しアドレス「０x３０００１０〜０x３０００１３」の何れかが入力されたとき、記憶する内容を更新する。
【００３４】
比較器１５７は、アドレスデコーダ１５１から出力された下位４ビットのアドレスと、前アドレスメモリから出力されたアドレスを比較し、同じ場合は、カウンタ１５８に「１」を出力し、異なる場合はカウンタ１５８に「０」を出力する。
カウンタ１５８は、比較器１５７から出力された「１」の個数を計数する。また、カウンタ１５８は、計数した値が「２」になったら計数した値を「０」クリアする。さらに、カウンタ１５８は、計数した値をアドレスデコーダ１５１とセレクタ１５９に出力する。
【００３５】
セレクタ１５９は、バレルシフタ１５５の上位３２ビットと下位３２ビットのデータの一方を選択し、アドレスデコーダ１５１から指示されたタイミングで、バス１９０に出力する。この場合、セレクタ１５９は、カウンタ１５８から出力される値が「０又は２」の場合は上位３２ビットを、カウンタ１５８から出力される値が「１」の場合は下位３２ビットをバレルシフタ１５５から取り込む。
【００３６】
ＣＰＵ１８０は、本装置１００全体の制御を行う。また、ＣＰＵ１８０は、ＯＳＤ用記憶部１３４０から読み出した情報に基づいて、従来と同様の方法で各文字毎に右側シフト量を算出する。さらに、ＣＰＵ１８０は、右側シフト量に応じて特定したアドレスから色展開データを読み出し、ＶＲＡＭに格納する。なお、ＣＰＵ１８０は、内部にレジスタ群１８１（例えば、それぞれのデータ長が３２ビットのレジスタＡ（ＲA）〜レジスタＤ（ＲD）の４個のレジスタ）を有している。
【００３７】
以下、本実施形態のＣＰＵ１８０における、特に色展開データを読み出す場合の処理内容について詳細に説明する。
ＣＰＵ１８０は、ＲＯＭ１２０の制御プログラムに基づいて、文字を表示するウィンドウに関する情報と表示する文字に関する情報（表示文字コード等）とをＯＳＤ用記憶部１４０から読み出す。さらに、ＣＰＵは、読み出した表示文字コードによりフォントＲＯＭ１１０からフォントデータを読み出し、書き込みアドレス「０x３０００００」に出力する。その後、ＣＰＵ１８０は、算出した右側シフト量に応じて決定した読み出しアドレス「０x３０００１０〜０x３０００１３」の何れかから、色展開データ（６４ビット）を３２ビットづつ２回又は３回に分けて読み出す。この場合の右側シフト量に応じたアドレスとしては、例えば、右側シフト量「０画素」〜「３画素」に対して、それぞれ読み出しアドレス「０x３０００１０」〜「０x３０００１３」が対応するように決定する。
【００３８】
また、ＣＰＵ１８０は、読み出した色展開データについて、その色展開データのうち有効な部分を、読み出しアドレスと読み出した回数によって判別する。例えば、色展開データを読み出しアドレス「０x３０００１３」から読み出した（即ち、右側シフト量が３画素）の場合は、１回目の色展開データについては下位８ビットが有効と判断し、２回目の色展開データについては３２ビット全てが有効と判断し、３回目の色展開データについては上位２４ビットが有効と判定する。これは、右側シフト量が３画素の場合は、バレルシフタ１５５において、色展開データが右に２４ビットシフトされるからである。
【００３９】
次に、本実施形態にかかる色展開装置１００の動作について、図４及び図５を参照しながら説明する。
図４は、色展開装置１００のＣＰＵ１８０における処理過程を示した図である。図４には、ＶＲＡＭの一部４０１と、その中でさらに最上段の１列の記憶領域４０２を示す。
【００４０】
最初に、ＣＰＵ１８０は、文字を表示するウィンドウのウィンドウｉｄを制御プログラムによって特定し、このウィンドウｉｄに対応する表示文字コードをＯＳＤ用記憶部１４０から読み出す。さらに、ＣＰＵ１８０は、読み出した表示文字コードに基づいて、フォントＲＯＭ１１０からフォントデータを読み出し、書き込みアドレス「０x３０００００」に出力する（処理(1)、(2)）。これにより、色展開処理部１５０は、色展開処理を実行する。
【００４１】
次に、ＣＰＵ１８０は、上記のウィンドウｉｄ（例えば、１４０２）に対応する第１文字の左側スペース（例えば、３画素）をＯＳＤ用記憶部１４０から読み出し、右側シフト量を算出して読み出しアドレス「０x３０００１３」を特定する（文字「Ａ」については、第１文字の左側スペースと右側シフト量が同一である）。さらに、ＣＰＵ１８０は、読み出しアドレス「０x３０００１３」から１回目の色展開データ（３２ビット）を読み出す。その後、ＣＰＵ１８０は、ＶＲＡＭから読み出した３２ビットに１回目の色展開データを組込んで、ＶＲＡＭにおける読み出したアドレス位置に書き込む（処理(3)〜(6)）。
【００４２】
さらに、ＣＰＵ１８０は、読み出しアドレス「０x３０００１３」から２回目の色展開データ（３２ビット）を読み出して、対応するＶＲＡＭに書き込む（処理(7)、(8)）。２回目の場合は、読み出したＶＲＡＭのデータに色展開データを組込む処理が不要である。これは、３２ビット全てが新たに表示する文字の色展開データであるからである。
【００４３】
最後に、ＣＰＵは、読み出しアドレス「０x３０００１３」から３回目の色展開データ（３２ビット）を読み出す。上記の１回目の場合と同様に、ＣＰＵ１８０は、ＶＲＡＭから読み出した３２ビットに３回目の色展開データを組込んで、読み出した位置に書き込む（処理(9)〜(12)）。
図５は、色展開処理部１５０における処理の流れを示すフローチャートである。
【００４４】
最初に、アドレスデコーダ１５１は、アドレスが「０x３０００００、０x３０００１０〜０x３０００１３」の何れかであるか否かを判別する（Ｓ５０１）。書き込みアドレスが「０x３０００００」場合、アドレスデコーダ１５１は、ＣＰＵ１８０から出力されたフォントデータを取り込むように、色展開データ生成部１５２に指示する（Ｓ５０２）。
【００４５】
これにより、色展開データ生成部１５２は、色データ記憶部１５４から文字色データと背景色データとを読み出して色展開処理を実行し、その結果をバレルシフタ１５５に出力する（Ｓ５０３〜Ｓ５０５）。
次に、アドレスデコーダ１５１は、読み出しアドレスが「０x３０００１０〜０x３０００１３」の場合に、アドレスの下位４ビットを前アドレスメモリ１５６と比較器１５７に出力する（Ｓ５０７）。これにより、前アドレスメモリ１５６は、記憶しているアドレスを１５７比較器に出力する。この後、比較器１５７は、前アドレスメモリ１５６とアドレスデコーダ１５１から出力されたアドレスを比較し、同じ場合は「１」を、異なる場合は「０」をカウンタを出力する。カウンタ１５８は、比較器１５７から出力された「１」をカウントし、その結果をアドレスデコーダ１５１とセレクタ１５９に出力する。この場合、カウンタ１５８の出力は、「０〜２」とする（即ち、「２」の状態で、比較器１５７から「１」が出力された場合は「０」にリセットする。）。
【００４６】
その後、アドレスデコーダ１５１は、カウンタ１５８からの出力を判別し、「０」の場合にのみ、バレルシフタ１５５に右側シフト量とシフト方向を指示する（Ｓ５０８）。これにより、バレルシフタ１５５はシフト処理を実行する（Ｓ５０９）。
最後に、セレクタ１５９は、カウンタ１５８から出力されるデータが「０又は２」の場合はバレルシフタ１５５の上位３２ビットを、「１」の場合はバレルシフタ１５５の下位３２を選択して出力する。
【００４７】
以上のように、本実施形態における色展開装置１００は、シフト処理を高速に処理するハードウェアで実現したので、ＣＰＵの負荷が軽減され、文字の表示に要する時間を短縮することが可能となる。
（実施の形態２）
本実施形態では、連続する文字を表示させる場合の色展開装置の構成例を示す。以下では、前記実施形態１と同じ構成内容については説明を省略し、異なる点を中心に説明する。異なる点は、前記実施形態１における色展開処理部１５０の代わりに、色展開処理部６５０を備える点と、ＣＰＵ１８０の処理内容が一部簡単になっている点である。
【００４８】
図６は、実施形態２における色展開装置６００（図示せず）の色展開処理部６５０の機能ブロック図である。この色展開処理部６５０は、前記色展開装置１００の色展開処理部１５０に相当する部分であり、連続する文字を表示させるための色展開処理を実現する。
色展開処理部６５０は、前記色展開処理部１５０に比べ、新たに前回値レジスタ６５３、合成制御器６５４、データ合成部６５５、出力バッファ６５６を備え、アドレスデコーダ６５１及びカウンタ６５２の機能が一部異なる。
【００４９】
アドレスデコーダ６５１は、前記アドレスデコーダ１５１の機能に加え、解読した読み出しアドレスが「０x３０００１０〜０x３０００１３」の場合に、前アドレスメモリ１５６と比較器１５７以外に、合成制御器６５４に対してもアドレスの下位４ビットを出力する。
カウンタ６５２は、比較器１５７から出力された「１」の個数を計数し、計数した値をアドレスデコーダ１５１とセレクタ１５９に出力する。この場合、カウンタ６５２の出力は、「０」又は「１」とする。即ち、計数した値が「１」の状態で、比較器１５７から「１」を受け付けた場合は、計数した値を「０」にリセットする。
【００５０】
前回値レジスタ６５３は、色展開レジスタ１５３に格納されている色展開データの下位３２ビットを取り込んで記憶する。
合成制御器６５４は、アドレスデコーダ１５１から出力された下位４ビットのアドレスを受け付け、データ合成部６５５におけるセレクタ１５９から出力されるデータと前回値レジスタ６５３から出力されるデータの合成の仕方を、受け付けたアドレスに基づいて指示する。例えば、アドレスデコーダ６５１から受け付けたアドレスが「０x１」の場合は、前回値レジスタの下位８ビットが合成後のデータの上位８ビットになるように指示する。同様に、アドレスが「０x２」の場合は前回値レジスタの下位１６ビットが合成後のデータの上位１６ビットになるように、アドレスが「０x３」の場合は前回値レジスタの下位２４ビットが合成後の上位２４ビットになるように指示する。なお、アドレスが「０x０」の場合は、セレクタ１５９から出力される３２ビットをそのまま出力バッファ６５６に出力するように指示する。
【００５１】
データ合成部６５５は、合成制御器６５４の指示に基づいて、セレクタ１５９から出力されるデータと前回値レジスタから出力されるデータとを合成する。
出力バッファ６５６は、データ合成部６５５から出力されたデータを格納し、アドレスデコーダ６５１の指示により、バス１９０に出力する。
図７は、本実施形態におけるＣＰＵ１８０の処理過程を示した図である。同図には、前記図４と同様に、ＶＲＡＭの一部７０１と、その中でさらに最上段の１列の記憶領域７０２を示す。
【００５２】
ＣＰＵ１８０は、算出した右側シフト量によって決定した読み出しアドレスから３２ビットづつ色展開データを読み出し、順次ＶＲＡＭ１６０に格納する。
図７では、前記図４において文字「Ａ」の１文字を表示させる場合のＣＰＵの処理過程を示したのに対し、２つの文字「Ａ」及び「Ｍ」を表示させる場合のＣＰＵの処理過程を示す。同図において特徴的な点は、文字「Ｍ」について一回目の色展開データの読み出しの際に、文字「Ａ」の残りの色展開データ（即ち、前記図４における文字「Ａ」についての３回目で読み出した色展開データ）とを合成してＶＲＡＭに書き込んでいる点である（処理(12)、(13)）。この場合の、合成する処理については、図８を参照しながら説明する。
【００５３】
図８は、本実施形態における色展開処理部６５０の処理の流れを示すフローチャートである。以下では、前記図５に示すフローチャートと異なる点について説明する。
アドレスデコーダ６５１は、読み出しアドレスが「０x３０００１０〜０x３０００１３」の場合に、アドレスの下位４ビットを前アドレスメモリ１５６、比較器１５７及び合成制御器６５４に出力する（Ｓ８０１）。これにより、合成制御器６５４は、アドレスデコーダ６５１から受け付けたアドレスに応じて、データ合成部６５５に対し、前回値レジスタ６５３のデータとセレクタ１５９から出力されるデータについて、その合成の仕方を指示する（Ｓ８０５、Ｓ８０６）。なお、前回値レジスタ６５３は、色展開レジスタ１５３に色展開データが展開されたら、色展開レジスタ１５３の下位３２ビットを取り込む（Ｓ８０３）。
【００５４】
以上のように、本実施形態における色展開処理部６５０を備える色展開装置を用いることにより、連続する文字を表示させる場合に、隣接する前後の文字の色展開データを連結させるので、１ワード目と最終ワード目以外は、リードモディファイライト処理に代えて読み出した色展開データをそのままＶＲＡＭに格納することができる。このため、時間を要するリードモディファイライト処理を最小限に抑えたため、文字の表示に要する時間を短縮することができる。
（実施の形態３）
本実施形態における色展開装置は、前記実施形態２の色展開装置に、文字を表示させるウィンドウの前面に他のウィンドウがある場合における前面のウィンドウによって隠れる部分の画素数に応じて色展開データを左方向にシフトする機能が追加されている。
【００５５】
以下では、本実施形態の色展開装置の構成のうち、前記実施形態２と共通する構成については説明を省略し、異なる構成について説明する。本実施形態における色展開装置は、前記実施形態２おける色展開装置６００に対し、ＣＰＵ１８０及びアドレスデコーダ６５１の処理内容がそれぞれ一部異なっている。
ＣＰＵ１８０は、文字を表示させるウィンドウの前面に他のウィンドウがあるか否かについての判別、及び文字を表示させるウィンドウが他のウィンドウによって隠される部分の画素数の特定を、ＯＳＤ用記憶部１４０に記憶されている各ウィンドウのウィンドウ位置、ウィンドウサイズ、スタック順序に基づいて行う。
【００５６】
また、ＣＰＵ１８０は、表示させる文字のどの画素まで隠されているかを特定し、左側シフト量を算出する。ここで、「左側シフト量」とは、表示させる文字の画素を含むワードの左側にある直近のワード境界より左側にある前面にあるウィンドウによって隠される部分の画素数をいう。
さらに、ＣＰＵ１８０は、算出した左側シフト量に応じて、色展開データを読み出す際の読み出しアドレスを決定する。この場合の左側シフト量に応じた読み出しアドレスとしては、例えば、左方向のシフト量の「０画素」〜「６画素」に対して、それぞれ読み出しアドレスを「０x３０００１０」〜「０x３００００４」に対応するように決定する。
【００５７】
上記の左側シフト量及びこれに応じた読み出しアドレスの決定については、以下で更に詳細に説明する。
図９(ａ)は、左側シフト量を算出する場合の説明図である。同図は、前面に表示される他のウィンドウによって、文字を表示させるウィンドウの一部が隠されている様子を、前記図７の記憶領域７０２を用いて模擬的に表した図である。同図に示されるように、前面に表示される他のウィンドウによって、文字を表示させるウィンドウの右側の５画素分が隠されている。
【００５８】
ここで、前面のウィンドウによって隠されている部分の画素数をＮa、第１文字の左側スペースをＮb、右側シフト量をＮcとすると、左側シフト量Ｓは次式を用いて算出する。
Ｓ＝Ｎa−（Ｎb＋Ｎc）   ・・・（１）
図９(ａ)に示す内容を上記（１）式を適用すると、左側シフト量Ｓは「１」となる。この左側シフト量により、ＣＰＵ１８０は、読み出しアドレスを「０x３００００９」に決定する。
【００５９】
また、１ワード当りの画素データの個数をＮw、完全に隠れてしまうワード数をｎ、第１文字の左側スペースをＮbとした場合に、左側シフト量Ｓは、次式を用いて算出することもできる。
Ｓ＝ｎ・Ｎw−Ｎb        ・・・（２）
なお、ＣＰＵ１８０は、表示させる文字の色展開データをＶＲＡＭ１６０に格納する場合、前面にあるウィンドウの表示を残すため、上記の「リードモディファイライト処理」を実行する。
【００６０】
次に、本実施形態における動作について図９(ｂ)を参照しながら説明する。
図９(ｂ)は、本実施形態におけるＣＰＵ１８０の処理過程を示した図である。また、図９(ｂ)は、前記図７と同様に、ＶＲＡＭの一部７０１とその中の最上段の１列の記憶領域４０２とを示した図であるが、このＶＲＡＭに対応するウィンドウの上に別のウィンドウがある場合を擬似的に示した。
【００６１】
最初に、ＣＰＵ１８０は、ウィンドウに表示する文字「Ａ」及び文字「Ｍ」のフォントデータを読み出し、文字「Ａ」のフォントデータに文字「Ｍ」のフォントデータを４ビット組込んで、書き込みアドレス「０x３０００００」に書き込む（処理(1)〜(4)）。
次に、ＣＰＵ１８０は、文字を表示させるウィンドウが、他のウィンドウの後位にあるか否か、隠されている部分があるか否かを判別する。さらに、ＣＰＵ１８０は、文字を表示させるウィンドウの一部が他のウィンドウによって隠されていると判別した場合は、左側シフト量「１」を算出し、左側シフト量に基づいて読み出しアドレス「０x３００００９」を決定する。
【００６２】
その後、ＣＰＵは１８０は、決定した読み出しアドレス「０x３００００９」から色展開データを読み出し（必要に応じて「リードモディファイライト処理」を行って）、ＶＲＡＭ１６０に書き込む。ＣＰＵ１８０は、以上の処理を２回繰り返す（処理(5)〜(8)）。
以上のように、本実施形態の色展開装置を用いることにより、文字を表示させるウィンドウが別のウィンドウによってその一部が隠れてしまう場合であっても、隠されてしまう部分の画素数に応じて左側にシフトされた色展開データを読み出すので、ＣＰＵの負荷が軽減され、文字を表示する時間の短縮化を図ることができる。
（実施の形態４）
本実施形態は、前記実施形態２がＣＰＵが色展開処理部を制御するように構成したのに対し、ＣＰＵの負荷を軽減させるために、色展開処理専用のコントローラを備える点が異なる。以下では、前記実施形態２と同じ構成内容については説明を省略し、異なる点を中心に説明する。
【００６３】
図１０は、本実施形態における色展開装置１０００の機能ブロック図である。本装置１０００は、前記色展開装置６００に比較し、新たに色展開専用コントローラ１０１０を備え、ＣＰＵ１０２０の構成が一部異なっている。
色展開専用コントローラ１０１０は、ＣＰＵ１０２０から出力されたウィンドウｉｄを基づいて、前記色展開装置６００のＣＰＵ１８０が行っていた以下の機能を代替する。
【００６４】
(1)表示する文字のフォントデータをフォントＲＯＭ１１０から読み出し、アドレス「０x３０００００」に書き込む。
(2)文字を表示するウィンドウにおけるシフト量を算出し、シフト量に応じたアドレスから色展開データを読み出す。
(3)読み出した色展開データをＶＲＡＭに格納する。この場合、必要に応じてＶＲＡＭのデータに色展開データを組込む処理を行う。
【００６５】
また、色展開専用コントローラ１０１０は、内部にレジスタａ（Ｒa）〜レジスタｄ（Ｒｄ）を備える。
ＣＰＵ１０２０は、色展開専用コントローラ１０１０に、文字を表示するウィンドウのウィンドウｉｄを出力する。
次に、本実施形態の動作について、図１１を参照しながら説明する。
【００６６】
図１１は、本実施形態におけるＣＰＵ１８０及び色展開専用コントローラ１０１０の処理過程を示した図である。なお、図１１において、処理(0)-1及び処理(0)-2がＣＰＵ１０２０の処理を示し、これら以外の処理が色展開専用コントローラ１０１０の処理を示す。
最初に、ＣＰＵ１０２０は、色展開専用コントローラ１０１０に対して、ウィンドウｉｄを出力する（処理(0)-1、処理(0)-2）。
【００６７】
次に、色展開専用コントローラ１０１０は、表示する全ての文字について、色展開処理を色展開処理部６５０に指示し、色展開データをＶＲＡＭに格納する。
以上のように、本実施形態における色展開装置は、色展開処理専用のコントローラを備えるので、ＣＰＵの負荷を軽減させることができ、文字の表示に要する時間を短縮することができる。
【００６８】
なお、上記の実施形態では、１ワードを３２ビットとしたが、これに限定するものではなく、例えば６４ビットを１ワードとしてもよい。また、上記の実施形態では、色展開レジスタやバレルシフタのデータ長を６４ビットとしたが、これに限定するものではなく、例えば、９６ビットや１２８ビットとしてもよい。
さらに、上記実施形態において、ＣＰＵ１８０が、文字を表示させるウィンドウにおける左側のスペース部分や、右側のスペース部分に背景色をあてはめて表示させるため、「第１文字の左側スペース」に基づいて背景色データをＶＲＡＭに格納し、「第１文字の左側スペース」に基づいて背景色データをＶＲＡＭに格納する方法を同様の方法で、右側のスペースにおける画素を特定して背景色データをＶＲＡＭに格納するように制御する機能を備えることとしてもよい。
【００６９】
【発明の効果】
以上のように、本発明に係るデータ展開装置は、所定ビット数からなるワード単位にアクセスされる表示用メモリに対して、一方向に並ぶ複数画素に対応する展開データをフォントデータから生成し、指定された画素から始まる領域の画素データを、生成された展開データを用いて更新するデータ展開装置であって、展開データを保持する第１レジスタと、バレルシフタを有し、第１レジスタに保持された展開データを、指定された画素数に対応するビット数だけバレルシフタによりシフトするシフト手段と、前記指定された画素の画素データを含むワードを指すアドレスと、当該ワードのワード境界から前記指定された画素までに存在する画素数を表すシフト値とを保持する保持手段と、保持手段に保持されたシフト値が示す画素数を指定してシフト手段に、画素数に対応するビット数だけシフトさせ、シフト後の展開データに基づいて保持手段に保持されたアドレスが指すワードを更新する更新手段とを備える。
【００７０】
これにより、バレルシフタを有するシフト手段によって展開データのシフトを高速に行うので、ＣＰＵにおけるシフト処理が不要となり、文字の表示に要する時間を短縮させることができる。
さらに、データ展開装置は、第１レジスタに保持された展開データに隣接して表示されるべき展開データを保持する第２レジスタと、第２レジスタに保持された展開データのうち、保持手段に保持されたシフト値が示す画素数に対応する画素データを選択する選択手段と、シフト手段によるシフト後の展開データと選択されたデータとを併合し、新たな１ワード分の展開データを生成する併合手段とを備え、前記更新手段は、生成された新たな展開データを表示用メモリに書き込むように構成することもできる。
【００７１】
これにより、表示させる文字が隣接する場合は、シフトされた展開データと隣接する次の展開データとを１ワードに併合してＶＲＡＭに書き込むことにより、時間の要するリードモディファイライト処理を先頭と末尾の２回だけに抑えるので、文字の表示に要する時間を短縮させることができる。
さらにまた、データ展開装置は、保持手段に保持されたアドレスが指すワードに対応する全画素に、一のウィンドウの右側部分が上に重なって表示される場合には、当該ウィンドウの右端の画素の画素データを含むワードを指すアドレスと、当該ワードのワード境界から当該ウィンドウの右端までに存在する画素数を示すシフト値とを保持するように、保持手段の保持内容を変更する変更手段を備え、前記更新手段は、保持手段に保持されたアドレスが指すワードに対応する全画素に、一のウィンドウの右側部分が上に重なって表示される場合には、前記シフト値が示す画素数分のビット数をシフト手段に指定することにより右シフトさせる代わりに、１ワード分に該当する画素数から変更手段による変更前のシフト値を減算した画素数分のビット数をシフト手段に左シフトさせるように構成することもできる。
【００７２】
これにより、文字を表示させるウィンドウの一部が他のウィンドウの右側部分によって隠れてしまう場合に、文字を表示させる位置と隠れる部分の画素数に応じて、展開データを左方向にシフトして、無駄なＶＲＡＭへの書き込みを行わないようにするので、ＣＰＵにおける負荷が軽減され、文字の表示に要する時間を短縮させることができる。
【図面の簡単な説明】
【図１】実施形態１における色展開装置１００の機能ブロック図である。
【図２】ＯＳＤ用記憶部１４０に記憶されている各ウィンドウ毎のウィンドウｉｄ、ウィンドウ位置、ウィンドウサイズ、スタック順序、及び第１文字の左側スペース、表示文字コードの一例を示した図である。
【図３】色展開処理部１５０の詳細な機能ブロック図である。
【図４】色展開装置１００のＣＰＵ１８０における処理過程を示した図である。
【図５】色展開処理部１５０の処理の流れを示すフローチャートである。
【図６】実施形態２における色展開装置６００（図示せず）の色展開処理部６５０の機能ブロック図である。
【図７】実施形態２におけるＣＰＵ１８０の処理過程を示した図である。
【図８】実施形態２における色展開処理部６５０の処理の流れを示すフローチャートである。
【図９】実施形態３におけるＣＰＵ１８０の処理過程を示した図である。
【図１０】実施形態４における色展開装置１０００の機能ブロック図である。
【図１１】実施形態４におけるＣＰＵ１８０及び色展開専用コントローラ１０１０の処理過程を示した図である。
【図１２】文字「Ａ」のフォント構成図、フォントデータ、色展開データの一例を示す図である。
【図１３】従来技術における色展開装置１３００の機能ブロック図である。
【図１４】従来技術における画面１４００上の「ＴＶ番組表」の表示例である。
【図１５】従来技術における画面１４００上のウィンドウに表示される文字「Ａ」及び文字「Ｍ」のフォント構成と、対応する色展開データがＶＲＡＭの一部に格納されている様子を示す図である。
【図１６】従来技術における、ウィンドウ１４０２に「ＡＭ  ８：００」を表示させる際の、文字「Ａ」及び文字「Ｍ」の色展開データがＶＲＡＭに格納されるまでの処理過程を示した図である。
【符号の説明】
１００            色展開装置
１１０            フォントＲＯＭ
１２０            ＲＯＭ
１３０            入力操作部
１４０            ＯＳＤ用記憶部
１５０、６５０    色展開処理部
１５１、６５１    アドレスデコーダ
１５２            色展開データ生成部
１５３            色展開レジスタ
１５４            色データ記憶部
１５５            バレルシフタ
１５６            前アドレスメモリ
１５７            比較器
１５８、６５２    カウンタ
１５９            セレクタ
１６０            ＶＲＡＭ
１７０            主記憶部
１８０            ＣＰＵ
１８１            レジスタ群
１９０            バス
６５３            前回値レジスタ
６５４            合成制御器
６５５            データ合成部
６５６            出力バッファ
１０００、１３００  色展開装置
１０１０            色展開専用コントローラ
１０２０、１３７０  ＣＰＵ
１３１０            フォントＲＯＭ
１３２０            ＲＯＭ
１３３０            入力操作部
１３４０            ＯＳＤ用記憶部
１３５０            ＶＲＡＭ
１３６０            主記憶部
１３７１            レジスタ群
１３８０            バス
【図１】
0004439032.tif 000002
【図２】
0004439032.tif 000003
【図３】
0004439032.tif 000004
【図４】
0004439032.tif 000005
【図５】
0004439032.tif 000006
【図６】
0004439032.tif 000007
【図７】
0004439032.tif 000008
【図８】
0004439032.tif 000009
【図９】
0004439032.tif 000010
【図１０】
0004439032.tif 000011
【図１１】
0004439032.tif 000012
【図１２】
0004439032.tif 000013
【図１３】
0004439032.tif 000014
【図１４】
0004439032.tif 000015
【図１５】
0004439032.tif 000016
【図１６】
0004439032.tif 000017