JP2005022387A - 画像データ回転処理装置 - Google Patents

画像データ回転処理装置 Download PDF

Info

Publication number
JP2005022387A
JP2005022387A JP2003270919A JP2003270919A JP2005022387A JP 2005022387 A JP2005022387 A JP 2005022387A JP 2003270919 A JP2003270919 A JP 2003270919A JP 2003270919 A JP2003270919 A JP 2003270919A JP 2005022387 A JP2005022387 A JP 2005022387A
Authority
JP
Japan
Prior art keywords
bit
address
data
memory
image data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003270919A
Other languages
English (en)
Inventor
Akihiro Toku
昭裕 徳
Tsutomu Yamazaki
勉 山崎
Shunsuke Arita
俊介 有田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Information Technology Co Ltd
Original Assignee
Hitachi Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Information Technology Co Ltd filed Critical Hitachi Information Technology Co Ltd
Priority to JP2003270919A priority Critical patent/JP2005022387A/ja
Publication of JP2005022387A publication Critical patent/JP2005022387A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Record Information Processing For Printing (AREA)

Abstract

【課題】ビット選択処理を用いることにより、高速回転処理が可能な画像データ回転処理装置を供する。
【解決手段】jを1以上の整数とし,k,mを2以上の整数とし、n=km、L=jkとして、Lアドレス×nビットサイズの画像データを格納するメモリを有する画像データ回転処理装置。アドレス方向にk個単位、ビット幅方向にmビット単位でメモリに書込まれる画像データに対してkアドレス×mビットサイズのj×k個のブロックを設定して、アドレス方向の各ブロックのmビットデータk個を、アドレスの増加する方向とメモリのビット幅方向とを対応させてメモリの1アドレス分のnビットデータに配列変換して各ブロックをメモリの1アドレスに割当てて記憶する第1のmビットデータ配列変換手段と、mビット単位のデータを所定の回転角度の1アドレスnビットの配列データに変換して画像データを生成する第2のmビットデータ配列変換手段とを有する。
【選択図】図1

Description

