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