(57)【要約】【課題】蓄積データをバースト出力するバッファＲＡＭにおいて、データ出力のタイミングを制御することにより、効率的にデータ転送を実現することである。【解決手段】  データ処理マクロを有する半導体装置が提供される。該データ処理マクロは、データを処理するデータ処理部と、データ処理部が処理したデータを一時的に蓄積してバースト転送する、データの入力ポートと出力ポートとを有するバッファと、バッファに、蓄積されたデータをバースト転送させるバッファ制御部と、を有する。バッファ制御部は、１回のバースト転送で転送されるデータ量がバッファに蓄積される前に、データ処理部からバッファにまだ蓄積されていないデータが空読みされないように、バッファにバースト転送を開始させる。【選択図】図４
2008165485.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するデータ処理部と、
前記データ処理部が処理したデータを一時的に蓄積するバッファと、
前記バッファに蓄積されたデータをバースト転送でデータ格納部へ転送するバッファ制御部と
を有し、
前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記バッファに蓄積される前にバースト転送を開始させることを特徴とする半導体装置。
【請求項２】
請求項１に記載の半導体装置であって、
前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記データ処理部から前記バッファに転送される前に、前記バッファから全てのデータが前記データ格納部へ転送されない様に調整することを特徴とする半導体装置。
【請求項３】
請求項１に記載の半導体装置であって、
前記バッファ制御部は、前記バッファに蓄積されたデータ量が所定値と一致したか判定し、その判定結果に基づき前記バッファにバースト転送を開始させることを特徴とする半導体装置。
【請求項４】
請求項３に記載の半導体装置であって、
前記所定値Ｎは
Ｎ  >  （１−ｒ０／ｒ１）  ＊  Ｍ
を満たすように決定され、Ｍは１回のバースト転送で転送されるデータ量、ｒ０は前記データ処理部から前記バッファへの書き込み転送レート、ｒ１は前記バッファから前記データ格納部へのバースト転送の転送レートであることを特徴とする半導体装置。
【請求項５】
請求項１乃至４いずれか一項に記載の半導体装置であって、
前記バッファは少なくとも第１のサブバッファと第２のサブバッファとを含み、
前記データ処理部が処理したデータは、１回のバースト転送で転送されるデータ量ごとに、前記第１のサブバッファと前記第２のサブバッファに交互に一時的に蓄積され、
前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記第１のサブバッファまたは前記第２のサブバッファに蓄積される前に、前記データ処理部から前記バッファにまだ蓄積されていないデータが空読みされないように、一方のサブバッファからバースト転送がされていない時に、他方のバッファにバースト転送を開始させることを特徴とする半導体装置。
【請求項６】
データ処理部が処理したデータを一時的に蓄積するバッファと、
前記バッファに蓄積されたデータ量をカウントするカウンタと、
１回のバースト転送で転送されるデータ量が前記バッファに蓄積される前に、前記データ処理部から前記バッファにまだ蓄積されていないデータが空読みされないように決定された所定値を設定するレジスタと、
前記カウンタの値が前記レジスタの値と一致したか判断し、前記バッファにバースト転送を開始させる一致判定回路と
を有することを特徴とするバッファ制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に処理したデータを一時的に蓄積してバースト転送で出力するバッファを有する半導体装置、及びその制御回路に関する。
【背景技術】
【０００２】
さまざまなデータ処理がＬＳＩにより実現されている。例えば、ビデオカメラやデジタルカメラなどには、画像センサーから取り込んだ画像データにさまざまな処理を施すためのＬＳＩが搭載されている。また、携帯電話や携帯音楽端末にも音声データにさまざまな処理を施すためのＬＳＩが搭載されている。画像データや音声データ等の大容量のデータに複雑な処理を施すこれらのＬＳＩには、高いスループットが要求され、さまざまな技術が開発されてきている。
【０００３】
例えば、特許文献１には、メモリへの画像情報書き込みと読み出しの追い越しを発生しにくくするための、デュアルポートメモリ、有効領域判定部、追い越し判定部、フレームメモリ制御部を備える入力信号処理部が開示されている。デュアルポートメモリにより、入力映像データが、入力された同期信号（ＩＣＬＫ）とは非同期の同期信号（ＳＣＬＫ）に同期して読み出される。追い越し判定部は、ＩＣＬＫとＳＣＬＫ及びスケーリング率情報と入力判定閾値情報に従い、スケーリング率を考慮して、入力フレームメモリから読み出された映像データにおいて追い越しが発生するか否かを判定する。フレームメモリ制御部は、ＳＣＬＫと追い越し判定結果等に基づいて入力フレームメモリの制御を行う。
【０００４】
また、特許文献２には、非同期クロック間でのデータ転送においてもクロック乗せ換え回路を必要としない追い越し判定回路、及びこの追い越し判定回路を備えるデータ転送システムが開示されている。このデータ転送システムは、デュアルポートメモリに接続されている書き込み側回路が書き込んだデータに対する読み出し側回路による読み出しが、書き込み側回路による書き込みを追い越していないことを判定する追い越し判定回路に、書き込み側回路が次にデータを書き込む、デュアルポートメモリ内のアドレスを算出する予測カウンタと、予測カウンタにより算出されたアドレスに書き込み側回路によりデータが書き込まれる時期を予測する周期換算部と、予測カウンタにより算出された書き込みアドレスと、読み出し側回路が読み出すアドレスとを比較して、読み出しアドレスが書き込みアドレスを追い越していないことを判定する比較部と、を備える。
【０００５】
さらに、特許文献３には、１フレーム分の容量をもつフレームバッファを有する表示装置において、画像処理回路で処理を行ったデータをフレームバッファに書き込み、書き込まれたデータをフレームバッファから読み出して表示パネルの駆動回路に出力する方法であって、画像データの読み出しが書き込みを追い越さない制御方法が記載されている。
【０００６】
この制御方法によれば、書き込み開始のタイミングを読み出し開始のタイミングに先行させることにより追い越しを防止し、読み出しバースト転送が終了するとバッファＲＡＭへの書き込みを開始する。
【０００７】
この制御方法を用いることにより、バッファＲＡＭから読み出す１バースト分のデータが書き込まれる前に読み出しを開始することができ、転送効率が向上する。しかし、本方法は、読み出しバースト転送が終了したことをきっかけにしてバッファＲＡＭへの書き込みを開始するため、バッファＲＡＭからデータ読み出しを開始するタイミングが周期的である場合にのみ使用できる。
【特許文献１】特開２００６−２６７６６１号公報
【特許文献２】特開２００６−６５７０４号公報
【特許文献３】特開２００２−２１５０８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
図１は、デジタルカメラやカメラ付き携帯電話端末などに搭載されている画像処理向けＬＳＩの一部である、画像処理を行う画像処理マクロのブロック図である。
【０００９】
画像処理マクロ３００は、ＣＰＵインタフェース３０１、レジスタ３０２、画像処理回路３０３、入力インタフェース３０４、出力インタフェース３０５、バッファＲＡＭ３０６を有する。ＣＰＵインタフェース３０１は、画像処理マクロ３００の外部にあり画像処理マクロを制御するＣＰＵ３１０とのインタフェース回路である。レジスタ３０２は、ＣＰＵ３１０から受け取った画像処理のパラメータ等を設定するレジスタである。入力インタフェース３０４は、データバス３０７とのインタフェース回路であり、画像処理マクロ３００が処理する画像データをデータバス３０７から入力するインタフェースである。出力インタフェース３０５は、画像処理マクロ３００が処理した画像データをデータバス３０７に出力するインタフェースである。
【００１０】
画像処理回路３０３は、処理すべき画像データを、入力インタフェース３０４を介してデータバス３０７から受け取り、ＣＰＵ３１０により指示された処理を施して、その結果得られる処理後の画像データをバッファＲＡＭ３０６に出力する。バッファＲＡＭ３０６は、画像処理回路３０３から受け取った処理後の画像データを一時的に蓄積して、出力インタフェース３０５を介してデータバス３０７に出力する。
【００１１】
調停回路３０８は、画像処理ブロック３００と他の画像処理ブロック（図示せず）との間で、データバス３０７の使用を調停し、同時に複数の画像処理ブロックがデータバス３０７を使用しないようにするための回路である。この調停回路３０８と画像処理マクロ３００の入力インタフェース３０４との間で入力リクエスト信号と入力アクノレッジ信号がやりとりされ、調停回路３０８と出力インタフェース３０５との間で出力リクエスト信号と出力アクノレッジ信号がやりとりされる。入力インタフェース３０４は、画像処理回路３０３のデータ処理が可能となると、調停回路３０８に入力リクエスト信号を送る。調停回路３０８は、この入力リクエスト信号に応答して、他の構成要素（例えばＳＤＲＡＭカード３０９）に、画像処理回路３０３が処理すべき画像データをデータバス３０７に出力させ、入力インタフェース３０４に入力アクノレッジ信号を送る。入力インタフェース３０４は、入力アクノレッジ信号に応答してデータバス３０７から画像データを受け取る。同様に、出力インタフェース３０４は、バッファＲＡＭ３０６のデータ出力が可能となると、調停回路３０８に出力リクエスト信号を送る。調停回路３０８は、この出力リクエスト信号に応答して、画像処理回路３０３が処理した画像データを他の構成要素（例えばＳＤＲＡＭ３０９）が受け取れるようになると、出力インタフェース３０５に出力アクノレッジ信号を送る。出力インタフェース３０５は、出力アクノレッジ信号に応答してデータバス３０７にバッファＲＡＭ３０６が一時的に蓄積していた画像データを出力する。
【００１２】
画像処理マクロ３００が、ある処理単位で画像データを処理する場合、その処理単位の容量を有するバッファＲＡＭ３０６が用意されることが多い。以下、処理単位は画像データ１行分とする。
【００１３】
画像処理回路からデータがバッファに書き込まれる転送レートおよび、バッファＲＡＭから出力インタフェースにデータが読み出される転送レートは、各々のバス幅とバスクロックの積で計算される。バッファ書き込み側のバスクロックは、画像処理回路３０３の動作クロックであり、バッファ読み出し側のバスクロックは、画像データ転送部（調停回路３０８及び出力される画像データの出力先（例えばＳＤＲＡＭカード３０９）から構成される）のバスクロックである。バッファの読み出し側と書き込み側は通常は非同期で動作するため、バッファＲＡＭ３０６としてはデュアルポートのＲＡＭが使用される。
【００１４】
ここで、１回のデータ転送要求で連続して転送されるデータサイズは画像データ１行分に相当するものとする。以下の説明では、１回のデータ転送要求による連続データ転送をバースト転送と呼び、１回のバースト転送により転送されるデータサイズを１バーストと呼ぶ。
【００１５】
画像処理マクロ３００は、１バースト分以上のデータがバッファＲＡＭ３０６に溜まると、画像データ転送部に対してデータ転送要求を出して画像データの出力を行う。
【００１６】
図２は、図１で示される構成の画像処理マクロ３００内のバッファＲＡＭ３０６の制御信号を示すタイミングチャートである。図２のうち、（ｅ）〜（ｈ）は、（ａ）〜（ｄ）の楕円Ａで囲んだ部分の時間軸を拡大して示したものである。
【００１７】
バッファＲＡＭ３０６に画像データ１行分のデータ書き込みが終了して、書き込み信号（図２（ｄ）と（ｇ））がネゲートする（この場合、ローレベルになる）と、データを画像データ転送部に転送するために出力リクエスト（図２（ａ）と（ｅ））をアサートする（この場合、ハイレベルにする）。出力リクエストが画像データ転送部に受け付けられ、出力アクノレッジ（図２（ｂ）と（ｆ））を受け取ると、バッファＲＡＭ３０６の読み出し信号をアサートして読み出しを開始する。
【００１８】
図１に示される画像処理マクロ３００の場合には、出力インタフェース３０５から出力される出力リクエストが調停回路３０８に受け付けられ、出力アクノレッジが入力されたときにバッファＲＡＭ３０６からの読み出しを開始するため、読み出しを開始するタイミングは必ずしも周期的にはならず、特許文献３に開示された方法を用いることはできない。
【課題を解決するための手段】
【００１９】
本発明の１つの目的は、上記の課題等を解決することであり、特に蓄積データをバースト出力するバッファＲＡＭにおいて、データ入力のタイミングではなく、データ出力のタイミングを制御することにより、効率的にデータ転送を実現することである。本発明のさらに具体的な目的は、かかるバッファＲＡＭを有するデータ処理マクロ、及びかかるデータ処理マクロを有する半導体装置を提供することであり、さらにそのバッファＲＡＭの制御方法を提供することである。
【００２０】
本発明の一態様によると、データを処理するデータ処理部と、前記データ処理部が処理したデータを一時的に蓄積するバッファと、前記バッファに蓄積されたデータをバースト転送でデータ格納部へ転送するバッファ制御部とを有する半導体装置が提供される。前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記バッファに蓄積される前にバースト転送を開始させる。
【００２１】
上記の半導体装置において、前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記データ処理部から前記バッファに転送される前に、前記バッファから全てのデータが前記データ格納部へ転送されない様に調整してもよい。
【００２２】
上記の半導体装置において、前記バッファ制御部は、前記バッファに蓄積されたデータ量が所定値と一致したか判定し、その判定結果に基づき前記バッファにバースト転送を開始させてもよい。
【００２３】
さらに、前記所定値Ｎは
Ｎ  >  （１−ｒ０／ｒ１）  ＊  Ｍ
を満たすように決定され、Ｍは１回のバースト転送で転送されるデータ量、ｒ０は前記データ処理部から前記バッファへの書き込み転送レート、ｒ１は前記バッファから前記データ格納部へのバースト転送の転送レートとしてもよい。
【発明の効果】
【００２４】
本発明により、複数のデータ処理マクロがバスに接続されており、データ転送が調停されるようなシステムにおいて、あるデータ処理マクロのバッファＲＡＭからデータのバースト読み出しを開始するのに、１バースト分のデータがバッファに溜まる前に、データ転送部に対して転送要求を出すことが可能となり、ＬＳＩにおけるデータ処理のスループットが向上する。
【発明を実施するための最良の形態】
【００２５】
図３は、本発明の一態様である半導体装置を示す図であり、具体的には半導体装置の一実施形態である画像処理ＬＳＩ１０００の構成を示すブロック図である。画像処理ＬＳＩ１０００は、デジタルカメラやカメラ付き携帯電話端末などに搭載され、さまざまな画像処理を行うものである。言うまでもなく、本発明は、画像処理ＬＳＩに限定されず、データ処理をする半導体装置であれば、いかなる半導体装置にも適用することができる。
【００２６】
画像処理ＬＳＩ１０００は、画像処理マクロ１００１―１００３、画像データ転送回路１００４、ＳＤＲＡＭコントローラ１００５、ＣＰＵ１００６、周辺回路１００７、表示装置コントローラ１００８を含んでいる。画像処理マクロ１００１―１００３は、画像処理ＬＳＩ１０００の外部にあるセンサー１０１０を用いて取り込んだ画像データにさまざまな画像処理を行う。画像データ転送回路１００４は、画像処理マクロ１００１−１００３とＳＤＲＡＭ１００９との間で、ＳＤＲＡＭ１００９を制御するＳＤＲＡＭコントローラ１００５を介してデータ転送を行う。ＣＰＵ１００６は、画像処理ＬＳＩ１０００の動作を制御する。周辺回路１００７は、タイマーやカードコントローラなどの周辺回路を含んでいる。表示装置コントローラ１００８は、画像処理ＬＳＩ１０００の外部にあるＬＣＤなどの表示装置を制御する。
【００２７】
センサー１０１０から取り込まれたデータは、第一の画像処理回路１００１で処理された後、ＳＤＲＡＭ１００９に格納される。画像処理マクロ１００１による処理の後、ＳＤＲＡＭ１００９に格納されたデータは、第二の画像処理回路１００２に読み出され、別の画像処理が行われた後、再びＳＤＲＡＭ１００９に書き込まれる。さらに、画像処理マクロ１００２による処理の後、ＳＤＲＡＭ１００９に格納されたデータは、第三の画像処理回路１００３に読み出され、画像処理が行われた後、再びＳＤＲＡＭ１００９に書き込まれる。
【００２８】
図４は、図３に示した画像処理ＬＳＩ１０００に含まれる、本発明の一実施形態による画像処理マクロの構成を示すブロック図である。図４に示した画像処理マクロ１００は、例えば、図３の画像処理マクロ１００１−１００３に相当するものであり、ＣＰＵインタフェース１０１、レジスタ１０２、入力インタフェース１０３、出力インタフェース１０４、画像処理回路１０５、バッファＲＡＭ１０６を含んでいる。なお、画像処理マクロ１００は、図３に示したセンサー１０１０から画像データの入力を受けるインタフェース回路を有してもよい。
【００２９】
ＣＰＵインタフェース１０１は、ＣＰＵ１２０と画像処理マクロ１００との間のインタフェース回路である。レジスタ１０２は、ＣＰＵインタフェース１０１を介してＣＰＵ１２０から受け取った画像処理に関するパラメータを設定するためのレジスタである。入力インタフェース１０３と出力インタフェース１０４は、データバス１０８を介して画像データ転送部と通信するためのインタフェース回路である。バッファＲＡＭ１０６は、画像処理回路１０５で処理されたデータをバッファするためＲＡＭであり、例えば、処理フレームの１行分の画像データの容量をもち、バス幅３２ビットの１Ｒ１Ｗタイプの２ポートＲＡＭである。画像処理回路１０５は、画像データに、例えばコントラスト変換、フィルタリング、エッジ強調等の処理を施す回路である。
【００３０】
画像処理マクロ１００の動作中、画像処理回路１０５が１行分の画像データの処理を終わり、次の行の画像データを処理できるようになると、入力インタフェース１０３は、画像データ転送部に対して入力リクエスト１１５を出力し、画像データ転送部から入力アクノレッジ１１６を受け取ると入力データ転送を開始する。ここで、画像データ転送部は、例えば、図３の画像データ転送回路１００４であり、図４においてはデータバス１０８と調停回路１０９から構成されている。
【００３１】
レジスタ１０２には、画像処理に関するパラメータを設定するためのビットのほかに、バッファＲＡＭ１０６に１行分の画像データが蓄積される前に出力リクエストを出す機能の有効／無効を設定するビット１１１、およびバッファＲＡＭ１０６にどれだけ画像データが蓄積されたら出力リクエストを出すかを設定するビット１１２が設けられている。
【００３２】
一方、画像処理回路１０５には、バッファＲＡＭ１０６に書き込んだデータ量をカウントするライトデータカウンタ１１３と一致回路１１９が設けられている。この一致回路１１９は、バッファＲＡＭに１行分の画像データが溜まる前に出力リクエストを出す機能が有効である場合に、バッファＲＡＭにどれだけ画像データが溜まったらリクエストを出すのかを設定するビット１１２に設定された値と、ライトデータカウンタ１１３の値が一致したかを検出する。両方の値が一致した時、一致回路１１９は、出力インタフェース１０４に対して、出力リクエスト許可信号１１４を送る。
【００３３】
出力インタフェース１０４は、一致回路１１９から出力リクエスト許可信号１１４を受け取ると、（データバス１０８と調停回路１０９から構成される）画像データ転送部に対して出力リクエスト１１７を出力する。画像データ転送部から出力アクノレッジ１１８を受け取ると、出力インタフェース１０４は、バッファＲＡＭに対して読み出し信号をアサートし、出力データ転送を開始する。ここで、１バーストは画像１行分のデータサイズに相当するものとする。
【００３４】
バッファＲＡＭから１行分のデータを転送し終わると、次の１行分の画像データを画像処理回路に読み込むために、入力インタフェース１０３は画像データ転送部に入力リクエスト１１５を出力する。画像データ転送部から入力アクノレッジ１１６を受け取ると、入力インタフェース１０３を介して画像処理回路に画像データが読み込まれる。
【００３５】
本発明の一実施形態として、画像処理マクロの例を説明したが、図４において画像処理回路１０５は、画像処理に限らずいかなるデータ処理を行う回路であってもよいことは言うまでもない。
【００３６】
図５も参照して、本発明の画像処理マクロのバッファＲＡＭ制御に係わる動作を説明する。図５は、本発明の一実施形態による画像処理マクロ１００とのデータ転送に係わる波形を示す波形図である。図５には、比較のために、図１に示した従来の画像処理マクロのデータ転送に係わる波形（ａ）〜（ｄ）を波形（ａ）〜（ｄ）として示した。波形（ｅ）〜（ｈ）は、本発明による画像処理マクロのバッファＲＡＭ制御信号を示している。
【００３７】
ＲＡＭ書き込み信号（図５（ｈ））がアサートされている（この場合、信号がハイレベルになっている）間、画像処理回路１０５からバッファＲＡＭ１０６に対して画像データが書き込まれる。この間、ライトデータカウンタ１１３は、画像処理回路１０５からバッファＲＡＭ１０６に書き込まれた画素数をカウントする。本実施形態では、１クロックサイクルあたり１画素の画像データが、画像処理回路１０５からバッファＲＡＭ１０６に書き込まれるものとする。
【００３８】
ここで、レジスタ１０２のビット１１１に設定された、バッファＲＡＭ１０６に１行分の画像データが溜まる前に出力リクエストを出す（より正確に言うと、出力インタフェース１０４に出力リクエスト許可１１４を出す）機能が有効であり、レジスタ１０２のビット１１２に設定された、バッファＲＡＭ１０６にどれだけ画像データが溜まったら出力リクエストを出す（より正確に言うと、出力インタフェース１０４に出力リクエスト許可１１４を出す）か設定するビットの値がＮ（１以上かつＭ以下の整数値）に設定されている場合、ライトデータカウンタ１１３の値がＮになると、一致回路１１９により出力リクエスト許可信号１１４が出され、これに応答して出力インタフェース１０４は、調停回路１０９に出力リクエスト信号１１７（図５（ｅ））を出す。
【００３９】
すなわち、本発明の画像処理マクロでは、図５の縦点線Ｃで示した従来の画像処理マクロがバッファＲＡＭからデータ転送を開始するタイミングより早い、図５の縦点線Ｄで示したタイミングで出力データ転送を開始する。
【００４０】
図６は、図５の楕円Ｂで囲んだ、本発明の一実施形態による画像処理マクロ１００のデータ転送に係わる波形部分を拡大した図である。
【００４１】
本実施形態においては、１行分の画像データはＭ画素であるとする。また、バッファＲＡＭ１０６の書き込み側のクロックＣＬＫ０（図６（ａ））の周期をＴ０（ｎｓｅｃ）、読み出し側のクロックＣＬＫ１（図６（ｅ））の周期をＴ１（ｎｓｅｃ）とする。
【００４２】
ＲＡＭ書き込み信号（図６（ｂ））がアサートされている（この場合、信号がハイレベルになっている）間、画像処理回路１０５からバッファＲＡＭ１０６に対して、クロックＣＬＫ０（図６（ａ））の１周期に１画素の割合で画像データが書き込まれる。この間、ライトデータカウンタ１１３は、画像処理回路１０５からバッファＲＡＭ１０６に書き込まれた画素数をカウントする（図６（ｃ））。
【００４３】
ライトデータカウンタ１１３の値がＮになると、一致回路１１９により出力リクエスト許可信号１１４（図６（ｄ））がアサートされる（この場合、信号がハイレベルになる）。出力リクエスト許可信号（図６（ｄ））は画像処理回路内においてＣＬＫ０に同期して生成される。この出力リクエスト許可信号に応答して、出力インタフェースにおいてＣＬＫ１（図６（ｅ））に同期した出力リクエスト信号（図６（ｆ））が生成される。出力インタフェースは、画像データ転送回路から出力アクノレッジ信号（図６（ｇ））を受け取ると、バッファＲＡＭ読み出し信号（図６（ｈ））をアサートする。このバッファＲＡＭ読み出し信号のアサートに応答してバッファＲＡＭ１０６からの出力データ転送が開始される。
【００４４】
ここで、前記Ｎの値は次式１を満たすように設定できる。
【００４５】
Ｎ  >  （１−ｒ０／ｒ１）  ＊  Ｍ                          （式１）
図７は、式１の導出方法を説明するための図である。
【００４６】
バッファ７００には、画像データが、書き込み側からクロックＣＬＫ０（周期Ｔ０）で書き込まれ、読み出し側からクロックＣＬＫ１（周期Ｔ１）で読み出されている。今、バッファＲＡＭにＮ画素が書き込まれているとする。１画素＝８ビット換算とし、１クロックサイクル当たり３２ビットのデータがバッファＲＡＭに書き込まれるとすると、１行分の画像データＭ画素のうち残りの（Ｍ  −  Ｎ）画素を書き込むのに必要な時間は、次式２で表される。
【００４７】
（Ｍ  −  Ｎ）／４  ＊  Ｔ０（ｎｓｅｃ）                    （式２）
１クロックサイクル当たり３２ビットのデータがバッファＲＡＭから読み出されるとすると、現在バッファＲＡＭに既に書き込まれているＮ画素とこれから書き込まれるＭ−Ｎ画素の合計（すなわちＭ画素）を読み出すのに必要な時間は、次式で表される。
【００４８】
Ｍ／４  ＊  Ｔ１（ｎｓｅｃ）                                （式３）
バッファＲＡＭに書き込まれた１行分の画像データ（Ｍ画素）を読み出している間に、１行分の画像データをバッファＲＡＭに書き終わっていれば、データを空読みすることはない。データの空読みとは、読み出すべきデータがまだ書き込まれていないＲＡＭの領域を読み出してしまうことである。従って、式２で表された時間が式３で表された時間より短ければよい。すなわち、
（Ｍ  −  Ｎ）／４  ＊  Ｔ０    <    Ｍ／４  ＊  Ｔ１      （式４）
周期と転送レートの関係Ｔ０＝１／ｒ０、Ｔ１＝１／ｒ１を用いて式４を変形すると式１が得られる。
【００４９】
ここで、図４に示した画像処理マクロ１００において、バッファ書き込み側のデータ転送レートｒ０、あるいはバッファ読み出し側のデータ転送レートｒ１を、画像処理回路の動作周波数および画像データ転送部のバスクロックの周波数から自動的に計算し、式１を満たすＮの値を割り出すレジスタ設定値計算部（図４には図示せず）を画像処理ブロックに備えておけば、前述したような１バースト分のデータがバッファに溜まる前に転送要求を出す機能の有効／無効を切り替える設定ビット、あるいはバッファにどれだけ画像データが溜まったらリクエストを出すのかを設定するビットを備える必要はない。
【００５０】
さらに、消費電力を落とす目的等により、画像処理回路の動作周波数、データ転送部の動作周波数、またはその両方が変更された場合であっても、レジスタ設定値計算部は、設定値Ｎの値を再計算して、転送要求を出すタイミングを変更することが可能である。
【００５１】
また、図３において、ＳＤＲＡＭ１００９を動作周波数が異なるＳＤＲＡＭに置き換えた場合や、画像データ転送回路１００４のバスクロックが変更された場合であっても、レジスタ設定値計算部は、設定値Ｎの値を再計算して、転送要求を出すタイミングを変更することが可能である、柔軟にシステムを構築することができる。
【００５２】
図８は、出力リクエスト許可信号の生成回路の実施例を示す図である。図８には、画像処理回路１１００（図４の画像処理回路１０５に相当）、バッファＲＡＭ１１０５（図４のバッファＲＡＭ１０６に相当）、及び出力インタフェース１１０４（図４の出力インタフェース１０４に相当）が示されている。
【００５３】
画像処理回路１１００は、一致回路１１０２（図４の一致回路１１９に相当）を含む。一致回路１１０２によって、ライトデータカウンタ１１０１（図４のライトデータカウンタ１１３に相当）に示された、バッファＲＡＭ１１０５に書き込まれたデータのカウント数と、（図４のレジスタ１０２のビット１１２に設定された）レジスタの設定値とを比較し、一致すればクロックＣＬＫ１に同期したワンショットのパルスを出力する。一致回路１１０２から出力された信号（パルス）から、クロックＣＬＫ２に同期した信号を生成し、出力リクエスト許可信号とする。
【００５４】
出力リクエスト許可信号がアサートされると出力インタフェース１１０４の出力リクエストがセットされ、調停回路（図示せず）にリクエストが受け付けられたことを示す出力アクノレッジがアサートされると出力リクエストをリセットする。
【００５５】
出力アクノレッジがアサートされるとバッファＲＡＭ１１０５からの読み出しを開始するため、出力インタフェース１１０４は、バッファＲＡＭ１１０５へのリードイネーブル信号をセットする。リードデータカウンタ１１０３により、読み出されたデータをカウントし、１バースト分をカウントするとリードイネーブル信号をリセットする。ここでＣＬＫ１は画像処理回路の動作周波数、ＣＬＫ２は画像データ転送部のバスクロックの周波数である。
【００５６】
図９は、上記実施形態の変形例による画像処理マクロの構成を示すブロック図である。図９に示した画像処理マクロ６００は、図４に示した画像処理マクロ１００と比較して、バッファＲＡＭが２つのサブバッファを有するダブルバッファ構成である点が異なる。すなわち、本変形例による画像処理マクロ６００は、バッファＲＡＭとして、画像１行分の容量を持つバッファＲＡＭ６０６、６０７がサブバッファとして２面用いられている点である。画像１行分の容量を持つＲＡＭを２面備えることで、一方のバッファＲＡＭ（例えば、バッファＲＡＭ６０６）にデータが書き込まれている間に、もう一方のバッファＲＡＭ（例えば、バッファＲＡＭ６０７）からデータを読み出すことができるため、データ転送が効率よく行われる。バッファＲＡＭ６０６、６０７には、バス幅３２ビットの１Ｒ１Ｗの２ポートＲＡＭがそれぞれ使用される。画像処理マクロ６００のその他の構成は、図４に示した画像処理マクロ１００の対応する構成と基本的に同じである。
【００５７】
図１０は、本変形例によるバッファＲＡＭ６０６、６０７の制御信号の波形を示すタイミングチャートである。
【００５８】
本変形例において、バッファＲＡＭ６０６、６０７に１行分の画像データが溜まる前に出力リクエストを出す機能が有効で、バッファＲＡＭ６０６、６０７にどれだけ画像データが溜まったらリクエストを出すかを設定するレジスタ６０２のビット６１２にＮ（０以上Ｍ以下の整数）が設定されているものとする。
【００５９】
図１０において、期間Ａでは、２面あるバッファＲＡＭ６０６、６０７の読み出し信号もアサートされておらず、いずれのバッファＲＡＭ６０６、６０４からも読み出し（出力データ転送）が行われていない。この期間内にライトデータカウント（図１０（ｇ））は、ＲＡＭ６０７に書き込まれているデータ量を示し、このカウントがＮとなると出力リクエスト（図１０（ａ））がアサートされる。出力アクノレッジ信号（図１０（ｂ））に応答して、バッファＲＡＭ６０６読み出し信号（図１０（ｃ））がアサートされ、バッファＲＡＭ６０６からの読み出しが開始される。
【００６０】
期間Ｂでは、バッファＲＡＭ６０６読み出し信号（図１０（ｃ））がアサートされており、バッファＲＡＭ６０６の読み出しが行われている。ライトデータカウント（図１０（ｇ））がＮとなった時点では、ＲＡＭ６０７を読み出すための出力リクエスト（図１０（ａ））はアサートされず、バッファＲＡＭ６０６の読み出しが終わった時点で、すなわちライトデータカウントがＭとなった時点で、バッファＲＡＭ６０７を読み出すために出力リクエスト（図１０（ａ））がアサートされ、バッファＲＡＭ６０７からの読み出しが開始される。
【００６１】
バッファＲＡＭ６０６の読み出しが終わった時点Ｘから、バッファＲＡＭ６０６の書き込みが開始される時点Ｙまでの期間は、画像処理回路６０５が期間ＣにバッファＲＡＭ６０７から読み出されている画像データの行の次の行を処理している期間である。
【００６２】
期間Ｃでは、バッファＲＡＭ６０７から読み出されている次の行の画像データが準備できた時点Ｙで、ＲＡＭ６０６書き込み信号（図１０（ｄ））がアサートされ、画像処理回路６０５からバッファＲＡＭ６０６への書き込みが開始される。
【００６３】
期間Ｄでは、ＲＡＭ６０６書き込み信号（図１０（ｄ））がアサートされ、画像処理回路６０５からバッファＲＡＭ６０６へ書き込みが行われている。バッファＲＡＭ６０６に蓄積されたデータ量を示すライトデータカウント（図１０（ｇ））の値がＮになった時点には、バッファＲＡＭ６０７読み出し信号はネゲートされ、バッファＲＡＭ６０７からの読み出しは行われていないので、バッファＲＡＭ６０６を読み出すための出力リクエスト（図１０（ａ））をアサートし、バッファＲＡＭ６０６の読み出しを開始する。
【００６４】
図１１は、上記実施形態の別の変形例による画像処理マクロの構成を示すブロック図である。図１１に示した画像処理マクロ８００は、図９に示した画像処理マクロ６００と比較して、１行分の画像データを４回のバースト転送で転送する点で異なる。本変形例による画像処理マクロ８００の構成は、図９に示した画像処理マクロの構成と比較して、出力インタフェース８０４内にＦＩＦＯ８２１が用いられている点、および、一致回路８１９から出力インタフェース８０４に供給される信号が読み出しリクエスト信号８１４である点で異なる。ＦＩＦＯ８２１は、例えば、画像１行分のデータ容量を有する、バス幅３２ビットの１Ｒ１Ｗの２ポートＲＡＭである。
【００６５】
出力インタフェース８０４は、画像処理回路８０５の一致回路８１９から読み出しリクエスト８１４を受け取ると、ＦＩＦＯ８２１の空き状況に応じて、バッファＲＡＭ８０６あるいはバッファＲＡＭ８０７に読み出し信号を出力する。すなわち、出力インタフェース８０４は、ＦＩＦＯ８２１がフルになると読み出し信号をネゲートし、１バースト分以上の空き容量ができると読み出し信号をアサートする。
【００６６】
一方、出力インタフェース８０４は、ＦＩＦＯ８２１に１バースト分以上のデータが蓄積されると出力リクエスト８１７をアサートし、出力アクノレッジ８１８を受け取ると、ＦＩＦＯ８２１からの画像データのバースト転送を開始する。このバースト転送が終了した時にＦＩＦＯ８２１に１バースト分以上のデータが蓄積されていれば、次のバースト転送を行うために、続けて出力リクエスト８１７をアサートする。
【００６７】
なお、図１１に示した画像処理マクロ８００のその他の構成は、図９に示した画像処理マクロ６００の対応する構成と基本的に同じである。
【００６８】
図１２は、本変形例による画像処理マクロにおけるバッファＲＡＭ８０６、８０７の制御信号の波形を示すタイミングチャートである。
【００６９】
期間Ｃでは、バッファＲＡＭ８０７読み出し信号（図１２（ｆ））がアサートされ、バッファＲＡＭ８０７からＦＩＦＯ８２１へ画像データが転送されている。しかし、ＦＩＦＯ８２１がフルになると、バッファＲＡＭ８０７読み出し信号がネゲートされる（図１２（ｆ）のＰの時点）。ＦＩＦＯ８２１からのバースト転送が終了し、ＦＩＦＯ８２１に１バースト分の空き容量ができると、再びバッファＲＡＭ８０７読み出し信号がアサートされ（図１２（ｆ）のＱの時点）、バッファＲＡＭ８０７からＦＩＦＯ８２１にデータが転送される。
【００７０】
本変形例においても、バッファＲＡＭにどれだけ画像データが溜まったらリクエストを出すのかを設定するビットに設定する値Ｎは、前出の式１で求めることができる。
【００７１】
なお、図９と図１１に示した画像処理マクロ６００、８００は、２つのバッファＲＡＭを有しているが、３つ以上のバッファＲＡＭを有していてもよく、その動作は上記の説明と同様である。
【００７２】
また、図１１の画像処理マクロ８００にはバッファＲＡＭ８０６、８０７が含まれているが、バッファＲＡＭは１つだけでもよい。
【００７３】
なお、本開示にあたり、以下の付記を記す。
（付記１）
データを処理するデータ処理部と、
前記データ処理部が処理したデータを一時的に蓄積するバッファと、
前記バッファに蓄積されたデータをバースト転送でデータ格納部へ転送するバッファ制御部とを有し、
前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記バッファに蓄積される前にバースト転送を開始させることを特徴とする半導体装置。
（付記２）
付記１に記載の半導体装置であって、
前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記データ処理部から前記バッファに転送される前に、前記バッファから全てのデータが前記データ格納部へ転送されない様に調整することを特徴とする半導体装置。
（付記３）
付記１に記載の半導体装置であって、
前記バッファ制御部は、前記バッファに蓄積されたデータ量が所定値と一致したか判定し、その判定結果に基づき前記バッファにバースト転送を開始させることを特徴とする半導体装置。
（付記４）
付記３に記載の半導体装置であって、
前記所定値Ｎは
Ｎ>（１−ｒ０／ｒ１）＊Ｍ
を満たすように決定され、Ｍは１回のバースト転送で転送されるデータ量、ｒ０は前記データ処理部から前記バッファへの書き込み転送レート、ｒ１は前記バッファから前記データ格納部へのバースト転送の転送レートであることを特徴とする半導体装置。
（付記５）
付記３または４に記載の半導体装置であって、
前記バッファに蓄積されたデータ量をカウントするカウンタと、
前記所定値を設定するレジスタと、
前記カウンタの値がレジスタの値と一致したか判断する一致判定回路とをさらに有することを特徴とする半導体装置。
（付記６）
付記３ないし５いずれか一項に記載の半導体装置であって、
前記所定値を計算する所定値計算部をさらに有することを特徴とする半導体装置。
（付記７）
付記５に記載の半導体装置であって、
データ転送回路への出力インタフェースをさらに有し、
前記出力インタフェースは前記一致判定回路からの出力リクエスト許可に基づき、前記データ転送回路に出力リクエストし、出力アクノレッジに応じて前記バッファにデータを出力させることを特徴とする半導体装置。
（付記８）
付記１乃至７いずれか一項に記載の半導体装置であって、
前記バッファは少なくとも第１のサブバッファと第２のサブバッファとを含み、
前記データ処理部が処理したデータは、１回のバースト転送で転送されるデータ量ごとに、前記第１のサブバッファと前記第２のサブバッファに交互に一時的に蓄積され、
前記バッファ制御部は、１回のバースト転送で転送されるデータ量が前記第１のサブバッファまたは前記第２のサブバッファに蓄積される前に、前記データ処理部から前記バッファにまだ蓄積されていないデータが空読みされないように、一方のサブバッファからバースト転送がされていない時に、他方のバッファにバースト転送を開始させることを特徴とする半導体装置。
（付記９）
付記５に記載の半導体装置であって、
データ転送回路への出力インタフェースをさらに有し、
前記出力インタフェースは、前記バッファからデータ転送を受けるＦＩＦＯを有し、前記一致判定回路からの読み出しリクエストに基づき、前記バッファから前記ＦＩＦＯにデータを出力させることを特徴とする半導体装置。
（付記１０）
付記１乃至３いずれか一項に記載の半導体装置であって、
前記バッファは１Ｒ１Ｗの２ポートＲＡＭであることを特徴とする半導体装置。
（付記１１）
付記１乃至１０いずれか一項に記載の半導体装置であって、
前記データ処理部は画像処理部であることを特徴とする半導体装置。
（付記１２）
付記５に記載の半導体装置であって、
データ転送回路から前記データ処理部にデータを取り込む入力インタフェースをさらに有することを特徴とする半導体装置。
（付記１３）
付記７に記載の半導体装置であって、
前記データ転送回路はデータバスへのアクセスが競合しないように調停する調停回路を含むことを特徴とする半導体装置。
（付記１４）
付記５記載の半導体装置であって、
１回のバースト転送で転送されるデータ量がバッファに蓄積される前に、データ処理部からバッファにまだ蓄積されていないデータが空読みされないように、バッファにバースト転送を開始させる機能を有効にするかどうかを設定するレジスタをさらに有することを特徴とする半導体装置。
（付記１５）
データ処理部が処理したデータを一時的に蓄積するバッファと、
前記バッファに蓄積されたデータ量をカウントするカウンタと、
１回のバースト転送で転送されるデータ量が前記バッファに蓄積される前に、前記データ処理部から前記バッファにまだ蓄積されていないデータが空読みされないように決定された所定値を設定するレジスタと、
前記カウンタの値が前記レジスタの値と一致したか判断し、前記バッファにバースト転送を開始させる一致判定回路とを有することを特徴とするバッファ制御回路。
（付記１６）
入力されたデータを一時的にバッファに蓄積してからバースト転送により出力するバッファの制御方法であって、
１回のバースト転送により連続して前記バッファから出力されるデータ量より少ない所定データ量のデータが前記バッファに蓄積されたか判断する段階と、
前記所定データ量のデータが前記バッファに蓄積されたと判断したときに、前記バッファにバースト転送による出力を開始させる段階と、を有し、
前記所定データ量は、前記バッファにまだ蓄積されていないデータが空読みされないように決定されることを特徴とするバッファの制御方法。
【図面の簡単な説明】
【００７４】
【図１】従来の画像処理マクロの構成を示すブロック図である。
【図２】従来の画像処理マクロのバッファＲＡＭ制御信号を示す波形図である。
【図３】本発明の一実施形態による画像処理ＬＳＩの構成を示すブロック図である。
【図４】本発明の一実施形態による画像処理マクロの構成を示すブロック図である。
【図５】図４に示した画像処理マクロのバッファＲＡＭ制御信号を示す波形図である。
【図６】図５の一部を拡大して示した波形図である。
【図７】出力リクエスト許可を出す画像データの蓄積量の条件式の導出方法を説明するための図である。
【図８】本発明の一実施形態による画像処理マクロの出力リクエスト許可信号生成回路の例を示すブロック図である。
【図９】本発明の一実施形態による画像処理マクロの変形例の構成を示すブロック図である。
【図１０】図９に示した画像処理マクロの変形例のバッファＲＡＭ制御信号を示す波形図である。
【図１１】本発明の一実施形態による画像処理マクロの他の変形例の構成を示すブロック図である。
【図１２】図１１に示した画像処理マクロの他の変形例のバッファＲＡＭ制御信号を示す波形図である。
【符号の説明】
【００７５】
１００、６００、８００    画像処理マクロ
１０１、６０１、８０１    ＣＰＵインタフェース
１０２、６０２、８０２    レジスタ
１０３、６０３、８０３    入力インタフェース
１０４、６０４、８０４    出力インタフェース
１０５、６０５、８０５    画像処理回路
１０６、６０６、６０７、８０６、８０７    バッファＲＡＭ
１０８、６０８、８０８    データバス
１０９、６０９、８０９    調停回路
１１０、６１０、８１０    ＳＤＲＡＭ
１２０、６２０、８２０    ＣＰＵ
８２１    ＦＩＦＯ
１０００  画像処理ＬＳＩ
１００１、１００２、１００３  画像処理マクロ
１００４  画像データ転送回路
１００５  ＳＤＲＡＭコントローラ
１００６  ＣＰＵ
１００７  周辺回路
１００８  表示装置コントローラ
１００９  ＳＤＲＡＭ
１０１０  センサー
１０１１  表示装置
【図１】
2008165485.tif 000003
【図２】
2008165485.tif 000004
【図３】
2008165485.tif 000005
【図４】
2008165485.tif 000006
【図５】
2008165485.tif 000007
【図６】
2008165485.tif 000008
【図７】
2008165485.tif 000009
【図８】
2008165485.tif 000010
【図９】
2008165485.tif 000011
【図１０】
2008165485.tif 000012
【図１１】
2008165485.tif 000013
【図１２】
2008165485.tif 000014