この発明は、ディスプレイ装置あるいはプリンタ装置等のデータ出力装置に送出される画像データ、例えば、フォントデータ、1画面分の表示データまたは1ページ分の紙の印刷データ等の入力画像のビットデータに対して、0度、90度、180度、270度回転処理を行なって、ディプレイ装置に表示し、あるいはプリンタ装置のプリントバッファに記憶されてプリンタエンジンに出力される画像データの回転処理において、論理的な処理を低減しあるいは論理処理に換えてビット選択処理を用いることにより、高速回転処理が可能な画像データ回転処理装置に関する。
従来の画像データ回転処理装置としては、例えば、特開平7−262364号公報にフォントデータ(ビットデータ)を回転処理する技術が開示されている(特許文献1)。これに記載された装置においては、入力画像の各ビットデータをアドレス値分だけそれぞれにシフトさせてメモリの各アドレスに順次書込み、画像データ読出し時に回転角度に応じて必要な各ビットのアドレスを演算し、演算されたアドレスに従ってメモリからシフトとされた各ビットデータを読出し、さらに読出された各ビットデータを回転角度に応じてシフト回路でシフトするものである。なお、回転角度によってはビットアライン変換器でビット配列が反転されて、これらのことで求める回転画像の各ビットデータを得ている。
このとき、メモリに対する回転処理に応じた各ビットデータの読出アドレスは、シフトして書込む処理をする分だけ、演算処理が軽減されて簡単にアドレスが算出できる。
その結果、算出アドレス値に応じたビットデータのシフトによって、回転後のビットデータの生成が容易にできる利点がある。
特開平7−262364号公報
このようなシフト処理による画像データ回転処理装置では、メモリに書込む前と読出し時に、シフト回路によるシフト処理が必要になる。そのシフト処理は、16ビット単位のビットデータでは、場合により1ビットシフトから15ビットシフトまで必要になるため、論理回路を減らそうとするとスループットが低下する問題がある。
仮に、1シフトに、例えば、1マシンサイクル=25ns要するとすると、15ビットシフトだけで15×25=375ns要することになる。そのため、回転処理データ生成のスループットが低下する。
もしも、性能を上げて極力シフトに要する時間を減らそうとすると、それに反比例して論理回路が増大して、回路規模が大きくならざるを得ない。そのため、少ない論理回路で処理性能を上げることができない欠点がある。
この発明の目的は、このような従来技術の問題点を解決するものであって、論理的な処理を低減しあるいは論理処理に換えてビット選択処理を用いることにより、高速回転処理が可能な画像データ回転処理装置を供することである。
このような目的を達成する第1の発明の特徴は、jを1以上の整数とし,k,mを2以上の整数とし、n=km、L=jkとして、Lアドレス×nビットサイズの画像データを格納するメモリを有する画像データ回転処理装置において、
画像データのアドレス方向にk個単位、ビット幅方向にmビット単位でメモリに書込まれる画像データに対してkアドレス×mビットサイズのj×k個のブロックを設定して、アドレス方向の各ブロックのmビットデータk個を、アドレスの増加する方向とメモリのビット幅方向とを対応させてメモリの1アドレス分のnビットデータに配列変換して各ブロックをメモリの1アドレスに割当てて記憶する第1のmビットデータ配列変換手段と、メモリの各アドレスがアクセスされて配列変換された前記画像データが順次読出されたときに読出されたmビット単位のデータを所定の回転角度の1アドレスnビットの配列データに変換して画像データを生成する第2のmビットデータ配列変換手段とを有するものである。
また、第2の発明の特徴は、j=kとして、前記のアドレス方向もk個のブロックに分割して、前記のブロックをk×k個設け、前記メモリをk個のアドレスを持つnビット幅のk個のメモリに分割してそれぞれ設ける。そして、第1のmビットデータ配列変換手段は、メモリに書込まれる画像データにおけるkアドレスあるいはk−1アドレス分のnビットデータを記憶する記憶手段を有している。この記憶手段に記憶されたkアドレスあるいはk−1アドレス分+読出1アドレス分の画像データをmビットデータに分割して配列変換を行いk個の分割されたメモリのそれぞれの1アドレスに配列変換されたnビットビットデータを同時に記憶するものである。
前記の第1の発明によれば、画像データにおける、本来のk個のアドレス方向配置されるmビットデータがnビットのデータとしてメモリの各アドレスのビット幅方向に配列変換されて画像データ用のメモリに記憶されているので、1アドレスをアクセスするだけで、kアドレス分の各mビットデータを得ることができる。そこで、所定の回転角のビットマップを形成する際に1アドレスをアクセスしてmビット単位で0度あるいは180度回転のためのアドレス方向への配列変換処理をすることが容易にでき、あるいは、90度あるいは270度回転のためにビット幅方向への変換も容易にできる。
これにより、配列変換したmビットデータからnビットの回転処理後の配列ビットデータを高速に得ることができる。
前記の第2の発明によれば、画像メモリがk個のアドレスを持つnビット幅のメモリブロックあるいはバンクメモリに分割され、k個パラレルに設けられて構成される。これにより、分割された各メモリの1アドレスに同時に配列変換したk個のmビットデータをnビットデータとして記憶することができる。その結果、ブロックに対応する前記の配列変換が同時にできるので、さらに高速な処理が可能になる。
通常、90度、270度の各回転処理は、回転に応じて0度の時の各ビットがアドレス方向にある位置からビット幅方向あるいはその逆にビット幅方向からアドレス方向へと移動する。180度のときには、回転に応じて0度の時の各ビットが点対称となる位置に移動する。さらに、回転角度に応じて前後のビット入れ換えがある。
そこで、0度を基準とせずに、あらかじめk×m個のブロックに分けて各ブロックのmビット単位で90度の回転に近い状態になるように、メモリのアドレス方向のデータmビットをビット幅方向に移動させておいて、1アドレスのアクセスでアドレス方向に配列されるmビットデータを同時にk個読出せるようにして、回転中間状態で画像データをメモリに記憶する。
これにより、1アドレスのアクセスで複数アドレス方向のデータmビットが得られるので、1ビット対応にビット配列変換する場合よりも、90度、180度、270度のビット配列を得ることが容易になる。また、0度の場合にも配列変換を行うが、それは、各アドレスをアクセスしてビット幅方向のビットをアドレス方向のブロックへとブロック単位に移動させるだけで済むので、高速に元に戻すことが可能である。
その結果、メモリに書込む前と読出し時のシフト処理が不要となり、アドレス演算も行わなくて済むために、論理的な処理が低減され、あるいは論理処理に換えてビット選択処理を用いることにより、高速処理ができる画像データ回転処理装置を実現できる。
この発明の実施例としては、n×nビットサイズの画像データを格納するnビット×mアドレスから成るメモリをm個設ける。そして、n×nビットサイズの画像データをm×mビットサイズのn個のブロックに分ける。なお、アドレス方向に行を採り、ビット幅方向に列を採って、n行、n列のブロックとして以下説明する。
ここで、画像データに設定されるブロックをアドレス方向に対してビット幅方向を優先させて1からj×kの順位付けをした場合において、このn個のブロックの内の、1行目の1番目のブロックのnビットのデータを1番目のメモリの1番目のアドレスで示される領域に書込み、2番目のブロックのnビットのデータを2番目のメモリの1番目のアドレスで示される領域に書込み、以下同様にしてk番目のメモリの1番目のアドレスで示される領域への書込みまで行なう。
これにより、n×n個のブロックを設定した画像データの最初の1行目のビット幅方向にあるブロックのmビットデータがメモリにmアドレスおきに1アドレス対応に記憶される。
次に、k+1番目のブロックのnビットのデータを2番目のメモリの2番目のアドレスで示される領域に書込み、k+2番目のブロックのnビットのデータを3番目のメモリの2番目のアドレスで示される領域に書込み、以下同様にして2k番目のブロックのnビットのデータを1番目のメモリの2番目のアドレスで示される領域への書込みまで行なう。これにより、画像データの第2行目のビット幅方向にあるブロックのmビットデータがメモリにmアドレスおきに1アドレス対応に記憶される。
さらに、2k+1番目のブロックのnビットのデータを3番目のメモリの3番目のアドレスで示される領域に書込み、以下同様にして書込むメモリとそのアドレスを一つずつずらして行きn番目のブロックまですべて書込んで行く。これにより、画像データの第3行目以降のビット幅方向にあるブロックのmビットデータがメモリにmアドレスおきに1アドレス対応に記憶される。
このようにして、画像データに設定した各ブロックのmビットデータをメモリの1アドレスに割当てて記憶していく。
ここで、2行目以降のブロックをシフトさせて、分割されたn個の各メモリのアドレスの増加に従って先頭ブロックを増加分に対応して順次分割された次のメモリに繰下げかつ分割された最後のメモリの次は分割された最初のメモリへと循環させてシフトさせて割当ててブロックのmビットデータを記憶する。このようにすることで、アドレス方向に配列される各ブロックのmビットデータをn個に分けたメモリから同時に読出すことが可能になる。
また、次に説明する実施例では、分割したmビットデータを効率よく、メモリの1アドレスに割付記憶するために、nビット幅の入力バッファを“m−1”個設けてある。そして、nビットからmビットを選択するメモリ書込み用のマルチプレクサをn個設けてある。
さらに、以下の実施例では、メモリに記憶した回転中間状態に配列変換したmビットデータから所望の回転をした画像データを得るために、メモリから読出されたnビットデータからmビット選択する0度/180度回転用マルチプレクサをm個設けてある。nビットからmビット選択する90度/270度回転用マルチプレクサもm個設けてある。
また、mビットを入力してnビットデータ内のあるmビットデータのみ選択するデマルチプレクサをm個設けて、nビットの所定の回転角のデータを得る。さらに、nビット幅の180度/270度回転用のビット配列反転回路も設けてある。
以下、この発明にかかる一実施例を図面を参照しながら説明する。
図1は、この発明の一実施例の画像データ回転処理装置におけるブロック分割による画像データメモリ書込み処理の説明図、図2には、その書込画像データと画像データメモリのビットマップの説明図、図3は、90度,180度、270度の回転処理のビットマップによる説明図、図4は、この発明を適用した一実施例のプリンタ等に内蔵される画像データ回転処理装置の全体的な構成を示すブロック図、図5は、その画像データメモリに記憶する画像データの配列変換書込処理回路のブロック図、図6は、画像データに設定される前記ブロックをアドレス方向に対してビット幅方向を優先させて1からj×kの順位付けをした場合の説明図、図7は、配列変換読出処理回路のブロック図、そして図8〜図11は、画像データメモリから読出した配列変換されたデータを回転させるデータの配列変換読出処理のための各回路のブロック図である。
図4において、1は、プリンタ等に内蔵される画像データ回転処理装置であって、画像データメモリ100を有している。10は、回転前の画像データを出力するコンピュータ等のMPUである。内部メモリあるいは外部メモリには、回転前の画像データ200が記憶されている。
この発明では、画像データメモリ100に記憶する画像データ1画面分のビットデータに対してj×k個のブロックを設定してブロック分割し、mビットデータ単位で画像データを処理をしてブロック対応に画像データメモリ100の各アドレスに記憶する処理をする。そのため、メモリに書込まれる画像データをkアドレス×mビットサイズのj×k個のブロックで管理する。
図1は、この場合のブロック分割による画像データメモリ書込み処理を説明するものであり、図2は、画像データ1画面分のビットマップと、画像データメモリ100のビットマップの具体的な説明図である。
図1の横にしてその左側に示すように、画像データ1画面分をAとし、m=4,k=4,j=4として、画像データAを16アドレス×16ビットで4アドレス×4ビットを1ブロックとし、16個に分割したものを例として以下説明する。
各ブロックは、説明の都合上、先とは逆に、そのビット幅方向に対してアドレス方向を優先させて1からj×kの順位付けをしてブロック分割してある。
なお、アドレス方向を優先に各ブロックに順位付けをするのは、回転処理のときに一度にアドレス方向の4ブロックのデータを読出せることを説明するためである。このブロック順位は、前記したように、ビット方向を優先させて番号付けしてもよいことはもちろんである。
そこで、画像データAは、図1に示すように、ブロック(1)〜ブロック(16)となる。画像データAは、これら16個のブロック(1)〜ブロック(16)で管理され、このブロックに従って各ブロックのmビットのデータが画像データメモリ100の各1アドレスへ順次記憶される。
ここでは、画像データメモリ100を図面右側に示すように、4バンク構造のバンクメモリ104〜107で構成して、バンクメモリ104〜107に同時に4ブロックのnビットデータを記憶する。このことで書込み処理の高速化を図る。
その結果、画像データメモリ100に記憶される画像データAの各ブロックは、図1の右側に示す状態になる。
なお、各バンクメモリの104〜107のアドレス2以降では、ブロック分割した2列目以降の各ブロックの記憶は、例えば、ブロック(5)が2番目のバンクメモリ105に後退してバンクメモリの104に記憶されるブロックがブロック(8)になっている。それぞれのブロックの順位がシフトしているが、その理由は、画像データメモリ100の各バンクメモリのアドレスからデータを読出したときに、列方向(アドレス方向)にある4ブロックを同時に読出すためである。
具体的には、バンクメモリ104のアドレス1、バンクメモリ105のアドレス2、バンクメモリ106のアドレス3、バンクメモリ107のアドレス4を同時にアクセスして各ブロックの16ビットのデータを読出したときに、画像データAのアドレス方向にある縦のブロック(1)〜ブロック(4)が同時に読出せる。これにより回転処理の論理回路が単純になる。なぜなら、90度回転,270度回転では、縦方向(アドレス方向)にあるものを横方向(ビット幅方向)に変換していくからである。この点を理解し易いように、前記では、ブロックの順位をアドレス方向を優先して番号付けしてある。
ここでは、画像データメモリ100の1アドレスに書込まれる書込みデータは、1ブロック分のデータに対応している。言い換えれば、画像データのアドレス方向にあるmビット(m=4)のデータk個(k=4)がアドレス方向から画像データメモリ100のビット幅方向へ配列変換されて1アドレスにnビット(n=4×4)として書込まれる。
図2は、この関係を示すビットマップであり、その画像データAのビットマップAとビットマップBはこの関係を示している。
図2のビットマップAは、MPU10等から出力される画像データAの1画面分あるいは1表示エリア分(以下ではこれらを含めて1画面分として以下説明する。)のビットマップである。
ここでのブロック単位の配列変換を理解し易くするために、ビットマップAには、図1の16分割したブロック(1)〜ブロック(16)に対応して、各ブロックのmビット(m=4)に対してその各ビット位置に、“00”〜“FF”までの16ビット符号で順次ラベル付けしてある。
ここで、Bの画像データメモリ100に記憶される画像データの1画面分の配列変換されたビットマップを参照する。ビットマップAの1ブロックのアドレス方向にあるmビットがビットマップBの1アドレスのビット幅方向に配列変換されていることが判る。
これにより、画像データメモリ100の1アドレスのアクセスで元の画像データのアドレス方向のkアドレス(k=4)分のmビットのデータを同時に読出すことが可能になる。言い換えれば、1アドレスにmビット単位で中間的な回転状態のmビットデータを画像データメモリ100に記憶している。
図3のビットマップCは、画像データメモリ100から読出したデータをmビット単位で90回転角度に応じて配列した1画面分のビットマップである。図3のビットマップC〜Eは、回転後の画像データが図4の出力バッファメモリ203に記憶された状態である。なお、0度回転の場合にはビットマップAと同じとなるので、図示してはいない。
各ブロックのmビットデータの配列変換を効率的に行うために、この実施例では、画像データメモリ100を前記したように4バンク構造にしている。これにより、画像データAの1アドレス分のnビットデータを4アドレス置きに各メモリバンクに同時に書込むことができる。画像データAの1アドレス分のnビットデータは、ここでは、ビット幅方向(横方向,列方向)にある4ブロックに相当するので、これら4ブロックが記憶される図1の画像データメモリ100のアドレスに記憶するために、画像データAの1アドレス分のデータを4個のバンクメモリに分配して記憶する処理をする。これにより、特定のブロックのアドレス方向にある各ブロックのmビットデータを画像データメモリ100上のビット幅方向に変換していく。
図2の画像データのビットマップAと画像データメモリ100のビットマップBとの対比で判るように、画像データの1アドレスのmビットデータは、列方向にある複数のブロックに亙っている。そのため、1アドレスとして読出された各mビットのデータは、それが属するブロックが割当てられる画像データメモリ100のアドレス位置に分配して記憶することが必要になる。
以下その処理を具体的に説明する。
配列変換の具体的な方法は、画像データAの1アドレス分のnビット(n=16)のデータをk個(k=4)のmビットデータ(m=4)に分割して画像データメモリ100にk(=4)アドレスおきに分配し、かつ、各ブロックのアドレス方向のk個×m(=16)ビットデータを画像データメモリ100のビット幅方向に展開して記憶していく。これにより、結果として、画像データメモリ100の各アドレスには、ビットマップBに図示するような関係で各ビットデータが記憶される。
具体的には、図2のビットマップAの1行目におけるブロック(1)のmビットの各データは、バンクメモリ104(特定の記憶領域104でも可,以下同じ)の最初のアドレス“00”に記憶され、ブロック(5)のmビットの各データは、各バンクメモリ105(記憶領域105)の最初のアドレス“00”に記憶され、ブロック(9)のmビットの各データは、各バンクメモリ106(記憶領域106)の最初のアドレス“00”に記憶され、ブロック(13)のmビットの各データは、各バンクメモリ107(記憶領域107)の最初のアドレス“00”に記憶される。
そして、ビットマップAの2行目におけるブロック(2)のmビットの各データは、各バンクメモリ105(記憶領域105)の2番目のアドレス“01”に記憶され、次のブロック(6)のmビットの各データは、各バンクメモリ106(記憶領域106)のアドレス“01”に記憶され、以下同様にして(6)〜(16)の各ブロックのmビットのデータが図1に示す関係で記憶される。
これにより各ブロックのmビットのアドレス方向のデータは、ビット幅方向に配列変換される。この変換は、元の画像データAの1アドレスのビット幅方向に着目すると、そのmビットデータが画像データメモリ100上で逆にアドレス方向に変換されるものでもある。
その結果、画像データメモリ100の1アドレスの各mビットデータが90度回転状態のときに近い、元の画像データのアドレス方向にあるk個のmビットデータとなり、回転の中間状態で各アドレスそれぞれに配置されることになる。そこで、画像データメモリ100の1アドレスをアクセスするだけでこの中間状態のmビットのデータk個を同時に読出すことができる。ここで、中間状態とは、画像データメモリ100において、図1の画像データAのアドレス方向にある縦の4ブロックがバンクメモリ104〜107から同時に読出せる関係になっている状態である。
このような画像データメモリ100の1アドレスの各mビットデータを読出して、回転角度に応じて変換した結果として0度回転処理をすると、ビットマップAに示す画像データ1画面分になる。これは、Bの1画面分のビットマップを前記とは逆配列変換をして各グループ(1)〜(16)をビットマップAのように配列し直せば1画面分のビットマップAが得られる。
次に、90度回転処理のビットマップCについて説明すると、これは、ビットマップAの各ブロックを90度回転させて、例えば、ブロック(1)をブロック(4)の位置に移し、ブロック(4)をブロック(16)の位置に移して、それぞれのブロックのビット幅方向(横方向)にあるmビットをアドレス方向(縦方向)にすればよい。
画像データメモリ100の1画面分のビットマップBの、例えば、バンクメモリ107(記憶領域107)のアドレス00から一度に読出される、ブロック(13)のラベル“C0”〜“C3”の4ビット、“C4”〜“C7”の4ビット、ラベル“C8”〜“CB”の4ビット、ラベル“CC”〜“CF”の4ビットに着目してみると、これらの各mビットのデータが90度回転して前後が下、上に反転してアドレス方向に変換されてCのビットマップのブロック(1)に相当する位置に移動している。
このように、Bの1画面分のビットマップの1アドレス分のnビットのデータをmビットのデータとしてビット幅方向からアドレス配列方向に変換して回転角度に対応する所定のブロック位置、例えば、ブロック(13)のmビットデータをブロック(1)の位置に移動する配列変換処理をし、必要に応じてビット配列の前後を上下に入れ換える処理するだけで、90度の回転処理の1画面分のビットマップCが得られる。その実際については後述する。
このように、90度回転の場合には、ビットマップBの各アドレスから読出される各ブロック対応のmビット単位のビットデータを横(ビット幅方向)から縦(アドレス方向)に配列変換して90度回転したブロック位置に割当てればよい。
図3のビットマップD,Eは、それぞれ180度と270度の回転処理のビットマップである。
Dに示す画像データ1画面分のビットマップが180度回転処理をしたものから説明すると、画像データメモリ100の1画面分のビットマップBの、例えば、バンクメモリ106(記憶領域106)のアドレス11から一度に読出される、ブロック(16)のラベル“F0”〜“F3”の4ビット、ラベル“F4”〜“F7”の4ビット、ラベル“F8”〜“FB”の4ビット、ラベル“FC”〜“FF”の4ビットに着目してみると、これらの1アドレス分の各mビットのデータが180度回転して前後が反転してアドレス方向に変換されて、ビットマップDのブロック(1)に配列されていることが判る。ここに、ブロック(16)とブロック(1)とは180度回転した位置関係にある。
このように、1画面分のビットマップBの1アドレス分のnビットのデータをmビットのデータとしてビット幅方向からアドレス配列方向に変換してビット配列を反転させて所定のブロック位置に配列する処理をするだけで、180度の回転処理のDの1画面分のビットマップが得られる。なお、ビット配列の反転は、図4のビット配列反転回路108で行う。これは、例えば、双方向シフトのシフトレジスタにmビットのデータをセットして逆方向にシフトして読出せばよい。
Eに示す画像データ1画面分のビットマップが270度回転処理をしたものについて説明すると、同様に、画像データメモリ100の1画面分のビットマップBの、例えば、バンクメモリ107(記憶領域107)のアドレス11から一度に読出される、ブロック(4)のラベル“31”〜“33”の4ビット、ラベル“34”〜“37”の4ビット、ラベル“38”〜“3B”の4ビット、ラベル“3C”〜“3F”の4ビットに着目してみると、これらの1アドレス分の各mビットのデータが270度回転して前後が反転してアドレス方向に変換されかつ上下が反転してビットマップEのブロック(1)に配列されていることが判る。
このように、1画面分のビットマップBの1アドレス分のnビットのデータをmビットのデータとしてビット幅方向からアドレス配列方向に変換してビット配列を反転させて回転角度に応じた所定のブロック位置に配列する処理をするだけで、270度の回転処理のEの1画面分のビットマップが得られる。
図4は、以上のような回転処理を行う、プリンタ等に内蔵される、画像データ回転処理装置1の全体的な構成を示すブロック図である。
なお、通常、m×kビット(16ビット)幅のメモリの1アドレスにデータを記憶する場合には、16ビット揃ってから一度に記憶しないと効率が悪いので、この実施例では、画像データAの4アドレス分が読出されて、それがバンクメモリの4アドレス分に分配されて16ビットのデータが一度に各バンクメモリ104〜107に記憶される。そのために配列変換書込処理回路201に入力バッファが設けられている。
パーソナルコンピュータ等に内蔵されたMPU10の内部メモリあるいはその外部メモリには、回転前画像データ200(1画面分ビットマップAに相当)が記憶されている。MPU10は、これの各アドレスを順次アクセスしてnビットデータとして画像データ回転装置1を内蔵するプリンタ等の側に転送する。MPU10から順次出力された回転前画像データ200がnビットデータごとに順次画像データの配列変換書込処理回路201に入力される。
配列変換書込処理回路201は、入力バッファ101〜103と、メモリ書込みのための書込側マルチプレクサ137とからなり、入力バッファ101〜103を介しまたは直接に書込側マルチプレクサ137に受けたnビットのデータを、mビットに分割してバンクメモリ104〜107からなる画像データメモリ100に前記のビットマップBのフォーマットに配列変換して格納する。
画像データメモリ100に格納された配列変換されたmビットデータは、その各バンクメモリ104〜107から配列変換読出処理回路202により読出される。
なお、図中、書込制御回路2は、メモリ書込みのための書込側マルチプレクサ137と画像データメモリ100に制御信号を送出して書込側マルチプレクサ137を介してマシンサイクルに対応して画像データメモリ100にデータを書込む処理を行う回路である。クロック発生回路3は、画像データメモリ100と各マルチプレクサ等にマシンサイクルに対応したクロックCLKを送出する。読出制御回路4は、画像データメモリ100の1アドレスからデータを読出して、マシンサイクルに対応して読出側マルチプレクサ/デマルチプレクサ138とビット配列反転回路108、そして出力バッファメモリ203に反転したmビットデータを転送し、セットする制御をする。
なお、書込制御回路2と、クロック発生回路3、読出制御回路4は、コントローラ5により制御される。
コントローラ5は、さらに、外部から指定された回転角度に応じて配列変換読出処理回路202に回転角選択信号Sを送出する。この回転角選択信号Sに応じて配列変換読出処理回路202のマルチプレクサ/デマルチプレクサの回転処理の角度が選択され、画像データメモリ100から読出されたビットデータに対して所定の回転角度処理が行われる。
配列変換読出処理回路202は、メモリ読出のための読出側マルチプレクサ/デマルチプレクサ138とビット配列反転回路108とからなり、読出側マルチプレクサ/デマルチプレクサ138を介し、ビット配列反転回路108を介しまたは直接に各バンクメモリ104〜107から画像データを読出すことにより、0度回転後画像データ(ビットマップA参照)または90度回転後画像データ(ビットマップC参照)または180度回転後画像データ(ビットマップD参照)または270度回転後画像データ(ビットマップE参照)を得て、それを、回転後の画像データを保持できるような、例えば、出力バッファメモリ203などに記憶する。
なお、出力バッファメモリ203の回転データは、コントローラ等(図示せず)により読出されてプリンタエンジン等に出力されて、印刷される。
以下詳細に各回路についてその具体例を説明する。
図5は、配列変換書込処理回路201を中心とする回路である。
図4の書込側マルチプレクサ137は、mビットデータ分割、配列変換のために、マルチプレクサ109〜124を有している。マルチプレクサ109〜112は、バンクメモリ104に対応して設けられ、バンクメモリ104に分割したたmビットデータを書込む、マルチプレクサ113〜116は、メモリ105に対応して設けられ、メモリ105に分割したmビットデータを書込む。マルチプレクサ117〜120は、メモリ106に対応して設けられ、メモリ106に分割したmビットデータを書込む。マルチプレクサ121〜124は、メモリ107に対応して設けられ、メモリ107に分割したたmビットデータを書込む。
図5においては、説明の都合上、1マシンサイクルごとに回転前画像データ200の内の16ビットずつが順番に配列変換書込処理回路201に入力されるものとする。すなわち、最初のマシンサイクルで回転前画像データ200の内、アドレス0000と記したところのビット0〜15のデータ位置00,01,02,03,40,41,42,43,80,81,82,83,C0,C1,C2,C3が入力され、入力バッファ101にセットされる。
次のマシンサイクルで回転前画像データ200の内、アドレス0001と記したところのビット0〜15のデータ位置04,05,06,07,44,45,46,47,84,85,86,87,C4,C5,C6,C7が同様にして入力バッファ102に入力される。以下同様に、アドレス0010のビット0〜15が入力バッファ103に入力され、アドレス0011のビット0〜15がマルチプレクサ112にセットされる。
これにより、バンクメモリ104への書込みデータ1行分の16ビットが第1行目のマルチプレクサ109〜112に揃うことになる。入力バッファ101〜103の入力データとマルチプレクサ112の入力データは、2行目〜4行目のマルチプレクサ113〜116,マルチプレクサ117〜120,マルチプレクサ121〜124にも同時に入力されるので、4マシンサイクル単位にバンクメモリ104〜107の各行分の書込みデータがそれぞれに揃うことになる。
書込側マルチプレクサ137の各マルチプレクサのmビットデータ分割、配列変換のための信号線の接続について以下説明する。
回転前画像データ200の16ビットのデータ信号線は、入力バッファ101、入力バッファ102、入力バッファ103の入力側にビット0〜15がそのまま接続されている。
なお、回転前画像データ200の16ビットのデータ信号線は、バンクメモリ104に対応して設けられたマルチプレクサ109〜112、メモリ105に対応して設けられたマルチプレクサ113〜116、メモリ106に対応して設けられたマルチプレクサ117〜120、メモリ107に対応して設けられたマルチプレクサ121〜124の入力側にはビット0〜15がそのままではなく、4ビット単位で桁位置が規則的にずれて接続されている。
そして、バンクメモリ104対するマルチプレクサ109〜112、メモリ105対するマルチプレクサ113〜116、メモリ106対するマルチプレクサ117〜120、メモリ107対するマルチプレクサ121〜124の出力側は、4ビット単位でビット0〜15がそのままバンクメモリ104、メモリ105、メモリ106、メモリ107の入力側に接続されている。
4ビット単位で桁位置の規則的なずれは、行方向に配列された4個のマルチプレクサ109〜112が4アドレス分n読出データを受けたときに、行方向にある、ある1ブロック分のmビットデータをバンクメモリ104の1アドレスのビット幅に変換する。同様にして4個のマルチプレクサ113〜116が、行方向にある、他の1ブロックのmビットデータをバンクメモリ105の1アドレスのビット幅に変換し、4個のマルチプレクサ117〜120が、行方向にある、さらに他の1ブロックのmビットデータをバンクメモリ106の1アドレスのビット幅に変換する。そして、最後の4個のマルチプレクサ121〜124が、行方向にある、最後の他の1ブロックのmビットデータをバンクメモリ107の1アドレスのビット幅に変換する。各マルチプレクサ109〜124の選択切換えにより1行目の各ブロックから4行目のブロックまで順次選択する行が切換えられていく。
具体的には、バンクメモリ104に対するマルチプレクサ109〜112は、入力側のビットの桁位置が、mビット=4ビット単位に、左から0〜3,12〜15,8〜11,4〜7の順で接続されていてこれら4ビット単位に入力されたビットが順次選択される。左からの4ビットが列方向の各ブロックに対応していて、各ブロックがクロック発生回路3からのクロックCLKに応じて順次選択される。
そして、マルチプレクサ109は、選択した4ビットのデータをビット幅方向の0〜3ビットの桁位置のデータとしてバンクメモリ104に書込む。マルチプレクサ110は、選択した4ビットのデータをビット幅方向の4〜7ビットの桁位置のデータとしてバンクメモリ104に書込む。マルチプレクサ111は、選択した各4ビットのデータをビット幅方向の8〜11ビットの桁位置のデータとしてバンクメモリ104に書込む。マルチプレクサ112は、選択した4ビットのデータをビット幅方向の12〜15ビットの桁位置のデータとしてバンクメモリ104に書込む。
同様に、メモリ105対するマルチプレクサ113〜116は、入力側のビット桁位置が左から4〜7,0〜3,12〜15,8〜11の順となっていて、これら4ビット単位に入力された16ビットから4ビットを順次選択する。左からの4ビットが列方向の各ブロックが1ブロックシフトした位置に対応していて、各ブロックがクロックCLKに応じて順次選択される。
同様に4ビット単位でそれぞれのマルチプレクサ113〜116が選択した各4ビットのデータを、0〜3ビットの桁位置のデータ,4〜7ビットの桁位置のデータ,8〜11ビットの桁位置のデータ,12〜15ビットの桁位置のデータとしてそれぞれにメモリ105に書込む。
これと同様にして、メモリ106対するマルチプレクサ117〜120は、入力側のビット桁位置が左から8〜11,4〜7,0〜3,13〜15の順となっていて、これら4ビット単位に入力された16ビットから4ビットを順次選択する。左からの4ビットが列方向がさらに1ブロックシフトした位置に対応していて、各ブロックがクロックCLKに応じて順次選択される。
同様に4ビット単位でそれぞれのマルチプレクサ117〜120が選択した各4ビットのデータを、0〜3ビットの桁位置のデータ,4〜7ビットの桁位置のデータ,8〜11ビットの桁位置のデータ,12〜15ビットの桁位置のデータとしてそれぞれにメモリ106に書込む。
また、メモリ107対するマルチプレクサ121〜124は、入力側のビット桁位置が左から12〜13,8〜11,4〜7,0〜3の順となっていて、これら4ビット単位に入力された16ビットから4ビットを順次選択する。左からの4ビットが列方向がさらに1ブロックシフトした位置に対応していて、各ブロックがクロックCLKに応じて順次選択される。
同様に4ビット単位でそれぞれのマルチプレクサ121〜124が選択した各4ビットのデータを、0〜3ビットの桁位置のデータ,4〜7ビットの桁位置のデータ,8〜11ビットの桁位置のデータ,12〜15ビットの桁位置のデータとしてそれぞれにメモリ107に書込む。
次に、配列変換書込処理回路201が回転前画像データ200の各データ位置の4ビットデータがいかにしてバンクメモリ104〜107の所定のデータ位置に書込まれるか、その動作について説明する。
マルチプレクサ109〜124までのすべてのマルチプレクサは、書込制御回路2から選択値“00”を受けて、当初一番左を選択している。すなわち、バンクメモリ104対するマルチプレクサ109〜112は、すべて1番目の入力側の0〜3ビットの桁位置を選択して出力する。これは、図1に示す1行目のブロック(1)の4ビットデータを選択する位置に対応している。バンクメモリ105対するマルチプレクサ113〜116は、すべて1番目の入力側の4〜7ビットの桁位置を選択して出力する。これは、ブロック(5)の4ビットデータを選択する位置に対応している。同様にして、バンクメモリ106対するマルチプレクサ117〜120は、8〜11ビットの桁位置によりブロック(9)の4ビットデータを選択する位置に対応し、バンクメモリ107対するマルチプレクサ121〜124は、12〜15ビットの桁位置によりブロック(13)の4ビットデータを選択する位置に対応している。
そこで、回転前画像データ200の1アドレスの16ビットデータが4アドレス分読み出されると、各ブロックの1アドレス分の16ビットが揃い、バンクメモリ104〜107の最初の1アドレスに記憶できる。4アドレス分の読出は、入力バッファ101、入力バッファ102、入力バッファ103に最初の3アドレス分を順次読込み、最後の1アドレス分を直接マルチプレクサ112,116,120,124に読込む。これを読込んだタイミングで、入力バッファ101のデータはマルチプレクサ109,113,117,121に、入力バッファ102のデータはマルチプレクサ110,114,118,122に、入力バッファ103のデータはマルチプレクサ111,115,119,123にそれぞれ読込まれて、1行目のブロック(1),ブロック(5),ブロック(9),ブロック(13)の各4ビットをアドレスの増加方向をビット幅方向に対応させて配列変換を行い、バンクメモリ104〜107の最初の1アドレスに記憶する。
以下、同様にして図1の第2行目、第3行目、第4行目の各ブロックについて、図1のバンクメモリ104〜107に示したブロック配列に対応するようにマルチプレクサ109〜124のmビット選択位置を右にシフトして選択位置を切換えて配列変換を行う。
すなわち、書込制御回路2がクロック発生回路3からクロックCLKを受けて、図1の最初の行のブロック(1),ブロック(5),ブック(9),ブロック(13)の4ブロックのアドレス方向への分配変換を各バンクメモリ104〜107の“00”のアドレス(アドレス1)に設定して行う。
第2行のブロック(14),ブロック(2),ブック(6),ブロック(10)の4ブロックのアドレス方向への分配変換を各バンクメモリ104〜107の“01”のアドレス(アドレス2)に設定して行う。
第3行のブロック(11),ブロック(15),ブック(3),ブロック(7)の4ブロックのアドレス方向への分配変換を各バンクメモリ104〜107の“10”のアドレス(アドレス3)に設定して行う。
そして、第4行のブロック(8),ブロック(12),ブロック(16),ブロック(4)の4ブロックのアドレス方向への分配変換を各バンクメモリ104〜107の“11”のアドレス(アドレス4)に設定して行う。
この場合、画像データメモリ100からのデータ読出時にビットマップAのアドレス方向の4ブロックである、ブロック(1)〜(4),ブロック(5)〜(8)、ブロック(9)〜(12),ブロック(13)〜(16)がバンクメモリ104〜107から一度に読出せるようにするために、アドレス2以降は、各ブロックが重ならないように、先頭のブロックの位置から順次1ブロックずつ後ろにシフトして記憶していくことによる。
このブロックのシフトについて、一般式で説明する。これは、バンクメモリ104〜107をそれぞれアドレスをずらせて“00”,“01”,“10”,“11”とアクセスしてときに、それぞれのアクセスアドレスに応じてビットマップAのアドレス方向の4ブロックが読出せるように、4ブロックをずらせるものである。
一般式の説明の都合上、まず、今までの説明とは逆に、ブロックの順位をアドレス方向からビット幅方向に採り、横方向(列方向)に割り当てて図6のマップAのような順位で各ブロックを番号付けする。これは、図1のマップAの各ブロックの行と列とを入れ換えた番号付である。その結果、画像データメモリ100上のブロックの配列関係は、図6の画像データメモリ100に示すようになる。
すなわち、画像データメモリ100は、書込画像データに設定されるブロックをアドレス方向に対してビット幅方向を優先させて1からj×kの順位付けをした場合において、1からj×k(j=4,k=4)の順位付けをした場合において、分割されたk個のバンクメモリ104〜107の最初のアドレスを1行目のブロック順位の1〜kのブロックに順次割当て、2番目のアドレスを2行目の2k,k+1〜2k−1のブロックに順次割当て、3番目のアドレスを前記順位の3行目の3k−1,3k,2k+1〜3k−2のブロックに順次割当てるとすると、一般式として、Pk−(P−2)〜Pk〜Pk−(P−1)(ただし、Pは2以上の整数)において分割されたk個の各バンクメモリ104〜107のアドレスの増加に従って先頭ブロックを増加分に対応して順次次のバンクメモリに繰下げかつ分割された最後のバンクメモリ107の次は分割された最初のバンクメモリ104へと循環させてシフトさせて割当てて各ブロックのmビットデータを記憶するものである。これにより、アドレス方向(縦方向)の各4ブロックのデータを同時に読出すことができる。その結果、図6の画像データメモリ100に示すような状態でバンクメモリ104〜107に各ブロック(1)〜(16)が記憶される。
ここで、画像データメモリ100の各バンクメモリ104〜107への各ブロックのmビットデータの書込みは、マシンサイクルに対応して行われる。
以下、これを具体的に説明すると、各マルチプレクサ109〜124が、前記した最初の状態において、まず回転前画像データ200の内、アドレス0000のところの16ビットのデータがあるマシンサイクルにおいて配列変換書込処理回路201に入力されると、そのデータはそのマシンサイクル内で入力バッファ101へ格納される。すなわち、入力バッファ101には00,01,02,03,40,41,42,43,80,81,82,83,C0,C1,C2,C3のデータ位置のデータが格納される。
次のマシンサイクルで回転前画像データ200の内、アドレス0001のところの16ビットのデータが入力されると、そのデータはそのマシンサイクル内で入力バッファ102へ格納される。すなわち、入力バッファ102には04,05,06,07,44,45,46,47,84,85,86,87,C4,C5,C6,C7のデータ位置のデータが格納される。
次のマシンサイクルで回転前画像データ200の内、アドレス0010のところの16ビットのデータが入力されると、そのデータはそのマシンサイクル内で入力バッファ103へ格納される。すなわち、入力バッファ103には08,09,0A,0B,48,49,4A,4B,88,89,8A,8B,C8,C9,CA,CBのデータ位置のデータが格納される。
さらに、次のマシンサイクルで回転前画像データ200の内、アドレス0011のところの16ビットのデータが入力されると、バンクメモリ104〜107に対するメモリの書込アドレスを00番地にして書込制御回路2が書込命令を出すことにより、各マルチプレクサが前述した状態になっているため、バンクメモリ104〜107のアドレス00番地の所定のデータ位置にデータが書込まれる。
すなわち、バンクメモリ104の00番地に回転前画像データ200の内、アドレス0000〜0011のところにある、データ位置00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0Fのデータが書込まれ、メモリ105の00番地に回転前画像データ200の内、アドレス0000〜0011のところにある、データ位置40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4Fのデータが書込まれ、メモリ106の00番地に回転前画像データ200の内、アドレス0000〜0011のところにある、データ位置80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8Fのデータが書込まれ、メモリ107の00番地に回転前画像データ200の内、アドレス0000〜0011のところにある、データ位置C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,CA,CB,CC,CD,CE,CFのデータが書込まれる。
次のマシンサイクルからは、すべてのマルチプレクサ109〜124は、書込制御回路2から選択値“01”を受けて、先ほどまで選択していた一番左の一つ右隣りを選択する。すなわち、バンクメモリ104対するマルチプレクサ109〜112はすべて入力側の12〜15ビットを選択して出力し、メモリ105対するマルチプレクサ113〜116はすべて入力側の0〜3ビットを選択して出力し、メモリ106対するマルチプレクサ117〜120はすべて入力側の4〜7ビットを選択して出力し、メモリ107対するマルチプレクサ121〜124はすべて入力側の8〜11ビットを選択して出力する状態になる。
各マルチプレクサ109〜124は、この状態において、まず回転前画像データ200の内、アドレス0100のところの16ビットのデータがあるマシンサイクルにおいて入力されると、そのデータはそのマシンサイクル内で入力バッファ101へ格納される。すなわち、入力バッファ101には10,11,12,13,50,51,52,53,90,91,92,93,D0,D1,D2,D3のデータ位置のデータが格納される。次のマシンサイクルで回転前画像データ200の内、アドレス0101のところの16ビットのデータが入力されると、そのデータはそのマシンサイクル内で入力バッファ102へ格納される。すなわち、入力バッファ102には14,15,16,17,54,55,56,57,94,95,96,97,D4,D5,D6,D7のデータ位置のデータが格納される。
次のマシンサイクルで回転前画像データ200の内、アドレス0110のところの16ビットのデータが入力されると、そのデータはそのマシンサイクル内で入力バッファ103へ格納される。すなわち、入力バッファ103には18,19,1A,1B,58,59,5A,5B,98,99,9A,9B,D8,D9,DA,DBのデータ位置のデータが格納される。次のマシンサイクルで回転前画像データ200の内、アドレス0111のところの16ビットのデータが入力されると、画像データメモリ100のアドレスを01番地にして書込み信号を出すことにより、各マルチプレクサが前述した状態になっているため、バンクメモリ104〜107のアドレス01番地の所定のデータ位置にデータが書込まれる。すなわち、バンクメモリ104の01番地に回転前画像データ200の内、アドレス0100〜0111のところにある、データ位置D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,DE,DFのデータが書込まれ、メモリ105の01番地に回転前画像データ200の内、アドレス0100〜0111のところにある、データ位置10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1Fのデータが書込まれ、メモリ106の01番地に回転前画像データ200の内、アドレス0100〜0111のところにある、データ位置50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5Fのデータが書込まれ、メモリ107の01番地に回転前画像データ200の内、アドレス0100〜0111のところにある、データ位置90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9Fのデータが書込まれる。
次のマシンサイクルからは、109〜124までのすべてのマルチプレクサは、書込制御回路2から選択値“11”を受けて、先ほどまで選択していた一番左の二つ右隣りを選択する。すなわち、バンクメモリ104対するマルチプレクサ109〜112はすべて入力側の8〜11ビットを選択して出力し、メモリ105対するマルチプレクサ113〜116はすべて入力側の12〜15ビットを選択して出力し、メモリ106対するマルチプレクサ117〜120はすべて入力側の0〜3ビットを選択して出力し、メモリ107対するマルチプレクサ121〜124はすべて入力側の4〜7ビットを選択して出力する状態になる。
以下同様にして、バンクメモリ104〜107のすべての番地に所定のデータを書込むことができる。
図7は、配列変換読出処理回路202のブロック図である。
配列変換読出処理回路202は、90度回転,270度のときには、バンクメモリ104〜107のアドレスをそれぞれ“00”〜“11”から選択して順次異なる番地に設定することで、図1の画像データメモリ100のブロック分割におけるアドレス方向の4ブロックを同時に読出す。このことで、各ブロックのmビットデータを縦方向に得て、それを回転に応じたブロック位置に変換してビット入れ換え等を行う。
配列変換読出処理回路202について以下具体的に説明する。
図4に示した配列変換読出処理回路202の読出側マルチプレクサ/デマルチプレクサ138は、図7に示すように、バンクメモリ104に対するマルチプレクサ125、129、これらマルチプレクサ125、129からmビットデータを受けるデマルチプレクサ133、バンクメモリ105に対するマルチプレクサ126、130、これらマルチプレクサ126、130からmビットデータを受けるデマルチプレクサ134、バンクメモリ106に対するマルチプレクサ127、131、これらマルチプレクサ127、131からmビットデータを受けるデマルチプレクサ135、そして、メモリ107に対するマルチプレクサ128、132、これらマルチプレクサ128、132からmビットデータを受けるデマルチプレクサ136とからなる。
図8は、配列変換読出処理回路202の0度回転後画像データ出力部分のみを記した詳細ブロック図である。なお、図8においては、図4の読出制御回路は省略してある。
0度回転は、図4の配列変換書込処理回路201とは逆の変換をするものである。すなわち、画像データメモリ100(バンクメモリ104〜107)は、1アドレスのアクセスでアドレス方向にあるブロックの4ビットのデータを4個、1ブロック分読出すことができるので、バンクメモリ104〜107についてそれぞれの1アドレスをアクセスして、ビットマップAの、元の1アドレス分の4ビットを4個同時に読出し、マルチプレクサで特定のビット位置の4ビットを切出して、デマルチプレクサで元のnビットデータに合成する。
そこで、バンクメモリ104〜107の各アドレスは、図1の16ブロックの行方向に配列されるブロック4個を同時にアクセスするように設定される。すなわち、先の図4ではアドレスk(この実施例ではk=4)おきにmビットデータを分配しているので、これと同じアクセスをして各メモリから行方向のブロックのmビットデータを読出す、ビット幅方向に順次マルチプレクサの位置を切換えて4回読出すことになる。
なお、各バンクメモリ104〜107のアドレスの増加に従って先頭ブロックを増加分に対応して順次次のバンクメモリに繰下げて各ブロックを記憶しているので、これに対する修正がデマルチプレクサでビット選択位置を切換えて対応を採っている。
図8の信号線の接続について以下説明する。
1.バンクメモリ104について
バンクメモリ104の16ビットのデータ出力信号線は、バンクメモリ104についてのマルチプレクサ125の入力側にビット0〜15がそのまま接続されている。マルチプレクサ125の4ビットの出力信号線は、デマルチプレクサ133の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ133の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
2.バンクメモリ105について
バンクメモリ105の16ビットのデータ出力信号線は、バンクメモリ105についてのマルチプレクサ126の入力側にビット0〜15がそのまま接続されている。マルチプレクサ126の4ビットの出力信号線は、デマルチプレクサ134の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ134の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
3.バンクメモリ106について
バンクメモリ106の16ビットのデータ出力信号線は、バンクメモリ106についてのマルチプレクサ127の入力側にビット0〜15がそのまま接続されている。マルチプレクサ127の4ビットの出力信号線は、バンクメモリ106デマルチプレクサ135の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ135の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
3.メモリ107について
メモリ107の16ビットのデータ出力信号線は、メモリ107についてのマルチプレクサ128の入力側にビット0〜15がそのまま接続されている。マルチプレクサ128の4ビットの出力信号線は、デマルチプレクサ136の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ136の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
図8を参照して、バンクメモリ104〜107のあるデータ位置のデータがいかにして0度回転後データとして出力されるかを説明する。
各マルチプレクサの選択動作は、バンクメモリ104〜107に対応してビット位置が4ビットごとにビット幅方向にシフトした位置に選択位置が設定されていて、それぞれに元の1アドレスの行方向の各ブロックに記憶するmビットを選択するように構成されている。
すなわち、マルチプレクサ125〜128は、バンクメモリ104〜107の各最初のアドレスから最初の行のブロック(1),ブロック(5),ブック(9),ブロック(13)の4ブロックのmビットデータを選択して、デマルチプレクサ133〜136へと送りそれぞれのmビットデータをビット幅方向に展開してビット幅方向に変換し、出力バッファメモリ203の最初のアドレスに記憶する。これは、読出制御回路4により各バンクメモリ104〜107の“00”のアドレス(アドレス1)に設定して行う。これを4アドレス分、選択するビット幅方向の位置を換えて行う。
次に、第2行のブロック(14),ブロック(2),ブック(6),ブロック(10)の4ブロックのmビットデータを選択してビット幅方向への分配変換を各バンクメモリ104〜107の“01”のアドレス(アドレス2)に設定して同様にして行う。これを4アドレス分、選択するビット幅方向の位置を換えて行う。
第3行のブロック(11),ブロック(15),ブック(3),ブロック(7)の4ブロックのmビットデータを選択してビット幅方向への分配変換を、読出制御回路4により各バンクメモリ104〜107の“10”のアドレス(アドレス3)に設定して行う。これを4アドレス分、選択するビット幅方向の位置を換えて行う。
そして、第4行のブロック(8),ブロック(12),ブロック(16),ブロック(4)のmビットデータを選択してビット幅方向への分配変換を、読出制御回路4により各バンクメモリ104〜107の“11”のアドレス(アドレス4)に設定して行う。これを4アドレス分、選択するビット幅方向の位置を換えて行う。
以下、これについて具体的に説明する。
まず、各マルチプレクサ/デマルチプレクサが当初どの部分を選択しているかを説明する。
図4の配列変換書込処理回路201のときと同様に、読出制御回路4から選択値“00”を受けて、マルチプレクサ125〜128は、当初一番左を選択し、バンクメモリ104デマルチプレクサ133は一番左を選択し、バンクメモリ105デマルチプレクサ134は一番左の一つ右隣りを選択し、バンクメモリ106デマルチプレクサ135は一番左の二つ右隣りを選択し、メモリ107デマルチプレクサ136は一番右を選択する。
すなわち、マルチプレクサ125〜128はすべて入力側の0〜3ビットを選択して出力し、バンクメモリ104デマルチプレクサ133は0〜3ビットを選択して出力し、バンクメモリ105デマルチプレクサ134は4〜7ビットを選択して出力し、バンクメモリ106デマルチプレクサ135は8〜11ビットを選択して出力し、メモリ107デマルチプレクサ136は12〜15ビットを選択して出力する状態になっている。
あるマシンサイクルにおいて、読出制御回路4から“00”を受けて、画像データメモリ100(バンクメモリ104〜107)のアドレスを00番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっている。そのため、バンクメモリ104〜107のアドレス00番地のデータが読出され、0度回転後画像データ(ビットマップA参照)のアドレス0000(図2のビットマップA参照)に示す様にバンクメモリ104〜107上のデータの一部が出力される。
すなわち、バンクメモリ104のアドレス00のビット0〜15の00〜0Fのデータ位置のデータが読出され、バンクメモリ104ついてのマルチプレクサ125によって04〜0Fのデータ位置のデータは捨てられ、00〜03のデータ位置のデータがデマルチプレクサ133により、0度回転後画像データのアドレス0000(図2のビットマップA参照)のビット0〜3に示す様に出力される。さらに、バンクメモリ105のアドレス00のビット0〜15の40〜4Fのデータ位置のデータが読出され、バンクメモリ105についてのマルチプレクサ126によって44〜4Fのデータ位置のデータは捨てられ、40〜43のデータ位置のデータがバンクメモリ105についてのデマルチプレクサ134により、0度回転後画像データのアドレス0000のビット4〜7に示す様に出力される。さらに、バンクメモリ106のアドレス00のビット0〜15の80〜8Fのデータ位置のデータが読出され、バンクメモリ106についてのマルチプレクサ127によって84〜8Fのデータ位置のデータは捨てられ、80〜83のデータ位置のデータがバンクメモリ106デマルチプレクサ135により、0度回転後画像データのアドレス0000のビット8〜11に示す様に出力される。
同様に、メモリ107のアドレス00のビット0〜15のC0〜CFのデータ位置のデータが読出され、メモリ107についてのマルチプレクサ128によってC4〜CFのデータ位置のデータは捨てられ、C0〜C3のデータ位置のデータがメモリ107についてのデマルチプレクサ136により、0度回転後画像データのアドレス0000のビット12〜15に示すように出力される。
次のマシンサイクルでは、読出制御回路4から選択値“01”を受けて、125〜128までのすべてのマルチプレクサは、先ほどまで選択していた一番左の一つ右隣りを選択する。すなわち、マルチプレクサ125〜128はすべて入力側の4〜7ビットを選択する。すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択する。この状態において、読出制御回路4から“00”を受けて、画像データメモリ100のアドレスを00番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104〜107のアドレス00番地のデータが読出され、0度回転後画像データのアドレス0001に示す様にバンクメモリ104〜107上のデータの一部が出力される。すなわち、先ほどと同様なので詳細の記述は省略するが、0度回転後画像データのアドレス0001に04〜07, 44〜47, 84〜87, C4〜C7が出力される。
その次のマシンサイクルでは、読出制御回路4から選択値“10”を受けて、125〜128までのすべてのマルチプレクサは、一番左の二つ右隣りを選択する。すなわち、マルチプレクサ125〜128はすべて入力側の8〜11ビットを選択する。すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4の制御によりメモリのアドレスを00番地にして読出命令を出すことにより、0度回転後画像データのアドレス0010に08〜0B, 48〜4B, 88〜8B, C8〜CBが出力される。
次のマシンサイクルでは、読出制御回路4から選択値“11”を受けて、125〜128までのすべてのマルチプレクサは、一番右を選択する。すなわち、マルチプレクサ125〜128はすべて入力側の12〜15ビットを選択する。すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4がメモリのアドレスを00番地にして読出命令を出すことにより、0度回転後画像202のアドレス0011に0C〜0F, 4C〜4F, 8C〜8F, CC〜CFが出力される。
そして、さらに次のマシンサイクルでは、読出制御回路4から選択値“00”を受けて、125〜128までのすべてのマルチプレクサは、また最初の状態に戻り、一番左を選択する。すなわち、マルチプレクサ125〜128はすべて入力側の0〜3ビットを選択する。
一方、すべてのデマルチプレクサ133〜136は、先ほどまでと、異なるところを選択する。これにより、シフトさせて記憶したブロック位置を元に戻す。
具体的にはバンクメモリ104についてのデマルチプレクサ133は、一番右、すなわち、12〜15ビットのところを選択し、バンクメモリ105についてのデマルチプレクサ134は、一番左、すなわち、0〜3ビットのところを選択し、バンクメモリ106についてのデマルチプレクサ135は一番左の一つ右、すなわち、4〜7ビットのところを選択し、メモリ107についてのデマルチプレクサ136は一番左の二つ右、すなわち、8〜11ビットのところを選択する。
この状態において、読出制御回路4の制御により画像データメモリ100のバンクメモリ104〜107の各アドレスを01番地に更新して読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104〜107のアドレス01番地のデータが読出され、0度回転後画像202のアドレス0100に示す様にバンクメモリ104〜107上のデータの一部が出力される。すなわち、先ほどと同様なので詳細の記述は省略するが、0度回転後画像202のアドレス0100に10〜13, 50〜53, 90〜93, D0〜D3が出力される。
以下同様にして、すべてのデマルチプレクサ133〜136の選択位置をまったく同じにしたまま先ほど同様に125〜128のマルチプレクサ選択をずらして行き、読出制御回路4の制御により画像データメモリ100のバンクメモリ104〜107の各アドレスを01番地のまま読出命令を出すことにより、0度回転後画像202のアドレス0101〜0111に示す様なデータが得られる。
さらに同様にして、またデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4の制御により画像データメモリ100のバンクメモリ104〜107の各アドレスを10番地に更新して読出命令を出すことにより、0度回転後画像202のアドレス1000〜1011に示す様なデータが得られ、以下同様にしてまたデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4から“11”を受けて、画像データメモリ100のバンクメモリ104〜107の各アドレスを11番地に更新して読出命令を出すことにより、0度回転後画像202のアドレス1100〜1111に示す様なデータが得られる。結局、以上の様にして、バンクメモリ104〜107から16マシンサイクルかけて0度回転後画像202を出力することができる。
このようにして、配列変換読出処理回路202は、画像データメモリ100をkアドレスおきにアクセスして、言い換えれば、バンクメモリとしての各バンクメモリ104,105,106,107ごとに図1の16ブロックの行方向に配列されるブロックに対応するアドレスをアクセスしてmビットデータを読出して、図1のマップAのそれぞれのブロックのmビットデータを同時に読出して分配されたmデータをデマルチプレクサで元のnビットデータに合成して元のブロック位置に戻す処理をする。
次に、図9を参照して、配列変換読出処理回路202がコントローラ5からの選択信号Sを受けて90度回転後画像データを出力する処理について説明する。
90度回転の場合には、画像データメモリ100の各アドレスのmビットデータのビット幅方向(横方向)のビットデータがアドレス方向(縦方向)に変換されることでmビット単位で90度回転させる。さらに、各アドレスに記憶された4ブロックの各mビットデータが読出されたときに、それぞれに図1のAの16ブロックに分けた元のグループの位置からそれを90度回転したグループの位置に再配列する。このようなビットデータの横縦変換と90度回転したグループに再配置するための処理回路が図9である。
なお、この場合、mビットのデータ配列を横方向(行方向)から縦方向(列方向)に変換しなければならないために、mビットデータは、ビット単位で選択される。
そこで、図9では、図1において縦方向(アドレス方向)に配置される4ブロックを同時に読出して、縦方向(列方向)の各ブロックのmビットについて、マルチプレクサ129〜132により、後ろのビットを選択し、次にその手前のビットを選択し、最後に先頭ビットを選択する処理をする。これによりビットが横方向から縦方向に入れ換えられる。そして、デマルチプレクサ133〜136で、各ブロックのmビットをnビットに合成してそれぞれのブロックのmビットの90回転したブロック位置になるように、出力バッファメモリ203に記憶しあるいはプリンタ等のバッファメモリに出力する処理をする。
すなわち、マルチプレクサ133〜136は、バンクメモリ104〜107の各最初のアドレスから最初の行のブロック(1),ブロック(5),ブック(9),ブロック(13)の4ブロックのmビットデータを選択して、これら4ブロックのmビットの最後のビットの選択をする。第2行のブロック(14),ブロック(2),ブック(6),ブロック(10)の4ブロックのmビットデータを選択して、これら4ブロックのmビットの最後のビットを選択をする。さらに、第3行のブロック(11),ブロック(15),ブック(3),ブロック(7)の4ブロックのmビットデータを選択して、これら4ブロックのmビットの最後のビットを選択をする。そして、第4行のブロック(8),ブロック(12),ブロック(16),ブロック(4)のmビットデータを選択してこれら4ブロックのmビットの最後のビットを選択をする。
こうして選択された最後のmビットは、デマルチプレクサ133〜136に送出され、nビットデータとして合成されて、所定のアドレスに出力バッファメモリ203に記憶される。以下、同様にして各4ブロックのmビットの最後のビットのmビットから順次最初のビットのmビットまで選択してデマルチプレクサ133〜136に送出されてnビットデータとされて出力バッファメモリ203に記憶される。
これについて以下具体的に説明する。
まず、図9の信号線の接続について以下説明する。
1.バンクメモリ104について
バンクメモリ104の16ビットのデータ出力信号線は、バンクメモリ104についてのマルチプレクサ129の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
このため、マルチプレクサ129が一番左を選択している状態では、バンクメモリ104出力の0ビット目がマルチプレクサ129出力の0ビット目に対応し、以下同様にバンクメモリ104の4ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の8ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の12ビット目がマルチプレクサ129出力の3ビット目に対応する。
このバンクメモリ104についてのマルチプレクサ129が一番左の一つ右隣りを選択している状態では、バンクメモリ104出力の1ビット目がマルチプレクサ129出力の0ビット目に対応し、バンクメモリ104の5ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の9ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の13ビット目がマルチプレクサ129出力の3ビット目に対応する。
このマルチプレクサ129が一番左の二つ右隣りを選択している状態では、バンクメモリ104出力の2ビット目がマルチプレクサ129出力の0ビット目に対応し、バンクメモリ104の6ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の10ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の14ビット目がマルチプレクサ129出力の3ビット目に対応する。
マルチプレクサ129が一番右を選択している状態では、バンクメモリ104出力の3ビット目がマルチプレクサ129出力の0ビット目に対応し、バンクメモリ104の7ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の11ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の15ビット目がマルチプレクサ129出力の3ビット目に対応する。
次にマルチプレクサ129の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ133の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ133の16ビットのデータ出力信号線は、図8とまったく同じく、そのまま出力信号として出力される。
2.バンクメモリ105について
同様にしてバンクメモリ105の16ビットのデータ出力信号線は、バンクメモリ105についてのマルチプレクサ130の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
マルチプレクサ130の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ134の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ134の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
3.バンクメモリ106について
同様にしてバンクメモリ106の16ビットのデータ出力信号線は、バンクメモリ106についてのマルチプレクサ131の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
マルチプレクサ131の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ135の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ135の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
4.メモリ107について
同様にしてメモリ107の16ビットのデータ出力信号線は、メモリ107についてのマルチプレクサ132の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
マルチプレクサ132の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ136の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ136の16ビットのデータ出力信号線は、そのまま出力信号として出力される。
以上のマルチプレクサとデマルチプレクサと各バンクメモリ104〜107との接続において、バンクメモリ104〜107のあるデータ位置のデータがいかにして90度回転後データとして出力されるかを次に説明する。
まず、各マルチプレクサ/デマルチプレクサは、当初どの部分を選択しているかを説明すると、129〜132までのすべてのマルチプレクサは、当初一番右を選択し、メモリ107についてのデマルチプレクサ136は、一番左を選択し、バンクメモリ104についてのデマルチプレクサ133は、一番左の一つ右隣りを選択し、バンクメモリ105についてのデマルチプレクサ134は、一番左の二つ右隣りを選択し、バンクメモリ106についてのデマルチプレクサ135は、一番右を選択する。
すなわち、マルチプレクサ129〜132はすべて入力側の3,7,11,15ビットを選択して出力し、メモリ107についてのデマルチプレクサ136は0〜3ビットを選択して出力し、バンクメモリ104についてのデマルチプレクサ133は、4〜7ビットを選択して出力し、バンクメモリ105についてのデマルチプレクサ134は、8〜11ビットを選択して出力し、バンクメモリ106についてのデマルチプレクサ135は12〜15ビットを選択して出力する状態になっている。
あるマシンサイクルにおいて読出制御回路4の制御によりメモリ107のアドレスを00番地にし、バンクメモリ104のアドレスを01番地にし、バンクメモリ105のアドレスを10番地にし、バンクメモリ106のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、メモリ107の00番地、バンクメモリ104の01番地、バンクメモリ105の10番地、バンクメモリ106の11番地のデータが読出され、90度回転後画像データ(ビットマップC参照)のアドレス0000に示す様にバンクメモリ104〜107上のデータの一部が出力される。
すなわち、メモリ107については、
メモリ107のアドレス00のビット0〜15のC0〜CFのデータ位置のデータが読出され、メモリ107についてのマルチプレクサ132によって“C3,C7,CB,CF”以外のデータ位置のデータは捨てられ、C3,C7,CB,CFのデータ位置のデータがメモリ107についてのデマルチプレクサ136により、90度回転後画像データのアドレス0000のビット0〜3に示す様に出力される。
また、バンクメモリ104については、
バンクメモリ104のアドレス01のビット0〜15のD0〜DFのデータ位置のデータが読出され、バンクメモリ104マルチプレクサ129によって“D3,D7,DB,DF”以外のデータ位置のデータは捨てられ、D3,D7,DB,DFのデータ位置のデータがバンクメモリ104デマルチプレクサ133により、90度回転後画像データのアドレス0000のビット4〜7に示す様に出力される。
さらに、バンクメモリ105については、
バンクメモリ105のアドレス10のビット0〜15のE0〜EFのデータ位置のデータが読出され、バンクメモリ105についてのマルチプレクサ130によって“E3,E7,EB,EF”以外のデータ位置のデータは捨てられ、E3,E7,EB,EFのデータ位置のデータがバンクメモリ105についてのデマルチプレクサ134により、90度回転後画像データのアドレス0000のビット8〜11に示す様に出力される。
バンクメモリ106については、
バンクメモリ106のアドレス11のビット0〜15のF0〜FFのデータ位置のデータが読出され、バンクメモリ106についてのマルチプレクサ131によって“F3,F7,FB,FF”以外のデータ位置のデータは捨てられ、F3,F7,FB,FFのデータ位置のデータがバンクメモリ106についてのデマルチプレクサ135により、90度回転後画像データのアドレス0000のビット12〜15に示す様に出力される。
次のマシンサイクルは、129〜132までのすべてのマルチプレクサは、読出制御回路4の制御により先ほどまで選択していた一番右の一つ左隣りを選択する。すなわち、マルチプレクサ129〜132はすべて入力側の2,6,10,14ビットを選択する。すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択する。この状態において、読出制御回路4の制御によりメモリ107のアドレスを00番地にし、バンクメモリ104のアドレスを01番地にし、バンクメモリ105のアドレスを10番地にし、バンクメモリ106のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、メモリ107の00番地、バンクメモリ104の01番地、バンクメモリ105の10番地、バンクメモリ106の11番地のデータが読出され、90度回転後画像データのアドレス0001に示す様にバンクメモリ104〜107上のデータの一部が出力される。
すなわち、先ほどと同様なので詳細の記述は省略するが、90度回転後画像データのアドレス0001にC2,C6,CA,CE,D2,D6,DA,DE,E2,E6,EA,EE,F2,F6,FA,FEが出力される。
次のマシンサイクルは、129〜132までのすべてのマルチプレクサは、読出制御回路4の制御により一番右の二つ左隣りを選択する。すなわち、マルチプレクサ129〜132はすべて入力側の1,5,9,13ビットを選択する。
すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4によりメモリ107のアドレスを00番地にし、バンクメモリ104のアドレスを01番地にし、バンクメモリ105のアドレスを10番地にし、バンクメモリ106のアドレスを11番地にして読出命令を出すことにより、90度回転後画像データのアドレス0010にC1,C5,C9,CD,D1,D5,D9,DD,E1,E5,E9,ED,F1,F5,F9,FDが出力される。
次のマシンサイクルは、129〜132までのすべてのマルチプレクサは、読出制御回路4の制御により一番左を選択する。すなわち、マルチプレクサ129〜132はすべて入力側の0,4,8,12ビットを選択する。
すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4によりメモリ107のアドレスを00番地にし、バンクメモリ104のアドレスを01番地にし、バンクメモリ105のアドレスを10番地にし、バンクメモリ106のアドレスを11番地にして読出命令を出すことにより、90度回転後画像データのアドレス0011にC0,C4,C8,CC,D0,D4,D8,DC,E0,E4,E8,EC,F0,F4,F8,FCが出力される。
次のマシンサイクルは、129〜132までのすべてのマルチプレクサは、読出制御回路4の制御によりまた最初の状態に戻り、一番右を選択する。
すなわち、マルチプレクサ129〜132はすべて入力側の3,7,11,15ビットを選択する。
一方、すべてのデマルチプレクサは先ほどまでと、読出制御回路4の制御により異なるところを選択する。具体的にはバンクメモリ106デマルチプレクサ135は一番左、すなわち、0〜3ビットのところを選択し、メモリ107デマルチプレクサ136は一番左の一つ右、すなわち、4〜7ビットのところを選択し、バンクメモリ104デマルチプレクサ133は一番左の二つ右、すなわち、8〜11ビットのところを選択し、バンクメモリ105デマルチプレクサ134は一番右、すなわち、12〜15ビットのところを選択する。
この状態において、読出制御回路4の制御によりバンクメモリ106のアドレスを00番地にし、メモリ107のアドレスを01番地にし、バンクメモリ104のアドレスを10番地にし、バンクメモリ105のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ106の00番地、メモリ107の01番地、バンクメモリ104の10番地、バンクメモリ105の11番地のデータが読出され、90度回転後画像データのアドレス0100に示す様にバンクメモリ104〜107上のデータの一部が出力される。すなわち、先ほどと同様なので詳細の記述は省略するが、90度回転後画像データのアドレス0100に83,87,8B,8F,93,97,9B,9F,A3,A7,AB,AF,B3,B7,BB,BFが出力される。
以下同様にして、すべてのデマルチプレクサの選択位置をまったく同じにしたまま先ほど同様に129〜132のマルチプレクサ選択をずらして行き、読出制御回路4によりバンクメモリ106のアドレスを00番地にし、メモリ107のアドレスを01番地にし、バンクメモリ104のアドレスを10番地にし、バンクメモリ105のアドレスを11番地にして読出命令を出すことにより、90度回転後画像データのアドレス0101〜0111に示す様なデータが得られる。
さらに同様にして、またデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4によりバンクメモリ105のアドレスを00番地にし、バンクメモリ106のアドレスを01番地にし、メモリ107のアドレスを10番地にし、バンクメモリ104のアドレスを11番地にして読出命令を出すことにより、90度回転後画像データのアドレス1000〜1011に示す様なデータが得られ、以下同様にしてまたデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4によりバンクメモリ104のアドレスを00番地にし、バンクメモリ105のアドレスを01番地にし、バンクメモリ106のアドレスを10番地にし、メモリ107のアドレスを11番地にして読出命令を出すことにより、90度回転後画像データのアドレス1100〜1111に示す様なデータが得られる。結局、以上の様にして、バンクメモリ104〜107から16マシンサイクルかけて90度回転後画像データを出力することができる。
次に、図10を参照して、配列変換読出処理回路202がコントローラ5からの選択信号Sを受けて180度回転後画像データを出力する処理について説明する。
180度回転は、図8の場合に対してmビットデータの前後が入れ替わり、mビットデータのグループの位置が180度回転している。そこで、0度回転のデータの各アドレスのnビットデータをさらにmビット単位で前後の入れ換えをしてアドレス位置が逆転すればよい。そのために、図8の各マルチプレクサは、逆に、各ビットの後ろから選択して前へと移動させる。また、mビットの配列を前後入れ換えるためにビット配列反転回路108が利用される。
以下、これについて説明する。
まず、図10の信号線の接続について以下説明する。
1.バンクメモリ104について
バンクメモリ104の16ビットのデータ出力信号線は、図8とまったく同じく、バンクメモリ104にちうてのマルチプレクサ125の入力側にビット0〜15がそのまま接続されている。
マルチプレクサ125の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ133の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ133の16ビットのデータ出力信号線は、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
2.バンクメモリ105について
同様にしてバンクメモリ105についての16ビットのデータ出力信号線は、マルチプレクサ126の入力側にビット0〜15がそのまま接続されている。マルチプレクサ126の4ビットの出力信号線は、デマルチプレクサ134の入力側にビット0〜3がそのまま接続されている。
デマルチプレクサ134の16ビットのデータ出力信号線は、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
3.バンクメモリ106について
同様にしてバンクメモリ106についての16ビットのデータ出力信号線は、マルチプレクサ127の入力側にビット0〜15がそのまま接続されている。マルチプレクサ127の4ビットの出力信号線は、デマルチプレクサ135の入力側にビット0〜3がそのまま接続されている。
デマルチプレクサ135の16ビットのデータ出力信号線は、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
4.メモリ107について
同様にしてメモリ107についての16ビットのデータ出力信号線は、マルチプレクサ128の入力側にビット0〜15がそのまま接続されている。マルチプレクサ128の4ビットの出力信号線は、メモリ107デマルチプレクサ136の入力側にビット0〜3がそのまま接続されている。
デマルチプレクサ136の16ビットのデータ出力信号線は、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
図10において、以下、バンクメモリ104〜107のあるデータ位置のデータがいかにして180度回転後データとして出力されるかを説明する。
そのため、まず各マルチプレクサ/デマルチプレクサが当初どの部分を選択しているかを説明する。125〜128までのすべてのマルチプレクサは当初一番右を選択し、メモリ107デマルチプレクサ136は、一番左を選択し、バンクメモリ104についてのデマルチプレクサ133は、一番左の一つ右隣りを選択し、バンクメモリ105についてのデマルチプレクサ134は、一番左の二つ右隣りを選択し、バンクメモリ106についてのデマルチプレクサ135は、一番右を選択する。
すなわち、マルチプレクサ125〜128はすべて入力側の12〜15ビットを選択して出力し、メモリ107についてのデマルチプレクサ136は、0〜3ビットを選択して出力し、バンクメモリ104についてのデマルチプレクサ133は4〜7ビットを選択して出力し、バンクメモリ105についてのデマルチプレクサ134は8〜11ビットを選択して出力し、バンクメモリ106についてのデマルチプレクサ135は12〜15ビットを選択して出力する状態になっている。
あるマシンサイクルにおいて読出制御回路4の制御によりバンクメモリ104〜107のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104〜107の11番地のデータが読出され、180度回転後画像データ(ビットマップD参照)のアドレス0000に示す様にバンクメモリ104〜107上のデータの一部が出力される。
メモリ107から説明すると、
メモリ107のアドレス11のビット0〜15の30〜3Fのデータ位置のデータが読出され、メモリ107についてのマルチプレクサ128によって“3C〜3F”以外のデータ位置のデータは捨てられ、3C〜3Fのデータ位置のデータがメモリ107についてのデマルチプレクサ136により、ビット配列反転回路108のビット0〜3に入力され、ビット配列反転回路108を通過することで、ビット12に“3F”が、ビット13に“3E”が、ビット14に“3D”が、ビット15に“3C”が、それぞれ出力される。したがって、180度回転後画像データのアドレス0000のビット12〜15に“3F,3E,3D,3C”が出力される。
また、バンクメモリ104については、
バンクメモリ104についてのアドレス11のビット0〜15の70〜7Fのデータ位置のデータが読出され、バンクメモリ104についてのマルチプレクサ125によって“7C〜7F”以外のデータ位置のデータは捨てられ、7C〜7Fのデータ位置のデータがバンクメモリ104についてのデマルチプレクサ133により、ビット配列反転回路108のビット4〜7に入力され、ビット配列反転回路108を通過することで、ビット8に“7F”が、ビット9に“7E”が、ビット10に“7D”が、ビット11に“7C”が、それぞれ出力され、180度回転後画像データのアドレス0000のビット8〜11に“7F,7E,7D,7C”が出力される。
さらに、バンクメモリ105については、
バンクメモリ105についてのアドレス11のビット0〜15のB0〜BFのデータ位置のデータが読出され、バンクメモリ105についてのマルチプレクサ126によって“BC〜BF”以外のデータ位置のデータは捨てられ、BC〜BFのデータ位置のデータがバンクメモリ105についてのデマルチプレクサ134により、ビット配列反転回路108のビット8〜11に入力され、ビット配列反転回路108を通過することで、ビット4に“BF”が、ビット5に“BE”が、ビット6に“BD”が、ビット7に“BC”が、それぞれ出力されて、180度回転後画像データのアドレス0000のビット4〜7に“BF,BE,BD,BC”が出力される。
バンクメモリ106については、
バンクメモリ106のアドレス11のビット0〜15のF0〜FFのデータ位置のデータが読出され、バンクメモリ106マルチプレクサ128によって“FC〜FF”以外のデータ位置のデータは捨てられ、FC〜FFのデータ位置のデータがバンクメモリ106デマルチプレクサ135により、ビット配列反転回路108のビット12〜15に入力され、ビット配列反転回路108を通過することで、ビット0に“FF”が、ビット1に“FE”が、ビット2に“FD”が、ビット3に“FC”が、出力され、180度回転後画像データのアドレス0000のビット0〜3に“FF,FE,FD,FC”が出力される。
次のマシンサイクルでは、125〜128までのすべてのマルチプレクサは、読出制御回路4の制御により先ほどまで選択していた一番右の一つ左隣りを選択する。すなわち、マルチプレクサ125〜128はすべて入力側の8〜11ビットを選択する。すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択する。この状態において、読出制御回路4によりバンクメモリ104〜107のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104〜107の11番地が読出され、180度回転後画像データのアドレス0001に示す様にバンクメモリ104〜107上のデータの一部が出力される。すなわち、先ほどと同様なので詳細の記述は省略するが、180度回転後画像データのアドレス0001にFB,FA,F9,F8,BB,BA,B9,B8,7B,7A,79,78,3B,3A,39,38が出力される。
次のマシンサイクルでは、125〜128までのすべてのマルチプレクサは、読出制御回路4の制御により一番右の二つ左隣りを選択する。すなわち、マルチプレクサ125〜128はすべて入力側の4〜7ビットを選択する。
すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4によりバンクメモリ104〜107のアドレスを11番地にして読出命令を出すことにより、180度回転後画像データのアドレス0010にF7,F6,F5,F4,B7,B6,B5,B4,77,76,75,74,37,36,35,34が出力される。
次のマシンサイクルでは、125〜128までのすべてのマルチプレクサは、読出制御回路4の制御により一番左を選択する。すなわち、マルチプレクサ125〜128はすべて入力側の0〜3ビットを選択する。
すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4によりバンクメモリ104〜107のアドレスを11番地にして読出命令を出すことにより、180度回転後画像データのアドレス0011にF3,F2,F1,F0,B3,B2,B1,B0,73,72,71,70,33,32,31,30が出力される。
次のマシンサイクルでは、125〜128までのすべてのマルチプレクサは、読出制御回路4の制御によりまた最初の状態に戻り、一番右を選択する。すなわち、マルチプレクサ125〜128はすべて入力側の12〜15ビットを選択する。
一方、すべてのデマルチプレクサは先ほどまでと、読出制御回路4の制御により異なるところを選択する。具体的にはバンクメモリ106デマルチプレクサ135は一番左、すなわち、0〜3ビットのところを選択し、メモリ107デマルチプレクサ136は一番左の一つ右、すなわち、4〜7ビットのところを選択し、バンクメモリ104デマルチプレクサ133は一番左の二つ右、すなわち、8〜11ビットのところを選択し、バンクメモリ105デマルチプレクサ134は一番右、すなわち、12〜15ビットのところを選択する。この状態において、読出制御回路4によりバンクメモリ104〜107のアドレスを10番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104〜107の10番地が読出され、180度回転後画像データのアドレス0100に示す様にバンクメモリ104〜107上のデータの一部が出力される。すなわち、先ほどと同様なので詳細の記述は省略するが、180度回転後画像データのアドレス0100にEF,EE,ED,EC,AF,AE,AD,AC,6F,6E,6D,6C,2F,2E,2D,2Cが出力される。
以下同様にして、すべてのデマルチプレクサの選択位置をまったく同じにしたまま先ほど同様に125〜128のマルチプレクサ選択をずらして行き、読出制御回路4によりバンクメモリ104〜107のアドレスを10番地のまま読出命令を出すことにより、180度回転後画像データのアドレス0101〜0111に示す様なデータが得られる。
さらに同様にして、またデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4によりバンクメモリ104〜107のアドレスを01番地にして読出命令を出すことにより、180度回転後画像データのアドレス1000〜1011に示す様なデータが得られ、以下同様にしてまたデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをすらして行き、読出制御回路4によりバンクメモリ104〜107のアドレスを00番地にして読出命令を出すことにより、180度回転後画像データのアドレス1100〜1111に示す様なデータが得られる。結局、以上の様にして、バンクメモリ104〜107から16マシンサイクルかけて180度回転後画像データを出力することができる。
次に、図11を参照して、配列変換読出処理回路202がコントローラ5からの選択信号Sを受けて270度回転後画像データを出力する処理について説明する。
270度回転の場合には、90度回転する図9のデータをマルチプレクサで逆に選択することでさらに180度回転させてビット配列の入換えを行う。
以下これについて説明する。
図11の信号線の接続について以下説明する。
バンクメモリ104について
バンクメモリ104の16ビットのデータ出力信号線は、図9とまったく同じく、バンクメモリ104マルチプレクサ129の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。このため、マルチプレクサ129が一番左を選択している状態では、バンクメモリ104出力の0ビット目がマルチプレクサ129出力の0ビット目に対応し、以下同様にバンクメモリ104の4ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の8ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の12ビット目がマルチプレクサ129出力の3ビット目に対応する。
マルチプレクサ129が一番左の一つ右隣りを選択している状態では、バンクメモリ104出力の1ビット目がマルチプレクサ129出力の0ビット目に対応し、バンクメモリ104の5ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の9ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の13ビット目がマルチプレクサ129出力の3ビット目に対応する。
マルチプレクサ129が一番左の二つ右隣りを選択している状態では、バンクメモリ104出力の2ビット目がマルチプレクサ129出力の0ビット目に対応し、バンクメモリ104の6ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の10ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の14ビット目がマルチプレクサ129出力の3ビット目に対応する。
マルチプレクサ129が一番右を選択している状態では、バンクメモリ104出力の3ビット目がマルチプレクサ129出力の0ビット目に対応し、バンクメモリ104の7ビット目がマルチプレクサ129出力の1ビット目に対応し、バンクメモリ104の11ビット目がマルチプレクサ129出力の2ビット目に対応し、バンクメモリ104の15ビット目がマルチプレクサ129出力の3ビット目に対応する。
次にマルチプレクサ129の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ133の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ133の16ビットのデータ出力信号線は、図10とまったく同じく、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
バンクメモリ105について、
同様にしてバンクメモリ105の16ビットのデータ出力信号線は、図9とまったく同じく、バンクメモリ105マルチプレクサ130の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
マルチプレクサ130の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ134の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ134の16ビットのデータ出力信号線は、図10とまったく同じく、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
バンクメモリ106について、
同様にしてバンクメモリ106の16ビットのデータ出力信号線は、図9とまったく同じく、マルチプレクサ131の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
マルチプレクサ131の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ135の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ135の16ビットのデータ出力信号線は、図10とまったく同じく、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
メモリ107について、
同様にしてメモリ107の16ビットのデータ出力信号線は、図9とまったく同じく、マルチプレクサ132の一番左の入力側にビット0,4,8,12が、一番左の一つ右隣りの入力側にビット1,5,9,13が、一番左の二つ右隣りの入力側にビット2,6,10,14が、一番右の入力側にビット3,7,11,15が、それぞれ接続されている。
マルチプレクサ132の4ビットの出力信号線は、図8とまったく同じく、デマルチプレクサ136の入力側にビット0〜3がそのまま接続されている。デマルチプレクサ136の16ビットのデータ出力信号線は、図10とまったく同じく、ビット配列反転回路108を通して、すなわち、ビット0はビット15へ、ビット1はビット14へ、ビット2はビット13へというようにビット配列を反転させて前後置換えた出力信号として出力される。
図11においてバンクメモリ104〜107のあるデータ位置のデータがいかにして270度回転後データとして出力されるかを説明する。
そのため、まず各マルチプレクサ/デマルチプレクサが当初どの部分を選択しているかを説明する。
129〜132までのすべてのマルチプレクサは当初一番左を選択し、バンクメモリ104についてのデマルチプレクサ133は、一番左を選択し、バンクメモリ105についてのデマルチプレクサ134は、一番左の一つ右隣りを選択し、バンクメモリ106についてのデマルチプレクサ135は、一番左の二つ右隣りを選択し、メモリ107についてのデマルチプレクサ136は、一番右を選択する。
すなわち、マルチプレクサ129〜132はすべて入力側の0,4,8,12ビットを選択して出力し、バンクメモリ104についてのデマルチプレクサ133は、0〜3ビットを選択して出力し、バンクメモリ105についてのデマルチプレクサ134は、4〜7ビットを選択して出力し、バンクメモリ106についてのデマルチプレクサ135は、8〜11ビットを選択して出力し、メモリ107についてのデマルチプレクサ136は、12〜15ビットを選択して出力する状態になっている。
あるマシンサイクルにおいて読出制御回路4により制御されて、バンクメモリ104のアドレスを00番地にし、バンクメモリ105のアドレスを01番地にし、バンクメモリ106のアドレスを10番地にし、メモリ107のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104の00番地、バンクメモリ105の01番地、バンクメモリ106の10番地、メモリ107の11番地のデータが読出され、270度回転後画像データ(ビットマップE参照)のアドレス0000に示す様にバンクメモリ104〜107上のデータの一部が出力される。
すなわち、バンクメモリ104のアドレス00のビット0〜15の00〜0Fのデータ位置のデータが読出され、マルチプレクサ129によって“00,04,08,0C”以外のデータ位置のデータは捨てられ、00,04,08,0Cのデータ位置のデータがバンクメモリ104デマルチプレクサ133を通り、さらにビット配列反転回路を通過することで図10と同様にして270度回転後画像データのアドレス0000のビット12〜15に示す様に出力される。
バンクメモリ105のアドレス01のビット0〜15の10〜1Fのデータ位置のデータが読出され、マルチプレクサ130によって“10,14,18,1C”以外のデータ位置のデータは捨てられ、10,14,18,1Cのデータ位置のデータがバンクメモリ105デマルチプレクサ134により、270度回転後画像データのアドレス0000のビット8〜11に示す様に出力される。
バンクメモリ106のアドレス10のビット0〜15の20〜2Fのデータ位置のデータが読出され、マルチプレクサ131によって“20,24,28,2C”以外のデータ位置のデータは捨てられ、20,24,28,2Cのデータ位置のデータがバンクメモリ106デマルチプレクサ135により、270度回転後画像データのアドレス0000のビット4〜7に示す様に出力される。
メモリ107のアドレス11のビット0〜15の30〜3Fのデータ位置のデータが読出され、マルチプレクサ132によって“30,34,38,3C”以外のデータ位置のデータは捨てられ、30,34,38,3Cのデータ位置のデータがメモリ107デマルチプレクサ136により、270度回転後画像データのアドレス0000のビット0〜3に示す様に出力される。
次のマシンサイクルでは、129〜132までのすべてのマルチプレクサは、読出制御回路4により制御されて、先ほどまで選択していた一番左の一つ右隣りを選択する。すなわち、マルチプレクサ129〜132はすべて入力側の1,5,9,13ビットを選択する。すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択する。この状態において、読出制御回路4によりバンクメモリ104のアドレスを00番地にし、バンクメモリ105のアドレスを01番地にし、バンクメモリ106のアドレスを10番地にし、メモリ107のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ104の00番地、バンクメモリ105の01番地、バンクメモリ106の10番地、メモリ107の11番地のデータが読出され、270度回転後画像データのアドレス0001に示す様にバンクメモリ104〜107上のデータの一部が出力される。すなわち、先ほどと同様なので詳細の記述は省略するが、270度回転後画像データのアドレス0001に3D,39,35,31,2D,29,25,21,1D,19,15,11,0D,09,05,01が出力される。
次のマシンサイクルでは、129〜132までのすべてのマルチプレクサは、読出制御回路4により制御されて、一番左の二つ右隣りを選択する。すなわち、マルチプレクサ129〜132はすべて入力側の2,6,10,14ビットを選択する。
すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4によりバンクメモリ104のアドレスを00番地にし、バンクメモリ105のアドレスを01番地にし、バンクメモリ106のアドレスを10番地にし、メモリ107のアドレスを11番地にして読出命令を出すことにより、270度回転後画像データのアドレス0010に3E,3A,36,32,2E,2A,26,22,1E,1A,16,12,0E,0A,06,02が出力される。
次のマシンサイクルでは、129〜132までのすべてのマルチプレクサは、一番右を選択する。すなわち、マルチプレクサ129〜132はすべて入力側の3,7,11,15ビットを選択する。
すべてのデマルチプレクサは先ほどまでと、まったく同じところを選択し、この状態において、読出制御回路4によりバンクメモリ104のアドレスを00番地にし、バンクメモリ105のアドレスを01番地にし、バンクメモリ106のアドレスを10番地にし、メモリ107のアドレスを11番地にして読出命令を出すことにより、270度回転後画像データのアドレス0011に3F,3B,37,33,2F,2B,27,23,1F,1B,17,13,0F,0B,07,03が出力される。
次のマシンサイクルでは、129〜132までのすべてのマルチプレクサは、また最初の状態に戻り、一番左を選択する。すなわち、マルチプレクサ129〜132はすべて入力側の0,4,8,12ビットを選択する。
一方、すべてのデマルチプレクサは先ほどまでと、異なるところを選択する。具体的にはバンクメモリ105についてのデマルチプレクサ134は一番左すなわち、0〜3ビットのところを選択し、バンクメモリ106についてのデマルチプレクサ135は一番左の一つ右、すなわち、4〜7ビットのところを選択し、メモリ107についてのデマルチプレクサ136は一番左の二つ右、すなわち、8〜11ビットのところを選択し、バンクメモリ104についてのデマルチプレクサ133は一番右、すなわち、12〜15ビットのところを選択する。この状態において、読出制御回路4によりバンクメモリ105のアドレスを00番地にし、バンクメモリ106のアドレスを01番地にし、メモリ107のアドレスを10番地にし、バンクメモリ104のアドレスを11番地にして読出命令を出すことにより、各マルチプレクサ/デマルチプレクサが前述した状態になっているため、バンクメモリ105の00番地、バンクメモリ106の01番地、メモリ107の10番地、バンクメモリ104の11番地のデータが読出され、270度回転後画像データのアドレス0100に示す様にバンクメモリ104〜107上のデータの一部が出力される。
すなわち、先ほどと同様なので詳細の記述は省略するが、270度回転後画像データのアドレス0100に7C,78,74,70,6C,68,64,60,5C,58,54,50,4C,48,44,40が出力される。
以下同様にして、すべてのデマルチプレクサの選択位置をまったく同じにしたまま先ほど同様に129〜132のマルチプレクサ選択をずらして行き、読出制御回路4の制御によりバンクメモリ105のアドレスを00番地にし、バンクメモリ106のアドレスを01番地にし、メモリ107のアドレスを10番地にし、バンクメモリ104のアドレスを11番地にして読出命令を出すことにより、270度回転後画像データのアドレス0101〜0111に示す様なデータが得られる。
さらに同様にして、またデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4によりバンクメモリ106のアドレスを00番地にし、メモリ107のアドレスを01番地にし、バンクメモリ104のアドレスを10番地にし、バンクメモリ105のアドレスを11番地にして読出命令を出すことにより、270度回転後画像データのアドレス1000〜1011に示す様なデータが得られ、以下同様にしてまたデマルチプレクサの選択位置をずらして、その状態でマルチプレクサをずらして行き、読出制御回路4によりメモリ107のアドレスを00番地にし、バンクメモリ104のアドレスを01番地にし、バンクメモリ105のアドレスを10番地にし、バンクメモリ106のアドレスを11番地にして読出命令を出すことにより、270度回転後画像データのアドレス1100〜1111に示す様なデータが得られる。結局、以上の様にして、バンクメモリ104〜107から16マシンサイクルかけて270度回転後画像データを出力することができる。
以上、図7の配列変換読出処理回路202の詳細を、説明の便宜上、図8〜図11を用いて説明してきたが、図8〜図11の回路は、それぞれまったく別々の論理回路を設けてもよいが、このような論理回路を設けなくとも、マルチプレクサ125〜128とマルチプレクサ129〜132とでメモリとの間の接続ビット位置が異なる点と、ビット配列反転回路108が必要なケースと不要なケースの二通りがある点を除いて共通である。このことに着目し、さらに図示してない制御系でメモリのアドレス制御と、マルチプレクサ/デマルチプレクサの選択制御をすることにより、図7に概略ブロック図で示す様な形でデータ系を共通化することが可能である。
ところで、以上の実施例は16×16ビットサイズの例で説明してきたが、それに限らず、4×4,9×9,16×16(上記実施例のケース),25×25,36×36,49×49,64×64,81×81,100×100,...,n×n(ここでmは2以上の整数であり、nはmの2乗で計算する)の各ビットサイズに摘要可能である。
上記実施例、すなわち、16×16ビットサイズの例では3個の入力バッファ(16ビット幅)を設け、16個のメモリマルチプレクサ(16ビットから4ビットを選択)を設け、4個のメモリ(16ビット×4アドレスから成る)を設け、4個のメモリ読出“0度/180度回転用”マルチプレクサ(16ビットから4ビット選択)を設け、4個のメモリ読出“90度/270度回転用”マルチプレクサ(16ビットから4ビット選択)を設け、4個のメモリデマルチプレクサ(4ビットを入力して、16ビットの内のある4ビットのみ選択)を設け、1個の“180度/270度回転用”ビット配列反転回路(16ビット幅)を設けた。
一般にn×nビットサイズの場合は、“m−1”個の入力バッファ(nビット幅)を設け、n個のメモリマルチプレクサ(nビットからmビットを選択)を設け、m個のメモリ(nビット×mアドレスから成る)を設け、m個のメモリ読出“0度/180度回転用”マルチプレクサ(nビットからmビット選択)を設け、m個のメモリ読出“90度/270度回転用”マルチプレクサ(nビットからmビット選択)を設け、m個のメモリデマルチプレクサ(mビットを入力して、nビットの内のあるmビットのみ選択)を設け、1個の“180度/270度回転用”ビット配列反転回路(nビット幅)を設けることで実現可能である。
また、上記でn<(mの2乗)のケース、例えばm=4でn=15、すなわち、15×15ビットサイズの場合等でも、例えば16×16のケースの論理回路に、一部未使用部を“0”固定する(強制的に“0”を入力する)等の変形を加えることで実現可能である。さらに、例えば16×12ビットサイズの様な長方形ビットサイズの場合も、上記同様例えば16×16のケースの論理回路に、一部未使用部を“0”固定する(強制的に“0”を入力する)等の変形を加えることで実現可能である。もちろん、強制的に“0”にしたところを削除することで、回転後の形状も長方形ビットサイズとして取出すことも可能である。
以上の実施例では、メモリはあるビット幅×アドレス構成の部品を使うことで説明したが、ビット幅×アドレス構成の異る部品を複数個組み合わせる方法でも、また専用のLSI等を作製すれば1個でも実現可能である。
他のマルチプレクサ、デマルチプレクサ、ビット配列反転回路も同様に、他の構成のものを1個または複数個で実現することも可能である。
また、以上の実施例では説明の都合上、16×16ビットサイズの、すなわち、フォントデータ等比較的小さなビットサイズの回転について説明してきたが、もっと大きな例えば1ページ分のサイズのデータの回転でも、まったく同じ考えで実現可能である。
さらにこの発明は、複数の機器から構成されるシステムの一部に適用してもよいし、一つの機器からなる装置に適用してもよい。また以上の実施例はすべてハードウェア論理で説明してきたが、その一部または全部をソフトウェア化することも可能である。
以上説明してきたが、実施例では、プリンタに内蔵される画像データ回転処理装置を説明しているが、この発明は、これに限定されるものではない。したがって、図4で説明した実施例におけるMPUは、装置側に内蔵されていてもよく、また、出力バッファメモリ203は、この装置とは別の装置にあってもよい。さらに、画像データメモリ100は、バンクメモリ構成である必要はなく、プログラム処理にて内部メモリ等の作業領域に記憶されるものであってもよい。
図1は、この発明の一実施例の画像データ回転処理装置におけるブロック分割による画像データメモリ書込み処理の説明図である。 図2には、その書込画像データと画像データメモリのビットマップの説明図である。 図3は、90度,180度、270度の回転処理のビットマップによる説明図である。 図4は、この発明を適用した一実施例のプリンタ等に内蔵される画像データ回転処理装置の全体的な構成を示すブロック図である。 図5は、その画像データメモリに記憶する画像データの配列変換書込処理回路のブロック図である。 図6は、画像データに設定される前記ブロックをアドレス方向に対してビット幅方向を優先させて1からj×kの順位付けをした場合の説明図である。 図7は、配列変換読出処理回路のブロック図である。 図8は、配列変換読出処理回路の0度回転させるデータの配列変換読出処理のための説明図である。 図9は、配列変換読出処理回路の90度回転させるデータの配列変換読出処理のための説明図である。 図10は、配列変換読出処理回路の180度回転させるデータの配列変換読出処理のための説明図である。 図11は、配列変換読出処理回路の270度回転させるデータの配列変換読出処理のための説明図である。
符号の説明
1…画像データ回転処理装置、
2…書込制御回路、3…クロック発生回路、
4…読出制御回路、5…コントローラ、10…MPU、
100…画像データメモリ、
101〜103…入力バッファ、
104,105,106,107…バンクメモリ、
108…ビット配列反転回路、
109〜132…マルチプレクサ、
133〜136…デマルチプレクサ、137…書込側マルチプレクサ、
138…読出側マルチプレクサ/デマルチプレクサ、
200…回転前画像データ、
201…配列変換書込処理回路、
202…配列変換読出処理回路、
203…出力バッファメモリ、

