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