以下、実施形態を添付した図面に従って説明する。
(システム構成)
図1に示す電子機器10は、例えばデジタルスチルカメラであり、撮像部11と、画像処理プロセッサ12と、メモリ13と、操作部14と、表示部15とを備えている。
撮像部11は、例えばCCDやCMOSイメージセンサ等の撮像素子を有し、複数の撮像素子は例えば二次元配列されている。撮像部11は、撮像素子により撮像した1画面(1フレーム)の画像データを、フレーム毎に出力する。
画像処理プロセッサ12は、撮像部11から入力される画像データをメモリ13に一時的に格納する。このメモリ13は、複数フレームの画像データを記憶可能なメモリ容量のメモリである。すなわち、メモリ13は共通フレームメモリ(作業メモリ)として機能する。このメモリ13は、例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などの書き替え可能なメモリである。画像処理プロセッサ12は、メモリ13に格納した画像データに対して各種画像処理を施す。すなわち、画像処理プロセッサ12は、メモリ13から読み出した画像データに対して各種画像処理を施し、処理後の画像データをメモリ13に格納する。
操作部14は、ユーザにより操作される各種スイッチを有している。この各種スイッチは、例えば表示部15に表示する画像の選択、メモリ13に記憶した画像データに対する処理の設定、撮影条件の設定、画像データの消去、等を行うために使用される。画像処理プロセッサ12は、メモリ13に格納した画像データを表示部15に出力する。
表示部15は、液晶や有機EL(Electronic Luminescence)などを用いた表示器である。表示部15は、マトリックス状に配列された複数の表示画素を備えている。1つの配列方向を水平走査方向とし、水平走査方向と直行する方向を垂直走査方向とする。表示部15は、水平同期信号Hsyncの1周期の間に受け取る画像データに従って水平走査方向の画素を駆動する。そして、表示部15は、水平同期信号Hsyncに同期して、駆動する画素列を垂直走査方向に変更する。そして、表示部15は、水平同期信号Hsyncと垂直同期信号Vsyncに基づいて、駆動する画素の位置をリセットすることで、1フレームの画像を表示する。
処理装置12は、メモリ13に格納された画像データを処理するための画像処理部20、画像処理部20は、画像データに対する処理に応じた複数の処理部21〜27を含む。また、処理装置12は、中央処理装置(以下、CPU)31、メモリ13と接続されたメモリコントローラ32(調停部)、表示部15と接続された出力部33を備えている。画像処理部20内の各処理部21〜27と、CPU31と、メモリコントローラ32と、出力部33は、バス34によって互いに接続されている。このバス34は、アドレスバス、コントロールバス、データバス等を含む。
CPU31は、各回路を統括制御する。また、CPU31は、操作部14から入力される操作情報に従って各種情報を対応する処理部21〜27,出力部33のレジスタに格納する。各種情報は、撮影条件、1フレームの画素数、各処理部21〜27,出力部33における動作に必要な情報を含む。各処理部21〜27,出力部33は、初期化時や操作部14の操作に従って設定された情報に基づいて動作する。
メモリコントローラ32は、メモリ13への書き込み要求に応じてメモリ13に対するデータの書き込みを行う。また、メモリコントローラ32は、メモリ13への読み出し要求に応じてメモリ13に対するデータの読み出しを行う。
出力部33は、メモリ13に格納された各フレームの画像データを表示部15に順次転送する。メモリ13には、複数ラインの画素データが各ライン毎に格納されている。1ラインの画像データは1フレームの水平方向の画素列であり、表示部15の1つの走査線に表示する画像に対応する。表示部15は、水平同期信号と垂直同期信号に従って各フレーム画像を表示する。従って、出力部33は、表示部15の表示順序に従ってメモリ13の画像データを、表示のタイミングに応じて転送する。
各処理部21〜27の一例を説明する。
処理部21はプリプロセス部21であり、撮像部11から入力される画像データに対し、例えばホワイトバランス調整やゲイン調整、欠陥信号の補正などの前処理を施す。処理部22は色空間変換部であり、プリプロセス部21により前処理されたRGB形式の画像データ(ベイヤデータ)をYCbCr形式の画像データに変換する。これら処理部21,22により処理された1フレームの画像データは、メモリコントローラ32を介してメモリ13に格納される。処理部23はコーデックであり、メモリ13に格納された画像データを読み出し、その画像データを所定の方式(例えばJPEG(Joint Photographic Experts Group)方式)により符号化し、符号化後の画像データ(符号化データ)をメモリ13に格納する。
処理部24は解像度変換部であり、部分画像データの画像サイズ(解像度)を拡大又は縮小する解像度変換処理を実行する。処理部25は色調変換部であり、部分画像データの色調をセピアやモノクロ等に変換する色調変換処理を実行する。処理部26はエッジ強調部であり、部分画像データに対して画像の輪郭(エッジ)を強調するエッジ強調処理を実行する。処理部27はノイズ補正部であり、部分画像データに含まれるノイズを除去するノイズ補正処理を実行する。なお、画像処理部20に含まれる処理部21〜27、各処理部21〜27の処理内容は一例を示すものであり、画像処理部20が含む処理部の種類や処理内容は、適宜設定されてもよい。
各処理部21〜27と出力部33は、メモリ13をアクセスするための要求を出力する。例えば、処理部21〜27は、メモリ13にデータを書き込むために、書き込み要求を出力する。また、処理部22〜27は、メモリ13からデータを読み出すために、読み出し要求を出力する。同様に、出力部33は、メモリ13から画像データを読み出すための読み出し要求を出力する。
メモリコントローラ32は、メモリ13に対するアクセス要求を調停するアービタとしての機能を有している。
メモリコントローラ32は、各処理部21〜27、出力部33から出力され競合する要求を、例えば各処理部21〜27、出力部33に応じて設定された優先度に従って調停する。そして、メモリコントローラ32は、調停結果を各処理部21〜27,出力部33に出力する。
書き込み要求が許可された処理部21〜27は、メモリ13に対する書き込みの制御信号とデータを出力し、メモリコントローラ32は、その制御信号に従ってデータをメモリ13に格納する。読み出し要求が許可された処理部22〜27,出力部33は、メモリ13からデータを読み出すための制御信号を出力し、メモリコントローラ32は、その制御信号に従ってメモリ13から読み出したデータを要求元の処理部22〜27、出力部33に出力する。
以下、出力部の実施形態を説明する。
なお、以下の説明において、同じ部材については同じ符号を付し、その部材の説明の全て又は一部を省略する。
(第一実施形態)
図2に示すように、出力部33は、複数(例えば2つ)のFIFOメモリ41,42と、両FIFOメモリ41,42のデータ入力を制御する入力制御部43と、両FIFOメモリ41,42のデータ出力を制御する出力制御部44とを備えている。
第1のFIFOメモリ41は、先に書き込んだデータの順に、先に読み出されるメモリである。第1のFIFOメモリ41は、入力制御部43から供給されるライトポインタWP1にて示される位置(アドレス)に入力データを記憶する。そして、第1のFIFOメモリ41は、出力制御部44から供給されるリードポインタRP1にて示される位置(アドレス)のデータを出力する。
同様に、第2のFIFOメモリ42は、先に書き込んだデータの順に、先に読み出されるメモリである。第2のFIFOメモリ42は、入力制御部43から供給されるライトポインタWP2にて示される位置(アドレス)に入力データを記憶する。そして、第2のFIFOメモリ42は、出力制御部44から供給されるリードポインタRP2にて示される位置(アドレス)のデータを出力する。
入力制御部43は、第1のFIFOメモリ41に対するライトポインタWP1及びリードポインタRP1に基づいて、第1のFIFOメモリ41の空き容量を監視し、第1のFIFOメモリ41に対するデータの書き込みを制御する。詳述すると、入力制御部43は、ライトポインタWP1とリードポインタRP1とから第1のFIFOメモリ41の空き容量を算出する。そして、入力制御部43は、算出した空き容量と、メモリ13から読み出すデータ量とを比較する。メモリコントローラ32は、1回の読み出し要求に対して、メモリ13から所定量(例えば64バイト)のデータを読み出し、出力部33に出力する。つまり、1回の読み出し要求に対応する所定量のデータが、メモリ13から出力部33に転送される。このような転送をバースト転送といい、転送されるデータの量をバースト転送量という。つまり、入力制御部43は、空き容量とバースト転送量とを比較し、空き容量がバースト転送量より多くなると、メモリコントローラ32に対して読み出し要求RQ1と要求アドレスRA1を出力する。
メモリコントローラ32は、入力制御部43から出力される読み出し要求RQ1を受け付けると、要求アドレスRA1をメモリ13に出力する。メモリ13は、要求アドレスRA1を先頭アドレスとする領域に含まれる複数(バースト転送量)のデータRDを出力する。入力制御部43は、メモリコントローラ32を介してメモリ13から出力されるデータRDを、入力クロック信号に同期して受け取り、そのデータRDを第1のFIFOメモリ41に書き込み、ライトポインタWP1を更新する。ライトポインタWP1の更新は、そのライトポインタWP1の値を、次のデータを書き込む位置を示す値に変更するものである。なお、図2では、第1のFIFOメモリ41に書き込むデータをメモリコントローラ32から直接FIFOメモリ41に供給するように示すとともに、「DI1」として示している。
入力制御部43は、第1のFIFOメモリ41と同様に、第2のFIFOメモリ42にデータを書き込む。即ち、入力制御部43は、第2のFIFOメモリ42に対するライトポインタWP2及びリードポインタRP2を監視し、第2のFIFOメモリ42の空き容量を監視する。入力制御部43は、空き容量がバースト転送量より多くなると、メモリコントローラ32に対して読み出し要求RQ2と要求アドレスRA2を出力する。そして、入力制御部43は、メモリコントローラ32を介してメモリ13から出力されるデータRDを、入力クロック信号に同期して受け取り、そのデータRDを第2のFIFOメモリ42に書き込み、ライトポインタWP2を更新する。なお、図2では、第2のFIFOメモリ42に書き込むデータをメモリコントローラ32から直接FIFOメモリ42に供給するように示すとともに、「DI2」として示している。
入力制御部43は、出力部33の構成に応じた数で1フレームの画像データを分割した分割画像データを、各FIFOメモリ41,42に書き込む。分割数は、出力部33に含まれるデータ転送のパスの数に対応する。本実施形態において、出力部33は、2つのFIFOメモリ41,42を含み、各FIFOメモリ41,42に対して、データDI1,DI2を書き込む処理と、データDO1,DO2を出力する処理が独立して実施される。従って、出力部33は、2つのデータ転送パスを含む。入力制御部43は、2つのデータ転送パスに応じて、1フレームの画像データを2つに分割した分割画像データを、第1のFIFOメモリ41と第2のFIFOメモリ42にそれぞれ書き込む。
詳述すると、図3に示すように、1フレームの画像データFPは、2つの分割画像データFP1,FP2に分割される。入力制御部43は、第1の分割画像データFP1に含まれるデータを、表示部15の表示順序、つまり図3に一点鎖線で示すように、各ラインに沿って左上から右下に向って読み出す。同様に、入力制御部43は、第2の分割画像データFP2に含まれるデータを、表示部15の表示順序、つまり図3に二点鎖線で示すように、各ラインに沿って左上から右下に向って読み出す。
1フレームの画像データFPは、図4に示すように、表示部15の表示画素に対応する複数(例えばn本)のラインデータL0〜Lnー1を含み、各ラインデータL0〜Lnー1は、それぞれ複数(例えばm個)の画素データGを含む。画像データFPは、例えばYCbCr形式の画像データである。
図2に示すメモリ13は、出力部33から出力される読み出し要求に応答して、出力部33から供給される要求アドレスを先頭アドレスとして、バースト転送量のデータを出力する。メモリ13から1回のバースト転送により出力される複数のデータを、ブロックデータと呼ぶ。各ラインデータL0〜Ln−1は、それぞれ複数のブロックデータとしてメモリ13から出力される。
例えば、図5(a)に示すように、1フレームの画像データFPは、8本のラインデータL0〜L7により構成される。各ラインデータL0〜L7は、それぞれ8つのブロックデータとして出力される。従って、1フレームの画像データFPは、64個のブロックデータD0〜D63により構成される。画像データFPは、図5(b)に示すように、図面において左側半分のデータを含む分割画像データFP1と、図5(c)に示すように、図面において右側半分のデータを含む分割画像データFP2とに分割される。
各ラインL0〜L7のデータ量は、1フレームの画像データFPの画素数に対応する。そして、1回のバースト転送により転送されるデータ量は、予め設定されている。従って、各ラインL0〜L7のデータを転送するために必要な転送回数は、各ラインL0〜L7のデータ量とバースト転送量とに基づいて算出される。この算出された転送回数に応じて、メモリ13から第1のFIFOメモリ41及び第2のFIFOメモリ42にそれぞれデータを読み出すために必要な読み出し要求を出力する回数(要求回数)が、例えば入力制御部43のレジスタ43aに記憶されている。
図5(a)に示す画像データFPは、図5(b),(c)に示すように、2つの分割画像データFP1,FP2に分割される。従って、レジスタ43aには、1ラインの画像データを転送するために必要な転送回数の半分の値が、各FIFOメモリ41,42に対する要求回数として記憶されている。第1のFIFOメモリ41に対応する要求回数をRN1、第2のFIFOメモリ42に対応する要求回数をRN2とする。
入力制御部43は、読み出し要求RQ1を出力し、その読み出し要求RQ1に応じてメモリ13から出力されるデータを、第1のFIFOメモリ41に書き込む。入力制御部43は、読み出し要求RQ1の出力回数をカウントし、そのカウント値が要求回数RN1と一致するまで第1のFIFOメモリ41に対する処理を継続する。そして、入力制御部43は、カウント値が要求回数RN1と一致すると、第2のFIFOメモリ42に対する処理を開始する。即ち、入力制御部43は、読み出し要求RQ2を出力し、その読み出し要求RQ2に応じてメモリ13から出力されるデータを、第2のFIFOメモリ42に書き込む。そして、入力制御部43は、読み出し要求RQ2の出力回数をカウントし、そのカウント値が要求回数RN2と一致するまで第2のFIFOメモリ42に対する処理を継続する。そして、入力制御部43は、カウント値が要求回数RN2と一致すると、第1のFIFOメモリ41に対する処理を開始する。なお、図5(a)〜(c)に示す画像データの場合、要求回数は「4」である。
入力制御部43は、第1の分割画像データFP1に含まれるデータを、メモリ13から読み出すように、要求アドレスRA1を生成する。即ち、入力制御部43は、先ず、ブロックデータD0を読み出すための要求アドレスRA1を生成し、次に、ブロックデータD1,D2を読み出すための要求アドレスRA1を生成する。そして、入力制御部43は、ブロックデータD3を読み出すための要求アドレスRA1を生成すると、次に、ブロックデータD8を読み出すための要求アドレスRA1を生成する。
ブロックデータD0の先頭アドレスは、第1の分割画像データFP1の先頭アドレスと等しく、ラインL0のデータが格納された領域の先頭アドレスと等しい。また、ブロックデータD0の先頭アドレスは、画像データFPが格納された領域の先頭アドレスと等しい。この画像データFPの先頭アドレスは、図1に示す画像処理プロセッサ12において設定されている。そして、入力制御部43のレジスタ43aには、この画像データFPの先頭アドレスが記憶されている。入力制御部43は、この先頭アドレスに基づいて、ブロックデータD0を読み出すための要求アドレスRA1を生成する。
また、入力制御部43のレジスタ43aには、バースト転送量が記憶されている。入力制御部43は、メモリ13から読み出したブロックデータの数をカウントし、このカウント値と、バースト転送量に基づいて、ラインL0のブロックデータD1〜D3を読み出すための要求アドレスRA1を生成する。ブロックデータの数は、例えば、読み出し要求RQ1に対してメモリコントローラ32から出力される許可信号をカウントすることにより得られる。入力制御部43は、読み出し回数をバースト転送量に乗算し、その乗算結果を画像データFPの先頭アドレスに加算して各ブロックデータD1〜D3に対応する要求アドレスRA1を算出する。
また、入力制御部43のレジスタ43aには、画像データFPのサイズ(各ラインの画素数と、垂直方向の画素数(ラインの本数))が記憶されている。入力制御部43は、メモリ13から読み出したラインの数をカウントし、このカウント値と、各ラインの画素数とに基づいて、各ラインL0〜L7に含まれる先頭のブロックデータD8,16,・・・,D56に対応する要求アドレスRA1を生成する。読み出したラインの数は、例えば、水平同期信号Hsyncをカウントすることにより得られる。入力制御部43は、ラインの数をラインの画素数に乗算し、その乗算結果を画像データFPの先頭アドレスに加算して、各ブロックデータD8〜D56に対応する要求アドレスRA1を生成する。
このように、入力制御部43は、第1の分割画像データFP1に含まれる複数のブロックデータD0〜D59に対応する要求アドレスRA1を生成する。
同様に、入力制御部43は、第2の分割画像データFP2に含まれるデータを、メモリ13から読み出すように、要求アドレスRA2を生成する。即ち、入力制御部43は、先ず、ブロックデータD4を読み出すための要求アドレスRA2を生成し、次に、ブロックデータD5,D6を読み出すための要求アドレスRA2を生成する。そして、入力制御部43は、ブロックデータD7を読み出すための要求アドレスRA2を生成すると、次に、ブロックデータD12を読み出すための要求アドレスRA2を生成する。
入力制御部43のレジスタ43aには、ブロックデータD4の先頭アドレスが記憶されている。ブロックデータD4の先頭アドレスは、第2の分割画像データFP2の先頭アドレスと等しい。第2の分割画像データFP2の先頭アドレスは、画像データFPの先頭アドレスと、その先頭アドレスから分割位置までの画素数、つまり、各ラインL0〜L7において第1の分割画像データFP1に含まれるブロックデータの数と各ブロックデータに含まれる画素データの数(=バースト転送量)に基づいて設定されている。入力制御部43は、この先頭アドレスに基づいて、ブロックデータD4を読み出すための要求アドレスRA2を生成する。
そして、入力制御部43は、ブロックデータD1〜D3に対応する要求アドレスRA1と同様に、ブロックデータD5〜D7に対応する要求アドレスRA2を生成する。更に、入力制御部43は、ブロックデータD8,D16,・・・,D56に対応する要求アドレスRA1と同様に、ブロックデータD12,D20,・・・,D60に対応する要求アドレスRA2を生成する。このように、入力制御部43は、第2の分割画像データFP2に含まれる複数のブロックデータD4〜D63に対応する要求アドレスRA2を生成する。
別の画像データFPの例を図6(a)に示す。この画像データFPの各ラインL0,L1,L2は、それぞれ10個のブロックデータとして出力される。つまり、ラインL0は、ブロックデータD0〜D9により構成される。同様に、ラインL1はブロックデータD10〜D19により構成され、ラインL2はブロックデータD20〜D29により構成される。
入力制御部43は、この画像データFPを2つの分割画像データに分割して管理する。従って、第1の分割画像データFP1は、ブロックデータD0〜D4,D10〜D14,D20〜D24を含み、第2の分割画像データFP2は、ブロックデータD5〜D9,D15〜D19,D25〜D29を含む。この場合、要求回数は「5」となる。
図2に示すFIFOメモリ41,42は、4つのブロックデータを記憶可能なメモリ容量を持つ。つまり、各FIFOメモリ41,42のメモリ容量は、分割画像データFP1,FP2の各ラインのデータ量よりも小さな値に設定されている。例えば、画像データFPの水平方向のデータ量は1024バイト、各FIFOメモリ41,42のメモリ容量は256バイト、バースト転送量は64バイトである。この場合、要求回数は「8」となる。
入力制御部43は、先ずブロックデータD0〜D3を図2に示すメモリ13から読み出し、これらのブロックデータD0〜D3を第1のFIFOメモリ41に格納する。また、入力制御部43は、ブロックデータD5〜D8をメモリ13から読み出し、これらのブロックデータD5〜D8を第2のFIFOメモリ42に格納する。このときの格納状態を図6(b)に示す。
出力制御部44は、図6(a)に示す第1のFIFOメモリ41からデータD0を読み出す。そして、出力制御部44が第1のFIFOメモリ41からブロックデータD1の読み出すとき、入力制御部43は、第1のFIFOメモリ41に対してデータの転送が可能であると判定し、次のブロックデータD4をメモリ13から読み出し、図6(c)に示すように、第1のFIFOメモリ41に格納する。
出力制御部44は、図6(c)に示す第1のFIFOメモリ41からブロックデータD4の読み出しを終了すると、図6(b)に示す第2のFIFOメモリ42からデータを読み出す。そして、出力制御部44が第2のFIFOメモリ42からブロックデータD5を読み出すと、入力制御部43は、第2のFIFOメモリ42に対してデータの転送が可能と判定し、次のブロックデータD9をメモリ13から読み出し、図6(c)に示すように、第2のFIFOメモリ42に格納する。
出力制御部44が第2のFIFOメモリ42からデータの読み出しを行っているとき、入力制御部43は、第1のFIFOメモリ41に対するデータ転送が可能であると判定し、次のラインL1のブロックデータD10〜D13をメモリ13から読み出し、図6(d)に示すように第1のFIFOメモリ41に格納する。
出力制御部44は、図6(c)に示す第2のFIFOメモリ42からブロックデータD9の読み出しを終了すると、図6(d)に示す第1のFIFOメモリ41からブロックデータD10を読み出す。そして、出力制御部44が第1のFIFOメモリ41からブロックデータD11を読み出すとき、入力制御部43は、第1のFIFOメモリ41に対してデータの転送が可能と判定し、次のブロックデータD14をメモリ13から読み出し、図6(e)に示すように、第1のFIFOメモリ41に格納する。
出力制御部44が第1のFIFOメモリ41からデータの読み出しを行っているとき、入力制御部43は、第2のFIFOメモリ42に対するデータ転送が可能であると判定し、次のラインL1のブロックデータD15〜D19をメモリ13から読み出し、図6(d)に示すように第2のFIFOメモリ42に格納する。
このように、入力制御部43は、第1の分割画像データFP1を、各ライン毎に、第1のFIFOメモリ41に対して循環的に格納する。また、入力制御部43は、第2の分割画像データFP2を、各ライン毎に、第2のFIFOメモリ42に対して循環的に格納する。
なお、入力制御部43は、各FIFOメモリ41,42の空き容量を監視し、空き容量がバースト転送量よりも多くなると、そのFIFOメモリの空き領域に対するデータをメモリ13から読み出してFIFOメモリに書き込む。例えば、図6(c)に示すFIFOメモリ41において、出力制御部44がブロックデータD1の読み出しを完了すると、入力制御部43は、次のブロックデータ、つまり次ラインL1のブロックデータD10(図6(a)参照)の読み出して第1のFIFOメモリ41に書き込むことが可能となる。
つまり、出力制御部44がデータを出力する対象を、第1のFIFOメモリ41から第2のFIFOメモリ42に切り換えたとき、第1のFIFOメモリ41に対して、データブロックD10〜D13の読み出しが可能となる。しかし、これらブロックデータD10〜D13は、次のラインL1のデータであるため、次のラインL1のデータの読み出しより、現在のラインL0のデータの読み出し、つまり第2のFIFOメモリ42に対するデータブロックD9(図6(c)参照)の読み出しが優先されなければならない。このため、図2に示す優先転送制御部48は、入力制御部43が出力する読み出し要求RQ1,RQ2の優先度を制御する。
出力制御部44は、第1のFIFOメモリ41から分割画像データFP1の1ライン分の画像データを読み出すと、第2のFIFOメモリ42からデータの読み出しを開始する。また、出力制御部44は、第2のFIFOメモリ42から分割画像データFP2の1ライン分の画像データを読み出すと、第1のFIFOメモリ41からデータの読み出しを開始する。
なお、入力制御部43のレジスタ43aに格納されたバースト転送量等のパラメータは、画像データFPの先頭アドレスに対する相対値となる。このため、各ブロックデータに対応する絶対値(メモリ13のアドレス値)がレジスタ43aに記憶されていてもよい。逆に、画像データFPの先頭アドレスをメモリ13に設定された基準アドレスに対する相対値としてもよい。また、各ブロックデータの先頭アドレスはアドレステーブルとして記憶され、そのアドレステーブルを参照して要求アドレスが入力制御部43から出力される構成としてもよい。
出力制御部44は、同期信号Vsync,Hsyncを受け取る。また、出力制御部44は、出力用のクロック信号を受け取る。同期信号Vsync,Hsyncは、表示部15が映像を表示するための同期信号であり、出力用のクロック信号は、例えば表示部15に含まれる画素の駆動回路にデータを供給するシフトレジスタを動作させるためのクロック信号である。出力制御部44は、同期信号Vsync,Hsyncに基づくタイミングで、第1のFIFOメモリ41と第2のFIFOメモリ42から、出力用のクロック信号に同期してデータが出力されるように制御する。
出力制御部44は、出力すべきデータが格納されているFIFOメモリに対してデータ出力処理を行う。例えば、第1のFIFOメモリ41に出力すべきデータが格納されている場合、出力制御部44は、第1のFIFOメモリ41に、リードポインタRP1を供給し、リードポインタRP1を更新する。第1のFIFOメモリ41は、リードポインタRP1が示す位置のデータDO1を出力する。リードポインタRP1の更新は、リードポインタRP1の値を、次のデータを読み出す位置を示す値に変更するものである。同様に、第2のFIFOメモリ42に出力データが格納されている場合、出力制御部44は、第2のFIFOメモリ42に、リードポインタRP2を供給し、リードポインタRP2を更新する。第2のFIFOメモリ42は、リードポインタRP2が示す位置のデータDO2を出力する。
出力すべきデータが格納されているFIFOは、入力制御部43が第1のFIFOメモリ41と第2のFIFOメモリ42に対して連続的に書き込むデータのデータ量に応じて決定される。表示部15は、水平同期信号Hsyncの各周期において、1ラインの画像を表示するためのデータを必要とする。このため、出力部33は、水平同期信号Hsyncの1周期の間に、1ライン分の画像データを出力する。1ライン分の画像データのデータ量は、表示部15に応じて決定される。
そして、出力部33は、1フレームの画像データFPを2つの分割画像データFP1,FP2に分割し、第1の分割画像データFP1を第1のFIFOメモリ41を用いて転送し、第2の分割画像データFP2を第2のFIFOメモリ42を用いて転送する。つまり、各ラインの画像データにおいて、表示部15のラスタ方向において、各ラインの前半の画像データが第1のFIFOメモリ41に書き込まれ、各ラインの後半の画像データが第2のFIFOメモリ42に書き込まれる。従って、水平同期信号Hsyncに基づく出力開始時には、出力すべきデータは第1のFIFOメモリ41に格納されている。このため、出力制御部44は、第1のFIFOメモリ41からデータを出力させる。
また、出力制御部44のレジスタ44aには、各ラインに含まれる画像データのデータ量の1/2(二分の一)の値が出力回数として格納されている。第1のFIFOメモリ41が出力するデータの数をカウントし、そのカウント値と出力回数とを比較する。出力制御部44は、カウント値が出力回数と等しくなるまで第1のFIFOメモリ41からデータを出力させる。そして、出力制御部44は、カウント値が出力回数と等しくなると、カウント値をリセットし、第2のFIFOメモリ42からデータを出力させ、第2のFIFOメモリ42が出力するデータの数をカウントする。そして、出力制御部44は、そのカウント値が出力回数と等しくなるまで第2のFIFOメモリ42からデータを出力させ、カウント値が出力回数と等しくなると、その周期におけるデータの出力を停止させる。
選択回路45は、第1のFIFOメモリ41から出力されるデータDO1と、第2のFIFOメモリ42から出力されるデータDO2を受け取る。また、選択回路45は、出力制御部44から出力される選択信号SELを受け取る。選択回路45は、第1のデータDO1と第2のデータDO2のうち、選択信号SELに応じたデータを選択し、その選択したデータと等しいデータDT1を出力する。
出力制御部44は、第1のFIFOメモリ41に対するデータ出力処理を行う、つまりリードポインタRP1を第1のFIFOメモリ41に供給してそのFIFOメモリ41からデータDO1を出力させるとき、第1のレベル(例えばHレベル)の選択信号SELを出力する。出力制御部44は、第2のFIFOメモリ42に対するデータ出力処理を行う、つまりリードポインタRP2を第2のFIFOメモリ42に供給してそのFIFOメモリ42からデータDO2を出力させるとき、第1のレベルと異なる第2のレベル(例えばLレベル)の選択信号SELを出力する。
選択回路45は、第1のレベルの選択信号SELに応答して第1のデータDO1を選択し、そのデータDO1と実質的に等しいデータDT1を出力する。また、選択回路45は、第2のレベルの選択信号SELに応答して第2のデータDO2を選択し、そのデータDO2と実質的に等しいデータDT1を出力する。
表示用インタフェース(「表示用I/F」と表記)46は、クロック信号CLKに基づいて、表示部15に1フレームの画像を表示するための同期信号を生成する。同期信号は、フレームの開始を示す垂直同期信号Vsyncと、各ラインの開始を示す水平同期信号Hsyncを含む。各同期信号Vsync,Hsyncの周期は、表示部15に応じて設定されている。表示用I/F46は、同期信号Vsync,Hsyncを出力するとともに、選択回路45から出力されるデータDT1に応じたデータDT2を出力する。
入力制御部43のライトポインタWP1,WP2と、出力制御部44のリードポインタRP1,RP2は、転送監視部47に供給される。転送監視部47は、第1のFIFOメモリ41と第2のFIFOメモリ42のデータ格納状態をそれぞれ監視し、監視結果に応じて転送エラー信号ERRを生成する。
転送監視部47は、第1のFIFOメモリ41に対応するライトポインタWP1とリードポインタRP1に基づいて、第1のFIFOメモリ41のデータ格納状態を監視し、転送破綻が発生しているか否かを判定する。同様に、転送監視部47は、第2のFIFOメモリ42に対応するライトポインタWP2とリードポインタRP2に基づいて、第2のFIFOメモリ42のデータ格納状態を監視し、転送破綻が発生しているか否かを判定する。そして、転送監視部47は、第1のFIFOメモリ41及び第2のFIFOメモリ42に転送破綻が発生していないと判定した場合、例えばLレベルの転送エラー信号ERRを出力する。一方、転送監視部47は、第1のFIFOメモリ41及び第2のFIFOメモリ42の少なくとも一方に転送破綻が発生していると判定した場合、例えばHレベルの転送エラー信号ERRを出力する。
CPU31は、転送エラー信号ERRに応答して、出力部33をリセットする。例えば、CPU31は、所定期間リセット信号を出力する。例えば、出力部33は、そのリセット信号に応答して、リード処理の停止と初期化を行う。入力制御部43は、現在のフレームに対する処理を中断し、次フレームの画像データまで待機する。そして、入力制御部43は、要求アドレスRA1,RA2を初期化(各分割画像データの先頭アドレスに設定)する。また、入力制御部43は、ライトポインタWP1,WP2を初期化し、出力制御部44は、リードポインタRP1,RP2を初期化する。そして、入力制御部43は、次のフレームの表示開始のタイミングに応じて、メモリ13からのデータ読み出しと、FIFOメモリ41,42に対するデータの書き込みを再開する。出力制御部44は、FIFOメモリ41,42からデータの読み出しを再開する。
転送破綻判定の一例を説明する。
なお、第1のFIFOメモリ41に対する転送破綻の判定と、第2のFIFOメモリ42に対する転送破綻の判定は、同じであるため、第1のFIFOメモリ41に対する転送破綻の判定を説明する。
一例として、FIFOメモリ41の容量を、図7(a)に示すように「16」とする。この場合、ライトポインタWP1及びリードポインタRP1は、それぞれ「0」〜「15」の値を取る。初期化された状態において、ライトポインタWP1及びリードポインタRP1は、最初の領域「0」を示す。
転送監視部47のレジスタには、ライトポインタWP1に対応する位相ビットと、リードポインタRP1に対応する位相ビットが設定されている。転送監視部47は、それぞれの位相ビットの初期値を「0」とする。そして、転送監視部47は、ライトポインタWP1が「0」になる毎に、「0」及び「1」を反転するトグルを繰り返す。
図7(b)に示すように、FIFOメモリ41は、1つの入力データをライトポインタWP1が示す領域に格納し、ライトポインタWP1を更新する。更新後のライトポインタWP1は「1」の領域を示す。
図7(c)に示すように、ライトポインタWP1が領域「13」を示し、リードポインタRP1が領域「2」を示す。そして、ライトポインタWP1の位相ビットと、リードポインタRP1の位相ビットは、互いに同じ値である。従って、ハッチングを付した領域、即ち領域「2」から領域「12」までデータが格納されている。この場合、転送監視部47は、ライトポインタWP1の値からリードポインタRP1の値を減算してデータ量を算出する。図7(c)に示す状態の場合、データ量は「11」(=13−2)となる。この場合、データ量が正の値であるため、転送監視部47は、ライトポインタWP1がリードポインタRP1より先行しているため、転送破綻していないと判定する。
図7(d)に示すように、ライトポインタWP1が領域「4」を示し、リードポインタRP1が「11」を示す。そして、ライトポインタWP1の位相ビットと、リードポインタRP1の位相ビットは、互いに異なるである。従って、ハッチングを付した領域、即ち領域「11」から領域「15」と、領域「0」から領域「3」にデータが格納されている。この場合、転送監視部47は、ライトポインタWP1にFIFOメモリ41のメモリ容量(=16)を加算した値(=20=4+16)からリードポインタRP1の値(=11)を減算してデータ量(=9)を算出する。この場合、データ量が正の値であるため、転送監視部47は、ライトポインタWP1がリードポインタRP1より先行しているため、転送破綻していないと判定する。
図7(e)に示すように、ライトポインタWP1が領域「4」を示し、リードポインタRP1が領域「5」を示す。そして、ライトポインタWP1の位相ビットと、リードポインタRP1の位相ビットは、互いに同じ値である。この場合、図7(c)に示すときと同様に、転送監視部47は、ライトポインタWP1の値からリードポインタRP1の値を減算してデータ量を算出する。図7(e)に示す状態の場合、データ量は「−1」(=4−5)となる。従って、データ量が負の値であるため、転送監視部47は、ライトポインタWP1よりリードポインタRP1が先行しており、転送破綻していると判定する。
なお、転送監視部47は、データ量が「0」、つまりライトポインタWP1とリードポインタRP1が同じ領域を示す場合、転送破綻は発生していないと判定する。第1のFIFOメモリ41に対してデータを書き込む処理と、第1のFIFOメモリ41からデータを読み出す処理は、非同期に発生する。従って、読み出しよりも書き込みが先に行われると、第1のFIFOメモリ41のデータ格納状態は、図7(c)に示す状態となり、転送破綻は発生しない。一方、書き込みよりも読み出しが先に行われると、第1のFIFOメモリ41のデータ格納状態は、図7(d)に示す状態、つまり転送破綻の発生となる。
出力部33は、入力制御部43に接続された優先転送制御部48を備えている。優先転送制御部48は、出力部33から出力される複数の読み出し要求の競合を抑制する。出力部33は複数(図2において2つ)のFIFOメモリ41,42を備える。入力制御部43は、各FIFOメモリ41,42に書き込むデータをメモリ13から読み出すために、各FIFOメモリ41,42のそれぞれに対応する読み出し要求RQ1,RQ2を出力する。
出力部33から出力される読み出し要求RQ1,RQ2は、メモリコントローラ32に供給される。このメモリコントローラ32には、図1に示す処理部21〜27がメモリ13をアクセスするための要求信号が供給される。従って、メモリコントローラ32では、処理部21〜27と出力部33が出力する要求信号が競合する。つまり、出力部33が2つの読み出し要求RQ1,RQ2を同時に出力すると、これらの要求RQ1,RQ2が互いに競合することになる。
このため、優先転送制御部48は、入力制御部43が要求信号RQ1,RQ2の何れか一方を優先して出力するように、入力制御部43を制御する。例えば、優先転送制御部48は、入力制御部43に対してマスク信号MSを出力する。このマスク信号MSは、例えば、1ビットの信号であり、優先転送制御部48は、入力制御部43が要求信号RQ1を出力する毎に、マスク信号MSの信号レベルを反転するトグルを繰り返す。マスク信号MSの初期レベルは例えばLレベルである。入力制御部43は、Lレベルのマスク信号MSに応答して第1のFIFOメモリ41に対応する要求信号RQ1を優先し、Hレベルのマスク信号MSに応答して第2のFIFOメモリ42に対応する要求信号RQ2を優先する。
なお、優先転送制御部48は、一定レベルのマスク信号MSを出力するようにしてもよい。つまり、両読み出し要求RQ1,RQ2のうちの何れか一方、例えば読み出し要求RQ1を他方の読み出し要求RQ2より優先して出力するようにしてもよい。
次に、上記のように構成された出力部33の作用を説明する。
図2に示す出力部33は、表示部15の表示タイミングに応じて、1ライン分の画像データを出力する。例えば、出力部33は、図8に示すように、水平同期信号Hsyncに応じた期間P1においてラインL0の画像データDT2を出力し、期間P2においてラインL1の画像データDT2を出力する。データDT2は、図8に示すように、第1のFIFOメモリ41から出力されるデータDO1と、第2のFIFOメモリ42から出力されるデータDO2とに基づく。
第1のFIFOメモリ41におけるデータ格納率DV1は、ライトポインタWP1とリードポインタRP1、つまり、メモリ13から第1のFIFOメモリ41へデータを転送することにより増加し、第1のFIFOメモリ41から表示部15へデータを転送することにより減少する。同様に、第2のFIFOメモリ42におけるデータ格納率DV2は、ライトポインタWP2とリードポインタRP2、つまり、メモリ13から第2のFIFOメモリ42へデータを転送することにより増加し、第2のFIFOメモリ42から表示部15へデータを転送することにより減少する。
なお、データ格納率DV1,DV2は、各FIFOメモリ41,42のメモリ容量に対する、ライトポインタWP1,WP2とリードポインタRP1,RP2の差分値の割合(百分率)である。従って、データ格納率DV1,DV2は、FIFOメモリ41,42のデータ格納状態がフル、つまりFIFOメモリ41,42の全ての領域にデータが書き込まれ、読み出しが行われていないときに「100(%)」となる。一方、データ格納率DV1,DV2は、FIFOメモリ41,42のデータ格納状態がエンプティ(EMPTY) 、つまりFIFOメモリ41,42の全ての領域のデータが読み出され、書き込みが行われていないときに「0(%)」となる。
今、第1のFIFOメモリ41と第2のFIFOメモリ42は、データが格納され、読み出しが開始されていないため、それぞれのデータ格納率DV1,DV2は「100(%)」となっている。
時刻T11において、ラインL0に対応するデータDT2の出力が開始される。
このとき、図2に示す出力制御部44は、選択回路45に対して選択信号SELを出力し、第1のFIFOメモリ41から出力されるデータDO1を選択させる。そして、出力制御部44は、第1のFIFOメモリ41のリードポインタRP1を制御し、ラインL0の前半のデータDO1(図8において「L0−L」と表記)を出力する。入力制御部43は、第1のFIFOメモリ41のライトポインタWP1及びリードポインタRP1に基づいて、第1のFIFOメモリ41の空き容量を監視する。そして、入力制御部43は、監視結果に応じて、出力すべきデータ、つまりラインL0−Lのデータをメモリ13から読み出し、第1のFIFOメモリ41に書き込む。
ラインL0−Lのデータの全てを第1のFIFOメモリ41から読み出す(時刻T12)と、出力制御部44は、図2に示すように、選択信号SELを出力して選択回路45に第2のFIFOメモリ42から出力されるデータDO2を選択させる。そして、出力制御部44は、第2のFIFOメモリ42のリードポインタRP2を制御し、ラインL0の後半のデータDO2(図8において「L0−R」と表記)を出力する。入力制御部43は、第2のFIFOメモリ42のライトポインタWP2及びリードポインタRP2に基づいて、第2のFIFOメモリ42の空き容量を監視する。そして、入力制御部43は、監視結果に応じて、出力すべきデータ、つまりラインL0−Rのデータをメモリ13から読み出し、第2のFIFOメモリ42に書き込む。
ラインL0−Rのデータの全てを第2のFIFOメモリ42から読み出す(時刻T13)と、ラインL0の画像データDT2の出力を終了する。
そして、ラインL0のデータDT2と同様に、水平同期信号Hsyncに基づく期間P2において、ラインL1のデータDT2を出力する。
即ち、時刻T21において、ラインL1に対応するデータDT2の出力が開始される。
先ず、時刻T21から時刻T22までの期間において、出力制御部44は、第1のFIFOメモリ41のリードポインタRP1を制御し、ラインL1の前半のデータDO1(図8において「L1−L」と表記)を出力する。入力制御部43は、第1のFIFOメモリ41のライトポインタWP1及びリードポインタRP1に基づいて、第1のFIFOメモリ41の空き容量を監視し、第1のFIFOメモリ41に対する書き込みを制御する。
同様に、時刻T22から時刻T23の期間において、出力制御部44は、第2のFIFOメモリ42のリードポインタRP2を制御し、ラインL1の後半のデータDO2(図8において「L1−R」と表記)を出力する。入力制御部43は、第2のFIFOメモリ42のライトポインタWP2及びリードポインタRP2に基づいて、第2のFIFOメモリ42の空き容量を監視し、第2のFIFOメモリ42に対する書き込みを制御する。
上記したように、時刻T11から時刻T12までの期間PO1では、出力制御部44は、出力用のクロック信号に同期して連続的に第1のFIFOメモリ41からデータを出力する。この期間PO1を出力期間という。また、期間PO1では、入力制御部43は、読み出し要求RQ1に対してメモリコントローラ32が出力する許可のタイミングに応じてメモリ13がから出力されるデータを、第1のFIFOメモリ41に書き込む。従って、第1のFIFOメモリ41のデータ格納率DV1は、第1のFIFOメモリ41にデータを書き込むことと、第1のFIFOメモリ41からデータを読み出すことにより、増減する。
FIFOメモリからデータが出力されない期間をブランク期間という。例えば、第1のFIFOメモリ41のブランク期間PB1は、図8において、時刻T12から時刻T21までの期間である。このブランク期間PB1では、第2のFIFOメモリ42からデータが出力されないため、データ格納率DV1は減少しない。一方、入力制御部43は、このブランク期間PB1においても、上記の出力期間と同様に、第1のFIFOメモリ41の空き容量を監視し、第1のFIFOメモリ41に対する書き込みを制御する。従って、ブランク期間PB1では、データ格納率DV1が増加する。そして、ブランク期間PB1が長いほど、入力制御部43が出力する読み出し要求RQ1が許可される回数が多くなる、つまりデータ格納率DV1が高くなる。例えば、図8の場合、次のラインのデータを第1のFIFOメモリ41から読み出しを開始するとき(時刻T21)において、データ格納率DV1は「100(%)」となる。
同様に、時刻T12から時刻T13までの出力期間PO2では、出力制御部44は、出力用のクロック信号に同期して連続的に第2のFIFOメモリ42からデータを出力する。また、出力期間PO2では、入力制御部43は、読み出し要求RQ1に対してメモリコントローラ32が出力する許可のタイミングに応じてメモリ13がから出力されるデータを、第2のFIFOメモリ42に書き込む。従って、第2のFIFOメモリ42のデータ格納率DV2は、な第2のFIFOメモリ42にデータを書き込むことと、第2のFIFOメモリ42からデータを読み出すことにより、増減する。
図8において、時刻T13から時刻T22までのブランク期間PB2では、第2のFIFOメモリ42からデータが出力されないため、データ格納率DV2は減少しない。一方、入力制御部43は、このブランク期間PB2においても、上記の出力期間と同様に、第2のFIFOメモリ42の空き容量を監視し、第2のFIFOメモリ42に対する書き込みを制御する。従って、ブランク期間PB2では、データ格納率DV2が増加する。そして、ブランク期間PB2が長いほど、入力制御部43が出力する読み出し要求RQ1が許可される回数が多くなる、つまりデータ格納率DV2が高くなる。例えば、図8の場合、次のラインのデータを第2のFIFOメモリ42から読み出しを開始するとき(時刻T21)において、データ格納率DV2は「100(%)」となる。
即ち、第1のFIFOメモリ41からラインL1−Lのデータの出力を開始するとき、第1のFIFOメモリ41のデータ格納状況は、ラインL0−Lのデータ出力を開始するときの第1のFIFOメモリ41のデータ格納状況と等しくなる。このことは、第1のFIFOメモリ41における転送破綻の発生を低減する。また、第2のFIFOメモリ42からラインL1−Rのデータの出力を開始するとき、第2のFIFOメモリ42のデータ格納状況は、ラインL0−Rのデータ出力を開始するときの第1のFIFOメモリ42のデータ格納状況と等しくなる。このことは、第2のFIFOメモリ42における転送破綻の発生を低減する。
図8に示すブランク期間PB1,PB2の長さは、図3に示す画像データFPの水平方向のデータ量(1ラインのデータ量)と、画像データFPの分割数に基づく。水平同期信号Hsyncの周期と、画像データFPの水平方向のデータ量は、表示部15に応じて設定されている。例えば、画像データFPの分割数が「1」、つまり、1つのラインを1つのFIFOメモリを用いてデータ転送を行う場合、ブランク期間PBは、1つのラインの画像データの出力完了から、次のラインの画像データの出力開始までである。例えば、図8に示す時刻T13から時刻T21までの期間が相当する。この期間は、水平ブランク期間HBと呼ばれる。これに対し、画像データFPの分割数が「2」以上の場合、1つのFIFOメモリに対するブランク期間PBは、他のFIFOメモリにおける出力期間と水平ブランク期間HBとを合成した期間となる。
本実施形態の場合、図8に示すように、第1のFIFOメモリ41に対するブランク期間PB1は、第2のFIFOメモリ42の出力期間PO2と、水平ブランク期間HBとを合成した期間となる。同様に、第2のFIFOメモリ42に対するブランク期間PB2は、第1のFIFOメモリ42の出力期間PO1と、水平ブランク期間HBとを合成した期間となる。このように、複数のFIFOメモリを備えることで、各FIFOメモリに対するブランク期間を、1つのFIFOメモリによりデータを転送する場合と比べて長くすることができる。
上記したように、転送破綻の発生は、リードポインタにて読み出すデータの書き込みが間に合わない、即ちリードポインタがライトポインタより先行することで発生する。
例えば、1つのFIFOメモリを備えた出力部によりデータを転送する場合、図9に示すように、時刻T31においてラインL0のデータDT0の出力が開始され、時刻T32においてデータDT0の出力が終了する。なお、この図9において転送するデータ量は、図8に示す場合、つまり出力部33が転送するデータ量と同じとする。FIFOメモリのデータ格納率DV0は、データ出力とデータ書き込みに応じて増減する。
そして、水平ブランク期間HBにおいて、入力制御部によってFIFOメモリのデータ格納率DV0は増加する。しかし、時刻T41において、次のラインL1のデータ出力を開始するとき、データ格納率DV0は、ラインL0のデータ出力を開始するときのデータ格納率まで回復していない。この状態でラインL1のデータ出力を行うと、ラインL1のデータ出力を完了した時点(時刻T42)におけるデータ格納率は、ラインL0のデータ出力を完了した時点(時刻T32)におけるデータ格納率よりも低くなる。この結果、次のライン以降のデータ出力において、転送破綻が発生する可能性が高い。
これに対し、本実施形態では、各FIFOメモリ41,42から対応するデータDO1,DO2の出力を開始するとき、水平同期信号Hsyncに基づく各期間P1,P2において、データ格納率を等しくすることができる。従って、次のラインのデータを出力する期間においても、そのデータ出力を開始するときのデータ格納率を同様に先のラインのデータを出力する場合のデータ格納率と等しくすることが可能となる。この結果、次のライン以降のデータ出力においても、転送破綻が発生する確率は低くなる、即ち転送破綻の発生を低減することができる。
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)出力部33は、リードポインタRP1,RP2に従ってデータを記憶し、ライトポインタに従ってデータを出力する2つのFIFOメモリ41,42と、FIFOメモリ41,42の入力を制御する入力制御部43と、FIFOメモリ41,42の出力を制御する出力制御部44を備える。入力制御部43は、FIFOメモリ41,42の空き容量をそれぞれ監視し、バースト転送量のデータが記憶可能なFIFOメモリ41,42に対応するデータをメモリ13から読み出すための要求信号RQ1,RQ2を出力する。また、入力制御部43は、転送する画像データFPを分割した分割画像データFP1,FP2に応じた要求回数RN1,RN2を記憶し、その要求回数RN1,RN2のブロックデータを対応するFIFOメモリ41,42に対して連続的に格納する。出力制御部44は、表示部15の要求タイミングに応じて、FIFOメモリ41,42を制御する。また、出力制御部44は、分割画像データFP1,FP2に応じた出力データ量を記憶し、その出力データ量に従ってFIFOメモリ41,42を制御する。
第1及び第2のFIFOメモリ41,42のうちの何れか一方のFIFOメモリがデータを出力している期間は、何れか他方のFIFOメモリにとってブランク期間となり、このブランク期間に、メモリ13から出力されるデータを格納することができる。従って、2つのFIFOメモリ41,42を交互に用いることで、各FIFOメモリ41,42のブランク期間を長くすることができ、そのブランク期間にFIFOメモリ41,42にデータを格納することができる。このため、各FIFOメモリ41,42からデータの出力を開始するときに、各FIFOメモリ41,42のデータ格納率を、水平同期信号Hsyncの各周期において、等しくすることが可能となる。この結果、各FIFOメモリ41,42において、転送破綻の発生を低減することができる。
(2)1つのFIFOメモリを用いてデータ転送を行う場合、水平同期信号Hsyncの1周期の間に転送するデータ量に応じて、データ量が増加するほど1つのFIFOメモリにおけるブランク期間は減少する。ブランク期間の減少は、各周期においてデータの出力を開始するときのデータ格納状況を悪化させる。一方、出力部33は、2つのFIFOメモリ41,42のメモリ容量の合計値が、1つのFIFOメモリのメモリ容量と等しい。そして、出力部33は2つのFIFOメモリ41,42における転送破綻の発生を低減することができる。このため、2つのFIFOメモリ41,42のメモリ容量を増加させる必要がない、つまりメモリ容量の増大を抑制することができる。
(第二実施形態)
図10に示すように、出力部51は、入力制御部52と、出力制御部53と、転送監視部54を備えている。
入力制御部52は、転送監視部54から出力される制御信号WC1を受け取り、その制御信号WC1に基づいて、連続的にメモリ13から第1のFIFOメモリ41に転送するデータ量を変更する。また、入力制御部52は、転送監視部54から出力される制御信号WC2に基づいて、連続的にメモリ13から第2のFIFOメモリ42に転送するデータ量を変更する。また、入力制御部52は、各FIFOメモリ41,42の格納状態に応じた格納情報WIを出力制御部53に出力する。
出力制御部53は、格納情報WIに応じてリードポインタRP1,RP2を制御し、各FIFOメモリ41,42からデータを出力させる。
転送監視部54は、入力制御部52から入力されるライトポインタWP1,WP2と、出力制御部53から入力されるリードポインタRP1,RP2に基づいて、各FIFOメモリ41,41のデータ格納率DV1,DV2をそれぞれ算出する。データ格納率DV1,DV2は、データ格納状態に含まれる。そして、転送監視部54は、両FIFOメモリ41,42のデータ格納率DV1,DV2に基づいて、生成した制御WC1,WC2を入力制御部52に出力する。
詳しくは、転送監視部54は、第1のFIFOメモリ41に対する読み出しの開始時にそのFIFOメモリ41のデータ格納率DV1を算出する。そして、転送監視部54は、データ格納率DV1に基づいて、制御信号WC1,WC2を生成する。また、転送監視部54は、第2のFIFOメモリ42に対する読み出しの開始時にそのFIFOメモリ42のデータ格納率DV2を算出する。そして、転送監視部54は、データ格納率DV1に基づいて、制御信号WC1,WC2を生成する。
転送監視部54は、例えば、出力制御部53が出力する開始情報STに応答してデータ格納率DV1,DV2を算出する。出力制御部53は、各FIFOメモリ41,42からデータの読み出しを開始すると、開始情報STを出力する。開始情報STは、出力制御部53がデータを読み出すFIFOメモリ41,42を示す識別情報(例えば、FIFOメモリの番号)と、開始のタイミングに応じたパルス信号を含む。転送監視部54は、開始情報STに含まれるパルス信号に応答して、識別情報に応じたFIFOメモリのライトポインタ及びリードポインタに基づいてデータ格納率を算出する。
図11に示すように、転送監視部54は、格納率算出部61,62と、転送回数制御部63と、信号生成部64とを含む。
格納率算出部61は、入力制御部52から出力されるライトポインタWP1と、出力制御部53から出力されるリードポインタRP1に基づいて、第1のFIFOメモリ41のデータ格納率DV1を算出する。格納率算出部61は、ライトポインタWP1からリードポインタRP1を減算し、その減算結果を第1のFIFOメモリ41のメモリ容量で除算した値を百分率としてデータ格納率DV1を算出する。そして、格納率算出部61は、算出したデータ格納率DV1を出力する。同様に、格納率算出部62は、入力制御部52から出力されるライトポインタWP2と、出力制御部53から出力されるリードポインタRP2に基づいて算出した第2のFIFOメモリ42のデータ格納率DV2を出力する。
転送回数制御部63は、両データ格納率DV1,DV2に基づいて、FIFOメモリ41,42を介して連続して転送するデータ量を変更させるための制御信号WC1,WC2を生成する。例えば、制御信号WC1は、第1のFIFOメモリ41により転送するデータ量を変更するための情報を含み、制御信号WC2は、第2のFIFOメモリにより転送するデータ量を変更するための情報を含む。なお、上記したように、出力部51とメモリ13との間のデータ転送は、出力部51がメモリコントローラ32に出力する読み出し要求RQ1,RQ2に応答して所定量のデータがメモリ13から出力部51に転送されるバースト転送である。従って、上記の変更するデータ量は、バースト転送の回数、つまり入力制御部52がメモリコントローラ32にデータを要求する要求回数(メモリコントローラ32に出力する読み出し要求RQ1,RQ2それぞれの出力回数)である。
転送回数制御部63は、各FIFOメモリ41,42のデータ格納率DV1,DV2に基づいて、両FIFOメモリ41,42の何れか一方の転送データ量を変更するように、制御信号WC1,WC2を生成する。例えば、転送回数制御部63は、第1のFIFOメモリ41のデータ格納率DV1に基づいて第2のFIFOメモリ42のデータ量を変更するための制御信号WC2を生成し、第2のFIFOメモリのデータ格納率DV2に基づいて第1のFIFOメモリ41のデータ量を変更するための制御信号WC1を生成する。制御信号WC1,WC2は、入力制御部52に供給される。
例えば、転送回数制御部63は、しきい値を記憶している。このしきい値は、第1のFIFOメモリ41と第2のFIFOメモリ42において転送破綻が発生しないように設定されている。転送回数制御部63は、第1のFIFOメモリ41のデータ格納率DV1としきい値とを比較し、その比較結果に基づいて、データ格納率DV1がしきい値以上の場合に例えばLレベルの制御信号WC2を生成し、データ格納率DV1がしきい値未満の場合に例えばHレベルの制御信号WC2を生成する。同様に、転送回数制御部63は、第2のFIFOメモリ42のデータ格納率DV2としきい値とを比較し、データ格納率DV2がしきい値以上の場合に例えばLレベルの制御信号WC1を生成し、データ格納率DV2がしきい値未満の場合に例えばHレベルの制御信号WC1を生成する。
転送回数制御部63は、しきい値を両FIFOメモリのデータ格納率DV1,DV2とそれぞれ比較する。そして、転送回数制御部63は、両データ格納率DV1,DV2の何れか一方がしきい値未満となった場合、しきい値以上のデータ格納率に対応するFIFOメモリの転送回数を増加させるように制御信号WC1,WC2を生成する。また、転送回数制御部63は、両データ格納率DV1,DV2がしきい値未満となった場合、両データ格納率DV1,DV2を互いに比較する。そして、転送回数制御部63は、両データ格納率DV1,DV2のうち、値が大きなデータ格納率に対応するFIFOメモリの転送回数を増加させるように制御信号WC1,WC2を生成する。
例えば、データ格納率DV1がしきい値以上であり、データ格納率DV2がしきい値未満の場合、Lレベルの制御信号WC2と、Hレベルの制御信号WC1を生成する。逆に、データ格納率DV1がしきい値未満であり、データ格納率DV2がしきい値以上の場合、Hレベルの制御信号WC2と、Lレベルの制御信号WC1を生成する。また、両データ格納率DV1,DV2がともにしきい値未満の場合、データ格納率DV1,DV2に応じて、例えばLレベルの制御信号WC1と、Hレベルの制御信号WC2を生成する。
データ格納率は、メモリ13からFIFOメモリへの転送の状況、つまり読み出し要求に対して与えられる許可の状況に対応する。要求回数に対して許可の回数が少なければ、メモリ13からFIFOメモリへ転送されるデータ量が少なく、データ格納率は低くなる。許可の回数が要求回数に近づくほど、メモリ13からFIFOメモリへ転送されるデータ量が多くなり、データ格納率は「100(%)」に近づく。
2つのFIFOメモリ41,42を有する出力部51において、例えば第1のFIFOメモリ41の転送回数を増加させることは、第2のFIFOメモリ42のブランク期間を増加させることとなる。逆の場合も同じである。そして、FIFOメモリに対応するブランク期間を増加させることは、読み出し要求に対する許可を得やすくする。つまり、ブランク期間におけるデータ転送量を増加させ、データ格納率を増加させることになる。これにより、各FIFOメモリ41,42における転送破綻の発生を低減することができる。
格納率算出部61,62から出力されるデータ格納率DV1,DV2は、信号生成部64に供給される。信号生成部64は、入力された各データ格納率DV1,DV2に基づいて転送エラー信号ERRを生成する。信号生成部64は、両データ格納率DV1,DV2が「0」以上の場合に例えばLレベルの転送エラー信号ERRを生成し、両データ格納率DV1,DV2の少なくとも一方が負の値となる場合、例えばHレベルの転送エラー信号ERRを生成する。この転送エラー信号ERRは、CPU31に供給される。
図10に示すように、入力制御部52のレジスタ52aには、第1のFIFOメモリ41に対応する第1の要求回数RN1と、第2のFIFOメモリ42に対応する第2の要求回数RN2が格納されている。両要求回数RN1,RN2は、それぞれ所定のタイミング(例えば、動作開始時)に初期化されている。両要求回数RN1,RN2の初期値は、1フレームの画像データを分割した2つの分割画像データにおける1つのラインのデータを転送するために必要な転送回数が設定されている。例えば、図5(a)に示す画像データの場合、各要求回数RN1,RN2はそれぞれ「4」である。
入力制御部52は、第1の制御信号WC1に応答して、第1のFIFOメモリ41に対応する要求回数RN1を変更する。例えば、入力制御部52は、Hレベルの制御信号WC1に応答して要求回数RN1を増加(例えば「+1」)し、Lレベルの制御信号WC1に応答して要求回数RN1を初期値とする。同様に、入力制御部52は、第2の制御信号WC2に応答して、第2のFIFOメモリ42に対応する要求回数RN2を変更する。
入力制御部52は、各FIFOメモリ41,42に対応する要求回数RN1.RN2に基づいて、読み出し要求RQ1,RQ2及び要求アドレスRA1,RA2をメモリコントローラ32に出力する。また、入力制御部52は、各FIFOメモリ41,42と、各FIFOメモリ41,42に書き込んだデータとを対応付けた格納情報WIを、出力制御部53に出力する。
格納情報WIは、転送したブロックの番号と、そのブロックを格納したFIFOメモリの番号を含む。例えば、図5(b),(c)に示すように、ブロックデータD0〜D4が第1のFIFOメモリ41に格納され、ブロックデータD5〜D9が第2のFIFOメモリ42に格納される。このような格納情報WIは、出力制御部53において、表示部15に必要な順番でデータを読み出すことを確実にする。
詳述すると、入力制御部52は、第1のFIFOメモリ41に対応する読み出し要求RQ1をメモリコントローラ32に出力し、要求アドレスRA1に応じてメモリ13から出力されるデータを、第1のFIFOメモリ41に書き込む。入力制御部52は、読み出し要求RQ1の出力回数をカウントし、そのカウント値が要求回数RN1と一致するまで第1のFIFOメモリ41に対する処理を継続する。そして、入力制御部52は、カウント値が要求回数RN1と一致すると、第2のFIFOメモリ42に対する処理を開始する。そして、入力制御部52は、第1のFIFOメモリ41に書き込んだブロックデータの番号を含む格納情報WIを出力制御部53に出力する。
また、入力制御部52は、第2のFIFOメモリ42に対応する読み出し要求RQ2をメモリコントローラ32に出力し、要求アドレスRA2に応じてメモリ13から出力されるデータを、第2のFIFOメモリ42に書き込む。入力制御部52は、読み出し要求RQ2の出力回数をカウントし、そのカウント値が要求回数RN2と一致するまで第2のFIFOメモリ42に対する処理を継続する。そして、入力制御部52は、カウント値が要求回数RN2と一致すると、第1のFIFOメモリ41に対する処理を開始する。そして、入力制御部52は、第2のFIFOメモリ42に書き込んだブロックデータの番号を含む格納情報WIを出力制御部53に出力する。
次に、上記のように構成された出力部51の作用を説明する。
今、出力部51は、図5(a)に示す画像データFPを転送する。
図13(a)に示すように、第1のFIFOメモリ41にはブロックデータD0〜D3が格納され、第2のFIFOメモリ42にはブロックデータD4〜D7が格納されている。各FIFOメモリ41,42に対して読み出しが開始されていないため、それぞれのデータ格納率DV1,DV2は「100(%)」となっている。
図12(a)に示すように、時刻TA1において、出力制御部53は、第1のFIFOメモリ41に格納されたデータの読み出しを開始する。転送監視部54は、第1のFIFOメモリ41のデータ格納率DV1を算出する。このとき、第1のFIFOメモリ41には、図13(a)に示すように、ブロックデータD0〜D3が記憶されているため、データ格納率DV1は「100(%)」となる。
出力制御部53がブロックデータD1の読み出しを開始すると(時刻TA2)、入力制御部52は、第1のFIFOメモリ41に対応するブロックデータD8の読み出しを開始し、データDI1をFIFOメモリ41に書き込む。この第1のFIFOメモリ41に書き込むブロックデータD8〜D11の読み出しは、時刻TA3にて完了する。
なお、図12(a)において、ブロックデータD8〜D11を読み出している期間(時刻TA2から時刻TA3までの期間)を等分割して各ブロックデータD8〜D11の読み出し順序を示している。しかし、データの読み出しは、時刻TA2から時刻TA3までの期間で離散的に実行される。
次に、出力制御部53が第1のFIFOメモリ41から所定量のデータ(ブロックデータD0〜D3)を読み出すと、第2のFIFOメモリ42に格納されたデータの読み出しを開始する(時刻TB1)。転送監視部54は、第2のFIFOメモリ42のデータ格納率DV2を算出する。このとき、第2のFIFOメモリ42には、図13(a)に示すように、ブロックデータD4〜D7が記憶されているため、データ格納率DV2は「100(%)」となる。
図12(a)に示すように、出力制御部53がブロックデータD4の読み出しを開始すると(時刻TB2)、入力制御部52は、第2のFIFOメモリ42に対応するブロックデータD12の読み出しを開始し、データDI2をFIFOメモリ42に書き込む。この第2のFIFOメモリ42に書き込むブロックデータD12〜D15の読み出しは、時刻TB4にて完了する。
出力制御部53が第2のFIFOメモリからブロックデータD7の読み出しを完了すると、1ライン分のデータの出力が完了する。そして、出力制御部53は、次のラインの読み出しタイミング(時刻TA4)まで待機する。
次に、時刻TA4において、出力制御部53は、第1のFIFOメモリ41に格納されたデータの読み出しを開始する。転送監視部54は、第1のFIFOメモリ41のデータ格納率DV1を算出する。上記のブロックデータD8〜D11の読み出しを完了する時刻TA3は時刻TA4より早い。従って、第1のFIFOメモリ41には、図13(b)に示すように、ブロックデータD8〜D11が記憶されているため、データ格納率DV1は「100(%)」となる。このデータ格納率DV1は、しきい値より大きいため、転送監視部54は、第2のFIFOメモリ42の要求回数RN2を変更しない。
図12(a)に示すように、出力制御部53がブロックデータD9の読み出しを開始すると(時刻TA5)、入力制御部52は、第1のFIFOメモリ41に対応するブロックデータD16の読み出しを開始し、データDI1をFIFOメモリ41に書き込む。この第1のFIFOメモリ41に書き込むブロックデータD16〜D19の読み出しは、時刻TA6にて完了する。
次に、出力制御部53が第1のFIFOメモリ41からブロックデータD8〜D11を読み出すと、第2のFIFOメモリ42に格納されたデータの読み出しを開始する(時刻TB3)。転送監視部54は、第2のFIFOメモリ42のデータ格納率DV2を算出する。上記のブロックデータD12〜D15の読み出しを完了する時刻TB4は時刻TB3より遅い。つまり、時刻TB3において、ブロックデータD12〜D15の読み出し(第2のFIFOメモリ42に対する書き込み)は終了していない。従って、転送監視部54は、「100(%)」より小さな値のデータ格納率DV2を算出する。例えば、データ格納率DV2を「80(%)」とする。このデータ格納率DV2は、しきい値より小さい。従って、転送監視部54は、第1のFIFOメモリ41の要求回数RN1を増加させるように、制御信号WC1を生成する。
入力制御部52は、制御信号WC1に応答して要求回数RN1を変更(+1)する。この結果、入力制御部52は、第1のFIFOメモリ41に対して、5回の読み出し要求RQ1に対応するデータ、つまり、ブロックデータD16〜D20を第1のFIFOメモリ41に書き込む。
入力制御部52は、ブロックデータD15の読み出しを完了する(時刻TB4)。このとき、出力制御部53はブロックデータD13の読み出しを行っている。従って、第2のFIFOメモリの空き容量はバースト転送量より大きいため、入力制御部52は、次のデータの読み出しを開始する。このとき、入力制御部52は、ブロックデータD20までを第1のFIFOメモリ41に書き込むように設定している。従って、入力制御部52は、次のブロックデータD21から要求回数RN2に応じた4回のバースト転送にてメモリ13(図10参照)から出力されるデータ、即ちブロックデータD21〜D23の読み出しを行うように設定する。
出力制御部53が第2のFIFOメモリからブロックデータD15の読み出しを完了すると、1ライン分のデータの出力が完了する。そして、出力制御部53は、次のラインの読み出しタイミング(図12(b)に示す時刻TA7)まで待機する。
時刻TA7より先立つ時刻TA6において、入力制御部52は、ブロックデータD19の読み出しを完了する。図13(c)に示すように、第1のFIFOメモリ41にはブロックデータD16〜D19が格納され、読み出しは開始されていない。従って、入力制御部52は、第1のFIFOメモリ41に転送可能な空き容量が生じるまで、第1のFIFOメモリ41に対応する読み出し要求RQ1の出力を停止する。なお、入力制御部52は、第1のFIFOメモリ41と第2のFIFOメモリ42とを互いに独立して制御するため、読み出し要求RQ1の出力を停止しても、第2のFIFOメモリ42に対応する読み出し要求RQ2の出力を行う。
次に、図12(b)に示すように、時刻TA7において、次のラインのデータ出力を開始する。このとき、出力制御部53は、格納情報WIに従って、第1のFIFOメモリ41に格納されたデータの読み出しを開始する。転送監視部54は、第1のFIFOメモリ41のデータ格納率DV1を算出する。上記のブロックデータD16〜D19の読み出しを完了する時刻TA6は時刻TA7より早い。従って、第1のFIFOメモリ41にはブロックデータD16〜D19が記憶されているため、データ格納率DV1は「100(%)」となる。このデータ格納率DV1は、しきい値より大きいため、転送監視部54は、第2のFIFOメモリ42の要求回数RN2を変更しない。
出力制御部53がブロックデータD17の読み出しを開始すると(時刻TA8)、入力制御部52は、第1のFIFOメモリ41に対応するブロックデータD20の読み出しを開始し、図13(d)に示すように、データDI1をFIFOメモリ41に書き込む。この第1のFIFOメモリ41に書き込むブロックデータD20の読み出しは、時刻TA9にて完了する。
図12(b)に示すように、時刻TA9において、出力制御部53はブロックデータD18の読み出しを完了している。従って、第2のFIFOメモリの空き容量はバースト転送量より大きいため、入力制御部52は、次のデータの読み出しを開始する。このとき、入力制御部52は、ブロックデータD24までを第2のFIFOメモリ42に書き込むように設定している。従って、入力制御部52は、次のブロックデータD25から要求回数RN1に応じた5回のバースト転送にてメモリ13(図10参照)から出力されるデータ、即ちブロックデータD25〜D29の読み出しを行うように設定する。
次に、出力制御部53が第1のFIFOメモリ41からブロックデータD16〜D20を読み出すと、第2のFIFOメモリ42に格納されたデータの読み出しを開始する(時刻TB5)。転送監視部54は、第2のFIFOメモリ42のデータ格納率DV2を算出する。上記のブロックデータD21〜D24の読み出しを完了する時刻TB6は時刻TB5より遅い。つまり、時刻TB5において、ブロックデータD21〜D24の読み出し(第2のFIFOメモリ42に対する書き込み)は終了していない。従って、転送監視部54は、「100(%)」より小さな値のデータ格納率DV2を算出する。例えば、データ格納率DV2を「80(%)」とする。このデータ格納率DV2は、しきい値より小さい。従って、転送監視部54は、第1のFIFOメモリ41の要求回数RN1を増加させるように、制御信号WC1を生成する。
入力制御部52は、制御信号WC1に応答して要求回数RN1を維持する。この結果、入力制御部52は、第1のFIFOメモリ41に対して、5回の読み出し要求RQ1に対応するデータ、つまり、ブロックデータD25〜D29を第1のFIFOメモリ41に書き込む。
入力制御部52は、ブロックデータD24の読み出しを完了する(時刻TB6)。このとき、出力制御部53はブロックデータD21の読み出しを行っている。従って、第2のFIFOメモリの空き容量はバースト転送量より小さいため、読み出し要求RQ2を出力しない。そして、出力制御部53がブロックデータD21の読み出しを完了すると(時刻TB7)は、読み出し要求RQ2を出力し、次のデータの読み出しを開始する。このとき、入力制御部52は、ブロックデータD29までを第1のFIFOメモリ41に書き込むように設定している。従って、入力制御部52は、次のブロックデータD30から要求回数RN2に応じた4回のバースト転送にてメモリ13(図10参照)から出力されるデータ、即ちブロックデータD30〜D33の読み出しを行うように設定する。
出力制御部53が第2のFIFOメモリからブロックデータD23の読み出しを完了すると、1ライン分のデータの出力が完了する。そして、出力制御部53は、次のラインの読み出しタイミング(時刻TB8)まで待機する。
次に、時刻TB8において、次のラインのデータ出力を開始する。このとき、出力制御部53は、格納情報WIに従って、第2のFIFOメモリ42に格納されたブロックデータD24の読み出しを開始する。そして、出力制御部53は、ブロックデータD24の読み出しを終了すると、格納情報WIに従って、第1のFIFOメモリに格納されたブロックデータD25の読み出しを開始する(時刻TA10)。
このとき、転送監視部54は、第1のFIFOメモリ41のデータ格納率DV1を算出する。上記のブロックデータD25〜D28の読み出しを時刻TA10に完了する。従って、第1のFIFOメモリ41にはブロックデータD25〜D28が記憶されているため、データ格納率DV1は「100(%)」となる。このデータ格納率DV1は、しきい値より大きいため、転送監視部54は、第2のFIFOメモリ42の要求回数RN2を変更しない。
出力制御部53がブロックデータD26の読み出しを開始すると(時刻TA11)、入力制御部52は、第1のFIFOメモリ41に対応するブロックデータD29の読み出しを開始し、データDI1をFIFOメモリ41に書き込む。この第1のFIFOメモリ41に書き込むブロックデータD29の読み出しは、時刻TA12にて完了する。
時刻TA12において、出力制御部53はブロックデータD27の読み出しを完了している。従って、第2のFIFOメモリの空き容量はバースト転送量より大きいため、入力制御部52は、次のデータの読み出しを開始する。このとき、入力制御部52は、ブロックデータD33までを第2のFIFOメモリ42に書き込むように設定している。従って、入力制御部52は、次のブロックデータD34から要求回数RN1に応じた5回のバースト転送にてメモリ13(図10参照)から出力されるデータ、即ちブロックデータD34〜D38の読み出しを行うように設定する。
次に、出力制御部53が第1のFIFOメモリ41からブロックデータD25〜D29を読み出すと、第2のFIFOメモリ42に格納されたデータの読み出しを開始する(時刻TB10)。転送監視部54は、第2のFIFOメモリ42のデータ格納率DV2を算出する。上記のブロックデータD30〜D33の読み出しを完了する時刻TB9は時刻TB10より早い。つまり、時刻TB10において、図13(d)に示すように、ブロックデータD30〜D33の読み出し(第2のFIFOメモリ42に対する書き込み)を終了している。従って、転送監視部54は、データ格納率DV2として「100(%)」を算出する。このデータ格納率DV2は、しきい値より大きい。従って、転送監視部54は、Lレベルの制御信号WC1を生成する。
入力制御部52は、Lレベルの制御信号WC1に応答して要求回数RN1を初期値(=4)に設定する。この結果、入力制御部52は、第1のFIFOメモリ41に対して、4回の読み出し要求RQ1に対応するデータ、つまり、ブロックデータD34〜D37を第1のFIFOメモリ41に書き込む。なお、入力制御部52は、複数回、Lレベルの制御信号WC1を連続して複数回受け取った後に、要求回数RN1を初期値に設定するようにしてもよい。
上記のように、出力部51は、データを転送する。その結果、図10の表示部15には、図14に示すように、1フレームの画像データが表示される。なお、図14において、ハッチングを付していないブロックデータは第1のFIFOメモリ41を介して転送されたデータを示し、ハッチングを付したブロックデータは第2のFIFOメモリ42を介して転送されたデータを示す。このように、ブロックデータD0〜D63は、決められた順序で図1に示すメモリ13から表示部15に転送される。そして、データ転送における転送破綻の発生を抑制することができる。
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)転送監視部54は、各FIFOメモリ41,42のデータ格納率を監視し、その監視結果に応じて制御信号WC1,WC2を生成する。入力制御部52は、制御信号WC1,WC2に応じて、各FIFOメモリ41,42に対応する要求回数RN1,RN2を変更する。第1及び第2のFIFOメモリ41,42のうちの何れか一方のFIFOメモリの要求回数を増加させると、そのFIFOメモリからデータを出力している期間が長くなり、何れか他方のFIFOメモリのブランク期間が長くなる。このブランク期間に、メモリ13から出力されるデータを格納することができる。従って、各FIFOメモリ41,42からデータの出力を開始するときに、各FIFOメモリ41,42のデータ格納率を、水平同期信号Hsyncの各周期において、高くすることが可能となる。この結果、各FIFOメモリ41,42において、転送破綻の発生を低減することができる。
(2)データ格納率が悪化したFIFOメモリ以外のFIFOメモリの要求回数を多くすることで、悪化したデータ格納率を改善することができる。
なお、上記各実施形態は、以下の態様で実施してもよい。
・上記第二実施形態において、転送監視部54は、各FIFOメモリ41,42に対して算出したデータ格納率DV1,DV2に基づいて入力制御部52の要求回数RN1,RN2を制御する制御信号WC1,WC2を生成するようにした。これに対し、FIFOメモリ41,42におけるデータの格納状態を判定可能であれば、データ格納率に限らず、他のパラメータを用いてもよい。例えば、各FIFOメモリ41,42のデータ格納量(ライトポインタとリードポインタの差分値)、空き容量、等を用いて制御信号WC1,WC2を生成するようにしてもよい。
・上記各実施形態において、出力部33,51に備えるFIFOメモリの数を、適宜変更してもよい。変更したFIFOメモリの数に応じて、入力制御部43,52と出力制御部44,53におけるライトポインタとリードポインタ等の数や、転送監視部47,54の構成を変更することは言うまでもない。
・上記各実施形態において、複数のFIFOメモリのメモリ容量を、互いに異なる値に設定してもよい。設定したメモリ容量に応じて、入力制御部43,52の要求回数や、出力制御部44,53の転送回数を変更することは言うまでもない。
・上記第二実施形態において、格納情報WIは、1フレームの画像データを、表示部15の表示順序に従って転送可能であれば、対応付けた情報に限られない。例えば、入力制御部52は、各FIFOメモリ41,42に対応する要求回数RN1,RN2を、それぞれのFIFOメモリ41,42に対応する格納情報WIとして出力制御部53に出力するようにしてもよい。各FIFOメモリ41,42には、要求回数RN1,RN2と等しい転送回数にて転送されるデータ(ブロックデータ)が格納される。従って、各FIFOメモリ41,42にブロックデータを転送した回数に応じて、FIFOメモリ41,42から読み出せばよい。出力制御部53は、出力用のクロック信号に同期してデータを出力する。従って、要求回数にブロックデータのデータ量、つまりバースト転送量を乗算した結果の値だけ、データ出力を繰り返せばよい。
・上記第二実施形態において、転送回数制御部63は、両FIFOメモリ41,42の何れか一方の転送データ量を変更するように制御信号WC1,WC2を生成するようにした。これに対し、両FIFOメモリ41,42のうちの少なくとも一方の転送データ量を変更するように制御信号WC1,WC2を生成しても良い。例えば、設定値が互いに異なる2つのしきい値を転送回数制御部63が記憶する。例えば、第1のしきい値を「85(%)」とし、第2のしきい値を「70(%)」とする。
第1の例として、第1のデータ格納率DV1が「100(%)」から「80(%)」へと変化し、第2のデータ格納率DV2が「100(%)」のままとする。このような場合、第1のFIFOメモリ41に対応する要求回数RN1を変更せず、第2のFIFOメモリ42に対応する要求回数RN2を増加(例えば「+1」)させる。
第2の例として、第1のデータ格納率DV1が「100(%)」から「65(%)」へと変化し、第2のデータ格納率DV2が「100(%)」のままとする。このような場合、第1のFIFOメモリ41に対応する要求回数RN1を減少(例えば「−1」)させ、第2のFIFOメモリ42に対応する要求回数RN2を増加(例えば「+1」)させる。このようにしても、上記実施形態と同様に、転送破綻の発生を抑制することができる。
・上記第二実施形態において、入力制御部52は、制御信号WC1,WC2に応答して転送回数を「+1」するようにした。これに対し、転送回数の増加数を変更するようにしてもよい。例えば、第1のデータ格納率DV1が「100(%)」から「80(%)」へと変化した場合に要求回数RN2を「1」増加させ、第1のデータ格納率DV1が「100(%)」から「65(%)」へと変化した場合に要求回数RN2を「2」増加させる。このようにしても、上記実施形態と同様に、転送破綻の発生を抑制することができる。
第1のFIFOメモリ41に対応する要求回数RN1を「5」に変更し、第2のFIFOメモリ42に対応する要求回数RN2を「3」に変更した場合の表示画像を図15に示す。なお、図15において、ハッチングを付していないブロックデータは第1のFIFOメモリ41を介して転送されたデータを示し、ハッチングを付したブロックデータは第2のFIFOメモリ42を介して転送されたデータを示す。このように、ブロックデータD0〜D63は、決められた順序で図1に示すメモリ13から表示部15に転送される。そして、データ転送における転送破綻の発生を抑制することができる。
上記各実施形態に関し、以下の付記を開示する。
(付記1)
メモリのデータを転送先に転送するデータ転送装置であって、
ライトポインタに従って前記メモリから出力されるデータを記憶し、リードポインタに従ってデータを出力する複数のFIFOメモリと、
前記ライトポインタと前記リードポインタとに基づいて複数の前記FIFOメモリの空き容量をそれぞれ監視し、所定量のデータが記憶可能な前記FIFOメモリに対応するデータを前記メモリから読み出すための読み出し信号を出力する入力制御部と、
前記転送先の要求タイミングに応じたデータを出力するように複数の前記FIFOメモリを制御する出力制御部と、
を含み、
前記入力制御部は、複数の前記FIFOメモリのそれぞれに対応する複数の転送量を記憶し、複数の前記転送量に従って、前記メモリから出力されるデータを、複数の前記FIFOメモリのうちの1つに格納し、
前記出力制御部は、複数の前記FIFOメモリのそれぞれに対応する複数の出力量を記憶し、複数の前記出力量に従って、複数の前記FIFOメモリを制御する、
ことを特徴とするデータ転送装置。
(付記2)
複数の前記転送量は、前記転送先が同期信号の1周期の間に必要とするデータの量と、複数の前記FIFOメモリの数に応じて設定される、
ことを特徴とする付記1に記載のデータ転送装置。
(付記3)
前記メモリから複数の前記FIFOメモリへ、1つの前記読み出し信号に応答して所定量のデータを転送するバースト転送によりデータを転送し、
前記転送量は、前記読み出し信号を出力する回数である、
ことを特徴とする付記1又は2に記載のデータ転送装置。
(付記4)
複数の前記転送量は、前記転送先が同期信号の1周期の間に必要とするデータの量と、複数の前記FIFOメモリの数に応じた値が初期値として設定され、
複数の前記FIFOメモリのデータ格納状態を監視し、その監視結果に応じて複数の前記FIFOメモリに対応する複数の制御信号をそれぞれ生成する転送監視部を含み、
前記入力制御部は、複数の前記制御信号に基づいて複数の前記転送量を変更する、
ことを特徴とする付記1〜3のうちの何れか一項に記載のデータ転送装置。
(付記5)
前記入力制御部は、変更した前記転送量に基づいて、データとそのデータを格納した前記FIFOメモリとの対応を示す格納情報を出力し、
前記出力制御部は、前記格納情報に従って、複数の前記FIFOメモリのうちの1つからデータを出力させる、
ことを特徴とする付記4に記載のデータ転送装置。
(付記6)
前記転送監視部は、
前記リードポインタと前記ライトポインタとに基づいて、データ格納状態に応じた値を算出する複数の算出部と、
複数の前記算出部にて算出された値に基づいて複数の前記制御信号を生成する制御信号生成部と、
を含むことを特徴とする付記4又は5に記載のデータ転送装置。
(付記7)
前記転送監視部は、前記データ格納状態が悪化したFIFOメモリ以外のFIFOメモリに対応する制御信号を生成し、
前記入力制御部は、前記制御信号に応答して前記転送量を増加させる、
ことを特徴とする付記4〜6のうちの何れか一項に記載のデータ転送装置。
(付記8)
前記転送監視部は、前記出力制御部が前記リードポインタを制御するFIFOメモリを切り換える毎に切り換えたFIFOメモリのデータ格納率を前記データ格納状態として算出し、算出したデータ格納率が前回のデータ格納率より低くなったFIFOメモリ以外のFIFOメモリに対応する制御信号を生成し、
前記入力制御部は、前記制御信号に応答して前記転送量を増加させる、
ことを特徴とする付記4〜6のうちの何れか一項に記載のデータ転送装置。
(付記9)
メモリに格納された1フレームの画像データを表示部に転送するデータ転送方法であって、
前記1フレームの画像データを走査線方向に沿って複数の領域に分割し、
複数の前記領域に対応する複数のFIFOメモリを有し、
複数の前記FIFOメモリはそれぞれ、ライトポインタに従って前記メモリから出力されるデータを記憶し、リードポインタに従ってデータを出力し、
複数の前記領域のデータを対応するFIFOメモリにそれぞれ前記表示部の表示順序に従って格納し、
前記表示部の表示順序に従って複数の前記FIFOメモリのうちの1つを制御し、その制御したFIFOメモリからデータを出力させる、
ことを特徴とするデータ転送方法。
(付記10)
複数の前記FIFOメモリのデータ格納状態をそれぞれ監視し、各FIFOメモリの監視結果に基づいて、複数の前記FIFOメモリに対して連続的に格納するデータ量を制御する、ことを特徴とする付記9に記載のデータ転送方法。
(付記11)
メモリをそれぞれアクセスする複数の処理部と、
前記メモリに記憶されたデータを転送先に転送するデータ転送回路と、
前記メモリをアクセスするために前記複数の処理部と前記データ転送回路からそれぞれ出力される要求信号を調停する調停部と、
を含み、
前記データ転送回路は、
ライトポインタに従って前記メモリから出力されるデータを記憶し、リードポインタに従ってデータを出力する複数のFIFOメモリと、
前記ライトポインタと前記リードポインタとに基づいて複数の前記FIFOメモリの空き容量をそれぞれ監視し、所定量のデータが記憶可能な前記FIFOメモリに対応するデータを前記メモリから読み出すための読み出し信号を出力する入力制御部と、
前記転送先の要求タイミングに応じたデータを出力するように複数の前記FIFOメモリを制御する出力制御部と、
を含み、
前記入力制御部は、複数の前記FIFOメモリのそれぞれに対応する複数の転送量を記憶し、複数の前記転送量に従って、前記メモリから出力されるデータを、複数の前記FIFOメモリのうちの1つに格納し、
前記出力制御部は、複数の前記FIFOメモリのそれぞれに対応する複数の出力量を記憶し、複数の前記出力量に従って、複数の前記FIFOメモリを制御する、
を含む、半導体装置。