Claims (14)

  1. jを1以上の整数とし,k,mを2以上の整数とし、n=km、L=jkとして、Lアドレス×nビットサイズの画像データを格納するメモリを有する画像データ回転処理装置において、
    前記画像データのアドレス方向にk個単位、ビット幅方向にmビット単位で前記メモリに書込まれる画像データに対してkアドレス×mビットサイズのj×k個のブロックを設定して、アドレス方向の各ブロックのmビットデータk個を、アドレスの増加する方向と前記メモリのビット幅方向とを対応させて前記メモリの1アドレス分のnビットデータに配列変換して各前記ブロックを前記メモリの1アドレスに割当てて記憶する第1のmビットデータ配列変換手段と、前記メモリの各アドレスがアクセスされて前記配列変換された前記画像データが順次読出されたときに読出された前記mビット単位のデータを所定の回転角度の1アドレスnビットの配列データに変換して前記画像データを生成する第2のmビットデータ配列変換手段とを有する画像データ回転処理装置。
  2. 前記第1のmビットデータ配列変換手段は、前記画像データの1アドレス分のnビットのデータ記憶される分割されたmビットデータをそれが所属する前記ブロックが割当てられる前記メモリ上のアドレス位置に分配することで前記配列変換を行う請求項1記載の画像データ回転処理装置。
  3. 前記第1のmビットデータ配列変換手段は、k個の第1のマルチプレクサを有し、前記k個の第1のマルチプレクサは、前記画像データの1アドレス分のk個のnビットデータを順次受けて、特定のブロック位置のmビットのデータk個を順次選択して前記メモリの1アドレスのビット幅方向のmビットデータk個に変換して前記メモリに出力する請求項2記載の画像データ回転処理装置。
  4. jは2以上の整数であり、前記画像データの1アドレス分のnビットのデータ記憶される分割されたmビットデータを分配する前記メモリ上の1アドレスの位置は、前記メモリのkアドレスおきである請求項2記載の画像データ回転処理装置。
  5. j=kとして、前記アドレス方向もk個のブロックに分割して、前記ブロックをk×k個として、前記メモリをk個のアドレスを持つnビット幅のk個のメモリに分割してそれぞれ設け、前記第1のmビットデータ配列変換手段は、前記メモリに書込まれる画像データにおけるkアドレスあるいはk−1アドレス分のnビットデータを記憶する記憶手段を有していて、この記憶手段に記憶された前記kアドレスあるいは前記k−1アドレス分+読出1アドレス分の画像データそれぞれをmビットデータに分割して前記配列変換を行いk個の前記分割されたメモリのそれぞれの1アドレスに配列変換されたnビットビットデータを同時に記憶する請求項4記載の画像データ回転処理装置。
  6. k>=2として、前記画像データに設定される前記ブロックをアドレス方向に対してビット幅方向を優先させて1からj×kの順位付けをした場合において、前記第1のmビットデータ配列変換手段は、前記分割されたk個のメモリの最初のアドレスを前記順位の1〜kの前記ブロックに順次割当て、2番目のアドレスを前記順位の2k,k+1〜2k−1の前記ブロックに順次割当て、3以上のアドレスがある場合には3番目のアドレスを前記順位の3k−1,3k,2k+1〜3k−2の前記ブロックに順次割当て、一般式Pk−(P−2)〜Pk〜Pk−(P−1)(ただし、Pは2以上の整数)において前記分割されたk個の各メモリのアドレスの増加に従って先頭ブロックを増加分に対応して順次分割された次のメモリに繰下げかつ分割された最後のメモリの次は分割された最初のメモリへと循環させてシフトさせて割当てて前記ブロックのmビットデータを記憶する請求項5記載の画像データ回転処理装置。
  7. 前記第1のmビットデータ配列変換手段は、k列×j行のk×j個の第1のマルチプレクサを有し、前記記憶手段は、前記メモリに書込まれる画像データの1アドレス分のnビットのデータを順次受けるk−1アドレス分を記憶するk−1個のレジスタからなり、前記k列の第1のマルチプレクサのうちのk−1列は、それぞれ前記レジスタに対応して設けられて前記レジスタを介して前記画像データの1アドレス分のデータを順次受け、残りの1列の前記第1のマルチプレクサは、前記画像データの1アドレス分のデータを直接受け、各行の前記k個の第1のマルチプレクサは、前記画像データの1アドレスにおけるnビットのデータのうちの特定のブロック位置のmビットのデータk個を順次選択して前記メモリの1アドレスのビット幅方向のデータk個に変換し、前記k列×j行の第1のマルチプレクサは、前記k個の分割されたメモリの各アドレスに同時にk個のmビットのデータをnビットデータとして記憶する請求項6記載の画像データ回転処理装置。
  8. 前記第2のmビットデータ配列変換手段は、前記メモリの各アドレスから読み出される配列変換されたnビットのデータを受けて前記所定の回転角度に応じて前記mビット単位のデータを分配するk個のマルチプレクサを有し、k個の前記マルチプレクサのそれぞれは、前記所定の回転角に応じて前記メモリの1アドレスから読出される前記nビットのデータのうちのビット幅方向における異なる所定のmビットのデータあるいはこのmビットデータのうちの所定の位置のビットを選択する請求項2記載の画像データ回転処理装置。
  9. 前記第2のmビットデータ配列変換手段は、前記メモリの各アドレスから読み出される配列変換されたnビットのデータを受けて前記所定の回転角度に応じて前記mビット単位のデータを分配するk個の第2のマルチプレクサを有し、k個の前記第2のマルチプレクサのそれぞれは、前記所定の回転角に応じて前記メモリの1アドレスから読出される前記nビットのデータのうちのビット幅方向における異なる所定のmビットのデータあるいはこのmビットデータのうちの所定の位置のビットを選択する請求項8記載の画像データ回転処理装置。
  10. 前記第1のマルチプレクサは、マシンサイクルに対応して選択された前記mビットのデータを分配し、前記第2のマルチプレクサは、前記マシンサイクルに対応して選択された前記mビットのデータあるいはこのmビットデータのうちの所定の位置のビットを分配する請求項9記載の画像データ回転処理装置。
  11. 前記所定の回転角は、0度,90度,180度、270度から選択された角度である請求項2記載の画像データ回転処理装置。
  12. 前記第2のマルチプレクサは、前記メモリの各アドレスから読出されたnビットのデータを受けて0度あるいは180度回転のいずれかに回転させるmビットデータの選択が可能なk個の第1の回転データ選択用のマルチプレクサと、前記メモリの各アドレスから読出されたnビットのデータを受けて90度あるいは270度回転のいずれかに回転させるmビットデータの選択が可能なk個の第2の回転データ選択用のマルチプレクサと、前記第1および第2の回転データ選択用のマルチプレクサから選択された前記mビットデータを受けて、選択された回転角のnビット配列データを復元するためのデマルチプレクサと、このデマルチプレクサのmビットを受けてnビット幅の“180度あるいは270度回転のためのビット配列反転回路とを有し、いずれかの回転角が選択される請求項11記載の画像データ回転処理装置。
  13. 前記メモリは、k個のバンクあるいはk個の独立のメモリからなり、前記第1のmビットデータ配列変換手段は、前記画像データをmアドレス×mビットサイズのn個のブロックに分けて、前記画像データに設定される前記ブロックをアドレス方向に対してビット幅方向を優先させて1からj×kの順位付けをした場合において、1番目のブロックのnビットのデータを1番目の独立の前記メモリあるいは前記バンクの1番目のアドレスで示される領域に書込み、2番目のブロックのnビットのデータを2番目の独立の前記メモリあるいは前記バンクの1番目のアドレスで示される領域に書込み、以下同様にしてk番目のブロックのnビットのデータをk番目の独立の前記メモリあるいは前記バンクの1番目のアドレスで示される領域への書込みまで行い、次に、k+1番目のブロックのnビットのデータを2番目の独立の前記メモリあるいは前記バンクの2番目のアドレスで示される領域に書込み、k+2番目のブロックのnビットのデータを3番目の前記メモリあるいは前記バンクの2番目のアドレスで示される領域に書込み、以下同様にして2k番目のブロックのnビットのデータを1番目の独立の前記メモリあるいは前記バンクの2番目のアドレスで示される領域への書込みまで行い、次に、2k+1番目のブロックのnビットのデータを3番目の独立の前記メモリあるいは前記バンクの3番目のアドレスで示される領域に書込み、以下同様にして書込む独立の前記メモリあるいは前記バンクとそのアドレスを一つずつずらして行きn番目のブロックまですべて書込んで行く請求項1記載の画像データ回転処理装置。
  14. 前記メモリに記憶したデータから所望の回転をしたデータを得るための、前記メモリから読出したnビットからmビット選択する0度あるいは180度のいずれかを選択する第1のマルチプレクサをm個設け、前記メモリから読出したnビットからmビット選択する90度あるいは270度のいずれかの選択が可能な第2のマルチプレクサをm個設け、前記第1および第2のマルチプレクサから選択的に選択されたmビットが入力されてnビットの内のあるmビットのみ選択するデマルチプレクサをm個設け、このm個のデマルチプレクサの出力を受けてnビット幅の180度あるいは270度回転のためのビット配列反転回路を設けた請求項13記載の画像データ回転処理装置。
