(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、一実施形態を添付図面に従って説明する。
図1に示す電子機器10は、例えばデジタルスチルカメラである。電子機器10は、撮像部11と、画像処理プロセッサ12と、フレームメモリ13と、操作部14と、表示部15とを有している。フレームメモリ13は記憶部の一例である。
【0010】
撮像部11は、例えばCCDやCMOSイメージセンサ等の撮像素子を有し、複数の撮像素子は例えば二次元配列されている。撮像部11は、撮像素子により撮像した1画面(1フレーム)の画像データを、フレーム毎に出力する。
【0011】
画像処理プロセッサ12は、撮像部11から入力される画像データをフレームメモリ13に格納する。このフレームメモリ13は、複数フレームの画像データを記憶可能なメモリ容量のメモリである。このフレームメモリ13は、例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などの書き替え可能なメモリである。画像処理プロセッサ12は、フレームメモリ13に格納した画像データに対して各種画像処理を施す。すなわち、画像処理プロセッサ12は、フレームメモリ13から読み出した画像データに対して各種画像処理を施し、処理後の画像データをフレームメモリ13に格納する。
【0012】
操作部14は、ユーザにより操作される各種スイッチを有している。この各種スイッチは、例えば表示部15に表示する画像の選択、フレームメモリ13に記憶した画像データに対する処理の設定、撮影条件の設定、画像データの消去、等を行うために使用される。画像処理プロセッサ12は、フレームメモリ13に格納した画像データを表示部15に出力する。
【0013】
表示部15は、液晶や有機EL(Electronic Luminescence)などを用いた表示器である。表示部15は、撮影した画像を確認するモニタとして利用される。また、表示部15は、撮影する領域(フレーム)を決定するモニタとして利用される。
【0014】
画像処理プロセッサ12は、フレームメモリ13に格納された画像データを処理するための画像処理部20を有している。画像処理部20は、複数の処理部21〜27を含む。従って、フレームメモリ13は複数の処理部21〜27に対する共通のフレームメモリ(作業メモリ)として機能する。
【0015】
各処理部21〜27の一例を説明する。
処理部21はプリプロセス部であり、撮像部11から入力される画像データに対し、例えばホワイトバランス調整やゲイン調整、欠陥信号の補正などの前処理を施す。処理部22は色空間変換部であり、処理部21により前処理されたRGB形式の画像データ(ベイヤデータ)をYCbCr形式の画像データに変換する。これら処理部21,22により処理された1フレームの画像データは、メモリコントローラ32を介してフレームメモリ13に格納される。処理部23はコーデックであり、フレームメモリ13に格納された画像データを読み出し、その画像データを所定の方式(例えばJPEG(Joint Photographic Experts Group)方式)により符号化し、符号化後の画像データ(符号化データ)をフレームメモリ13に格納する。
【0016】
処理部24は解像度変換部であり、画像データの画像サイズ(解像度)を拡大又は縮小する解像度変換処理を実行する。処理部25は色調変換部であり、画像データの色調をセピアやモノクロ等に変換する色調変換処理を実行する。処理部26はエッジ強調部であり、画像データに対して画像の輪郭(エッジ)を強調するエッジ強調処理を実行する。処理部27はノイズ補正部であり、画像データに含まれるノイズを除去するノイズ補正処理を実行する。なお、画像処理部20に含まれる処理部21〜27、各処理部21〜27の処理内容は一例を示すものであり、画像処理部20が含む処理部の種類や処理内容は、適宜設定されてもよい。
【0017】
また、画像処理プロセッサ12は、中央処理装置(以下、CPU)31、メモリコントローラ32、出力部33を有している。画像処理部20内の各処理部21〜27と、CPU31と、メモリコントローラ32と、出力部33は、バス34によって互いに接続されている。このバス34は、アドレスバス、コントロールバス、データバスを含む。
【0018】
CPU31は、各回路を統括制御する。また、CPU31は、操作部14から入力される操作情報に従って各種情報を対応する処理部21〜27,出力部33のレジスタに格納する。各種情報は、撮影条件、1フレームの画素数、各処理部21〜27,出力部33における動作に必要な情報を含む。各処理部21〜27,出力部33は、初期化時や操作部14の操作に従って設定された情報に基づいて動作する。
【0019】
各処理部21〜27と出力部33は、フレームメモリ13をアクセスするための要求を出力する。例えば、処理部21〜27は、フレームメモリ13にデータを書き込むために、書き込み要求を出力する。また、処理部22〜27は、フレームメモリ13からデータを読み出すために、読み出し要求を出力する。同様に、出力部33は、フレームメモリ13から画像データを読み出すための読み出し要求を出力する。
【0020】
メモリコントローラ32は、アービタ(調停部)を有している。アービタは、フレームメモリ13に対するアクセス要求を調停する。即ち、アービタは、各処理部21〜27、出力部33から出力され競合する要求を、例えば各処理部21〜27、出力部33に応じて設定された優先度に従って調停する。そして、アービタは、調停結果を各処理部21〜27,出力部33に出力する。
【0021】
書き込み要求が許可された処理部21〜27は、フレームメモリ13に対する書き込みの制御信号とデータを出力する。メモリコントローラ32は、その制御信号に従ってデータをフレームメモリ13に格納する。読み出し要求が許可された処理部22〜27,出力部33は、フレームメモリ13からデータを読み出すための制御信号を出力する。メモリコントローラ32は、その制御信号に従ってフレームメモリ13から読み出したデータを要求元の処理部22〜27、出力部33に出力する。
【0022】
出力部33は、フレームメモリ13に格納された各フレームの画像データを表示部15に順次転送する。
図3(a)に示すように、表示部15の画素数に対応する1フレームの画像データFDAは、複数(図において8つ)のラインデータL0〜L7を含む。画像データFDAは、例えばYCbCr形式の画像データである。各ラインデータL0〜L7は、それぞれ複数(図において8つ)の画素データDを含む。なお、
図3(a)において、画素データDを、横方向に並ぶ画素データの行の位置をX(X=0〜7)、縦方向に並ぶ画素データの列の位置をY(Y=0〜7)とし、各画素データ「DXY」として示す。例えば、1フレームの画像データFDAにおける1行目の画素データ(X=0)は、「D00」〜「D07」として示される。また、1列目の画素データ(Y=0))は、「D00」〜「D70」として示される。
【0023】
1フレームの画像データFDAは、表示部15に出力する表示用の画像データをフレームメモリ13に格納する処理部により、
図3(b)に示す画像データFD0と、
図3(c)に示す画像データFD1に分割される。なお、以下の説明において、1フレームの画像データFDAと区別するために分割画像データFD0,FD1とする場合がある。分割画像データFD0,FD1はブロックデータの一例である。表示用の画像データをフレームメモリ13に格納する処理部は、例えば処理部24(解像度変換部)である。処理部24は、
図3(a)に示す画像データFDAにおいて、列数Yが偶数である列の画素のデータを含む画像データFD0と、列数Yが奇数である列の画素のデータを含む画像データFD1をフレームメモリ13に格納する。つまり、処理部24は、画像データFDAを、画像データFD0と画像データFD1に分割する。なお、画像データFD0を偶数列(even列)画像データと呼び、画像データFD1を奇数列(odd列)画像データと呼ぶことがある。画像データFD0は第1の分割画像データの一例であり、画像データFD1は第2の分割画像データの一例である。
【0024】
出力部33は、分割画像データFD0と分割画像データFD1をフレームメモリ13から読み出す。そして、出力部33は、偶数列の画像データと奇数列の画像データを交互に表示部15に出力する。これにより、表示部15は、1フレームの画像データFDAに応じた画像を表示する。
【0025】
1フレームの画像データFDAと、分割画像データFD0,FD1の一例を
図4(a)〜(c)に示す。
図4(a)に示すように、画像FPAは1フレームの画像データFPAによる画像であり、複数の黒画素BGによる所定の文字「A」を含む。なお、画像FPAにおいて、黒画素BG以外の画素を省略している。この画像FPAに対し、
図4(b)に示す画像FP0は偶数列データFD0による画像であり、
図4(c)に示す画像FP1は奇数列データFD1による画像である。
【0026】
フレームメモリ13と出力部33の間のデータ転送を説明する。
フレームメモリ13は、出力部33から出力される1つの読み出し要求に応答して、出力部33から供給される要求アドレスを先頭アドレスとして、所定量のデータを出力する。従って、出力部33は、複数の読み出し要求を出力する。フレームメモリ13は、読み出し要求毎に所定量のデータを出力する。従って、フレームメモリ13に格納された画像データFD0は、複数の読み出し要求と、各読み出し要求に対する所定量のデータによって、フレームメモリ13から出力部33へ転送される。同様に、画像データFD1は、複数の読み出し要求と、各読み出し要求に対する所定量のデータによって、フレームメモリ13から出力部33へ転送される。このようなデータ転送は、バースト転送の一例である。
【0027】
次に、出力部33を説明する。
図2に示すように、出力部33は、2つのFIFO(first in first out)メモリ40,41、2つの制御部50,51、補間データ生成部60、レジスタ部61、出力データ生成部62を有している。
【0028】
FIFOメモリ40,41は、先に書き込んだデータの順に、先に読み出されるメモリである。FIFOメモリ40は第1の格納部の一例、FIFOメモリ41は第2の格納部の一例である。
【0029】
FIFOメモリ40は、ライトポインタWP0が示す位置(アドレス)に入力データWD0を記憶し、ライトポインタWP0を更新する。また、FIFOメモリ40は、リードポインタRP0が示す位置(アドレス)のデータRD0を出力し、リードポインタRP0を更新する。ポインタWP0,RP0の更新は、次のデータを書き込む位置又は読み出す位置を示す値に変更することである。データRD0は第1の出力データの一例である。データを順次書き込む又は読み出す場合、FIFOメモリ40は、各ポインタWP0,RP0の値に所定値(例えば「1」)を加算した結果を、次のポインタWP0,RP0の値とする。
【0030】
FIFOメモリ40は、ライトポインタWP0及びリードポインタRP0を循環的に管理する。FIFOメモリ40は、1つの入力データWD0をライトポインタWP0が示す位置に記憶し、ライトポインタWP0を更新(+1)する。そして、FIFOメモリ40は、ライトポインタWP0がメモリ容量に対応する値n(例えば512)以上になると、ライトポインタWP0の値をリセット(=0)する。従って、FIFOメモリ40は、ライトポインタWP0をメモリ容量に応じた値(例えば0〜511)で循環させる。
【0031】
同様に、FIFOメモリ40は、リードポインタRP0が示す位置のデータRD0を出力し、次の読み出しデータの位置を示すようにリードポインタRP0を更新(例えば、リードポインタRP0を「+1」)する。そして、FIFOメモリ40は、リードポインタRP0の値がメモリ容量に対応する値(例えば512)になると、リードポインタRP0の値をリセット(=0)にする。従って、FIFOメモリ40は、リードポインタRP0をメモリ容量に応じた値(例えば0〜511)で循環させる。
【0032】
FIFOメモリ40は、制御部50から所定レベル(例えばHレベル)のリード許可信号RE0に応答してデータの読み出しを行い、例えばLレベルのリード許可信号RE0に応答してデータの読み出しを停止する。そして、FIFOメモリ40は、データの読み出しが許可されている間、表示部15の要求タイミング(例えば、表示用のクロック信号)に対応する周期(例えば、表示用のクロック信号の周期の2倍の周期)でデータRD0を出力する。
【0033】
制御部50は、ライトポインタWP0とリードポインタRP0に基づいて、FIFOメモリ40のデータ量を監視し、FIFOメモリ40に対するデータの書き込みを制御する。制御部50は第1の制御部の一例である。例えば、制御部50は、ライトポインタWP0の値とリードポインタRP0の値により、FIFOメモリ40に格納されたデータ量を算出する。なお、このデータ量は、FIFOメモリ40に格納されたデータのうち、読み出しが行われていないデータの数である。そして、制御部50は、FIFOメモリ40のメモリ容量とデータ量に基づいて空き容量(=メモリ容量−データ量)を算出する。制御部50は、空き容量と、1回の読み出し要求に応答してフレームメモリ13から出力部33に転送されるデータの数(バースト転送量)とを比較する。そして、制御部50は、空き容量がバースト転送量以上になると、アービタ32aに対して読み出し要求RQ0を出力する。
【0034】
アービタ32aは、制御部50から出力される読み出し要求RQ0を受け付け、調停結果を制御部50に出力する。アクセスの許可を受けた制御部50は、分割画像データFD0を読み出すための要求アドレスRA0を出力する。要求アドレスRA0は、分割画像データFD0に含まれる複数画素データを順次読み出すためにアドレスである。制御部50は、要求アドレスRA0を出力すると、次の読み出しアドレスを記憶する。つまり、制御部50は、要求アドレスRA0にバースト転送量を加算し、加算結果の値を要求アドレスRA0に設定する。
【0035】
アービタ32aは、要求アドレスRA0に基づくアドレスADDと読み出しのための制御信号をフレームメモリ13に出力する。フレームメモリ13は、そのアドレスADDと制御信号に応答して、アドレスADDを先頭アドレスとするメモリ領域のデータRDを出力する。フレームメモリ13から出力されたデータRDは、アービタ32aを介してデータWD0として出力部33のFIFOメモリ40に供給され、FIFOメモリ40は、そのデータWD0を記憶する。
【0036】
このように、制御部50は、FIFOメモリ40のデータ量を監視する。そして、制御部50は、アービタ32aに対し、フレームメモリ13に格納された分割画像データFD0(偶数列データ)を要求する。FIFOメモリ40は、フレームメモリ13から読み出された分割画像データFD0をライトポインタWP0に従って格納する。そして、FIFOメモリ40は、リードポインタRP0に従って記憶したデータを読み出し、データRD0を出力する。
【0037】
同様に、FIFOメモリ41は、ライトポインタWP1が示す位置(アドレス)に入力データWD1を記憶し、ライトポインタWP1を更新する。また、FIFOメモリ41は、リードポインタRP1が示す位置(アドレス)のデータRD1を出力し、リードポインタRP1を更新する。出力データRD1は第2の出力データの一例である。そして、FIFOメモリ41は、ライトポインタWP1とリードポインタRP1を循環的に管理する。
【0038】
制御部51は、ライトポインタWP1とリードポインタRP1に基づいてFIFOメモリ41のデータ量を監視し、監視結果に応じて読み出し要求RQ1を出力する。制御部51は第2の制御部の一例である。そして、制御部51は、アービタ32aの調停結果に応じて要求アドレスRA1を出力する。要求アドレスRA1は、分割画像データFD1を読み出すためのアドレスである。これにより、制御部51は、フレームメモリ13に格納された分割画像データFD1の読み出しと、FIFOメモリ41に対する分割画像データFD1の格納を制御する。
【0039】
このように、制御部51は、FIFOメモリ41のデータ量を監視する。そして、制御部51は、アービタ32aに対し、フレームメモリ13に格納された分割画像データFD1(奇数列データ)を要求する。FIFOメモリ41は、フレームメモリ13から読み出された分割画像データFD1をライトポインタWP1に従って格納する。そして、FIFOメモリ41は、リードポインタRP1に従って記憶したデータを読み出し、データRD1を出力する。
【0040】
アービタ32aは、制御部50,51から出力される読み出し要求RQ0,RQ1と、他の処理部21〜27(
図1参照)から出力される要求RQxを、それぞれの要求RQ0,RQ1,RQxの優先度に従って調整する。要求RQxは、処理部21〜27毎に出力される要求である。なお、制御部50の読み出し要求RQ0の優先度は、制御部51の読み出し要求RQ1の優先度よりも高く設定されている。従って、アービタ32aは、制御部50の読み出し要求RQ0と制御部51の読み出し要求RQ1が競合するとき、優先度が高い読み出し要求RQ0に対するアクセス許可を制御部50に出力する。
【0041】
また、制御部51は、FIFOメモリ41のデータ量を監視した結果に応じたレベルの選択信号DSLを出力する。制御部51は、レジスタ部61により設定されるしきい値DT0とデータ量を比較する。そして、制御部51は、データ量がしきい値DT0より大きい場合に第1のレベル(例えばLレベル)の選択信号DSLを出力する。また、制御部51は、データ量がしきい値DT0以下の場合に第2のレベル(例えばHレベル)の選択信号DSLを出力する。FIFOメモリ41に対して設定されるしきい値DT0は、例えば「−1」である。
【0042】
データ量と比較するしきい値DT0は、例えば、画像データの転送状態に応じて設定される。
上記したように、FIFOメモリ41のデータ量は、ライトポインタWP1の値とリードポインタRP1の値により算出される。データ量が「0」(ゼロ)であるとき、ライトポインタWP1の値とリードポインタRP1の値は互いに等しい。
【0043】
データは、ライトポインタWP1に従ってFIFOメモリ41に書かれ、リードポインタRP1に従ってFIFOメモリ41から読み出される。従って、データが正常に転送されるとき、ライトポインタWP1はリードポインタRP1より先行している。
【0044】
FIFOメモリ41に記憶されたデータは、表示部15の動作タイミングに応じてFIFOメモリ41から読み出される。フレームメモリ13からの読み出しが遅れると、リードポインタRP1がライトポインタWP1より先行し、転送破綻が発生する。転送破綻が発生したときのデータ量は、負の値となる。つまり、データ量が「0」(ゼロ)よりも小さくなると、転送破綻が発生する。転送破綻の発生は、表示部15における表示画像の乱れを生じさせる。従って、制御部51は、FIFOメモリ41のデータ量を監視し、転送状態(転送破綻が生じうる、又は転送破綻が生じている)に応じたレベルの選択信号DSLを出力する。
【0045】
補間データ生成部60は、FIFOメモリ40から出力されるデータRD0に基づいて生成した補間データRRを出力する。FIFOメモリ40は、制御部50によりフレームメモリ13から読み出された偶数列データFD0を記憶する。表示部15における表示には、1フレーム分の画像データが必要である。従って、補間データ生成部60は、FIFOメモリ40の出力データRD0に基づく補間処理により、奇数列データFD1に対応する補間データRRを生成する。例えば、補間データ生成部60は、補間処理により、FIFOメモリ40の出力データRD0の値と等しい値の補間データRRを生成する。
【0046】
出力データ生成部62は、FIFOメモリ40から出力されるデータRD0と、FIFOメモリ41から出力されるデータRD1と、補間データ生成部60から出力される補間データRRに基づいて、出力データDDを出力する。
【0047】
出力データ生成部62は、制御部51から出力される選択信号DSLに基づいて、補間データ生成部60から出力される補間データRRと、FIFOメモリ41から出力されるデータRD1のうちの何れか一方を選択する。例えば、出力データ生成部62は、第1のレベル(Lレベル)の選択信号DSLに応答してFIFOメモリ41から出力されるデータRD1を選択する。そして、出力データ生成部62は、FIFOメモリ40から出力されるデータRD0と、選択したデータRD1を交互に出力データDDとして出力する。一方、出力データ生成部62は、第2のレベル(Hレベル)の選択信号DSLに応答して補間データ生成部60から出力される補間データRRを選択する。そして、出力データ生成部62は、FIFOメモリ40から出力されるデータRD0と、選択した補間データRRを交互に出力データDDとして出力する。
【0048】
また、出力データ生成部62は、例えばクロック信号に基づいて、表示部15に1フレームの画像を表示するための同期信号を生成する。同期信号は、フレームの開始を示す垂直同期信号Vsyncと、各ラインの開始を示す水平同期信号Hsyncを含む。各同期信号Vsync,Hsyncの周期は、表示部15に応じて設定されている。出力データ生成部62は、出力データDDを同期信号Vsync,Hsyncに応じて出力する。
【0049】
次に、上記の出力部33の作用を説明する。
先ず、FIFOメモリ40,41のデータ量の推移を説明する。
図6において、上段の波形はFIFOメモリ40のデータ量DV0の推移を示し、下段の波形はFIFOメモリ41のデータ量DV1の推移を示す。
図6に示す各波形において、横軸は時間、縦軸はデータ量(百分率)である。
【0050】
図2に示す制御部50は、アービタ32aに対してフレームメモリ13の分割画像データFD0のデータを要求する読み出し要求RQ0を出力する。フレームメモリ13は、アービタ32aを介して制御部50から受け取る読み出しアドレスADD(RA0)に対応する所定量の画像データを出力する。
【0051】
バースト転送が開始される(時刻T0)と、転送された画像データがFIFOメモリ40に記憶されることで、FIFOメモリ40のデータ量DV0は増加する。バースト転送が終了する(時刻T1)と、
図2に示す制御部50は、FIFOメモリ40のデータ量DV0に基づいて算出した空き容量によりデータ転送が可能であると判断し、アービタ32aに対して読み出し要求RQ0を出力する。次のバースト転送が開始される(時刻T2)までの間、データの読み出しが行われない場合、FIFOメモリ40のデータ量DV0は変化しない。そして、フレームメモリ13からFIFOメモリ40へのデータ転送により、FIFOメモリ40のデータ量DV0は増加し、フル状態(満杯状態であって、メモリ容量に対するデータ量の割合が「100[%]」の状態)になる(時刻T3)。
【0052】
FIFOメモリ40に対する読み出しが開始される(時刻T4)と、FIFOメモリ40のデータ量DV0は減少する。そして、FIFOメモリ40の空き容量がバースト転送量よりも多くなる(時刻T5)と、制御部50はアービタ32aに対して読み出し要求RQ0を出力する。FIFOメモリ40のデータ量DV0は、読み出し要求RQ0の出力後、フレームメモリ13とFIFOメモリ40の間のデータ転送が開始されるまで減少する。読み出し要求RQ0に応じてフレームメモリ13からデータ転送が開始される(時刻T6)と、FIFOメモリ40のデータ量DV0は、書き込み速度と読み出し速度の差に応じた傾きで増加する。
【0053】
図2に示す制御部51は、制御部50と同様に、FIFOメモリ41を制御する。従って、FIFOメモリ41のデータ量DV1は、FIFOメモリ40のデータ量DV0と同様に推移する。
【0054】
次に、転送破綻が生じる場合について説明する。
図7において、横軸は時間である。また、
図7に示すデータ量DV0,DV1の波形における縦軸はデータ量(百分率)である。
【0055】
時刻T0において、FIFOメモリ40,41に対する読み出しが開始される。
図2に示す制御部51は、データ量DV1としきい値DT0の比較結果に応じてLレベルの選択信号DSLを出力する。出力データ生成部62は、Lレベルの選択信号DSLに基づいて、FIFOメモリ40から出力されるデータRD0と、FIFOメモリ41から出力されるデータRD1を、交互に出力データDDとして出力する。
【0056】
両FIFOメモリ40,41のデータ量DV0,DV1は、画像データの読み出しに従って減少する。そして、時刻T1において、制御部50は、データ量DV0に基づいて算出したFIFOメモリ40の空き容量によりデータ転送が可能であると判定し、読み出し要求RQ0を出力する。同様に、制御部51は、データ量DV1に基づいて算出したFIFOメモリ41の空き容量によりデータ転送が可能であると判定し、読み出し要求RQ1を出力する。
【0057】
両読み出し要求RQ0,RQ1のうち、優先度の高い読み出し要求RQ0が受け付けられる。読み出し要求RQ0に応じてフレームメモリ13からFIFOメモリ40へデータ転送が開始される(時刻T2)と、FIFOメモリ40のデータ量DV0は、増加する。次いで、優先度の低い読み出し要求RQ1が受け付けられ、読み出し要求RQ1に応じてフレームメモリ13からFIFOメモリ41へデータ転送が開始される。このように、FIFOメモリ40に対応する制御部50の読み出し要求RQ0が、FIFOメモリ41に対応する制御部51の読み出し要求RQ1よりも優先して受け付けられる。
【0058】
そして、FIFOメモリ40に対してデータが書き込まれた後、FIFOメモリ41に対してデータが書き込まれる。従って、FIFOメモリ40よりも先に、FIFOメモリ41において転送破綻が発生する(時刻T5)。制御部51は、しきい値DT0とデータ量DV1の比較結果に応じて、Hレベルの選択信号DSLを出力する。出力データ生成部62は、Hレベルの選択信号DSLに基づいて、FIFOメモリ40から出力されるデータRD0と、補間データ生成部60から出力される補間データRRを、交互に出力データDDとして出力する。
【0059】
従って、FIFOメモリ40から出力される画像データRD0、即ち偶数列データと、補間データRRによる画像が表示部15に表示される。補間データRRは、FIFOメモリ40から出力される画像データRD0に基づいて生成される。本実施形態において、補間データ生成部60は、FIFOメモリ40の出力データRD0の値と等しい値の補間データRRを出力する。従って、そして、補間データRRに基づいて表示される画素の色は、表示部15において水平走査方向に隣接する画素(水平走査方向において反走査方向に隣接する画素)の色と等しい。
【0060】
1つのフレーム画像において、水平走査方向に隣接する2つの画素は、互いに同様のデータとなることが多い。従って、1つ前の画素の画像データと等しい補間データによる画素を転送破綻の際に表示することで、転送破綻によって関係が低いデータによる画素を表示する場合と比べ、違和感が少なくなる。これにより、転送破綻による不具合が低減される。
【0061】
次いで、FIFOメモリ41に対するデータ転送が開始され、FIFOメモリ41のデータ量DV1が「0」以上になると、転送破綻が解消される。制御部51は、データ量DV1がしきい値DT0より大きくなると、Lレベルの選択信号DSLを出力する。出力データ生成部62は、Lレベルの選択信号DSLに基づいて、FIFOメモリ40から出力されるデータRD0と、FIFOメモリ41から出力されるデータRD1を、交互に出力データDDとして出力する。
【0062】
このようにして表示部15に表示される画像の一例を
図5(a)に示す。なお、この画像FPaにおいて、破線にて挟まれた領域APaにおいて、転送破綻が生じた場合を示す。この画像FPaは、転送破綻が生じていない場合の画像FPA(
図4(a)参照)と同様に、違和感の少ないものであり、画像に含まれる文字「A」を容易に認識することができる。比較例として、両FIFOメモリ40,41から出力される画像データRD0,RD1による画像を
図5(b)に示す。この画像FPbは、領域APbにおいて転送破綻が発生している。この画像FPbは、
図5(a)に示す画像FPaと比べ、画像に含まれる文字を認識することは難しく、違和感の多いものである。
【0063】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)出力部33は、2つのFIFO(first in first out)メモリ40,41、2つの制御部50,51、補間データ生成部60、レジスタ部61、出力データ生成部62を有している。制御部50は、FIFOメモリ40のデータ量を監視する。そして、制御部50は、アービタ32aに対し、フレームメモリ13に格納された分割画像データFD0(偶数列データ)を要求する。FIFOメモリ40は、フレームメモリ13から読み出された分割画像データFD0をライトポインタWP0に従って格納する。そして、FIFOメモリ40は、リードポインタRP0に従って記憶したデータを読み出し、データRD0を出力する。制御部51は、FIFOメモリ41のデータ量を監視する。そして、制御部51は、アービタ32aに対し、フレームメモリ13に格納された分割画像データFD1(奇数列データ)を要求する。FIFOメモリ41は、フレームメモリ13から読み出された分割画像データFD1をライトポインタWP1に従って格納する。そして、FIFOメモリ41は、リードポインタRP1に従って記憶したデータを読み出し、データRD1を出力する。補間データ生成部60は、FIFOメモリ40から出力されるデータRD0に基づいて生成した補間データRRを出力する。出力データ生成部62は、制御部51から出力される選択信号DSLに基づいて、補間データ生成部60から出力される補間データRRと、FIFOメモリ41から出力されるデータRD1のうちの何れか一方を選択する。そして、出力データ生成部62は、選択したデータRD1と補間データRRのうちの何れか一方とデータRD0に基づいて出力データDDを出力する。
【0064】
FIFOメモリ41において転送破綻が生じた場合、制御部51は、Hレベルの選択信号DSLを出力する。出力データ生成部62は、Hレベルの選択信号DSLに応答して、データRD0と補間データRRに基づいて出力データDDを生成する。補間データRRはデータRD0に基づいて生成される。従って、表示部15の水平走査方向に隣接する2つの画素は、データRD0により表示される画素と、データRD0に基づいて生成された補間データRRにより表示される画素である。従って、転送破綻によって関係が低いデータによる画像を表示する場合と比べ、違和感が少なくなる。このように、転送破綻による不具合を低減することができる。
【0065】
次に、出力部33の様々な変形例を説明する。
尚、以下の説明において、上記の実施形態と同じ部材については同じ符号を付し、その説明の一部又は全てを省略する。
【0066】
[変形例1]
転送破綻が生じた場合にFIFOメモリ41を停止させるようにしてもよい。
図8において、横軸は時間である。また、
図8に示すデータ量DV0,DV1の波形における縦軸はデータ量(百分率)である。
【0067】
制御部51は、FIFOメモリ41のデータ量DV1としきい値DT0の比較結果に応じて、FIFOメモリ41において転送破綻が発生したと判定した場合、Hレベルの選択信号DSLを出力する。その後、制御部51は、所定のタイミングで、Lレベルのリード許可信号RE1を出力する。FIFOメモリ41は、Lレベルのリード許可信号RE1に応答してデータの読み出しを停止する。更に、制御部51は、アービタ32aに対する読み出し要求RQ1の出力を停止する。
【0068】
FIFOメモリ41に対するデータの読み出しを停止することにより、フレームメモリ13と画像処理プロセッサ12の間のテータ転送において、単位時間において転送するデータ量、つまり転送帯域が少なくなる。これにより、制御部50が出力する読み出し要求RQ0が受け付けられ易くなり、読み出し要求RQ0に対する応答時間が短くなる。このため、FIFOメモリ40における転送破綻の発生を抑制することができる。
【0069】
[変形例2]
転送破綻が生じた場合にFIFOメモリ41を停止させるようにしてもよい。
例えば、制御部51に対するしきい値の設定を、FIFOメモリ41のメモリ容量に応じて、例えばメモリ容量の5パーセント[%]に設定する。なお、設定するしきい値DT1は適宜変更が可能である。
【0070】
図9において、上段の波形はFIFOメモリ40のデータ量DV0の推移を示し、下段の波形はFIFOメモリ41のデータ量DV1の推移を示す。
図9において、横軸は時間である。また、
図9に示すデータ量DV0,DV1の波形における縦軸はデータ量(百分率)である。
【0071】
制御部51は、FIFOメモリ41のデータ量DV1としきい値DT1の比較結果に応じて、データ量DV1がしきい値DT1より小さくなると、アービタ32aに対する読み出し要求RQ1の出力を停止する。次いで、FIFOメモリ41のデータ量DV1が「0」(ゼロ)になると、Hレベルの選択信号DSLを出力し、FIFOメモリ41に対してLレベルのリード許可信号RE1を出力する。FIFOメモリ41は、Lレベルのリード許可信号RE1に応答してデータの読み出しを停止する。
【0072】
このような動作により、上記[変形例1]と同様に、転送帯域を少なくし、FIFOメモリ40における転送破綻の発生を抑制することができる。また、しきい値DT1を「0」(ゼロ)より大きな値に設定することで、読み出し要求RQ1を停止するタイミングが[変形例1]よりも早くなる。このため、FIFOメモリ41における転送破綻の発生よりも前に転送帯域が少なくなるため、FIFOメモリ40における転送破綻の発生を抑制することができる。
【0073】
[変形例3]
FIFOメモリ40のデータ量DV0に応じてFIFOメモリ41を停止させるようにしてもよい。
【0074】
例えば、
図10に示すように、出力部33aの制御部50aに対して、レジスタ部61aによりしきい値DT2を設定する。このしきい値DT2は、FIFOメモリ41において転送破綻が発生するときのFIFOメモリ40のデータ量DV0に応じて設定され、例えばFIFOメモリ40のメモリ容量の5パーセントに設定される。なお、設定するしきい値DT2は適宜変更が可能である。
【0075】
制御部50aは、FIFOメモリ40のデータ量DV0としきい値DT2とを比較し、比較結果に応じて制御信号SC0を出力する。制御信号SC0は第1の制御信号の一例である。
図11に示すように、制御部50aは、データ量DV0がしきい値DT2以上のときに第1のレベル(例えばLレベル)の制御信号SC0を出力する。
図11において、横軸は時間である。また、
図11に示すデータ量DV0,DV1の波形における縦軸はデータ量(百分率)である。制御部50aは、データ量DV0がしきい値DT2より小さくなると(時刻T0)、Hレベルの制御信号SC0を出力する。
【0076】
制御部51aは、制御信号SC0に応答して、FIFOメモリ41を制御し、選択信号DSLを出力する。例えば、制御部51aは、Lレベルの制御信号SC0に応答して、FIFOメモリ41のデータの読み出しを許容(例えば、Hレベルのリード許可信号RE1を出力)し、Lレベルの選択信号DSLを出力する。また、制御部51aは、Hレベルの制御信号SC0に応答して、FIFOメモリ41のデータ読み出しを停止(例えば、Lレベルのリード許可信号RE1を出力)させ、Hレベルの選択信号DSLを出力する。
【0077】
[変形例4]
FIFOメモリ41を停止させた後、FIFOメモリ40のデータ量DV0に応じてFIFOメモリ41を動作させるようにしてもよい。
【0078】
例えば、
図10に示す制御部50aに対し、しきい値DT3を設定する。しきい値DT3は、
図12に示すように、FIFOメモリ40のデータ量DV0に応じて、例えばFIFOメモリ40のメモリ容量の90パーセントに設定される。
図12において、横軸は時間である。また、
図12に示すデータ量DV0,DV1の波形における縦軸はデータ量(百分率)である。
【0079】
図12に示す例において、制御部51aは、設定されたしきい値DT3とデータ量DV1の比較結果に応じてFIFOメモリ41の動作を制御し、選択信号DSLを出力する。
制御部50aは、データ量DV0がしきい値DT3より小さいとき、Lレベルの制御信号SC1を出力する。制御信号SC1は第2の制御信号の一例である。そして、制御部50aは、データ量DV0がしきい値DT3以上になると、Hレベルの制御信号SC1を出力する。また、制御部50aは、FIFOメモリ40に書き込んだデータの位置情報を出力する。データの位置情報は、例えば、データに応じて表示される画素の位置であり、
図2に示す表示部15における水平走査方向における画素位置を含む。なお、位置情報に、表示部15における垂直走査方向における画素位置を含めても良い。
【0080】
制御部51aは、Hレベルの制御信号SC1に応答して、読み出し要求RQ1をアービタ32aに出力する。このとき、FIFOメモリ40はフル状態に近い状態にあり、FIFOメモリ40のデータ量DV0は100%に近い値となっている。したがって、制御部50が出力する読み出し要求RQ0がアービタ32aにより受け付けられやすい状態にある。このため、制御部51が出力する読み出し要求RQ1も受け付けられやすい。
【0081】
読み出し要求RQ1が受け付けられると、制御部51aは、制御部50aから受け取った位置情報に応じた要求アドレスRA1を出力する。例えば、制御部51aは、FIFOメモリ40に書き込まれたデータの画素と1フレームの画像データFDAにおいて隣接する画素のデータのアドレスを先頭アドレスとしてバースト転送分のデータを読み出すように要求アドレスRA1を出力する。
【0082】
読み出し要求RQ1に応じてフレームメモリ13からFIFOメモリ41へデータ転送が開始され、FIFOメモリ41のデータ量DV1が増加する。
制御部51aは、上記の位置情報に対応するデータがFIFOメモリ40から読み出されるタイミングで、FIFOメモリ41の読み出しを開始させる。そして、Lレベルの選択信号DSLを出力する。
【0083】
なお、制御部51aがFIFOメモリ41の読み出しを再開するタイミングは、適宜設定が可能である。例えば、FIFOメモリ40に書き込まれたデータの位置情報に基づいて、次のバースト転送によりFIFOメモリ40に転送されるデータに対応するデータ(隣接する画素のデータ)をフレームメモリ13から読み出し、そのデータからデータ転送を再開するようにしてもよい。また、FIFOメモリ40から読み出される画像データRD0が含まれるラインデータの次のラインデータ又は複数ライン先のラインデータからデータ転送を再開するようにしてもよい。また、次のフレームの画像データからデータ転送を再開するようにしてもよい。
【0084】
[変形例5]
図13に示すように、フレームメモリ13には、赤色(R)の画像データFRAと、緑色(G)の画像データFGAと、青色(B)の画像データFBAが格納されている。赤色の画像データFRAは、偶数列データFR0と奇数列データFR1を含む。同様に、緑色の画像データFGAは偶数列データFG0と奇数列データFG1を含み、青色の画像データFBAは偶数列データFB0と奇数列データFB1を含む。
【0085】
出力部33bは、赤色の画像データFRAに対応する転送ブロックTBRと、緑色の画像データFGAに対応する転送ブロックTBGと、青色の画像データFBAに対応する転送ブロックTBBと、出力データ生成部(単に「出力部」と表記)62bを有している。
【0086】
転送ブロックTBRは、上記の出力部33と同様に、FIFOメモリ(単に「FIFO」と表記)40,41、制御部50,51R、補間データ生成部(単に「補間部」と表記)60、レジスタ部61を含む。同様に、転送ブロックTBGは、FIFOメモリ(単に「FIFO」と表記)40,41、制御部50,51G、補間データ生成部(単に「補間部」と表記)60、レジスタ部61を含む。また、転送ブロックTBBは、FIFOメモリ(単に「FIFO」と表記)40,41、制御部50,51B、補間データ生成部(単に「補間部」と表記)60、レジスタ部61を含む。
【0087】
各制御部51R、51G、51Bは、上記実施形態の制御部50(
図2参照)と同様に、FIFOメモリ41のデータ量DV1としきい値とを比較する。各制御部51R、51G、51Bは、自身の比較結果と、他の制御部の比較結果に基づいて、選択信号DSR,DSG,DSBを出力する。例えば、転送ブロックTBRのFIFOメモリ41において転送破綻が発生した場合、制御部51Rは、例えば上記[変形例1]と同様に、FIFOメモリ41を停止させ、Hレベルの選択信号DSRを出力する。そして、制御部51Rは、転送破綻の発生を他の制御部51G,51Bに通知する。各制御部51G,51Bは、通知を受けてそれぞれのFIFOメモリ41を停止させ、Hレベルの選択信号DSG,DSBを出力する。他の転送ブロックTBG,TBBにおいて転送破綻が発生した場合も同様である。
【0088】
1つの転送ブロック(例えば、転送ブロックTBR)において転送破綻が発生した場合、他の転送ブロックTBG,TBBにおいても転送破綻が発生する可能性が高い。このため、1つの転送ブロックTBRにおいて転送破綻が発生した場合に、当該転送ブロックTBRにおいてFIFOメモリ41を停止させるとともに、他の転送ブロックTBG,TBBにおいてFIFOメモリ41を停止させることで、転送帯域を削減することができ、各転送ブロックTBR〜TBBのFIFOメモリ40における転送破綻の発生を抑制することができる。
【0089】
なお、FIFOメモリ41を停止させるためのしきい値の設定等は、上記各変形例と同様に行うことができる。
また、[変形例4]と同様に、FIFOメモリ41を用いたデータ転送を再開するようにしてもよい。この場合、全ての転送ブロックTBR〜TBBにおいて転送再開の条件(FIFOメモリ40のデータ量DV0がしきい値DT3以上)を満足した場合に転送を再開する。
【0090】
なお、2つの画像データ又は4つ以上の画像データをフレームメモリ13に格納した場合も同様にデータ転送を制御することが可能である。
[変形例6]
図14(a)〜(c)に示すように、3つの分割画像データFD0〜FD2を
図1に示すフレームメモリ13に格納し、各分割画像データFD0〜FD2をそれぞれデータ転送するようにしてもよい。
図14(a)に示す分割画像データFD0は、列数Yが3n(nは0以上の整数)である画像データを含む。
図14(b)に示す分割画像データFD1は列数Yが3n+1である画像データを含む。
図14(c)に示す分割画像データFD2は列数Yが3n+2である画像データを含む。
【0091】
このように、3つの分割画像データFD0〜FD2をデータ転送する場合においても、上記実施形態及び各変形例と同様に、転送破綻による表示画像の乱れを低減することができる。
【0092】
[変形例7]
画像データを、ビット数によって分割した分割画像データを用いるようにしてもよい。例えば、
図15(a)に示すように、1つの画素データD00は12ビットのデータB11〜B0である。この画素データD00を、
図15(b)に示すように、上位8ビットの分割データD00aと、下位4ビットの分割データD00bに分割する。補間データ生成部60(
図2参照)における補間処理では、
図15(d)に示すように、分割データD00aに含まれる4ビット(例えば、ビットB11〜B8)を下位4ビットとする12ビットの補間データRRaを生成する。また、
図15(e)に示すように、ビットB4を下位4ビットにコピーして12ビットの補間データRRbを生成する。尚、下位4ビットに付加する値は、例えば「0」や「1」の固定データ、又は任意のビットの値を用いることができる。
【0093】
図15(a)〜(d)では12ビットの画素データD00及び補間データRRa,RRbについて説明したが、ビット数を適宜変更してもよい。例えば、8ビットの画像データを上位4ビットと下位4ビットに分割する。また、10ビットの画像データを上位8ビットと下位2ビットに分割する。また、16ビットの画像データを上位8ビットと下位8ビットに分割する。また、1つの画像データを3つ以上に分割してもよい。
【0094】
また、このようなビット数による分割は、例えば上記実施形態の偶数列データと奇数列データに対しても適用することができる。つまり、
図3(b)に示す偶数列データFD0の各画像データを、上位ビットを含む分割画像データと下位ビットを含む分割画像データに分割する。同様に、
図3(c)に示す奇数列データFD1の各画像データを、上位ビットを含む分割画像データと下位ビットを含む分割画像データに分割する。
【0095】
尚、上記実施形態及び各変形例のうちの少なくとも1つにおいて、以下の態様で実施してもよい。
・補間データ生成部における補間処理を適宜変更してもよい。
【0096】
1フレームの画像データFD0を、画素データの配列に従って分割した偶数列データFD0と奇数列データFD1の場合、直線補間により補間データを生成するようにしてもよい。例えば、
図3(b)に示す偶数列データFD0に含まれる画素データD00と画素データD02の間の画素データ(
図3(a)に示す画素データD01に対応する補間データ)を生成する。この補間データの値を、例えば画素データD00の値と画素データD02の値の平均値とする。この場合、補間データRRに基づいて表示される画素の色は、表示部15において、水平走査方向において隣接する2つの画素の中間の色となる。従って、偶数列データFD0の値と等しい値の補間データRRを生成する場合と比べ、より違和感の少ない画像が得られる。
【0097】
また、
・出力部33において、画像データに対して補正処理を行うようにしてもよい。補正処理は、例えば階調補正処理である。出力データ生成部62,62bにおいて生成された出力データに対して、表示部15の表示特性に基づく階調補正処理を行い、入力した画像データに応じて直線的に階調(輝度や色)が変化するように、入力した画像データを補正する。そして、補正後の画像データを表示部15に対して出力する。なお、補正処理を出力データ生成部62,62bにおいて行うようにしてもよい。