(57)【特許請求の範囲】
【請求項１】
ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムにおいて、
前記ＩＣカードは、データを受信する場合に、データの受信に誤りがないことが検出された時には、前記信号線のレベルを所定時間ハイレベルとし、且つ、データの受信に誤りがあることが検出された時には、データ再送要求信号を送信した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とするカードシステム。
【請求項２】
ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムにおいて、
前記ＩＣカードは、データを送信する場合に、パリティビットの送信後に前記信号線のレベルを所定時間ハイレベルとし、且つ、データの送信が正常に完了した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とするカードシステム。
【請求項３】
ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムに用いられるＩＣカードにおいて、
前記カードリーダライタからデータを受信する場合に、データの受信に誤りがないことが検出された時には、前記信号線のレベルを所定時間ハイレベルとし、且つ、データの受信に誤りがあることが検出された時には、データ再送要求信号を送信した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とするＩＣカード。
【請求項４】
ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムに用いられるＩＣカードにおいて、
前記カードリーダライタにデータを送信する場合に、パリティビットの送信後に前記信号線のレベルを所定時間ハイレベルとし、且つ、データの送信が正常に完了した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とするＩＣカード。
【請求項５】
請求項３又は請求項４に記載のＩＣカードにデータの書き込み又は読み出しのためにデータを送受信することを特徴とするカードリーダライタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、カードシステム、それに用いるＩＣカード及びカードリーダライタに関し、特に、ＪＡＶＡカードなどのように高速でデータを送受信するカードを使用できるカードシステム、それに用いるＩＣカード及びカードリーダライタに関する。
【０００２】
【従来の技術】
従来、キャッシュカードやクレジットカードなどの多くには、磁気カードが使用されているが、近年、磁気カードの偽造が増加しており、磁気カードに代わりＩＣカードが注目されている。ＩＣカードは、内部のＣＰＵで暗号処理をするため、磁気カードに比して偽造が困難であり、また、ＩＣには多くの情報を格納できるため、多機能なものが多い。
【０００３】
図１は、ＩＣカード１０及びＩＣカード１０内の情報を読み出す又はＩＣカード１０に情報を記録するＩＣカードリーダ／ライタ２０を示す図である。ＩＣカードリーダ／ライタ２０は、各々データの入出力を行うポート端子（ＰＯＲＴ）２２と、データの入出力のタイミングを計るクロック信号を出力するクロック端子（ＣＬＯＣＫ）２３と、ＩＣカード１０内のＣＰＵ１１の駆動を開始するためのリセット信号を出力するリセット端子（ＲＥＳＥＴ）２４と、ＩＣカード１０内のＣＰＵ１１を駆動するための電力を供給する電源端子（ＶDD）２５及びグランド端子（ＧＮＤ）２６とを備えている。
【０００４】
また、ＩＣカードリーダ／ライタ２０は、各端子２２〜２６に出力する各種信号を制御するＣＰＵ２８と、ＣＰＵ２８を駆動するための電源２１と、電源２１とポート端子２２との間に設けられたプルアップ抵抗２７とを有している。さらに、ＩＣカード１０は、ＩＣカードリーダ／ライタ２０の各端子２２〜２６に対応する端子１２〜２６を備えており、各種信号の入出力又は各種信号を入力する。また、ＩＣカード１０は、半二重同期通信を行うためのプログラムやユーザデータを格納するメモリ１７と、メモリ１７内に格納されているプログラムなどを実行するためのＣＰＵ１１とを有している。
【０００５】
ここで、半二重とは、二つの通信機器間でデータの伝送を交互に行い、双方向の伝送を可能にする方式のことをいう。一方がデータを送信するときには、他方はそのデータを受信することとなり、双方が同時にデータを送出することはできない。すなわち、たとえばＩＣカードリーダ／ライタ２０からデータが出力されているときには、ＩＣカード１０はデータをＩＣカードリーダ／ライタ２０側へ出力できず、ＩＣカードリーダ／ライタ２０からのデータを受信するだけである。
【０００６】
つぎに、図１の動作について説明する。まず、ＩＣカードリーダ／ライタ２０にＩＣカード１０が装着されると、ＣＰＵ２８の指示に基づいて、電源端子２５，１５を通じてＩＣカード１０本体に電力ＶＤＤが供給される。具体的には、電源端子２５及びグランド端子２６と電源端子１５及びグランド端子１６とが電気的に接続されることで、ＣＰＵ１１を駆動させることができるようになる。
【０００７】
その後、ＩＣカードリーダ／ライタ２０から、ＣＰＵ２８の指示に基づいて、リセット端子２４を通じてリセット信号が出力される。すると、ＩＣカード１０では、リセット端子１４を通じてこれを入力する。このリセット信号は、ＣＰＵ１１に入力される。これにより、ＣＰＵ１１は駆動を開始できる状態となる。
【０００８】
つづいて、ＩＣカードリーダ／ライタ２０は、ＣＰＵ２８の指示に基づいて、クロック端子２３を通じてクロック信号を出力する。すると、ＩＣカード１０側では、これをクロック端子１３を通じて入力してＣＰＵ１１に出力する。それから、ＩＣカードリーダ／ライタ２０は、出力しているクロック信号に同期させて、データの読み出し要求や、ＩＣカード１０に書き込みたいデータを、ポート端子２２を通じて出力する。
【０００９】
すると、ＩＣカード１０側では、ＣＰＵ１１によって、半二重同期通信によって受信した上記要求やデータに基づいて、メモリ１７に格納されているユーザデータを読み出して、ＩＣカードリーダ／ライタ２０側へ出力したり、ＩＣカードリーダ／ライタ２０側から供給されるデータをメモリ１７へ書き込む。
【００１０】
図８，図９は、半二重同期通信に用いるデータのフォーマットを示す図である。図８にはデータ通信が正常に行われた時のフォーマット、図９にはデータ通信が正常に行われなかった時のフォーマットを示している。
【００１１】
図８に示すように、ＩＣカードリーダ／ライタ２０とＩＣカード１０との間では、データビットを送信することを報知するスタートビット（Ｓｔａｒｔ  Ｂｉｔ）、実質的に送受信されるデータであるデータビットＤ０〜Ｄ７及び正しくデータが転送されてきたかどうかを判断するパリティビット（Ｐａｒｉｔｙ  Ｂｉｔ）が送受信される。
【００１２】
また、図９に示すように、データ通信が正常に行われなかった時には、データを再送してもらうために、ＩＣカードリーダ／ライタ２０とＩＣカード１０との間でデータ再送要求信号が送受信される。なお、図８，図９においては、各周期Ｔ０等にはクロック信号がたとえば５１２パルスあり、また各データは、ＶＤＤレベル又はＧＮＤレベルで送受信される。
【００１３】
さらに、ＩＣカードリーダ／ライタ２０及びＩＣカード１０は、データを送信するアウトプットモード又はデータを受信するインプットモードの状態となるが、半二重でデータ通信を行うため双方がアウトプットモードとならないように、ＣＰＵ１１等によって制御されている。
【００１４】
つぎに、たとえばＩＣカードリーダ／ライタ２０からＩＣカード１０に対して、データが正常に送信された時のＩＣカードリーダ／ライタ２０及びＩＣカード１０の動作について説明する。
【００１５】
図８に示すように、データの送信側であるＩＣカードリーダ／ライタ２０は、周期Ｔ０〜Ｔ９ではアウトプットモード、周期Ｔ１０及びＴ１１ではインプットモードとなるようにＣＰＵ２８によって制御されている。具体的には、
（１）Ｔ０の先頭でスタートビットを送信する。
（２）Ｔ１〜Ｔ８の各々でデータビットＤ０〜Ｄ７を送信する。
（３）Ｔ９でデータビットの応じて定められる「０」又は「１」を格納したパリティビットを送信する。
（４）Ｔ１０，Ｔ１１のタイミングでデータ再送要求信号が送信されたときにこれを受信できるようにする。
【００１６】
データの受信側であるＩＣカード１０は、周期Ｔ０〜Ｔ１１のすべてにおいて、インプットモードとなるようにＣＰＵ１１によって制御されている。具体的には、
（１）Ｔ０でスタートビットを受信する。
（２）Ｔ１〜Ｔ８でデータビットを受信する。
（３）Ｔ９でパリティビットを受信する。
（４）Ｔ１０，Ｔ１１で受信したパリティビットを参照して、パリティチェックを行う。なお、ここではエラーが生じていないため、データの再送要求信号は送信されず、データビットＤ０〜Ｄ７内の情報がメモリ１７に格納される。
【００１７】
したがって、Ｔ１０，Ｔ１１のタイミングでは、データの送信側であるＩＣカードリーダ／ライタ２０も、データの受信側であるＩＣカード１０も、インプットモードとなり、ポート端子１２，２２は、カードリーダ／ライタ２０側のプルアップ抵抗２７によりＶＤＤレベルに固定される。
【００１８】
一方、ＩＣカードリーダ／ライタ２０からＩＣカード１０に対して、データが正常に送信されなかった時には、図９に示すように、データの送信側であるＩＣカードリーダ／ライタ２０は、周期Ｔ０〜Ｔ９ではアウトプットモード、周期Ｔ１０〜Ｔ１２ではインプットモードとなるようにＣＰＵ２８によって制御されている。具体的には、
（１）Ｔ０でスタートビットを送信する。
（２）Ｔ１〜Ｔ８でデータビットを送信する。
（３）Ｔ９でパリティビットを送信する。
（４）Ｔ１０の一部及びＴ１１で送信されたデータ再送要求信号が受信される。
【００１９】
データの受信側であるＩＣカード１０は、周期Ｔ０〜Ｔ１０の途中まで及びＴ１２でインプットモード、周期Ｔ１０の途中及びＴ１１ではアウトプットモードとなるようにＣＰＵ１１によって制御されている。具体的には、
（１）Ｔ０でスタートビットを受信する。
（２）Ｔ１〜Ｔ８でデータビットを受信する。
（３）Ｔ９でパリティビットが受信される。
（４）Ｔ１０を含むタイミングでパリティビットを参照することによってパリティチェックを行う。
ここではエラーが生じているため、データ再送要求信号がＩＣカードリーダ／ライタ２０へ返信される。なお、ＩＣカードリーダ／ライタ２０では、この信号を受信すると、ＩＣカード１０に対してデータを再送する。
【００２０】
したがって、Ｔ１０の一部，Ｔ１１を除くタイミングではデータの送信側であるＩＣカードリーダ／ライタ２０も、データの受信側であるＩＣカード１０も、インプットモードであり、ポート端子１２，２２は、カードリーダ／ライタ２０側のプルアップ抵抗２７によりＶＤＤレベルに固定される。
【００２１】
以上のようなプロトコルを用いて、ＩＣカード１０とＩＣカードリーダ／ライタ２０との間でデータ通信を行っている。
【００２２】
【発明が解決しようとする課題】
しかし、このようなデータ通信は、たとえば９６００ｂｐｓでデータ通信を行う場合には向いているが、ＪＡＶＡカードのように、たとえば１２２８８００ｂｐｓのように高速でデータ通信を行う必要がある場合には、データの遅延速度を考慮すると不向きである。
【００２３】
図１０は、図８に示したフォーマットを用いてパリティービットが「１」でデータ再送要求信号の送受信がされず、且つたとえば１２２８８００ｂｐｓでデータ通信するときの様子を示す図である。図１１（ｂ）は、図８に示したフォーマットを用いてパリティービットが「０」でデータ再送要求信号の送受信がされず、且つたとえば１２２８８００ｂｐｓの速度でデータ通信するときの様子を示す図である。図１１（ａ）は、図８に示したフォーマットを用いてパリティービットが「０」でデータ再送要求信号の送受信がされず、且つたとえば９６００ｂｐｓでデータ通信するときの様子を示す図である。
【００２４】
なお、図１０，図１１（ａ）におけるデータの転送レート、すなわち各Ｔ０〜Ｔ１２の一周期はたとえば１０３μｓとしており、上記のようにクロック信号が５１２パルスある。図１１（ｂ）における各Ｔ０〜Ｔ１２の一周期はたとえば８１０ｎＳとしており、クロック信号が４パルスある。
【００２５】
図１０に示すように、パリティービットが「１」の場合には、Ｔ９〜Ｔ１１の期間ではデータがＶDDレベルで送信され、図１１（ａ）に示す場合と異なり格別問題は生じない。なお、パリティービットが「１」であれば、たとえば９６００ｂｐｓの速度でデータ通信する場合も同様に、Ｔ９〜Ｔ１１の期間ではデータがＶDDレベルで送信され、格別問題は生じない。以下に説明するように、データの遅延時間によってＶDDレベルになるまでの立ち上がりになまりが生じるという事態がないからである。図１１に示すように、Ｔ１０のタイミングでデータはポート端子２２がプルアップ抵抗２７を介してＶDDレベルで送信されるが、そのときに、立ち上がりになまりが生じる。しかし、送信側でデータを実際にインプットするまでにＶDDレベルとなるため、エラー信号の有無を正確に検出することができる。
【００２６】
一方、図１１（ｂ）に示すように、高速でデータ通信を行ったときには、Ｔ１０のみならず、Ｔ１１でも十分にＶＤＤレベルとならない場合がある。これでは、送信側でデータを実際にインプットするまでに完全にＶＤＤレベルまで到達しないため、エラー信号の有無を正確に検出することができない。
【００２７】
図１２，図１３は、図９に示す場合、すなわちパリティビットが「１」でデータ再送要求信号が送信されたときの様子を示す図である。図１２には低速（たとえば９６００ｂｐｓ）でデータ通信が行われた時の様子を示している。図１３には高速（たとえば１２２８８００ｂｐｓ）でデータ通信が行われた時の様子を示している。なお、図１２，図１３におけるデータ転送レートは、図１１（ａ），図１１（ｂ）と同じである。
【００２８】
図１２，図１３のいずれにおいても、Ｔ１２のタイミングでＶＤＤレベルへ向けて立ち上がる。図１２の場合には、Ｔ１２においてＶＤＤレベルになる。一方、図１３の場合には、Ｔ１２においてＶＤＤレベルにならない。そのため、次の通信のスタートビットの立ち下がりエッジが十分に形成されない。
【００２９】
なまりの大部分はプルアップ抵抗２７の抵抗値などによって生じる。プルアップ抵抗２７の抵抗値は、ＩＣカード１０がＩＣカードリーダ／ライタ２０に頻繁に抜き差しされることによって増加することがある。また、ＩＣカード１０上の各端子１２〜１６を手でさわるなどしても抵抗は増加する。また、ＩＣカードリーダ／ライタ２０の個体差によっても抵抗値は異なっているため、このようななまりを除去することは困難である。
【００３０】
なまりによる遅延時間ｔＷは、配線などの容量をＣ、プルアップ抵抗２７等の抵抗値をＲとしたときに、以下に示すように、自然対数を用いた数式で表すことができる。
【００３１】
ｔＷ＝−Ｌｎ｛（ＶＤＤ−Ｖｔｈ）／ＶＤＤ｝×Ｃ×Ｒ    （Ｖｔｈ＝０．７×ＶＤＤ）
ここで、Ｃ：３０ｐＦ（ＩＳＯ７８１６の推奨値）、Ｒ：２０ＫΩ（ＩＳＯ７８１６の推奨値）、ＶＤＤ：５．５Ｖとすると、
ｔＷ＝７２０ｎＳ
となる。このとき、図１４に示すように、転送レートは１０３μｓとなり、１０３μｓのうち、７２０ｎＳの遅延時間はさほど問題とならない。
【００３２】
しかし、ＩＣカードを４．９１ＭＨｚ，１２２８８００ｂｐｓで使用する場合には、図１５に示すように、１ビットの転送レートは８１０ｎＳとなり、このうち７２０ｎＳの遅延時間が生じた場合には、前述したようにたとえばデータ再送要求信号の検出の誤りが生じることになる。
【００３３】
さらに、ＩＣカードリーダ／ライタ２０の個体差やカードを抜き差ししたことによって抵抗値Ｒが倍増した場合には、
ｔＷ＝１．４４μＳ
となり、最高転送速度は６１４４００ｂｐｓに下がってしまう。
【００３４】
そのため、ＪＡＶＡカードのように高速でデータ通信を行う必要があるものとの間でデータ通信を行うためには、ＩＣカードリーダ／ライタを他のＩＣカード用とは別に用意する必要があった。しかし、２台のＩＣカードリーダ／ライタを常備しておくのは、無駄が多く、既存のＩＣカードリーダ／ライタを用いてＪＡＶＡカード等との間でデータ通信を行えるようにすることが望まれていた。
【００３５】
そこで、本発明は、既存のＩＣカードリーダ／ライタを用いて高速でデータ通信を行えるようにすることを課題とする。
【００３６】
【課題を解決するための手段】
上記課題を解決するために、本発明は、ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムにおいて、前記ＩＣカードは、データを受信する場合に、データの受信に誤りがないことが検出された時には、前記信号線のレベルを所定時間ハイレベルとし、且つ、データの受信に誤りがあることが検出された時には、データ再送要求信号を送信した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とする。
【００３７】
また、本発明は、ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムにおいて、前記ＩＣカードは、データを送信する場合に、パリティビットの送信後に前記信号線のレベルを所定時間ハイレベルとし、且つ、データの送信が正常に完了した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とする。
【００３８】
更に、本発明は、ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムに用いられるＩＣカードにおいて、前記カードリーダライタからデータを受信する場合に、データの受信に誤りがないことが検出された時には、前記信号線のレベルを所定時間ハイレベルとし、且つ、データの受信に誤りがあることが検出された時には、データ再送要求信号を送信した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とする。
【００３９】
また、本発明は、ＩＣカードとカードリーダライタとの間で信号線を通してデータの書き込み又は読み出しのためにデータを送受信する際に、データ送信側がデータの内容に基づくパリティをデータと共に信号線を通して送信し、データ受信側が受信データの内容及びパリティに基づいてデータの受信に誤りがあるかをどうかを検出し、誤りがあった時にデータを再送するように要求するデータ再送要求信号を送信側に返信するカードシステムに用いられるＩＣカードにおいて、前記カードリーダライタにデータを送信する場合に、パリティビットの送信後に前記信号線のレベルを所定時間ハイレベルとし、且つ、データの送信が正常に完了した後に、前記信号線のレベルを所定時間ハイレベルとすることを特徴とする。
【００４０】
また、本発明のカードリーダライタは、上記ＩＣカードにデータの書き込み又は読み出しのためにデータを送受信することを特徴とする。
【００４１】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して説明する。
【００４２】
図１は、本発明の実施形態のＩＣカード１０及びＩＣカード１０内の情報を読み出す又はＩＣカード１０に情報を記録するＩＣカードリーダ／ライタ２０を示す図である。ＩＣカードリーダ／ライタ２０は、各々データの入出力を行うポート端子（ＰＯＲＴ）２２と、データの入出力のタイミングを計るクロック信号を出力するクロック端子（ＣＬＯＣＫ）２３と、ＩＣカード１０内のＣＰＵ１１の駆動を開始するためのリセット信号を出力するリセット端子（ＲＥＳＥＴ）２４と、ＩＣカード１０内のＣＰＵ１１を駆動するための電力を供給する電源端子（ＶDD）２５及びグランド端子（ＧＮＤ）２６とを備えている。
【００４３】
また、ＩＣカードリーダ／ライタ２０は、各端子２２〜２６に出力する各種信号を制御するＣＰＵ２８と、ＣＰＵ２８を駆動するための電源２１と、電源２１とポート端子２２との間に設けられたプルアップ抵抗２７とを有している。さらに、ＩＣカード１０は、ＩＣカードリーダ／ライタ２０の各端子２２〜２６に対応する端子１２〜２６を備えており、各信号の入出力又は各信号を入力する。また、ＩＣカード１０は、半二重同期通信を行うためのプログラムやユーザデータを格納するメモリ１７と、メモリ１７内に格納されているプログラムなどを実行するためのＣＰＵ１１とを有している。
【００４４】
なお、本実施形態では、データ通信で使用するフォーマットを、図１１，図１２で説明したものとして、以下説明する。
【００４５】
図２は、パリティービットが「０」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがないときの様子を示す図である。図３は、パリティービットが「１」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがあるときの様子を示す図である。なお、図２，図３では、ＩＣカード１０をデータの受信側、ＩＣカードリーダ／ライタ２０をデータの送信側としている。
【００４６】
図２に示すようなタイミングでレベル補正を行うと、データの送信側でデータ再送要求信号の受信の有無を正しく検出できるようになる。また、図３に示すようなタイミングでレベル補正を行うと、次の通信のスタートビットの立ち下がりエッジを形成できるようになる。
【００４７】
まず、図２の動作について図４（ｂ）に示すフローチャートを用いて説明する。データの受信側であるＩＣカード１０では、スタートビットを受信したかどうかを判定する（ステップＳ１１）。スタートビットを受信したと判定されると、ステップＳ１２へ移行し、そうでなければステップＳ１１を繰り返す。ステップＳ１２では、８ビット分のデータを受信したかどうか判定される。８ビット分のデータを受信したと判定されると、ステップＳ１３へ移行し、そうでなければステップＳ１２を繰り返す。
【００４８】
ステップＳ１３では、パリティビットを受信する。そして、受信したパリティビットに基づいてパリティチェックを行う（ステップＳ１４）。ここでは、データにエラーがないので（ステップ１５）、クロック信号に従ってＴ１０のたとえば３クロック目でアウトプットモードに切り替え、さらにデータをＶＤＤレベルとして次のデータの送信を要求するために、ステップＳ１６ではＣＰＵ１１からＣＰＵ２８までの信号線のレベルをたとえばＶＤＤレベルになるように補正する（図２の楕円部分）。
【００４９】
こうして、Ｔ１０内でＶＤＤレベルになるようにし、この結果、ＩＣカードリーダ／ライタ２０で実際にデータをインプットするときに、ＶＤＤレベルとなるので、データ再送要求がされなかった旨を検出することができる。
【００５０】
また、Ｔ１０の３クロック目でアウトプットモードに切り替えているが、理論的には、Ｔ１１前に少なくとも１クロック分アウトプットモードに切り替えて、ＣＰＵ１１からＣＰＵ２８までの信号線のレベルをたとえばＶＤＤレベルになるように補正すればよい。しかし、たとえばデータの送信側であるＩＣカードリーダ／ライタ２０において、動作に誤差が生じてＴ１１の１クロック目より前でデータをインプットするような場合も想定される。
【００５１】
この場合には、Ｔ１０のたとえば４クロック目でアウトプットモードに切り替えても、正確にデータ再送要求信号の受信の有無を検出することができない。そこで、ここではたとえば、Ｔ１０の３クロック目でアウトプットモードとなるようにしている。
【００５２】
さらに、図２では、図５に示すように、１クロック分アウトプットモードとしながら、ＣＰＵ１１からＣＰＵ２８までの信号線のレベルをたとえばＶＤＤレベルになるように補正するようにしているが、たとえば２クロック分アウトプットモードとしながら、信号線のレベルを補正するようにしてもよい。
【００５３】
なお、図２に示すようにデータを送受信するように制御を行っても、ＩＣカード１０及びＩＣカードリーダ／ライタ２０の双方が同時にアウトプットモードとならないため、半二重には反しない。
【００５４】
つぎに、図３の動作について図４（ｂ）を用いて説明する。ここでも、図２における動作と同様に、ステップＳ１１〜ステップＳ１４が実行される。そして、ステップＳ１５において、データの送信にエラーがあると確認されたときには、ステップＳ１７に移行して、たとえばＴ１０の２クロック目からＴ１１の４クロック目までの間でデータ再送要求信号が送信される。それから、たとえばＴ１２の１クロック目でＣＰＵ１１からＣＰＵ２８までの信号線のレベルをたとえばＶＤＤレベルになるように補正される（図３の楕円部分）。
【００５５】
図６は、図１０に示したフォーマットを用いてパリティービットが「１」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがないときの様子を示す図である。図７は、図９に示したフォーマットを用いてパリティービットが「１」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがあるときの様子を示す図である。なお、図６，図７では、ＩＣカード１０をデータの送信側、ＩＣカードリーダ／ライタ２０をデータの受信側としている。
【００５６】
図６，図７の動作について図４（ａ）を用いて説明する。図６，図７に示すように、データの送信側であるＩＣカード１０では、スタートビットを送信する（ステップＳ１）。つづいて、１ビット分のデータを送信する（ステップＳ２）。それから、８ビット分のデータを送信したかどうかの判定がされる（ステップＳ３）。そして、８ビット分のデータを送信したと判定されたときには、ステップＳ４へ移行し、そうでなければステップＳ２に戻る。
【００５７】
ステップＳ４では、パリティビットを送信する。そして、パリティビットを送信した後にも、１クロック分（Ｔ１０の１クロック目）アウトプットモードとして、さらにＣＰＵ１１からＣＰＵ２８までの信号線のレベルをたとえばＶＤＤレベルになるように補正して（ステップＳ５）、ＶＤＤレベルを維持する。それからＴ１０の２クロック目でインプットモードに切り替える。
【００５８】
つづいて、データにエラーがあるかどうかを判定する（ステップＳ６）。そしてエラーがあると判定されればステップＳ１に戻り、エラーがないと判定されれば、Ｔ１１のたとえば４クロック目で、アウトプットモードに移行して、再度信号線のレベルを補正することによって（ステップＳ７）、ＶＤＤレベルとする。なお、データにエラーがあれば、図７に示すようにデータ再送要求信号が送信される。
【００５９】
データの送信側であるＩＣカード１０は、こうして、データ送信のエラーの有無に拘わらず、信号線のレベルを２回補正することによって、Ｔ１０内及びＴ１１内でデータをＶＤＤレベルとすることによって、次の通信のスタートビットの立ち下がりエッジを作れるようにしている。なお、Ｔ１０内で信号線のレベルを補正するようにしているのは、仮にパリティビットが「０」であったときに、Ｔ１１の１クロック目までにＶＤＤレベルにする趣旨であり、図４（ｂ）のステップＳ１６における補正と同じ目的で行っている。
【００６０】
【発明の効果】
以上説明したように本発明によれば、データ再送要求信号の受信の有無を正しく検出できると共に、次の通信のスタートビットの立ち上がりエッジを形成することができる。従って、既存のＩＣカードリーダライタを用いて高速でデータ通信を行うことができる。
【図面の簡単な説明】
【図１】ＩＣカード及びＩＣカード内の情報を読み出す又はＩＣカードに情報を記録するＩＣカードリーダ／ライタを示す図である。
【図２】パリティービットが「０」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがないときの様子を示す図である。
【図３】パリティービットが「１」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがあるときの様子を示す図である。
【図４】図２，図３，図５，図６の動作を示すフローチャートである。
【図５】２クロック分アウトプットモードとしながら、ＣＰＵから電源までの信号線のレベルを補正する様子を示す図である。
【図６】パリティービットが「１」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがないときの様子を示す図である。
【図７】パリティービットが「１」であるデータを高速（たとえば１２２８８００ｂｐｓ）で通信し、結果的にデータの送信にエラーがあるときの様子を示す図である。
【図８】データ通信が正常に行われた時の半二重同期通信に用いるデータのフォーマットを示す図である。
【図９】データ通信が正常に行われなかった時の半二重同期通信に用いるデータのフォーマットを示す図である。
【図１０】パリティービットが「１」でデータ再送要求信号の送受信がされず、且つたとえば１２２８８００ｂｐｓでデータ通信するときの様子を示す図である。
【図１１】パリティービットが「０」でデータ再送要求信号の送受信がされないときの様子を示す図である。
【図１２】低速（たとえば９６００ｂｐｓ）且つパリティビットが「１」でデータ再送要求信号が送信されたときの様子を示す図である。
【図１３】高速（たとえば１２２８８００ｂｐｓ）且つパリティビットが「１」でデータ再送要求信号が送信されたときの様子を示す図である。
【図１４】低速時のデータの転送レート及び遅延時間を示す図である。
【図１５】高速時のデータの転送レート及び遅延時間を示す図である。
【符号の説明】
１０  ＩＣカード
１１  ＣＰＵ
１２，２２  ポート端子
１３，２３  クロック端子
１４，２４  リセット端子
１５，２５  電源端子
１６，２６  グランド端子
１７  メモリ
２０  ＩＣカードリーダ／ライタ
２１  電源
２７  プルアップ抵抗
【図１】
0003566630.tif 000002
【図２】
0003566630.tif 000003
【図３】
0003566630.tif 000004
【図４】
0003566630.tif 000005
【図５】
0003566630.tif 000006
【図６】
0003566630.tif 000007
【図７】
0003566630.tif 000008
【図８】
0003566630.tif 000009
【図９】
0003566630.tif 000010
【図１０】
0003566630.tif 000011
【図１１】
0003566630.tif 000012
【図１２】
0003566630.tif 000013
【図１３】
0003566630.tif 000014
【図１４】
0003566630.tif 000015
【図１５】
0003566630.tif 000016