JP2003270919A 2003-07-04 2003-07-04 画像データ回転処理装置 Pending JP2005022387A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003270919A JP2005022387A (ja) 2003-07-04 2003-07-04 画像データ回転処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003270919A JP2005022387A (ja) 2003-07-04 2003-07-04 画像データ回転処理装置

Publications (1)

Publication Number Publication Date
JP2005022387A true JP2005022387A (ja) 2005-01-27

Family

ID=34190743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003270919A Pending JP2005022387A (ja) 2003-07-04 2003-07-04 画像データ回転処理装置

Country Status (1)

Country Link
JP (1) JP2005022387A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006218765A (ja) * 2005-02-10 2006-08-24 Seiko Epson Corp 印刷装置及び印刷方法
KR100804898B1 (ko) * 2005-07-25 2008-02-20 세이코 엡슨 가부시키가이샤 이미지 회전을 위한 방법 및 장치
WO2012070683A1 (ja) * 2010-11-24 2012-05-31 日本電気株式会社 メモリ制御装置、及びメモリ制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006218765A (ja) * 2005-02-10 2006-08-24 Seiko Epson Corp 印刷装置及び印刷方法
JP4595578B2 (ja) * 2005-02-10 2010-12-08 セイコーエプソン株式会社 印刷装置及び印刷方法
KR100804898B1 (ko) * 2005-07-25 2008-02-20 세이코 엡슨 가부시키가이샤 이미지 회전을 위한 방법 및 장치
WO2012070683A1 (ja) * 2010-11-24 2012-05-31 日本電気株式会社 メモリ制御装置、及びメモリ制御方法
JP5811099B2 (ja) * 2010-11-24 2015-11-11 日本電気株式会社 メモリ制御装置、及びメモリ制御方法

