A.実施例:
・印刷システムの構成:
次に、本発明の実施の形態を実施例に基づき説明する。図1は、印刷システムの概略構成を示す説明図である。印刷システムは、印刷装置としてのプリンタ20と、コンピュータ90と、を備えている。プリンタ20は、コネクタ80を介して、コンピュータ90と接続されている。
プリンタ20は、副走査送り機構と、主走査送り機構と、ヘッド駆動機構と、主制御部40と、を備えている。副走査送り機構は、紙送りモータ22とプラテン26とを備えており、紙送りモータの回転をプラテンに伝達することによって用紙PAを副走査方向に搬送する。主走査送り機構は、キャリッジモータ32と、プーリ38と、キャリッジモータとプーリとの間に張設された駆動ベルト36と、プラテン26の軸と並行に設けられた摺動軸34と、を備えている。摺動軸34は、駆動ベルト36に固定されたキャリッジ30を摺動可能に保持している。キャリッジモータ32の回転は、駆動ベルト36を介してキャリッジ30に伝達され、キャリッジ30は、摺動軸34に沿ってプラテン26の軸方向(主走査方向)に往復動する。ヘッド駆動機構は、キャリッジ30に搭載された印刷ヘッドユニット60を備えており、印刷ヘッドを駆動して用紙PA上にインクを吐出させる。主制御部40は、上述した各機構を制御して印刷処理を実現する。主制御部40は、例えば、コンピュータ90を介してユーザの印刷ジョブを受信し、受信した印刷ジョブの内容に基づき、上述した各機構を制御して印刷を実行する。印刷ヘッドユニット60には、後述するように、複数のインクカートリッジを脱着自在に装着可能である。すなわち、印刷ヘッドにインクを供給するインクカートリッジが、ユーザの操作により取り付け、取り外し可能に、印刷ヘッドユニット60に備えられる。プリンタ20は、さらに、ユーザがプリンタの各種の設定を行ったり、プリンタのステータスを確認したりするための操作部70を備えている。
図2〜図4を参照して、インクカートリッジ(液体容器)の構成と共に、プリンタ20の構成についてさらに説明する。図2は、実施例に係るインクカートリッジの構成を示す斜視図である。図3は、実施例に係るプリント回路基板(以降、単に回路基板という。)の構成を示す図である。図4は、印刷ヘッドユニット60の構成を説明する図である。
インクカートリッジ100は、インクを収容する本体101と、回路基板120と、センサ110と、を備えている。本体101の底面は、印刷ヘッドユニット60に装着されたときに、印刷ヘッドユニット60に対してインクを供給するためのインク供給口104を備えている。本体101には、インクを収容するインク室150が形成されている。インク供給口104は、インク室150と連通している。インク供給口104の開口104opは、フィルム104fによって、封がされている。インクカートリッジ100を印刷ヘッドユニット60(図4)に装着することによって、フィルム104fが破られ、インク供給針6がインク供給口104に挿入される(図4)。インク室150に収容されているインクは、インク供給針6を介して、プリンタ20の印刷ヘッドに供給される。
センサ110は、本体101の内部に固定されている。センサ110は、後述するように、圧電体を2枚の対向する電極で挟んだ圧電素子を含み、インク残量の検出に用いられる。本体101は、前壁101wf(−Y方向の壁)と、底壁101wb(+Z方向の壁)を含んでいる。前壁101wfは、底壁101wbと交差(本実施例では、実質的に直交)している。回路基板120は、前壁101wfに固定されている。回路基板120は、外表面に、端子210〜270を備えている。
前壁101wfには、2つの突起P1、P2が形成されている。これらの突起P1、P2は、−Y方向に突出している。回路基板120には、これらの突起P1、P2をそれぞれ受け入れる穴122と切り欠き121とが、形成されている(図3(A))。穴122は、回路基板120のインク供給口104側の端部(+Z方向の端)の中央に形成され、切り欠き121は、回路基板120のインク供給口104とは反対側の端部(−Z方向の端)の中央に形成されている。回路基板120が前壁101wfに装着された状態では、突起P1、P2は、穴122、切り欠き121きに、それぞれ挿入される。なお、インクカートリッジ100の製造時に、回路基板120が前壁101wfに装着された後には、これらの突起P1、P2の先端が潰される。これにより、回路基板120は、前壁101wfに固定される。
さらに、前壁101wfには、係合突起101eが設けられている。係合突起101eとホルダ4(図4)の係合口4eとの係合によって、インクカートリッジ100がホルダ4から意図せずに外れることが、防止される。
図4を参照して印刷ヘッドユニット60の構成と、印刷ヘッドユニット60にインクカートリッジ100が装着される様子を説明する。図4に示すように、印刷ヘッドユニット60は、ホルダ4と、接続機構400と、印刷ヘッド5と、サブ制御基板500とを備えている。サブ制御基板500には、インクカートリッジ100の回路基板120の端子210〜270の各々に、接続機構400を介して、各々接続される端子群と、キャリッジ回路50が実装されている。ホルダ4は、複数のインクカートリッジ100を装着可能に構成され、印刷ヘッド5の上に配置されている。接続機構400は、後述するインクカートリッジ100の回路基板120に設けられた各端子と、サブ制御基板500に設けられた端子群の中の対応する端子とを電気的に接続するための導電性の接続端子410〜470が、回路基板120の端子ごとに設けられている。印刷ヘッド5の上には、インクカートリッジ100から印刷ヘッド5にインクを供給するための上述したインク供給針6が配置されている。印刷ヘッド5は、複数のノズルと、複数の圧電素子(ピエゾ素子)と、を含み、各圧電素子に印加される電圧に応じて各ノズルからインク滴を吐出し、用紙PA上にドットを形成する。キャリッジ回路50は、主制御部40と協働してインクカートリッジ100に関連する制御を行うための回路であり、以下ではサブ制御部ともいう。
インクカートリッジ100は、図4におけるZ軸の正方向(挿入方向R)に挿入されることにより、ホルダ4に装着される。このようにして、インクカートリッジ100は、プリンタ20に着脱可能に装着される。また、インクカートリッジ100に搭載された回路基板120は、ユーザによるインクカートリッジ100の装着、脱着に伴い、プリンタ20に装着され、また、脱着されることになる。インクカートリッジ100がプリンタ20に装着されたときには、回路基板120はプリンタ20に電気的に接続される。
図3に戻って、回路基板120について、さらに説明する。図3(A)における矢印Rは、上述したインクカートリッジ100の挿入方向を示している。図3(B)に示すように、回路基板120は、プリンタ20と接続される面の裏側の面である裏面に記憶装置130を備え、プリンタ20と接続される面である表面に7つの端子からなる端子群を備えている。記憶装置130は、本実施例では、強誘電体メモリセルアレイを含む半導体記憶装置である。本発明のデータ記憶部に相当するメモリセルアレイには、例えば、インクの消費量やインクの色などのインクまたはインクカートリッジ100に関連する種々のデータが格納される。インク消費量は、インクカートリッジ内に収容されたインクについて、印刷の実行やヘッドのクリーニングに伴い消費されるインク量の累計を示すデータである。インク量そのもので示されたデータであってもよいし、あらかじめインクカートリッジ内に収容されたインクの量をもとにした基準量に対して消費されたインク量の割合を示すデータであっても良い。
回路基板120の表面側の各端子は、略矩形状に形成され、挿入方向Rと略垂直な列を2列形成するように配置されている。2つの列のうち、挿入方向R側(挿入されるときの挿入方向の先端側)、すなわち、図3(A)における下側に位置する列を下側列と呼び、挿入方向Rの反対側、すなわち、図3(A)における上側に位置する列を上側列と呼ぶ。ここで、上側、下側という用語は、図3を用いて説明するために便宜的に用いた用語である。上側列を形成する端子と、下側列を形成する端子は、互いの端子中心が挿入方向Rに並ばないように、互い違いに配置され、いわゆる千鳥状の配置を構成している。
上側列を形成するように配列されている端子は、図3(A)中左側から、接地端子210、電源端子220である。下側列を形成するように配列されている端子は、図3(A)中左側から、第1のセンサ駆動用端子230、リセット端子240、クロック端子250、データ端子260、第2のセンサ駆動用端子270である。左右方向の中央付近の5つの端子、すなわち、接地端子210、電源端子220、リセット端子240、クロック端子250、データ端子260は、それぞれ、図示しない回路基板120の表裏面の配線パターン層や回路基板120に配置されたスルホールを介して、記憶装置130に接続されている。下側列の両端に位置する2つの端子、すなわち、第1のセンサ駆動用端子230および第2のセンサ駆動用端子270は、センサ110に含まれる圧電素子の一方の電極および他方の電極にそれぞれ接続されている。
回路基板120では、記憶装置130に接続された5つの端子と、センサ110に接続された2つの端子は、互いに近接して配置されている。このため、プリンタ20側の接続機構400においても、記憶装置130に接続された5つの端子に対応する接続端子410、420、440〜460と、センサ110に接続された2つの端子に対応する接続端子430、470とは、互いに近接して配置されている。
回路基板120の各端子は、インクカートリッジ100がホルダ4に固定されると、ホルダ4に備えられた接続機構400の接続端子410〜470と接触し電気的に接続される。さらに、接続機構400の接続端子410〜470は、サブ制御基板500上の端子群と接触して電気的に接続され、サブ制御基板500の端子群は、サブ制御部(キャリッジ回路)50と電気的に接続されている。これにより、インクカートリッジ100がホルダ4に固定されると、回路基板の各端子210〜270はサブ制御部50と電気的に接続される。
・プリンタの電気的構成:
図5および図6は、プリンタの電気的な構成を示す説明図である。図5は、主制御部40とサブ制御部50とプリンタに装着可能な全てのインクカートリッジ100との全体に注目して描かれている。図6は、主制御部40の機能構成とサブ制御部50の機能構成が、一つのインクカートリッジ100と共に描かれている。なお、本実施例におけるサブ制御部50は、本発明におけるホスト回路に対応する。本実施例において、ホスト回路としてのサブ制御部50は、データ記憶部としての記憶装置130に対して、電源を供給し、記憶装置130に対するアクセスの種類を示すコマンドを送付することにより、記憶装置130に対する所定のデータの書き込み、記憶装置130から所定のデータの読み出しを実行する(後述)。
各インクカートリッジ100の記憶装置130には、互いに異なる8ビットのID番号(識別情報)が割り当てられている。図5に示されるように、サブ制御部50からの配線に対し各インクカートリッジの記憶装置130は並列に接続されている(すなわち、サブ制御部50に対しバス接続されている。)ため、サブ制御部50から特定のインクカートリッジ100の記憶装置130に対して読み出し/書き込みなどの処理を実行する場合には、主制御部40とサブ制御部50から各インクカートリッジを特定する必要がある。このため、ID番号を利用する。このID番号は、サブ制御部50がアクセスすべき記憶装置130(インクカートリッジ100)を指定するために使用される。
サブ制御部50と各インクカートリッジ100とを電気的に接続する配線は、サブ制御部50とサブ制御基板500の端子群をつなぐ配線、接続機構400の接続端子410〜470、回路基板120の表側の端子群、回路基板120の端子群から記憶装置130とセンサ110とへの配線で構成される。サブ制御部50と各インクカートリッジ100とを電気的に接続する配線は、リセット信号線LR1、クロック信号線LC1、データ信号線LD1、第1の接地線LCS、第1の電源線LCV、第1のセンサ駆動信号線LDSN、第2のセンサ駆動信号線LDSPを含む。
サブ制御部50と記憶装置130との間のリセット信号線LR1は、サブ制御部50から記憶装置130へリセット信号CRSTを供給する導電線である。リセット信号は、サブ制御部50が、記憶装置130のメモリ制御回路136(後述)を初期状態、もしくは、アクセスを受け付け可能なスタンバイ状態とするための信号である。サブ制御部50からメモリ制御回路136に対してローレベルのリセット信号を供給すると、メモリ制御回路136は初期状態になる。サブ制御部50と記憶装置130との間のクロック信号線LC1は、サブ制御部50から記憶装置130へクロック信号CSCKを供給する導電線である。サブ制御部50と記憶装置130との間のデータ信号線LD1は、サブ制御部50と記憶装置130との間で遣り取りされるデータ信号CSDAを伝送する導電線である。データ信号線LD1は、図6に示すように、サブ制御部50において、プルダウン抵抗R1を介して、接地電位CVSS電位(0V)と接続されている。この結果、特にサブ制御部50と記憶装置130との間でデータ信号の遣り取りがされていないときには、データ信号線LD1の電位はローレベルに保持される。データ信号は、サブ制御部50と記憶装置130との間で同期をとるために、前述のクロック信号に同期して送受信される。たとえば、クロック信号の立ち上がりまたは立ち下がり時が有効なデータとして送受信されるように、やりとりされる。これらの3本の配線LR1、LC1、LD1は、それぞれ、一つのサブ制御部50側の端部と、インクカートリッジ100の数に分岐したインクカートリッジ100側の端部を有する配線である。つまり、3本の配線LR1、LC1、LD1に関して、サブ制御部50に対して複数の記憶装置130はバス接続されている。リセット信号CRST、データ信号CSDA、クロック信号CSCKは、いずれも、ハイレベル(本実施例では、CVDD電位(3.3V))、または、ローレベル(本実施例では、CVSS電位(0V))のいずれかの値をとる2値信号である。以下では、ハイレベル信号を値「1」でも表し、ローレベル信号を値「0」でも表す。
第1の接地線LCSは、記憶装置130に接地電位CVSSを供給する導電線であり、回路基板120の接地端子210を介して記憶装置130に電気的に接続される。第1の接地線LCSは、一つのサブ制御部50側の端部と、インクカートリッジ100の数に分岐したインクカートリッジ100側の端部を有する配線である。接地電位CVSSは、主制御部40から第2の接地線LSを介してサブ制御部50に供給される接地電位VSS(=CVSS電位)と接続されており、ローレベル(0V)に設定される。
第1のセンサ駆動信号線LDSNおよび第2のセンサ駆動信号線LDSPは、センサ110の圧電素子に駆動電圧を印加すると共に、駆動電圧の印加を停止した後、圧電素子の圧電効果により発生する電圧をサブ制御部50に伝送するための導電線である。第1のセンサ駆動信号線LDSNおよび第2のセンサ駆動信号線LDSPは、それぞれインクカートリッジ100ごとに独立した複数の配線であり、一端がサブ制御部50に電気的に接続され、他端が回路基板120の第1のセンサ駆動用端子230および第2のセンサ駆動用端子270にそれぞれ電気的に接続される。第1のセンサ駆動信号線LDSNは、第1のセンサ駆動用端子230を介して、センサ110の圧電素子の一方の電極に電気的に接続され、第2のセンサ駆動信号線LDSPは、第2のセンサ駆動用端子270を介して、センサ110の圧電素子の他方の電極に電気的に接続される。
第1の電源線LCVは、記憶装置130に記憶装置130の動作電圧となる電源電圧CVDDを供給する導電線であり、回路基板120の電源端子220を介して記憶装置130に接続されている。第1の電源線LCVは、一つのサブ制御部50側の端部と、インクカートリッジ100の数に分岐したインクカートリッジ100側の端部を有する配線である。記憶装置130の駆動に用いられるハイレベルの電源電圧CVDDは、ローレベルの接地電位CVSS(0V)に対して、3.3V程度の電位が用いられる。もちろん、電源電圧CVDDの電位レベルは、記憶装置130のプロセス世代などに応じて、異なる電位であって良く、例えば、1.5Vや2.0Vなどが用いられ得る。
主制御部40とサブ制御部50との間は、複数の配線で電気的に接続されている。複数の配線は、バスBSと、第2の電源線LVと、第2の接地線LSと、第3のセンサ駆動信号線LDSを含む。バスBSは、主制御部40とサブ制御部50との間のデータ通信に用いられる。第2の電源線LVおよび第2の接地線LSは、主制御部40からサブ制御部50に対して、それぞれ、電源電圧VDDおよび接地電位VSSを供給する導電線である。電源電圧VDDは、上述した記憶装置130に供給される電源電圧CVDDと同レベル、例えば、接地電位VSSおよびCVSS(0V)に対して、3.3V程度の電位が用いられる。もちろん、電源電圧VDDの電位レベルは、サブ制御部50のロジックIC部分のプロセス世代などに応じて、異なる電位であって良く、例えば、1.5Vや2.0Vなどが用いられ得る。第3のセンサ駆動信号線LDSは、最終的に各センサ110に印加されるセンサ駆動信号DS(後述)を主制御部40からサブ制御部50に供給する導電線である。
主制御部40は、制御回路48と、駆動信号生成回路42と、図示しないROM、RAM、EEPROMなどを備えている。ROMにはプリンタ20を制御するための各種プログラムが記憶されている。
制御回路48は、CPU(中央制御装置)であり、ROM、RAM、EEPROMなどのメモリと協働してプリンタ20全体の制御を実行する。制御回路48は、機能ブロックとして、インク残量判断部M1と、メモリアクセス部M2と、インク消費量推定部M3を備えている。
インク残量判断部M1は、サブ制御部50および駆動信号生成回路42を制御してインクカートリッジ100のセンサ110を駆動し、インクカートリッジ100内のインクが所定値以上であるか否かを判定する。メモリアクセス部M2は、サブ制御部50を経由して、インクカートリッジ100の記憶装置130にアクセスし、記憶装置130内に記憶された情報を読み出したり、記憶装置130内に記憶される情報を更新したりする。インク消費量推定部M3は、プリンタ20の印刷実行状況に伴い印刷用紙に噴射されるドットをカウントし、そのカウント値とドット毎に消費されるインク量から印刷実行で消費されるインク量を推定する。また、ヘッドのクリーニング処理によって消費されるインク量を推定する。これに基づいて、インクカートリッジ100が新しくプリンタ20に装着されてから、そのインクカートリッジから消費したインク消費量の推定値の累計をカウントしている。
主制御部40のEEPROMには、センサを駆動するためのセンサ駆動信号DSを示すデータが格納されている。駆動信号生成回路42は、制御回路48のインク残量判断部M1からの指示に従って、EEPROMからセンサ駆動信号DSの波形を示すデータを読み出して、任意の波形を有するセンサ駆動信号DSを生成する。センサ駆動信号DSは、電源電圧CVDD(本実施例では、3.3V)より高い電位を含み、例えば、本実施例では、最大36V程度の電位を含んでいる。具体的には、センサ駆動信号DSは、最大36Vの電圧を有する台形のパルス信号である。
なお、本実施例では、駆動信号生成回路42は、さらに、印刷ヘッド5に供給されるヘッド駆動信号を生成することができる。すなわち、本実施例では、制御回路48は、インク残量の判断を実行する際には、駆動信号生成回路42にセンサ駆動信号を生成させ、印刷を実行する際には、駆動信号生成回路42にヘッド駆動信号を生成させる。
サブ制御部50は、ハード構成として、ASIC(Application Specific IC)を備える。ASICは、機能構成として、通信処理部55と、センサ処理部52とを備えている。
通信処理部55は、リセット信号線LR1、データ信号線LD1、クロック信号線LC1を介して、インクカートリッジ100の記憶装置130との通信処理を行う。また、通信処理部55は、バスBSを介して、主制御部40との通信処理を行う。通信処理部55は、回路基板120の端子群のうち、所定の端子の電位を検出することにより、インクカートリッジ100の回路基板120がプリンタ20と電気的に接続されているか否か、つまり、インクカートリッジ100がプリンタ20に装着されているか否かを検出することができる。通信処理部55は、インクカートリッジ100の装着が検出されたことを主制御部40に通知する。これにより主制御部40は、各インクカートリッジ100がカートリッジ搭載部に搭載されているか否かを判断することができる。
主制御部40は、回路基板120がプリンタ20と電気的に接続され、インクカートリッジ100がプリンタ20に装着されていると判定していれば、通信処理部55を介して、所定のタイミングで装着されているインクカートリッジ100の記憶装置130へのアクセスを実行する。
通信処理部55は、ASICなどで構成されたロジック回路を含み、電源電圧VDD(本実施例では、3.3V)で駆動される回路である。本実施形態のASICはメモリセル領域(SRAM551)部分とロジック領域とからなり、ロジック領域は、センサ用レジスタ552およびエラーコードレジスタ553を備えている。SRAM551は、通信処理部55が処理を行う際、一時的にデータを保存するために用いるメモリで、例えば、主制御部40から受け取ったデータや、センサ110や記憶装置130から受け取ったデータを一時的に保存している。SRAM551には、プリンタ20の電源がONになった後、後述する各インクカートリッジ100の記憶装置130内の原データに対応する部分と、原データのミラーデータを反転したデータを格納するメモリ空間が確保されると共に、確保されたメモリ空間に記憶装置から読み出されたデータが格納される。すなわち、SRAM551内のメモリ空間には、16ビットの原データ及び16ビットの原データのミラーデータを反転したデータを、各記憶装置130のメモリセルアレイの行数分格納するメモリ領域が確保される。そして、確保されたメモリ空間には、各記憶装置のメモリセルアレイから読み出された原データとそのミラーデータの反転データが格納される。そして、そのメモリ領域に読み出された値は、印刷動作の実行に伴い(主制御部40からの書き込みデータの送信や、記憶装置からの読み出しに伴い)更新される。エラーコードレジスタ553には、各記憶装置130の書き換え可能領域の各行につき、後述する通信エラーやメモリセルエラーが書き込まれる。
センサ用レジスタ552は、センサ処理部52がセンサ処理の処理結果を書き込むためのレジスタである。センサ用レジスタ552は、各インクカートリッジについて用意されており、後述するセンサによるインク残量の判定結果を記録するために用いられる。
センサ処理部52は、後述するセンサによるインク残量の判定処理(センサ処理)を実行する。センサ処理部52は、切り換えスイッチを含んでいる。切換スイッチは、駆動信号生成回路42から供給されたセンサ駆動信号DSを、センサ処理の対象となっている1つのインクカートリッジ100のセンサ110に対して、第1のセンサ駆動信号線LDSNまたは第2のセンサ駆動信号線LDSPのいずれかを介して供給するために用いられる。
次にインクカートリッジ100の電気的構成について説明する。インクカートリッジ100は、その電気的な構成要素として、記憶装置130とセンサ110を有している。
記憶装置130は、外部からアクセス先のアドレスを指定するアドレスデータを受けない記憶装置である。記憶装置130は、直接にアドレスデータの入力を受けることなく、外部から供給されるクロック信号とコマンドデータに応じて、アクセスするメモリセルを指定する制御が可能である。記憶装置130は、データ記憶部としての強誘電体メモリセルアレイ132と、メモリ制御回路136と、を含んでいる。図6において記憶装置130を示す破線上に白丸で示すように、記憶装置130には、プリント回路基板120の接地端子210と電気的に接続される接地端子と、電源端子220と電気的に接続される電源端子と、リセット端子240と電気的に接続されるリセット端子と、クロック端子250と電気的に接続されるクロック端子を備えている。
強誘電体メモリセルアレイ132は、強誘電体を記憶素子として用いる不揮発性の半導体メモリセルアレイであり、データの書き換えが可能な特性を有する記憶領域を提供する。
メモリ制御回路136は、サブ制御部50による強誘電体メモリセルアレイ132に対するアクセス(読み出しおよび書き込み)を仲介する回路で、サブ制御部50から送信される識別データやコマンドデータを解析する。さらに、メモリ制御回路136は、書き込み時にはサブ制御部50から受信した書き込み対象データに基づき、強誘電体メモリセルアレイ132に書き込むデータを生成して書き込む。また、メモリ制御回路136は、読み出し時には、強誘電体メモリセルアレイ132から読み出したデータに基づき、サブ制御部50に送信するデータを生成する。詳細は後述する。
メモリ制御回路136は、ID比較部M11と、コマンド解釈部M12と、アドレスカウンタM13と、リード/ライト制御部M14と、データ送受信部M15と、カウンタ制御部M16と、コピーデータ生成部M17と、反転データ生成部M18と、データ判定部M19とを備えている。ID比較部M11は、サブ制御部50から送信されてくるIDデータと、記憶装置自身に割り当てられているID番号とを比較して、自身がアクセスの対象であるか否かを判断する。自身に割り当てられているID番号は、記憶装置130の初期化後、サブ制御部50からアクセスが開始された時にアドレスカウンタM13の出力に基づき選択されるワード線に接続されるメモリセルに記憶されている。ここでいうID番号は、サブ制御部50に対しバス接続されている複数の記憶装置130の中から、サブ制御部50がアクセス対象とする記憶装置130を識別するために使用される。このID番号は、例えば、インクカートリッジ100に格納されているインクの色に応じて決まっている。コマンド解釈部M12は、サブ制御部50から送信されてくる通信開始データ(SOF)、通信終了データ(EOF)、コマンドデータを解釈して、サブ制御部50からのアクセスの開始やアクセスの終了、アクセスの種類(読み出し、書き込み等)を判断する。アドレスカウンタM13は、記憶装置130にローレベルのリセット信号CRSTが入力されて記憶装置130が初期化されたときに、カウンタ値がリセットされる。リセットされたときのカウント値は、ID番号を記憶するメモリセルを選択するワード線を選択する値にセットされる。その後は、カウンタ制御部M16からの制御に基づき、記憶装置130に入力されるクロックのうち、所定のクロックを順次カウントする。アドレスカウンタM13のカウンタ値は、リード/ライト制御部M14の制御によりメモリセルにアクセスするときに、アドレスカウンタM13から、図示しないメモリセルアレイのアドレスデコーダに出力される。したがって、カウンタ値に対応してメモリセルアレイ132の所定の行(ワード線)を選択することができる。本実施例において、行は、アドレスカウンタM13から出力されるカウンタ値に基づき、アドレスデコーダで選択される行を意味する。リード/ライト制御部M14は、コマンド解釈部M12によって解釈されたコマンドデータの内容(アクセスの種類)に従って、アドレスカウンタM13により選択されるワード線に接続される強誘電体メモリセルアレイ132への行単位での一括書き込み、および、一括読み出しなどを実行する。リード/ライト制御部M14は、図示しないレジスタを備え、後述する原データ、反転データ、ミラーデータを一時的に格納することができる。データ送受信部M15は、リード/ライト制御部M14の制御に従い、サブ制御部50からデータ信号線LD1を介して送信されるデータ信号CSDAをクロック信号CSCKに同期して受信したり、クロック信号CSCKに同期してデータ信号線LD1を介してデータ信号CSDAを送信したりする。すなわち、データ送受信部M15は、記憶装置130とサブ制御部50との間で遣り取りされるデータ信号CSDAの送受信の方向を設定する。なお、初期化後、サブ制御部50から記憶装置130に対してアクセスが開始されるときには、データ送受信部M15の送受信方向は、サブ制御部50から送信されたデータ信号CSDAを記憶装置130が受信する方向に設定され、メモリセルアレイ132から読み出されたデータが記憶装置130からサブ制御部50に送信されないように設定される。複製データ生成部M17は、後述する原データをコピーして、原データと同一量のミラーデータ(後述)を生成する。反転データ生成部M18は、原データの各ビットの値を反転させ、原データと同一量の反転データ(後述)を生成する。データ判定部M19は、後述する原データおよびミラーデータのパリティチェックや排他的論理和の算出を行い、データの整合性を判定する。カウンタ制御部M16は、クロックカウンタを備える。記憶装置130が初期化された後、サブ制御部50から記憶装置130に対するアクセスが開始された後に、記憶装置130に入力されるクロック信号CSCKのクロック数をカウントすると共に、コマンド解釈部M12のコマンド解釈の結果に基づき、所定のカウント値になるとアドレスカウンタM13のカウンタ値をカウントアップ、もしくはカウントダウンする制御信号をアドレスカウンタM13に出力する。なお、本実施例におけるデータ送受信部M15は、請求項におけるデータ受信部およびデータ送信部に対応する。
図7は、記憶装置130の強誘電体メモリセルアレイ132のメモリマップを模式的に示す図である。図7において、強誘電体メモリセルアレイ132のメモリマップは、複数の行からなり、一つの行は32ビットである。メモリセルアレイ132はアドレスカウンタの示す値によって選択される行順にシーケンシャルにアクセスされる。図7に示すメモリマップにおいて、シーケンシャルアクセスの順番は、行単位で上側から下側である。ここで、図7において、便宜的に、同じ行内のうち、より左側(D31側)にあるメモリセルのことを上位のセルという。また、異なる行について、所定の行より上位の行とは、図7において所定の行より上側の行(行番号の小さい行)のことを示し、所定の行より下位の行とは、図7において所定の行より下側の行(行番号の大きい行)のことを示す。メモリマップに示される通り、メモリセルアレイ132は、識別情報領域と、書き換え可能領域と、読み出し専用領域と、制御領域を有する。識別情報領域は、A0行目の32ビットの記憶領域を有しており、上述したID番号の格納に用いられる。書き換え可能領域は、(m−1)行(mは自然数:図7におけるA1行〜Am−1行)の記憶領域を有している。書き換え可能領域は、プリンタ20のサブ制御部50からデータの書き換えのためのアクセス対象となる領域である。読み出し専用領域は、n−m行(Am〜An−1行)の記憶領域を有している。読み出し専用領域は、プリンタ20のサブ制御部50からデータの読み出しのみのアクセス対象となる領域である。制御領域は、読み出し専用領域の下位に用意されている。制御領域は、後述するインクリメントフラグ情報およびライトロックフラグ情報を格納する記憶領域である。メモリセルアレイ132のメモリマップの記憶領域の1行当たりの記憶容量は、32ビットである。この1行は、アドレスカウンタM13で選択される行(すなわちワード線)に対応するものである。1行のうち、上位16ビットは、原データを書き込むための原データ領域である。ここで、原データは、後述する反転データおよびミラーデータの元となるデータである。以下では、原データを書き込むためのデータ領域を原データ領域とも呼ぶ。1行のうち、下位16ビットは、上位16ビットに書き込まれた原データの複製であるミラーデータを書き込むためのデータ領域である。以下では、ミラーデータを書き込むためのデータ領域をミラーデータ領域とも呼ぶ。図7において、左半分が原データ領域、右半分がミラーデータ領域である。逆に言えば、図7において、左半分の原データ領域に書き込まれているデータは原データであり、右半分のミラーデータ領域に書き込まれているデータはミラーデータである。通常時、すなわち、当該行にセルの不具合、書き込みエラーなどがない場合、各行において原データとミラーデータは、同一の内容となる。
識別情報領域と書き換え可能領域において、各行の原データ領域の上位15ビットは、実データの格納に用いられ、最終ビット(16ビット目)は、実データと関連付けられたパリティデータPの格納に用いられる。ここで、本実施例における実データは、プリンタ20の各種制御(例えば、印刷の実行、ユーザーインターフェースの制御)のために、プリンタ20の主制御部40が使用するデータである。本実施例における実データには、例えば、インク消費量を表すデータ、インクカートリッジの使用開始時などが含まれる。同様にして、ミラーデータ領域の上位15ビットは、原データの実データのミラーデータの格納に用いられ、最終ビット(16ビット目)は、原データの実データと関連付けられたパリティデータPのミラーデータの格納に用いられる。パリティデータPは、当該パリティデータPと上位15ビットからなる16ビットのデータにおける「1」の数が常に奇数になるように、値「1」または「0」に設定される冗長ビットである。もちろん、パリティデータPは、当該パリティデータと上位15ビットからなる16ビットのデータにおける「1」の数が常に偶数になるように、値「1」または「0」に設定されても良い。また、パリティデータPに限らず、実データを冗長化した他の種類の冗長データが用いられても良い。
読み出し専用領域のm−n行のうち、最終行(An−1行)以外は実データの格納に用いられ、最終行はパリティデータの格納に用いられる。具体的には、最終行以外の行の実データの所定単位(例えば、8ビット、あるいは、16ビット)ごとに1ビットのパリティデータが最終行の各ビットに割り当てられている。なお、図7において、「P」が記載されているセルはパリティデータPが格納されるための1ビットの記憶領域を表している。
以上の説明から解るように、識別情報領域と書き換え可能領域において、原データは、実データと、当該実データに付加されたパリティデータである。また、読み出し専用領域うち、最終行以外の領域において、原データは、実データそのものである。また、読み出し専用領域うち、最終行において、原データは、パリティデータである。
書き換え可能領域には、例えば、インクの消費量情報や、インクカートリッジ100の使用履歴情報など各種の情報が格納される。記憶装置130へのアクセスが開始された直後に、アドレスカウンタM13の初期値にて選択される先頭の第1行(識別情報領域:A0行)には、インクカートリッジ100の種類(色)ごとに定められた上述したID番号(識別情報)が先頭セルから8ビット分格納される。ID番号が格納される領域は、図7において、細かいハッチングにより示されている。A0行の原データのパリティビットのセルとID番号が格納されるセルを除いた残りのセルは、空領域となり0もしくは1の固定データが格納される。例えば、プリンタ20に搭載されるインクカートリッジ100の数がn種類である場合、ID番号は搭載されるインクカートリッジ100の種類により異なるn種類の値をとる。書き換え可能領域の第1行(A1行)には第1インク消費カウント値X(例えば、10ビット分)が格納され、第2行(A2行)には第2インク消費カウント値Y(例えば、10ビット分)が格納されている。第1インク消費カウント値Xは、例えば10ビットの情報で、A1行のパリティ情報のセルを除く15ビットのうち、下位10ビット分のセルに格納される。A1行の残りの5ビットは空領域として常に1が記憶されるように、プリンタ20側からデータが送信される。図7において、第1インク消費カウント値Xが格納される領域が粗いハッチングで示されている。第2インク消費カウント値Yは、例えば10ビットの情報で、A2行のパリティ情報のセルを除く15ビットのうち、下位10ビット分のセルに格納される。A2行の残りの5ビットは空領域として常に1が記憶されるように、プリンタ20側からデータが送信される。図7において、第2インク消費カウント値Yが格納される領域がクロスハッチングで示されている。第1インク消費カウント値Xおよび第2インク消費カウント値Yは、プリンタ20においてインク消費量推定部M3によって推定されたインク消費量に基づいて求められたインクカートリッジ100ごとの累積インク消費量を表す値である。また、書き換え可能領域の所定の行には、インクエンド情報Mが格納されている。インクエンド情報Mは、例えば、2ビットのデータであり、「01」、「10」、「11」の3種類がある。「01」は、そのインクカートリッジ100のセンサ110により、インクの残量が第1のしきい値Vref1以下であることが検出されていない状態(以下、フル状態とも呼ぶ。)、すなわち、インクの残量が第1のしきい値Vref1より大きいことを示す。「10」は、インクの残量が第1のしきい値Vref1以下であり、かつ、インク残量がインクエンドレベルよりも大きいこと(以下、ロー状態とも呼ぶ。)を示す(第1のしきい値Vref1>インクエンドレベル)。インクの残量が第1のしきい値Vref1以下であることは、そのインクカートリッジ100のセンサ110によって検出される。「11」は、インク残量がインクエンドレベル以下である状態(以下、エンド状態とも呼ぶ。)を示す。インクエンドレベルとは、そのままプリンタ20が印刷を続けると、インク切れにより印刷ヘッドユニット60に空気が混入するおそれがあるため、インクカートリッジ100の交換が行われることが好ましいインク残量のレベルである。例えば、第1のしきい値Vref1は、1.5g(グラム)程度のインク残量に設定され、インクエンドレベルは、0.8g程度のインク残量に設定される。第1インク消費カウント値X、第2インク消費カウント値Y、インクエンド情報Mに関する処理については、さらに、後述する。
読み出し専用領域には、例えば、インクカートリッジ100の製造メーカーを示すメーカー情報、インクカートリッジの製造年月日、インクカートリッジの容量、インクカートリッジの種類などが格納される。制御領域には、インクリメントフラグ情報およびライトロックフラグ情報が格納されている。
インクリメントフラグ情報は、メモリマップ上の各行ごとに1ビット用意される。対応するインクリメントフラグ情報が「1」に設定されている行は、当該行に既に格納されている数値より大きい数値に当該行を書き換えること(インクリメント書き換え)が許容され、当該行に既に格納されている数値より小さい数値に当該行を書き換えること(デクリメント書き換え)が許容されない領域となる。対応するインクリメントフラグ情報が「0」に設定されている行は、自由に書き換えが許容される。インクリメント書き換えのみを許容するか自由な書き換えを許容するかは、メモリ制御回路136のリード/ライト制御部M14がインクリメントフラグ情報を参照して判断する。具体的には、上述した第1インク消費カウント値Xおよび第2インク消費カウント値Yが記録されるA1行およびA2行は、対応するインクリメントフラグ情報が「1」に設定されている。第1インク消費カウント値Xおよび第2インク消費カウント値Yのプリンタ20による更新は、増加する方向以外に考えにくいからである。これによって、A1行およびA2行に対する誤った書き込みを抑制することができる。以下では、A1行およびA2行のように、対応するインクリメントフラグ情報が「1」に設定されている記憶領域をインクリメント領域とも呼ぶ。なお、行単位ではなく、原データ16ビットの単位で、データの書き換えがインクリメント書き換えである場合、その行への書き換えを許可するものであってもよい。また、インク消費量に替えて、インク残量が記憶される場合には、フラグ値により、デクリメント書き換えのみを許可するか、自由な書き換えを許可するかを制御するものとしてもよい。
ライトロックフラグ情報は、識別情報領域、書き換え可能領域及び読み出し専用領域の各行ごとに1ビット用意される。対応するライトロックフラグ情報が「1」に設定されている行は、外部からのアクセスによる書き換えが許容されない領域となる。対応するライトロックフラグ情報が「0」に設定されている行は、外部からのアクセスによる書き換えが許容される。書き換えを許容するか否かは、メモリ制御回路136のリード/ライト制御部M14がライトロックフラグ情報を参照して判断する。書き換え可能領域であるA1〜Am−1行は、工場において、対応するライトロックフラグ情報が「0」に設定された状態で出荷され、プリンタ20の通信処理部55によるデータの消去、書き込みが許容される。これに対して、識別情報領域であるA0行目、および、読み出し専用領域であるAm〜An行は、工場において、対応するライトロックフラグ情報が「1」に設定された状態で出荷され、プリンタ20の通信処理部55によるデータの消去、書き込みが許容されない。このようなライトロックフラグ情報が「1」に設定されている記憶領域をライトロック領域とも呼ぶ。
センサ110は、詳細な図示は省略するが、インク供給部付近のインク流路の一部を形成するキャビティ(共振部)と、キャビティの壁面の一部を形成する振動板と、振動板上に配置された圧電素子とを備えている。プリンタ20のセンサ処理部52は、センサ駆動用端子230、270を介して圧電素子にセンサ駆動信号DSを与えることにより、圧電素子を介して振動板を振動させることができる。その後、振動板の残留振動の周波数を有する応答信号RSを圧電素子から受け取ることにより、センサ処理部52はキャビティにおけるインクの有無を検出することができる。具体的には、本体101に収容されていたインクが消費されることにより、インクが満たされた状態から大気が満たされた状態に、キャビティの内部の状態が変化すると、振動板の残留振動の周波数が変化する。かかる周波数の変化が応答信号RSの周波数の変化として表れる。センサ処理部52は、応答信号RSの周波数を測定することにより、キャビティにおけるインクの有無を検出することができる。キャビティにおけるインクが「無し」と検出されることは、本体101に収容されたインクの残量が第1のしきい値Vref1(キャビティより下流側に残留するインク量に対応する)以下であることを意味する。キャビティにおけるインクが「有り」と検出されることは、本体101に収容されたインクの残量が第1のしきい値Vref1より大きいことを意味する。
・記憶装置からの読み出し処理
図8は、プリンタ20のサブ制御部50が実行する記憶装置130からの読み出し処理の処理ルーチンを示すフローチャートである。図9は、記憶装置130からの読み出し処理において、プリンタ20の通信処理部55と記憶装置130のメモリ制御回路136との間で遣り取りされる信号を模式的に示すタイミングチャートである。図9には、電源電圧CVDDと、リセット信号CRSTと、クロック信号CSCKと、データ信号CSDAの一例とが示されている。電源電圧CVDDは、サブ制御部50と記憶装置130との間を接続する第1の電源線LCV上に現れる信号で、サブ制御部50から記憶装置130に供給される。リセット信号CRSTは、サブ制御部50と記憶装置130との間を接続するリセット信号線LR1上に現れる信号で、サブ制御部50から記憶装置130に供給される。クロック信号CSCKは、サブ制御部50と記憶装置130との間を接続するクロック信号線LC1上に現れる信号で、サブ制御部50から記憶装置130に供給される。データ信号CSDAは、サブ制御部50と記憶装置130との間を接続するデータ信号線LD1上に現れる信号である。図9には、さらに、データ信号CSDAのデータ方向が示されている。右向きの矢印は、サブ制御部50が送信側で、記憶装置130が受信側であることを表す。左向きの矢印は、サブ制御部50が受信側で、記憶装置130が送信側であることを表す。本実施例では、記憶装置130は、サブ制御部50から供給されるクロック信号CSCKの立ち上がりに同期してデータを送受信する。クロック信号CSCKの立ち上がりの時の、記憶装置130のデータ端子のデータ信号のレベルを、送受信すべき有効な値としてデータを送受信している。図10は、メモリ側において、メモリ制御回路136が実行する処理の処理ルーチンを示すフローチャートである。
プリンタ20の主制御部40は、サブ制御部50にバスBSを介して、インクカートリッジ100の記憶装置130からの読み出しを指示する読み出しコマンドを送信する。通信処理部55は、第1の電源線LCVを介して、各インクカートリッジ100に電源電圧CVDDを供給する。すなわち、各インクカートリッジ100の記憶装置130に動作電圧を供給し、記憶装置130を動作可能な状態にする。電源電圧CVDDを供給後、ローレベルのリセット信号が供給され、記憶装置130が初期化される。リセット信号は、前回のアクセスの終了時にローレベルにされたままになっているため、記憶装置130に電源電圧CVDDが供給される前からローレベルになっている。サブ制御部50の通信処理部55は、読み出しコマンドを受け取ると、図8のフローチャートに示す読み出し処理を開始する。
読み出し処理が開始されると、通信処理部55は、リセット信号CRSTをローレベルからハイレベルに遷移させるとともに、所定周波数のクロック信号CSCKを送信する(図9)。リセット信号CRSTがローレベルからハイレベルになると、記憶装置130は通信処理部55からのデータ信号CSDAを受け付けるスタンバイ状態になる。
通信処理部55は、まず、データ信号CSDAとして、SOF(Start Of Frame)データを送信する(図8:ステップS102、図9)。SOFデータは、所定の波形を有する8ビットのデータ信号であり、クロック信号CSCKと同期して送信される。これは、記憶装置130に対し通信の開始を通知するためのものである。
通信処理部55は、SOFデータに続いて、オペレーションコードを送信する。オペレーションコードは、識別データとコマンドデータが連続したデータである。コマンドデータは、記憶装置130に対して、アクセスの種類(書き込み、読み出しなど)を伝えるためのデータである。通信処理部55は、識別データをデータ信号CSDAとして送信する(図8:ステップS104)。識別データは、読み出し対象とすべきインクカートリッジ100の記憶装置130を指定する識別情報であり、原識別データID(8ビット)と反転識別データ/ID(8bit)とを含む(図9)。ここで、反転データは、原データと同一量(同一ビット数)のデータであり、原データの各ビットの値を反転させたデータである。例えば、原データのm(mは自然数)番目の値が「1」である場合、反転データのm番目の値は「0」となり、原データのm番目の値が「0」である場合、反転データのm番目の値は「1」となる。以下では、原データを記号Aで表す場合、その反転データを先頭に/(スラッシュ記号)を付して/Aとも表す。例えば、原データA=(01001001)である場合、反転データ/A=(10110110)である。反転識別データは、原識別データに基づいて主制御部40もしくは通信処理部55によって生成される。このように、識別データを2重化することにより、処理の対象ではないインクカートリッジ100の記憶装置130が誤って動作することを抑制することができる。
通信処理部55は、識別データに続いて、コマンドデータをデータ信号CSDAとして送信する(図8:ステップS106)。コマンドデータは、原コマンドデータCM(8ビット)と反転コマンドデータ/CM(8ビット)とを含む(図9)。本処理は、記憶装置130からサブ制御部50への読み出し処理であるので、本処理で送信されるコマンドデータは、読み出し処理であることを表すコマンド(リードコマンド)である。なお、原コマンドデータCMは、8ビットのうち上位4ビットと下位4ビットは、互いに反転した関係にある。例えば、原コマンドデータCMの上位4ビットが「0110」である場合には、原コマンドデータCMの下位4ビットは「1001」であり、反転コマンドデータ/CMは「10010110」である。反転コマンドデータは、原コマンドデータに基づいて主制御部40もしくは通信処理部55によって生成される。このようにコマンドデータを多重化することにより、記憶装置130の誤動作を抑制することができる。
通信処理部55は、コマンドデータの送信を終了した次のクロック信号CSCKの立ち上がりに同期して、記憶装置130から送信されてくる読み出しデータの受信を開始する。通信処理部55は、記憶装置130の行単位分の読み出しデータを受信する。詳細に説明すると、通信処理部55は、8ビット×8=64ビット分の単位読み出しデータを、クロック信号CSCKの立ち上がりに同期して、シーケンシャルに1ビットずつ受信する(図8:ステップS108、図9)。64ビットの単位読み出しデータは、原データ上位8ビットUDn(nは自然数)と、原データ上位8ビットUDnの反転データである反転原データ上位8ビット/UDnと、原データ下位8ビットLDnと、原データ下位8ビットLDnの反転データである反転原データ下位8ビット/LDnと、原データ上位8ビットUDnのミラーデータであるミラーデータ上位8ビットUdnと、ミラーデータ上位8ビットUdnの反転データである反転ミラーデータ上位8ビット/Udnと、原データ下位8ビットLDnのミラーデータであるミラーデータ下位8ビットLdnと、ミラーデータ下位8ビットLdnの反転データである反転ミラーデータ下位8ビット/Ldnである(図9)。
原データ上位8ビットUDnを上位ビットとし、原データ下位8ビットLDnを下位ビットとする16ビットデータを原データDnとも呼ぶ。反転原データ上位8ビット/UDnを上位ビットとし、反転原データ下位8ビット/LDnを下位ビットとする16ビットデータを反転データ/Dnとも呼ぶ。ミラーデータ上位8ビットUdnを上位ビットとし、ミラーデータ下位8ビットLdnを下位ビットとする16ビットデータをミラーデータdnとも呼ぶ。反転ミラーデータ上位8ビット/Udnを上位ビットとし、反転ミラーデータ下位8ビット/Ldnを下位ビットとする16ビットデータを、反転ミラーデータ/dnとも呼ぶ。すなわち、単位読み出しデータは、原データDnと、反転データ/Dnと、ミラーデータdnと、反転ミラーデータ/dnからなるデータと言うことができる。最終的には、単位読み出しデータの受信をn回繰り返すことにより、サブ制御部50の通信処理部55は、読み出すべき全てのデータを受信する(後述)。
単位読み出しデータを受信すると、通信処理部55は、図示しないレジスタに単位読み出しデータを一時的に格納し、以下に説明する処理を実行する。通信処理部55は、まず、単位読み出しデータのうちの、原データDnのm(mは1以上16以下の整数)番目の値と、反転ミラーデータ/dnのm番目の値との排他的論理和が、全てのmについて真「1」であるか否かを判定する(図8:ステップS110)。排他的論理和は、比較対象の第1のビットが「0」で第2のビットが「1」、あるいは、第1のビットが「1」で第2のビットが「0」である場合に真「1」となり、比較対象の第1のビットが「1」で第2のビットが「1」、あるいは、第1のビットが「0」で第2のビットが「0」である場合に偽「0」となる。排他的論理和の演算の出力結果が、16ビット全てについて真、すなわち、1111111111111111=FFFF(以降、16進表記でFFFFという。)である場合には(図8:ステップS110:YES)、通信処理部55は、通信状態、および、読み出し元のメモリセルが正常であると判断し、原データDnと、反転ミラーデータ/dnをSRAM551に確保されたメモリ領域(上述)に格納する(図8:ステップS120)。
一方、排他的論理和の演算の出力結果が、16ビットのいずれかにおいて偽「0」、すなわち、FFFFでない場合には(図8:ステップS110:NO)、通信処理部55は、原データDnのm番目の値と反転データ/Dnのm番目の値との排他的論理和が、全てのmについて真「1」であるか否かを判定する(図8:ステップS112)。排他的論理和の演算の出力結果が、FFFFである場合には(図8:ステップS112:YES)、通信処理部55は、ミラーデータdnのm番目の値と反転ミラーデータ/dnのm番目の値との排他的論理和が、全てのmについて真「1」であるか否かを判定する(ステップS114)。原データDnのm番目の値と反転データ/Dnのm番目の値との排他的論理和がFFFFでない場合(図8:ステップS112:NO)、あるいは、ミラーデータdnのm番目の値と反転ミラーデータ/dnのm番目の値との排他的論理和がFFFFでない場合には(図8:ステップS114:NO)、通信処理部55は、通信エラーであると判断し、原データDnと、反転ミラーデータ/dnをSRAM551に確保されたメモリ領域に格納すると共に、通信エラーを示す所定の通信エラーコードを通信処理部55内のエラーコードレジスタ553に格納し(図8:ステップS118)、所定のエラー処理を行って(ステップS124)、処理を終了する。エラーコードレジスタ553には、原データの記憶装置からの送信で通信エラーが発生しているのか(S112およびS114のNOに対応)、ミラーデータの記憶装置からの送信で通信エラーが発生しているのか(S114のYESに対応)かの情報を含めて格納してもよい。所定のエラー処理は、例えば、主制御部40に対して、通信エラーを通知しても良いし、読み出し処理が終了したことを通知しても良い。また、所定のエラー処理は省略しても良い。主制御部40は、SRAM551に格納された通信エラーコードを参照することにより、通信エラーの発生を認識することができる。原データもしくはミラーデータのいずれで通信エラーが発生していることが認識できれば、通信エラーが発生していないほうのデータを主制御部40で実行する処理に利用すればよい。
また、原データDnのm番目の値と反転データ/Dnのm番目の値との排他的論理和がFFFFである場合(図8:ステップS112:YES)、かつ、ミラーデータdnのm番目の値と反転ミラーデータ/dnのm番目の値との排他的論理和がFFFFである場合には(図8:ステップS114:YES)、記憶装置130の原データ領域に記憶されていたデータとミラーデータ領域に記憶されていたデータの整合性がとれていない可能性が高いため、通信処理部55は、記憶装置130のメモリのセルエラーであると判断し、原データDnと、反転ミラーデータ/dnをSRAM551に確保されたメモリ領域に格納すると共に、セルエラーを示す所定のセルエラーコードを、通信処理部55のエラーコードレジスタ553に格納する(図8:ステップS116)。セルエラーは、処理対象の原データDnを格納していたメモリセル、または、処理対象のミラーデータdnを格納していたメモリセルのいずれかにおいて、メモリセル自体が壊れており、格納された情報を正しく記憶できない状態となっている不具合である。
ステップS120またはステップS116を実行すると、通信処理部55は、読み出すべきデータを全て読み出したか否かを判断する(図8:ステップS122)。読み出すべきデータを全て読み出した場合には(図8:ステップS122:YES)、通信処理部55は、読み出し処理を終了する。通信処理部55は、図9に示すように読み出し処理を終了すると、リセット信号CRSTをハイレベルからローレベルに変更すると共に、クロック信号CSCKの供給を停止する。通信処理部55は、クロック信号CSCKの供給を停止すると、続いて、電源電圧CVDDの供給を停止する。読み出すべきデータが全て読み出されていない場合には(図8:ステップS122:NO)、ステップS108に戻って、次の単位読み出しデータについて、上述した処理を繰り返す。例えば、1番目の単位読み出しデータD1、/D1、d1、/d1について上述の処理を行った次には、2番目の単位読み出しデータD2、/D2、d2、/d2について上述の処理を行う。本実施例では、A1行目の読み出しが実行された後、A2行目の読み出しが実行される。主制御部40が読み出したい情報が記憶されている行の情報が読み出されるまで読み出しが繰り返される。
次に、上述したプリンタ20側における記憶装置130からの読み出し処理に対応して記憶装置130側で行われる処理(記憶装置側処理)について、説明する。オペレーションコードを受信し、コマンドデータの種別(アクセスの種類)を判定するところまでは、記憶装置130で実行される処理は同じであるため、読み出し処理の場合に限らず、他の処理(例えば、書き込み処理)の場合も含めて説明する。記憶装置130は、サブ制御部50からの電源電圧CVDDの入力を受けて、起動する。記憶装置130は、ローレベルのリセット信号CRSTの入力で自身を初期化する。電源電圧CVDDの供給を受けた後、リセット信号CRSTはローであるため、(図9)記憶装置130は、初期化状態となっており、記憶装置側処理を開始する。
記憶装置130の初期化が実行されると、アドレスカウンタM13は初期化時の初期値にセットされ、各種レジスタも初期値にリセットされる。さらに、記憶装置130のデータ送受信部M15は、データ端子を介して遣り取りされるデータの送受信方向を、サブ制御部50から記憶装置130がデータを受信する方向に設定する。リード/ライト制御部M14は、強誘電体メモリセルアレイ132とのデータ転送方向をデータ読み出し方向とする。
図10に示すように、記憶装置側処理が開始されると、記憶装置130のメモリ制御回路136は、データ信号CSDAとして、SOFデータを受信する(図10:ステップS210)。メモリ制御回路136は、SOFデータに続いて、識別データを受信する(図10:ステップS220)。識別データを受信すると、ID比較部M11は、まず、受信された識別データが正常であるか否かを判定する(ステップS225)。具体的には、ID比較部M11は、受信した識別データに含まれる原識別データと反転識別データについて、1ビットずつ論理的排他和をとり、すべての値が1となるかを判定する。すなわち、受信した識別データに通信エラーがないかを判定する。通信エラーが無い場合に、受信された識別データは、正常であると判断され、通信エラーがある場合に、受信された識別データは正常でないと判断される。ID比較部M11は、受信された識別データが正常でないと判断された場合には(図10:ステップS225:NO)、なにも処理を行わずに終了する。
一方、ID比較部M11は、受信された識別データが正常であると判断された場合には(ステップS225:YES)、記憶装置130自身に割り当てられたID番号(識別情報)と、受信された識別データが一致するか否かを判断する(図10:ステップS230)。このとき、リード/ライト制御部M14は、初期化によりアドレスカウンタM13がA0行を選択しているため、A0行に格納されているID番号(識別情報)を読み出す。ID比較部M11は、リード/ライト制御部M14が読み出した記憶領域の1行目(図7:A0行)の自身に割り当てられたID番号(識別情報)を受け取り、記憶装置自身に割り当てられたID番号(識別情報)と、通信処理部55から送信された識別データに含まれる原識別データとを1ビットずつ比較する。自身に割り当てられたID番号(識別情報)と受信された原識別データとが一致しない場合には、ID比較部M11は、自身に割り当てられたID番号(識別情報)と、受信された識別データが一致しないと判断する。
ID比較部M11が自身に割り当てられたID番号(識別情報)と、受信された識別データが一致しないと判断すると(図10:ステップS230:NO)、メモリ制御回路136は何も処理を行なわずに終了する。ID比較部M11が自身に割り当てられたID番号(識別情報)と、受信された識別データが一致すると判断すると(図10:ステップS230:YES)、メモリ制御回路136は、データ信号CSDAとして、識別データに続いて送信されてくるコマンドデータを受信する(図10:ステップS240)。コマンドデータを受信すると、メモリ制御回路136のコマンド解釈部M12は、まず、受信されたコマンドデータが正常であるか否かを判定する(ステップS245)。具体的には、コマンド解釈部M12は、受信したコマンドデータに含まれる原コマンドデータの上位4ビットと下位4ビットが相互に反転データになっているか否かを判断する。さらに、コマンド解釈部M12は、受信したコマンドデータに含まれる反転コマンドデータの上位4ビットと下位4ビットが相互に反転データになっているか否かを判断する。さらに、コマンド解釈部M12は、原コマンドデータと反転コマンドデータについて、1ビットずつ排他的論理和をとり、すべての値が1となるかを判断する。この結果、原コマンドデータの上位4ビットと下位4ビットが相互に反転データとなっており、かつ、反転コマンドデータの上位4ビットと下位4ビットが相互に反転データになっており、かつ、原コマンドデータと反転コマンドデータの排他的論理和が全てのビットで1である場合には、コマンド解釈部M12は、受信されたコマンドデータが正常である(通信エラーがない)と判定する。一方、原コマンドデータの上位4ビットと下位4ビットが相互に反転データとなっていない、または、反転コマンドデータの上位4ビットと下位4ビットが相互に反転データになっていない、または、原コマンドデータと反転コマンドデータの排他的論理和がいずれかのビットで1でない場合には、コマンド解釈部M12は、受信されたコマンドデータが正常でない(通信エラーがある)と判定する。
コマンドデータが正常でないと判定された場合には(ステップS245:NO)、メモリ制御回路136は処理を終了する。一方、コマンドデータが正常であると判定された場合には(ステップS245:YES)、メモリ制御回路136のコマンド解釈部M12は、受信されたコマンドデータを解釈して、コマンドの種別(アクセスの種類)を判定する(図10:ステップS250)。ここで、コマンドデータの種別は、少なくとも書き込みコマンドと、読み出しコマンドと、ライトロックコマンドを含む。書き込みコマンドは、強誘電体メモリアレイ132へのデータの書き込みを指示するコマンドである。読み出しコマンドは、強誘電体メモリアレイ132からのデータの読み出しを指示するコマンドである。ライトロックコマンドは、後述する記憶装置側のライトロック処理の実行を指示するコマンドで、強誘電体メモリセルアレイ132の所定行について、通信処理部55からの書き込みを禁止するために、その行が書き込み禁止行であることを示すライトロックフラグを制御領域に書き込むコマンドである。
コマンド種別判定の結果、記憶装置130へのコマンドのいずれにも該当しない場合には、コマンド解釈部M12は、コマンドデータを解釈不能であると判断する。コマンド解釈部M12がコマンドデータを解釈不能と判断すると、メモリ制御回路136は終了へ移行し何もしない(図示省略)。
コマンド解釈部M12は、コマンドデータが示すコマンドが読み出しコマンドであると判断すると、メモリ制御回路136は記憶装置側の読み出し処理を実行する(図10:ステップS260)。コマンド解釈部M12は、コマンドデータが示すコマンドが書き込みコマンドであると判断すると、メモリ制御回路136は記憶装置側の書き込み処理を実行する(図10:ステップS280)。コマンド解釈部M12は、コマンドデータが示すコマンドがライトロックコマンドであると判断すると、メモリ制御回路136は記憶装置側のライトロック処理を実行する(図10:ステップS270)。図8に示すプリンタ20側の読み出し処理を通信処理部55が実行している場合には、読み出しコマンドがコマンドデータとしてメモリ制御回路136によって受信されるので、通信エラーなどが発生していなければ、コマンド解釈部M12は、コマンドデータが示すコマンドが読み出しコマンドであると判断し、メモリ制御回路136は記憶装置側の読み出し処理を実行することになる。なお、図10に示すフローチャートの各ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行され得る。例えば、メモリ制御回路136は、識別データの一致を確認した後、識別データが正常かどうかを判断しても良いし、識別データが正常かどうかを判断しつつ、並行してコマンドデータを受信しても良い。
図11は、記憶装置側の読み出し処理(図10:ステップS260)の処理ルーチンを示すフローチャートである。メモリ制御回路136のリード/ライト制御部M14は、アドレスカウンタM13の出力により選択されるアドレスに従って強誘電体メモリセルアレイ132からデータを読み出し、データ信号CSDAとして通信処理部55に送信していく。オペレーションコードを受信した後、コマンドデータが示すコマンドが読み出しであった場合、データ送受信部M15は、データ端子を介して遣り取りされるデータの送受信方向を、記憶装置130からサブ制御部50へデータを送信する方向に設定する。さらに、コマンドデータが示すコマンドが読み出しであった場合、カウンタ制御部M16は、読み出し対象の最初の行がA1行を指定するように、アドレスカウンタM13に制御信号を供給する。その後、リード/ライト制御部M14は、アドレスカウンタM13のカウント値の指定するアドレスに基づき、強誘電体メモリアレイ132から1行(32ビット)ずつ、図示しないレジスタにデータを読み出す(図11:ステップS2602)。最初に読み出される行は、図7に示すA1行である。
データ送受信部M15は、まず、レジスタに読み出した32ビットのうち、上位8ビットを上述した原データ上位8ビットUDnとしてサブ制御部50に送信する(図11:ステップS2604)。続いて、反転データ生成部M18は、原データ上位8ビットUDnの各ビットを反転させて、反転原データ上位8ビット/UDnを生成する。そして、データ送受信部M15は、生成された反転原データ上位8ビット/UDnをサブ制御部50に送信する(図11:ステップS2606)。続いて、データ送受信部M15は、レジスタに読み出した32ビットのうち、9ビット目〜16ビット目までの8ビットを上述した原データ下位8ビットLDnとしてサブ制御部50に送信する(図11:ステップS2608)。続いて、反転データ生成部M18は、原データ下位8ビットLDnの各ビットを反転させて反転原データ下位8ビット/LDnを生成する。そして、データ送受信部M15は、生成された反転原データ下位8ビット/LDnをサブ制御部50に送信する(図11:ステップS2610)。続いて、データ送受信部M15は、レジスタに読み出した32ビットのうち、17ビット目〜24ビット目までの8ビットを上述したミラーデータ上位8ビットUdnとしてサブ制御部50に送信する(図11:ステップS2612)。続いて、反転データ生成部M18は、ミラーデータ上位8ビットUdnの各ビットを反転させて反転ミラーデータ上位8ビット/Udnを生成する。そして、データ送受信部M15は、生成された反転ミラーデータ上位8ビット/Udnをサブ制御部50に送信する(図11:ステップS2614)。続いて、データ送受信部M15は、レジスタに読み出した32ビットのうち、25ビット目〜32ビット目までの8ビットを上述したミラーデータ下位8ビットLdnとしてサブ制御部50に送信する(図11:ステップS2616)。続いて、反転データ生成部M18は、ミラーデータ下位8ビットLdnの各ビットを反転させて反転ミラーデータ下位8ビット/Ldnを生成する。そして、データ送受信部M15は、生成された反転ミラーデータ下位8ビット/Ldnをサブ制御部50に送信する(図11:ステップS2618)。
レジスタに読み出した32ビットの送信を終えると、メモリ制御回路136は、全データの送信が終了していない場合には(図11:ステップS2620:NO)、ステップS2602に戻って、強誘電体メモリアレイ132の次の行のデータ(32ビット)について、ステップS2602〜S2618までの処理を繰り返す。メモリ制御回路136は、全データの送信が終了すると、処理を終了する。
ID比較部M11やコマンド比較部M12が識別データIDやコマンドデータCMについて通信エラーがあったとした場合であって、かつ、メモリ制御回路136がなにも処理を行わず処理を終了したときには、記憶装置130は、読み出しデータが送信される期間においてデータを送信しないことになる。前述したように、サブ制御部50と記憶装置130との間でデータのやり取りがないときには、サブ制御部50の抵抗R1によりデータ信号線LD1はローレベルに保持される。通信処理部55は、原データDnと反転データ/Dnの受信期間に全てローレベルのデータを受信するので、図8のステップS112がNoとなり、通信エラーがあったと判断する。上記読み出し処理によって、SRAM551には原データDn、反転ミラーデータ/dnが格納される。また、エラーが発生した場合には、通信処理部55のエラーコードレジスタ553には通信もしくはセルエラーコードが格納される。通信処理部55に格納された原データDnと反転ミラーデータ/dと通信もしくはセルエラーコードは、主制御部40によって取得される。主制御部40は、エラーコードが関連付けられていない原データDn、反転ミラーデータ/dnについては、原データDnを用いて、所定の制御処理(例えば、インク残量のチェック、インク残量のユーザへの通知など)を行う。主制御部40は、通信エラーコードが関連付けられている原データDn、反転ミラーデータ/dnがある場合には、例えば、インクカートリッジ100の装着を見直すように、ユーザに促すメッセージを操作部70の表示パネルに表示するなどの通信エラー対応処理を行う。また、主制御部40は、セルエラーコードが関連付けられている原データDn、反転ミラーデータ/dnがある場合には、セルエラーと判定された原データDn、反転ミラーデータ/dnのそれぞれについてパリティチェックを行う。原データDn、反転ミラーデータ/dnが、実データとパリティデータを含んでいることは上述のとおりである(図7)。主制御部40は、セルエラーと関連付けられた原データDnと反転ミラーデータ/dnのうち、実データ15ビットとパリティデータ1ビットとの整合性を有する方のデータを用いて、所定の制御処理を行う。また、セルエラーと関連付けられた原データDnと反転ミラーデータ/dnのパリティチェックの結果、原データDnと反転ミラーデータ/dnの両方がパリティエラーである場合、または、両方がパリティとの整合性を有していた場合には、インクカートリッジ100のメモリエラーをユーザに促すメッセージを操作部70の表示パネルに表示する。また、記憶装置130に書き込んだデータの書き込み結果を確認するために、記憶装置130からの読み出しを行った場合には、主制御部40に保存しておいた書き込み用のデータと、セルエラーと関連付けられた原データDnと反転ミラーデータ/dnとを比較して、データが正しいか否かを判断しても良い。なお、本実施例では、ステップS2602においてメモリセルアレイ132から1行分のデータを読み出したが、ステップS2604からステップS2618の順に、コマンドデータ受信後に記憶装置130に供給されるクロック信号に同期してデータを送信できれば、メモリセルアレイ132からのデータの読み出しは1行単位でなくても良い。
・記憶装置への書き込み処理
図12は、プリンタ20側のサブ制御部50が実行する記憶装置130への書き込み処理の処理ルーチンを示すフローチャートである。図13は、記憶装置130への書き込み処理において、プリンタ20側の主制御部40が認識している記憶装置130のメモリマップを模式的に示す図である。図14は、記憶装置130への書き込み処理において、プリンタ20の通信処理部55と記憶装置130のメモリ制御回路136との間で遣り取りされる信号を模式的に示すタイミングチャートである。図14には、図9と同様に、電源電圧CVDDと、リセット信号CRSTと、クロック信号CSCKと、データ信号CSDAと、データ方向とが示されている。図15は、記憶装置130のメモリ制御回路が実行する書き込み処理の処理ルーチンを示すフローチャートである。
プリンタ20の主制御部40は、サブ制御部50にバスBSを介して、所定のインクカートリッジ100の記憶装置130に書き込むべきデータを、SRAM551に書き込む。具体的には、これらのデータは、SRAM551に確保されたメモリ領域において、記憶装置130の強誘電体メモリセルアレイ132と対応させた原データを書き込む行に書き込まれる。主制御部40は、書き込み処理時には、記憶装置130が1行16ビットのメモリであると認識している。そのため、記憶装置130に書き込むべきデータは、16ビットの単位に区切ることができ、16ビットの単位の上位15ビットは実データであり、下位1ビットはパリティデータである。パリティデータは、主制御部40によって生成され、上位15ビットの実データに付加されて合計16ビットのデータとしてSRAM551に書き込まれることとしても良い。また、パリティデータは、サブ制御部50によって生成され、主制御部40がSRAM551に15ビットのデータを書き込むごとに付加されても良い。その後、主制御部40は、サブ制御部50にバスBSを介して、書き込み対象の記憶装置130を通知するとともに、SRAM551に書き込まれたデータを、書き込み対象の記憶装置130へ書き込むことを指示する書き込みコマンドを送信する。書き込みコマンドを受け付けると、サブ制御部50は、第1の電源線LCVを介して、各インクカートリッジ100に電源電圧CVDDを供給して、各インクカートリッジ100の記憶装置130を動作可能な状態にする。サブ制御部50から電源電圧CVDDが供給された後、サブ制御部50からローレベルのリセット信号CRSTが供給され、記憶装置130は初期化される。リセット信号は、前回のアクセスの終了時にローレベルにされたままになっているため、記憶装置130に電源電圧CVDDが供給される前からローレベルになっている。サブ制御部50の通信処理部55は、図12のフローチャートに示す書き込み処理を開始する。
通信処理部55は、書き込み処理時には、図13に示すメモリマップを、記憶装置130のメモリマップとして認識している。すなわち、書き込み処理時には、実際の強誘電体メモリアレイ132に対応するメモリマップ(図7)のうちの原データを記憶する部分(図7左側部分)だけが存在し、ミラーデータを記憶する部分は存在しないと、通信処理部55は認識している。原データを記憶する部分は、1行16ビットの記憶領域が複数行配置されていると、通信処理部55により認識される。
書き込み処理が開始されると、通信処理部55は、リセット信号CRSTをローレベルからハイレベルに遷移させるとともに、所定周波数のクロック信号CSCKを送信する(図14)。リセット信号CRSTがローレベルからハイレベルになると、記憶装置130のメモリ制御回路136は、通信処理部55からのデータ信号CSDAを受け付けるスタンバイ状態になる。
通信処理部55は、まず、データ信号CSDAとして、上述した読み出し処理と同様に、SOFデータを送信する(図12:ステップS302、図14)。通信処理部55は、SOFデータに続いて、上述した読み出し処理と同様に、識別データをデータ信号CSDAとして送信する(図12:ステップS304、図14)。通信処理部55は、識別データに続いて、コマンドデータをデータ信号CSDAとして送信する(図12:ステップS306、図14)。本処理で送信されるコマンドデータは、書き込み処理であることを表すコマンド(ライトコマンド)である。
通信処理部55は、コマンドデータの送信を終了した次のクロック信号CSCKの立ち上がりに同期して記憶装置130のメモリ制御回路136が1ビットずつデータを受け取れるように、書き込みデータを送信する。書き込みデータは、原データに対応するデータのうち、A1行に書き込まれるデータから行順に送信される。具体的には、通信処理部55は、シーケンシャルに8ビット×4=32ビット分の単位書き込みデータを送信する(図14)。32ビットの単位書き込みデータは、原データ上位8ビットUDnと、原データ上位8ビットUDnの反転データである反転原データ上位8ビット/UDnと、原データ下位8ビットLDnと、原データ下位8ビットLDnの反転データである反転原データ下位8ビット/LDnを含む(図14)。通信処理部55は、原データ上位8ビットUDn、反転原データ上位8ビット/UDn、原データ下位8ビットLDn、反転原データ下位8ビット/LDnの合計32ビットをこの順番で送信する(ステップS308〜S314)。
単位書き込みデータの送信を終了した次のクロック信号CSCKの立ち上がりに同期して、通信処理部55は、サブ制御部50から1ビット(「1」または「0」)の応答信号を受信する(図12:ステップS316、図14)。「1」(ハイレベル)の応答信号(以下、OK応答信号とも呼ぶ。)は、単位書き込みデータを記憶装置130側が正しく受信したことを示す信号であり、「0」(ローレベル)の応答信号(以下、NG応答信号とも呼ぶ。)は、単位書き込みデータを記憶装置130側が正しく受信できなかったことを示す信号である。応答信号において、OK応答信号をハイレベルとしたのは、データ信号線LD1が上述した通り、プルダウン抵抗R1を介して、ローレベルの電位に接続されているからである。すなわち、データ端子260の接触不良があったときなどに、誤ってOK応答信号が通信処理部55に入力されることを抑制することができる。
受信された応答信号が肯定的でない場合(図12:ステップS318:NO)、すなわち、NG応答信号である場合には、通信処理部55は所定のエラー処理を行い(図12:ステップS320)、書き込み処理を終了する。エラー処理は、例えば、同じ単位書き込みデータの送信をリトライし、所定回のリトライを行った結果、NG応答信号しか得られない場合には、その旨を主制御部40に通知する。その場合、主制御部40は、例えば、例えば、インクカートリッジ100の装着を見直すように、ユーザに促すメッセージを操作部70の表示パネルに表示するなどの通信エラー対応処理を行う。
一方、受信された応答信号が肯定的である場合(図12:ステップS318:YES)、すなわち、OK応答信号である場合には、通信処理部55は、書き込むべきデータを全て送信したか否かを判断する(図12:ステップS322)。書き込むべきデータが全て送信された場合には(図12:ステップS322:YES)、通信処理部55は、EOF(End Of Frame)データを記憶装置130に送信して(図12:ステップS324)、書き込み処理を終了する。通信処理部55は、図14に示すように書き込み処理を終了すると、リセット信号CRSTをハイレベルからローレベルに変更すると共に、クロック信号CSCKの供給を停止する。EOFデータは、例えば、8ビットのデータで、有意なデータであっても良いし、単なるダミーデータであっても良い。書き込むべきデータが全て送信されていない場合には(図12:ステップS322:NO)、通信処理部55は、ステップS308に戻って、次の単位書き込みデータについて、上述した処理を繰り返す。例えば、通信処理部55は、1番目の単位書き込みデータUD1、/UD1、LD1、/LD1について上述の処理を行った次には、2番目の単位書き込みデータUD2、/UD2、LD2、/LD2について上述の処理を行う。
次に、上述したプリンタ20側における記憶装置130への書き込み処理に対応して記憶装置130側で行われる処理(記憶装置側処理)について、説明する。書き込み処理に対応する記憶装置側処理は、図10のS210〜S250までは読み出し処理のときと同様である。書き込み処理の場合、記憶装置130のメモリ制御回路136が図10のステップS240において受信するのは、書き込みコマンドである。したがって、書き込みコマンドを受信したメモリ制御回路136は、ステップS280の記憶装置側の書き込み処理を実行する(図10)。
図15は、記憶装置側の書き込み処理の処理ステップを示すフローチャートである。オペレーションコードを受信した後、コマンドデータが書き込みコマンドであった場合、読み出し処理のときと同様に、カウンタ制御部M16は、書き込み対象の最初の行はA1行を指定するように、アドレスカウンタM13のクロックのカウント値を制御する。その後、リード/ライト制御部M14は、アドレスカウンタM13のカウント値の指定するアドレスに基づき書き込み処理を実行する。具体的には、書き込み処理を開始すると、メモリ制御回路136のデータ送受信部M15は、コマンドデータに続いてデータ信号線LD1上に現れる信号(1または0)を、クロック信号CSCKの立ち上がりに同期してシーケンシャルに読み取り、順次レジスタに格納していく。この結果、データ送受信部M15は、32ビットの単位書き込みデータ、すなわち、原データ上位8ビットUDnと、反転原データ上位8ビット/UDnと、原データ下位8ビットLDnと、反転原データ下位8ビット/LDnとを順次に受信する(図15:ステップS2802〜2808)。ステップS2808の終了後、データ送受信部M15は、後述する応答信号(NG応答信号、または、OK応答信号)を記憶装置130からサブ制御部50に送信するため、データ端子を介して遣り取りされるデータの送受信方向を、記憶装置130からサブ制御部50へデータを送信する方向に設定する。
単位書き込みデータを受信すると、データ判定部M19は、原データDnと反転データ/Dnとの論理的排他和の演算の出力結果が16ビット全てについて真、すなわち、FFFFであるか否かを判定する(図15:ステップS2810)。ここで言う原データDnは、上記ステップS2802で受信された原データ上位8ビットUDnを上位ビットとし、上記ステップS2806で受信された原データ下位8ビットLDnを下位ビットとする16ビットデータである。ここで言う反転データ/Dnは、上記ステップS2804で受信された反転原データ上位8ビット/UDnを上位ビットとし、上記ステップS2808で受信された反転原データ下位8ビット/LDnを下位ビットとする16ビットデータである。
排他的論理和の演算の出力結果(データ判定部M19の判定結果)が、16ビットのいずれかにおいて偽「0」である、すなわち、FFFFでない場合には(図15:ステップS2810:NO)、データ送受信部M15は、NG応答信号(ローレベル)をサブ制御部50の通信処理部55に送信する(図15:ステップS2812)。ここで、データ信号のやりとりがないときには、データ信号線LD1はプルダウン抵抗R1を介してローレベルとされているので、データ送受信部M15は、NG応答信号を送信する代わりに、サブ制御部50の通信処理部55に何も返信しないものとしてもよい。この場合にも、通信処理部55は、データ信号線LD1がローレベルになっている状態をNG応答信号として認識することが可能である。従って、この場合も実質的にNG応答信号が返信されていることと等価である。NG応答信号が送信されると、記憶装置側の書き込み処理は終了(異常終了)される。
一方、排他的論理和の演算の出力結果(データ判定部M19の判定結果)が、16ビットの全てにおいて肯定的である(真「1」である)、すなわち、FFFFである場合には(図15:ステップS2810:YES)、データ判定部M19は、受信した16ビットの原データDnのパリティチェックを実行して、データの整合性を判定する(図15:ステップS2813)。パリティチェックの結果、データの整合性がとれていない場合には(図15:ステップS2813:NO)、データ送受信部M15は、NG応答信号(ローレベル)をサブ制御部50の通信処理部55に送信する(図15:ステップS2812)。ここで、データ信号のやりとりがないときには、データ信号線LD1はプルダウン抵抗R1を介してローレベルとされていることから、データ送受信部M15は、NG応答信号を送信する代わりに、サブ制御部50の通信処理部に何も返信せずに、実質的にNG応答信号を送信したこととしてもよい。NG応答信号が送信されると、記憶装置側の書き込み処理は終了(異常終了)される。一方、パリティチェックの結果、データの整合性がとれている場合には(図15:ステップS2813:YES)、データ送受信部M15は、データ端子を介してOK応答信号(ハイレベル)をサブ制御部50の通信処理部55に送信する(図15:S2814)。
応答信号(NG応答信号、または、OK応答信号)は、単位書き込みデータを受信した次のクロック信号CSCKの立ち上がりに同期して送信される(図14)。すなわち、サブ制御部50から送信されるクロック信号に同期して記憶装置130が単位書き込みデータを受信した後、次にサブ制御部50から送信されるクロック信号に同期して、記憶装置130はサブ制御部50に対して応答信号を送信する。ここで、ID比較部M11やコマンド比較部M12が識別データIDやコマンドデータCMに通信エラーがあったとした場合であって、かつ、記憶装置130が単位書き込みデータを受信することなく処理を終了したときには、記憶装置130は、応答信号を送信する期間にサブ制御部50に対してなにも返信しないことになる。サブ制御部50と記憶装置130との間でデータのやり取りがないときには、サブ制御部50の抵抗R1によりデータ信号線LD1はローレベルに保持されているので、通信処理部55は、記憶装置130からNG応答信号が送信されたと判断し、通信エラーがあったことがわかる。つまり、ステップS2812のNG応答信号の送信は、識別データIDとコマンドデータCMに整合性がなかったときにも送信される。
OK応答信号が送信された場合、メモリ制御回路136のコピーデータ生成部M17は、受信された16ビットの原データDnの複製であるミラーデータdnを生成する(図15:ステップS2816)。具体的には、メモリ制御回路136には、原データDnを受信するためのレジスタに加えて、ミラーデータdn格納用の16ビットのレジスタが用意されており、コピーデータ生成部M17は、原データDnを複製して、ミラーデータdnを生成する。
次いで、リード/ライト制御部M14は、原データDnおよびミラーデータdnの書き込み対象である記憶領域(書き込み対象領域)から既存データを読み出し、データ判定部M19は、読み出された既存データのパリティチェックを実行する(図15:ステップS2818)。一度の書き込みの対象となる書き込み対象領域は、図7におけるメモリマップ上の1行である。図7に示すように、書き込み対象領域(1行分の領域)の上位16ビットは原データDnを書き込むための原データ領域であり、原データ領域の最終ビットに格納されているのはパリティデータPである。書き込み対象領域(1行分の領域)の下位16ビットはミラーデータdnを書き込むためのミラーデータ領域であり、原データ領域と同様、ミラーデータ領域の最終ビットに格納されているのはパリティデータPである。ステップS2818では、書き込み対象領域の原データ領域に格納されている既存データと、ミラーデータ領域に格納されている既存データのそれぞれについてパリティチェックがなされる。
パリティチェックが終了すると、リード/ライト制御部M14は、書き込み対象領域に対して、データの書き込みを行う(図15:ステップS2820)。ここで、既存データのパリティチェックにおいて、書き込み対象領域の原データ領域の既存データとミラーデータ領域の既存データの両方についてパリティエラーが無かった場合には、リード/ライト制御部M14は、ステップS2802、S2806で受信された原データDnを原データ領域に、ステップS2816で生成されたミラーデータdnをミラーデータ領域に、それぞれ書き込む。一方、パリティチェックにおいて、書き込み対象領域の原データ領域の既存データにパリティエラーがあり、書き込み対象領域のミラーデータ領域の既存データにパリティエラーがない場合には、リード/ライト制御部M14は、原データ領域に受信された原データDnではなくパリティエラーのあった既存データを、ミラーデータ領域にステップS2816で生成されたミラーデータdnをそれぞれ書き込む。また、パリティチェックにおいて、書き込み対象領域の原データ領域の既存データにパリティエラーがなく、書き込み対象領域のミラーデータ領域の既存データにパリティエラーがある場合には、リード/ライト制御部M14は、原データ領域にステップS2802、S2806で受信された原データDnを、ミラーデータ領域に既存データをそれぞれ書き込む。なお、パリティチェックにおいて、書き込み対象領域の原データ領域の既存データとミラーデータ領域の既存データの両方についてパリティエラーがあった場合には、リード/ライト制御部M14は、原データ領域、および、ミラーデータ領域に、それぞれ既存データの再書き込みを行う。すなわち、リード/ライト制御部M14は、パリティエラーが存在する記憶領域については、既存データの再書き込みを行い、パリティエラーが存在しない記憶領域については、データの更新を行う。
書き込み対象領域に対してデータの書き込みを行うと、メモリ制御回路136のコマンド解釈部M12は、書き込むべきデータを全て受信したか否かを判断する(図15:ステップS2822)。コマンド解釈部M12は、EOFデータを受信すると書き込むべきデータをすべて受信したと判断する。あるいは、リセット信号CRSTがハイレベルからローレベルに遷移したことを検出したときに、書き込むべきデータを全て受信したと判断しても良い。書き込むべきデータを全て受信した場合には(図15:ステップS2822:YES)、メモリ制御回路136は、書き込み処理を終了する。書き込むべきデータが全て受信されていない場合は、メモリ制御回路136は、ステップS2802に戻って、次の単位書き込みデータについて、上述した処理を繰り返す。例えば、1番目の単位書き込みデータD1および/D1を受信して上述の処理を行った次には、2番目の単位書き込みデータD2および/D2を受信して上述の処理を行う。本実施例では、アドレスカウンタM13がワードアドレスを順次指定するので、A1行の次にはA2行、A3行・・というように、順次に書き込み処理が実行される。また、OK応答信号の送信(ステップS2814)の後、データ送受信部M15は、次の単位書き込みデータを受信するため、データ端子を介して遣り取りされるデータの送受信方向を、サブ制御部50から記憶装置130がデータを受信する方向に設定する。なお、図15に示すフローチャートの各ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行され得る。例えば、メモリ制御回路136は、OK信号を送信する前に、ミラーデータを生成しても良いし、ミラーデータを生成しつつ、並行して既存データのパリティチェックを実行しても良い。
以上のように、書き込み処理(図14)の際には、識別データIDと、反転識別データ/IDと、ライトコマンドデータCMと、反転ライトコマンドデータ/CMと、所定サイズの1組の書込データD1及び反転書込データ/D1と、がこの順に通信処理部55から記憶装置130に送信され、その後、2組目以降の書込データDn及び反転書込データ/Dnが1組ずつ繰り返し送信される。図14の例では、書込データDn及び反転書込データ/Dnの1組分のデータサイズは、32ビットであるが、これ以外のデータサイズに設定してもよい。また、記憶装置130のメモリ制御回路136は、識別データIDの受信を開始してから1組目の書込データD1及び反転書込データ/D1の受信を完了するまでは、受信データの整合性の判定結果を通信処理部55に送信せず、1組目の書込データD1及び反転書込データ/D1の受信を完了した後に、整合性の判定結果を通信処理部55に送信している。さらに、第2組以降の書込データDn及び反転書込データ/Dnに関しては、各組の受信を完了するたびにそれらの判定の結果がメモリ制御回路136から通信処理部55に送信される。このように、記憶装置130は、所定サイズの書込データDn及び反転書込データ/Dnの1組を受信するたびにその整合性の判定結果を通信処理部55に送信するので、通信処理部55と記憶装置130間の通信の信頼性を向上させることができる。
また、書き込み処理の初期では、識別データIDの受信を開始してから1組目の書込データD1及び反転書込データ/D1の受信を完了するまで、データの整合性の判定結果を通信処理部55に送信しないので、判定結果を記憶装置130から通信処理部55に送信する回数を減らすことができ、書き込み処理の全体を効率的に実行することができる。なお、書き込み処理では、読み出し処理と同様に、識別データIDと反転識別データ/IDの整合性や、ライトコマンドデータCMと反転ライトコマンドデータ/CMとの整合性も判定される(図10のS220〜S245参照)。識別データIDやライトコマンドデータCMが整合していない場合には、メモリ制御回路136は、受信したデータの書き込みを行わずに処理を終了する。この場合には、図14の最初の応答信号の送信期間(データUD1,/UD1,LD1,/LD1の送信後の期間)において、応答信号(OKフラグ)が記憶装置130から通信処理部55に送信されないので、通信処理部55は、何らかのエラーがあったことを認識することができる。ところで、応答信号(OK/NGフラグ)の送信の前後では、データの送信方向が切り替わるが、データ送信方向の切り替えは、いわゆるバス衝突を発生させる可能性があるので、なるべく少なくすることが好ましい。本実施例では、書き込み処理の初期において、識別データIDの受信を開始してから第1組の書込データD1及び反転書込データ/D1の受信を完了するまでは、データの整合性の判定結果を通信処理部55に送信しないようにすることによって、データ送信方向の切り替えの頻度をなるべく低下させ、通信の信頼性や高速性を高めている。
また、本実施例では、図15に示すように、書込データDnと反転書込データ/Dnとが互いに反転関係にあり、かつ、それぞれのデータにパリティエラーが無い場合にのみ肯定的な整合性判定結果を生成する。このような整合性判定を行えば、通信の信頼性を更に向上させることが可能である。すなわち、仮に書込データDnの1ビットと反転書込データ/Dnの1ビットがそれぞれ同じビット位置で誤っている場合には、書込データDnと反転書込データ/Dnとが整合しているという判定結果が得られる。しかし、このような場合にも、それぞれのパリティチェックでエラーと判定されるので、誤ったデータが書き込まれることを防ぐことが可能である。
以上の説明から解るように、本実施例における原データDnは、請求項における第1のデータに対応し、本実施例における反転データ/Dnは、請求項における第2のデータに対応する。また、本実施例における応答信号(OK応答信号およびNG応答信号)の送信は、請求項における判定の結果の送信に対応する。
・記憶装置に対するライトロック処理
図16は、記憶装置に対するライトロック処理において、プリンタ20の通信処理部55と記憶装置130のメモリ制御回路136との間で遣り取りされる信号を模式的に示すタイミングチャートである。ライトロック処理は、強誘電体メモリアレイ132のメモリマップ(図7)の書き換え可能領域の所定の記憶領域を、行単位でライトロック領域に変更する処理である。ライトロック領域に変更された行は、外部機器(例えば、サブ制御部50の通信処理部55)からのアクセスによって、書き換えることができなくなる。
通信処理部55は、まず、データ信号CSDAとして、上述した読み出し処理および書き込み処理と同様に、SOFデータを送信する(図16)。通信処理部55は、SOFデータに続いて、上述した読み出し処理および書き込み処理と同様に、識別データをデータ信号CSDAとして送信する(図16)。通信処理部55は、識別データに続いて、コマンドデータをデータ信号CSDAとして送信する(図16)。本処理で送信されるコマンドデータは、ライトロック処理であることを表すコマンド(ライトロックコマンド)である。通信処理部55は、コマンドデータの送信を終了した次のクロック信号CSCKの立ち上がりに同期して記憶装置130のメモリ制御回路136が1ビットずつデータを受け取れるように、ライトロック対象アドレスデータADと、反転ライトロック対象アドレスデータ/ADを送信する(図16)。ライトロック対象アドレスデータADは、例えば、8ビットのデータで、書き込みが許容された領域からライトロック領域に変更される行を特定するデータである。反転ライトロック対象アドレスデータ/ADは、ライトロック対象アドレスデータADの各ビットの値を反転させた8ビットデータである。
ライトロック対象アドレスデータADと反転ライトロック対象アドレスデータ/ADの送信を終了した次のクロック信号CSCKの立ち上がりに同期して、通信処理部55は、サブ制御部50から1ビット(「1」または「0」)の応答信号を受信する(図16)。書き込み処理の場合と同様に、ハイレベルの応答信号(OK応答信号)は、ライトロック対象アドレスデータADおよび反転ライトロック対象アドレスデータ/ADを記憶装置130側が正しく受信したことを示す信号であり、ローレベルの応答信号(NG応答信号)は、ライトロック対象アドレスデータADおよび反転ライトロック対象アドレスデータ/ADを記憶装置130側が正しく受信できなかったことを示す信号である。
受信された応答信号がNG応答信号である場合には、通信処理部55は所定のエラー処理を行い、ライトロック処理を終了する。エラー処理は、例えば、上述した書き込み処理においてNG応答信号を受信したときのエラー処理と同じ処理である。一方、受信された応答信号がOK応答信号である場合には、通信処理部55は、EOF(End Of Frame)データを記憶装置130に送信してライトロック処理を終了する(図16)。
次に、上述したプリンタ20側における記憶装置130へのライトロック処理に対応して記憶装置130側で行われる処理(記憶装置側処理)について説明する。ライトロック処理に対応する記憶装置側処理は、図10において説明した通りである。書き込み処理の場合、記憶装置130のメモリ制御回路136が図10のステップS240において受信するのは、ライトロックコマンドである。したがって、ライトロックコマンドを受信したメモリ制御回路136は、ステップS270の記憶装置側のライトロック処理を実行する(図10)。
メモリ制御回路136のリード/ライト制御部M14は、ライトロック処理を開始すると、コマンドデータに続いてデータ信号線LD1上に表れる信号(1または0)を、クロック信号CSCKの立ち上がりに同期してシーケンシャルに読み取り、順次にレジスタに格納していく。この結果、メモリ制御回路136は、ライトロック対象アドレスデータADと、反転ライトロック対象アドレスデータ/ADを順次に受信する。
データ判定部M19は、受信されたライトロック対象アドレスデータADと反転ライトロック対象アドレスデータ/ADとの論理的排他和の演算の出力結果が8ビット全てについて真、すなわち、11111111(FF)であるか否かを判定する。判定の結果、排他的論理和の演算の出力結果がFFでない場合には、データ送受信部M15はNG応答信号(ローレベル)をサブ制御部50の通信処理部55に送信する。NG応答信号が送信されると、記憶装置側のライトロック処理は終了(異常終了)される。
一方、排他的論理和の演算の出力結果が、8ビットの全てにおいて真「1」、すなわち、FFである場合、リード/ライト制御部M14は、制御領域のライトロック対象アドレスデータADにより特定される書き換え可能領域の行をライトロック領域とするように変更する。具体的には、オペレーションコード受信後、アクセスの種類がライトロックであった場合には、カウンタ制御部M16は制御領域の先頭行を選択するようにアドレスカウンタM13のカウンタ値をセットする。そして、制御領域のうち、ライトロック対象アドレスデータADのフラグを格納するセルの行を選択するようにカウントする。アドレスカウンタM13によりライトロック対象アドレスデータADのフラグを格納するセルを含む行が書き込み対象の行として選択された後、リード/ライト制御部M14は、ライトロック対象アドレスデータADに対応するセルのフラグ情報が「0」から「1」となるように、その行を更新する。リード/ライト制御部M14は、制御領域のライトロック対象アドレスデータADにより特定される書き換え可能領域の行のフラグが格納されるセルのフラグを更新し、ライトロック対象アドレスデータADにより特定される書き換え可能領域の行をライトロック領域に変更して、ライトロック処理を終了する。具体的には、リード/ライト制御部M14は、ライトロック対象アドレスデータADにより特定される行に対応するライトロックフラグ情報を「0」から「1」に変更する。
・プリンタの印刷処理
次に、上述した記憶装置130に関連する処理を踏まえて、プリンタ20における印刷処理について説明する。図17は、主制御部40が主体となって実行される印刷処理の処理ステップを示すフローチャートである。以下で説明する印刷処理は、説明の便宜のため1つのインクカートリッジ100に着目して説明するが、実際にはプリンタ20に搭載された各インクカートリッジ100について同様の処理を行っている。
印刷処理は、主制御部40がコンピュータ90または操作部70を介して、ユーザからの印刷要求を受け付ける(図17:ステップS502)ことによって開始される。印刷要求が受け付けられると、主制御部40は、上述した記憶装置130からの読み出し処理を実行して、インクカートリッジ100の記憶装置130からインク情報を読み出す(図17:ステップS504)。読み出されるインク情報は、少なくとも上述した第1インク消費カウント値Xと、第2インク消費カウント値Yと、インクエンド情報Mとを含む。
主制御部40は、インク情報を読み出すと、インクエンド情報Mの値が、上述したフル状態、ロー状態、エンド状態のいずれであるかを判断する(図17:ステップS506)。主制御部40は、インクエンド情報Mがエンド状態であると判断すると(図17:ステップS506:E)、ユーザに対するインクエンド通知を実行する(図17:ステップS508)。インクエンド通知は、例えば、インクカートリッジ100を交換するように、ユーザに促すメッセージを操作部70の表示パネルに表示することによって行われる。
主制御部40は、インクエンド情報Mがロー状態であると判断すると(図17:ステップS506:L)、第1インク消費カウント値Xと第2インク消費カウント値Yとの差分値(X−Y)の値が、第2のしきい値Vref2以上であるか否かを判定する(図17:ステップS510)。後述するように、記憶装置130の第2インク消費カウント値Yを格納する行は、インクエンドが検出された時点でライトロックされるため、第2インク消費カウント値Yは更新されない。主制御部40は、(X−Y)の値が第2のしきい値Vref2以上である場合には(図17:ステップS510:YES)、記憶装置130のインクエンド情報Mの値をエンド状態に更新する(図17:ステップS512)。具体的には、主制御部40は、上述した記憶装置130への書き込み処理を実行して、インクエンド情報Mの値を「11」に更新する。インクエンド情報Mの値を更新すると、主制御部40は、上述したインクエンド通知を実行する(図17:ステップS508)。
一方、主制御部40は、インクエンド情報Mがフル状態であると判断した場合(図17:ステップS506:F)、または、(X−Y)の値が第2のしきい値Vref2未満である場合には(図17:ステップS510:NO)、印刷要求に応じた印刷のうち、所定量の印刷を実行する(図17:ステップS514)。
所定量の印刷を実行すると、主制御部40は、新たなインク消費量カウント値を算出する(図17:ステップS516)。具体的には、主制御部40は、所定量の印刷の実行内容に基づいて、所定量の印刷によるインク消費量を推定する。主制御部40は、ステップS504で記憶装置130から読み出した第1インク消費カウント値Xに、推定したインク消費量に相当するカウント値を足した値を、新たなインク消費量カウント値とする。
新たなインク消費量カウント値を算出すると、主制御部40は、センサ110のセンサを駆動する(図17:ステップS518)。主制御部40は、センサの駆動結果に基づいて、インクカートリッジ100のインク残量が第1のしきい値Vref1以上(フル)であるか第1のしきい値Vref1未満(ロー)であるかを判断する(図17:ステップS520)。
センサを駆動した結果、インクカートリッジ100のインク残量が第1のしきい値Vref1以上であると判断すると(図17:ステップS520:F)、主制御部40は、記憶装置130に記憶されている第1インク消費カウント値Xと第2インク消費カウント値Yを、ステップS516で算出された新たなインク消費量カウント値に更新する(図17:ステップS522)。具体的には、主制御部40は上述した書き込み処理を実行して、記憶装置130にアクセスして、第1インク消費カウント値Xと第2インク消費カウント値Yを新たなインク消費量カウント値に書き換える。この結果、第1インク消費カウント値Xと第2インク消費カウント値Yの値は同じになる。
一方で、センサを駆動した結果、インクカートリッジ100のインク残量が第1のしきい値Vref1未満であると判断すると(図17:ステップS520:L)、主制御部40は、第2インク消費カウント値Yを格納する記憶領域(図7:メモリマップのA2行)がライトロック領域となっているかどうかを確認し(SRAM551に記憶されているデータのうち、記憶装置130の制御領域に対応するデータを参照して確認する。)、ライトロック領域となっていない場合には第2インク消費カウント値Yを格納する行をライトロックする第2インク消費カウント値ロック処理を実行する。(図17:ステップS524)。第2インク消費カウント値ロック処理は、上述した記憶装置130に対するライトロック処理を用いて実行される。第2インク消費カウント値ロック処理が行われると、記憶装置130において、第2インク消費カウント値Yの値は、変更不可能な状態になる。したがって、記憶装置130における第2インク消費カウント値Yの値は、センサ駆動によって、初めてインク残量が第1のしきい値Vref1未満であることが検出された直前のインク消費量カウント値に保持されることになる。
第2インク消費カウント値ロック処理が終了されると、主制御部40は、記憶装置130に記憶されている第1インク消費カウント値Xを、上述した書き込み処理を実行することにより、ステップS516で算出された新たなインク消費量カウント値に更新する(図17:ステップS526)。このとき、ライトロックされた状態にある第2インク消費カウント値Yの値の更新は行わない。
第1インク消費カウント値Xの値を更新すると、主制御部40は、第1インク消費カウント値Xと第2インク消費カウント値Yとの差分値(X−Y)の値が、第2のしきい値Vref2以上であるか否かを判定する(図17:ステップS528)。ここで用いられる第1インク消費カウント値Xは、ステップS526において更新された値である。一方、ここで用いられる第2インク消費カウント値Yは、ステップS504において読み出された値、あるいは、ステップS522において更新された値のうち、新しい方の値である。主制御部40は、(X−Y)の値が第2のしきい値Vref2以上である場合には(図17:ステップS528:YES)、記憶装置130のインクエンド情報Mの値をエンド状態に更新し(ステップS512)、上述したインクエンド通知を実行する(図17:ステップS508)。
ステップS522において第1インク消費カウント値Xおよび第2インク消費カウント値Yが更新された後、あるいは、ステップS528において(X−Y)の値が第2のしきい値Vref2未満である場合(図17:ステップS528:NO)、主制御部40は、印刷要求に基づく印刷が全て終了したか否かを判定する(図17:ステップS530)。印刷が全て終了している場合には(図17:ステップS530:YES)、印刷処理は終了される。印刷が全て終了していない場合には、ステップS514に戻って、再び、所定量の印刷を実行する。
以上説明した本実施例によれば、記憶装置130への書き込み処理において、記憶装置130は、原データDnと反転データ/Dnとの整合性を確認して、整合性があるか否かを示す応答信号を原データDnの16ビットごとに送信する。その結果、サブ制御部50と記憶装置130との間の通信の信頼性を向上することができる。また、原データDnと反転データ/Dnとの整合性がない場合には、記憶装置130は、原データDnを強誘電体メモリアレイ132に書き込まないので、誤った強誘電体メモリアレイ132の更新を抑制することができる。また、記憶装置130への書き込み処理において、原データDnと反転データ/Dnは、互いに各ビットが反転した関係にあるので、例えば、インクカートリッジ100のデータ端子260と、対応するプリンタ20側の端子との接触不良により、データ信号線LD1上にローレベルまたはハイレベルのいずれか一方のみが表れる通信エラーが発生した場合など、確実に通信エラーを検出することができる。また、原データDnと反転データ/Dnの各ビットの排他的論理和を計算することにより、原データDnと反転データ/Dnとの整合性(通信エラーの有無)を判定するので、容易で確実性の高い通信エラーの検出をすることができる。
さらに、本実施例によれば、記憶装置130からの読み出し処理において、原データDnと、原データDnと同一量であって各ビットが反転したデータである反転データ/Dnが、記憶装置130からサブ制御部50に送信される。サブ制御部50側にて、原データDnと反転データ/Dnとの整合性を確認することにより、通信エラーの有無を判断できる。この結果、サブ制御部50と記憶装置130との通信の信頼性を向上することができる。したがって、プリンタ20の誤動作などの不具合を抑制することができる。また、記憶装置130からの読み出し処理において、原データDnと反転データ/Dnは、互いに各ビットが反転した関係にあるので、例えば、インクカートリッジ100のデータ端子260と、対応するプリンタ20側の端子との接触不良により、データ信号線LD1上にローレベルまたはハイレベルのいずれか一方のみが表れる通信エラーが発生した場合など、確実に通信エラーと判断することができる。さらに、記憶装置130からの読み出し処理において、記憶装置130は、原データDnと実質的に同一のデータであるミラーデータdnと、反転データ/Dnと実質的に同一のデータである反転ミラーデータ/dnとを、サブ制御部50に送信するので、例えば、通信エラーにより原データDnと反転データ/Dnとに整合性がなくとも、ミラーデータdnと反転ミラーデータ/dnとに整合性があれば、プリンタ20側はミラーデータdnと反転ミラーデータ/dnのいずれかを用いて処理を継続できるので、耐通信エラー性が向上する。さらに、記憶装置130では、原データDnとともに、ミラーデータdnを強誘電体メモリアレイ132に格納しており、両方をプリンタ20に送信する。この結果、強誘電体メモリアレイ132の原データ領域とミラーデータ領域のいずれかにセルエラーが発生していたとしても、セルエラーが発生していない領域に格納されたデータを用いて、プリンタ20側は正常な処理を継続できる。したがって、耐セルエラー性が向上し、記憶装置130の不良率を大幅に抑制することができる。
さらに、本実施例におけるプリンタ20は、原データDnと、反転データ/Dnと、ミラーデータdnと、反転ミラーデータ/dnを受け取ったとき、まず、原データDnと反転ミラーデータ/dnとの整合性をチェックし、整合性がない場合には、原データDnと反転データ/Dnとの整合性、および、ミラーデータdnと反転ミラーデータ/dnとの整合性をチェックする。そして、原データDnと反転ミラーデータ/dnとの整合性がなく、かつ、原データDnと反転データ/Dnとの整合性およびミラーデータdnと反転ミラーデータ/dnと整合性がある場合には、セルエラーと判断している。また、原データDnと反転ミラーデータ/dnとの整合性がなく、かつ、原データDnと反転データ/Dnとの整合性またはミラーデータdnと反転ミラーデータ/dnと整合性がない場合には、通信エラーと判断している。こうすることで、プリンタ20はエラー種別を正しく認識して、エラー種別に応じた処理を行うことができる。
さらに、本実施例において、強誘電体メモリアレイ132のメモリマップ(図7)において、原データ領域には実データとパリティデータが格納されると共に、ミラーデータ領域にも実データとパリティデータとが格納される。書き換え可能領域からの読み出し処理においては、原データ領域に格納された実データ(上位15ビット)とパリティデータ(下位1ビット)が記憶装置130からサブ制御部50に対して送信されると共に、ミラーデータ領域に格納された実データ(上位15ビット)とパリティデータ(下位1ビット)が記憶装置130からサブ制御部50に対して送信される。従って、これらのデータを受信したプリンタ20は、原データ領域に格納された実データについてパリティチェックを行うと共に、ミラーデータ領域に格納された実データについてパリティチェックを行うことができる。そして、主制御部40は、原データ領域に格納された実データとミラーデータ領域に格納された実データのうちのいずれか一方にパリティエラーが発生していたとしても、パリティエラーが発生していない側の実データを用いて、正常な処理を継続できる。この結果、耐通信エラー性および耐セルエラー性が向上する。
さらに、本実施例における書き込み処理において、記憶装置130は、書き込み対象領域の既存データについて、原データ領域に格納されている16ビットとミラーデータ領域に格納されている16ビットのパリティチェックをそれぞれ行う。この結果、パリティエラーが検出された領域には既存データの再書き込みを行い、パリティエラーが検出されない領域には新たなデータの書き込みを行う。パリティエラーの検出された領域にはメモリセルの不具合が存在すると考えられるため、パリティチェックは記憶領域の不具合検出手段と言える。この結果、不具合が発生した領域においてはデータの更新を行わないので、不具合が発生した領域に対してデータを更新することによる予期せぬ不具合を抑制することができる。また、パリティエラーが検出された領域には既存データの再書き込みを行うことにより、セルエラーの発生している領域のデータがデータリテンション不良によって変化することを抑制する。データリテンション不良は、メモリのセルの電荷が徐々に消えていくことにより、記憶されたデータの値が変化する不良をいう。セルエラーが発生しているはず領域において、データリテンション不良によってデータが変化すると、偶然にパリティの整合性が合ってしまい、セルエラーが正しく検出できなくなるおそれがある。
さらに、本実施例によるプリンタ20では、センサ110を駆動して、インクカートリッジ100のインク残量が第1のしきい値Vref1未満であると判断した場合に、第2インク消費カウント値Yが更新されないように、第2インク消費カウント値Yが格納される記憶装置130の記憶領域に対して禁止要求(ライトロック処理)を行う。この結果、禁止要求のあった後には、記憶装置130は、第2インク消費カウント値Yに対する更新要求を、受け付けなくなる。この結果、第2インク消費カウント値Yは、センサによりインク残量が第1のしきい値Vref1未満であると検出される直前のインク消費カウント値に維持される。第2インク消費カウント値Yが誤って、更新されてしまうことが抑制される。さらに、第2インク消費カウント値Yの更新が停止された後においても、第1インク消費カウント値Xは更新されるので、(X−Y)の値によってセンサによりインク残量が第1のしきい値Vref1未満であると検出された後のインク消費量を正確に認識することができる。この結果、インクエンドを精度良く判定することができ、インクカートリッジ100に収容されたインクを無駄なく最後まで使い切ることが可能になる。
B.変形例
・第1変形例:
上記実施例では、原データDnに基づいて生成されるデータとして、反転データ/Dnを用いているが、これに限られない。例えば、原データDnから所定の値を足した値、所定の値を引いた値、所定の値を掛けた値などを、原データDnとの整合性を確認するためのデータとして使用しても良い。一般的には、原データDnと、原データDnに基づいて生成されるデータは、所定の関連性を有し、原データDnと、原データDnに基づいて生成されるデータが当該所定の関連性の有無を判定できれば良い。また、原データDnと、原データDnに基づいて生成されるデータは、同一のデータ量であることが信頼性の面から好ましい。
・第2変形例:
上記実施例における書き込み処理では、サブ制御部50から記憶装置130に対して、原データ上位8ビットUDn、反転ミラーデータ上位8ビット/Udn、原データ下位8ビットLDn、反転原データ下位8ビット/LDnの順で32ビットを送信しているが、送信する順番は任意に変更可能であり、原データDn16ビットを先に送信して、その後に反転データ/Dn16ビットを送信することとしても良い。また、反転データを先に送信して、後に原データを送信しても良い。
・第3変形例:
上記実施例における書き込み処理では、32ビット分の原データおよび反転データを1つの単位データとして、サブ制御部50から記憶装置130に対して単位データの送信が終わる度に、記憶装置130からサブ制御部50に応答信号を返信しているが、単位データのデータ長は任意に変更可能であり、64ビット分の原データおよび反転データを1つの単位データとしても良いし、16ビット分の原データおよび反転データを1つの単位データとしても良い。
・第4変形例:
上記実施例では、ホスト回路としてプリンタ20のサブ制御部50が用いられているが、ホスト回路には任意の計算機などの回路が用いられ得る。また、上記実施例では、記憶装置としてインクカートリッジ100の記憶装置130が用いられているが、任意の不揮発性の記憶装置が用いられ得る。この場合、ホスト回路と記憶装置とは、ホスト回路に電気的に接続された回路側端子と、記憶装置に電気的に接続され回路側端子と脱着可能な記憶装置側端子とを介して、電気的に接続される構成に本発明を適用することが効果的である。こうすれば、記憶装置側端子と回路側端子の接触不良による通信エラーの発生を検出して、ホスト回路と記憶装置との通信の確実性を向上することができる。
・第5変形例:
上記実施例では、強誘電体メモリアレイ132に原データ領域とミラーデータ領域を有しているが、原データ領域だけでも良い。この場合、メモリ制御回路136は、原データ領域に格納されたデータを複製して、ミラーデータdn(コピーデータ)を生成する読み出し用のコピーデータ生成部と、原データ領域に格納されたデータの各ビットを反転させて、反転データ/Dnと反転ミラーデータ/dnを生成する反転データ生成部を備えればよい。そして、読み出し処理では、記憶装置130側において、メモリ制御回路136のデータ送受信部M15は、原データDnとして、原データ領域に格納されたデータをサブ制御部50に送信すると共に、原データDnを用いて生成されたミラーデータdnと、反転データ/Dnと、反転ミラーデータ/dnをサブ制御部50に送信すれば良い。また、データ送受信部M15は、原データ領域から読み出したデータをレジスタに保持後、原データとして送信し、ミラーデータとしてレジスタに保持しているデータを送信してもよい。
・第6変形例:
上記実施例では、強誘電体メモリアレイ132に原データ領域とミラーデータ領域を有しているが、強誘電体メモリアレイ132に原データ領域と反転データ領域とを有しても良い。この場合、リード/ライト制御部M14は、原データ領域に原データDnを格納すると共に、反転データ領域に反転データ/Dnを格納すればよい。そして、読み出し処理では、メモリ制御回路136のデータ送受信部M15は、原データ領域から読み出したデータを原データDnとして、反転データ領域から読み出したデータを反転データ/Dnとしてサブ制御部50に送信すると共に、同じ原データ領域から読み出したデータをミラーデータdnとして、同じ反転データ領域から読み出したデータを反転ミラーデータ/dnとしてサブ制御部50に送信すれば良い。この場合でも、ホスト回路は、排他的論理和をとることで通信エラーを検出することができる。また、パリティチェックを実施することで、メモリセルエラーが発生している可能性がある。
・第7変型例
上記実施例では、強誘電体メモリアレイ132は原データ領域とミラーデータ領域を有しているが、強誘電体メモリアレイ132は、原データDnを格納する原データ領域と、原データDnの反転データ/Dnを格納する反転データ領域と、原データDnのミラーデータdnを格納するミラーデータ領域と、ミラーデータdnの反転データである反転ミラーデータ/dnを格納する反転ミラーデータ領域とを有する構成としても良い。この場合は、メモリ制御回路136のリード/ライト制御部M14とデータ送受信部M15は、格納されたデータをそのまま読み出して、送信すれば良い。
・第8変形例:
上記実施例における読み出し処理では、原データDnと反転データ/Dnとミラーデータdnと反転ミラーデータ/dnを、記憶装置130からサブ制御部50に送信しているが、原データDnと反転データ/Dnのみを送信してミラーデータdnと反転ミラーデータ/dnの送信は省略しても良い。また、原データDnとミラーデータdnのみを送信して、反転データ/Dnと反転ミラーデータ/dnの送信を省略しても良い。
・第9変形例:
上記実施例における書き込み処理では、強誘電体メモリアレイ132のメモリマップに格納されるべき実データおよびパリティデータの両方がプリンタ20側で生成され、記憶装置130に送信される。これに代えて、プリンタ20は実データのみを生成して記憶装置130に送信し、記憶装置130側にてパリティデータを生成しても良い。この場合には、メモリ制御回路136は、プリンタ20から送信された実データ15ビットに対して整合する1ビットのパリティデータを生成するパリティ取得部を備えれば良い。
・第10変形例:
上記実施例における書き込み処理では、記憶装置130は、パリティエラーが検出された領域には既存データの再書き込みを行っているが、これに代えて、パリティエラーが検出された領域にはデータの書き込みを行わないこととしても良い。
・第11変形例:
上記実施例では、記憶装置130の強誘電体メモリアレイ132に、インクの消費量を表す第1インク消費カウント値Xおよび第2インク消費カウント値Yを記録しているが、インクの残量を表す残量情報を記録しても良い。かかる場合には、残量情報の初期値は、インクカートリッジ100に充填されたインク量を表す値となる。また、印刷処理において、プリンタ20は、印刷によって消費されたインク量に応じて、強誘電体メモリアレイ132に格納された残量情報を減じる方向に残量情報を書き換える。この場合、残量情報が格納される記憶領域は、デクリメント領域に設定されるのが好ましい。デクリメント領域は、数値が減少する方向にのみ書き換えが許容され、数値が増加する方向への書き換えが許容されない領域である。このようなデクリメント領域は、実施例におけるインクリメント領域と同様に、読み出し専用領域にデクリメントフラグ情報を書き込みことにより設定されることが好ましい。
・第12変形例:
上記実施例では、第2インク消費カウント値Yと第1インク消費カウント値Xをそれぞれ強誘電体メモリアレイ132に格納して、第2インク消費カウント値Yと第1インク消費カウント値Xとの差分に基づいてインクエンドを判断している。これに代えて、第2インク消費カウント値Yのみを強誘電体メモリアレイ132に格納することとしても良い。この場合は、第1インク消費カウント値Xの値は、プリンタ20側に備える不揮発性のメモリに格納して実施例と同様の処理を行えば良い。
・第13変形例:
上記実施例は、インクジェット式の印刷装置およびインクカートリッジが採用されているが、インク以外の他の液体を噴射したり吐出したりする液体噴射装置および当該液体噴射装置に液体を供給する液体容器を採用しても良い。ここでいう液体は、溶媒に機能材料の粒子が分散されている液状体、ジェル状のような流状体を含む。例えば、液晶ディスプレイ、EL(エレクトロルミネッセンス)ディスプレイ、面発光ディスプレイ、カラーフィルタの製造などに用いられる電極材や色材などの材料を分散または溶解のかたちで含む液体を噴射する液体噴射装置、バイオチップ製造に用いられる生体有機物を噴射する液体噴射装置、精密ピペットとして用いられ試料となる液体を噴射する液体噴射装置であってもよい。さらに、時計やカメラ等の精密機械にピンポイントで潤滑油を噴射する液体噴射装置、光通信素子等に用いられる微小半球レンズ(光学レンズ)などを形成するために紫外線硬化樹脂等の透明樹脂液を基板上に噴射する液体噴射装置、基板などをエッチングするために酸又はアルカリ等のエッチング液を噴射する液体噴射装置、および、これらの液体噴射装置に液体を供給する液体容器を採用しても良い。そして、これらのうちいずれか一種の噴射装置および液体容器に本発明を適用することができる。さらに、インクジェット方式のプリンタに限定されず、トナーなどの記録材をつかって印刷を実行するレーザプリンタおよびトナーカートリッジを採用してもよい。
・第14変形例:
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしても良い。
・第15変形例:
上記実施例では、圧電素子を用いたセンサ110が用いられているが、これに代えて、例えば、常にインクがあることを示す周波数の応答信号を返す発振回路などの発振装置を用いても良く、サブ制御部50と何らかの遣り取りを行うCPUやASICなどのプロセッサや、より簡易なICを用いても良い。また、センサなどが搭載されず、記憶装置のみが搭載されるタイプのインクカートリッジ100にも本発明は適用され得る。
・第16変形例:
上記実施例では、1つのインクタンクを1つのインクカートリッジとして構成しているが、複数のインクタンクを1つのインクカートリッジとして構成しても良い。
・第17変形例:
上記の実施例では、液体供給ユニットは、基板が容器本体に固定されたインクカートリッジであり、基板は容器本体と一体となって印刷ヘッドユニットに設けられたホルダに装着されるが、本発明が適用される液体供給ユニットとして、基板が固定されるカバーと、液体を収容する容器本体とが、各々個別にホルダに装着されるインクカートリッジとしてもよい。例えば、所定挿入方向に基板が固定されたカバーをホルダに挿入して装着した後、さらに、容器本体をホルダに装着するような構成が挙げられる。この場合、容器本体内のインクが無くなったらインク容器本体のみを交換し、交換にともなって記憶装置130に記憶されたインク消費量情報(第1インク消費カウント値X、および、第2インク消費カウント値Y)がリセットされるように構成しておけばよい。
・第18変形例:
上記の実施例では、液体収容ユニットは、印刷ヘッドユニットのホルダに装着され、インク供給部から印刷ヘッドに直接インクが供給されるが、液体収容ユニットは、液体噴射装置内のヘッドとは離れた位置に装着され、液体収容ユニットの液体供給部に連結されたチューブを介してインクをヘッドに供給する構成としてもよい。
・第19変形例:
上記の実施例では、記憶装置130は、強誘電体メモリセルアレイ132を備えた半導体記憶装置であるとして説明したが、これに限定されず強誘電体メモリセルを利用しない半導体記憶装置(EEPROM,フラッシュメモリ)でもよい。さらに半導体記憶装置以外の記憶装置であってもよい。
・第20変形例:
上記実施例では、主制御部40と通信処理部55とが別の構成であったが、一体の制御部であってもよい。
・第21変形例:
上記実施例では、記憶装置130とサブ制御部50との通信において、サブ制御部50から記憶装置130に対してリセット信号CRSTを供給しているが、リセット信号CRSTの供給は省略しても良い。この場合、記憶装置130のリセット端子240、リセット端子240に対応するプリンタ20側の端子440、および、リセット信号線LR1は省略される。この場合、例えば、記憶装置130の初期化は、記憶装置130が電源電圧CVDDの供給を受けて起動するときに、記憶装置130が自発的に行う。起動時に、自身を初期化した記憶装置130は、その後、実施例と同様に、サブ制御部50からクロック信号CSCKとデータ信号CSDAの供給を受けて動作すれば良い。
・第22変形例:
上記実施例では、記憶装置130のメモリ制御回路136は、ID比較部M11、コマンド解釈部M12、データ判定部M19を備えている。ID比較部M11、コマンド解釈部M12、データ判定部M19は、各々、別のハードウェアで構成されてもよいし、一部もしくは全てが共通のハードウェアで構成されてもよい。
以上、本発明の実施例および変形例について説明したが、本発明はこれらの実施例および変形例になんら限定されるものではなく、その要旨を逸脱しない範囲内において種々の態様での実施が可能である。