(57)【要約】【課題】  集積回路に実装する際の実装面積や動作速度の点で不利である乗算器を使用せず、加算器とカウンタで表示データの解像度変換などに必要なアドレスを発生することが可能となるアドレス生成装置を含むシステムおよびそのアドレス生成装置を提供する。【解決手段】  次のアドレスを計算するために複数用意した値からある値を選択して加算する部分と、加算する値の選択を制御する信号を生成する部分を用意する。加算する値の選択を制御する部分には複数のカウンタを用意し、これらカウンタの値により加算する値を選択する。このアドレス生成装置をＤＭＡ制御装置、メモリアクセス制御装置、表示制御装置等に内蔵し、解像度変換等を実現する。【選択図】        図１
2005209060.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセスの際に必要となるアドレスを生成するアドレス生成装置を含むシステムであって、
アドレスの増分を加算することによりアドレスを更新するアドレス更新部と、
各々の初期値を独立して設定可能である複数のカウンタを有し、前記複数のカウンタ値のうち少なくとも一つの前記カウンタの値により前記アドレスの増分を選択するアドレス増分選択部と、
を備えるアドレス生成装置を含むシステム。
【請求項２】
請求項１記載のアドレス生成装置を含むシステムであって、
アドレスの増分の少なくとも１個とカウンタの初期値の少なくとも１個を同じ設定レジスタで共有して保持するアドレス生成装置を含むシステム。
【請求項３】
請求項１記載のアドレス生成装置を含むシステムであって、
前記複数のカウンタは第１のカウンタと第２のカウンタからなり、
前記第１のカウンタが特定の値のときに前記第２のカウンタの値が更新され、前記第１のカウンタが特定の値のときに前記第２のカウンタの値によりアドレスの増分を選択するアドレス生成装置を含むシステム。
【請求項４】
請求項１記載のアドレス生成装置を含むシステムであって、
前記複数のカウンタは第１のカウンタと第２のカウンタと第３のカウンタからなり、
前記第１のカウンタが特定の値のときに前記第２のカウンタ及び第３のカウンタの値が更新され、前記第１のカウンタが特定の値のときに前記第３のカウンタの値によりアドレスの増分を選択するアドレス生成装置を含むシステム。
【請求項５】
請求項１記載のアドレス生成装置を含むシステムであって、
前記複数のカウンタは第１のカウンタと第２のカウンタと第３のカウンタからなり、
前記第１のカウンタが特定の値のときに前記第２のカウンタが更新され、前記第１のカウンタ及び前記第２のカウンタが特定の値のときに前記第３のカウンタが更新され、前記第１のカウンタの値が前記特定の値のときに前記第２のカウンタの値によりアドレスの増分を選択するアドレス生成装置を含むシステム。
【請求項６】
メモリアクセスの際に必要となるアドレスを生成するアドレス生成装置を含むシステムであって、
開始アドレスを指定する開始アドレスレジスタと、
第１のカウンタと、
前記第１のカウンタのカウント周期を指定する第１の初期値レジスタと、
前記第１のカウンタのカウント周期毎にカウントを行う第２のカウンタと、
前記第２のカウンタの初期値を指定する第２の初期値レジスタと、
前記第１のカウンタが特定の値とは異なる際のアドレスの増分を指定する第１のステップレジスタと、
前記第１のカウンタが特定の値でありかつ前記第２のカウンタが特定の値とは異なる際に、前記第２のカウンタの値で選択されアドレスの増分を指定する第２のステップレジスタおよび第３のステップレジスタと、
を備えるアドレス生成装置を含むシステム。
【請求項７】
請求項６記載のアドレス生成装置を含むシステムであって、
前記第１のカウンタのカウント周期を指定する前記第１の初期値レジスタと、前記第２のステップレジスタまたは前記第３のステップレジスタを、１個のレジスタとするアドレス生成装置を含むシステム。
【請求項８】
請求項６記載のアドレス生成装置を含むシステムであって、
前記第１のステップレジスタの代わりとして固定値を用いたアドレス生成装置を含むシステム。
【請求項９】
メモリアクセスの際に必要となるアドレスを生成するアドレス生成装置を含むシステムであって、
開始アドレスを指定する開始アドレスレジスタと、
第１のカウンタと、
前記第１のカウンタのカウント周期を指定する第１の初期値レジスタと、
前記第１のカウンタのカウント周期毎にカウントを行う第２のカウンタと、
前記第２のカウンタの初期値を指定する第２の初期値レジスタと、
前記第１のカウンタのカウント周期毎にカウントを行う第３のカウンタと、
前記第３のカウンタの初期値を指定する第３の初期値レジスタと、
前記第１のカウンタが特定の値とは異なる際のアドレスの増分を指定する第１のステップレジスタと、
前記第１のカウンタが特定の値でありかつ前記第３のカウンタの値が特定の値である際のアドレスの増分を指定する第２のステップレジスタと、
前記第１のカウンタが特定の値でありかつ前記第３のカウンタの値が特定の値とは異なる際のアドレスの増分を指定する第３のステップレジスタと、
を備えるアドレス生成装置を含むシステム。
【請求項１０】
請求項９記載のアドレス生成装置を含むシステムであって、
前記第１のカウンタのカウント周期を指定する前記第１の初期値レジスタと、前記第２のステップレジスタまたは前記第３のステップレジスタを、１個のレジスタとするアドレス生成装置を含むシステム。
【請求項１１】
請求項９記載のアドレス生成装置を含むシステムであって、
前記第１のステップレジスタの代わりとして固定値を用いたアドレス生成装置を含むシステム。
【請求項１２】
メモリアクセスの際に必要となるアドレスを生成するアドレス生成装置を含むシステムであって、
開始アドレスを指定する開始アドレスレジスタと、
第１のカウンタと、
前記第１のカウンタのカウント周期を指定する第１の初期値レジスタと、
前記第１のカウンタのカウント周期毎にカウントを行う第２のカウンタと、
前記第２のカウンタの初期値を指定する第２の初期値レジスタと、
前記第２のカウンタのカウント周期毎にカウントを行う第３のカウンタと、
前記第３のカウンタの初期値を指定する第３の初期値レジスタと、
前記第１のカウンタが特定の値とは異なる際のアドレスの増分を指定する第１のステップレジスタと、
前記第１のカウンタが特定の値でありかつ前記第２のカウンタの値が特定の値である際のアドレスの増分を指定する第２のステップレジスタと、
前記第１のカウンタが特定の値でありかつ前記第２のカウンタの値が特定の値とは異なる際のアドレスの増分を指定する第３のステップレジスタと、
を備えるアドレス生成装置を含むシステム。
【請求項１３】
請求項１２記載のアドレス生成装置を含むシステムであって、
前記第１のカウンタのカウント周期を指定する前記第１の初期値レジスタと、前記第２のステップレジスタまたは前記第３のステップレジスタを、１個のレジスタとするアドレス生成装置を含むシステム。
【請求項１４】
請求項１２記載のアドレス生成装置を含むシステムであって、
前記第１のステップレジスタの代わりとして固定値を用いたアドレス生成装置を含むシステム。
【請求項１５】
請求項１記載のアドレス生成装置を含むシステムであって、
メモリ−メモリ間またはメモリ−Ｉ／Ｏ間のデータ転送を行うＤＭＡ転送制御装置である、アドレス生成装置を含むシステム。
【請求項１６】
請求項１記載のアドレス生成装置を含むシステムであって、
表示装置に出力する信号を発生する表示制御装置である、アドレス生成装置を含むシステム。
【請求項１７】
請求項１記載のアドレス生成装置を含むシステムであって、
メモリアクセスを制御するメモリ制御装置と、
表示装置に出力する信号を発生する表示制御装置と、
前記メモリ制御装置から前記表示制御装置へ表示データを直接転送するデータパスと、
を備え、
前記メモリ制御装置が前記アドレス生成装置を含むシステム。
【請求項１８】
請求項１記載のアドレス生成装置を含むシステムであって、
メモリアクセスを制御するメモリ制御装置と、
メモリ−Ｉ／Ｏ間のデータ転送が可能なＤＭＡ制御装置と、
表示装置に出力する信号を発生する表示制御装置と、
を備え、
前記表示制御装置が前記ＤＭＡ制御装置から表示データを受けることが可能であり、
前記ＤＭＡ制御装置が前記アドレス生成装置を含むシステム。
【請求項１９】
請求項１記載のアドレス生成装置を含むシステムであって、
メモリアクセスを制御するメモリ制御装置と、
メモリ−メモリ間のデータ転送が可能なＤＭＡ制御装置と、
演算処理を行うプロセッサと、
を備え、
前記プロセッサがアクセス可能な内部メモリを持ち、前記ＤＭＡ制御装置が前記内部メモリにもアクセス可能であり、
前記ＤＭＡ制御装置が前記アドレス生成装置を含むシステム。
【請求項２０】
メモリアクセスの際に必要となるアドレスを生成するアドレス生成装置であって、
アドレスの増分を加算することによりアドレスを更新するアドレス更新部と、
各々の初期値を独立して設定可能である複数のカウンタを有し、前記カウンタの値により前記アドレスの増分を選択するアドレス増分選択部と、
を備えるアドレス生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ダイレクトメモリアクセス制御装置、表示制御装置、あるいはメモリ制御装置等のように、メモリをアクセスする際に必要となるアドレスを生成する装置を含むシステムおよびそのアドレス生成装置に関するものである。
【背景技術】
【０００２】
特許文献１には、表示の解像度変換回路について示されており、また、この中でアドレス生成回路についても説明されている。特許文献１に示されているアドレス生成回路では、表示のＸ及びＹ座標に対応してＸアドレスとＹアドレスを個別に生成している。そして、このＸアドレスとＹアドレスを個別に表示用メモリに供給している。Ｘアドレス及びＹアドレスは表示メモリから表示データを読み出すクロックに同期して変化し、Ｙ方向の解像度変換はＹアドレスに小数部を持たせることで実現している。Ｘ方向の解像度変換は表示メモリから一度取り出したデータを、読み出しクロックとは異なるクロックでサンプリングすることで実現している。
【０００３】
特許文献２に記載された表示制御装置は、表示メモリのアドレスを発生する部分として、先頭アドレス発生回路とアドレスカウンタとを備え、画像を垂直方向に拡大する場合にアドレス発生のための基準信号を間引く部分として間引き用カウンタを備え、間引き用カウンタのリセットタイミングを奇数ラインと偶数ラインとで１水平走査ラインだけ変化させるものである。これにより、直方向の拡大画像において、斜めの細線のギザギザがぼやけ、スムーズな垂直方向の拡大画像が得られる。
【０００４】
特許文献３には、表示位置アドレスを２回ずつ同じアドレスになるように変換し、同じデータを２行に渡って表示することにより、文字の縦倍角を表示可能とする液晶表示制御装置が記載されている。
【０００５】
特許文献４には、ディスプレイ画面のマウスカーソル位置の周辺を拡大出力させる出力イメージ変形方式が記載されている。特許文献４では、アドレス変換リストを複数用意しておき、マウスカーソルの移動に基づいてアドレス変換リストを変更させることにより、画像イメージの変形が変化していくことを可能としている。
【０００６】
【特許文献１】特開平５−１５８４６４号公報
【特許文献２】特開平６−３０１３７３号公報
【特許文献３】特開２０００−５６７３５号公報
【特許文献４】特開２０００−１０７０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に示された方法では、ＸアドレスとＹアドレスの２個のアドレスで管理するため、通常のメモリアクセス向けに1次元のメモリアドレスが必要となる場合には、ＸアドレスとＹアドレスから１次元のメモリアドレスを生成する手段が必要となる。この際、Ｘアドレスの範囲が２の整数乗で示される場合には、１次元構成であるメモリアドレスのビットフィールドにＸアドレスとＹアドレスを割り当てれば良い。しかし、Ｘ方向の画素数が２の整数乗ではない場合、表示用メモリの無駄を抑制するには、Ｘアドレスの範囲をＸ方向の画素数に合わせる必要がある。このような場合、ＸアドレスとＹアドレスから１次元のメモリアドレスを生成するには乗算器が必要となり、アドレス生成に必要な回路規模が大きくなる。また、乗算器は加算器より動作が遅くなり、高速動作を必要とする回路を設計する上でも不利となる。
【０００８】
また、特許文献１に示された方法ではメモリから読み出した表示データを、アドレス生成やメモリアクセスに用いたクロックとは別のクロックを使用してサンプリングを行い解像度変換するため、システム構成を変更する上で不便である。
【０００９】
また、特許文献２には、垂直方向の拡大画像において、斜めの細線のギザギザがぼやけ、スムーズな垂直方向の拡大画像が得られる技術が開示されているが、垂直方向にも水平方向にも拡大、縮小させる技術は示されていない。
【００１０】
また、特許文献３には、表示位置アドレスを２回ずつ同じアドレスになるように変換することは記載されているが、アドレスの生成方法の詳細については記載されておらず、また、縦２倍角以外の表示については一切考慮されていない。
【００１１】
また、特許文献４には、アドレス変換リストを複数用意しておき、それを用いてカーソル位置の周辺を拡大表示させることは記載されているが、アドレス変換リストを作成する具体的方法は記載されていない。
【００１２】
本発明の目的は、集積回路に実装する際の実装面積や動作速度の点で不利である乗算器を使用せず、加算器とカウンタで必要なアドレスを発生することが可能となるアドレス生成装置を含むシステムおよびそのアドレス生成装置を提供することである。
【課題を解決するための手段】
【００１３】
次のアドレスを計算するために複数用意した値からある値を選択して加算する部分と、加算する値の選択を制御する信号を生成する部分を用意する。加算する値の選択を制御する部分には複数のカウンタを用意し、これらカウンタの値により加算する値を選択する。
【発明の効果】
【００１４】
集積回路に実装する際の実装面積や動作速度の点で不利である乗算器を使用せず、加算器とカウンタで必要なアドレスを発生することが可能となるアドレス生成装置を含むシステムおよびそのアドレス生成装置を得ることができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態を詳細に説明する。なお、実施の形態を説明するための全図において、同一のものには同一符号を付け、その繰り返しの説明は省略する。
【００１６】
図１に、この発明のアドレス生成装置を含むシステムのアドレス生成装置の第１の実施の形態の構成例を示す。なお、この発明のアドレス生成装置を含むシステムの実施の形態については後述する。
【００１７】
図１に示すように、第１の実施の形態のアドレス生成装置は、アドレス更新部１０とアドレス増分選択部２０とを備える。アドレス更新部１０はアドレスの増分を加算することによりアドレスを更新し、アドレス増分選択部２０は各々の初期値を独立して設定可能である複数のカウンタを有し、これらのカウンタの値によりアドレス更新部１０が加算するアドレスの増分を選択する。
【００１８】
まず、第１の実施の形態のアドレス生成装置のアドレス更新部１０について説明する。図１に示すように、アドレス更新部１０は、開始アドレスレジスタ１０１、加算器１０２、およびアドレスカウンタ１０３を有する。
【００１９】
開始アドレスレジスタ１０１は開始アドレスを保持するレジスタで、解像度変換等、表示データの処理を行う際には、表示データを格納したフレームバッファ領域の先頭アドレスを設定する。開始アドレスレジスタ１０１は、必要な場合には、小数点以下のアドレスを保持できる構成にする。解像度変換に適用する際には、主走査方向（水平方向）の解像度変換を行う場合、表示開始位置の微調整を行うために、小数点以下のアドレスを保持することが必要なことがある。
【００２０】
アドレスカウンタ１０３は、現在のアドレスを保持するレジスタで、必要な場合には、小数点以下のアドレスも保持できる構成にする。解像度変換に適用する際には、主走査方向（水平方向）の解像度変換を行う場合、小数点以下のアドレスを保持する必要なことがある。
【００２１】
加算器１０２はアドレスカウンタ１０３の値とアドレス増分選択部２０のいずれかのステップレジスタの値を加算し、次のアドレスを計算する。
【００２２】
次に、第１の実施の形態のアドレス生成装置のアドレス増分選択部２０について説明する。図１に示すように、アドレス増分選択部２０は、ステップレジスタＡ（１１１）、ステップレジスタＢ１（１２１）、ステップレジスタＢ２（１２２）、初期値レジスタＡ（２０１）、カウントレジスタＡ（２０２）、０検出器Ａ（２１０）、初期値レジスタＢ（３０１）、カウントレジスタＢ（３０２）、０検出器Ｂ（３１０）、および条件判定器Ｂ（３２０）を有する。
【００２３】
ステップレジスタＡ（１１１）、ステップレジスタＢ１（１２１）、ステップレジスタＢ２（１２２）はアドレスの増分を保持するレジスタであり、前記アドレスカウンタ１０３が小数点以下を保持する場合は、それに対応して小数点以下のアドレスも保持できる構成にする。ステップレジスタＡ（１１１）、ステップレジスタＢ１（１２１）、ステップレジスタＢ２（１２２）は符号を保持しており、負の値も指定可能とする。
【００２４】
初期値レジスタＡ（２０１）は、カウントレジスタＡ（２０２）の初期値を保持する。０検出器Ａ（２１０）はカウントレジスタＡ（２０２）の値が０であることを検出する。カウントレジスタＡ（２０２）は０検出器Ａ（２１０）が０を検出すると、初期値レジスタＡ（２０１）から初期値をロードする。それ以外の場合は、値を１ずつ減少する。この初期値はカウントレジスタＡ（２０２）のカウント周期を指定する。
【００２５】
なお、この実施の形態では、０検出器で０を検出しているが、０検出器の代わりに、特定の値を検出する検出器を用い、その検出器がカウントレジスタＡ（２０２）の値が特定の値になったことを検出した場合に、初期値レジスタＡ（２０１）から初期値をロードし、それ以外の場合は、値を１ずつ減少するようにしてもよい。また、１ずつ減少する代わりに１ずつ増加するようにしてもよく、また、１ずつではなく、複数のカウント値ずつ減少または増加するようにしてもよい。これらは、この実施の形態の以下の記載、および、他の実施の形態においても同様である。
【００２６】
初期値レジスタＢ（３０１）は、カウントレジスタＢ（３０２）の初期値を保持する。０検出器Ｂ（３１０）はカウントレジスタＢ（３０２）の値が０であることを検出する。カウントレジスタＢ（３０２）は、０検出器Ａ（２１０）が０を検出した場合のみ更新する。更新する際には、０検出器Ｂ（３１０）が０を検出していると、初期値レジスタＢ（３０１）より初期値をロードし、それ以外の場合には値を１ずつ減少する。
【００２７】
条件判定器Ｂ（３２０）はカウントレジスタＢ（３０２）の値がある条件に当てはまるか検出する。
【００２８】
アドレスカウンタ１０３は０検出器Ａ（２１０）及び０検出器Ｂ（３１０）が共に０を検出している場合、開始アドレスレジスタ１０１から初期値をロードする。０検出器Ａ（２１０）が０検出していない場合、アドレスカウンタ１０３に保持されている現在のアドレスとステップレジスタＡ（１１１）の値を加算した値で更新される。０検出器Ａ（２１０）が０検出しており、０検出器Ｂ（３１０）が０検出していない場合、条件判定器Ｂ（３２０）の出力により、アドレスカウンタ１０３に保持されている現在のアドレスと、ステップレジスタＢ１（１２１）またはステップレジスタＢ２（１２２）のいずれかの値とを加算した値で更新される。
【００２９】
図２に、図１の条件判定器（３２０）の内部構成例を示す。条件判定器Ｂ（３２０）にはカウント値がカウントレジスタＢ（３０２）から供給される。この際、カウント値のＬＳＢ側の１ビットあるいは数ビットのみを条件判定器Ｂ（３２０）に供給する構成も考えられる。条件判定器Ｂ（３２０）に入力されたカウント値はビットリバース装置３２１によりビットの並びを反転され、比較器３２３へ送られる。比較器３２３は比較値レジスタ３２２に設定されているレジスタと大小判定を行い、この結果を条件判定結果とする。カウント値をビットの並びを反転してから比較することで、カウント値の変化に伴う条件判定結果の変化が生じやすくなる。例えば、カウント値の下位４ビットを条件判定に用いる場合、比較値レジスタ３２２に８を設定することで、条件判定結果出力はカウント値が１減少する度に反転する。
【００３０】
ビットリバース装置３２１はビットリバースを行う装置であり、入力されたビットの並びを反転させて出力する。例えば、４桁の２進数ＰＱＲＳがビットリバース装置３２１に入力されたとすると、その出力は２進数ＳＲＱＰである。ここで、Ｐ、Ｑ、Ｒ、Ｓはそれぞれ０又は１である。したがって、ビットリバース装置３２１に順次入力されるカウント値が、例えば、１１１１、１１１０、１１０１、１１００、１０１１、・・・であるとすると、ビットリバース装置３２１の出力は、１１１１、０１１１、１０１１、００１１、１１０１、・・・となる。比較レジスタ３２２に１０進数の８、つまり２進数の１０００、を設定すると、比較器３２３の出力はカウント値が１減少する度に反転する。
【００３１】
図３は、この発明のアドレス生成装置を含むシステムの具体例である表示装置において、表示の解像度変換を行う際の一例として、ラインデータのメモリ上での配置と表示画面上での表示位置の関係を示す図である。図４は、図３に示した例に対応して、実施の形態のアドレス生成装置の動作を説明する図である。
【００３２】
図３及び図４を用いて、画面を縦方向に２倍に拡大する場合の例について、アドレス生成装置の設定及び動作を説明する。この例では横方向が主走査方向であり、縦方向が副走査方向となっている。
【００３３】
図３に示した例は、外部メモリ４３５０にフレームバッファ領域を３００００００Ｈから用意し、各ラインデータ領域として８００Ｈバイトずつの領域を割り当てている。フレームバッファ内のデータは１バイトで１ピクセルを表現している。これを横１２８０ピクセル、縦２ｎピクセルの表示画面に縦方向２倍拡大表示する。
【００３４】
各ラインデータ領域の先頭は、外部メモリ４３５０がＳＤＲＡＭ等で構成されることを考慮し、メモリアクセス時のデータ転送効率を考え、８００Ｈの倍数となるアドレスとした。但し、データ転送効率よりデータ領域の大きさが重要である場合には、ラインデータ領域間に間隔を設けない場合も考えられる。
【００３５】
図３に示すように、ラインデータ１（４１）は表示画面のライン１（５１）及びライン２（５２）の表示に用い、ラインデータ２（４２）は表示ライン３（５３）及び表示ライン４（５４）の表示に用いることで、フレームバッファの内容を縦方向に２倍表示する。
【００３６】
以上のような表示を行う場合、アドレス生成装置に次のような設定を行う。開始アドレスレジスタ１０１にはフレームバッファの開始アドレスである３００００００Ｈを設定する。ステップレジスタＡ（１１１）には横方向には拡大縮小せず、また１バイトが１ピクセルに対応するため１を設定する。ステップレジスタＢ１（１２１）には１ラインデータに含まれるバイト数から１を引き、符号を反転した値、すなわち−１２７９を設定する。ステップレジスタＢ２（１２２）にはラインデータ間隔すなわち８００Ｈ、１０進数で２０４８から、１ラインデータに含まれるバイト数１２８０から１を引いた値１２７９を差し引いた値、すなわち７６９を設定する。初期値レジスタＡ（２０１）には１ラインのピクセル数から１を引いた値１２７９を設定し、初期値レジスタＢ（３０１）には表示するライン数から１を引いた（２ｎ−１）を設定する。条件判定器Ｂ（３２０）はカウントレジスタＢ（３０２）のＬＳＢが１であればアドレスの加算値としてステップレジスタＢ１（１２１）を選択し、ＬＳＢが０であればステップレジスタＢ２（１２２）を選択するよう設定する。
【００３７】
図４を用いて、上記設定時のアドレス生成順序を説明する。
まず、初期値状態ではカウントレジスタＡ（２０２）及びカウントレジスタＢ（３０２）が０であり、アドレスカウンタ１０３に開始アドレスレジスタ１０１の内容がロードされ、カウントレジスタＡ（２０２）に初期値レジスタＡ（２０１）の内容がロードされ、カウントレジスタＢ（３０２）に初期値レジスタＢ（３０１）の内容がロードされる。したがって、アドレスカウンタ１０３はフレームバッファの先頭アドレス、すなわちラインデータ１（４１）の最初のピクセルデータの存在するアドレスとなり、ライン１ピクセル１（９５１１）の表示に対応するデータを指す。ライン１（５１）を表示する期間、アドレスカウンタ１０３はステップレジスタＡ（１１１）でした増分でラインデータ１（４１）を順にアクセスするのに必要なアドレスを生成する。
【００３８】
ラインデータ１（４１）を全てアクセスし、アドレスカウンタ１０３がライン１ピクセル１２８０（９５１９）の表示に対応するデータを指すと、カウントレジスタＡ（２０２）が０となる。この時点では、カウントレジスタＢ（３０２）はまだ（２ｎ−１）であるので、カウントレジスタＢ（３０２）の値のＬＳＢは１であり、アドレスカウンタ１０３の増分としてステップレジスタＢ１（１２１）の値が選択される。そして、アドレスカウンタ１０３はラインデータ１（４１）の先頭アドレスに戻る。これと同時にカウントレジスタＡ（２０２）には初期値レジスタＡ（２０１）から値がロードされ、カウントレジスタＢ（３０２）の値が１減少する。
【００３９】
ライン２（５２）を表示する期間は、ライン１（５１）を表示する期間と同様に順にアドレスを生成する。ライン２（５２）の表示としてラインデータ１（４１）を全てアクセスし、ライン２ピクセル１２８０（９５２９）の表示に対応するデータを指すと、カウントレジスタＡ（２０２）が０となる。今回は、カウントレジスタＢ（３０２）はまだ（２ｎ−２）であり、カウントレジスタＢ（３０２）の値のＬＳＢは０であるので、アドレスカウンタ１０３の増分としてステップレジスタＢ２（１２２）の値が選択される。そして、アドレスカウンタ１０３はラインデータ２（４２）の先頭アドレスに更新される。これと同時にカウントレジスタＡ（２０２）には初期値レジスタＡ（２０１）から値がロードされ、カウントレジスタＢ（３０２）の値が１減少する。
【００４０】
上記動作を繰り返し、ライン２ｎのピクセル１２８０（９６０９）の表示に対応するデータを指すと、カウントレジスタＡ（２０２）及びカウントレジスタＢ（３０２）が０となる。したがって、初期状態に戻り、アドレスカウンタ１０３は再びフレームバッファの先頭アドレス、すなわちラインデータ１（４１）の最初のピクセルデータ、ライン１ピクセル１（９５１１）の表示に対応するデータを指す。
【００４１】
上記動作では、ステップレジスタＢ１（１２１）と初期値レジスタＡ（２０１）には符号のみ異なる値を指定した。すなわち、縦方向２倍表示のように、あるラインデータを複数回表示する用途では、ステップレジスタＢ１（１２１）と初期値レジスタＡ（２０１）を共用し、内部で符号のみ反転して取り扱うアドレス生成装置の構成も考えられる。
【００４２】
縦方向を縮小する場合には、例えば３分の２倍する際には、ステップレジスタＢ１（１２１）は１ライン分のデータアクセス完了後、アドレスカウンタ１０３が次のラインデータ先頭を指すように設定し、ステップレジスタＢ２（１２２）は１ライン分のデータアクセス完了後、アドレスカウンタ１０３が次の次のラインデータ先頭を指すよう設定し、初期値レジスタＢ（３０１）等を適切に設定すれば対応可能である。
【００４３】
横方向の縮小が必要な場合、例えば２分の１に縮小する際には、ステップレジスタＡ（１１１）に２を設定し、初期値レジスタＡ（２０１）等を適切に設定すれば対応可能である。
【００４４】
横方向の拡大に対応するには、ステップレジスタＡ（１１１）、ステップレジスタＢ１（１２１）、ステップレジスタＢ２（１２２）、アドレスカウンタ１０３に小数点以下を保持する機能が必要となる。また、開始アドレスレジスタ１０１も小数点以下を保持できた方が便利である。この場合、アドレスカウンタ１０３の整数部をメモリアドレスとして使用する。横方向の拡大の例として、２倍に拡大する場合には、ステップレジスタＡ（１１１）に０．５を設定し、初期値レジスタＡ（２０１）等を適切に設定すれば対応可能である。
【００４５】
アドレスカウンタ１０３からメモリアドレスを取り出す際、アドレスカウンタの小数部の有無にかかわらず、下位ビットをマスクする機能を持つことで、１ピクセル当たりのデータ量が１バイトでない場合にも対応可能である。例えば、１ピクセル当たり４バイトのデータで構成する場合、整数部の下位２ビットもマスクすることで対応可能である。
【００４６】
横方向に拡大縮小することがなく、また１ピクセル当たりのデータ量も固定である場合、ステップレジスタＡ（１１１）の値は一意に決定可能である。したがって構成よっては、ステップレジスタＡ（１１１）を用意せず、代わりに固定値を使用する場合も考えられる。
【００４７】
なお、ステップレジスタＡ（１１１）、ステップレジスタＢ１（１２１）、ステップレジスタＢ２（１２２）、初期値レジスタＡ（２０１）、初期値レジスタＢ（３０１）の設定等により、走査方向とは逆に、アドレス生成することにより、上下および／または左右を反転させた画像を表示することが可能である。
【００４８】
図５に、この発明のアドレス生成装置を含むシステムの実施の形態を示す。また、図６に、図５のＤＭＡ制御装置（ダイレクトメモリアクセス制御装置）１０００の内部構成の例を示す。
図５及び図６を用いて、この発明のアドレス生成装置を含むシステムの実施の形態を説明する。
【００４９】
プロセッサ４１００はマイクロプロセッサやデジタルシグナルプロセッサであり、演算処理やシステム制御を行う。内部メモリ４２００はシステムバス４０００に直結されており、数Ｋバイトから１Ｍバイト程度と比較的小容量ではあるが、プロセッサ４１００やＤＭＡ制御装置１０００から高速にアクセス可能なメモリである。
【００５０】
メモリ制御装置４３００は、プロセッサ４１００やＤＭＡ制御装置１０００の外部メモリ４３５０アクセス要求に従い、外部メモリ４３５０を制御する。また、外部メモリ４３５０に存在するフレームバッファから表示データを取り出し、表示データパス５５００経由で表示制御装置５２００へ送ることも可能である。外部メモリ４３５０は数Ｍバイトから１Ｇバイト程度と比較的大容量のメモリであり、例えばＳＤＲＡＭやＤＤＲ−ＳＤＲＡＭで構成する。
【００５１】
各種Ｉ／Ｏ装置５１００はシリアルインタフェースやパラレルインタフェース、オーディオインタフェース等の入出力インタフェースである。
【００５２】
表示制御装置５２００はＩ／Ｏバス５０００や表示データパス５５００経由でフレームバッファ内のデータを受け取り、画面表示に必要な同期信号等を付加して、表示装置へ出力する。表示制御装置５２００はＤＭＡ制御装置１０００経由で表示データを受け取ることも、メモリ制御装置４３００から表示データパス５５００経由で直接表示データを受け取ることも可能である。
【００５３】
バスブリッジ１８００はシステムバス４０００とＩ／Ｏバス５０００のブリッジであり、プロセッサ４１００が各種Ｉ／Ｏ装置５１００や表示制御装置５２００にアクセスするために使用する。
【００５４】
ＤＭＡ制御装置１０００は内部メモリ４２００及び外部メモリ４３５０に存在するデータの転送や、内部メモリ４２００または外部メモリ４３５０と、各種Ｉ／Ｏ装置５１００または表示制御装置５２００の間でのデータ転送を行う。
【００５５】
図６に、図５のＤＭＡ制御装置１０００の内部構成例を示す。
ＤＭＡ制御装置１０００の内部には、システムバス４０００に接続するためのシステムバスインタフェース１４００とＩ／Ｏバス５０００に接続するためのＩ／Ｏバスインタフェース１５００が存在する。システムバスインタフェース１４００及びＩ／Ｏバスインタフェース１５００は共にバッファメモリ１３００に接続されている。システムバスインタフェース１４００またはＩ／Ｏバスインタフェース１５００から入力されたデータは一度バッファメモリ１３００に蓄積され、適当なデータ量の単位でシステムバスインタフェース１４００またはＩ／Ｏバスインタフェース１５００経由でそれぞれのバスに出力される。
【００５６】
Ｉ／Ｏアドレスレジスタ１６００は、ダイレクトメモリアクセス転送時にＩ／Ｏバス５０００側の装置や装置内に存在するＩ／Ｏレジスタを特定するアドレスを保持する。
【００５７】
アドレス生成装置Ａ（１１００）及びアドレス生成装置Ｂ（１２００）は内部メモリ４２００または外部メモリ４３５０のアクセスに必要なアドレスを生成する。アドレス生成装置Ａ（１１００）及びアドレス生成装置Ｂ（１２００）には、この発明のアドレス生成装置を用いる。但し、システム構成によっては、片方のアドレス生成装置に別の形式のアドレス生成装置を用いることも考えられる。
【００５８】
ＤＭＡ制御装置１０００により、メモリ−メモリ間転送を行う場合には、アドレス生成装置Ａ（１１００）、アドレス生成装置Ｂ（１２００）両方のアドレス生成装置を使用し、それぞれのアドレス生成装置で転送元と転送先のアドレスを生成する。
【００５９】
ＤＭＡ制御装置１０００により、メモリ−Ｉ／Ｏ間転送を行う場合には、アドレス生成装置Ａ（１１００）またはアドレス生成装置Ｂ（１２００）いずれかのアドレス生成装置を使用しメモリアドレスを生成し、Ｉ／Ｏアドレスレジスタ１６００で示されるＩ／Ｏ装置とデータ転送を行う。Ｉ／Ｏレジスタ１６００の設定により、データ転送先として表示制御装置５２００の表示データ入力を指定可能である。
【００６０】
図５に示すシステムで、外部メモリ４３５０にフレームバッファ領域を用意し、その領域に存在する表示データの解像度変換を行い表示制御装置５２００に出力する場合、表示データをＩ／Ｏバス５０００から受け取るように表示制御装置５２００を設定し、ＤＭＡ制御装置１０００はメモリ−Ｉ／Ｏ間転送を設定するよう設定し、ＤＭＡ制御装置１０００内のアドレス生成装置の設定を先に示した方法で行う。
【００６１】
図５に示すシステムでは、ＤＭＡ制御装置１０００にこの発明のアドレス生成装置が存在するので、フレームバッファ領域をメモリ上に２個用意し、ＤＭＡ制御装置１０００でメモリ−メモリ間転送を行えば、表示装置での表示を伴わない場合でも、メモリ内部に解像度変換を施した画像を生成可能である。
【００６２】
さらに図５に示すシステムでは、内部メモリ４２００を用意してあるので、外部メモリ４３５０に用意したフレームバッファ領域を複数の領域に分割し、プロセッサ４１００で画像処理を施す順序に従って、処理に必要な領域から予めＤＭＡ制御装置１０００で内部メモリ４２００に転送することで、プロセッサ４１００が処理を施す際に必要なメモリアクセス時間の影響による速度低下を抑制できる。この際には、プロセッサ４１００が処理を施す前のデータ転送時に解像度変換を施すことも可能である。また、プロセッサ４１００が内部メモリ４２００に処理結果を書き込み、ＤＭＡ制御装置１０００で適宜結果を外部メモリ４３５０に出力すれば、プロセッサ４１００が処理を施した結果に解像度変換を施して外部メモリ４３５０に書き込むことも可能である。
【００６３】
図５に示すシステムでは表示データパス５５００を使用してＤＭＡ制御装置１０００を介さずに表示データを表示制御装置５２００に供給可能である。表示データパス５５００を用いることで、表示装置へ画像を出力する際に、システムバス４０００やＩ／Ｏバス５０００の負荷を抑制できる。しかし、ＤＭＡ制御装置１０００を利用しないので、解像度変換は行えない。そこで、システム構成によっては、この発明のアドレス生成装置をメモリ制御装置４３００や表示制御装置５２００内にこの発明のアドレス生成装置を用意し、表示データパス５５００経由での表示データ転送時にも解像度変換を可能にすることもあり得る。例えば、メモリ制御装置４３００にこの発明のアドレス生成装置を用意すれば、表示装置出力用のフレームバッファアクセス時のアドレス生成をメモリ制御装置４３００で行い、メモリ制御装置４３００は生成したアドレスを元に外部メモリ４３５０にアクセスして、読み出した表示データを表示データパス５５００経由で表示制御装置５２００に送ることで、表示データパス５５００経由でも解像度変換を施した画像を表示装置へ出力可能となる。
【００６４】
図７に、この発明のアドレス生成装置を含むシステムのアドレス生成装置の第２の実施の形態の構成例を示す。
【００６５】
図７に示す第２の実施の形態のアドレス生成装置では、図１に示した第１の実施の形態であるアドレス生成装置の条件判定器Ｂ（３２０）の代わりに、別途カウンタを追加した構成となっており、ステップレジスタＢ１（１２１）とステップレジスタＢ２（１２２）の選択は追加したカウンタであるカウントレジスタＢＳ（３５２）により行う。すなわち、カウントレジスタＢＳ（３５２）の値を０検出器ＢＳ（３６０）で０であるか否か確認し、その結果を元にステップレジスタＢ１（１２１）またはステップレジスタＢ２（１２２）の選択を行う。
【００６６】
初期値レジスタＢＳ（３５１）は、カウントレジスタＢＳ（３５２）の初期値を保持する。カウントレジスタＢＳ（３５２）は、０検出器Ａ（２１０）が０を検出した場合のみ更新する。更新する際には、０検出器Ｂ（３１０）または０検出器ＢＳ（３６０）が０を検出していると、初期値レジスタＢＳ（３５１）より初期値をロードし、それ以外の場合には値を１ずつ減少する。
【００６７】
図３及び図４を用いて説明した縦方向２倍拡大に必要なアドレス生成を図７に示すアドレス生成装置で行うには、基本的に図１に示したアドレス生成装置と同様の設定を行い、初期値レジスタＢＳ（３５１）に１を指定すれば実現可能である。
【００６８】
図７に示すアドレス生成装置の構成であっても基本的に図１に示したアドレス生成装置と同様の設定を行うため、縦方向２倍表示のように、あるラインデータを複数回表示する用途では、ステップレジスタＢ１（１２１）と初期値レジスタＡ（２０１）を共用し、内部で符号のみ反転して取り扱うアドレス生成装置の構成も考えられる。
【００６９】
図８に、この発明のアドレス生成装置を含むシステムのアドレス生成装置の第３の実施の形態の構成例を示す。
【００７０】
図８に示す第３の実施の形態のアドレス生成装置では、図１に示した第１の実施の形態であるアドレス生成装置の条件判定器Ｂ（３２０）の代わりに、図７に示したアドレス生成装置の第２の実施の形態とは異なる方法で別途カウンタを追加した構成となっている。
【００７１】
図７に示したアドレス生成装置では追加したカウンタであるカウントレジスタＢＳ（３５２）は、カウントレジスタＢ（３０２）と基本的に同期して動作している。しかし図８に示すアドレス生成装置では、追加したカウントレジスタＣ（４０２）は０検出器Ａ（２１０）及び０検出器Ｂ（３１０）が共に０検出した際にのみ変化する。すなわち、３次元アドレス生成装置の構成となっている。
【００７２】
カウントレジスタＣ（４０２）が変化する際には、０検出器Ｃ（４１０）が０を検出していれば、初期値レジスタＣ（４０１）から初期値をロードし、それ以外の場合には値が１ずつ減少する。
【００７３】
図１でアドレスカウンタ１０３の増分値を指定したステップレジスタＢ１（１２１）及びステップレジスタＢ２（１２２）は、図８ではステップレジスタＢ（１２３）及びステップレジスタＣ（１３１）に置き換わっている。
【００７４】
アドレスカウンタ１０３は０検出器Ａ（２１０）、０検出器Ｂ（３１０）及び０検出器Ｃ（４１０）が共に０を検出している場合、開始アドレスレジスタ１０１から初期値をロードする。０検出器Ａ（２１０）が０検出していない場合、アドレスカウンタ１０３に保持されている現在のアドレスとステップレジスタＡ（１１１）の値を加算した値で更新される。０検出器Ａ（２１０）が０検出しており、０検出器Ｂ（３１０）が０検出していない場合、アドレスカウンタ１０３は現在のアドレスとステップレジスタＢ（１２３）の値を加算した値で更新される。０検出器Ａ（２１０）及び０検出器Ｂ（３１０）が０検出しており、０検出器Ｃ（４１０）が０検出していない場合、アドレスカウンタ１０３は現在のアドレスとステップレジスタＣ（１３１）の値を加算した値で更新される。
【００７５】
図８のアドレス生成装置を用いて図３及び図４用いて説明した縦方向２倍拡大に必要なアドレス生成を行うには、次のような設定を行う。開始アドレスレジスタ１０１にはフレームバッファの開始アドレスである３００００００Ｈを設定する。ステップレジスタＡ（１１１）には横方向には拡大縮小せず、また１バイトが１ピクセルに対応するため１を設定する。ステップレジスタＢ（１２３）には１ラインデータに含まれるバイト数から１を引き、符号を反転した値、すなわち−１２７９を設定する。ステップレジスタＣ（１３１）にはラインデータ間隔すなわち８００Ｈ、１０進数で２０４８から、１ラインデータに含まれるバイト数１２８０から１を引いた値１２７９を差し引いた値、すなわち７６９を設定する。初期値レジスタＡ（２０１）には１ラインのピクセル数から１を引いた値１２７９を設定し、初期値レジスタＢ（３０１）には２表示ラインに１回次のラインデータのアドレスにアドレスカウンタを更新する必要があるので２から１を引いた１を設定する。初期値レジスタＣ（４０１）はカウントレジスタＣ（４０２）が２表示ラインに１回更新されるので、表示するライン数の半分の値から１を引いた（ｎ−１）を設定する。
【００７６】
図８に示すアドレス生成装置の構成でも、縦方向２倍表示のように、あるラインデータを複数回表示する用途では、ステップレジスタＢ（１２３）と初期値レジスタＡ（２０１）を共用し、内部で符号のみ反転して取り扱うアドレス生成装置の構成も考えられる。
【００７７】
図７及び図８に示したアドレス生成装置も、図１に示したアドレス生成装置のカウンタ構成を変更しただけであり、図１と同様に図５に示したシステム等に適用可能である。また、図１、図７及び図８いずれのアドレス生成装置も論理設計時に同期設計が可能である構成であるので、ＤＭＡ制御装置やメモリ制御装置などシステム構成上必要となる箇所に容易に導入可能である。
【００７８】
例えば、アドレス生成装置を構成する際、次のアドレスを計算するために複数用意した値からある値を選択して加算する部分と、加算する値の選択を制御する信号を生成する部分を用意する。加算する値の選択を制御する部分には複数のカウンタを用意し、これらカウンタの値により加算する値を選択する。表示データの解像度変換を行う際には、アドレス生成装置をＤＭＡ制御装置、メモリアクセス制御装置、表示制御装置等に内蔵し、アドレス生成結果に基づきメモリから表示データを取得する。取得したデータを表示装置でのピクセル表示タイミングに同期して順に出力する。
【００７９】
以上説明したように、本発明の実施の形態により、集積回路に実装する際の実装面積や動作速度の点で不利である乗算器を使用せず、加算器とカウンタで表示データの解像度変換に必要なアドレスを発生することが可能となる。アドレス生成装置の出力結果に従いメモリアクセスを行えば解像度変換が行えるため、ＤＭＡ制御装置やメモリ制御装置などシステム構成上必要となる箇所に解像度変換機能を容易に導入可能である。また、アドレス生成装置の設定次第で、画像解像度に依存せずフレームバッファ領域をメモリ内に密に配置した場合でも表示時に解像度変換を施すことが可能であり、メモリ容量に対する要求が厳しいシステムにも対応可能である。ＤＭＡ制御装置にこの発明のアドレス生成装置を適用すれば、フレームバッファの内容を拡大、縮小して表示することだけでなく、フレームバッファ間の転送時に解像度変換を行うことも可能となり、さらに画像処理時にフレームバッファからプロセッサが演算に必要とするデータを予め内部メモリに転送することでプロセッサを効率よく動作させることも可能となる。また、プロセッサが画像処理を行う前後に解像度変換を施すことも可能となる。メモリ制御装置や表示制御装置にこの発明のアドレス生成装置を適用すれば、メモリ制御装置と表示制御装置を表示用データパスで直結したシステムでも、表示時に解像度変換が可能となる。
【００８０】
なお、前記実施の形態の装置はハードウェアで構成した方が処理速度の点で有利であるが、前記実施の形態の装置の一部または全部をソフトウェアとコンピュータで構成してもよい。
【００８１】
以上、本発明者によってなされた発明を、前記実施の形態に基づき具体的に説明したが、本発明は、前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【００８２】
【図１】この発明のアドレス生成装置を含むシステムのアドレス生成装置の第１の実施の形態を示す構成例である。
【図２】第１の実施の形態のアドレス生成装置の条件判定器の内部構成例である。
【図３】この発明の実施の形態のアドレス生成装置を用いて表示の解像度変換を行う際の一例として、ラインデータのメモリ上での配置と表示画面上での表示位置の関係を示す図である。
【図４】図３に示した例に対応して、この発明の実施の形態のアドレス生成装置の動作を説明する図である。
【図５】この発明のアドレス生成装置を含むシステムの構成例である。
【図６】図５のＤＭＡ制御装置の内部構成の例である。
【図７】この発明のアドレス生成装置を含むシステムのアドレス生成装置の第２の実施の形態を示す構成例である。
【図８】この発明のアドレス生成装置を含むシステムのアドレス生成装置の第３の実施の形態を示す構成例である。
【符号の説明】
【００８３】
４１…ラインデータ１、４２…ラインデータ２、４３…ラインデータ３、４４…ラインデータ（ｎ−１）、４５…ラインデータｎ、５１…表示ライン１、５２…表示ライン２、５３…表示ライン３、５４…表示ライン４、５５…表示ライン５、５６…表示ライン６、５７…表示ライン（２ｎ−３）、５８…表示ライン（２ｎ−２）、５９…表示ライン（２ｎ−１）、６０…表示ライン（２ｎ）、１０１…開始アドレスレジスタ、１０２…加算器、１０３…アドレスカウンタ、１１１…ステップレジスタＡ、１２１…ステップレジスタＢ１、１２２…ステップレジスタＢ２、１２３…ステップレジスタＢ、１３１…ステップレジスタＣ、２０１…初期値レジスタＡ、２０２…カウントレジスタＡ、２１０…０検出器Ａ、３０１…初期値レジスタＢ、３０２…カウントレジスタＢ、３１０…０検出器Ｂ、３２０…条件判定器Ｂ、３２１…ビットリバース装置、３２２…比較値レジスタ、３２３…比較器、３５１…初期値レジスタＢＳ、３５２…カウントレジスタＢＳ、３６０…０検出器ＢＳ、４０１…初期値レジスタＣ、４０２…カウントレジスタＣ、４１０…０検出器Ｃ、１０００…ＤＭＡ制御装置、１１００…アドレス生成装置Ａ、１２００…アドレス生成装置Ｂ、１３００…バッファメモリ、１４００…システムバスインタフェース、１５００…Ｉ／Ｏバスインタフェース、１６００…Ｉ／Ｏアドレスレジスタ、１８００…バスブリッジ、４０００…システムバス、４１００…プロセッサ、４２００…内部メモリ、４３００…メモリ制御装置、４３５０…外部メモリ、５０００…Ｉ／Ｏバス、５１００…各種Ｉ／Ｏ装置、５２００…表示制御装置、９５１１…表示ライン１のピクセル１、９５１２…表示ライン１のピクセル２、９５１９…表示ライン１のピクセル１２８０、９５２１…表示ライン２のピクセル１、９５２２…表示ライン２のピクセル２、９５２９…表示ライン２のピクセル１２８０、９５３１…表示ライン３のピクセル１、９５３２…表示ライン３のピクセル２、９５３９…表示ライン３のピクセル１２８０、９５４１…表示ライン４のピクセル１、９５４２…表示ライン４のピクセル２、９５４９…表示ライン４のピクセル１２８０、９６０９…表示ライン２ｎのピクセル１２８０
【図１】
2005209060.tif 000003
【図２】
2005209060.tif 000004
【図３】
2005209060.tif 000005
【図４】
2005209060.tif 000006
【図５】
2005209060.tif 000007
【図６】
2005209060.tif 000008
【図７】
2005209060.tif 000009
【図８】
2005209060.tif 000010