(57)【要約】【課題】記憶装置に格納されているデータの信頼性の向上向上させること。【解決手段】半導体記憶装置１０は、書き込みデータを受信すると、誤り検出オペレーションデコーダ１５０によって書き込みデータに誤りが発生しているか否かを判定する。誤り検出オペレーションデコーダ１５０は、書き込みデータに誤りを検出すると、ライト／リードコントローラ１４０に対して書き込み許可信号ＷＥＮを送信しない。この結果、誤りが検出された書き込みデータはメモリアレイ１００に書き込まれない。【選択図】図１
2009259225.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を備える液体収容体であって、
データを記憶する記憶素子と、
前記記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、
前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える液体収容体。
【請求項２】
請求項１に記載の液体収容体はさらに、
前記誤り検出の結果を記憶するための誤り検出結果記憶部を備える液体収容体。
【請求項３】
請求項１または２に記載の液体収容体において、
前記記憶素子はシーケンシャルアクセス型の記憶素子であり、
前記読み書き制御部は、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、以降受信する書き込みデータを前記記憶素子に対して書き込まない液体収容体。
【請求項４】
請求項１または２に記載の液体収容体において、
前記記憶素子はシーケンシャルアクセス型の記憶素子であり、
前記読み書き制御部は、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、以降受信する書き込みデータであって前記誤り検出回路によって誤りが検出されない書き込みデータについては前記記憶素子に対する書き込みを実行する液体収容体。
【請求項５】
請求項１から４のいずれに記載の液体収容体において、
前記書き込みデータには書き込みコマンドおよび誤り検出符号が付されており、
前記誤り検出回路は前記書き込みコマンドに基づいてデータが前記記憶素子に書き込まれるべき前記書き込みデータであると判断し、前記誤り検出符号を用いて前記受信した書き込みデータの誤りを検出する液体収容体。
【請求項６】
記憶装置を備える液体収容体と、記憶装置に対するデータの書き込みおよび読み出しを行う計算機とを備えるシステムであって、
前記計算機は、
前記記憶装置に対して書き込まれるべきデータに対して誤り符号を付して書き込みデータを生成する誤り符号付与回路と、
前記書き込みデータを前記記憶装置に対して送信する送信部とを備え、
前記液体収容体は、
データを記憶する記憶素子と、
前記書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、
前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備えるシステム。
【請求項７】
請求項６に記載のシステムにおいて、
前記液体収容体はさらに、前記誤り検出の結果を記憶するための誤り検出結果記憶部を備え、
前記計算機は前記記憶装置における前記誤り検出結果記憶部に記憶されている結果が誤り検出を示している場合には、前記記憶装置に対して書き込み可能な全ての書き込みデータを前記記憶装置に対して送信するシステム。
【請求項８】
請求項６に記載のシステムにおいて、
前記記憶装置の記憶素子はシーケンシャルアクセス型の記憶素子であり、
前記計算機の前記符号付与回路はさらに、誤った符号を有する送り用符号化データを生成可能であり、
前記計算機は、前記記憶装置における所望のアドレスに至るまでは前記送り用符号化データを前記記憶装置に対して送信し、前記記憶装置における所望のアドレスに至ると前記書き込みデータを前記記憶装置に対して送信するシステム。
【請求項９】
液体収容体に備えられている記憶装置に対するアクセス制御方法であって、
前記記憶装置が有する記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出し、
前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しないアクセス制御方法。
【請求項１０】
記憶装置であって、
データを記憶する記憶素子と、
前記記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、
前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える記憶装置。
【請求項１１】
回路基板であって、
データを記憶する記憶素子と、
前記記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、
前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える半導体装置と、
前記半導体装置と電気的に接続されている１または複数の外部端子とを備える
回路基板。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置を備える液体収容体および液体収容体に備えられた記憶装置に対するアクセス制御方法に関する。
【背景技術】
【０００２】
記憶装置を備える液体収容体、例えば、インクカートリッジが実用化されている（例えば、特許文献１参照）。記憶装置に記憶されるデータの信頼性を高めるために、例えば、記憶装置に対するデータの書き込みの際に誤り訂正符号を生成して記憶装置内に格納しておき、記憶装置からデータを読み出す際に格納されている誤り訂正符号を用いて読み出したデータに誤りが発生しているか否かを検出する技術が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１４８７０号公報
【特許文献２】特開平２−６８６４２号公報
【特許文献３】特開平５−２９８１９３号公報
【０００４】
しかしながら、記憶装置内に誤り訂正符号を格納する場合には、記憶装置の記憶容量の増大、すなわち、記憶装置の大きさの増大を招くため、小容量の記憶装置ではコストが嵩むという問題がある。また、近年、記憶装置内に格納されているデータの信頼性は向上しており、特に、通信経路にメカニカル接点をもつシステムにおいてはデータに誤りが発生する原因は、主に接点不良、ノイズといった通信経路上の要因に基づいている。
【０００５】
なお、上記課題は、液体収容体に備えられている記憶装置のみならず、単体で用いられている記憶装置においても同様に発生し得る課題である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記課題を解決するためになされたものであり、記憶装置に格納されているデータの信頼性の向上を目的とする。
【課題を解決するための手段】
【０００７】
上記課題の少なくとも一部を解決するために、本発明は以下の種々の態様を採る。
【０００８】
第１の態様は、記憶装置を備える液体収容体を提供する。第１の態様に係る液体収容体は、データを記憶する記憶素子と、前記記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える。
【０００９】
第１の態様に係る液体収容体によれば、受信した書き込みデータの誤りが検出された場合には、記憶素子に対する受信した書き込みデータの書き込みを実行しないので、記憶装置に格納されているデータの信頼性を向上させることができる。
【００１０】
第１の態様に係る液体収容体はさらに、前記誤り検出の結果を記憶するための誤り検出結果記憶部を備えても良い。この場合には、記憶装置に書き込まれているデータに対する確認処理を行うことなく、誤り検出結果記憶部に基づいて書き込みデータの誤りの発生を検出することができる。
【００１１】
第１の態様に係る液体収容体において、前記記憶素子はシーケンシャルアクセス型の記憶素子であり、前記読み書き制御部は、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、以降受信する書き込みデータを前記記憶素子に対して書き込まなくても良い。この場合には、誤った書き込みデータの書き込みを防止、抑制することができる。
【００１２】
第１の態様に係る液体収容体において、前記記憶素子はシーケンシャルアクセス型の記憶素子であり、前記読み書き制御部は、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、以降受信する書き込みデータであって前記誤り検出回路によって誤りが検出されない書き込みデータについては前記記憶素子に対する書き込みを実行しても良い。この場合には、誤った書き込みデータの書き込みを防止、抑制しつつ、書き込み処理を実行することができる。
【００１３】
第１の態様に係る液体収容体において、前記書き込みデータには書き込みコマンドおよび誤り検出符号が付されており、前記誤り検出回路は前記書き込みコマンドに基づいてデータが前記記憶素子に書き込まれるべき前記書き込みデータであると判断し、前記誤り検出符号を用いて前記受信した書き込みデータの誤りを検出しても良い。この場合には、書き込みコマンドが付されているデータについて誤りを検出することができる。
【００１４】
第２の態様は、記憶装置を備える液体収容体と、記憶装置に対するデータの書き込みおよび読み出しを行う計算機とを備えるシステムを提供する。第２の態様に係るシステムにおいて、
前記計算機は、前記記憶装置に対して書き込まれるべきデータに対して誤り符号を付して書き込みデータを生成する誤り符号付与回路と、前記書き込みデータを前記記憶装置に対して送信する送信部とを備え、
前記液体収容体は、データを記憶する記憶素子と、前記書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える。
【００１５】
第１の態様に係るシステムによれば、計算機によって書き込まれるべきデータに対して誤り符号が付され、液体収容体による、受信した書き込みデータの誤りが検出された場合には、記憶素子に対する書き込みデータの書き込みが実行されないので、記憶装置に格納されているデータの信頼性を向上させることができる。
【００１６】
第２の態様に係るシステムにおいて、前記液体収容体はさらに、前記誤り検出の結果を記憶するための誤り検出結果記憶部を備え、前記計算機は前記記憶装置における前記誤り検出結果記憶部に記憶されている結果が誤り検出を示している場合には、前記記憶装置に対して書き込み可能な全ての書き込みデータを前記記憶装置に対して送信しても良い。この場合には、記憶装置に書き込まれているデータの確認処理を行うことなく、記憶装置に格納されているデータを正しいデータに書き換えることができる。
【００１７】
第２の態様に係るシステムにおいて、前記記憶装置の記憶素子はシーケンシャルアクセス型の記憶素子であり、前記計算機の前記符号付与回路はさらに、誤った符号を有する送り用符号化データを生成可能であり、前記計算機は、前記記憶装置における所望のアドレスに至るまでは前記送り用符号化データを前記記憶装置に対して送信し、前記記憶装置における所望のアドレスに至ると前記書き込みデータを前記記憶装置に対して送信する送信しても良いするシステム。この場合には、シーケンシャルアクセ型の記憶素子を備える記憶装置における、所望のアドレスに対する書き込み処理を迅速化できる。
【００１８】
第３の態様は、液体収容体に備えられている記憶装置に対するアクセス制御方法を提供する。第３の態様に係るアクセス制御方法は、前記記憶装置が有する記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出し、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しないことを備える。
【００１９】
第３の態様に係るアクセス制御方法によれば、受信した書き込みデータの誤りが検出された場合には、記憶素子に対する受信した書き込みデータの書き込みを実行しないので、記憶装置に格納されているデータの信頼性を向上させることができる。また、第３の態様は、第１の態様と同様にして種々の態様にて実現され得る。さらに、第３の態様は、コンピュータプログラム、ＣＤ、ＤＶＤ、ＨＤＤといったコンピュータ読み取り可能媒体に記録されたコンピュータプログラムとしても実現され得る。
【００２０】
第４の態様は、記憶装置を提供する。第４の態様に係る記憶装置は、データを記憶する記憶素子と、前記記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える。
【００２１】
第４の態様に係る記憶装置によれば、受信した書き込みデータの誤りが検出された場合には、記憶素子に対する受信した書き込みデータの書き込みを実行しないので、記憶装置に格納されているデータの信頼性を向上させることができる。
【００２２】
第５の態様は、回路基板を提供する。第５の態様に係る回路基板は、データを記憶する記憶素子と、前記記憶素子に対して書き込まれるべき書き込みデータを受信した場合に、前記受信した書き込みデータの誤りを検出する誤り検出回路と、前記記憶素子に対するデータの読み書きを制御する読み書き制御部であって、前記誤り検出回路によって前記受信した書き込みデータの誤りが検出された場合には、前記記憶素子に対する前記受信した書き込みデータの書き込みを実行しない読み書き制御部とを備える半導体装置と、
前記半導体装置と電気的に接続されている１または複数の外部端子とを備える。
【００２３】
第５の態様に係る回路基板によれば、受信した書き込みデータの誤りが検出された場合には、記憶素子に対する受信した書き込みデータの書き込みを実行しないので、記憶装置に格納されているデータの信頼性を向上させることができる。
【図面の簡単な説明】
【００２４】
【図１】本実施例に係る半導体記憶装置の機能的な内部構成を示すブロック図である。
【図２】本実施例に係る半導体記憶装置に対して入力される書き込みデータ列の一例を模式的に示す説明図である。
【図３】本実施例に係る計算機としてのホストコンピュータと半導体記憶装置を含むシステムを模式的に示す説明図である。
【図４】本実施例に係る半導体記憶装置に対するアクセス制御時に半導体記憶装置において実行される処理ルーチンを示すフローチャートである。
【図５】本実施例に係る半導体記憶装置に対するアクセス制御時にホストコンピュータにおいて実行される処理ルーチンを示すフローチャートである。
【図６】本実施例に係る半導体記憶装置に対するアクセス制御時にホストコンピュータにおいて誤り検出結果を利用して実行される処理ルーチンを示すフローチャートである。
【図７】本実施例に係る半導体記憶装置に対するアクセス制御時にホストコンピュータにおいて所望のアドレスに対する迅速な書き込みを実現するために実行される処理ルーチンを示すフローチャートである。
【図８】液体収容体の一例を示す説明図である。
【図９】第２の実施例に係る半導体装置の機能的な内部構成を示すブロック図である。
【図１０】液体収容体としてのインクカートリッジの概略構成を示す説明図である。
【図１１】本実施例に係る印刷装置の構成および印刷装置とインクカートリッジとの接続態様を示す説明図である。
【図１２】本実施例に係る半導体記憶装置に対するアクセス制御時に半導体装置において実行される処理ルーチンを示すフローチャートである。
【図１３】本実施例に係る半導体装置に対する書き込みアクセス時にホストコンピュータとしての印刷装置において実行される処理ルーチンを示すフローチャートである。
【図１４】本実施例に係る半導体装置に対する書き込み時にデータの誤りがあって書き込みがされていないという誤り検出のためにアクセス時に印刷装置において誤り検出結果を利用して実行される処理ルーチンを示すフローチャートである。
【発明を実施するための形態】
【００２５】
・第１の実施例：
以下、第１の実施例に係る半導体記憶装置および半導体記憶装置におけるアクセス制御方法について図面を参照しつつ、実施例に基づいて説明する。
【００２６】
・半導体記憶装置の構成
図１および図２を参照して本実施例に係る半導体記憶装置の構成について説明する。図１は本実施例に係る半導体記憶装置の機能的な内部構成を示すブロック図である。図２は本実施例に係る半導体記憶装置に対して入力される書き込みデータ列の一例を模式的に示す説明図である。
【００２７】
本実施例に係る半導体記憶装置１０は、外部からアクセス先のアドレスを指定するアドレスデータを入力する必要のないシーケンシャルアクセス方式の記憶装置である。半導体記憶装置１０は、メモリアレイ１００、アドレスカウンタ１１０、ＩＤコンパレータ１３０、ライト／リードコントローラ１４０、誤り検出オペレーションデコーダ１５０を備えている。これら各回路は、双方向バス式の信号線によって接続されている。なお、少なくともＩＤコンパレータ１３０、ライト／リードコントローラ１４０、誤り検出オペレーションデコーダ１５０をメモリ制御部と総称することがある。
【００２８】
メモリアレイ１００は、データの電気的な消去、書き込みが可能なＥＥＰＲＯＭの特性を有する記憶領域である。メモリアレイ１００には、１ビットの情報を格納するデータセル（メモリセル）が複数備えられている。メモリアレイ１００は、例えば、１行に８アドレス（データ８ビット分のアドレス）を所定のアドレス単位として備えており、１列に１６個のデータセル（１６ワード）が配置されてる場合には、１６ワード×８ビット（１２８ビット）のデータを格納することができる。メモリアレイ１００の一部には、誤り検出処理の結果、誤りが検出されたか否かを示す誤り検出結果記憶領域ＥＢが備えられている。誤り検出結果記憶領域ＥＢは、例えば、１bitの領域であり、ライト／リードコントローラ１４０を介して、誤り検出オペレーションデコーダ１５０によって、書き込みデータに誤りが検出された場合には「１」、書き込みデータに誤りが検出されなかった場合には「０」が記録される。なお、誤り検出結果記憶領域ＥＢは、メモリアレイ１００とは別の記憶装置、例えば、レジスタとして備えられていても良い。誤り検出結果記憶領域ＥＢは、誤りが検出された書き込みデータの書き込み手順が完了すると「０」にリセットされる。
【００２９】
本実施例におけるメモリアレイ１００は、上述のように８ビットを単位とする複数の行を備えているが、各行は独立したデータセル列ではなく、いわば、１本のデータセル列を８ビット単位で折り曲げることによって実現されている。すなわち、便宜的に９ビット目を含む行を２バイト目、１７ビット目を含む行を３バイト目と呼んでいるに過ぎない。この結果、メモリアレイ１００における所望のアドレスにアクセスするためには、先頭から順次アクセスする、いわゆる、シーケンシャルアクセス方式によるアクセスが必要となり、ランダムアクセス方式の場合に可能な所望のアドレスに対する直接的なアクセスは不可能となる。
【００３０】
メモリアレイ１００における各データセルには、ワード線とビット（データ）線が接続されており、対応するワード線（行）を選択（選択電圧を印加）して、対応するビット線に書き込み電圧を印加することによってデータセルにデータが書き込まれる。また、対応するワード線（行）を選択し、対応するビット線をライト／リードコントローラ１４０と接続し、電流の検出の有無によってデータセルのデータ（１または０）が読み出される。なお、本実施例における所定アドレス単位とは、１本のワード線に書き込み電圧を加えることにより書き込みが可能なアドレス数（データセル数）であるということができる。
【００３１】
メモリアレイ１００は、アドレスカウンタ１１０によりカウントされた外部クロックパルス数に応じて順次、列（ビット線）をライト／リードコントローラ１４０と接続する図示しないカラム選択回路を備えている。メモリアレイ１００はまた、アドレスカウンタ１１０によりカウントされた外部クロックパルス数に応じて順次、行（ワード線）に選択電圧を印加する図示しないロー選択回路を備えている。以上のように、本実施例に係る半導体記憶装置１０では、アドレスデータを用いたメモリアレイ１００に対するアクセスは実行されず、専らアドレスカウンタ１１０によってカウントされたクロックパルス数にしたがって、所望のアドレスに対するアクセスが実行される。
【００３２】
アドレスカウンタ１１０は、リセット信号端子ＲＳＴＴ、クロック信号端子ＳＣＫＴ、ライト／リードコントローラ１４０、メモリアレイ１００と接続されている。アドレスカウンタ１１０は、リセット信号端子ＲＳＴＴを介して入力されるリセット信号を０（またはロー）にすることにより初期値にリセットされ、リセット信号が１とされた後にクロック信号端子ＳＣＫＴを介して入力されるクロックパルスの立ち下がりに同期してクロックパルス数をカウント（カウント値をインクリメント）する。
【００３３】
本実施例に用いられるアドレスカウンタ１１０は、メモリアレイ１００の１行のデータセル数（ビット数）に対応する８個のクロックパルス数を格納する８ビットのアドレスカウンタである。なお、初期値はメモリアレイ１００の先頭位置と関連付けられていればどのような値でも良く、一般的には０が初期値として用いられる。
【００３４】
ＩＤコンパレータ１３０は、クロック信号端子ＳＣＫＴ、データ信号端子ＳＤＡＴ、リセット信号端子ＲＳＴＴと接続され、データ信号端子ＳＤＡＴを介して入力された入力データ列に含まれる識別データとメモリアレイ１００に格納されている識別データとが一致するか否かを判定する。詳述すると、ＩＤコンパレータ１３０は、リセット信号ＲＳＴが入力された後に入力されるオペレーションコードの先頭３ビットのデータ、すなわち識別データを、ライト／リードコントローラ１４０から取得する。ＩＤコンパレータ１３０は、図２に示す入力データ列に含まれる先頭３ビットの識別データを格納する３ビットレジスタ（図示しない）、ライト／リードコントローラ１４０を介してメモリアレイ１００の指定のアドレスから取得した最上位３ビットの識別データを格納する３ビットレジスタ（図示しない）を有しており、両レジスタの値が一致するか否かによって識別データが一致するか否かを判定する。ＩＤコンパレータ１３０は、両識別データが一致する場合には、アクセス許可信号ＡＥＮをライト／リードコントローラ１４０に送出する。ＩＤコンパレータ１３０は、リセット信号ＲＳＴが入力（ＲＳＴ＝０またはＬｏｗ）されるとレジスタの値をクリアする。
【００３５】
ライト／リードコントローラ１４０は、ＩＤコンパレータ１３０、誤り検出オペレーションデコーダ１５０、クロック信号端子ＳＣＫＴ、データ信号端子ＳＤＡＴ、リセット信号端子ＲＳＴＴと接続されている。ライト／リードコントローラ１４０は、誤り検出オペレーションデコーダ１５０からの書き込み許可信号ＷＥＮの入力を待って、半導体記憶装置１０の内部動作を書き込み動作に切り換え、書き込み許可信号ＷＥＮの入力がない場合には読み出し動作に切り換える回路である。
【００３６】
具体的には、ライト／リードコントローラ１４０は、書き込み許可信号ＷＥＮの入力の有無によってメモリアレイ１００に対するデータ転送方向ならびにデータ信号端子ＳＤＡＴに対する（データ信号端子ＳＤＡＴと接続されている信号線の）データ転送方向を切り換え制御する。ライト／リードコントローラ１４０は、データ信号端子ＳＤＡＴからの入力信号線に対して、データ信号端子ＳＤＡＴから入力された書き込みデータのうち、オペレーションコード以降の８ビットの書き込みデータを一時的に格納する８ビットレジスタ（図示しない）およびメモリアレイ１００から読み出したデータを格納するレジスタ（図示しない）を備えている。
【００３７】
８ビットレジスタには、データ信号端子ＳＤＡＴから入力信号線を介して入力されるデータ列（ＭＳＢ）が８ビットとなるまで保持され、８ビット分揃ったところで、保持されている８ビットのデータがメモリアレイ１００に対して書き込まれる。
【００３８】
ライト／リードコントローラ１４０は、電源ＯＮ時、リセット信号（０）が入力されることにより半導体記憶装置１０がリセット状態とされるリセット時には、メモリアレイ１００に対するデータ転送方向を読み出し方向に設定し、データ信号端子ＳＤＡＴに接続されている信号線をハイインピーダンスとすることでデータ信号端子ＳＤＡＴに対するデータ転送を禁止する。この状態は、誤り検出オペレーションデコーダ１５０から書き込み許可信号ＷＥＮが入力されるまで維持される。したがって、リセット状態を解除出リセット信号（リセット信号（１））入力後にデータ信号端子ＳＤＡＴを介して入力されるデータ列の先頭４ビットのデータはメモリアレイ１００に書き込まれることはなく、一方で、メモリアレイ１００の先頭４ビットに格納されているデータは、ＩＤコンパレータ１３０に送出される。この結果、メモリアレイ１００の先頭４ビットは読み出し専用状態となる。
【００３９】
ライト／リードコントローラ１４０は、誤り検出オペレーションデコーダ１５０から書き込み許可信号ＷＥＮ、およびＩＤコンパレータ１３０からのアクセス許可信号ＡＥＮの入力を待って、書き込み処理を開始する。一方、誤り検出オペレーションデコーダ１５０から書き込み許可信号ＷＥＮが入力されない場合には、ＩＤコンパレータ１３０からのアクセス許可信号ＡＥＮの入力を待って、読み出し処理を開始する。
【００４０】
ライト／リードコントローラ１４０は、書き込み処理時には、書き込み可能領域の先頭アドレスに相当する数のクロックパルス入力を受けると、バス信号線のデータ転送方向を書き込み方向に切り換える。書き込み可能領域の終端アドレスに相当する数のクロックパルス入力を受けると、ライト／リードコントローラ１４０は、バス信号線のデータ転送方向を読み出し方向に切り換える。書き込みに必要な書き込み電圧は、例えば、図示しないチャージポンプ回路によって生成される。
【００４１】
ライト／リードコントローラ１４０は、読み出し処理時には、書き込み可能領域の先頭アドレスに相当する数のクロックパルス入力を受けると、バス信号線のデータ転送方向を読み出し方向に切り換える。
【００４２】
本実施例では、書き込みデータにエラーがある場合には、メモリアレイ１００に対する当該書き込みデータの書き込みが実行されない。すなわち、誤り訂正符号の技術を用いて、外部ノイズ等によってホストから入力された書き込みデータ列に誤りが発生している場合には、メモリアレイ１００に対して、少なくとも当該書き込みデータ列の書き込みを実行しないことによってメモリアレイ１００に格納されているデータの信頼性を向上させている。この機能は、以下に説明する誤り検出オペレーションデコーダ１５０によって提供される。  
【００４３】
誤り検出オペレーションデコーダ１５０は、リセット信号端子ＲＳＴＴ、ライト／リードコントローラ１４０、と信号線を介して接続されている。誤り検出オペレーションデコーダ１５０は、例えば、リセット信号ＲＳＴが入力された後の４つ目〜８つ目のクロック信号に同期してデータ信号端子ＳＤＡＴを介して入力されるデータ列に含まれる書き込み／読み出し制御情報（３ビットのＩＤ情報に続く５ビット情報）を取り込む。ここで、誤り検出オペレーションデコーダ１５０は、入力されたＩＤ情報と、書き込み／読み出し制御情報（Ｒ／Ｗコマンド）と、５ビットの書込み／読み出し制御情報に続く９ビット目のコマンドパリティビット（ＣＰbit）と、を用いて誤り検出処理を実行する。誤り検出オペレーションデコーダ１５０は、コマンドパリティビット（ＣＰbit）が示すパリティ値とＩＤ情報および書込み／読み出し制御情報を用いて算出したパリティ値とが一致する場合には、有効なコマンドであると判断し、両者が一致しない場合には無効なコマンドであると判断する。書き込み／読み出し制御情報が有効なコマンドであり、かつ書き込みコマンドを示していると判断した場合には、引き続いて入力された書き込みデータ列に対して誤り検出処理を実行する。一方、書き込み／読み出し制御情報が読み出しコマンドを示していると判断した場合、または無効なコマンドであると判断した場合には誤り検出オペレーションデコーダ１５０は、入力されたデータ列に対して誤り検出処理を実行しない。
【００４４】
誤り検出オペレーションデコーダ１５０は、入力されたデータ列が書き込みデータである場合には、図２に示すように８ビットの書き込みデータパケットと、それに続く１ビットのデータパリティビット（ＤＰbit）とを用いて誤り検出処理を実行する。誤り検出オペレーションデコーダ１５０は、データパリティビット（ＤＰbit）が示すパリティ値と書き込みデータパケットを用いて算出したパリティ値とが一致する場合には、書き込みデータパケットに誤りは発生していないと判断し、両者が一致しない場合には書き込みデータパケットに誤りが発生していると判断する。パリティビットを用いたデータの誤り検出処理は当業者にとって周知の技術であるから詳細な説明は省略する。誤り検出オペレーションデコーダ１５０は、書き込みデータパケットに誤りが発生していないと判断した場合には、ライト／リードコントローラ１４０に対して書き込み許可信号ＷＥＮを出力すると共に、誤り検出結果記憶領域ＥＢの値を「０」とする。一方、誤り検出オペレーションデコーダ１５０は、書き込みデータパケットに誤りが発生していると判断した場合には、書き込み許可信号ＷＥＮを出力しないと共に、誤り検出結果記憶領域ＥＢに対して「１」を書き込む。
【００４５】
・半導体記憶装置を含むシステムの構成：
図３は本実施例に係る計算機としてのホストコンピュータと半導体記憶装置を含むシステムを模式的に示す説明図である。
【００４６】
ホストコンピュータ３０と各半導体記憶装置１０はクロック信号線ＣＬ、データ信号線ＤＬ、リセット信号線ＲＬを介してバス方式にて接続されている。すなわち、各半導体記憶装置１０は、共通の各信号線を介してホストコンピュータ３０に接続されている。ホストコンピュータ３０は、内部配線によって相互に接続されているデータ生成部３１、符号化回路３２、および入出力部３３を備えている。データ生成部３１は、書き込み対象となる半導体記憶装置１０を識別するための識別情報（ＩＤ）、書き込みコマンド、書き込み対象となるデータパケットを含むデータ列を生成する。本実施例においては、半導体記憶装置１０はシーケンシャルアクセス型の記憶装置であると共に、半導体記憶装置１０に対するデータの書き込みは１バイト（８ビット）単位で実行されるため、メモリアレイ１００の各ロー（行）に対応する１または複数の８ビットの書き込みデータパケットを含むデータ列が生成される。より具体的には、書き込むべきデータに基づいて、書き込み開始ローから書き込み対象となるデータの格納位置（アドレス）を含むロー（行）に至るまでの複数の書き込みデータパケットを含むデータ列が生成される。なお、所望のデータの書き込みを１回の書き込みにて完了させるために、メモリアレイ１００における各書き換え可能データ（更新データとも呼ぶ）の格納領域を予め同一のローに割り当てても良い。
【００４７】
符号化回路３２は、まず識別情報およびリード／ライトコマンド（Ｒ／Ｗ）を利用してコマンドパリティビット（ＣＰbit）を生成し、リード／ライトコマンドの直後に挿入することで、データ列を符号化したデータを生成する。次に符号化回路３２は、書き込みデータを利用して１または複数の８ビットの書き込みデータパケットを生成し、生成した各書き込みデータパケットを用いて対応する１または複数のデータパリティービット（ＤＰbit）を生成する。符号化回路３２は、生成した各データパリティビット（ＤＰbit）を、生成した各８ビットの書き込みデータパケットの直後の１ビットに書き込むことで、データ列に対する符号化処理を実行する。具体的には、図２に例示するように先頭３ビットに識別情報、４〜８ビット目にリード／ライトコマンド（Ｒ／Ｗ）、９ビット目にコマンドパリティビット（ＣＰbit）、１０〜１７ビット目に第１の書き込みデータパケット、１８ビット目にデータパリティビット（ＤＰbit）、１９〜２６ビット目に第２の書き込みデータパケット、２７ビット目にデータパリティビット（ＤＰbit）を備えるデータ列が生成される。入出力部３３は、クロック信号線ＣＬ、データ信号線ＤＬ、リセット信号線ＲＬと接続されており、半導体記憶装置１０に対して、クロック信号ＳＣＫ、リセット信号ＲＳＴを送信し、半導体記憶装置１０との間でデータ信号ＳＤＡをやりとりする。本実施例では、ホストコンピュータ３０は、クロック信号線ＣＬを介して半導体記憶装置１０に供給されるクロック信号に同期して、生成したデータ列をデータ信号線ＤＬを介して１ビットずつ半導体記憶装置１０に送信する。ホストコンピュータ３０は、半導体記憶装置１０に対する書き込みまたは読み出しのアクセスを開始する際には、先ず、半導体記憶装置１０に対して半導体記憶装置１０のリセット状態を解除するリセット信号１を送信し、その後、上述のようにクロック信号に同期してデータ転送を実行する。半導体記憶装置１０に対する書き込みまたは読み出しのアクセスを終了する際には、ホストコンピュータ３０は、半導体記憶装置１０に対して、半導体記憶装置１０をリセット状態とするためのリセット信号０を送信する。
【００４８】
半導体記憶装置の動作：
図４を参照して本実施例に係る半導体記憶装置１０の動作について説明する。図４は本実施例に係る半導体記憶装置に対するアクセス制御時に半導体記憶装置において実行される処理ルーチンを示すフローチャートである。なお、以下の例では、ホストコンピュータ３０に対して複数の半導体記憶装置１０がバス接続されている場合について説明する。
【００４９】
半導体記憶装置１０はホストコンピュータ３０からデータを受信すると（ステップＳ１００）、データ（データ列）に含まれるＩＤおよびリード／ライトコマンドビットの有効性を判定する。具体的には、誤り検出オペレーションデコーダ１５０によって、受信したデータ（データ列）に含まれるコマンドパリティビット（ＣＰbit）と、ＩＤおよびリード／ライトコマンドビットを用いたパリティ演算の結果とが比較され、両者が一致する場合には受信したＩＤおよびリード／ライトコマンドに誤りはなく、両者が一致しない場合には受信したデータに誤りがあることを検出する（ステップＳ１０１）。半導体記憶装置１０は、誤りが検出された場合には（ステップＳ１０１：Ｙｅｓ）、メモリアレイ１００における誤り検出結果記憶領域ＥＢに「１」を書き込み、本処理ルーチンを終了する。具体的には、誤り検出オペレーションデコーダ１５０によって、ライト／リードコントローラ１４０を介してメモリアレイ１００に対する書き込みが実行される。
【００５０】
半導体記憶装置１０は、ＩＤおよびリードライトコマンドが有効であると判定すると（ステップＳ１０１：Ｎｏ）、データ（データ列）に含まれるＩＤが自身のＩＤと一致するか否かを判定する（ステップＳ１０２）。本実施例では、各半導体記憶装置１０はホストコンピュータ３０に対して共通のクロック信号線ＣＬ、データ信号線ＤＬ、リセット信号線ＲＬを介してバス接続されているので、ホストコンピュータ３０から送信されるデータは各半導体記憶装置１０に対して送信される。ＩＤの判定は、具体的には、既述の通り、ＩＤコンパレータ１３０によって受信したデータ列に含まれる識別情報とメモリアレイ１００に格納されている識別情報とが一致するか否かが判定される。
【００５１】
半導体記憶装置１０は、両ＩＤが一致しないと判定すると（ステップＳ１０２：Ｎｏ）、受信したデータ列は自身に対するデータ列ではないと判断し、今回のアクセスに対する処理ルーチンを終了する。
【００５２】
半導体記憶装置１０は、両ＩＤが一致すると判定すると（ステップＳ１０２：Ｙｅｓ）、受信したデータの書き込みが要求されているか否かを判定する（ステップＳ１０４）。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０によって、受信したデータ列に含まれるリード／ライトコマンドビットが解析され、書き込み要求または読み出し要求のいずれであるかが判定される。また、ＩＤコンパレータ１３０は両ＩＤが一致する場合には、ライト／リードコントローラ１４０に対してアクセス許可信号ＡＥＮを送信する。なお、本実施例では、ＩＤコンパレータ１３０は、ライト／リードコントローラ１４０に対してアクセス許可信号ＡＥＮを送信しているが、誤り検出オペレーションデコーダ１５０に対して送信するようにしても良い。この場合には、誤り検出オペレーションデコーダ１５０は、アクセス許可信号ＡＥＮを受信した場合に、リード／ライトコマンドビットの解釈を実行する。
【００５３】
半導体記憶装置１０は、受信したデータの書き込みが要求されていない、すなわち、読み出しが要求されていると判定した場合には（ステップＳ１０４：Ｎｏ）、メモリアレイ１００から所望のデータの読み出し処理を実行し（ステップＳ１０６）、本処理ルーチン（今回のアクセスに対する処理）を終了する。メモリアレイ１００からの所望のデータの読み出しは、ライト／リードコントローラ１４０によって既述の通り実行される。
【００５４】
半導体記憶装置１０は受信したデータの書き込みが要求されていると判定すると（ステップＳ１０４：Ｙｅｓ）、データ列の誤りを検出する（ステップＳ１０８）。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０によって、データ列に含まれるデータパリティビットと書き込みデータを用いたパリティ演算の結果とが比較され、両者が一致する場合には受信したデータに誤りはなく、両者が一致しない場合には受信したデータに誤りがあることを検出する。
【００５５】
半導体記憶装置１０は、誤りが検出されなかった場合には（ステップＳ１０８：Ｎｏ）、受信したデータをメモリアレイ１００に対して書き込み（ステップＳ１１０）、本処理ルーチンを終了する。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０からライト／リードコントローラ１４０に対して書き込み許可信号ＷＥＮが送信され、ライト／リードコントローラ１４０は受信した８ビットのデータをメモリアレイ１００の所定のアドレス（ロー）に書き込む。
【００５６】
半導体記憶装置１０は、誤りが検出された場合には（ステップＳ１０８：Ｙｅｓ）、メモリアレイ１００における誤り検出結果記憶領域ＥＢに「１」を書き込み、本処理ルーチンを終了する。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０によって、ライト／リードコントローラ１４０を介してメモリアレイ１００に対する書き込みが実行される。
【００５７】
なお、メモリアレイ１００における書き込みデータの格納アドレスが上位アドレスである場合には、当該アドレスを含むローに至るまで上記の処理ルーチンが繰り返される。なお、ステップＳ１０８において誤りが検出された場合には、続くデータの書き込みについて以下の態様を取り得る。
【００５８】
（１）誤りを検出した後は、以降の書き込み要求は受け付けない。
本実施例によれば、処理中の書き込みデータに誤りが検出された場合には、当該書き込みデータはメモリアレイ１００に書き込まれない。この態様を採る場合には、当該書き込みデータのみならず、続いて送られてくる書き込みデータパケットについても書き込みが実行されない。例えば、ホストコンピュータ３０と半導体記憶装置１０の接点端子における接触不良によってデータの誤りが発生している場合には、以降の書き込みデータにおいても誤りが発生している可能性があり、この態様を採ることによって、メモリアレイ１００に対する誤った書き込みデータの書き込みを未然に防止することができる。なお、メモリアレイ１００に対する書き込みデータの書き込み禁止は、例えば、特定のコマンド、所定回数のリセット信号の入力、電源オフ、接点の解消および再構築（半導体記憶装置１０の脱着）によって解消されても良い。具体的には、例えば、誤り検出結果を取得するための、誤り検出結果確認コマンドを受信することによって、誤り検出オペレーションデコーダ１５０がライト／リードコントローラ１４０を介してメモリアレイ１００における誤り検出結果記憶領域ＥＢの値を読み出すと共に、「０」が書き込まれる。あるいは、半導体記憶装置１０の脱着指示並びに脱着の検出後に誤り検出結果記憶領域ＥＢに「０」が書き込まれても良い。
【００５９】
（２）誤りを検出した後も、当該書き込みデータパケットの書き込みは実行しないが、以降の書き込み要求は受け付ける。
この態様を採る場合には、当該書き込みデータパケットの書き込みは実行されないが、続いて送られてくる書き込みデータパケットについては、書き込みデータパケットと書き込みデータパケットの直後の１ビットのデータパリティビットとを用いて誤り検出処理が実行され、誤りが検出されなければ書き込みが実行される。この対応を採ることによって、後述する、意図的に誤りを含む書き込みデータパケットを送信し、所望のアドレスに対する書き込みを迅速に実行するための処理が可能となる。
【００６０】
この態様を採る場合には、例えば、残りのデータに対する書き込みが終了した時点で、書き込みが実行されなかったアドレスに対する（書き込みが実行されなかった書き込みデータパケットの）再度の書き込みが実行されても良い。すなわち、ホストコンピュータ３０側に記録されている、いずれのアドレスに対するデータの書き込みが未了であるかの情報に基づいて再書き込みが実行され得る。
【００６１】
（３）誤りを検出した後に、当該書き込みデータパケットの再書き込みを実行する。
ホストコンピュータ３０は、半導体記憶装置１０において誤りが検出されたデータがメモリアレイ１００におけるどのアドレスに対応するデータであるかを管理しており、書き込みが未了である書き込みデータパケットについて再度、符号化処理を行って半導体記憶装置１０に送信しても良い。この態様によれば、発生した書き込みエラーを直ちに解消するための動作を実行することができる。
【００６２】
以上説明した本実施例に係る半導体記憶装置１０によれば、受信した書き込みデータに誤りが検出された場合にはメモリアレイ１００に対する書き込みが実行されないので、半導体記憶装置１０に格納されているデータの信頼性を向上させることができる。
【００６３】
半導体記憶装置１０は、誤り検出結果記憶領域ＥＢを備えるので、全ての書き込み可能領域に対して、書き込みデータとメモリアレイ１００に書き込まれている既存データとを比較するベリファイ処理を実行することなく、メモリアレイ１００のデータが正しいデータであるか否か、すなわち、書き込まれるべきデータに一致するデータであるか否かを判定することができる。例えば、電源が不意に遮断された場合であっても、遮断前に誤りのある書き込みデータの書き込み要求があったか否かを容易に判定することができる。したがって、例えば、誤り検出結果記憶領域ＥＢが書き込みデータの誤りの検出を示す場合には、時間を要するベリファイ処理を実行することなく、直ちに再度、全ての書き込みデータの書き込みを実行することが可能となり、誤り検出結果記憶領域ＥＢが書き込みデータの誤りの検出を示さない場合には、書き込みが完了していないデータについて書き込みを再開すれば良い。
【００６４】
ホストコンピュータの動作：
図５は本実施例に係る半導体記憶装置に対するアクセス制御時にホストコンピュータにおいて実行される処理ルーチンを示すフローチャートである。ホストコンピュータ３０は、図示しない記憶装置に格納されている書き込まれるべきデータを用いて今回の書き込みサイクルにおいて半導体記憶装置１０に送信すべき書き込みデータを生成する（ステップＳ２００）。なお、本実施例では、メモリアレイ１００のローに対応する１バイトの書き込みデータ列の送信を１回の書き込みサイクルとして説明する。具体的には、既述の通り、データ生成部３１によって、書き込まれるべきデータと、書き込み対象となる半導体記憶装置１０を識別するためのＩＤ、書き込みコマンド、書き込み対象となるデータを含むデータ列が生成される。
【００６５】
ホストコンピュータ３０は、生成した書き込みデータを符号化する（ステップＳ２０２）。具体的には、既述の通り、符号化回路３２によって、リード／ライトコマンドを利用してコマンドパリティビットが生成され、書き込みデータパケットを利用してデータパリティービットが生成され、生成されたデータ列の先頭から９ビット目にコマンドパリティビット、１８ビット目にデータパリティビットが書き込まれることで、データ列が符号化される。
【００６６】
ホストコンピュータ３０は、符号化された書き込みデータ列をデータ信号線ＤＬに出力し、所望の半導体記憶装置を含む各半導体記憶装置１０に対して送信する（ステップＳ２０３）。ホストコンピュータ３０は、半導体記憶装置１０から書き込みエラーの信号を受けた場合には（ステップＳ２０４：Ｙｅｓ）、本処理ルーチンを終了する。すなわち、続く書き込みサイクルにおいて書き込むべきデータが存在している場合であっても書き込みは実行されない。なお、半導体記憶装置１０からホストコンピュータ３０に対する書き込みエラー信号の送信は、誤り符号オペレーションデコーダ１５０によって生成され、ホストコンピュータ３０に対して送信される。
【００６７】
ホストコンピュータ３０は、半導体記憶装置１０から書き込みエラーの信号を受けない場合には（ステップＳ２０４：Ｎｏ）、続く書き込みサイクルにおいて書き込むべきデータが存在するか否かを判定し（ステップＳ２０５）、存在しない場合には（ステップＳ２０５：Ｎｏ）、本処理ルーチンを終了する。
【００６８】
一方、続く書き込みサイクルにおいて書き込むべきデータが存在する場合には（ステップＳ２０５：Ｙｅｓ）、ステップＳ２００に移行し、書き込みデータを生成し、ステップＳ２０４に至る各ステップが繰り返し実行される。
【００６９】
以上説明したホストコンピュータ３０によれば、半導体記憶装置１０に対して符号化された書き込みデータを送信することができるので、半導体記憶装置１０と共に用いられることによって誤りのある書き込みデータの書き込みを防止することができる。
【００７０】
図６は本実施例に係る半導体記憶装置に対するアクセス制御時にホストコンピュータにおいて誤り検出結果を利用して実行される処理ルーチンを示すフローチャートである。
【００７１】
以下、ホストコンピュータ３０が誤り検出結果を利用する場合に実行するアクセス制御について説明する。ホストコンピュータ３０と半導体記憶装置１０とは、例えば、シリアル通信方式によって通信する。ホストコンピュータ３０は、書き込みを所望する半導体記憶装置のＩＤ、読み出しコマンドを含むデータ列をデータ信号線ＤＬに出力すると共に、誤り検出結果記憶領域ＥＢのアドレスに対応するクロックパルスをクロック信号線ＣＬに出力し、誤り検出結果記憶領域ＥＢの値を読み出す（ステップＳ２１０）。すなわち、所望の半導体記憶装置に対する書き込み処理において、書き込みデータに誤りが検出されているか否かを判定する。なお、誤り検出結果記憶領域ＥＢがメモリアレイ１００外のレジスタに備えられている場合には、ホストコンピュータ３０は、当該レジスタにアクセスし、誤り検出結果を取得する。
【００７２】
ホストコンピュータ３０は、誤り検出結果記憶領域ＥＢの値が「１」であるか否かを判定し（ステップＳ２１１）、「１」の場合、すなわち、誤りが検出されていた場合には（ステップＳ２１１：Ｙｅｓ）、図示しない記憶装置に格納されている書き込み対象となる全てのデータ、すなわち、メモリアレイ１００の書き換え可能領域に対応するデータを取得する（ステップＳ２１２）。ここで、書き換え可能領域に対応するデータは、書き込み可能なデータとも言うことも可能であり、例えば、液体量（残量または消費量）、ホストコンピュータ３０に対する液体収容体の装着回数（半導体記憶装置１０とホストコンピュータ３０との接触回数）といった情報に関するデータが該当する。
【００７３】
ホストコンピュータ３０は、リード／ライトコマンド（Ｒ／Ｗ）を用いてコマンドパリティビットを生成し、半導体記憶装置１０に送信する。ホストコンピュータ３０は、書き込み単位、すなわち、バイト単位にて書き込みデータ（書き込みデータパケット）を生成する（ステップＳ２１３）。ホストコンピュータ３０は、生成した書き込みデータパケットを用いてデータパリティビットを生成し、既述の位置に配置して書き込みデータパケットを符号化し（ステップＳ２１４）、半導体記憶装置１０に送信する（ステップＳ２１５）。なお、各ステップにおける詳細な処理は図５を参照して説明済みであるから説明を省略する。
【００７４】
ホストコンピュータ３０は、次の書き込みデータパケットが存在する場合には（ステップＳ２１６：Ｙｅｓ）、取得した全てのデータに基づく書き込みデータパケットの書き込みが終了するまでステップＳ２１３〜Ｓ２１５の処理を繰り返し実行する。ホストコンピュータ３０は、次の書き込みデータが存在しなくなると（ステップＳ２１６：Ｎｏ）、本処理ルーチンを終了する。
【００７５】
ホストコンピュータ３０は、誤り検出結果記憶領域ＥＢの値が「０」の場合、すなわち、誤りが検出されていない場合には（ステップＳ２１１：Ｎｏ）、図５を用いて説明した通常の書き込み処理を実行し（ステップＳ２００）、本処理ルーチンを終了する。
【００７６】
以上説明したホストコンピュータ３０によれば、半導体記憶装置１０に対してデータを書き込む際に、誤り検出結果記憶領域ＥＢを読み出すことにより、半導体記憶装置１０に書き込まれているデータが書き込まれるべきデータに対応しているか否か、すなわち、書き込みに際して書き込みエラーが発生したか否かを判定することができる。したがって、例えば、電源が不意に遮断された場合であっても、書き込みデータの書き込みエラー（書き込み未完了）が発生したか否か、すなわち、遮断前に誤りのある書き込みデータの書き込み要求があったか否かを容易に判定することができる。この結果、ホストコンピュータ３０は、時間を要する、既にメモリアレイ１００に書き込まれたデータと、ホストコンピュータ３０が保持する書き込まれるべきデータとを比較するベリファイ処理を実行することなく、書き込みエラーの発生の有無を判定することができる。また、書き込みエラーの発生を検出した場合には、書き込みデータの再書き込みを実行し、書き込みエラーの発生を検出しなかった場合には、書き込みが要求される書き込みデータの書き込みを直ちに実行することができる。
【００７７】
図７は本実施例に係る半導体記憶装置に対するアクセス制御時にホストコンピュータにおいて所望のアドレスに対する迅速な書き込みを実現するために実行される処理ルーチンを示すフローチャートである。
【００７８】
ホストコンピュータ３０は、既述の手順にて、書き込みを所望するデータを用いて書き込みデータを生成し（ステップＳ２２０）、書き込みデータ列を符号化する(ステップＳ２２１)。ホストコンピュータ３０は、送り用符号化データを生成する（ステップＳ２２２）。具体的には、データ生成部３１によって対応する半導体記憶装置１０のＩＤおよび書き込みコマンド、コマンドパリティビットを含むデータ列が生成され、符号化回路３２によって、書き込みデータに基づき算出したパリティ値と逆の値、すなわち、「０」ならば「１」、「１」ならば「０」がデータパリティビットとしてデータ列に格納される。
【００７９】
半導体記憶装置１０が、上述の書き込みサイクル毎に書き込みの可否を判断する態様（２）の場合、この送り用符号化データを送信することによって、該当アドレス（ロー）に対する書き込み処理がスキップされる。本実施例におけるメモリアレイ１００はシーケンシャルアクセス型のメモリであり、上位アドレスに書き込むためには下位アドレスに対しても順次書き込みを実行しなければならない。そこで、意図的に書き込みが実行されない送り用符号化データを所望の書き込みアドレスに至るまで半導体記憶装置１０に対して送信することによって、下位アドレスに対する書き込みを実行させず、所望のアドレスに対する書き込みを迅速に実行することができる。すなわち、送り用符号化データは、アドレスを送るためのデータであるということができる。
【００８０】
ホストコンピュータ３０は、生成した送り用符号化データを半導体記憶装置に送信する（ステップＳ２２３）。具体的には、所望の半導体記憶装置を含む各半導体記憶装置１０に対して、生成した送り用符号化データを、データ信号線ＤＬに出力すると共にクロック信号線ＣＬに書き込み完了アドレスに対応するクロック信号を出力する。ホストコンピュータ３０は、書き込み対象アドレスに到達するまで送り用符号化データを繰り返し出力する（ステップＳ２２４：Ｎｏ）。すなわち、メモリアレイ１００における書き込み対象アドレスを含むローの１つ前のローに対応する送り用符号化データを送信し終わるまで送り用符号化データを送信し続ける。
【００８１】
ホストコンピュータ３０は、書き込み対象アドレスに到達すると（ステップＳ２２４：Ｙｅｓ）、正しく符号化処理された書き込みデータパケットを半導体記憶装置１０に送信して（ステップＳ２２５）、本処理ルーチンを終了する。すなわち、送り用符号化データに代えて、書き込み対象アドレスを含むローに書き込むべき書き込みデータパケットをデータ信号線ＤＬに出力する。
【００８２】
以上説明したホストコンピュータ３０によれば、半導体記憶装置１０に対する書き込みデータの書き込み時間を短縮することができる。すなわち、意図的に誤った書き込みデータである送り用符号化データを送信することによって、所望のアドレス（所望のアドレスを含むロー）に至るまでのアドレスに対する書き込みをスキップすることが可能となり、シーケンシャルアクセス形式のメモリにおいても所望のアドレスに対してアクセスするまでに要する時間を短縮することができる。また、書き込みの対象とならないアドレスに対する書き込みが実行されないので、メモリアレイ１００に格納されている既存データのデータ化け、損傷を回避することが可能となり、データの信頼性を向上させることができる。
【００８３】
・液体収容体の構成：
図８は液体収容体の一例を示す説明図である。液体収容体２０は、上述の半導体記憶装置１０、および図示しない液体収容室を備えている。液体収容体２０は、例えば、インクカートリッジといった印刷記録財収容体であり、半導体記憶装置１０は、端子Ｔを介してホストコンピュータ３０としての印刷装置から制御信号を受信し、印刷装置に対して読み出しデータ、誤り検出信号を送信する。なお、印刷装置に備えられる液体収容体２０は単一であってもよく、複数であっても良い。
【００８４】
液体収容体２０に備えられる半導体記憶装置１０は、例えば、液体量に関するデータを不可逆的に、すなわち、増加データのみ、または、減少データのみ格納する特性を有していても良い。この場合、誤ったデータの書き込みは、後の書き込みによって修正できない、例えば、一旦、増加したデータを減少させる書き込みはできないので、誤ったデータの書き込みを防止することが望まれる。本実施例に係る半導体記憶装置１０および液体収容体２０によれば、この要望に応えることができる。
【００８５】
・第２の実施例：
第２の実施例に係る半導体装置および半導体装置に対するアクセス方法について図９〜１４を参照して説明する。図９は第２の実施例に係る半導体装置の機能的な内部構成を示すブロック図である。
【００８６】
本実施例に係る半導体装置１０ａは、メモリアレイ１００、クロックカウンタ１１１、アドレスセレクタ１１２、ＩＤコンパレータ１３０、ライト／リードコントローラ１４０、誤り検出オペレーションデコーダ１５０を備えている。なお、少なくともＩＤコンパレータ１３０、ライト／リードコントローラ１４０、誤り検出オペレーションデコーダ１５０をメモリ制御部と総称することがある。なお、本実施例では、半導体装置１０ａは回路基板ＣＢ上に実装されている。半導体装置１０ａのリセット信号端子ＲＳＴＴ、クロック信号端子ＳＣＫＴ、電源端子ＶＤＤＴ、ＶＳＳＴ、データ信号端子ＳＤＡＴは、回路基板ＣＢの外部端子Ｔ、すなわち、外部リセット信号端子Ｔ１、外部クロック信号端子Ｔ２、外部電源端子Ｔ３、Ｔ４、外部データ信号端子Ｔ５とそれぞれ電気的に接続されている。なお、第２の実施例に係る半導体装置１０ａが備える各回路について、第１の実施例に係る半導体記憶装置１０と同様の構成、動作を行う回路については、同一の符号を付すことで詳細な説明は省略する。また、半導体装置１０ａと後述する印刷装置３００との間でやりとりされるデータ列についても特に断らない限り、第１の実施例におけるデータ列と同様である。
【００８７】
メモリアレイ１００（記憶素子）は、データの電気的な消去、書き込みが可能なＥＥＰＲＯＭの特性を有する記憶領域である。メモリアレイ１００には、１ビットの情報を格納するメモリセルが複数備えられている。メモリアレイ１００のＷ０行には識別情報ＩＤが格納され、Ｗ０行に続くＷ１行以降が書き込みまたは読み出し対象行となる。メモリアレイ１００は、アドレスセレクタ１１２から出力される行選択信号によって選択される、１行に８アドレス分のメモリセル（８ビット分のメモリセル）を備えている。行選択信号によって選択されるメモリセルが一括で書き込み若しくは読み出しされる単位となる。本実施例では、メモリアレイは３２行からなり、３２ワード×８ビット（２５６ビット）のデータを格納することができる。メモリアレイ１００の所定行には、メモリアレイ１００の領域の特性を定義する情報、（例えば、特定行は読み出し専用であり書き込みを許可しないといった特性を定義した制御情報（ロック情報）、誤り検出処理の結果、誤りが検出されたか否かを示す誤り検出結果情報を格納する制御エリアＣＡが備えられている。制御エリアＣＡにおける誤り結果情報を記憶する誤り検出結果記憶領域ＥＢは、例えば、１bitの領域であり、ライト／リードコントローラ１４０を介して、誤り検出オペレーションデコーダ１５０によって、識別データとコマンドデータおよび書き込みデータのいずれかに誤りが検出された場合には「１」、識別データとコマンドデータおよび書き込みデータのいずれにも誤りが検出されなかった場合には「０」が記録される。なお、誤り検出結果記憶領域ＥＢは、誤り検出結果読み出しコマンドにより読み出され、誤り検出結果読み出しコマンドに基づくアクセスが終了した後、「０」に更新される。詳細については、図１４を参照して後述する。
【００８８】
メモリアレイ１００における各メモリセルには、ワード線とビット（データ）線が接続されている。メモリセル１００への書き込み時には、書き込み対象のワード線（行）が選択され、選択されたワード線に電圧が印加され、書き込み対象のビット線に書き込み電圧を印加することによってデータセルにデータが書き込まれる。選択されている行のメモリセルについて一括で書き込みが実行される際には、選択されている行と接続されている全てのビット線に対して書き込みデータに応じた書き込み電圧が印加される。また、メモリセル１００からデータを読み出す時には、対応するワード線（行）を選択し、対応するビット線をライト／リードコントローラ１４０と接続し、電流の検出の有無によってメモリセルのデータ（１または０）が読み出される。
【００８９】
クロックカウンタ１１１は、リセット信号端子ＲＳＴＴ、クロック信号端子ＳＣＫＴ、ライト／リードコントローラ１４０、アドレスセレクタ１１２と接続されている。また、後述する誤り検出オペレーションデコーダから出力されるＷＥＮ信号が入力される。クロックカウンタ１１１は、リセット信号端子ＲＳＴＴを介して入力されるリセット信号を０（またはロー）にすることによりカウント値が初期値にリセットされ、リセット信号が１とされた後（リセット状態が解除された後）にクロック信号端子ＳＣＫＴを介して入力される外部クロックパルスの立ち下がりに同期してクロックパルス数をカウント（カウント値をインクリメントまたはデクリメント）する。但し、クロックカウンタ１１１は、ホストコンピュータがコマンドパリティビットＣＰbitを送信するためのクロックはカウントしない。また、クロックカウンタ１１１にＷＥＮ信号が入力された後は、９クロックのうちの１クロックをカウントせず、カウントを続行する。すなわち、半導体装置１０ａが書き込みデータパケットを受信する際には、クロックカウンタ１１１はその先頭データ分のクロックをカウントしない。したがって、９ビットの書き込みデータパケットを受信する際に入力される９個のクロックのうち、クロックカウンタ１１１によってカウントされるクロック数は８個である。クロックカウンタ１１１は、メモリアレイ１００の容量に対応するアドレスをカウントできればよい。本実施例では、メモリアレイ１００は２５６ビットなので、８ビットのカウンタによってメモリアレイ１００の０〜２５５のアドレスをカウント可能に構成される。クロックカウンタ１１１の初期値は、識別情報ＩＤが格納されている先頭行（Ｗ０行）を選択する値と関連付けられていればどのような値でも良く、一般的には０が初期値として用いられる。
【００９０】
アドレスセレクタ１１２は、リセット信号端子ＲＳＴＴ、クロックカウンタ１１１、ライト／リードコントローラ１４０、誤り検出オペレーションデコーダ１５０およびメモリアレイ１００に接続されている。アドレスセレクタ１１２は、クロックカウンタ１１１から入力されるカウント値、およびライト／リードコントローラ１４０からの制御信号に応じてメモリアレイ１００に対して列選択信号、行選択信号を出力する。アドレスセレクタ１１２は、入力されるカウント値８ビットの上位５桁で３２行のうちのいずれか１行を選択し、カウント値８ビットの下位３桁で８列のうちのいずれかを選択する。また、一括読み出し、書き込みの場合には、指定された行について、メモリアレイ１００に対して全ての列を選択する列選択信号を出力することができる。なお、行選択信号は、メモリアレイ１００の所望の行を直接選択（指定）するための信号である。また、アドレスセレクタ１１２は、リセット解除信号入力後（検出後）、先頭行を指定するカウント値がクロックカウンタ１１１から入力されている間（本実施例では８クロックの間）、各クロックに応じて読み出しすべき行が記述されたテーブルを備えている。アドレスセレクタ１１２は、例えば、リセット解除後のカウンタ値０に応じてＷ０行を選択し、Ｗ０行のデータがライト／リードコントローラ１４０によって読み出される。また、カウンタ値１〜７はＷ０行を指定するカウンタ値であるが、アドレスセレクタ１１２は、テーブルを参照し、カウンタ値２に応じて、制御エリアＣＡのロック情報が格納されている行、誤り検出結果が格納されている誤り検出結果記憶領域ＥＢを含む行を選択し、これらの行のデータがライト／リードコントローラ１４０によって読み出される。さらに、アドレスセレクタ１１２には、誤り検出オペレーションデコーダ１５０がら誤り検出信号が入力される。誤り検出信号を受信したアドレスセレクタ１１２は、誤り検出結果記憶領域ＥＢを含む行を指定する行選択信号をメモリアレイ１００に出力する。この結果、ライト／リードコントローラ１４０は、検出結果記憶領域ＥＢを含む行に対して、誤り検出結果を記録することができる。この結果、クロックをカウントすることにより、書き込みまたは読み出しされるメモリセルが指定されるにもかかわらず、カウントアップ（カウントダウン）を経ることなく予め決められたアドレスのセルに迅速にアクセスし、当該セルに記憶されているデータを読み出したり、当該セルに対してデータを書き込むことができる。
【００９１】
なお、半導体装置１０ａは、仮想線にて示すレジスタ１１５を備え、レジスタ１１５に誤り検出結果記憶領域ＥＢを確保して、検出結果を格納しても良い。
【００９２】
ＩＤコンパレータ１３０は、クロック信号端子ＳＣＫＴ、データ信号端子ＳＤＡＴ、リセット信号端子ＲＳＴＴと接続され、データ信号端子ＳＤＡＴを介して入力された入力データ列に含まれる識別データとメモリアレイ１００に格納されている識別情報ＩＤタとが一致するか否かを判定する。詳述すると、ＩＤコンパレータ１３０は、データ信号端子ＳＤＡＴを介して、半導体装置１０ａの初期化状態を解除するリセット信号ＲＳＴが入力された後に入力されるオペレーションコードの先頭３ビットのデータを取得する。同時に、ＩＤコンパレータ１３０には、ライト／リードコントローラ１４０によってメモリアレイ１００から読み出された、メモリアレイ１００の先頭行のうち識別データに相当する３ビット分のデータがライト／リードコントローラ１４０から入力される。ＩＤコンパレータ１３０は、データ信号端子ＳＤＡＴを介して取得した３ビットのデータと、ライト／リードコントローラ１４０から取得した３ビットのデータを順次比較し、全てのビットが一致している場合には、ホストコンピュータに対してバス接続されている半導体装置１０ａのうち、自身がホストコンピュータによって選択された半導体装置１０ａであると判断し、アクセス許可信号ＡＥＮをライト／リードコントローラ１４０に出力する。一方、データ信号端子ＳＤＡＴを介して取得した３ビットのデータをライト／リードコントローラ１４０から取得した３ビットのデータが一致しない場合には、アクセス許可信号ＡＥＮを出力しない。この結果、半導体装置１０ａは、読み出しまたは書き込み処理を実行せず、リセット信号ＲＳＴ（ＲＳＴ＝０またはＬｏｗ）の入力を待ってリセット状態に戻る。
【００９３】
ライト／リードコントローラ１４０は、メモリアレイ１００、ＩＤコンパレータ１３０、誤り検出オペレーションデコーダ１５０、クロック信号端子ＳＣＫＴ、データ信号端子ＳＤＡＴ、リセット信号端子ＲＳＴＴと接続されている。ライト／リードコントローラ１４０は、リセット解除後に入力されるクロックに同期して、メモリセル１０から識別データを読み出して、順次、ＩＤコンパレータ１３０に出力する。ライト／リードコントローラ１４０は、ＩＤコンパレータ１３０からのアクセス許可信号ＡＥＮおよび誤り検出オペレーションデコーダ１５０からの書き込み許可信号ＷＥＮの入力を待って、半導体記憶装置１０の内部動作を書き込み動作に切り換え、書き込み許可信号ＷＥＮの入力がない場合には読み出し動作のままとする回路である。ライト／リードコントローラ１４０はまた、リセット状態を解除するリセット信号入力後に、クロック信号端子ＳＣＫＴを介して入力されるクロック信号の１〜７番目のクロックに同期してアドレスセレクタ１１２によって選択された制御エリアＣＡの所定行からメモリアレイ１００の領域特性に関する情報、ロック情報を読み出して一時保存する。
【００９４】
アクセスが書き込みである場合、ライト／リードコントローラ１４０は、アクセスが要求されている領域が書き込み可能な領域であるか否かをロック情報に基づいて判断し、書き込み可能領域である場合には、当該領域に対する書き込み処理を実行する。アクセスが要求されている領域が書き込み可能領域でない場合には、書き込み処理は実行しない。ライト／リードコントローラ１４０は、データ信号端子ＳＤＡＴからの入力信号線に対して、データ信号端子ＳＤＡＴから入力された書き込みデータのうち、オペレーションコード以降の８ビットの書き込みデータを一時的に格納する８ビットレジスタ（図示しない）およびメモリアレイ１００から読み出したデータを格納するレジスタ（図示しない）を備えている。
【００９５】
８ビットレジスタには、データ信号端子ＳＤＡＴから入力信号線を介して入力されるデータ列（ＭＳＢ）が８ビットとなるまで保持され、８ビット分揃ったところで、保持されている８ビットのデータがメモリアレイ１００に対して書き込まれる。
【００９６】
ライト／リードコントローラ１４０は、半導体装置１０ａの電源ＯＮ時、半導体装置１０ａがリセット状態の時には、メモリアレイ１００に対するデータ転送方向を読み出し方向に設定し、データ信号端子ＳＤＡＴに接続されている信号線をハイインピーダンスとすることでデータ信号端子ＳＤＡＴに対するデータ転送を禁止する。この状態は、誤り検出オペレーションデコーダ１５０によってＲ／Ｗ（読み出し／書き込み）コマンドが解析されるまで維持される。したがって、リセット信号入力後にデータ信号端子ＳＤＡＴを介して入力されるデータ列の先頭４ビットのデータはメモリアレイ１００に書き込まれることはなく、一方で、メモリアレイ１００の先頭４ビットに格納されているデータは、ＩＤコンパレータ１３０に送出される。この結果、メモリアレイ１００の先頭４ビットは読み出し専用状態となる。
【００９７】
ライト／リードコントローラ１４０は、誤り検出オペレーションデコーダ１５０から書き込み許可信号ＷＥＮ、およびＩＤコンパレータ１３０からのアクセス許可信号ＡＥＮの入力を待って、書き込み処理を開始する。一方、誤り検出オペレーションデコーダ１５０から書き込み許可信号ＷＥＮが入力されない場合には、ＩＤコンパレータ１３０からのアクセス許可信号ＡＥＮの入力を待って、読み出し処理を開始する。
【００９８】
ライト／リードコントローラ１４０は、第１の書き込みパケットデータを受信すると、クロックカウンタ１１１がＷ０行の次の行（Ｗ１行）を指定するカウンタ値をアドレスセレクタ１１２に出力しているので、第１の書き込みパケットデータをメモリセル１０に転送し、Ｗ１行に第１の書き込みパケットデータを書き込む。ライト／リードコントローラ１４０は、第１の書き込みデータパケット以降、ホストコンピュータから送信されてくる全ての書き込みデータパケットを受信し終えるまで書き込みを行う。
【００９９】
ライト／リードコントローラ１４０は、読み出し処理時には、外部から転送されるクロックに同期してアドレスカウンタでカウントを進めると共に、そのカウントで選択されるメモリセル１０のセルまたは行を読み出し、ホストコンピュータに送信する。
【０１００】
本実施例では、書き込みデータのパケット毎にエラーがある場合には、メモリアレイ１００に対する当該書き込みデータの書き込みが実行されない。すなわち、誤り訂正符号の技術を用いて、外部ノイズ等によってホストから入力された書き込みデータ列に誤りが発生している場合には、メモリアレイ１００に対して、少なくとも当該書き込みデータ列の書き込みを実行しないことによってメモリアレイ１００に格納されているデータの信頼性を向上させている。この機能は、以下に説明する誤り検出オペレーションデコーダ１５０によって提供される。  
【０１０１】
誤り検出オペレーションデコーダ１５０は、リセット信号端子ＲＳＴＴ、ライト／リードコントローラ１４０、アドレスセレクタ１１２と信号線を介して接続されている。誤り検出オペレーションデコーダ１５０は、例えば、リセット信号ＲＳＴが入力された後の４つ目〜８つ目のクロック信号に同期してデータ信号端子ＳＤＡＴを介して入力されるデータ列に含まれる書き込み／読み出し制御情報（３ビットのＩＤ情報に続く５ビット情報）を取り込む。ここで、誤り検出オペレーションデコーダ１５０は、入力されたＩＤ情報と、書き込み／読み出し制御情報（Ｒ／Ｗコマンド）と、５ビットの書込み／読み出し制御情報に続く９ビット目のコマンドパリティビット（ＣＰbit）と、を用いて誤り検出処理を実行する。誤り検出オペレーションデコーダ１５０は、コマンドパリティビット（ＣＰbit）が示すパリティ値とＩＤ情報および書込み／読み出し制御情報を用いて算出したパリティ値とが一致する場合には、有効なコマンドであると判断し、両者が一致しない場合には無効なコマンドであると判断する。書き込み／読み出し制御情報が有効なコマンドであり、かつ書き込みコマンドを示していると判断した場合には、引き続いて入力された書き込みデータ列に対して誤り検出処理を実行する。一方、書き込み／読み出し制御情報が読み出しコマンドを示していると判断した場合、または無効なコマンドであると判断した場合には誤り検出オペレーションデコーダ１５０は、入力されたデータ列に対して誤り検出処理を実行しない。
【０１０２】
誤り検出オペレーションデコーダ１５０は、入力されたデータ列が書き込みデータである場合には、図２に示すように８ビットの書き込みデータパケットと、それに続く１ビットのデータパリティビット（ＤＰbit）とを用いて誤り検出処理を各データパケットに対して実行する。誤り検出オペレーションデコーダ１５０は、データパリティビット（ＤＰbit）が示すパリティ値と書き込みデータパケットを用いて算出したパリティ値とが一致する場合には、書き込みデータパケットに誤りは発生していないと判断し、両者が一致しない場合には書き込みデータパケットに誤りが発生していると判断する。誤り検出オペレーションデコーダ１５０は、全ての書き込みデータパケットに対して誤り検出処理を実行する。パリティビットを用いたデータの誤り検出処理は当業者にとって周知の技術であるから詳細な説明は省略する。誤り検出オペレーションデコーダ１５０は、書き込みデータパケットに誤りが発生していないと判断した場合には、ライト／リードコントローラ１４０に対して書き込み許可信号ＷＥＮを出力すると共に、誤り検出結果記憶領域ＥＢの値を「０」とする。一方、誤り検出オペレーションデコーダ１５０は、書き込みデータパケットに誤りが発生していると判断した場合には、書き込み許可信号ＷＥＮを出力しないと共に、誤り検出結果記憶領域ＥＢに対して「１」を書き込む。
【０１０３】
具体的には、誤りが検出されると、誤り検出オペレーションデコーダ１５０は、アドレスセレクタ１１２に対して誤り検出信号を出力し、ライト／リードコントローラ１４０に対して誤り検出結果書き込み要求を出力する。誤り検出信号を受信したアドレスセレクタ１１２は、誤り検出結果記憶領域ＥＢを含む行を選択する行選択信号をメモリアレイ１００に出力する。ライト／リードコントローラ１４０は、誤り検出結果記憶領域ＥＢに誤りが発生したことを示すフラグ情報「１」が書き込まれるような列データを生成して、メモリアレイ１００に転送する。これにより、誤り検出結果記憶領域ＥＢに「１」を書き込む。すなわち、本実施例では、書き込みデータにエラーが検出された場合には、外部コマンド、例えば、印刷装置３００からのコマンドに依存することなく、半導体装置１０ａ自身によって誤り検出結果記憶領域ＥＢに対する誤り検出結果を書き込むことができる。また、誤りが検出されたパケットデータはメモリセル１０に書き込まれない。
【０１０４】
インクカートリッジと印刷装置の構成：
図１０は液体収容体としてのインクカートリッジの概略構成を示す説明図である。図１１は本実施例に係る印刷装置の構成および印刷装置とインクカートリッジとの接続態様を示す説明図である。本実施例では、ホストコンピュータ機能を有する印刷装置を例に取って説明する。なお、印刷装置が備える構成要件のうち、印刷に関わる印刷部は、ホストコンピュータの機能を提供するために不要であることはいうまでもない。
【０１０５】
インクカートリッジ２０ａは、上述の半導体装置１０ａ、および図示しないインク収容室を備えている。印刷装置３００は、インクカートリッジ２０ａを搭載するための搭載部３１０、インクカートリッジ２０ａの外部端子Ｔ（Ｔ１〜Ｔ５）と接続する搭載部側端子３２０を備えている。搭載部３１０は、キャリッジ上に配置されていても良く（オンキャリッジタイプ）、キャリッジ外の任意の場所に配置されていても良い（オフキャリッジタイプ）。
【０１０６】
印刷装置３００は、中央演算装置（ＣＰＵ）３０１、記憶装置３０２、入出力部３０３、印刷部３０４を備えている。ＣＰＵ３０１、記憶装置３０２、入出力部３０３および印刷部３０４は内部バスによって双方向通信可能に接続されている。したがって、ＣＰＵ３０１、記憶装置３０２および入出力部３０３をホストコンピュータ機能部と呼ぶことができる。記憶装置３０２は、書き込み用のデータを生成するデータ生成モジュール３０２ａ、データを符号化する、本実施例ではデータ列に対してパリティビットを生成しデータ列にパリティビットを付加するための符号化モジュール３０２ｂを格納すると共に、半導体装置１０ａから読み出したデータ、生成された書き込み用データを一時的に記憶する。記憶装置３０２は、例えば、誤り検出結果読み出しコマンドにより半導体装置１０ａにアクセスした結果、書き込みエラーが検出されないことをトリガとして、半導体装置１０ａに送信済みの、記憶している書き込み用データを消去してもよい。データ生成モジュール３０２ａおよび符号化モジュール３０２ｂは、ＣＰＵ３０１によって実行されることによって、それぞれデータ生成部および符号化部として機能する。また、データ生成部および符号化部は、それぞれ、ハードウェア、例えば、データ生成回路、符号化回路として実現されても良い。入出力部３０３は搭載部側端子３２０と接続されており、ＣＰＵ３０１が実行する半導体装置１０ａへのアクセスに基づき、インクカートリッジ２０ａが備える半導体装置１０ａに対してデータを送信し、あるいは、半導体装置１０ａからデータを受信する。印刷部３０４は、少なくともキャリッジによって主走査方向に移動される印刷ヘッド、印刷媒体（印刷用紙）を副走査方向に搬送する搬送機構を備え、印刷ヘッドを介してインクカートリッジ２０ａから供給されたインクを吐出して印刷媒体上に画像を形成する。
【０１０７】
半導体装置１０ａは、外部端子Ｔを介して印刷装置３００から制御信号を受信し、印刷装置３００に対して読み出しデータ、誤り検出信号を送信する。なお、図１１の例では、印刷装置３００に複数のインクカートリッジ２０ａが備えられている。複数のインクカートリッジ２０ａに備えられている各半導体装置１０ａは、それぞれ印刷装置３００側の信号線を共有しており、例えば、データ信号線ＤＬ、クロック信号ＣＬ、リセット信号線ＲＬに対してバス接続されている。なお、インクカートリッジ２０ａは１つだけ備えられていても良い。
【０１０８】
半導体装置の動作：
図１２を参照して本実施例に係る半導体装置１０ａの動作について説明する。図１２は本実施例に係る半導体装置に対するアクセス制御時に半導体装置において実行される処理ルーチンを示すフローチャートである。なお、以下の例では、印刷装置３００に対して複数のインクカートリッジ２０ａが備えられ、各インクカートリッジ２０ａに備えられている半導体装置１０ａがバス接続されている場合について説明する。
【０１０９】
半導体装置１０ａは印刷装置３００からデータを受信すると（ステップＳ３００）、データ列に含まれるＩＤが自身の識別情報ＩＤと一致するか否かを判定する（ステップＳ３０１）。本実施例では、各インクカートリッジ２０ａに備えられている半導体装置１０ａは印刷装置３００に対して共通のクロック信号線ＣＬ、データ信号線ＤＬ、リセット信号線ＲＬを介してバス接続されているので、ホストコンピュータ３０から送信されるデータは各半導体装置１０ａに対して送信される。ＩＤの判定は、具体的には、既述の通り、ＩＤコンパレータ１３０によって受信したデータ列に含まれる識別情報とメモリアレイ１００に格納されている識別情報とが一致するか否かが判定される。半導体装置１０ａは、ＩＤが一致しないと判定した場合（ステップＳ３０１：Ｎｏ）には、ステップＳ３０８に移行し、ＩＤが一致すると判定した場合（ステップＳ３０１：Ｙｅｓ）には、コマンドの誤り検出を実行する（ステップＳ３０２）。具体的には、誤り検出オペレーションデコーダ１５０によって、受信したデータ（データ列）に含まれるコマンドパリティビット（ＣＰbit）と、ＩＤおよびリード／ライトコマンドビットを用いて算出したパリティ演算の結果とが比較され、両者が一致する場合には受信したＩＤおよびリード／ライトコマンドに誤りはなく、両者が一致しない場合には受信したデータに誤りがあることを検出する。半導体装置１０ａは、誤りが検出された場合には（ステップＳ３０２：Ｙｅｓ）、メモリアレイ１００における誤り検出結果記憶領域ＥＢに「１」を書き込み（ステップＳ３１２）、本処理ルーチンを終了する。具体的には、上述の通り、誤り検出オペレーションデコーダ１５０によって、ライト／リードコントローラ１４０を介してメモリアレイ１００の制御エリアＣＡに対する書き込みが実行される。
【０１１０】
半導体装置１０ａは、ＩＤおよびリード／ライトコマンドに誤りがないと判定すると（ステップＳ３０２：Ｎｏ）、受信したデータの書き込みが要求されているか否かを判定する（ステップＳ３０３）。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０によって、受信したデータ列に含まれるリード／ライトコマンドビットが解析され、書き込み要求または読み出し要求のいずれであるかが判定される。また、ＩＤコンパレータ１３０は両ＩＤが一致する場合には、ライト／リードコントローラ１４０に対してアクセス許可信号ＡＥＮを送信する。なお、本実施例では、ＩＤコンパレータ１３０は、ライト／リードコントローラ１４０に対してアクセス許可信号ＡＥＮを送信しているが、誤り検出オペレーションデコーダ１５０に対して送信するようにしても良い。この場合には、誤り検出オペレーションデコーダ１５０は、アクセス許可信号ＡＥＮを受信した場合に、リード／ライトコマンドビットの解釈を実行する。
【０１１１】
半導体装置１０ａは、データの書き込みが要求されていない、すなわち、読み出しが要求されていると判定した場合には（ステップＳ３０３：Ｎｏ）、メモリアレイ１００から所望のデータの読み出し処理を実行し（ステップＳ３１０）、本処理ルーチン（今回のアクセスに対する処理）を終了する。メモリアレイ１００からの所望のデータの読み出しは、ライト／リードコントローラ１４０によって既述の通り実行される。
【０１１２】
半導体装置１０ａはデータの書き込みが要求されていると判定すると（ステップＳ３０３：Ｙｅｓ）、書き込みデータパケットを受信し（ステップＳ３０４）、データ列の誤りを検出する（ステップＳ３０５）。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０によって、データ列に含まれるデータパリティビットと書き込みデータを用いたパリティ演算の結果とが比較され、両者が一致する場合には受信したデータに誤りはなく、両者が一致しない場合には受信したデータに誤りがあることを検出する。
【０１１３】
半導体装置１０ａは、誤りが検出されなかった場合には（ステップＳ３０５：Ｎｏ）、書き込みが要求されているアドレス（領域）がロック領域であるか否かを判定する（ステップＳ３０６）。具体的には、上述のように、ライト／リードコントローラ１４０がメモリアレイ１００の制御エリアＣＡに記述されているロック情報を取得し、書き込みが要求されている領域が書き込みを制限されている書き込み禁止領域（読み出し専用領域）であるか否かを判定する。半導体装置１０ａは、書き込みが要求されているアドレスがロック領域に該当しないと判定した場合には（ステップＳ３０６：Ｎｏ）、受信したデータをメモリアレイ１００に対して書き込む（ステップＳ３０７）。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０からライト／リードコントローラ１４０に対して書き込み許可信号ＷＥＮが送信され、ライト／リードコントローラ１４０は受信した８ビットのデータを、アドレスセレクタ１１２によって選択されたメモリアレイ１００のアドレス（ロー）に書き込む。
【０１１４】
半導体装置１０ａは、データを書き込んだ後、処理すべき次のデータパケットがあるか否かを判定し（ステップＳ３０８）、次のデータパケットがない場合には（ステップＳ３０８：Ｎｏ）、半導体装置１０ａをリセット状態にするリセット信号（０）の入力を待機し（ステップＳ３０９：Ｎｏ）、リセット信号（０）が入力されると（ステップＳ３０９：Ｙｅｓ）、本処理ルーチンを終了する。半導体装置１０ａは、次のパケットデータが有る場合に（ステップＳ３０８：Ｙｅｓ）、ステップＳ３０４に移行する。半導体装置１０ａは、誤りが検出された場合には（ステップＳ３０５：Ｙｅｓ）、メモリアレイ１００における誤り検出結果記憶領域ＥＢに「１」を書き込み（ステップＳ３１２）、本処理ルーチンを終了する。具体的には、既述の通り、誤り検出オペレーションデコーダ１５０によって、ライト／リードコントローラ１４０を介してメモリアレイ１００に対する書き込みが実行される。
【０１１５】
半導体装置１０ａは、書き込みが要求されているアドレスがロック領域であると判定した場合には（ステップＳ３０６：Ｙｅｓ）、処理すべき次のデータパケットがあるか否かを判定し（ステップＳ３０８）、存在する場合には（ステップＳ３０８：Ｙｅｓ）、ステップＳ３０４に移行する。一方、処理すべき次のデータパケットが存在しない場合には（ステップＳ３０８：Ｎｏ）、ステップＳ３０９に移行する。
【０１１６】
なお、ステップＳ３０５において誤りが検出された場合には、続くデータの書き込みについて以下の態様を取り得る。
（１）誤りを検出した後は、以降の書き込み要求は受け付けない。
（２）誤りを検出した後も、当該書き込みデータパケットの書き込みは実行しないが、以降の書き込み要求は受け付ける。
（３）誤りを検出した後に、当該書き込みデータパケットの再書き込みを実行する。なお、具体的な手順、利点については第１の実施例において説明済みであるから説明を省略する。
【０１１７】
以上説明した本実施例に係る半導体装置１０ａによれば、受信した書き込みデータに誤りが検出された場合にはメモリアレイ１００に対する書き込みが実行されないので、半導体装置１０ａに格納されているデータの信頼性を向上させることができる。
【０１１８】
半導体装置１０ａは、誤り検出結果記憶領域ＥＢを備えるので、全ての書き込み可能領域に対して、書き込みデータとメモリアレイ１００に書き込まれている既存データとを比較するベリファイ処理を実行することなく、メモリアレイ１００のデータが付すとコンピュータが書き込もうとしたデータに一致するデータであるか否かを判定することができる。例えば、電源が不意に遮断された場合であっても、遮断前に誤りのある書き込みデータの書き込み要求があったか否かを容易に判定することができる。したがって、例えば、誤り検出結果記憶領域ＥＢが書き込みデータの誤りの検出を示す場合には、時間を要するベリファイ処理を実行することなく、直ちに再度、全ての書き込みデータの書き込みを実行することが可能となり、誤り検出結果記憶領域ＥＢが書き込みデータの誤りの検出を示さない場合には、書き込みが完了していないデータについて書き込みを再開すれば良い。
【０１１９】
ホストコンピュータの動作：
図１３は本実施例に係る半導体装置に対する書き込みアクセス時にホストコンピュータにおいて実行される処理ルーチンを示すフローチャートである。なお、以下の例では印刷装置をホストコンピュータとして用いて説明する。印刷装置３００は、記憶装置３０２に格納されている書き込まれるべきデータを用いて今回の書き込みアクセスにおいて半導体装置１０ａに送信すべき書き込みデータを生成する（ステップＳ４００）。なお、本実施例では、行選択信号によって選択されるメモリアレイ１００の行（ロー）に対応する１バイトの書き込みデータ列の送信を１回の書き込み単位として説明する。具体的には、データ生成モジュール３０２ａによって、書き込まれるべきデータと、書き込み対象となる半導体装置１０ａを識別するためのＩＤ、書き込みコマンド、書き込み対象となるデータを含むデータ列が生成される。
【０１２０】
印刷装置３００は、生成した書き込みデータを符号化する（ステップＳ４０２）。具体的には、符号化モジュール３０２ｂによって、識別情報ＩＤとリード／ライトコマンドを利用してコマンドパリティビットが生成され、書き込みデータパケットを利用してデータパリティービットが生成され、生成されたデータ列の先頭から９ビット目にコマンドパリティビット、１８ビット目にデータパリティビットが書き込まれることで、データ列が符号化される。
【０１２１】
印刷装置３００は、符号化された書き込みデータ列をデータ信号線ＤＬに出力し、所望の半導体装置を含む全ての半導体装置１０ａに対して送信する（ステップＳ４０４）。印刷装置３００は、所望の半導体装置のメモリセルの次の行に書き込むべきデータが存在するか否かを判定し（ステップＳ４０６）、存在しない場合には（ステップＳ４０６：Ｎｏ）、本処理ルーチンを終了する。
【０１２２】
一方、印刷装置３００は、次に書き込むべきデータが存在する場合には（ステップＳ４０６：Ｙｅｓ）、ステップＳ３００に移行し、書き込みデータを生成し、ステップＳ４０６に至る各ステップが繰り返し実行される。
【０１２３】
以上説明した印刷装置３００によれば、半導体装置１０ａに対して符号化された書き込みデータを送信し、半導体装置１０ａが符号化されたデータを用いてデータを検証するので、誤りのある書き込みデータの書き込みを防止することができる。本実施例では、印刷装置３００は、半導体装置１０ａがステップＳ３０５においてデータの誤りを検出した場合にも、データの書き込み時には、その誤りを確認せず、書き込み処理を中断することなく書き込みを実行する。本実施例では、印刷装置３００は、書き込みアクセス終了後に、誤り検出確認のために誤り検出結果読み出しコマンドを半導体装置１０ａに出力し、誤り検出結果領域ＥＢの情報を取得し、誤りの検出、すなわち、「１」が記録されていた場合には、再度、先の書き込みデータを用いた書き込み処理が実行される。
【０１２４】
図１４は本実施例に係る半導体装置に対し、書き込み時にデータの誤りがあって書き込みがされていないという誤り検出のためにアクセス時に印刷装置において誤り検出結果を利用して実行される処理ルーチンを示すフローチャートである。
【０１２５】
以下、印刷装置３００が誤り検出結果を利用する場合に実行するアクセス制御について説明する。本処理ルーチンは、上述の誤り検出結果読み出しコマンドを送信して実行される処理である。印刷装置３００は、誤り検出結果読み出しコマンドを、書き込みアクセスを実行した半導体装置１０ａに対して送信する。具体的には、書き込みアクセスを実行した半導体装置１０ａの識別情報ＩＤとコマンド（誤り検出結果読み出しコマンド）をデータ信号線ＤＬに出力する。コマンドと識別情報ＩＤを受信した半導体装置１０ａのうち、自身のＩＤと一致する半導体装置１０ａは、誤り検出オペレーションデコーダ１５０を介して、受信したコマンドを判別し、誤り検出結果読み出しコマンドであると判断した場合には、ライト／リードコントローラ１４０によって読み出した誤り検出結果記憶領域ＥＢの情報を印刷装置３００送信する。これによって印刷装置３００は誤り検出結果記憶領域ＥＢの値を取得する（ステップＳ４１０）。既述の通り、本実施例に係る半導体装置１０ａは、リセット後の数クロックに同期して制御エリアＣＡの誤り検出結果領域ＥＢにアクセスするので、印刷装置３００は誤り検出結果を直ちに取得することができる。なお、誤り検出結果記憶領域ＥＢがメモリアレイ１００外のレジスタ１１５に備えられている場合には、印刷装置３００は、当該レジスタ１１５にアクセスし、誤り検出結果を取得する。識別情報ＩＤと自身の識別情報ＩＤとが一致せず、誤り検出結果読み出しコマンドを受信したと判断した半導体装置１０ａは、自身の誤り検出領域ＥＢに「１」（誤り検出有り）が記憶されているか否かを判断し、「１」が記憶されている場合には、「０」に更新して処理を終了する。
【０１２６】
印刷装置３００は、誤り検出結果記憶領域ＥＢの値が「１」であるか否かを判定し（ステップＳ４１１）、「１」の場合、すなわち、誤りが検出されていた場合には（ステップＳ４１１：Ｙｅｓ）、記憶装置３０２に格納されている書き込み対象となる全てのデータ、すなわち、先の書き込み処理に用いられたメモリアレイ１００の書き換え可能領域に対応するデータを取得する（ステップＳ４１２）。なお、既述のように記憶装置３０２に先の書き込み用データが残されている場合には当該書き込み用データを用いても良く、あるいは、データ生成モジュール３０２ａによって再度、先の書き込み用データを生成しても良い。ここで、書き換え可能領域に対応するデータは、書き込み可能なデータとも言うことも可能であり、例えば、インク量（残量または消費量）、印刷装置３００に対するインクカートリッジの装着回数（半導体装置１０ａと印刷装置３００との接触回数）といった情報に関するデータが該当する。
【０１２７】
印刷装置３００は、図１３を用いて説明した通常の書き込みアクセス時と同様に、半導体装置１０ａにアクセスする。印刷装置３００は識別情報ＩＤとリード／ライトコマンド（Ｒ／Ｗ）を用いてコマンドパリティビットを生成し、識別情報ＩＤとリード／ライトコマンドとパリティビットを半導体装置１０ａに送信する。印刷装置３００は、書き込み単位、すなわち、バイト単位にて書き込みデータ（書き込みデータパケット）を生成する（ステップＳ４１３）。印刷装置３００は、生成した書き込みデータパケットを用いてデータパリティビットを生成し、既述の位置に配置して書き込みデータパケットを符号化し（ステップＳ４１４）、半導体装置１０ａに送信する（ステップＳ４１５）。なお、各ステップにおける詳細な処理は図１２を参照して説明済みであるから説明を省略する。
【０１２８】
印刷装置３００は、次の書き込みデータが存在する場合には（ステップＳ４１６：Ｙｅｓ）、ステップＳ４１３に移行し、全ての書き込みデータパケットの送信が終了するまでステップＳ４１３〜Ｓ４１５の処理を繰り返し実行する。印刷装置３００は、次の書き込みデータが存在しなくなると（ステップＳ４１６：Ｎｏ）、本処理ルーチンを終了する。
【０１２９】
印刷装置３００は、誤り検出結果記憶領域ＥＢの値が「０」の場合、すなわち、誤りが検出されていない場合には（ステップＳ４１１：Ｎｏ）、本処理ルーチンを終了する。
【０１３０】
以上説明した印刷装置３００によれば、半導体装置１０ａに対してデータを書き込む際に、誤り検出結果記憶領域ＥＢを読み出すことにより、半導体装置１０ａに書き込まれているデータが書き込まれるべきデータに対応しているか否か、すなわち、書き込みに際して書き込みエラーが発生したか否かを判定することができる。したがって、書き込みエラーの発生を検出した場合には、書き込みデータの再書き込みを実行し、書き込みエラーの発生を検出しなかった場合には、書き込みが要求される書き込みデータの書き込みを直ちに実行することができる。
【０１３１】
その他の実施例：
（１）上記各実施例ではパリティチェックによる符号化処理を例にとって説明したが、このほかに、例えば、ＣＲＣ（巡回冗長検査）、チェックサム、ハッシュ関数を用いた符号化処理も同様に適用可能である。
【０１３２】
（２）上記各実施例では、誤り検出結果記憶領域ＥＢが備えられている場合について述べたが、誤り検出結果記憶領域ＥＢを備えていなくても、誤りが検出された書き込みデータの書き込みを防止できることはいうまでもない。したがって、半導体記憶装置１０は、誤り検出結果記憶領域ＥＢを備えていなくても良い。
【０１３３】
（３）上記実施例では、シーケンシャルアクセス型のメモリアレイ１００を例にとって説明したが、ランダムアクセス型のメモリアレイを備える半導体記憶装置においても同様の効果が得られることは言うまでもない。また、書き込み単位は１バイトでなくてもよく、１ビット単位でも良い。この場合には、例えば、所望の１ビットを含む数ビットを用いて符号化処理を実行すれば良い。また、半導体記憶装置１０、半導体装置１０ａのメモリアレイは強誘電体メモリセルからなるものであっても良い。更には、半導体記憶装置１０、半導体装置１０ａはメモリアレイに加えて演算回路を備えた半導体装置であっても良い。
【０１３４】
（４）上記各実施例では、複数の半導体記憶装置１０がホストコンピュータ３０に対して信号線を介してバス接続される例をとって説明したが、半導体記憶装置１０とホストコンピュータ３０とはスター接続されていても良く、また、ホストコンピュータ３０に対して１つの半導体記憶装置１０が接続されていても良い。この場合には、識別情報は不要であり、半導体記憶装置はＩＤコンパレータ１３０を備えなくて良い。
【０１３５】
（５）上記実施例では、検出結果記憶領域ＥＢとして１ビットの領域を用いたが、例えば、液体収容体の使用と共に更新されるデータの格納領域（ロー）に対応する数の複数ビットの検出結果記憶領域ＥＢを備えても良い。この場合には、各検出結果記憶領域ＥＢとロートを対応付けておくことによって、電源遮断後においても書き込みが正しく実行されなかったローを判別することが可能となり、判別されたローに対応するデータのみを書き込むことによって再書き込み時間を短縮することができる。
【０１３６】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１３７】
１０…半導体記憶装置
１０ａ…半導体装置
２０…液体収容体
２０ａ…インクカートリッジ
３０…ホストコンピュータ
３１…データ生成部
３２…符号化回路
３３…入出力部
１００…メモリアレイ
１１０…アドレスカウンタ
１１１…クロックカウンタ
１１２…アドレスデコーダ
１３０…ＩＤコンパレータ
１４０…ライト／リードコントローラ
１５０…誤り検出オペレーションデコーダ
３００…印刷装置
３０１…中央演算装置（ＣＰＵ）
３０２…記憶装置
３０２ａ…データ生成モジュール
３０２ｂ…符号化モジュール
３０３…入出力部
３０４…印刷部
ＣＢ…回路基板
ＡＥＮ…アクセス許可信号
ＷＥＮ…許可信号
ＣＬ…クロック信号線
ＤＬ…データ信号線
ＲＬ…リセット信号線
ＥＢ…誤り検出結果記憶領域
ＲＳＴ…リセット信号
ＳＣＫ…クロック信号
ＳＤＡ…データ信号
ＲＳＴＴ…リセット信号端子
ＳＣＫＴ…クロック信号端子
ＳＤＡＴ…データ信号端子
Ｔ、Ｔ１〜Ｔ５…外部端子
ＤＰbit…データパリティビット
ＣＰbit…コマンドパリティビット
Ｒ／Ｗ…リード／ライトコマンド
【図１】
2009259225.tif 000003
【図２】
2009259225.tif 000004
【図３】
2009259225.tif 000005
【図４】
2009259225.tif 000006
【図５】
2009259225.tif 000007
【図６】
2009259225.tif 000008
【図７】
2009259225.tif 000009
【図８】
2009259225.tif 000010
【図９】
2009259225.tif 000011
【図１０】
2009259225.tif 000012
【図１１】
2009259225.tif 000013
【図１２】
2009259225.tif 000014
【図１３】
2009259225.tif 000015
【図１４】
2009259225.tif 000016