(57)【要約】【課題】  異なるクロック速度で動作する機能的ブロック（バーチャルコンポーネント）の間にインターフェースを具備するスマートカード用のエミュレーターを提供する。【解決手段】  スマートカード装置用のエミュレーター及び関連方法は、スマートカード装置のための機能的ブロックとして且つ異なるクロックドメインで動作可能な少なくとも２個のバーチャルコンポーネントを有している。機能的バッファリングブロックは、機能的ブロックと通信を行うため及び機能的ブロックの間でバッファリングを行い且つエミュレーションを可能とすべく動作可能である。【選択図】      図１
2004362579.tif 000002
【特許請求の範囲】
【請求項１】
スマートカード装置用のエミュレーターにおいて、
異なるクロックドメインにおいて動作可能でありスマートカード装置の機能的ブロックとしての少なくとも２個のバーチャルコンポーネント、
前記機能的ブロックと通信を行い且つ前記機能的ブロックの間でバッファリングを行い且つエミュレーションを可能とすべく動作可能な機能的バッファリングブロック、
を有していることを特徴とするエミュレーター。
【請求項２】
請求項１において、前記機能的ブロックの各々が、更に、互いに通信を行うための非同期的インターフェースを有していることを特徴とするエミュレーター。
【請求項３】
請求項１において、前記機能的ブロックの各々が、更に、互いに及び／又は前記機能的バッファリングブロックと通信を行うためのバーチャルコンポーネントインターフェースを有していることを特徴とするエミュレーター。
【請求項４】
請求項１において、前記機能的バッファリングブロックが、更に、前記機能的ブロックと通信を行うためのバーチャルコンポーネントインターフェースを有していることを特徴とするエミュレーター。
【請求項５】
請求項１において、前記機能的ブロックが、前記機能的バッファリングブロックと通信を行うための非同期的インターフェースを有していることを特徴とするエミュレーター。
【請求項６】
請求項１において、前記機能的バッファリングブロックが、更に、機能的ブロックの間のバッファリングを管理するためのローカル論理を有していることを特徴とするエミュレーター。
【請求項７】
請求項１において、前記機能的バッファリングブロックがコンパイル・タイムフラッグによるバッファリングのために排除されるか又は包含されることを特徴とするエミュレーター。
【請求項８】
請求項１において、第一機能的ブロックがＵＳＢデバイスコア（ＵＤＣ）を有しており、且つそれと通信する第二機能的ブロックがカスタム論理ブロック及びバスインターフェースを有していることを特徴とするエミュレーター。
【請求項９】
請求項８において、更に、高速ＵＤＣ動作を同期させるための同期ブロックを有していることを特徴とするエミュレーター。
【請求項１０】
請求項１において、前記機能的バッファリングブロックが、更に、複数個の制御レジスタを有していることを特徴とするエミュレーター。
【請求項１１】
スマートカード装置用のエミュレーターにおいて、
異なるクロックドメインにおいて動作可能であり且つ互いに通信するために非同期的インターフェースを具備しておりスマートカード装置の機能的ブロックとしての少なくとも２個のバーチャルコンポーネント、
前記機能的ブロックと通信を行い且つ前記機能的ブロックの間で選択的にバッファリングを行い且つエミュレーションを可能とすべく動作可能な機能的バッファリングブロック、
を有していることを特徴とするエミュレーター。
【請求項１２】
請求項１１において、前記機能的ブロックの各々が、更に、互いに及び／又は前記機能的バッファリングブロックと通信を行うためのバーチャルコンポーネントインターフェースを有していることを特徴とするエミュレーター。
【請求項１３】
請求項１１において、前記機能的バッファリングブロックが、更に、前記機能的ブロックと通信を行うためのバーチャルコンポーネントインターフェースを有していることを特徴とするエミュレーター。
【請求項１４】
請求項１１において、前記機能的バッファリングブロックが、更に、機能的ブロックの間のバッファリングを管理するためのローカル論理を有していることを特徴とするエミュレーター。
【請求項１５】
請求項１１において、前記機能的バッファリングブロックが、コンパイル・タイムフラッグによるバッファリングのために排除されるか又は包含されることを特徴とするエミュレーター。
【請求項１６】
請求項１１において、第一機能的ブロックがＵＳＢデバイスコア（ＵＤＣ）を有しており、且つそれと通信する第二機能的ブロックがカスタム論理ブロック及びバスインターフェースを有していることを特徴とするエミュレーター。
【請求項１７】
請求項１６において、更に、高速ＵＤＣ動作を同期させるための同期ブロックを有していることを特徴とするエミュレーター。
【請求項１８】
請求項１１において、前記機能的バッファリングブロックが、更に、複数個の制御レジスタを有していることを特徴とするエミュレーター。
【請求項１９】
スマートカード装置をエミュレートする方法において、２つの異なるクロックドメインの間で動作可能でありスマートカード装置の機能的ブロックとしてバーチャルコンポーネントの間でデータをバッファリングするステップを有していることを特徴とする方法。
【請求項２０】
請求項１９において、更に、前記機能的ブロックの間の非同期的インターフェースを介してバッファリングを行うステップを有していることを特徴とする方法。
【請求項２１】
請求項１９において、更に、バーチャルコンポーネントインターフェースを介してバッファリングを行うステップを有していることを特徴とする方法。
【請求項２２】
請求項１９において、更に、異なるクロックドメインにおいて動作可能な２個の機能的ブロックの間に付加された機能的バッファリングブロックを介してバッファリングを行うステップを有していることを特徴とする方法。
【請求項２３】
請求項２２において、更に、前記機能的バッファリングブロック内に包含されているローカル論理によるバッファリングを管理するステップを有していることを特徴とする方法。
【請求項２４】
請求項２２において、更に、コンパイル・タイムフラッグを使用して前記機能的バッファリングブロックの包含又は排除を管理するステップを有していることを特徴とする方法。
【請求項２５】
請求項１９において、更に、ＵＳＢデバイスコア（ＵＤＣ）としての第一機能的ブロック及びカスタム論理ブロック及びバスインターフェースとしての第二機能的ブロックの間でバッファリングするステップを有していることを特徴とする方法。
【請求項２６】
請求項２５において、更に、同期ブロックを使用してＵＤＣの高速動作を同期させるステップを有していることを特徴とする方法。
【請求項２７】
スマートカード装置をエミュレートする方法において、
異なるクロックドメインにおいて動作可能でありスマートカード装置の機能的ブロックとしてのバーチャルコンポーネントを用意し、
エミュレーションを可能とするために前記機能的ブロックの間でバッファリングする、
上記各ステップを有していることを特徴とする方法。
【請求項２８】
請求項２７において、更に、前記機能的ブロックの間で非同期的インターフェースを介してバッファリングするステップを有していることを特徴とする方法。
【請求項２９】
請求項２７において、更に、バーチャルコンポーネントインターフェースを介してバッファリングするステップを有していることを特徴とする方法。
【請求項３０】
請求項２７において、更に、異なるクロックドメインにおいて動作可能な機能的ブロックの間に付加した機能的バッファリングブロックを介してバッファリングするステップを有していることを特徴とする方法。
【請求項３１】
請求項３０において、更に、前記機能的バッファリングブロック内に包含されるローカル論理によるバッファリングを管理するステップを有していることを特徴とする方法。
【請求項３２】
請求項３０において、更に、コンパイル・タイムフラッグを使用して機能的バッファリングブロックの包含又は排除を管理するステップを有していることを特徴とする方法。
【請求項３３】
請求項３０において、更に、ＵＳＢデバイスコア（ＵＤＣ）としての第一機能的ブロックとカスタム論理ブロック及びバスインターフェースとしての第二機能的ブロックとの間でバッファリングするステップを有していることを特徴とする方法。
【請求項３４】
請求項３３において、更に、同期ブロックを使用してＵＤＣの高速動作を同期させるステップを有していることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理及び格納の分野に関するものであって、更に詳細には、スマートカードエミュレーター及び関連方法に関するものである。
【背景技術】
【０００２】
スマートカードは、セキュリティ及び個人の識別適用例に対して益々ポピュラーなものとなっている。例えば、スマートカードは、現在、医学的な記録、バンキング情報、及び同様のデータ条件等のセンシティブなデータ即ち機微データを格納するために使用されている。多分、その最も一般的な形態においては、スマートカードは、寸法、形状、及び厚さにおいてクレジットカードに類似したカード本体を具備しており、且つ、例えば、プラスチック等の同様の物質から構成することが可能である。標準的なクレジットカードが行っているようにセンシティブな情報（例えば、口座番号、ユーザの識別等）を格納するために磁気ストライプを設ける代わりに、スマートカードは、通常、集積回路（ＩＣ）を包含している。このＩＣは、センシティブなデータを格納するための非揮発性メモリを包含するだけでなく、それは、又、このデータを処理し且つ例えばカード読取器を介してホスト装置と通信を行うためにマイクロプロセッサを包含している場合がある。スマートカードは磁気ストライプカードよりもより多くの情報を格納することが可能であるばかりか、より大きな機能性を有している。
【０００３】
スマートカードのような装置の動作及び通信を標準化するために種々のプロトコルが出現している。これらのうちの最も速いもののうちの１つは、国際標準化機構（ＩＳＯ）によって開発されており、且つＩＳＯ７８１６−Ｘプロトコルとして知られている。特に、このプロトコルは、例えば、ＩＳＯ文書ＩＳＯ７８１６−１（物理的特性）、ＩＳＯ７８１６−２（寸法及びコンタクトの位置）、ＩＳＯ７８１６−３（電子的信号及び送信プロトコル）、ＩＳＯ７８１６−１０（電子的信号及び同期的カード用のリセットに対する回答）、及びＩＳＯ７８１６−１２（ＵＳＢインターフェース）において記載されており、それらの全ては、引用によりその全体を本明細書に取込む。
【０００４】
更に、ユニバーサルシリアルバス（ＵＳＢ）アーキテクチャが益々評判になることに応答し、ＵＳＢプロトコルに従って動作するより多くの数のスマートカードが継続して開発されている。このプロトコルはＵＳＢインプリメンターズフォーラムによって発行されているユニバーサルシリアルバス仕様、２．０改定、２０００年４月２７日に記載されており、その全体を引用により本明細書に取込む。ＵＳＢアーキテクチャは、例えば、コンピュータ外部の装置に対する標準の「プラグアンドプレイ」インターフェースを与えるので特に有益的である。外部周辺装置を比較的迅速且つ容易にインストールすることが可能であり且つコンピュータをリブート又はパワーダウンすることの必要性なしに、例えばコンピュータ等のホスト装置から取り外すことが可能である。
【０００５】
複雑なコンピュータシステム及び装置に対する殆どの生産開発サイクルは、最終的な製品が使用可能となる前にその製品の機能的な等価物を必要とする。この機能的等価物は、典型的に、エミュレーター、又はハードウエアエミュレーター（ＨＷＥ）と呼称される。ＨＷＥは、プロダクトエンジニアがその製品の物理的な回路及び／又はコンポーネントを仕上げ且つテストする間に、その製品に対するアプリケーション開発者がその装置用のソフトウエアアプリケーションを開発し且つデバッグすることを可能とする。
【０００６】
スマートカードに関しては、ＨＷＥエミュレーターは、最終的なスマートカード集積回路内に究極的に埋めこまれることとなる新たなアプリケーションを開発し、テストし、且つデバッグするために一般的に使用される。ＨＷＥは、最終製品（例えば、スマートカード集積回路）の実世界の機能性を可及的に密接して一致する機能性を提供すべきである。このエミュレーションは、又、例えばデュアルＩＳＯ／ＵＳＢスマートカードのような複雑なデュアルモードスマートカードに対しても適用可能であるべきである。このようなデュアルモードスマートカードの１つは、本願出願人に譲渡されているＦｒｕｈａｕｆ  ｅｔ  ａｌ．の米国特許第６，４３９，４６４号に記載されており、その記載内容全体を本明細書に取込む。
【０００７】
プロトタイプ製作又は生産の前にスマートカード（又はその他の）チップ設計をシミュレートするために電子的設計自動化（ＥＤＡ）ソフトウエアツールがしばしば使用される。設計者は、しばしば、機能的なコンポーネントを画定し且つそれらをより小さなコンポーネントへ分解させるためにハードウエア記述言語（ＨＤＬ）、例えばベリログ（Ｖｅｒｉｒｏｇ）（商標）又はＶＨＤＬを使用する。ソフトウエアルーチンは回路レイアウト内の特定の座標位置における論理セル内に配置され且つ経路付けされる。
【０００８】
バーチャルコンポーネント（ＶＣ）ブロック、バーチャルコンポーネント、又はＩＰブロックとも呼ばれる機能的ブロックは、しばしば、予備設計回路機能として設計者により使用される。多くの場合において、これらの機能的ブロックはソフトウエア形態におけるプレハードン即ち固化前又はセミハードン即ち準固化させた回路設計であり、それらは再使用されるか又はより大型の回路設計内へリサイクルされる。バーチャルコンポーネントブロックの使用は全体的な回路設計時間を減少させ且つ最終的な設計が市場に到達することが可能な速度を増加させる。バーチャルコンポーネントとしてのこれらの機能的ブロックは、又、論理的及び機能的な観点から予めテストし且つ検証することが可能である。
【０００９】
エミュレーターは、しばしば、機能的ブロック及び「システム・オン・チップ」（ＳｏＣ）ソリューションに対するバーチャルソケットインターフェース（ＶＳＩ）を具備するベースラインアーキテクチャを使用する。幾つかの機能的ブロックが、特に、特定のＩＣと共に使用するために設計されており、且つその他の機能的ブロックは、その他のＩＣと共に使用するために設計されており且つ内部及び／又は外部ソースから得られる。
【００１０】
バーチャルソケットインターフェース（ＶＳＩ）アライアンスアーキテクチャドキュメントバージョン１．０は、シリコンの単一片上における複数個のブロックの効率的且つ正確な集積化、検証及びテストを可能とするために機能的ブロックを作成するためのハードウエア及びソフトウエアインターフェース、フォーマット及び設計プラクティスを特定しており、尚その記載内容全体を引用により本明細書に取込む。ＶＳＩ標準は、コンポーネントを基礎としたソリューションを使用してＩＣ設計を行うことを可能とするためにＨＤＬ記述と共に動作する。機能的ブロックとしてのバーチャルコンポーネントは設計環境において使用され、且つより特定的には、バーチャルソケット設計環境において使用される。典型的に、バーチャルコンポーネントはソフト、ファーム又はハードとすることが可能である。通常、バーチャルコンポーネントは、集積化及び検証を簡単化させるために予め定義した組の特性を有する標準フォーマットである出力を持った１組の仕様に対して設計された機能的ブロックである。
【００１１】
前述したように、好適なＵＳＢスマートカード装置（ＵＳＤ）に対して設計されたスマートカード集積回路は、最終的なシリコン製品となる充分前に機能的に等価な代表例に対する設計を必要とする。エミュレートしたバージョンは、必ずしも、最終的なシリコンと同一のクロックレートで動作するものではないことが予測される。然しながら、今日のエミュレーションツール及び環境の特性に起因して、それらのシリコン形態の僅かな一部においてのみ完全な製品をエミュレートすることが可能である。勿論、このことは、設計の特性及び複雑さ、及び設計をエミュレーターのリソース内に実現させるためのエミュレーションツールの能力に依存する。
【００１２】
例えば、ターゲットのＨＤＬ設計を実現するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）装置からなる大型のアレイを使用するエミュレーターは、支配的にその設計のデジタル部分において数百キロヘルツ（ＫＨｚ）において動作可能であるに過ぎない場合がある。アナログ部分は、通常、メインのエミュレーターに対する機能的に等価な「アタッチメント」即ち付属物として実現されねばならない。
【００１３】
カスタム設計されたエミュレーターパッケージの場合でも同様の問題をこうむる。有用であるために実世界の速度において外界に対するインターフェースが機能せねばならない場合には、このことは技術的な兆戦を提起する。トップレベルの機能的ブロック又はサブブロック又はバーチャルサブコンポーネントがエミュレートされねばならないが、又、それら自身のクロックドメインにおいて機能せねばならない場合に１つの欠点が発生する。これらのドメインは、典型的に、種々の理由によりエミュレーションにおいて広いマージンだけ分離されているが、このマージンは最終的なａｔ−ｓｐｅｅｄ即ち実効速度におけるシリコン製品において管理可能である。エミュレーションの目的のためには、このトップレベルの設計は動作しない。
【００１４】
通常、設計が修正されねばならず、そのことは、又、オリジナルの設計に忠実ではない設計をエミュレートすることの危険性を増加させる。従って、今の所２つの異なる設計が存在しており、即ち（１）最初の設計が製造へ移行し、且つ（２）２番目の設計がエミュレーターへ移行し、その結果、早期の開発作業のために重要な顧客へ送られる場合がある。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、異なるクロック速度において動作する機能的ブロック又はバーチャルコンポーネントの間のインターフェースを具備するスマートカード用のエミュレーターを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、バーチャルコンポーネント（機能的ブロック）として標準の既製の知的所有権を使用し且つ異なるクロックドメインにおいて動作する機能的ブロックを具備する設計におけるバーチャルコンポーネント（機能的ブロック）の間のバッファリングの実効的なトランスペアレントなウエッジを提供する。このことは、設計を修正することなしに達成され、エミュレーション環境においてそれが動作することを可能とする。同一の設計は、機能的サブブロックの各々がその設計仕様に従って動作する限り、その最終的なシリコン実現例においてその仕様に従って機能することが可能である。２個又はそれ以上の機能的サブブロックの間の非同期的な切れ目を取扱うことが可能である。
【００１７】
本発明は、バーチャルコンポーネントとして各トップレベルの機能的サブブロックに対して柔軟性があり且つロバスト即ち堅牢な非同期的インターフェースを付加し且つ、これら２個の機能的サブブロックの間に、ダイナミックバッファとして作用するバーチャルコンポーネントとして新たな機能的ブロックを導入する。それは、又、２個の非同期的インターフェースを有している。この機能的な「バッファリング」ブロックの包含又は排除は、メインの設計に対してその他の修正を必要とすることなしに、コンパイル・タイムフラッグによって管理することが可能である。
【００１８】
この機能的バッファリングブロックの設計内への包含は、エミュレーション環境が適切に機能することを可能とする。それは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は物理的なアダプターカードの形態で実現することが可能である。バーチャルコンポーネントインターフェース（ＶＣＩ）は、その柔軟性及び動作範囲のために機能的ブロックの間において使用することが可能である。エミュレーション環境において使用される場合には、機能的バッファリングブロックのローカル論理が、バッファ内容を管理し且つＵＳＢ装置ばかりではなくカスタム論理ブロックをも有する機能的ブロックとしてバーチャルコンポーネントの間の導管を与える。
【００１９】
本発明によれば、スマートカード用のエミュレーターは、スマートカード装置の機能的ブロックとして且つ異なるクロックドメインにおいて動作する少なくとも２個のバーチャルコンポーネントを包含している。機能的バッファリングブロックは、機能的ブロックと通信を行い且つ機能的ブロックの間でバッファリングを行い且つエミュレーションを可能とすべく動作可能である。機能的ブロックは、互いに及び／又は機能的バッファリングブロックと通信するための非同期的インターフェースを包含することが可能である。これらのインターフェースは、バーチャルコンポーネントインターフェースを包含することが可能である。
【００２０】
機能的バッファリングブロックは、機能的ブロックの間のバッファリングを管理するためのローカル論理を包含することが可能である。機能的バッファリングブロックは、コンパイル・タイムフラッグによりバッファリングのために排除するか又は包含させることが可能である。第一機能的ブロックはＵＳＢデバイスコア（ＵＤＣ）を包含することが可能であり且つそれと通信を行う第二機能的ブロックはカスタム論理ブロック及びバスインターフェースを包含することが可能である。同期ブロックは高速ＵＤＣ動作を同期させることが可能である。機能的バッファリングブロックは、又、複数個の制御レジスタを包含することが可能である。
【００２１】
本発明の方法は、スマートカード装置のエミュレーションを可能とし且つスマートカード装置用の機能的ブロックとして且つ２つの異なるクロックドメインにおいて動作するバーチャルコンポーネントの間でデータをバッファリングするステップを有している。このバッファリングのステップは、機能的ブロックの間のバーチャルコンポーネントインターフェースを包含する非同期的インターフェースを介してバッファリングを行うステップを包含することが可能である。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の好適実施例を示した添付の図面を参照して本発明をより詳細に説明する。然しながら、本発明は、多くの異なる形態で実現することが可能であり且つ以下に記載する実施例に制限されるものとして解釈されるべきではない。そうではなく、これらの実施例は、本開示が完全なものであり、且つ当業者にとって本発明の範囲を明確にさせるために提供されるものである。尚、同様の参照番号は同様の構成要素を意味している。
【００２３】
本発明は、機能的ブロック又はサブブロックとしてのバーチャルコンポーネント等の標準の既製の知的所有権を使用し、且つ機能的ブロックが異なるクロックドメインにおいて機能する設計において２つの機能的ブロックの間のバッファリングのトランスペアレント即ち透明なウエッジ（ｗｅｄｇｅ）を与える。このことは、エミュレーション環境において動作することを可能とするために設計を修正することなしに達成される。この設計は、例えば、サブコンポーネント等の機能的ブロックの各々がその定義した仕様に従って、動作する限り、その最終的なシリコン実現例においてその仕様に従って機能することが可能である。２個又はそれ以上の機能的ブロック即ちバーチャルコンポーネントの間の非同期的な切れ目は、本発明により取扱うことが可能である。本発明に従って異なるエミュレーションツールを使用することが可能である。
【００２４】
エミュレーションツールは、又、各トップレベルの機能的ブロック即ちバーチャルコンポーネントに対する柔軟性があり且つロバスト即ち堅牢な非同期的インターフェースを提供する。これらのブロックの間において、新たな機能的バッファリングブロックがダイナミックバッファとして作用し且つ図３に示し且つ以下に説明するような２個の非同期的インターフェースを包含している。機能的バッファリングブロックは、メインの設計に対してその他の修正を必要とすることなしにコンパイル・タイムフラッグにより管理することが可能である。
【００２５】
図１及び２は本発明に基づいて使用すべく適合することが可能なスマートカードエミュレーションシステム２０を示している。このエミュレーションシステム２０は、前述したようなデュアルモードスマートカードシステムのエミュレーションと共に使用するために適合されている。図１及び２に示したエミュレーションシステム２０を説明した後に、本発明に基づく図３及び４に示した機能的ブロック及びバッファリングについて詳細に説明する。
【００２６】
図１に示したスマートカードエミュレーションシステム２０は、ホスト装置２１、該ホスト装置へ接続されているインターフェースコネクタ２３、スマートカード読取器を介してホスト装置と通信を行うためのマルチモードスマートカードエミュレーター２４を包含している。一般的には、ホスト装置２１は何等かのタイプのコンピュータであり、それはパソコン（ＰＣ）、ラップトップ、又はスマートカードエミュレーター２４について使用するためのテストを実施し又はアプリケーションを開発するためのその他の適宜の装置とすることが可能である。
【００２７】
インターフェースコネクタ２３は、スマートカードエミュレーター２４がエミュレートする所望のオペレーティングプロトコル又はモード（例えば、ＩＳＯ７８１６型カード読取器、ＵＳＢ型カード読取器等）と適合性のあるタイプのものである。説明の便宜上単一のインターフェースコネクタが例示されているが、スマートカードエミュレーター２４の動作モードの各々に対して複数個のコネクタ２３をホスト装置２１へ接続することが可能である。勿論、１つを超える動作モードにおいて動作する多目的コネクタを当業者によって理解されるように使用することも可能である。
【００２８】
更に、インターフェースコネクタ２３は、ホスト装置２１に関して遠隔的に位置させることが可能であるが、そうすることが必要なわけではない。即ち、幾つかの実施例においては、インターフェースコネクタ２３はホスト装置２１内に組込むことが可能であり、又は、当業者によって理解されるように、そのハウジングによって担持させることが可能である。更に、幾つかの実施例においては、インターフェースコネクタ２３は、スマートカード集積化チップ内に組込むことが可能であり、それは、当業者によって理解されるように、コネクタを、基本的に、パススルーコネクタへ還元させている。
【００２９】
エミュレーター２４は、例示的に、任意の所望の動作モードにおいて最終的なスマートカード製品（例えば、スマートカード集積回路）において究極的に実現されるべき種々のスマートカードアプリケーションを実施（即ち、エミュレート）するためのエミュレーション回路２５を包含している。例えば、スマートカードは、複数個の同時的な（且つ埋め込まれている）アプリケーション（例えば、ジャバアプレット）を管理することが可能な埋込型のオペレーティングシステムを有することが可能である。これらの埋込型アプリケーションは、ホスト側のアプリケーション（例えば、ユーザログイン及び認証アプリケーション、インターネットに基づくバンキングアプリケーション、オーディオ／ビデオ転送用のデジタル権限管理アプリケーション等）と共同して動作することが可能である。勿論、当業者により理解されるように、本発明に基づいてその他の多数のアプリケーションも使用することが可能である。
【００３０】
エミュレーター２４は、又、例示的に、インターフェースコネクタ２３へ接続されるべきスマートカードコネクタ２６を包含している。特に、例示したスマートカードコネクタ２６は、スマートカード本体２７、該スマートカード本体により担持されているコネクタモジュール２８、エミュレーション回路とインターフェースコネクタ２３との間の電気的接続を与えるためのコネクタモジュール上のコンタクト２９を包含している。
【００３１】
例示的な実施例においては、コネクタモジュール２８はスマートカードの形状係数に対するものである。カードの形状係数に加えて、幾つかの実施例においては、コネクタモジュール２８は当業者により理解されるように、ＳＩＭ即ち「トークン」型形状係数に対するものとすることが可能である。いずれの場合においても、同一のコネクタモジュール２８を、一般的なＩＳＯ及びＵＳＢ読取器タイプと接続するために使用することが可能である。例えば、８個のコンタクト２９を具備する標準のＩＳＯスマートカードコネクタモジュール２８を、以下に更に説明するように、エミュレーター２４をＵＳＢインターフェースコネクタと接続するために使用することも可能である。勿論、注意すべきことであるが、例えばＵＳＢタイプＡ（又はミニアチャタイプＡ）コネクタモジュール２８等のその他のコネクタ／コンタクトタイプも本発明に基づいて使用することが可能である。
【００３２】
エミュレーター２４は、又、例示的に、第一端部をエミュレーション回路２５へ接続した第一及び第二ケーブル組立体３０，３１、及び該ケーブル組立体の第二端部とスマートカードコネクタ２６との間に接続したインターフェース装置３２を包含している。該インターフェース装置は、スマートカード読取器２３の動作モードに基づいて、選択したケーブル組立体３０，３１をコンタクト２９のうちの所定のものへ電気的に選択的に接続させるためである。
【００３３】
特に、各ケーブル組立体３０，３１は、エミュレーション回路２５の夫々の動作モード期間中に信号通信のために使用される。即ち、エミュレーション回路２５が第一動作モードにおいて動作している場合に、それは第一ケーブル組立体３０を介してインターフェースコネクタ２３と通信を行い、且つそれが第二動作モードにある場合には、第二ケーブル組立体３１を介して通信を行い、このことについては以下に更に詳細に説明する。
【００３４】
ケーブル組立体３０，３１は、例示的に、ｌ及びｍ個の信号線を夫々包含しており、それらは、実現される動作モードに依存して同数（又は異なる数）とすることが可能である。更に、コンタクト２９の数ｎも信号線ｌ，ｍの数と異なるもの（又は同じ）とすることが可能である。即ち、幾つかの実施例においては、以下に更に詳細に説明するように、動作モードのうちの１つ又はそれ以上に対して必要とされるものよりもより多くのコンタクト２９が存在する場合がある。
【００３５】
インターフェース装置３２は、例示的に、インターフェースコネクタ２３の動作モードを検知するためにコンタクト２９へ接続しているモード検知回路３５を包含している。更に、インターフェース装置３２は、又、例示的に、検知された動作モードに基づいて、選択されたケーブル組立体３０，３１を該コンタクトのうちの所定のものへ選択的に且つ電気的に接続させるためにモード検知回路３５へ接続されているスイッチング回路３６を包含している。
【００３６】
従って、理解されるように、本発明のスマートカードエミュレーター２４の場合には、複数個のスマートカード動作モードを与えるために複数個のスマートカードコネクタ２６を使用することは必要ではない。何故ならば、インターフェース装置３２がインターフェースコネクタ２３の動作モードを検知し且つそれに基づいて適宜の信号スイッチングを実施するからである。従って、マルチモードのスマートカードエミュレーターの各ケーブル組立体に対して必要とされるような別個の「ポット」を回避することが可能である。
【００３７】
前述したことは、更に、図２に例示的に示したエミュレーター２４′の特定のデュアルモードＩＳＯ／ＵＳＤ実施例を参照して更に理解される。当業者により理解されるように、ＩＳＯ７８１６−２仕様は、インターフェースコネクタ２３とＩＳＯスマートカードとの間に最大で８個の接続Ｃ１−Ｃ８を必要とする。例示した例においては、接続Ｃ１−Ｃ８は、夫々、コンタクト２９ａ′−２９ｈ′に対応している。コンタクト２９ａ′（Ｃ１）は供給電圧ＶＣＣに割当てられ、コンタクト２９ｂ′（Ｃ２）はリセット信号ＲＳＴに割当てられ、コンタクト２９ｃ′（Ｃ３）はクロック信号ＣＬＫに割当てられ、コンタクト２９ｅ′（Ｃ５）はＧＮＤ基準電圧へ割当てられ、コンタクト２９ｆ′（Ｃ６）は可変供給電圧ＶＰＰへ割当てられ、且つコンタクト２９ｇ′（Ｃ７）はデータ入力／出力（Ｉ／Ｏ）へ割当てられる。
【００３８】
非同期的ＩＳＯ７８１６−１０アプリケーションにおいて、タイプ２動作条件下において、コンタクト２９ｄ′（Ｃ４）が機能コードＦＣＢへ割当てられ、且つコンタクト２９ｈ′（Ｃ８）は、その他の非同期アプリケーションに対して使用することも可能である。勿論、コンタクトの割当ては異なる実現例に対して異なるものとすることが可能であり、且つ各実現例に対して全てのコンタクト２９ａ′―２９ｈ′が必要とされるわけではない。例えば、クラスＢ動作条件下における非同期ＩＳＯスマートカードは、コンタクト２９ｆ′（Ｃ６）上の電圧ＶＰＰを必要とするものではなく、一方クラスＡ動作条件下における非同期スマートカードはそれを必要とする。更に、ある動作条件下における同期的スマートカードは、コンタクト２９ｈ′（Ｃ８）を、例えば、ヒューズ溶断能力に対して割当てることが可能である。
【００３９】
一方、ＵＳＢ動作は、通常、ホスト装置２１とエミュレーション回路２５′との間において４個の信号接続を必要とするに過ぎない。特に、ＵＳＢ仕様は、動作電圧Ｖｂｕｓ及び接地ＧＮＤに対し専用の線を必要とする。従って、ＵＳＢ動作モードにおける場合には、これらの信号は、例えば、夫々、ＩＳＯ供給電圧Ｖｃｃコンタクト２９ａ′（Ｃ１）及びＩＳＯ接地ＧＮＤコンタクト２９ｅ′（Ｃ５）へマッピングすることが可能である。同様に、ＵＳＢ仕様は、又、差動データ信号線Ｄ＋及びＤ−の使用を必要とし、そのことは、例えば、コンタクト２９ｄ′（Ｃ４）及び２９ｈ′（Ｃ８）へマッピングすることが可能である。コンタクト２９ｃ′（Ｃ３）、２９ｆ′（Ｃ６）、２９ｇ′（Ｃ７）は、例えば、ＵＳＢモード選択又はその他の機能のために使用することが可能である。勿論、当業者により理解されるように、その他のマッピングを使用することも可能である。
【００４０】
基本的なＵＳＢ動作の場合には、ＵＳＢケーブル組立体３０′は、Ｖｂｕｓ、ＧＮＤ、Ｄ＋及びＤ−信号線を必要とし、一方基本的なＩＳＯ動作は、ＩＳＯケーブル組立体３１′が、例示的に示したような、Ｖｃｃ、ＧＮＤ、ＲＳＴ、ＣＬＫ、Ｉ／Ｏ信号線を包含することを必要とする。勿論、与えられたアプリケーションに対して所望とされる場合に、上述したもの以外のコンタクトのいずれかに対する接続のための付加的な線を包含することが可能である。上述したように、ＵＳＢ及びＩＳＯケーブリングのための異なる条件のために、別個の「既製の」ＵＳＢ及びＩＳＯケーブル組立体３０′，３１′を使用することがより費用効果的である蓋然性があるが、このようなケーブル組立体は、所望により、幾つかの実施例においては単一のバンドル内に結合させることが可能である。
【００４１】
インターフェース装置は、又、例示的に、ＵＳＢトランシーバ３７′及びＩＳＯトランシーバ３８′を包含しており、且つエミュレーション回路２５′は、例示的に、ＵＳＢ又はＩＳＯ動作モードにある場合に、上述した信号線を介して、夫々、それらと通信を行うための対応するＵＳＢ及びＩＳＯトランシーバ３９′，４０′を包含している。この場合にも、それらの個別的な信号条件のために別個の既製のＵＳＢ／ＩＳＯトランシーバを使用することがより費用効果的である蓋然性があるが、カスタムコンビネーショントランシーバを幾つかの実施例において、且つ、多分、異なる動作モードでもって使用することも可能である。
【００４２】
エミュレーション回路２５′は、又、例示的に、上述したように、最終的な集積回路において実現すべき種々のスマートカードアプリケーションを実施するためのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）４１′を包含している。勿論、当業者により理解されるように、その他の適宜の回路を使用することも可能である。
【００４３】
エミュレーター２４′の例示的な実施例において、コンタクト２９ａ′−２９ｈ′の各々は、モード検知回路３５′へ接続されるものとして例示的に示してあるが、それらは、全ての実施例において必要なものではない。更に、幾つかの実施例においては、ユーザが、手作業により、エミュレーション回路２５′に対する所望の動作モードを選択することが可能であるように、モード検知回路３５′へ接続したインターフェース装置３２′を具備するモード選択スイッチ４２′を包含することが望ましい場合がある。
【００４４】
モード選択スイッチ４２′が与えられた実施例において包含される場合には、モード検知回路３５′は上述した「自動的」検知動作を実施することは必要ではなく、そのことは、基本的に、該モード検知回路をスイッチとスイッチング回路３６′との間の簡単なインターフェース又は接続へ簡単化させる。勿論、このような機能性は、又、例示したようなスイッチ４２′と共に包含させて、柔軟性および多数のエミュレーション環境における使用の簡単化を向上させることが可能である。例示として、モード選択スイッチ４２′は単極単投（ＳＴＳＴ）スイッチとすることが可能であるが、その他の適宜のスイッチを使用することも可能である。
【００４５】
エミュレーション回路２５がサポートすべき与えられた動作モードに依存して、モード検知回路３５及びスイッチング回路３６の実現例は幾分異なる場合がある。例として、モード検知回路３５は、例えば、上述した検知（及びオプションとしてのセキュリティ）機能を実施すべき形態とされた例えばＦＰＧＡ又はその他の回路からなる適宜の制御論理を使用して実現することが可能である。インターフェース装置３２の種々の回路は、例えば、当業者により理解されるように、サポートされる動作プロトコルの種々のトリランスを受付ける回路基板上で実現することが可能である。当業者により理解されるように、物理的及び電気的仕様と一致した「レガシー」ＩＳＯエミュレーションをサポートすることが幾つかの実施例において望ましい場合がある。
【００４６】
スイッチング回路３６に関して、与えられた実施例に依存して、ある設計考慮事項を考慮に入れる場合がある。デュアルＵＳＢ／ＩＳＯ実現例の場合には、ＩＳＯ及びＵＳＢ仕様が、それによりスマートカード及び読取器（ＩＳＯ）とデバイス及びハブ（ＵＳＢ）との間に接続が構成される物理的電気機械的メカニズムを画定する（注意すべきことであるが、本明細書において使用されるような「スマートカード読取器」という用語は、ＩＳＯ読取器のみならず、ＵＳＢ「ハブ」及び異なる動作プロトコルに対しその他の同様の接続装置をも包含する）。
【００４７】
一般的に、スイッチング回路３６は、２個（又はそれ以上）の異なるインターフェースを共通の終端用アダプタと接続することを可能とするアナログスイッチを包含することが可能である（幾つかの実施例においてはデジタルスイッチングを使用することが可能であるが）。そうであるので、これらのアナログスイッチは、当業者により理解されるように、種々のプロトコルの電気的仕様（電圧、電流、波形及び分散等）に対する一致を与えるために問題の特定の動作モードに対して適切に設計されるべきである。
【００４８】
本願出願人に譲渡されているＦｒｕｈａｕｆ  ｅｔ  ａｌ．の米国特許出願第０９／６８６，３２７号は、ＩＳＯ又は非ＩＳＯ（即ち、ＵＳＢ）動作を検知するために使用し且つそれに基づいて適宜信号の経路付けを行う回路を包含するデュアルモードスマートカードを開示しており、尚、その全体を引用により本明細書に取込む。当業者により理解されるように、モード検知回路３５及び／又はスイッチング回路３６に対して、本発明に基づいて同様の回路を使用することも可能であるが、その他の適宜の回路を使用することも可能である。
【００４９】
本発明をデュアルＵＳＢ／ＩＳＯ実現例を参照して特に説明したが、本発明のエミュレーター２４は、その他の例示的な動作モード及び２個を超える動作モードに対しても使用することが可能であることが理解される。本発明に基づいて実現することが可能なその他の例示的な動作モード乃至はプロトコルは、ファイヤワイヤ／ファイヤワイヤ２、１０／１００／１０００ＢａｓｅＴ、オプチカルファイバー、ファイバーチャンネル等を包含する。一般的に、本発明は、比較的高いデータレートで直列的にデータを移動させようとする技術に対して適している。
【００５０】
本発明の種々の利点及び特徴は以下の説明から明らかである。第一に、エミュレーター２４はアダプタ及びケーブリングを不当に増加させることなしにＨＷＥの実世界使用モデル内への比較的シームレスな統合を与えている。そうであるから、本発明は、冗長な外部のごたごたしたもの（即ち、ケーブル、ポット、終端用アダプタ等）の量を減少させるための費用効果的な解決方法を提供すると共に、ＨＷＥと予測される読取器装置との間の種々のインターフェースの物理的、電気的及び機械的条件にも対処している。そうであるから、エミュレーター２４は、エンドユーザーの観点からこれらのインターフェースの間の比較的簡単で且つ容易な遷移を可能とさせ、更に、エミュレーター２４の内側に埋め込まれる機能性への比較的シームレスな態様で且つカスタム設計作業を殆ど実施することなしにこれらの遷移を行わせる。
【００５１】
次に、図３及び４を参照して、本発明のダイナミックバッファリングについて以下に説明する。理解すべきことであるが、本発明は、例えば、最大で５００ＭＨｚの定格であるメントールグラフィックセラロハードウエアエミュレーター（Ｍｅｎｔｏｒ  Ｇｒａｐｈｉｃ  Ｃｅｌａｒｏ  Ｈａｒｄｗａｒｅ  Ｅｍｕｌａｔｏｒ）等の異なるエミュレーションツールセットを使用することが可能である。実世界速度で機能するパソコンを使用することも可能である。予測される実世界速度は約１５０乃至３００ＫＨｚである。エミュレーション用の別のツールセットは、フルスピードＵＳＢデバイスコントローラを受付けるべく修正した設計を有するカスタム化したスタンドアローンエミュレーター、及び約１０の予測される実世界速度を有するアナログトランシーバを包含することが可能である。
【００５２】
ハードウエアエミュレーターの場合には、システムのバーチャルモデルをハードウエアエミュレーター内部に作成し且つ検証として秒、分又はそれより長い間実時間で動作させることが可能である。ハードウエアエミュレーターは、数百万のゲート能力を具備し且つレジスタトランスファロジック（ＲＴＬ）設計のための完全に自動化した流れ及びＲＴＬメモリ用のメモリインターフェースを具備するマルチユーザプロジェクトリソースを使用することが可能である。このシステムは、異なるクロックドメインで動作することが可能であり、埋込型マルチポートメモリを具備する数メガバイトの拡張したオンボードのデュアルポート設計メモリを使用する。
【００５３】
通算は夫々ブロックＡ及びブロックＢとラベルを付けたバーチャルコンポーネントとしての２個の機能的ブロック１００，１０２を示しており、且つ回路設計に依存して機能的サブブロックとすることが可能な各トップレベル機能的ブロックへ付加したバーチャルコンポーネントインターフェース（ＶＣＩ）１０４，１０６としての非同期インターフェースを示している。機能的ブロックＢ１０２はＵＳＢ接続１１０、ＵＳＢデバイスコア（ＵＤＣ）１１２、同期ブロック１１４、インターフェース１０６を包含している。機能的ブロックＡ１００は、バーチャルコンポーネントインターフェース１００、カスタムロジックブロック１２０、エスティマイクロエレクトロニクス社によって製造されるようなスマートカードプロセッサとして使用されるＳＴ２２ＭＰＵ等の例えば３２バイトＲＩＳＣプロセッサであるＣＰＵ１２４と共に動作可能なＣＰＵバスインターフェース１２２を包含している。
【００５４】
ダイナミック機能的バッファリングブロック１３０はブロックＣのラベルを付してあり且つダイナミックバッファとして動作すべくブロックＡとブロックＢとの間に挿入したバーチャルコンポーネントブロックとすることが可能である。それは、又、非同期インターフェースを包含しており、それは、本発明の１実施例においては、バーチャルコンポーネントインターフェース１３２，１３４である。機能的バッファリングブロックＣ１３０は、カスタムグルー（ｇｌｕｅ）ロジック、制御レジスタ及び大略１３６で示したバッファを包含している。機能的バッファリングブロック１３０を包含させること又は排除することは、メインの設計に対してその他の修正を必要とすることなしに、コンパイル・タイムフラッグによって管理することが可能である。機能的バッファリングブロック１３０を設計内へ包含させることは、エミュレーション環境が適切に機能することを可能とさせる。それは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は、物理的なアダプタカードによって所要に応じ実現することが可能である。
【００５５】
機能的バッファリングブロック１３０は、片側が機能的ブロックＡへ接続させ且つ反対側を機能的ブロックＢへ接続させることが可能である。この例においては、その柔軟性及び動作範囲のためにバーチャルコンポーネントインターフェースが使用される。
【００５６】
エミュレーション環境において使用される場合には、機能的バッファリングブロックにおけるローカル論理は、バッファリングの内容を管理し且つブロックＡとＢとの間の導管を与える。機能的バッファリングブロック１３０を排除することは、２個の機能的ブロックＡとＢとの間の非同期インターフェースを管理するためにバーチャルコンポーネントインターフェースを使用して機能的ブロックＡとＢとを直接的に接続させることを可能とする。機能的ブロックＢ内の同期ブロックは、ＵＳＢデバイスコア（ＵＤＣ）をａｔ−ｓｐｅｅｄ即ち実効速度において稼動させることを確保し、且つ機能的ブロックＡが公称速度からその最終的なシリコンによって測定される速度へ動作することが可能であることを確保する。
【００５７】
テスト環境は図４に示してあり且つカリフォルニア州サンノゼのシリコンコーポレイションによって提供されるようなシリコンＩＰ１５０を示している。ＵＤＣテスト環境１５４の一部としてのＵＤＣコア１５２は、カスタムグルーロジック、バッファ、機能的バッファリングブロック１５８の制御レジスタへのＶＣＩインターフェース１５６と共に動作することが可能であり、且つマイクロプロセッサのペリフェラルバスインターフェース（Ｐ−ｂｕｓ）１６０と共に動作することが可能である。ＵＤＣコア１５２は、１２ＭＨｚにおいて動作可能であり且つカスタムグルーロジック、バッファ及び制御レジスタは８ＭＨｚ／１−３００ＫＨｚにおいて動作することが可能である。ＵＤＣＶＣＩを使用することが可能である。既存のカスタムフロントエンドを拡張し且つＰ−ｂｕｓインターフェースを再使用し且つＵＳＢＶＣＩを管理するためにＶＣＩ光制御を付加することが可能である。カスタムグルーロジック（ｇｌｕｅ  ｌｏｇｉｃ）は、３０ＭＨｚにおいて稼動することが可能であり且つ有用な能力を提供することが可能である。ＵＤＣＶＣＩへのＶＣＩインターフェースは、ａｐｐ ｃｌｋ（３０ＭＨｚ）とｄｅｖ ｃｌｋ（１２ＭＨｚ）との間の所要の同期を取扱うことが可能である。クロック回復ロジック（論理）用のＤＰＬＬの置換を有することが可能である。
【００５８】
端点制御に対して発生する場合のある何等かの向上された機能的動作も存在している。ＶＣＩか又は非ＶＣＩのいずれを使用するかは、ＩＮトランズアクションに対してどの端点を選択されるかを本システムがどのようにしてより正確に予測することが可能であるかには殆ど影響を有するものではない。トライバッファデータバッファリングシステムは異なるバッファを包含することが可能である。第一バッファはＵＤＣからデータを受取り且つＯＳ／常駐アプリケーションへ出力する。第二及び第三バッファはＯＳ／常駐アプリケーションからデータを受取り且つそれをＵＤＣへ転送する。
【００５９】
現在のところ、３個のバッファのうちのいずれか２つをＩＮ端点データのために「対構成」とすることが可能であり、その場合にＩＮは予測される。どの端点をＩＮが対処するかは常に既知なことではない。従って、バッファ＃２がビジーである場合には、２つの異なる端点に対してＩＮデータをキュー化させるためにバッファ＃１及び＃３を使用することが可能である。
【００６０】
回転型トリプルバッファスキームも可能である。ＯＳがどのＩＮが最初に来るかに関してヘッジし、且つ前もって２個のバッファをプレロールする。ＯＵＴが予測されたＩＮの直後に表われ、且つＯＵＴが６４より大きなバイトを送信する場合には、プレロードしたＩＮバッファのうちの１つを破壊することが可能である。このことを決定することは常に可能なわけではない。クワッドバッファ（ｑｕａｄ−ｂｕｆｆｅｒ）スキームは第一及び第二バッファが共に動作可能であり且つ第三及び第四バッファが共に動作可能である場合にこの種類の状態をより良く処理する。
【００６１】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【００６２】
【図１】本発明に基づいて使用すべく適合させることが可能なスマートカードエミュレーションシステムの概略ブロック図。
【図２】本発明において使用するために適合することが可能であり且つデュアルモードＩＳＯ／ＵＳＢ実施例と共に使用することが可能な図１に例示したスマートカードエミュレーターの概略ブロック図。
【図３】バーチャルコンポーネントとしてのトップレベル機能的ブロックを示しており且つ本発明に基づいてそれらの間に機能的バッファリングブロックを具備しているブロック図。
【図４】ＵＳＢデバイスコア（ＵＳＤ）、バーチャルコンポーネントインターフェース（ＶＣＩ）、グルーロジックと、制御レジスタと、バッファリング及びその他の回路機能を具備するカスタム機能的ブロック、スマートカードマイクロプロセッサ用のペリフェラルバスインターフェースを具備している機能的ブロックを示したテスト環境の別のブロック図。
【符号の説明】
【００６３】
２０  スマートカードエミュレーションシステム
２１  ホスト装置
２３  インターフェースコネクタ
２４  マルチモードスマートカードエミュレーター
２５  エミュレーション回路
２６  スマートカードコネクタ
２７  スマートカード本体
２８  コネクタモジュール
２９  コンタクト
３０，３１  ケーブル組立体
３２  インターフェース装置
３５  モード検知回路
３６  スイッチング回路
【図１】
2004362579.tif 000003
【図２】
2004362579.tif 000004
【図３】
2004362579.tif 000005
【図４】
2004362579.tif 000006