(57)【要約】【課題】２つのビット値を表す２つの信号レベルの間を変化し、所定の入力ビット周期を有する非同期入力データ信号を受信し、この入力データ信号に対応する出力データ信号を送出するデータ通信コントローラ中でグリッチをフィルタリングする装置と方法。【解決手段】入力データ信号に発生するグリッチは、この所定の入力ビット周期未満の所定の持続時間を有する信号レベルが反転したことを、グリッチ検出器で検出される。入力データ信号は、このサンプリングクロックレートでグリッチフィルタでサンプリングされて、入力データサンプルのシーケンスが生成される。所定の投票数の入力データサンプルを、投票ユニットで監視して、このシーケンスを成す入力データサンプルの大部分の値を表す。それに続く投票数の入力データサンプルを監視して、後続の入力データサンプルの多数の値を表す。【選択図】　　　図４
2004056803.tif 000002
【特許請求の範囲】
【請求項１】
２つのビット値を表す２つの信号レベル間で変化し、所定の入力ビット周期を有する非同期入力データ信号を受信し、該入力データ信号に対応する出力データ信号を送出するデータ通信コントローラにおいて、反転した信号レベルを含み、前記所定のビット周期未満のグリッチ持続時間を有し、前記入力データ信号に乗ったグリッチをフィルタリングする方法であり、該方法は、
前記所定の入力ビット周期未満の所定の持続時間を有する信号レベルが反転したことを検出することによって、前記入力データ信号中のグリッチを検出するステップと、
前記グリッチ持続時間に対応するグリッチ時間値を決定するステップと、
前記グリッチ時間値からサンプリングクロックレートを決定するステップと、
前記サンプリングクロックレートで前記入力データ信号をサンプリングして、シーケンスを成す入力データサンプルを生成するステップと、
所定の投票数の入力データサンプルを監視し、前記シーケンスを成す入力データサンプルの多数の値を表す出力信号を提供するステップと、
後続の投票数の入力データサンプルを監視し、これら後続の入力データサンプルの多数の値を表す出力信号を提供するステップと、
を含む前記方法。
【請求項２】
プログラム可能グリッチフィルタユニットであり、該プログラム可能グリッチフィルタユニットに対して入力として提供される非同期データ信号からグリッチをフィルタリングし、前記非同期データ信号は２つのビット値を表す２つの信号レベル間を変化し、所定の入力ビット周期を有し、前記入力データ信号に対応する出力データ信号を送出する該プログラム可能グリッチフィルタユニットにおいて、前記グリッチは、反転した信号レベルを含み、該所定の入力ビット周期未満のグリッチ持続時間を有し、前記非同期データ信号に乗るものであり、前記グリッチフィルタユニットは、
前記所定のビット周期未満の所定の持続時間を有する前記非同期データ信号のレベルが逆転したことを検出し、また、前記グリッチ持続時間に対応するグリッチ時間値を決定するようになっているグリッチ検出器と、
前記グリッチ時間値から決定されたサンプリングクロックレートで前記非同期データ信号をサンプリングして入力データサンプルを提供し、また、該入力データサンプルの多数の値を表す出力信号を提供するようになっているグリッチフィルタと、
を具備するプログラム可能グリッチフィルタユニット。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、非同期データ通信インタフェースコントローラに関し、より詳しくは、このようなコントローラによって受信された非同期ディジタル信号中のグリッチを検出してフィルタリングする方法と装置に関するものである。
【０００２】
（背景技術）
非同期送信においては、データはパルスのシーケンスにコーディングされるが、これには、スタートビットが含まれ、さらに、ストップビット又はガード・バンドが含まれる。このスタートビットは、送出側のユニットによって送られて、キャラクタが送出されることを受信側のユニットに通知する。次に、このキャラクタが送られて、その後にストップビット又はガード・バンドが続き、これで、このキャラクタの転送が完了したことを示す。非同期通信のさまざまなモードが、しばしば、規格設定団体によって設定された規格で定義されるが、これらの団体には、米国規格協会（ＡＮＳＩ）や、国際電気通信連合（ＩＴＵ）や、国際標準化機構（ＩＳＯ）などがある。
【０００３】
非同期通信はしばしば、モデム、メモリカード、その類似物などのプラグインユニットとのデータ転送のために用いられるが、これらのユニットは、ディジタルカメラや、パソコンや、その類似物などのホストユニットにプラグインされる。このホストユニット内にあるインタフェースコントローラは、プラグインユニットとホストユニットとの間での非同期データ通信を管理するものである。非同期通信規格の例には、ＩＳＯによって採用されたＩＳＯ７８１６がある。このＩＳＯ７８１６に適合するようにインタフェースコントローラと通信するプラグインユニットは、スマートカードまたは集積回路カードと呼ばれる。
【０００４】
図１に、一般的なスマートカードインタフェースの装置を示す。スマートカードユニット１０は、スマートカードユニット１０とホストユニット１４との間でのデータ転送を管理するホストユニット１４中のインタフェースコントローラ１２を介して、電子的にホストユニット１４に接続されている。ホストユニット１４とインタフェースコントローラ１２との間でのデータ転送を、ホストユニット１４中のＰＣＩバス１６を経由するものとして、図１に例示する。インタフェースコントローラとホストユニットとの間でデータを通信する手段は、他の多くの手段でも実現でき、それには、ＥＩＳＡバスや、ユニバーサルシリアルバス（ＵＳＢ）などが含まれる。ホストユニット１４に対するスマートカードの接続は２方向シリアル信号線１１を経由するが、この信号線は、公知の技法を用いて、ホストユニット１４内で送信信号線２６と受信信号線３０とに分割されている。スマートカードユニット１０とインタフェースコントローラ１２との間でのデータ交換レートは、インタフェースクロックによって制御されるが、この信号は、４ＭＨｚと、６ＭＨｚと、８ＭＨｚと、１２ＭＨｚと、２０ＭＨｚという５つの互いに異なったクロック周波数の内のいずれかで実現できる。
【０００５】
インタフェースユニット１２は、スマートカードインタフェースサブユニット１８とＰＣＩインタフェースサブユニット２０とを含んでいる。スマートカードインタフェースサブユニット１８は、スマートカードブロック２２とパリティチェッカブロック２４とを含んでいる。スマートカードブロック２２は、スマートカードユニット１０が信号線２６で送信した信号を受信し、これらの信号中のデータを復元し、次にそのデータを信号線２７でＰＣＩインタフェースサブユニットに送り、ここで、このデータは、公知のＰＣＩ標準プロトコルにしたがってＰＣＩバス１６上に送られて、ホストユニット１４の他の部品（図示せず）に送信されるようになっている。パリティチェッカブロック２４は、信号線２６上のこのデータを監視して、データのキャラクタ中にパリティエラーが存在するかどうかを検出する。このようなパリティエラーがこのようにして検出された場合、パリティチェッカブロック２４は、信号線２８上の信号をオンにし、これによって、ゲート２９は、スマートカードブロック２２がそのエラーを受信しないようにブロックして、信号線３０上の信号をスマートカードユニット１０に送って、そのエラーを通知し、これで、この冒されたキャラクタをスマートカードユニット１０から再送出することを試みるように促す。
【０００６】
パリティエラーが存在する場合、それは、スマートカードユニット１０中でデータのコーディング中で発生した場合がしばしばである。しかしながら、ときには、パリティチェッカブロック２４中でエラーが検出されるが、これは、スマートカードユニット１０から送られた信号にグリッチが発生するからである。この問題は、ＩＳＯ７８１６規格にしたがって通信された非同期データだけに限られる問題ではなく、非同期データ通信一般に関する問題である。さらに、この問題は、エラーがパリティチェックによって判定されるシステムに限られる問題ではなく、グリッチによりエラーがデータ中に発生し得るようなシステムにも当てはまる問題である。グリッチが存在する場合でさえも、非同期通信についてデータをうまく検出することが可能であることが望ましい。また、エラー検出及び信号通知と、エラー検出及びデータ再送出用のプロトコルが備えられているシステム中における再送出と、に伴う時間の浪費を避けることが望ましい。
【０００７】
（発明の開示）
本発明によれば、２つのビット値を表す２つの信号レベル間で変化し、所定の入力ビット周期を有する非同期入力データ信号を受信し、また、この入力データ信号に対応する出力データ信号を送出するデータ通信コントローラ内でグリッチをフィルタリングする装置と方法が提供される。このグリッチは、反転した信号レベルを含み、所定のビット周期未満のグリッチ持続時間を有し、入力データ信号に乗るものである。入力データ信号に発生するグリッチは、この所定の入力ビット周期未満の所定の持続時間を有する信号レベルが反転したことを検出することによって、検出される。このグリッチ持続時間に対応するグリッチ時間の値が決定され、次に、サンプリングクロックレートこのグリッチ時間の値からサンプリングクロックレートが決定される。この入力データ信号は、このサンプリングクロックレートでサンプリングされて、入力データサンプルのシーケンスを生成する。所定の投票数の入力データサンプルを監視して、出力信号を提供し、これで、このシーケンスを成す入力データサンプルの多数の値を表す。最終的には、これに続く投票数の入力データサンプルを監視して、出力信号を提供し、これで、これら後続の入力データサンプルの多数の値を表すようにする。
【０００８】
本発明は、パリティチェックなどのエラー検出機能を持つシステムで利用され得るが、その使用は、このようなシステムには限られない。しかしながら、エラー検出機能を持つシステムで使用した場合、この発明によるグリッチフィルタリングは、プログラム可能な数のエラーが検出された場合にオンして、そうでない場合にはオフ状態に維持するようにしてもよい。
【０００９】
（発明を実施するための最良の形態）
本発明による多くの革新的な教示を、特に現在の好ましい例示実施形態を参照して説明する。しかしながら、このクラスの実施形態は、単に本書における多くの利点ある用途と革新的な教示との数例に過ぎないことを理解すべきである。たとえば、本書に記載する本発明の実施形態は、ＩＳＯ７８１６規格のデータインタフェースに関するものであるが、どの非同期データインタフェースにも適用可能である。一般的に、本出願の本明細書中の説明は、本書に添付されるさまざまなクレームのさまざまな態様に記載されているように、本発明を必ずしも制限するものではない。そのうえ、一部の説明は、進歩的な態様のあるものには適用されるが、他のものには適用されないということがある。
【００１０】
図２は、ＩＳＯ７８１６規格に適合する信号のタイミング図であり、時間を水平軸で表してある。完結したキャラクタは、図中で、時刻０で開始して、時刻ｔｎで終了している。このキャラクタはビットから成り、各ビットは、ＩＳＯ７８１６規格では基本時間単位であるｅｔｕと呼ばれる定義された持続時間を持っている。どの時刻においても、信号は状態Ａと状態Ｚのいずれかにある。キャラクタの開始時、すなわち、時刻０と時刻ｔ１の間においては、値Ａを有するスタートビットが送られ、その後、すなわち、時刻ｔ１と時刻ｔ９の間において８つのデータビットが続く。この８データビットの後には、時刻ｔ９とｔ１０との間で、パリティビットが続く。このパリティビットの後には、時刻ｔ１０とキャラクタの最後、すなわちｔｎとの間で、可変数のｅｔｕ分の持続時間を有するガードタイムが続く。ＩＳＯ７８１６規格のこの態様及び他の態様に関する更なる詳細は、ＩＳＯ７８１６規格書に見受けられるが、これは、スイス、ジュネーブ２０、ｒｕｅ　ｄｅ　Ｖａｒｅｍｂｅ’の１、Ｃａｅ　ｐｏｓｔａｌｅ５６、ＣＨ−１２１１の国際標準化機構から入手できる。ＩＳＯ７８１６規格の基本的な概要は、ニュージャージー州０８５５０、プリンストンジャンクション市、クラークスビル１９１のスマートカード社から入手できる。
【００１１】
図３は、図２の図に似ており、さらに、それぞれ第１番目と第６番目のデータビットに現われる、３２と３４における２つのグリッチを示す信号タイミング図である。これらのグリッチは、送信された信号に重ねられた信号という形態を取り、データビットの電圧とは反対の電圧を有している。したがって、たとえば、図３の最初のデータビットがＺの値を有していれば、グリッチは立下りパルスとなり、このため、検出器では、グリッチの間はＡの値が見えることになる。同様に、このような最初のデータビットがＡの値を有していれば、グリッチは立ち上がりパルスとなり、このため、検出器では、グリッチの間はＺの値が見えることになる。
【００１２】
グリッチは、一般的には、その持続時間は０．２ビット未満である。しかしながら、グリッチは、スマートカードブロック２２がビットの値を分析しようとする時点に存在すると、ビット値が誤って検出される。一般に、所与のキャラクタ中に２つ以上のグリッチが存在することはまれであり、したがって、パリティエラーは通常はグリッチによって発生する。しかしながら、それより悪いことは、２つのグリッチが所与のキャラクタ中に発生すると、パリティエラーは発生しないことになるが、それは、グリッチが２つあると、パリティ目的を無効とするが、それでも不正なデータがホストユニットに送信されてしまうからである。
【００１３】
図４は、本発明のある好ましい実施形態によるプログラム可能グリッチフィルタ４１と、ゲート２９と、スマートカードブロック２２と、パリティチェッカブロック２４と、制御ロジックブロック４２を組み込んだスマートカードインタフェースユニット４０とのブロック図である。ゲート２９と、スマートカードブロック２２と、パリティチェッカブロック２４とは、図１の同じ参照番号のブロックと同じである。プログラム可能グリッチフィルタ４１と制御ロジックブロック４２とは、所望によってハードウエアや、ファームウエアや、ソフトウエアで実現される。本書に記載する好ましい実施形態では、制御ロジックブロック４２は、８０５２マイクロコントローラなどの、ファームウエアで制御されるマイクロコントローラとして実現され、一方、プログラム可能グリッチフィルタ４１はハードウエアで実現される。
【００１４】
プログラム可能グリッチフィルタ（ＰＧＦ）４１は、図示するように、グリッチ検出器／調整器ブロック（ＧＤＡ）４３とグリッチフィルタ４４とから成るが、この２つは互いに接続され、ＰＧＦ４１は更に、ロジックブロック４２と、スマートカードブロック２２と、パリティチェッカブロック２４とに接続されている。ＰＧＦ４１は、一般にはオフ状態で初期化されるが、オン状態で初期化されるようにプログラムしてもよい。オフ状態では、グリッチフィルタ４４は、信号線２６でＰＧＦ４１に出力された信号をスマートカードユニットから受信し、これらの信号を基準クロックレート、たとえばシステムクロックレートの４８ＭＨｚ、でサンプリングして、スマートカード信号を復元する。この復元されたスマートカード信号は、スマートカードブロック２２とパリティチェッカブロック２４とに信号線４５で送られる。先行技術の場合のように、パリティチェッカブロック２４は、エラーを検出すると、ブロック信号を信号線２８でゲート２９に送り、また、信号を信号線３０でスマートカードユニットに送る。パリティチェッカブロック２４はまた、信号を信号線４６で制御ロジック４２に送って、パリティエラーが検出されたことを示す。この信号は、信号線３０で送られたのと同じ信号であったり、必要であれば反転されたものであったりする。
【００１５】
簡潔に言えば、制御ロジック４２は、プログラム可能な数のパリティエラーを検出すると、信号を信号線４７でＧＤＡ４３に送り、これがグリッチの発見を可能とする。ＧＤＡ４３は、０．２ｅｔｕ未満の幅を有するグリッチを検出するようにプログラムされている。ＧＤＡ４３は、グリッチを検出すると、制御ロジック４２に対して信号線４８上に信号を出力する。制御ロジック４２は、いったんこの信号を受信すると、新たに計算されたグリッチ幅をストアさせ、また、信号線６８上のイネーブルビットをオンさせることによってグリッチフィルタ４４をオンとする。この新たに計算されたグリッチ幅は、グリッチフィルタ４４に対して信号線５９上で出力され、そこで、この幅を用いて、サンプルクロックを、グリッチフィルタリングを最適化する周波数に設定するが、これについては以下に詳述する。
【００１６】
このようにして、グリッチが検出され、また、最後に検出されたグリッチの幅を用いて、サンプルクロックを設定して、利点のある適応グリッチ検出とフィルタリングを提供し、グリッチ幅が時間の経過と共に変化する環境下でのグリッチの検出とフィルタリングを最大化する。ＰＧＦ４１の動作を、以下に詳述する。
【００１７】
図５は、グリッチフィルタ４４の詳細な図である。３ビットのシフトレジスタが備えられているが、これは、たとえば、３つのラッチ５０と、５１と、５２とが、図示するように直列に接続されたものから成っている。３つの２入力マルチプレクサ５３と、５４と、５５とがまた、それぞれ直列に提供されていて、以下に詳述するデータ保持機能を果たしている。スマートカードから信号線２６で送られたデータは、マルチプレクサ（ＭＵＸ）５３の一方の入力に提供される。ＭＵＸ５３の出力は、ラッチ５０のデータ入力に提供される。ラッチ５０の出力は、ＭＵＸ５４の一方の入力と、ＭＵＸ５３の他方の入力と３入力投票ユニット５４の第１の入力とに提供される。同様に、ＭＵＸ５４の出力は、ラッチ５１のデータ入力に提供され、ラッチ５１の出力は、ＭＵＸ５５の一方の入力と、ＭＵＸ５４の他方の入力と、３入力投票ユニット５４の第２の入力とに提供される。ＭＵＸ５５の出力は、ラッチ５２のデータ入力に提供され、ラッチ５２の出力は、ＭＵＸ５５の他方の入力と、３入力投票ユニット５４の第３の入力とに提供される。
【００１８】
サンプリングクロック発生器５６の出力は、ＭＵＸ５３と、５４と、５５との制御入力に提供される。３ビットシフトレジスタのラッチ５０と、５１と、５２との各々には、本実施形態ではシステムクロックＣＬＫ、たとえば４８ＭＨｚである基準クロックがクロック入力される。投票ユニット５４の結果出力は、信号線５７でＭＵＸ５８の制御入力に提供される。ＭＵＸ５８の２つの入力は、それぞれ０と１に保持される。ＭＵＸ５８の出力は、信号線４５に提供される。
【００１９】
ここで、ラッチ５０と、５１と、５２とには、システムクロックＣＬＫがクロック入力されるが、ＭＵＸ５３と、５４と、５５とには、サンプリングクロック発生器５６の出力がストローブ入力されることに注意されたい。したがって、ラッチ５０と、５１と、５２とのコンテンツは、サンプリングクロック発生器５６によって制御されるが、それは、サンプルクロックがオンされない限り、各ラッチのコンテンツは単に循環される、すなわち、保持されるからである。サンプリングクロック発生器５６は、ＧＤＡ４３（図４）から入力信号を信号線５９で受信し、一方、投票ユニット５４は、ＧＤＡ４３から信号線６８でイネーブル信号を受信する。
【００２０】
投票ユニット５４は、クロック入力のないロジックブロックであり、その出力は、２／３「票決」の結果である、すなわち、次の表に従った出力を提供する。
2004056803.tif 000003
【００２１】
動作に際して、サンプリングクロック発生器５６は、グリッチフィルタリングの目的でイネーブルされていないときには、単にＣＬＫレートに設定されている。これは、信号線６８上のフィルタイネーブル信号で制御される。したがって、フィルタイネーブル信号がオンでない（すなわち、ディスエーブル信号状態である）場合、サンプリングクロック発生器５６は、ＣＬＫレートでサンプリングクロックを出力するように駆動される。このモードでは、サンプルが投票ユニット５４によって感知されるに連れて、前記発生器は、ＭＵＸ５８を制御して、０又は１を出力させ、これによって、信号線２６上の信号からデータを復元させる。極端に小さいグリッチ（約５０ピコ秒未満）以外であればどんなグリッチでも、複数のサンプルが発生する結果となり、これが、投票ユニット５４によって感知され、このため、ＭＵＸ５８の出力に、すなわち、復元されたデータが信号線４５上に現われる。
【００２２】
しかしながら、グリッチフィルタ４６がグリッチフィルタリング目的でイネーブルされた場合、最新のグリッチ幅設定値がＧＤＡ４３から信号線５９上に出力されて、サンプリングクロック発生器５６中にストアされ、また、イネーブル信号が信号線６８上でオンとなる。サンプリングクロック発生器５６は、以下に述べるように、ストアされた値に対応する周波数で、ＭＵＸ５３と、５４と、５５との制御入力にサンプリングクロックを提供する。３つのラッチ５０と、５１と、５２とは、ＣＬＫレートでクロック入力を受け続ける。しかしながら、上述したように、ＭＵＸ５３と、５４と、５５とは、サンプリングクロックレートでストローブ入力を受けており、したがって、データサンプルを、そのレートでラッチ５０と、５１と、５２とを通って順繰りにシフトさせる。サンプリングクロックの周波数は、グリッチフィルタリングを最適化するように、たとえば、検出されたグリッチの幅に等しい周期を有する方形波信号の周波数におおよそ対応するように設定される。その結果、検出されたグリッチの幅におおよそ等しい又はそれ以下のグリッチの場合、このグリッチによって表されるデータ値が、３つのラッチ５０と、５１と、５２との内のせいぜいたった１つ中にしか現われず、一方、正しいデータ値は、他の２つのラッチ中に現われることになる。
【００２３】
投票ユニット５４は、上述したように、３つのラッチ５０と、５１と、５２との内の少なくとも２つのラッチ中のデータ値に対応する結果値を信号線５７上に出力する。したがって、グリッチがラッチ５０と、５１と、５２との中を伝播しても、投票ユニットはそれを無視して、ＭＵＸ５８を制御して、正しい値を出力するようにする。ここで、もっと多くのラッチを備えて、その出力に基づいて多数決をとるようにしてもよいが、ラッチの数は３つであるのが望ましいことに注意されたい。もっと多くのラッチを用いる場合でも、その数は奇数にして、明瞭な票決を保証するようにするのが望ましい。また、順繰りに送られるサンプルを投票のプロセスでどのようにストアするかは、設計上の選択の問題であり、ラッチには限られず、これらサンプルは、投票プロセスで同時に調査され得るようなんらかの方法でストアすればそれで十分であることに注意されたい。
【００２４】
図６は、図４のＧＤＡブロック４３のブロック図である。ＧＤＡブロック４３は、グリッチ検出器６０と、グリッチ制御レジスタブロック６１と、検出済みグリッチ幅レジスタ６２と、フィルタリンググリッチ幅設定レジスタ６３とを含んでいる。グリッチ制御レジスタブロック６１は、１ビットのグリッチ探知器イネーブルレジスタ６４と、１ビットのグリッチ検出済みレジスタ６５と、１ビットグリッチフィルタイネーブルレジスタ６６と、１ビットの更新グリッチ幅レジスタ６７とを含んでいる。グリッチ検出器６０は、サンプルを、信号線４５を介してグリッチフィルタ４４（図５）から受信する。グリッチ検出器６０は、グリッチを検出すると、信号線９９を用いて、グリッチ検出済みレジスタ６５中のビットを１に設定し、検出されたグリッチの幅に対応する値を検出済みグリッチ幅レジスタ６２中にストアする。フィルタリンググリッチ幅設定レジスタ６３にストアされている値は、信号線５９上に送られ、グリッチ４４中のサンプリングクロック発生器５６に出力されるようにする。グリッチ探知器イネーブルレジスタ６４は、グリッチ探知器イネーブル信号を制御ロジック４２（図４）から信号線４７で受信する。グリッチ検出済みレジスタ６５は、自身中にストアされているビット値を制御ロジック４２に対して信号線４８で提供する。グリッチフィルタイネーブルレジスタ６６は、グリッチフィルタイネーブル信号を制御ロジック４２から信号線４９で受信する。更新グリッチ幅信号を制御ロジック４２から信号線５０で受信する。
【００２５】
動作に際して、制御ロジック４２は、プログラム可能な数のパリティエラーを検出したら、信号を信号線４７でＧＤＡ４３に送り、グリッチ探知器イネーブルレジスタ６４のビットを１に設定し、これで、信号線４５上に出力された信号中のグリッチをグリッチ検出器６０が発見することを可能とする。ＧＤＡ４３は、０．２ｅｔｕ未満の幅を有するグリッチを検出するようにプログラムするのが望ましいが、幅の選択は設計上の選択の問題である。グリッチ検出器６０は、グリッチを検出すると、グリッチ検出済みレジスタ６５のビットを１に設定する。同時に、この検出器は、グリッチの開始エッジと終了エッジとの間にあるインタフェースクロック周期の数をカウントすることによってグリッチ幅を計算し、その計算値を検出済みグリッチ幅レジスタ６２にストアして、その中に以前にストアされているデフォルト値があれば、それをオーバーライトする。
【００２６】
図６のグリッチ検出器６０は、パルスを検出して、そのパルスの立ち上がりエッジと立ち下がりエッジとの間の時間を決定することが可能であればどのようなロジックでも良い。図８に、信号線４５上のパルスの立ち上がりエッジと立ち下がりエッジが検出され、これらの間のインタフェースクロック周期の数をカウントするグリッチ検出器６０のある好ましい実施形態を示す。この検出器は、フリップフロップ８０〜８７と、カウンタ８８と、インバータ９１〜９３と、ＡＮＤゲート９４〜９７と、ＯＲゲート９８とを図示するように相互接続した状態で含んでいる。フリップフロップ８０〜８７はすべてが、ＣＬＫで、すなわち４８ＭＨｚでクロック入力されているが、カウンタ８８は、インタフェースクロックレートでカウントする。ここで、スマートカードユニット１０とインタフェースコントローラ１２との間におけるデータ交換のレートは、４ＭＨｚと、６ＭＨｚと、８ＭＨｚと、１２ＭＨｚと、２０ＭＨｚという５つの互いに異なったクロック周波数の内の１つの周波数のインタフェースクロックで制御されることを思い出されるであろう。
【００２７】
動作に際して、グリッチ検出器６０が立ち下がりエッジ、すなわち、負のグリッチの開始を検出すると、フリップフロップ８２の出力が１になる。他方、グリッチ検出器６０が立ち上がりエッジ、すなわち、正のグリッチの開始を検出すると、フリップフロップ８３の出力が１になる。最初の立ち下がりエッジ又は立ち上がりエッジが検出されると、フリップフロップ８４の出力が１になる。これで、フリップフロップ８５の出力が１に設定され、これによって、カウンタ８８が、インタフェースクロック周期のカウントを開始する。グリッチの最後、すなわち２番目のエッジ、が検出された場合にだけ、フリップフロップ８６の出力は１に設定される。これで、フリップフロップ８７の出力、すなわち、信号線９９が１に設定され、これによって、カウンタ８８は、カウント動作を停止し、グリッチ検出済みレジスタ６５（図６）中のビットを１に設定する。カウンタ８８は、幅が１５ビットであり、これは、検出しようとするグリッチを捕獲するに十分な値である。カウンタ内の値は、検出済みグリッチ幅レジスタ６２中の値である。カウンタ８８は、検出済みグリッチ幅レジスタ６２として動作し得るが、この場合、信号線９９が１になる時、最終カウント値は、それから直接読み取られた値となるようにするか、又は、別個のレジスタを検出済みグリッチ幅レジスタとして装備してもよいが、この場合、最終カウント値は、この別個のレジスタ中にロードされる。カウンタ８８がその最大カウント値、たとえば２１５−１、までカウントすると、フリップフロップ８５のリセット入力に接続されている信号線１０１上の信号がオンとなり、これで、フリップフロップ８５がリセットされる。
【００２８】
グリッチ検出済みレジスタ６５中のビットの値は、信号線４８で制御ロジック４２に出力される。制御ロジック４２は、いったん信号線４８上で１の値を読み取ると、グリッチ検出済みレジスタ６５をクリアする。同時に、制御ロジック４２は、更新グリッチ幅レジスタ６７中のビットを１に設定し、これによって、新たに計算されたグリッチ幅が、グリッチ検出済みレジスタ６２から読み取られて、システムクロック周期に変換されて、フィルタリンググリッチ幅設定レジスタ６３中にストアされる。同時に、制御ロジック４２は、グリッチフィルタイネーブルレジスタ６６中のビットを１に設定することによってグリッチフィルタ４４（図５）をオンにする。グリッチフィルタイネーブルレジスタ６６中の値は、上述したように、グリッチフィルタ４４に信号線６８で提供される。
【００２９】
ここで、フィルタリンググリッチ幅設定レジスタ６３中の値は、信号線５９でグリッチフィルタ４４に提供され、ここで、この値を用いて、サンプルクロックを設定することが思い出されるであろう。このサンプルクロックは、システムクロックから導かれ、したがって、フィルタリンググリッチ幅設定レジスタ中にストアされている値もまたシステムクロック周期内にあり、これで、サンプルクロックの設定を簡易化している。グリッチのフィルタリングを最適化するために、サンプリングクロックの周波数は、検出されたグリッチの幅、すなわちフィルタリンググリッチ幅設定レジスタ６３中の値、に等しい周期を有する発振信号の周波数に設定するのが望ましい。基本的には、次式が成立する：
【数１】
2004056803.tif 000004
ここで、Ｆｓはサンプリング周波数、Ｐｓｙｓはシステムクロックの１サイクルの周期、Ｗｄはシステムクロック周期に変換されたフィルタリンググリッチ幅設定レジスタ６３中の値である。式中の「以下」の記号は、サンプリングが確実に最適化されるように、オプションのガードタイムをサンプリング周波数の設定の際に提供されることを示すために用いられている。本書に記載の実施形態は、グリッチ幅をリアルタイムで更新するので、ガードタイムを与えることは必要であるとは考えられない。しかしながら、設計者は、たとえば、グリッチ幅が互いに隣り合ったグリッチ間でかなり変動するような場合には、このようなガードタイムを与えることを希望することがある。
【００３０】
ガードタイムは、次の様に与えられる。カウンタ８８はインタフェースクロック周波数でカウントすると仮定すると、これは、Ｗｄｓを次式のように決定することによって遂行される：
【数２】
2004056803.tif 000005
ここで、Ｗｄｓはシステムクロック周期中でのグリッチ幅、ＣＯＵＮＴはカウンタ８８中（すなわち、検出済みグリッチ幅レジスタ６２中）の最終カウント値、Ｆｓｙｓはシステムクロック周波数、ＧＵＡＲＤは所望のガードタイムを与えるために選択された係数、ＦＩＣはインタフェースクロック周波数である。したがって、たとえば、カウンタ８８の最終カウント値が４であるとすると、システムクロック周波数は４８ＭＨｚであり、インタフェースクロック周波数は６ＭＨｚであり、ＧＵＡＲＤは１という値を有する、すなわち、余分のガードタイムは選択されない。すると、次式のようになる：
【数３】
2004056803.tif 000006
【００３１】
したがって、式（１）によって次式が与えられる：
【数４】
2004056803.tif 000007
【００３２】
ここで、ガードタイムが所望される場合、サンプリング周波数は係数ＧＵＡＲＤの分だけ減少する。上の例では、係数ＧＵＡＲＤが１．１に等しいように選択されると、サンプリング周波数は１．５ＭＨｚから１．３７ＭＨｚに変化する。結果として得られるサンプリング周波数の周期の余分の時間が、所望のガードタイムとなる。
【００３３】
２μｓという初期デフォルト値が、検出済みグリッチ幅レジスタ６２中に与えられるのが望ましい。これは、スマートカードからの信号上に存在するほとんどのグリッチの幅が２μｓ未満であるためである。初期デフォルト値がこのような値であると、制御ロジック４２は、たとえば、単にグリッチフィルタイネーブルレジスタ６６中のビットを１に設定するだけでグリッチフィルタ４４をイネーブルさせる第１のモードでプログラムすることが可能である。これで、グリッチ探知器イネーブルレジスタ６４中のビットを設定し、次に、上記の計算を実行して、グリッチ幅を発見する必要がなくなる。しかしながら、パリティチェッカ２４がより多くのパリティエラーを報告し続ける場合、制御ロジック４２を、グリッチ幅の計算を含む上述したような動作全体がこの後に続く第２のモードに切り替わるようにプログラムすることが可能である。
【００３４】
最初のグリッチが検出され、また、上記のステップが実行された後では、グリッチ検出器６０は、信号線４５上の信号を監視し続ける。検出済みグリッチ幅レジスタ６２中の初期デフォルト値をオーバーライトする代わりに、以前に計算された値がオーバーライトされる点を除いて、同じ動作が実行される。また、グリッチ探知器イネーブルレジスタ６４中のビットを再設定する必要はない。
【００３５】
所望しだいで、本発明の実施例にヒステリシス機能を備えるようにすれば利点がある。ヒステリシス機能とは、システムが、ビットの最後でグリッチによるトグリングが発生するのを防止するようにすることである。ここで図７を参照すると、この機能の実現例が示されている。この図は図５に類似しているが、ＭＵＸ５８の出力からのフィードバック経路上にＯＲゲート７０が追加されており、このゲートの他方の入力がラッチ５０の出力となっており、ＯＲゲート７０の出力が投票ユニット５４の入力となっている。
【００３６】
本発明とその利点を詳細に説明したが、さまざまな修正や、置き換えや、変更が、添付のクレームによって定められる本発明の精神と範囲から逸脱することなく可能であることを理解すべきである。
【００３７】
以上の説明に関してさらに以下の説明を開示する。
（１）　２つのビット値を表す２つの信号レベル間で変化し、所定の入力ビット周期を有する非同期入力データ信号を受信し、該入力データ信号に対応する出力データ信号を送出するデータ通信コントローラにおいて、反転した信号レベルを含み、前記所定のビット周期未満のグリッチ持続時間を有し、該入力データ信号に乗ったグリッチをフィルタリングする方法であり、該方法は、
前記所定の入力ビット周期未満の所定の持続時間を有する信号レベルが反転したことを検出することによって、前記入力データ信号中のグリッチを検出するステップと、
前記グリッチ持続時間に対応するグリッチ時間値を決定するステップと、
前記グリッチ時間値からサンプリングクロックレートを決定するステップと、前記サンプリングクロックレートで前記入力データ信号をサンプリングして、シーケンスを成す入力データサンプルを生成するステップと、
所定の投票数の入力データサンプルを監視し、前記シーケンスを成す入力データサンプルの多数の値を表す出力信号を提供するステップと、
後続の投票数の入力データサンプルを監視し、これら後続の入力データサンプルの多数の値を表す出力信号を提供するステップと、
を含む前記方法。
（２）　基準クロック周期を有する基準クロックを提供し、
グリッチ時間値を決定する前記ステップが、グリッチ内での前記基準クロック周期のカウント値を決定することによって実行される、
第１項記載の方法。
（３）　前記サンプリングクロックレートを決定するステップが、前記サンプリングクロックレートを前記グリッチ持続時間に等しい周期を有する発振信号の周波数に設定することによって、実行される、第１項記載の方法。
（４）　サンプリングクロックレートを決定する前記ステップが、該サンプリングクロックレートを、次式の値に設定することによって実行される、第２項記載の方法であって、
Ｆｓ＝１／（Ｐｓｙｓ・Ｗｄ）
であり、ここで、Ｆｓはサンプリングクロックレート、Ｐｓｙｓは前記基準クロックの１サイクルの周期、Ｗｄは前記基準クロック周期のカウント値である前記方法。
（５）　前記所定の投票数の入力データサンプルを監視するステップが、連続する所定の投票数の入力データサンプルを監視することによって実行される、第１項記載の方法。
（６）　前記入力データ信号のエラー要因を監視するステップをさらに含み、
グリッチを検出する前記ステップが、所定の数のエラー要因が検出されたときに開始される、第１項記載の方法。
（７）　プログラム可能グリッチフィルタユニットであり、該プログラム可能グリッチフィルタユニットに対して入力として提供される非同期データ信号からグリッチをフィルタリングし、前記非同期データ信号は２つのビット値を表す２つの信号レベル間を変化し、所定の入力ビット周期を有し、前記入力データ信号に対応する出力データ信号を送出する前記プログラム可能グリッチフィルタユニットにおいて、前記グリッチは、反転した信号レベルを含み、該所定の入力ビット周期未満のグリッチ持続時間を有し、前記非同期データ信号上に乗るものであり、前記グリッチフィルタユニットは、
前記所定のビット周期未満の所定の持続時間を有する前記非同期データ信号のレベルが反転したことを検出し、前記グリッチ持続時間に対応するグリッチ時間値を決定するグリッチ検出器と、
前記グリッチ時間値から決定されたサンプリングクロックレートで前記非同期データ信号をサンプリングして入力データサンプルを提供し、該入力データサンプルの多数の値を表す出力信号を提供するグリッチフィルタと、
を具備する前記プログラム可能なグリッチフィルタユニット。
（８）　基準クロック周期を有する基準クロックを提供し、
前記グリッチ検出器が、グリッチ内での前記基準クロック周期のカウント値を決定することによって前記グリッチ時間値を決定する、
第７項記載のプログラム可能なグリッチフィルタユニット。
（９）　前記グリッチフィルタが、前記サンプリングクロックレートを前記グリッチ持続時間に等しい周期を有する発振信号の周波数に設定することによって、前記サンプリングクロックレートを決定するようになっている、第７項記載のプログラム可能なグリッチフィルタユニット。
（１０）　前記グリッチフィルタが、
所定の奇数のビット位置を有し、前記入力データサンプルを受信して、これらを自身の中でシフトするシフトレジスタと、
前記サンプリングクロックレートでサンプリングクロックを発生し、入力データサンプルを前記シフトレジスタ中でシフトするレートを制御するサンプリングクロック発生器と、
前記シフトレジスタ中の入力データサンプルの多数のレベルに対応する出力信号を提供する投票ユニットと、
を具備する、第７項記載のプログラム可能グリッチフィルタユニット。
【００３８】
（１１）　２つのビット値を表す２つの信号レベルの間を変化し、所定の入力ビット周期を有する非同期入力データ信号を受信し、また、この入力データ信号に対応する出力データ信号を送出するデータ通信コントローラ中でグリッチをフィルタリングする装置と方法。このグリッチは、入力データ信号上に反転した信号レベルを含み、この所定のビット周期未満のグリッチ持続時間を有し、入力データ信号に発生するグリッチは、この所定の入力ビット周期未満の所定の持続時間を有する信号レベルが反転したことを検出することによって、グリッチ検出器（６８）内で検出される。このグリッチ持続時間に対応するグリッチ時間値を決定し、次に、サンプリングクロックレートをこのグリッチ時間値から決定する。この入力データ信号は、このサンプリングクロックレートでグリッチフィルタ（４４）中でサンプリングされて、入力データサンプルのシーケンスが生成される。所定の投票数の入力データサンプルを、投票ユニット（５４）で監視して、出力信号を提供し、これで、このシーケンスを成す入力データサンプルの多数の値を表す。最終的に、それに続く投票数の入力データサンプルを監視して、出力信号を提供し、これで、これら後続の入力データサンプルの多数の値を表すようにする。
【図面の簡単な説明】
本発明の上記及び他の特徴は、添付図面と共に、本発明の詳細な説明を読めば当業者には明らかであろう。
【図１】スマートカードとＰＣＩバスとの間の先行技術によるインタフェース装置のブロック図である。
【図２】ＩＳＯ７８１６規格に適合する信号の信号タイミング図である。
【図３】図２の図に似ており、さらに、グリッチの存在を示す信号タイミング図である。
【図４】本発明のある実施形態を組み込んだスマートカードインタフェースユニットのブロック図である。
【図５】図４のグリッチフィルタのブロック図である。
【図６】図４のグリッチ検出／調整ブロックのブロック図である。
【図７】図５のフィルタに似ており、さらに、オプションのヒステリシス機能を含むグリッチフィルタのブロック図である。
【図８】図６のグリッチ検出器のブロック図である。
【符号の説明】
２９　ゲート
４０　スマートカードインターフェイスユニット
４１　プログラム可能グリッチフィルタ
４５　信号線
４６　信号線
４７　信号線
４８　信号線
４９　信号線
５０　信号線
５９　信号線
６８　信号線
【図１】
2004056803.tif 000008
【図２】
2004056803.tif 000009
【図３】
2004056803.tif 000010
【図４】
2004056803.tif 000011
【図５】
2004056803.tif 000012
【図６】
2004056803.tif 000013
【図７】
2004056803.tif 000014
【図８】
2004056803.tif 000015