(57)【要約】【課題】書き込みから読み出しまでのレイテンシが大きくなること。【解決手段】本発明の非同期ＦＩＦＯ回路は、同一の入力クロックからライトクロックとリードクロックとを生成すると共に、ライト制御信号をライトクロックに同期して生成し、リード制御信号をリードクロックに同期して生成する。そして、複数のデータ保持部を有し、ライト制御信号に基づいてライトクロック毎にいずれかのデータ保持部にデータを書き込むと共に、リード制御信号に基づいてリードクロック毎にいずれかのデータ保持部からデータを読み出すデータ読み書き部を備える。【選択図】図６
2019075058.tif 000002
【特許請求の範囲】
【請求項１】
入力されたクロックから書き込み処理で用いるライトクロックを生成するライトクロック生成部と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリードクロック生成部と、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成部と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成部と、
複数のデータ保持部を有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出すデータ読み書き部と、
を備えた、
非同期ＦＩＦＯ回路。
【請求項２】
請求項１に記載の非同期ＦＩＦＯ回路であって、
前記データ読み書き部は、前記ライト制御信号に基づいて複数の前記データ保持部に対する一連の書き込み処理を起動すると共に、前記リード制御信号に基づいて複数の前記データ保持部に対する一連の読み出し処理を起動する、
非同期ＦＩＦＯ回路。
【請求項３】
請求項２に記載の非同期ＦＩＦＯ回路であって、
前記データ読み書き部は、前記ライト制御信号と前記リード制御信号とに基づいて、前記一連の書き込み処理と前記一連の読み出し処理とを同一のタイミングで起動する、
非同期ＦＩＦＯ回路。
【請求項４】
請求項３に記載の非同期ＦＩＦＯ回路であって、
前記データ読み書き部は、前記ライトクロック毎に書き込み対象となる前記データ保持部を特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成するライトポインタ生成部と、前記リードクロック毎に読み出し対象となる前記データ保持部を特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成するリードポインタ生成部と、を備え、
さらに、前記データ読み書き部は、前記ライトクロック毎に生成された前記ライトポインタが示す前記データ保持部にデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記データ保持部からデータを読み出す、
非同期ＦＩＦＯ回路。
【請求項５】
請求項４に記載の非同期ＦＩＦＯ回路であって、
前記ライトポインタ生成部と前記リードポインタ生成部とは、前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記データ保持部を特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成する、
非同期ＦＩＦＯ回路。
【請求項６】
請求項１乃至５のいずれかに記載の非同期ＦＩＦＯ回路であって、
前記入力されたクロックのクロック源から、前記ライトクロック生成部と前記リードクロック生成部までのそれぞれの遅延が同一となる設定されている、
非同期ＦＩＦＯ回路。
【請求項７】
入力されたクロックから書き込み処理で用いるライトクロックを生成するライト側ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリード側ＰＬＬと、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成回路と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成回路と、
複数のバッファを有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記バッファにデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記バッファからデータを読み出すＦＩＦＯと、
を備えた、
非同期ＦＩＦＯ回路。
【請求項８】
複数のデータ保持部を有する非同期ＦＩＦＯ回路が、
入力されたクロックから書き込み処理で用いるライトクロックを生成すると共に、前記入力されたクロックから読み出し処理で用いるリードクロックを生成し、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成すると共に、データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成し、
前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出す、
データ読み書き方法。
【請求項９】
請求項８に記載のデータ読み書き方法であって、
前記ライト制御信号に基づいて複数の前記データ保持部に対する一連の書き込み処理を起動すると共に、前記リード制御信号に基づいて複数の前記データ保持部に対する一連の読み出し処理を起動する、
データ読み書き方法。
【請求項１０】
請求項９に記載のデータ読み書き方法であって、
前記ライト制御信号と前記リード制御信号とに基づいて、前記一連の書き込み処理と前記一連の読み出し処理とを同一のタイミングで起動する、
データ読み書き方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）回路にかかり、特に、Full/Empty判定回路を必要としない非同期ＦＩＦＯ回路に関する。
【背景技術】
【０００２】
メモリアクセス等の連続したデータを処理する場合、特許文献１に記載のように、Full/Emptyを判定する回路を設けている場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３０１３８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したFull/Emptyを判定する回路を設けている非同期ＦＩＦＯ回路では、データがFullの場合、データ待ち合わせが発生し、乗換回路の入力部分にバッファが必要になり、制御回路が複雑になる。また、データ幅が広い場合には、物理制約からｂｉｔ間の乗り換えタイミングが異なるケースも発生し、より制御が難しくなり、データ間の全データが揃うまでの時間も必要になる。
【０００５】
そして、非同期ＦＩＦＯを使用した乗り換えは、リードポインタがライトポインタを追い越さないチェックを行うために、ライトポインタからリードポインタへのデータの引き渡しを行っていることがある。このような場合、書き込みから読み出しまでのレイテンシが大きくなる、という問題が生じる。
【０００６】
このため、本発明の目的は、上述した課題である、制御が複雑であることと、書き込みから読み出しまでのレイテンシが大きくなる、という問題を解決することができる非同期ＦＩＦＯ回路を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一形態である非同期ＦＩＦＯ回路は、
入力されたクロックから書き込み処理で用いるライトクロックを生成するライトクロック生成部と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリードクロック生成部と、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成部と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成部と、
複数のデータ保持部を有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出すデータ読み書き部と、
を備えた、
という構成をとる。
【０００８】
また、本発明の一形態である非同期ＦＩＦＯ回路は、
入力されたクロックから書き込み処理で用いるライトクロックを生成するライト側ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリード側ＰＬＬと、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成回路と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成回路と、
複数のバッファを有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記バッファにデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記バッファからデータを読み出すＦＩＦＯと、
を備えた、
という構成をとる。
【０００９】
また、本発明の一形態であるデータ読み書き方法は、
複数のデータ保持部を有する非同期ＦＩＦＯ回路が、
入力されたクロックから書き込み処理で用いるライトクロックを生成すると共に、前記入力されたクロックから読み出し処理で用いるリードクロックを生成し、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成すると共に、データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成し、
前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出す、
という構成をとる。
【発明の効果】
【００１０】
本発明は、以上のように構成されることにより、制御が複雑ではなく、書き込みから読み出しまでのレイテンシを減少させることができる非同期ＦＩＦＯ回路を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態１における非同期ＦＩＦＯ回路の構成を示すブロック図である。
【図２】図１に開示したＦＩＦＯの構成を示すブロック図である。
【図３】図１に開示した非同期ＦＩＦＯ回路の動作を示すタイムチャートである。
【図４】本発明と比較する非同期ＦＩＦＯ回路のデータ処理の流れを示す図である。
【図５】本発明である非同期ＦＩＦＯ回路のデータ処理の流れを示す図である。
【図６】本発明の実施形態２における非同期ＦＩＦＯ回路の構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図５を参照して説明する。図１乃至２は、非同期ＦＩＦＯ回路の構成を説明するための図である。図３は、非同期ＦＩＦＯ回路の動作を説明するための図である。図４乃至図５は、本発明の効果を説明するための図である。
【００１３】
［構成］
図１に示すように、本発明における非同期ＦＩＦＯ回路は、ライトクロック側（Write clock domain）に、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）１１と、ＤＥＦＩＮＥＲ生成回路１２と、ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）１３と、を備えている。また、非同期ＦＩＦＯ回路は、リードクロック側（Read clock domain）にも同様に、ＰＬＬ２１と、ＤＥＦＩＮＥＲ生成回路２２と、ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）２３と、を備えている。さらに、非同期ＦＩＦＯ回路は、データの乗り換えを行うＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）３を備えており、当該ＦＩＦＯ３はライトクロック側及びリードクロック側の両側に属している。
【００１４】
上記ライトクロック側のＰＬＬ１１（ライトクロック生成部）は、入力されたクロックＣＬＫＡから当該クロックＣＬＫＡをｎ逓倍して、書き込み処理で用いるライトクロック（Ｗｒｉｔｅ  Ｃｌｏｃｋ）を生成する。また、上記リードクロック側のＰＬＬ２１（リードクロック生成部）は、上記ライトクロック側のＰＬＬ１１に入力されるクロックと同一のクロックＣＬＫＡから当該クロックＣＬＫＡをｍ逓倍して、読み出し処理で用いるリードクロック（Ｒｅａｄ  Ｃｌｏｃｋ）を生成する。本実施形態では、例えば、ＣＬＫＡの周波数＝100MHz、ライトクロック＝1GHz、リードクロック＝1GHzであり、ライトクロック＝リードクロックであることとする。
【００１５】
なお、本実施形態では、後述するように、ライト側のＦＦ１３からＦＩＦＯ３への書き込みタイミングと、リード側のＦＩＦＯ３からＦＦ２３への読み出しタイミングを同期させるために、図１に示すＣＬＫＡからＰＬＬ１１まで分配遅延ａと、ＣＬＫＡからＰＬＬ２１までに分配遅延bとを、同遅延で設計している。
【００１６】
また、本実施形態では、更にＦＦ１３からＦＩＦＯ３への書き込みタイミングと、ＦＩＦＯ３からＦＦ２３への読み出しタイミングの差を、ＰＬＬ１１やＰＬＬ２１のサイクル値を超えない程度の遅延で合わせこむ。このとき、上記各ＰＬＬ１１，２１までの遅延を同遅延としているので、各ＰＬＬ１１，２１から各ＦＦ１３，２３までの遅延差｜遅延ｘ−遅延ｙ｜を考慮する事で、ＦＩＦＯ３への書き込みタイミングとＦＩＦＯ３からの読み出しタイミングの差を、ＰＬＬ１１やＰＬＬ２１のサイクル内に収めることができる。これにより、後述するリード処理のタイミング生成を、ＰＬＬ１１やＰＬＬ２１のサイクル値を超えた値まで拡げる必要はなく、遅延差｜遅延ｘ−遅延ｙ｜を保証できるリードポインタを設定すればよい。
【００１７】
上記ライトクロック側のＤＥＦＩＮＥＲ生成回路１２（ライト制御信号生成部）は、上記ＰＬＬ１１で生成されたライトクロックに同期したパルス信号であるライトＤＥＦＩＮＥＲ信号（ライト制御信号）を生成する。ライトＤＥＦＩＮＥＲ信号は、後述するように、ＦＩＦＯ３によるＦＦ１３からデータの書き込みタイミングを制御するために用いられる。
【００１８】
なお、ライトＤＥＦＩＮＥＲ信号の元となるライトクロックは、CLKＡとクロックエッジが一致しているため、このライトクロックと同期するライトＤＥＦＩＮＥＲ信号は、ＣＬＫＡサイクルのパルス信号となる。例えば、本実施形態では、ライトクロック＝1GHz、ライトＤＥＦＩＮＥＲ信号＝100MHzで設定される。
【００１９】
同様に、上記リードクロック側のＤＥＦＩＮＥＲ生成回路２２（リード制御信号生成部）は、上記ＰＬＬ２１で生成されたリードクロックに同期したパルス信号であるリードＤＥＦＩＮＥＲ信号（リード制御信号）を生成する。リードＤＥＦＩＮＥＲ信号は、後述するように、ＦＩＦＯ３からＦＦ２３へのデータの読み出しタイミングを制御するために用いられる。
【００２０】
なお、リードＤＥＦＩＮＥＲ信号の元となるリードクロックは、CLKＡとクロックエッジが一致しているため、このリードクロックと同期するリードＤＥＦＩＮＥＲ信号は、ＣＬＫＡサイクルのパルス信号となる。例えば、本実施形態では、リードクロック＝1GHz、リードＤＥＦＩＮＥＲ信号＝100MHzで設定される。
【００２１】
このように、本実施形態では、ライト側とリード側との異なるＰＬＬ１１，２１への入力クロックに、同一クロックＣＬＫＡを使用しており、さらに、各ＰＬＬ１１，２１に同期してそれぞれライトＤＥＦＩＮＥＲ信号とリードＤＥＦＩＮＥＲ信号とを生成している。このため、後述するように、書き込み処理のサイクルと読み出し処理のサイクルとは、ある決まったサイクルで作動することとなる。
【００２２】
上記ＦＩＦＯ３は、図２に示すように、ライトクロック側ではライトポインタ生成回路３１を有し、リードクロック側ではリードポインタ生成回路３２とセレクタ３２１を有する。ライトからリードへの乗り換え部分では、複数のバッファ（データ保持部）が必要であり、バッファ数は、ライトクロック周波数とライトＤＥＦＩＮＥＲ信号の周波数で決定される。本実施形態では、ライトクロック＝1GHz、ライトＤＥＦＩＮＥＲ信号＝100MHzであるため、図２に示すように、バッファ数は、ＤＥＦＩＮＥＲサイクルでライトデータが書き込める最大数が１０となり、１０段のバッファ３１１〜３１１０からなる。なお、本実施形態では、リードＤＥＦＩＮＥＲ信号＝100MHzであることとする。
【００２３】
上記ライトポインタ生成回路３１は、ライトＤＥＦＩＮＥＲ信号の入力があったときに、一連の書き込み処理を起動して、ＦＦ１３からＦＩＦＯ３にデータを書き込むバッファ３１１〜３１１０を特定するライトポインタを生成する。そして、一連の書き込み処理を起動したライトポインタ生成回路３１は、ライトクロック毎つまりサイクル毎に、１インクリメントした値を生成してライトポインタとして使用する。また、ライトポインタ生成回路３１は、ライトＤＥＦＩＮＥＲ信号の入力がある毎に、一連の書き込み処理を起動して、かかる起動毎に同一の値のライトポインタを生成する。例えば、本実施形態では、ライトＤＥＦＩＮＥＲ信号の入力があったときに、ライトポインタ「２」を設定し、ライトクロックのサイクル毎にライトポインタが「３，４，５・・・」と生成され、次にライトＤＥＦＩＮＥＲ信号の入力があると再度ライトポインタに「２」が設定される。
【００２４】
そして、ＦＩＦＯ３は、ライトクロックのサイクル毎に、上述したように生成されたライトポインタにて特定されるバッファ３１１〜３１１０に、ＦＦ１３からデータを書き込む。
【００２５】
上記リードポインタ生成回路３２は、リードＤＥＦＩＮＥＲ信号の入力があったときに、一連の読み出し処理を起動して、ＦＩＦＯ３からＦＦ２３にデータを読み出すバッファ３１１〜３１１０を特定するリードポインタを生成する。そして、一連の読み出し処理を起動したリードポインタ生成回路３２は、リードクロック毎つまりサイクル毎に、１インクリメントした値を生成してリードポインタとして使用する。また、リードポインタ生成回路３２は、リードＤＥＦＩＮＥＲ信号の入力がある毎に、一連の読み出し処理を起動して、かかる起動毎に同一の値のリードポインタを生成する。例えば、本実施形態では、リードＤＥＦＩＮＥＲ信号の入力があったときに、リードポインタ「９」を設定し、リードクロックのサイクル毎にリードポインタが「１０，１，２・・・」と生成され、次にリードＤＥＦＩＮＥＲ信号の入力があると再度リードポインタに「９」が設定される。
【００２６】
そして、ＦＩＦＯ３は、リードクロックのサイクル毎に、上述したように生成されたリードポインタにて特定されるバッファ３１１〜３１１０をセレクタ３２１で選択し、ＦＦ２３にデータを読み出す。
【００２７】
なお、本実施形態では、ＦＩＦＯ３は、ライトＤＥＦＩＮＥＲ信号とリードＤＥＦＩＮＥＲ信号とが同一のタイミングであることから、上述したライトポインタ生成回路３１とリードポインタ生成回路３２とは、同一のタイミングで一連の書き込み処理と一連の読み出し処理を起動することとなる。そして、この起動時に、ライトポインタ生成回路３１とリードポインタ生成回路３２とは、相互に異なるライトポインタとリードポインタとをそれぞれ生成している。例えば、本実施形態では、起動時に、ライトポインタに対して、３サイクル後のリードポインタが生成される。これにより、リードポインタとライトポインタの関係が常時保障され、常にライトポインタに対して、３サイクル後のリードポインタを生成するので、リード処理がライト処理を追い越すことがなくなる。
【００２８】
［動作］
次に、図３のタイムチャートを参照して、上述した非同期ＦＩＦＯ回路によるＦＩＦＯ３にデータを書き込んで読み出すまでの動作を説明する。
【００２９】
まず、CLKＡからＰＬＬ１１とＰＬＬ２１までの遅延は等遅延なので、書き込みタイミングを示すライトＤＥＦＩＮＥＲ信号がタイミング２でセットされると、読み出しタイミングを示すリードＤＥＦＩＮＥＲ信号もタイミング２でセットされる。つまり、同一のタイミングで、一連の書き込み処理と一連の読み出し処理が起動される。
【００３０】
上記状況において、まず書き込み処理について説明する。ライトポインタ生成回路３１は、ライトＤＥＦＩＮＥＲ信号を起動タイミングとして、ライトクロックのサイクル毎にインクリメントした値を生成し、ライトポインタとして使用する。このとき、ライトＤＥＦＩＮＥＲ信号の起動タイミング毎に、同じポインタ値を生成する（本実施形態では「２」）。
【００３１】
そして、ＦＩＦＯ３は、ＦＦ１３にデータが存在すれば、ライトポインタ値で示されるバッファにＦＦ１３のデータをライトし、データが存在しなければ、ライトポインタ値で示されるバッファに不定値をライトする。図３に示すように、タイミング１ではＦＦ１３にデータ「１」があり、ライトポインタ生成回路３１のポインタ値＝１であるため、タイミング１でバッファ３１１へのデータセット指示が出され、タイミング２で、バッファ３１１にデータが保持される。なお、このバッファ３１１に次のデータがセットされるのは、ライトポインタ＝１になるタイミング１１で指示が出された次のタイミング１２となる。
【００３２】
同様に、タイミング２のＦＦ１３のデータ「２」は、タイミング２でデータセット指示が出るので、タイミング３でバッファ３１２にデータが保持されていく。この書き込み処理は、ＦＦ１３にデータがある場合、ライトポインタ生成回路３１のポインタ値に従い、実施されていく。
【００３３】
次に、リード処理について説明する。リードポインタ生成回路３２は、リードＤＥＦＩＮＥＲ信号をリード処理の起動タイミングとして、サイクル毎に１インクリメントした値を生成し、リードポインタとして使用する。このときリードＤＥＦＩＮＥＲ信号の起動タイミング毎に、同じポインタ値を生成する。本例では、ライトタイミングの３サイクル後に読み出す仕様なので、起動毎にリードポインタ「９」をセットする。つまり、ライトポインタのポインタ値が３サイクル後に、リードポインタのポインタ値として現れる。バッファ３１１〜３１１０内にデータが存在する場合、リードポインタのポインタ値に従い、ＦＦ２３にバッファ３１１〜３１１０内のデータが読み出され、データが存在しない場合、リードポインタのポインタ値に従い、不定値が読み出される。
【００３４】
本発明の乗り換え回路では、ライト処理・リード処理ともポインタ値に従い処理を行う。そのため、あるタイミングでライト処理とリード処理のポインタ値を一致させることでリードポインタとライトポインタの関係が常時保障され、常にライトポインタに対して、一定サイクル後のリードポインタを生成するため、リード処理がライト処理を追い越す事はなくなり、ポインタ比較を行うことなく乗り換えが可能となる。
【００３５】
ここで、図4及び図5を参照して、本発明とは異なる非同期ＦＩＦＯ回路と本発明の非同期ＦＩＦＯ回路との比較を示す。
【００３６】
図４に示す本発明とは異なる非同期ＦＩＦＯ回路では、書き込みＦＦ４から読み出しＦＦ４２までのデータ処理の流れを見ると、まず、書き込みＦＦ４からＦＩＦＯ４１にデータをタイミング２で書き込む。同時にＦＩＦＯのポインタ値をバイナリポインタ４１１として格納し、タイミング３でバイナリポインタ値のグレイコード化を行い、グレイポインター４１２として格納する。そして、データを安定化させるため同期化ＦＦとしてタイミング４でＦＦ４１３、タイミング５でＦＦ４１４に格納する。ＦＦ段数は回路規則に従うので、本例では２段としている。リード側ＣＬＫに乗り換えた後、ＦＩＦＯが空かどうかをempty判定回路４１５で判定し、emptyでないと判定されればリードを行う。このように、本発明とは異なる非同期ＦＩＦＯ回路では、６サイクルが必要である。
【００３７】
一方、本発明においては、ポインタの比較でemptyの判定を行わないため、グレイコード化やＦＦでの安定化が必要なくなる。そのため、図４に示す符号４１２〜４１５の回路が不要になる。その結果、本発明では、図５に示すように、タイミング４でリード処理が可能となり、２サイクルの高速化が実現でき、レイテンシを短くすることができる。
【００３８】
更に、本発明の処理は、リクエストの有無に関係なくライト・リードを行う構成になっているためデータ制御が簡素化できる。このため、連続したデータを処理するストリーミングデータの処理を行うのに適している。
【００３９】
以上のように、本発明では、異なるＰＬＬドメイン間のデータ転送において、異なるＰＬＬ入力に同一ＣＬＫ（ＣＬＫＡ）を使用する回路構成としている。そして、ライト処理で使用するライトクロックをＣＬＫＡのｎ逓倍したクロックとした場合、ライトクロックはＣＬＫＡとクロックエッジが一致しているため、このライトクロック同期してＣＬＫＡサイクルのパルス信号を生成する回路（ＤＥＦＩＮＥＲ生成回路）を使用する回路構成としている。また、リード処理で使用するリードクロックをＣＬＫＡのｍ逓倍したクロックとした場合、リードクロックはＣＬＫＡとクロックエッジが一致しているので、このリードクロックに同期してＣＬＫＡサイクルのパルス信号を生成するリードＤＥＦＩＮＥＲ回路を使用する回路構成としている。
【００４０】
上記３つの回路を実装し、ライト側のＤＥＦＩＮＥＲ回路とリード側のＤＥＦＩＮＥＲ回路を使用することで、ＣＬＫＡサイクル内にｎ個のライトデータとｍ個のリードデータが存在する事がわかる。そこで、設計時にｍ個のリードデータはｎ個以上のライトデータを読み出さないように調整する事で、ライトポインタとリードポインタの引き渡しによる乗り換えから固定時間での乗り換えが可能となり、レイテンシを短縮できる回路が実現できる。
【００４１】
なお、上記実施形態では、ＣＬＫＡの周波数＝100MHz、ライトクロック＝1GHz、リードクロック＝1GHzであり、ライトクロック＝リードクロックの条件で適用可能な構成を例示したが、本発明の非同期ＦＩＦＯ回路は、以下の条件でも適用可能である。
（１）ライトクロック（高周波）＞リードクロック（低周波）
（２）ライトクロック（低周波）＜リードクロック（高周波）
【００４２】
上記（１）の構成では、ライト処理のデータ量がリード処理のデータ量より多いので、ライト処理を行わないサイクルを設けることで、書き込みＦＩＦＯがオーバーフローする事を防いで処理が可能である。同様に、上記（２）の構成では、リード処理のデータ量がライト処理のデータ量より多いので、リード処理を行わないサイクルを設けることで、書き込んでいないデータを読み出す事を防いで処理が可能である。
【００４３】
＜実施形態２＞
次に、本発明の第２の実施形態を、図６を参照して説明する。図６は、本実施形態における非同期ＦＩＦＯ回路の構成を示すブロック図である。なお、本実施形態では、実施形態１で説明した非同期ＦＩＦＯの構成の概略を示している。
【００４４】
図６に示すように、本実施形態おける非同期ＦＩＦＯ回路１００は、
入力されたクロックから書き込み処理で用いるライトクロックを生成するライトクロック生成部１１０と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリードクロック生成部１２０と、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成部１３０と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成部１４０と、
複数のデータ保持部１５１を有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出すデータ読み書き部１５０と、
を備えている。
【００４５】
上記発明によると、同一のクロックからライトクロック及びリードクロックを生成し、さらに、これらに同期して、書き込みタイミングを制御するライト制御信号と読み出しタイミングを制御するリード制御信号とを生成している。このため、ライトサイクルとリードサイクルとは、ある決まったサイクルで動作することになるため、ライトポインタからリードポインタへのデータの引き渡しやチェックが不要になる。その結果、制御が複雑ではなく、書き込みから読み出しまでのレイテンシを減少させることができる。
【００４６】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における非同期ＦＩＦＯ回路、データ読み書き方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００４７】
（付記１）
入力されたクロックから書き込み処理で用いるライトクロックを生成するライトクロック生成部と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリードクロック生成部と、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成部と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成部と、
複数のデータ保持部を有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出すデータ読み書き部と、
を備えた、
非同期ＦＩＦＯ回路。
【００４８】
（付記２）
付記１に記載の非同期ＦＩＦＯ回路であって、
前記データ読み書き部は、前記ライト制御信号に基づいて複数の前記データ保持部に対する一連の書き込み処理を起動すると共に、前記リード制御信号に基づいて複数の前記データ保持部に対する一連の読み出し処理を起動する、
非同期ＦＩＦＯ回路。
【００４９】
（付記３）
付記２に記載の非同期ＦＩＦＯ回路であって、
前記データ読み書き部は、前記ライト制御信号と前記リード制御信号とに基づいて、前記一連の書き込み処理と前記一連の読み出し処理とを同一のタイミングで起動する、
非同期ＦＩＦＯ回路。
【００５０】
（付記４）
付記３に記載の非同期ＦＩＦＯ回路であって、
前記データ読み書き部は、前記ライトクロック毎に書き込み対象となる前記データ保持部を特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成するライトポインタ生成部と、前記リードクロック毎に読み出し対象となる前記データ保持部を特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成するリードポインタ生成部と、を備え、
さらに、前記データ読み書き部は、前記ライトクロック毎に生成された前記ライトポインタが示す前記データ保持部にデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記データ保持部からデータを読み出す、
非同期ＦＩＦＯ回路。
【００５１】
（付記５）
付記４に記載の非同期ＦＩＦＯ回路であって、
前記ライトポインタ生成部と前記リードポインタ生成部とは、前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記データ保持部を特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成する、
非同期ＦＩＦＯ回路。
【００５２】
（付記６）
付記１乃至５のいずれかに記載の非同期ＦＩＦＯ回路であって、
前記入力されたクロックのクロック源から、前記ライトクロック生成部と前記リードクロック生成部までのそれぞれの遅延が同一となる設定されている、
非同期ＦＩＦＯ回路。
【００５３】
（付記７）
入力されたクロックから書き込み処理で用いるライトクロックを生成するライト側ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリード側ＰＬＬと、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成回路と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成回路と、
複数のバッファを有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記バッファにデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記バッファからデータを読み出すＦＩＦＯと、
を備えた、
非同期ＦＩＦＯ回路。
【００５４】
（付記７．１）
付記７に記載の非同期ＦＩＦＯ回路であって、
前記ＦＩＦＯは、前記ライト制御信号に基づいて複数の前記バッファに対する一連の書き込み処理を起動すると共に、前記リード制御信号に基づいて複数の前記バッファに対する一連の読み出し処理を起動する、
非同期ＦＩＦＯ回路。
【００５５】
（付記７．２）
付記７．１に記載の非同期ＦＩＦＯ回路であって、
前記ＦＩＦＯは、前記ライト制御信号と前記リード制御信号とに基づいて、前記一連の書き込み処理と前記一連の読み出し処理とを同一のタイミングで起動する、
非同期ＦＩＦＯ回路。
【００５６】
（付記７．３）
付記７．２に記載の非同期ＦＩＦＯ回路であって、
前記ＦＩＦＯは、前記ライトクロック毎に書き込み対象となる前記バッファを特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成するライトポインタ生成回路と、前記リードクロック毎に読み出し対象となる前記バッファを特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成するリードポインタ生成回路と、を備え、
さらに、前記ＦＩＦＯは、前記ライトクロック毎に生成された前記ライトポインタが示す前記バッファにデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記バッファからデータを読み出す、
非同期ＦＩＦＯ回路。
【００５７】
（付記７．４）
付記７．３に記載の非同期ＦＩＦＯ回路であって、
前記ライトポインタ生成回路と前記リードポインタ生成回路とは、前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記バッファを特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成する、
非同期ＦＩＦＯ回路。
【００５８】
（付記７．５）
付記７乃至７．４のいずれかに記載の非同期ＦＩＦＯ回路であって、
前記入力されたクロックのクロック源から、前記ライト側ＰＬＬと前記リード側ＰＬＬまでのそれぞれの遅延が同一となる設定されている、
非同期ＦＩＦＯ回路。
【００５９】
（付記８）
複数のデータ保持部を有する非同期ＦＩＦＯ回路が、
入力されたクロックから書き込み処理で用いるライトクロックを生成すると共に、前記入力されたクロックから読み出し処理で用いるリードクロックを生成し、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成すると共に、データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成し、
前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出す、
データ読み書き方法。
【００６０】
（付記９）
付記８に記載のデータ読み書き方法であって、
前記ライト制御信号に基づいて複数の前記データ保持部に対する一連の書き込み処理を起動すると共に、前記リード制御信号に基づいて複数の前記データ保持部に対する一連の読み出し処理を起動する、
データ読み書き方法。
【００６１】
（付記１０）
付記９に記載のデータ読み書き方法であって、
前記ライト制御信号と前記リード制御信号とに基づいて、前記一連の書き込み処理と前記一連の読み出し処理とを同一のタイミングで起動する、
データ読み書き方法。
【００６２】
（付記１０．１）
付記１０に記載のデータ読み書き方法であって、
前記ライトクロック毎に書き込み対象となる前記データ保持部を特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成し、前記リードクロック毎に読み出し対象となる前記データ保持部を特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成し、
前記ライトクロック毎に生成された前記ライトポインタが示す前記データ保持部にデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記データ保持部からデータを読み出す、
データ読み書き方法。
【００６３】
（付記１０．２）
付記１０．１に記載のデータ読み書き方法であって、
前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記データ保持部を特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成する、
データ読み書き方法。
【００６４】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００６５】
１１，２１  ＰＬＬ
１２，２２  ＤＥＦＩＮＥＲ生成回路
１３，２３  ＦＦ
３  ＦＩＦＯ
３１  ライトポインタ生成回路
３２  リードポインタ生成回路
３１１〜３１１０  バッファ
３２１  セレクタ
１００  非同期ＦＩＦＯ回路
１１０  ライトクロック生成部
１２０  リードクロック生成部
１３０  ライト制御信号生成部
１４０  リード制御信号生成部
１５０  データ読み書き部
１５１  データ保持部
【図１】
2019075058.tif 000003
【図２】
2019075058.tif 000004
【図３】
2019075058.tif 000005
【図４】
2019075058.tif 000006
【図５】
2019075058.tif 000007
【図６】
2019075058.tif 000008
【手続補正書】
【提出日】平成30年12月20日(2018.12.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力されたクロックから書き込み処理で用いるライトクロックを生成するライトクロック生成部と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリードクロック生成部と、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成部と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成部と、
複数のデータ保持部を有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出すデータ読み書き部と、
を備え、
前記ライト制御信号生成部と前記リード制御信号生成部とは、同一周期の前記ライトクロックと前記リードクロックとに同期して、同一のサイクルの前記ライト制御信号と前記リード制御信号とをそれぞれ生成し、
前記データ読み書き部は、前記ライト制御信号に基づいて複数の前記データ保持部に対する一連の書き込み処理と、前記リード制御信号に基づいて複数の前記データ保持部に対する一連の読み出し処理と、を同一のタイミングで起動し、
さらに、前記データ読み書き部は、前記ライトクロック毎に書き込み対象となる前記データ保持部を特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成するライトポインタ生成部と、前記リードクロック毎に読み出し対象となる前記データ保持部を特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成するリードポインタ生成部と、を備えると共に、前記ライトクロック毎に生成された前記ライトポインタが示す前記データ保持部にデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記データ保持部からデータを読み出し、
前記ライトポインタ生成部と前記リードポインタ生成部とは、前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記データ保持部を特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成する、
非同期ＦＩＦＯ回路。
【請求項２】
入力されたクロックから書き込み処理で用いるライトクロックを生成するライト側ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）と、
前記入力されたクロックから読み出し処理で用いるリードクロックを生成するリード側ＰＬＬと、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成するライト制御信号生成回路と、
データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成するリード制御信号生成回路と、
複数のバッファを有し、前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記バッファにデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記バッファからデータを読み出すＦＩＦＯと、
を備え、
前記ライト制御信号生成回路と前記リード制御信号生成回路とは、同一周期の前記ライトクロックと前記リードクロックとに同期して、同一のサイクルの前記ライト制御信号と前記リード制御信号とをそれぞれ生成し、
前記ＦＩＦＯは、前記ライト制御信号に基づいて複数の前記バッファに対する一連の書き込み処理と、前記リード制御信号に基づいて複数の前記バッファに対する一連の読み出し処理と、を同一のタイミングで起動し、
さらに、前記ＦＩＦＯは、前記ライトクロック毎に書き込み対象となる前記バッファを特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成するライトポインタ生成部と、前記リードクロック毎に読み出し対象となる前記バッファを特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成するリードポインタ生成部と、を備えると共に、前記ライトクロック毎に生成された前記ライトポインタが示す前記バッファにデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記バッファからデータを読み出し、
前記ライトポインタ生成部と前記リードポインタ生成部とは、前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記バッファを特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成する、
非同期ＦＩＦＯ回路。
【請求項３】
複数のデータ保持部を有する非同期ＦＩＦＯ回路が、
入力されたクロックから書き込み処理で用いるライトクロックを生成すると共に、前記入力されたクロックから読み出し処理で用いるリードクロックを生成し、
データの書き込みタイミングを制御するライト制御信号を前記ライトクロックに同期して生成すると共に、データの読み出しタイミングを制御するリード制御信号を前記リードクロックに同期して生成し、この際に、同一周期の前記ライトクロックと前記リードクロックとに同期して、同一のサイクルの前記ライト制御信号と前記リード制御信号とをそれぞれ生成し、
前記ライト制御信号に基づいて前記ライトクロック毎にいずれかの前記データ保持部にデータを書き込むと共に、前記リード制御信号に基づいて前記リードクロック毎にいずれかの前記データ保持部からデータを読み出す際に、前記ライト制御信号に基づいて複数の前記データ保持部に対する一連の書き込み処理と、前記リード制御信号に基づいて複数の前記データ保持部に対する一連の読み出し処理と、を同一のタイミングで起動し、
さらに、前記ライトクロック毎に書き込み対象となる前記データ保持部を特定するライトポインタを生成すると共に、前記一連の書き込み処理の起動毎に同一の前記ライトポインタを生成し、前記リードクロック毎に読み出し対象となる前記データ保持部を特定するリードポインタを生成すると共に、前記一連の読み出し処理の起動毎に同一の前記リードポインタを生成し、この際に、前記一連の書き込み処理の起動毎に生成する前記ライトポインタと、前記一連の読み出し処理の起動毎に生成する前記リードポインタとが、それぞれ異なる前記データ保持部を特定するよう前記ライトポインタと前記リードポインタとをそれぞれ生成し、
前記ライトクロック毎に生成された前記ライトポインタが示す前記データ保持部にデータを書き込み、前記リードクロック毎に生成された前記リードポインタが示す前記データ保持部からデータを読み出す、
データ読み書き方法。