(57)【要約】【課題】クロックclkとは非同期のシリアルデータsinを確実に取り込んでパラレルデータdat[0]〜dat[N-1]に変換する。【解決手段】シリアルインタフェースデータ入力回は、サンプリングイネーブル生成回路２０と、書き込みイネーブル生成部３０と、ANDゲート４０−０，・・・と、F/F５０−０，・・・とを有している。回路２０は、クロックclkによりストローブ信号stbを同期化して、シリアルデータsinをサンプリングするためのイネーブル信号sinenbを生成する。生成部３０は、イネーブル信号sinenbをカウントしてこのカウント値をデコードし、出力対象となるパラレルデータdat[0]，・・・における任意ビットへの書き込みイネーブル信号sdec[N-1:0]を生成する。この信号sdec[N-1:0]により、ANDゲート４０−０，・・・を介して、F/F５０−０，・・・への書き込みの順番が決められる。【選択図】図１
2008060686.tif 000002
【特許請求の範囲】
【請求項１】
入力されるシリアルデータに同期したストローブ信号が与えられ、前記シリアルデータとは非同期のクロック信号により前記ストローブ信号を同期化して、前記シリアルデータをサンプリングするためのサンプリングイネーブル信号を生成して出力するサンプリングイネーブル生成部と、
前記サンプリングイネーブル信号を計数してこの計数値をデコードし、出力対象となるＮビット（但し、N；２以上の整数）のパラレルデータにおける任意ビットへの書き込みイネーブル信号を生成して出力する書き込みイネーブル生成部と、
前記サンプリングイネーブル信号、及び前記書き込みイネーブル信号をそれぞれ入力し、前記サンプリングイネーブル信号によりゲートが開いて前記書き込みイネーブル信号を出力するN個のゲート回路と、
前記シリアルデータと前記ゲート回路から出力される前記書き込みイネーブル信号とがそれぞれ与えられ、前記書き込みイネーブル信号に基づき、前記シリアルデータを取り込んで保持し、前記Nビットのパラレルデータを出力するN個のデータ保持回路と、
を有することを特徴とするシリアルインタフェースデータ入力回路。
【請求項２】
前記サンプリングイネーブル生成部は、
前記ストローブ信号が与えられ、前記クロック信号に同期して前記ストローブ信号を取り込み、前記サンプリングイネーブル信号を生成して出力するサンプリングイネーブル生成回路により構成されていることを特徴とする請求項１記載のシリアルインタフェースデータ入力回路。
【請求項３】
前記サンプリングイネーブル生成部は、
前記ストローブ信号が与えられ、前記クロック信号に同期して前記ストローブ信号を取り込み、前記サンプリングイネーブル信号を生成して出力するサンプリングイネーブル生成回路と、
前記サンプリングイネーブル信号によりリセットされ、前記クロック信号に基づき前記ストローブ信号の任意の変化の間隔を計数し、この計数値と設定値との関係に応じて、前記書き込みイネーブル生成部内の前記計数値をリセットするためのカウントクリア信号を生成して出力するカウントクリア生成回路と、
により構成されていることを特徴とする請求項１記載のシリアルインタフェースデータ入力回路。
【請求項４】
前記サンプリングイネーブル生成回路は、
前記ストローブ信号が与えられ、前記クロック信号に同期して前記ストローブ信号の立ち上がりエッジ及び／又は立ち下がりエッジから前記サンプリングイネーブル信号を生成して出力する構成であることを特徴とする請求項２又は３記載のシリアルインタフェースデータ入力回路。
【請求項５】
前記カウントクリア生成回路は、
前記サンプリングイネーブル信号によりリセットされ、前記クロック信号を基づき前記ストローブ信号の任意の変化の間隔を計数して計測値を出力するカウンタと、
前記カウンタから出力される前記計数値と設定値とを比較して前記計数値が前記設定値と等しいときには前記カウントクリア信号を出力する比較器と、
を有することを特徴とする請求項３記載のシリアルインタフェースデータ入力回路。
【請求項６】
前記データ保持回路は、フリップフロップ回路であることを特徴とする請求項１〜５のずれか１項に記載のシリアルインタフェースデータ入力回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路等において、シリアルデータを非同期に入力してパラレルデータに変換するシリアルインタフェースデータ入力回路に関するものである。
【背景技術】
【０００２】
従来、データインタフェースの方法の1つとして、例えば、下記の特許文献１、２等に記載されているように、シリアルインタフェースデータ入力回路が広く用いられている。
【０００３】
【特許文献１】特開平９−３２６８３３号公報
【特許文献２】特開２００５−５９９９号公報
【０００４】
この特許文献１には、シリアルインタフェースデータ入力回路に関する技術が記載され、更に、特許文献２には、クロックアンドデータリカバリ回路に関する技術が記載されている。
【０００５】
図２は、特許文献１等に記載された従来のシリアルインタフェースデータ入力回路の一例を示す回路図である。
【０００６】
このシリアルインタフェースデータ入力回路１０は、内部のクロック信号（以下単に「クロック」という。）clkを生成するクロック生成回路１１と、外部から入力されるシリアルデータsinを、クロックclkに同期して取り込んでパラレルデータに変換するNビット（例えば、８ビット）のシフトレジスタ１２とを有している。シフトレジスタ１２は、データ入力端子din、データ出力端子do、及びクロックclkを入力するクロック端子（図中のF/Fにおける△部分）をそれぞれ有する８個のフリップフロップ回路（以下「F/F」という。）１２−０〜１２−７を有し、これらが縦続接続されている。
【０００７】
シリアルインタフェースデータ入力回路１０の外部には、例えば、シリアルデータ生成回路１３が設けられている。シリアルデータ生成回路１３は、クロック生成回路１１から供給されるクロックclkに同期したシリアルデータsinを生成し、これを初段のF/F１２−０へ供給する回路である。
【０００８】
図２のシリアルインタフェースデータ入力回路１０において、シリアルデータ生成回路１３から入力されたシリアルデータsinは、このシリアルデータsinに同期したクロックclkに基づきシフト動作するシフトレジスタ１２に取り込まれて８ビットのパラレルデータdat[0]〜dat[7]に変換され、各F/F１２−０〜１２−７のデータ出力端子doから出力されて、他の回路へ供給される。
【０００９】
このような８ビットのパラレルデータdat[0]〜dat[7]を出力するシリアルインタフェースデータ入力回路１０において、例えば、入力されるシリアルデータsinが８ビットよりも少ない６ビットのシリアルデータd[0]〜d[5]の場合、特許文献１に記載されているように、下記の問題が生じる。
【００１０】
シリアルデータsin（例えば、６ビットのシリアルデータd[0]〜d[5]）がシリアルインタフェースデータ入力回路１０に入力されると、このシリアルデータd[0]〜d[5]は、シフトレジスタ１２の最上位のF/F１２−０から順次下位側のF/F１２−１〜１２−７へシフトされる。これにより、シリアルデータd[0]〜d[5]中の最下位のビットデータd[5]は、パラレルデータdat[0]〜dat[7]中の最下位のビットデータdat[7]とはならず、下位側から３番目のF/F１２−５の内部状態として記憶されている状態となる。つまり、この場合のパラレルデータはdat[2]，dat[3]，dat[4]，dat[5]，dat[6]，dat[7]，×，×となる。そのため、６ビットのシリアルデータd[0]〜d[5]中の最下位のビットデータd[5]が８ビットのシフトレジスタ１２の最下位のF/F１２−７に書き込まれた状態になるようにする必要がある。
【００１１】
６ビットのシリアルデータd[0]〜d[5]を８ビットのシフトレジスタ１２の最下位のF/F１２−７から詰め込むためには、シリアルデータd[0]〜d[5]の最下位のビットデータd[5]が８ビットのシフトレジスタ１２の下位側から３番目のF/F１２−５の内部状態として記憶されるタイミングでクロックclkの数を３倍にして、６ビットのシリアルデータd[0]〜d[5]のシフト数を３回に増やす。この結果、６ビットのシリアルデータd[0]〜d[5]は、８ビットのシフトレジスタ１２の最下位のF/F１２−７から詰め込まれた状態になる。この動作がサインエクステンドと呼ばれている。ところが、このようなサインエクステンドを行うためには、通常のクロックclkよりも周期の短い特殊なデータサンプリング信号が必要になるという問題がある。
【００１２】
そこで、特許文献１のシリアルインタフェースデータ入力回路では、この問題を解決するために、データ保持信号でリセットされるカウンタによってクロックclkを計数（カウント）し、この計数結果（カウント結果）をデコーダによって解読（デコード）し、このデコード結果に基づく信号にて、シリアルデータsinを順次、シフトレジスタ１２へ取り込む構成にしている。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献１のような従来のシリアルインタフェースデータ入力回路では、下記の（ａ）、（ｂ）のような課題があった。
【００１４】
（ａ）  特許文献１のような従来のシリアルインタフェースデータ入力回路では、クロックclkとは非同期に転送されてくるシリアルデータsinをサンプリングするための工夫がされていないので、非同期に転送されてくるシリアルデータsinをF/F１２−０〜１２−７へ確実に取り込むことが困難である。そのため、特許文献１のようなシリアルインタフェースデータ入力回路では、シリアルデータsinが、クロックclkに同期したデータに限られ、不利不便であった。
【００１５】
この解決策として、シリアルデータsinを非同期で入力するためには、例えば、特許文献２に記載されたクロックアンドデータリカバリ回路を用い、シリアルデータsinからサンプリングクロックckを生成して、シリアルデータsinをサンプリングすることが考えられる。しかし、クロックアンドデータリカバリ回路を用いると、この回路の構成が複雑で規模が大きいので、回路規模が大きくなるという問題が生じる。
【００１６】
（ｂ）  従来のシリアルインタフェースデータ入力回路では、Nビットのシリアルデータsinをパラレル変換するのに、Nサイクルの時間が掛かるため、データの処理能力が落ちるという課題があった。
【００１７】
本発明は、このような従来の課題を解決し、シリアルデータを非同期に入力してパラレル変換し、処理能力を上げるための容易なシリアルインタフェースデータ入力回路を提供するものである。
【課題を解決するための手段】
【００１８】
本発明のシリアルインタフェースデータ入力回は、サンプリングイネーブル生成部と、書き込みイネーブル生成部と、N個（但し、N；２以上の整数）のゲート回路と、N個のデータ保持回路とを有している。
【００１９】
前記サンプリングイネーブル生成部は、入力されるシリアルデータに同期したストローブ信号が与えられ、前記シリアルデータとは非同期のクロックにより前記ストローブ信号を同期化して、前記シリアルデータをサンプリングするためのサンプリングイネーブル信号を生成して出力するものである。前記書き込みイネーブル生成部は、前記サンプリングイネーブル信号をカウントしてこのカウント値をデコードし、出力対象となるＮビットのパラレルデータにおける任意ビットへの書き込みイネーブル信号を生成して出力するものである。
【００２０】
前記N個のゲート回路は、前記サンプリングイネーブル信号、及び前記書き込みイネーブル信号をそれぞれ入力し、前記サンプリングイネーブル信号によりゲートが開いて前記書き込みイネーブル信号を出力する回路である。更に、前記N個のデータ保持回路は、前記シリアルデータと前記ゲート回路から出力される前記書き込みイネーブル信号とがそれぞれ与えられ、前記書き込みイネーブル信号に基づき、前記シリアルデータを取り込んで保持し、前記Nビットのパラレルデータを出力する回路である。
【発明の効果】
【００２１】
本発明によれば、内部のクロックとは非同期に転送されてくるシリアルデータをサンプリングするためのサンプリングイネーブル生成部を設けたので、非同期に転送されてくるシリアルデータを確実にN個のデータ保持回路へ取り込むことができる。これにより、従来のようなクロックアンドデータリカバリ回路を設ける必要がないので、小規模な回路構成で、高精度な非同期シリアルインタフェースデータ入力回路を実現できる。
【発明を実施するための最良の形態】
【００２２】
シリアルインタフェースデータ入力回は、サンプリングイネーブル生成回路と、書き込みイネーブル生成部と、N個（但し、N；２以上の整数）のゲート回路と、N個のF/Fとを有している。
【００２３】
前記サンプリングイネーブル生成回路は、入力されるシリアルデータに同期したストローブ信号が与えられ、前記シリアルデータとは非同期のクロックにより前記ストローブ信号を同期化して、前記シリアルデータをサンプリングするためのサンプリングイネーブル信号を生成して出力する。前記書き込みイネーブル生成部は、カウンタ及びデコード回路を有し、前記サンプリングイネーブル信号を前記カウンタによりカウントしてこのカウント値を前記デコード回路によりデコードし、出力対象となるＮビットのパラレルデータにおける任意ビットへの書き込みイネーブル信号を生成して出力する。
【００２４】
前記N個のゲート回路は、例えば、N個のANDゲートにより構成され、前記サンプリングイネーブル信号、及び前記書き込みイネーブル信号をそれぞれ入力し、前記サンプリングイネーブル信号によりゲートが開いて前記書き込みイネーブル信号を出力する。更に、前記N個のF/Fは、前記シリアルデータと前記ANDゲートから出力される前記書き込みイネーブル信号とがそれぞれ与えられ、前記書き込みイネーブル信号に基づき、前記シリアルデータを取り込んで保持し、前記Nビットのパラレルデータを出力する。
【実施例１】
【００２５】
（実施例１の構成）
図１は、本発明の実施例１を示すNビット構成のシリアルインタフェースデータ入力回路の概略の回路図である。
【００２６】
Nビット構成のシリアルインタフェースデータ入力回路は、例えば、図２のクロック生成回路１１で生成した内部のクロックclk、あるいは、外部から入力される内部のクロックclkとは非同期に、複数ビットのデータd0,d1,d2,・・・からなるシリアルデータsin、ストローブ信号stb、及びリセット信号rstを入力し、そのシリアルデータsinをNビット（但し、N；２以上の整数）のパラレルデータdat[0]〜dat[N-1]に変換して他の回路へ与える回路である。ここで、ストローブ信号stbは、クロックclkとは非同期であり、例えば、シリアルデータsinを構成するビットデータd0,d1,d2,d3,d4,・・・のうち、偶数番目の各ビットデータd0,d2,d4,・・・における先頭部分で立ち上がり、奇数番目の各ビットデータd1,d3,d5,・・・における先頭部分で立ち下がる信号である。
【００２７】
このシリアルインタフェースデータ入力回路は、サンプリングイネーブル生成部を構成するサンプリングイネーブル生成回路２０と、書き込みイネーブル生成部３０とを有し、これらの出力側にN個のゲート回路（例えば、２入力の論理積ゲート（以下「ANDゲート」という。））４０−K（但し、K；０〜(N-1)）が接続され、更に、このN個の２入力ANDゲート４０−Kの出力側に、シリアルデータsinをパラレル変換するためのN個のデータ保持回路（例えば、F/F）５０−K(但し、K；０〜(N-1))が接続されている。
【００２８】
サンプリングイネーブル生成回路２０は、入力されるシリアルデータsinに同期したストローブ信号stbが与えられ、そのシリアルデータsinとは非同期のクロックclkによりストローブ信号stbを同期化して、シリアルデータsinをサンプリングするためのサンプリングイネーブル信号sinenbを生成して出力する回路であり、３個のF/F２１−０〜２１−２と、２入力の排他的論理和ゲート（以下「EXORゲート」という。）２２とにより構成されている。
【００２９】
３個のF/F２１−０〜２１−２のうち、F/F２１−０は、ストローブ信号stbを入力するデータ入力端子din、データsreg[0]を出力するデータ出力端子do、クロックclkを入力するクロック端子、及びリセット信号rstを入力するリセット端子を有し、F/F２１−１は、データsreg[0]を入力するデータ入力端子din、データsreg[1]を出力するデータ出力端子do、クロックclkを入力するクロック端子、及びリセット信号rstを入力するリセット端子を有し、F/F２１−２は、データsreg[1]を入力するデータ入力端子din、データsreg[2] を出力するデータ出力端子do、クロックclkを入力するクロック端子、及びリセット信号rstを入力するリセット端子を有し、これらのF/F２１−０〜２１−２が縦続接続されている。F/F２１−１及び２１−２のデータ出力端子doは、サンプリングイネーブル信号sinenbを出力する２入力EXORゲート２２の入力端子に接続されている。
【００３０】
書き込みイネーブル生成部３０は、サンプリングイネーブル信号sinenbをカウントしてこのカウント値をデコードし、Ｎビットのパラレルデータdat[0]〜dat[N-1]における任意ビットへの書き込みイネーブル信号用のNビットの出力データsdec[N-1:0]を生成して出力するものであり、例えば、(X+1)ビットのカウンタ３１と、この出力端子に接続されたデコード回路３２とにより構成されている。(X+1)ビットにおけるXは、X=log2(N+1)、但し、小数点以下を切り上げた整数である。
【００３１】
（X+1）ビットのカウンタ３１は、クロックclkを入力するクロック端子、サンプリングイネーブル信号sinenbを入力するカウントイネーブル端子cenb、リセット信号rstを入力するリセット端子crst、及び(X+1)ビットの出力データscnt[X:0]を出力する出力端子を有し、サンプリングイネーブル信号sinenbが論理“１”のときに、クロックclkに同期して、＋１ずつカウントアップを行ってこの出力データscnt[X:0]をデコード回路３２へ出力し、リセット信号rstによってカウント値がリセットされるものである。デコード回路３２は、(X+1)ビットの出力データscnt[X:0]を入力し、これをデコードしてNビットの出力データsdec[N:0]をN個のANDゲート４０−K(=４０−０〜４０−(N-1))へ出力する回路である。
【００３２】
N個のANDゲート４０−K(=４０−０〜４０−(N-1))は、サンプリングイネーブル信号sinenb、及びNビットの出力データsdec[N:0]をそれぞれ入力し（即ち、出力データsdec[N:0]は０ビット目から(N-1)ビット目まで順にANDゲート４０−０〜４０−(N-1)に入力され）、サンプリングイネーブル信号sinenbの“１”によりゲートが開いて出力データdenb[0]〜denb[N-1]をN個のF/F５０−K(=５０−０〜５０−(N-1))へそれぞれ出力するものである。
【００３３】
N個のF/F５０−K(=５０−０〜５０−(N-1))は、シリアルデータsinをパラレル変換するためのシリアルデータsinと、ANDゲート４０−K(=４０−０〜４０−(N-1))の出力データdenb[0]〜denb[N-1]とがそれぞれ与えられ、これらの出力データdenb[0]〜denb[N-1]により書き込み可能（ライトイネーブル）となって、クロックclkの立ち上がりに応じてシリアルデータsinを取り込んで保持し、Nビットのパラレルデータdat[0]〜dat[N-1]を出力するものである。各F/F５０−０〜５０−(N-1)は、シリアルデータsinを入力するデータ入力端子din、各出力データdenb[0]〜denb[N-1]を入力するライトイネーブル端子enb、クロックclkを入力するクロック端子、及び、各データdat[0]〜dat[N-1]を出力するデータ出力端子doをそれぞれ有している。
【００３４】
図３は、図１の構成をＮ＝８として、８ビット構成のシリアルインタフェースデータ入力回路を示す回路図であり、図１中の要素と共通の要素には共通の符号が付されている。
【００３５】
この８ビット構成のシリアルインタフェースデータ入力回路では、図１のNビット出力の書き込みイネーブル生成部３０が、８ビット出力の書き込みイネーブル生成部３０Aにより構成され、図１のN個の２入力ANDゲート４０−０〜４０−(N-1)及びN個のF/F５０−０〜５０−(N-1)が、８個の２入力ANDゲート４０−０〜４０−７及び８個のF/F５０−０〜５０−８により構成されている。８ビット出力の書き込みイネーブル生成部３０Aは、３ビットのカウンタ３１Aと、この出力側に接続された８ビット出力のデコード回路３２Aとにより構成されている。
【００３６】
３ビットのカウンタ３１Aは、クロックclkを入力するクロック端子、サンプリングイネーブル信号sinenbを入力するカウントイネーブル端子cenb、リセット信号rstを入力するリセット端子crst、及び３ビットの出力データscnt[2:0]を出力するデータ出力端子を有し、サンプリングイネーブル信号sinenbが論理“１”のときに、クロックclkに同期して、＋１ずつカウントアップを行ってこの出力データscnt[2:0]をデコード回路３２Aへ出力し、リセット信号rstによってカウント値がリセットされるものである。
【００３７】
デコード回路３２Aは、３ビットの出力データscnt[2:0]を入力し、これをデコードして８ビットの出力データsdec[7:0]を８個のANDゲート４０−０〜４０−７へ出力する回路である。このデコード回路３２Aは、例えば、カウンタ３１Aからの３ビットの出力データscnt［2：0］を入力し、データscnt［2：0］の値が“０”のときには出力データsdec［7：0］＝８ビットヘキサ（１６進数）０１(＝8’h01）、データscnt［2＝0］の値が“１”のときには出力データsdec［7：0］＝8’h02、・・・、出力データscnt［2：0］の値が“７”のときには出力データsdec［7：0］＝8’h80をデコード結果として出力する。例えば、出力データsdec[7：0]＝8’h01は１６進数で示された“０１”を８ビットの２進数で示された出力を示すという意味で、２進数表示で表すと“０００００００１”となり、最下位ビットであるsdec[0]が“１”でその他のビットは“０”とするもので、即ち、データscnt［2：0］の値に応じて、出力データsdec［7：0］の８ビット内の該当ビット位置のみ“１”、その他のビットは“０”となるようにデコードし、このデコード結果である８ビットの出力データsdec［7：0］を出力する。この出力データsdec[N:0]は、０ビット目から７ビット目まで順にANDゲート４０−０〜４０−７に入力される。
【００３８】
（実施例１の動作）
図４は、図３のシリアルインタフェースデータ入力回路における動作を示すタイミングチャートである。
【００３９】
時刻Tinit前において、リセット信号rstが“１”となって、カウンタ３１A及びサンプリングイネーブル生成回路２０内のF/F２１−０〜２１−２がリセットされた後に、時刻Tinit時において、リセット信号rstが“０”となる。この時、カウンタ３１Aの出力データscnt[2:0]が“０”であるため、デコード回路３２Aの出力データsdec[7:0]は、８ビットヘキサ０１（＝“8’hOl”）となっている。そして、内部のクロックclkによりF/F２１−０〜２１−２，５０−０〜５０−７、及びカウンタ３１Ａが動作し、このクロックclkと非同期のシリアルデータsinと、このシリアルデータsinに同期したストローブ信号stbとが入力される。
【００４０】
リセット後の時刻TO時において、ストローブ信号stbが“１”に立ち上がり、内部のクロックclkと非同期に、シリアルデータsinがビットデータ“d0”に変化する。時刻TO直後のクロックclkの立ち上がりで、サンプリングイネーブル生成回路２０内のF/F２１−０は、ストローブ信号stbの“１”をラッチする。
【００４１】
時刻Tlにおいて、サンプリングイネーブル生成回路２０内のF/F２１−１は、F/F２１−０の出力データsreg[0]（＝“１”）をラッチする。この時、F/F２１−２の出力データsreg[2]は“０”であるため、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbが“l”となり、ANDゲート４０−０〜４０−７が開く。カウンタ３１Aの出力データscnt[2:0]は“０”であり、これがデコード回路３２Aによりデコードされ、この出力データsdec[7:0]が“8，hOl”、即ち、データsdec[0]のみ“１”であるため、これがANDゲート４０−０を通り、F/F５０−０のライトイネーブル端子enbに入力されているANDゲート４０−０の出力データdenb[0] が“１”となる。これにより、F/F５０−０は、次のクロックclkの立ち上がりで、シリアルデータsin中のビットデータ“d0”をラッチする。又、サンプリングイネーブル信号sinenbの“１”により、カウンタ３１Aのカウントイネーブル端子cenbは“１”となっているため、次のクロックclkの立ち上がりでカウンタ３１Aが“１”にカウントアップする。
【００４２】
時刻Tlの直後のクロックclkの立ち上がりで、F/F２１−２の出力データsreg[2] 及びF/F２１−１の出力データsreg[1]は“１”となるので、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbが“０”となる。カウンタ３１Aの出力データscnt[2:0]は“l”となる。この時、サンプリングイネーブル信号sinenbは“０”となっているため、ANDゲート４０−０〜４０−７が閉じ、この出力データdenb[7:0]は“8’hOO”となる。
【００４３】
時刻T2において、ストローブ信号stbが“０”に立ち下がり、内部のクロックclkと非同期に、シリアルデータsinのビットデータが“d1”に変化する。時刻T2直後のクロックclkの立ち上がりで、サンプリングイネーブル生成回路２０内のF/F２１−０は、ストローブ信号stbの０”をラッチする。
【００４４】
時刻T3において、サンプリングイネーブル生成回路２０内のF/F２１−１は、F/F２１−０の出力データsreg[0]（＝“０”）をラッチする。この時、F/F２１−２の出力データsreg[2] は“１”であるため、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbが“１”となり、ANDゲート４０−０〜４０−７が開く。カウンタ３１Aの出力データscnt[2:0]は“１”であり、これがデコード回路３２Aによりデコードされ、この出力データsdec[7:0]が“8’hO2”、即ち、データsdec[1]のみ“１”であるため、これがANDゲート４０−１を通り、F/F５０−１のライトイネーブル端子enbに入力されているANDゲート４０−１の出力データdenb[1]が“１”となる。これにより、F/F５０−１は、次のクロックclkの立ち上がりで、シリアルデータsinのビットデータ“d1”をラッチする。又、サンプリングイネーブル信号sinenbの“１”により、カウンタ３１Aのカウントイネーブル端子cenbが“１”となっているため、カウンタ３１Aは、次のクロックclkの立ち上がりで“２”にカウントアップする。
【００４５】
時刻T3直後のクロックclkの立ち上がりで、F/F２１−２の出力データsreg[2] 、及びF/F２１−１の出力データsreg[1]が“０”となるので、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbは“０”となり、ANDゲート４０−０〜４０−７が閉じる。サンプリングイネーブル信号sinenbの“０”により、カウンタ３１Aの出力データscnt[2:0]は“２”となる。この時、サンプリングイネーブル信号sinenbが“０”となってANDゲート４０−０〜４０−７が閉じているため、この出力データdenb[7:0]が“8’hOO”となる。
【００４６】
以降も同様に動作するが、時刻T4〜T5のように、ストローブ信号stbの変化の間隔（即ち、“１”の間隔）が延びた場合であっても、ストローブ信号stbの立ち上がり、及び立ち下がりサイクルをサンプリングイネーブル生成回路２０内で観測してシリアルデータsinのサンプリングイネーブル信号sinenbを所望のタイミングで生成し、シリアルデータsinをその都度サンプリングする。時刻T4で変化したシリアルデータsinのビットデータ“d10”はF/F５０−２でラッチされ、時刻T5で変化したシリアルデータsinのビットデータ“dll”はF/F５０−３でラッチされ、入力されたシリアルデータsinが順に、F/F５０−０〜５０−７でパラレルデータdat[0]〜dat[N-1]に変換されて出力される。
【００４７】
以上のような８ビット構成のシリアルインタフェースデータ入力回路の動作と同様の動作が、図１に示すNビット構成のシリアルインタフェースデータ入力回路でも行われる。
【００４８】
（実施例１の効果）
本実施例１によれば、内部のクロックclkとは非同期に転送されてくるシリアルデータsinをサンプリングするためのサンプリングイネーブル生成回路２０を設けたので、非同期に転送されてくるシリアルデータsinを確実にF/F５０−０〜５０−(N-1)へ取り込むことができる。これにより、従来のようなクロックアンドデータリカバリ回路を設ける必要がないので、小規模な回路構成で、高精度な非同期シリアルインタフェースデータ入力回路を実現できる。
【実施例２】
【００４９】
（実施例２の構成）
図５は、本発明の実施例２における８ビット構成のシリアルインタフェースデータ入力回路を示す概略の回路図であり、実施例１を示す図３中の要素と共通の要素には共通の符号が付されている。
【００５０】
本実施例２のシリアルインタフェースデータ入力回路では、サンプリングイネーブル生成部が、図３と同様のサンプリングイネーブル生成回路２０と、カウンタ３１Ａのクリア条件に、カウントクリア信号srstを用いるために新たに設けられたカウントクリア生成回路６０とにより構成されている。
【００５１】
カウントクリア生成回路６０は、サンプリングイネーブル生成回路２０から出力されるサンプリングイネーブル信号sinenbによりリセットされ、内部のクロックclkに基づき、入力されるストローブ信号stbの任意の変化の間隔をカウントし、このカウント値が設定値と等しくなったときには、カウンタ３１Aをリセットするためのカウントクリア信号srstを生成して出力する回路である。つまり、このカウントクリア生成回路６０は、ストローブ信号stbが、任意のクロックサイクル以上変化しなかった場合に、パラレル変換するためのシリアルデータsinの入力が完了したものとみなして、次のパラレルデータdat[0]〜dat[7]用のシリアルデータsinの入力を開始するものであり、このカウントクリア生成回路６０を設けることにより、前パラレルデータdat[0]〜dat[7]がF/F５０−０〜５０−７に保持された状態から、次パラレルデータdat[0]〜dat[7]の上書きを行う必要がない場合は、シリアルデータ入力を格納するF/F５０−０〜５０−７の位置をF/F５０−０に初期化することができる構成になっている。
【００５２】
カウントクリア生成回路６０は、例えば、サンプリングイネーブル信号sinenbとリセット信号rstとの論理和を求める２入力の論理和ゲート（以下「ORゲート」という。）６１と、このORゲート６１の出力信号によりリセットされ、内部のクロックclkに基づきストローブ信号stbの任意の変化の間隔をカウントしてカウント結果の出力データcnt[2:0]を出力する３ビットのカウンタ６２と、このカウンタ６２の出力データcnt[2:0]と設定値（例えば、３ビットのヘキサ７＝3'h7)とを比較して比較結果の出力データcnt7を出力する比較器６３と、この比較器６３の出力データcnt7とリセット信号rstとの論理和を求めてカウントクリア信号srstをカウンタ３１Aへ出力する２入力ORゲート６４とにより構成されている。
【００５３】
カウントクリア生成回路６０内のカウンタ６２は、常にデータ1'b1(=“１”）が入力されるカウントイネーブル端子cenb、内部のクロックclkが入力されるクロック端子、ORゲート６１の出力信号が入力されるリセット端子crst、及び、出力データcnt[2:0]を出力するデータ出力端子を有し、カウントイネーブル端子cenbに常に“l”が入力されているので、クロックclkに同期して＋1ずつカウントアップを行う機能を有し、リセット端子crstが“０”の場合に＋１のカウントアップを行い、リセット端子crstが“l”の場合に出力データscnt[2:0]をクロックclkに同期してクリアするものである。
【００５４】
比較器６３は、カウンタ６２の出力データscnt[2:0]と設定値“3'h7”とを比較し、比較結果が一致した場合は出力データcnt7の“１”をORゲート６４へ出力し、不一致の場合は出力データcnt7の“０”をORゲート６４へ出力する。このORゲート６４から出力されるカウントクリア信号srstは、カウンタ３１Aのリセット端子crstに入力されている。その他の構成は、図３のシリアルインタフェースデータ入力回路と同様である。
【００５５】
（実施例２の動作）
図６は、図５のシリアルインタフェースデータ入力回路における動作を示すタイミングチャートである。
【００５６】
時刻Tinit前において、リセット信号rstが“l”となり、ORゲート６１，６４を通してカウンタ６２，３１Ａがリセットされると共に、サンプリングイネーブル生成回路２０内のF/F２１−０〜２１−２がリセットされた後に、時刻Tinit時において、リセット信号rstが“０”となる。この時、カウンタ３１Aの出力データscnt[2:0]が“０”であるため、デコード回路３２Aの出力データsdec[7:0]は、”8’hOl”となっている。そして、内部のクロックclkによりF/F２１−０〜２１−２，５０−０〜５０−７、及びカウンタ３１Ａ，６２が動作し、このクロックclkと非同期のシリアルデータsinと、このシリアルデータsinに同期したストローブ信号stbとが入力される。
【００５７】
リセット後の時刻TO時において、ストローブ信号stbが“１”に立ち上がり、内部のクロックclkと非同期に、リアルデータsinがビットデータ“d0”に変化する。時刻TO直後のクロックclkの立ち上がりで、サンプリングイネーブル生成回路２０内のF/F２１−０は、ストローブ信号stbの“l”をラッチする。
【００５８】
時刻Tlにおいて、サンプリングイネーブル生成回路２０内のF/F２１−１は、F/F２１−０の出力データsreg[0]（＝“１”）をラッチする。この時、F/F２１−２の出力データsreg[2]は“０”であるため、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbが“１”となり、ANDゲート４０−０〜４０−７が開く。カウンタ３１Aの出力データscnt[2:0]は“０”であり、これがデコード回路３２Aによりデコードされ、この出力データsdec［7：0］が“8’hOl”、即ち、データsdec［0］のみ“１”であるため、これがANDゲート４０−０を通り、F/F５０−０のライトイネーブル端子enbに入力されているANDゲート４０−０の出力データdenb［0］が“１”となる。これにより、F/F５０−０は、次のクロックclkの立ち上がりで、シリアルデータsin中のビットデータ“d0”をラッチする。又、サンプリングイネーブル信号sinenbの“１”により、カウンタ３１Aのカウントイネーブル端子cenbは“1“となっているため、次のクロックclkの立ち上がりでカウンタ３１Aが“１”にカウントアップする。
【００５９】
時刻Tl直後のクロックclkの立ち上がりで、F/F２１−２の出力データsreg[2]及びF/F２１−１の出力データsreg[1]は”1”となるので、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbが“０”となる。カウンタ３１Aの出力データscnt[2:0]は“l”となる。この時、サンプリングイネーブル信号sinenbは“０”となっているため、ANDゲート４０−０〜４０−７が閉じ、この出力データdenb[7:0]は”8’hOO”となる。
【００６０】
時刻T2において、ストローブ信号stbが“０”に立ち下がり、内部のクロックclkと非同期に、シリアルデータsinのビットデータが“d1”に変化する。時刻T2直後のクロックclkの立ち上がりで、サンプリングイネーブル生成回路２０内のF/F２１−０は、ストローブ信号stbの値“０”をラッチする。
【００６１】
時刻T3において、サンプリングイネーブル生成回路２０内のF/F２１−１は、F/F２１−０の出力データsreg[0]（＝“０”）をラッチする。この時、F/F２１−２の出力データsreg[2]は“１”であるため、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbが“１”となり、ANDゲート４０−０〜４０−７が開く。カウンタ３１Aの出力データscnt[2:0]は“１”であり、これがデコード回路３２Aによりデコードされ、この出力データsdec［7：0］が“8’hO2”、即ち、データsdec［1］のみ“１”であるため、これがANDゲート４０−１を通り、F/F５０−１のライトイネーブル端子enbに入力されているANDゲート４０−１の出力データdenb［1］が“１”となる。これにより、F/F５０−１は、次のクロックclkの立ち上がりで、シリアルデータsinのビットデータ“d1”をラッチする。又、サンプリングイネーブル信号sinenbの“１”により、カウンタ３１Aのカウントイネーブル端子cenbが“1“となっているため、カウンタ３１Aは、次のクロックclkの立ち上がりで“２”にカウントアップする。
【００６２】
時刻T3直後のクロックclkの立ち上がりで、F/F２１−２の出力データsreg[2]、及びF/F２１−１の出力データsreg[1]が“０”となるので、EXORゲート２２から出力されるサンプリングイネーブル信号sinenbは“０”となり、ANDゲート４０−０〜４０−７が閉じる。サンプリングイネーブル信号sinenbの“０”により、カウンタ３１Aの出力データscnt[2:0]は“２”となる。この時、サンプリングイネーブル信号sinenbが“０”となってANDゲート４０−０〜４０−７が閉じているため、この出力データdenb[7:0]が”8’hOO”となる。
【００６３】
カウンタ６２は、このカウントイネーブル端子cenbに常に“１”が入力されているので、クロックclkの立ち上がり毎にカウントアップを行うが、サンプリングイネーブル生成回路２０から出力されるサンプリングイネーブル信号sinenbが“１”の時は、次のクロックclkの立ち上がりで、ORゲート６１を通して“０”にクリアされる。
【００６４】
例えば、F/F５０−６，５０−７にそれぞれ格納されているデータdat[6],dat[7]を書き換える必要がなかった場合、時刻T5直後のように、ストローブ信号stb及びシリアルデータsinを変化させずに保持させる。ストローブ信号stbが８サイクル以上変化がなかった場合、時刻T5で、サンプリングイネーブル信号sinenbが“l”となり、ORゲート６１を通してカウンタ６２がクリアされてから、カウントアップを始め、時刻T6のクロックclkの立ち上がりで、カウンタ６２の出力データcnt[2:0]が“７”となる。この時、比較器６３の出力データcnt7は“l”となり、ORゲート６４の出力データsrstが“l”となる。時刻T6の次のクロックclkの立ち上がりで、カウンタ３１Aの出力データscnt[2:0]は“０”となり、この出力データscnt[2:0]が“６”，“７”へとカウントアップされずにクリアされるので、F/F５０−６，５０−７には書き込みを行わずに、F/F５０−０から再度書き込みを開始する（即ち、次のパラレルデータの書き込みを開始する）。時刻T6の次のクロックclkの立ち上がりで、サンプリングイネーブル信号sinenbは“l”となっているため、ANDゲート４０−０〜４０−７が開き、時刻T7のクロックclkの立ち上がりで、シリアルデータsin中のビットデータ“d6”をF/F５０−０に書き込み、このデータdat［0］が“d6“となる。
以降も同様に動作する。
【００６５】
（実施例２の効果等）
本実施例２によれば、実施例１と同様の効果がある。その上、カウントクリア生成回路６０を設けたので、F/F５０−０〜５０−７への書き込みの必要の無いシリアルデータsinの入力処理を行う必要が無いので、小規模な回路構成で非同期シリアルインタフェース回路を実現でき、更に、シリアルデータsinのパラレル変換処理能力を向上できる。
【００６６】
なお、本実施例２の図５では、８ビット構成のシリアルインタフェースデータ入力回路について説明したが、図５のカウントクリア生成回路６０を、図１のNビット構成のシリアルインタフェースデータ入力回路に設けることにより、前記と同様の作用効果を奏することができる。
【実施例３】
【００６７】
実施例１、２の図１、図３、図５において、サンプリングイネーブル生成回路２０は他の回路構成に変更しても良い。
【００６８】
図７（ａ）、（ｂ）は、本発明の実施例３を示すサンプリングイネーブル生成回路の回路図である。
【００６９】
図７（ａ）に示すサンプリングイネーブル生成回路２０Ａでは、例えば、図１のサンプリングイネーブル生成回路２０内の２入力EXORゲート２２に代えて、２入力ANDゲート２２Aを設けている。この２入力ANDゲート２２Aでは、F/F２１−１の出力データsreg[1]と、F/F２１−２の出力データsreg[2]における反転データとを入力し、この２入力データの論理積を求めてサンプリングイネーブル信号sinenbを出力する。これにより、ストローブ信号stbの立ち上がりからサンプリングイネーブル信号sinenbが生成され、実施例１及び２とほぼ同様の作用効果が得られる。
【００７０】
図７（ｂ）に示すサンプリングイネーブル生成回路２０Bでは、例えば、図１のサンプリングイネーブル生成回路２０内の２入力EXORゲート２２に代えて、２入力ANDゲート２２Bを設けている。この２入力ANDゲート２２Bでは、F/F２１−１の出力データsreg[1]に対する反転データと、F/F２１−２の出力データsreg[2]とを入力し、この２入力データの論理積を求めてサンプリングイネーブル信号sinenbを出力する。これにより、ストローブ信号stbの立ち下がりからサンプリングイネーブル信号sinenbが生成され、実施例１、２とほぼ同様の作用効果が得られる。
【００７１】
（変形例）
本発明は、上記実施例１〜３に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（１）、（２）のようなものがある。
【００７２】
（１）  実施例１、２の図１、図３、図５において、書き込みイネーブル生成部３０，３０Ａを図示以外の回路で構成したり、あるいは、ANDゲート４０−K（＝４０−０〜４０−(N-1))を否定論理積（NAND)ゲート等の他のゲート回路で構成しても良い。
【００７３】
（２）  実施例２の図５及び図６では、比較器６３の設定値を例えば“3'h7”にし、ストローブ信号stbが８サイクル変化しなかった時に、シリアルデータsinの入力完了とみなして、次パラレルデータのシリアル入力を開始しているが、８サイクルに限らず、比較器６３の設定値を他の数値にすることにより、サンプリングイネーブル信号sinenbがアクティブになるサイクルに対して、シリアルデータ入力が安定しているタイミングであれば、任意に設定可能である。例えば、サイクル数を１０にする場合は、カウンタ６２が４ビット構成になり、設定値が“4'h9”、この出力データcnt[2:0]がcnt[3:0]となる。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施例１を示すNビット構成のシリアルインタフェースデータ入力回路の概略の回路図である。
【図２】従来のシリアルインタフェースデータ入力回路の一例を示す回路図である。
【図３】図１の８ビット構成のシリアルインタフェースデータ入力回路を示す回路図である。
【図４】図３のシリアルインタフェースデータ入力回路における動作を示すタイミングチャートである。
【図５】本発明の実施例２における８ビット構成のシリアルインタフェースデータ入力回路を示す回路図である。
【図６】図５のシリアルインタフェースデータ入力回路における動作を示すタイミングチャートである。
【図７】本発明の実施例３を示すサンプリングイネーブル生成回路の回路図である。
【符号の説明】
【００７５】
２０，２０Ａ,２０Ｂ      サンプリングイネーブル生成回路
３０，３０Ａ      書き込みイネーブル生成部
３１，３１Ａ      カウンタ
３２，３２Ａ      デコード回路
４０−K（＝０−０〜４０−(N-1))      ANDゲート
５０−K（＝５０−０〜５０−(N-1))      F/F
６０      カウントクリア生成回路
６２      カウンタ
６３      比較器
【図１】
2008060686.tif 000003
【図２】
2008060686.tif 000004
【図３】
2008060686.tif 000005
【図４】
2008060686.tif 000006
【図５】
2008060686.tif 000007
【図６】
2008060686.tif 000008
【図７】
2008060686.tif 000009