Similar Documents

Publication Publication Date Title
JP4968778B2 (ja) 表示制御用半導体集積回路
KR20070061538A (ko) Simd 프로세서 및 데이터 통신 방법
JP2011053671A (ja) 半導体集積回路
JP2005022387A (ja) 画像データ回転処理装置
JP2007213055A (ja) シンクロナスダイナミックランダムアクセスメモリを用いたフレームデータの転送方法及びフレームデータのソースドライバへの転送方法並びにタイミング制御モジュール
WO2005038655A1 (ja) 半導体メモリ装置及びコントローラ並びにその読み書き制御方法
JP3238758B2 (ja) 液晶表示装置の駆動回路
JP3735822B2 (ja) 半導体メモリ装置のデコーディング回路及びデコーディング方法
JPH09198862A (ja) 半導体メモリ
KR20080059042A (ko) 노광 데이터 작성 장치
KR100494980B1 (ko) 범위선택 가능한 어드레스 디코더와 이를 이용한 고속그래픽 처리용 프레임 메모리 장치
US20040186869A1 (en) Transposition circuit
JP2887369B2 (ja) 2次元配列データアクセス装置
JP2824976B2 (ja) 2次元配列データ回転装置
JP3288327B2 (ja) 映像メモリ回路
JPH02148237A (ja) データのブロツクを記憶させ且つ操作を加えるための方法
JP2546247B2 (ja) 文字拡大縮小回路
JP2855899B2 (ja) 機能メモリ
JP2787958B2 (ja) 文字パターン発生器
JPH0241267A (ja) 像形成装置
JPS59178669A (ja) 3次元メモリモジユ−ルを備える記憶装置
KR100308586B1 (ko) 영상재생장치
JPS6095482A (ja) イメ−ジ回転処理方式
JPS62119679A (ja) 回転・縮小用画像記憶装置
JPS61156195A (ja) イメ−ジデ−タ回転回路