(57)【要約】【課題】命令数あるいはアドレス数の増加に伴うメタステーブル遮断回路の規模の増大を抑制することができる同期化回路を提供する。【解決手段】ＣＰＵ２０からのライト要求ｗｒ＿ｒｅｑに従ってデュアルポートメモリ１０１にデータｗｒ＿ｄａｔａを格納し、アドレス調整部１０２およびライト調整部１０３によって、ライト要求ｗｒ＿ｒｅｑおよびデータのアドレスａｄｒｓをクロックｃｌｏｃｋに同期して時間的にシフトさせる。シフトしたアドレスａｄｒｓ＿ｓによりデュアルポートメモリ１０１から読み出されたデータｗｒ＿ｄａｔａ＿ｓは、シフトしたライト要求ｗｒ＿ｒｅｑ＿ｓに従って、対応するレジスタからハードウェア３０へ出力される。【選択図】図３
2008217450.tif 000002
【特許請求の範囲】
【請求項１】
第１タイミングで第１の回路から入力するデータおよび指定アドレスを第２タイミングに同期させて第２の回路へ出力する同期化回路において、
前記第１タイミングに同期して前記データを前記指定アドレスに書き込む第１ポートと、書き込まれたデータを指定されたアドレスから読み出す第２ポートと、を有するデュアルポートメモリと、
前記第１タイミングを前記第２タイミングに同期して所定時間シフトさせ、シフトタイミングを生成する第１シフト手段と、
前記指定アドレスを前記第２タイミングに同期して前記所定時間シフトさせ、シフトアドレスを生成する第２シフト手段と、
前記シフトアドレスおよび前記シフトタイミングに従って前記第２ポートから読み出されたデータを前記第２の回路へ出力するレジスタ手段と、
を有することを特徴とする同期化回路。
【請求項２】
前記レジスタ手段は複数のレジスタを有し、前記シフトアドレスに従って選択された１つのレジスタに前記データを格納して前記第２の回路へ出力することを特徴とする請求項１に記載の同期化回路。
【請求項３】
前記第１の回路はＣＰＵであり、前記データはＯＵＴ命令であり、前記第１および第２シフト手段によりメタステーブルを遮断することを特徴とする請求項１に記載の同期化回路。
【請求項４】
第１タイミングで第１の回路から入力するデータおよび指定アドレスを第２タイミングに同期させて第２の回路へ出力する同期化回路において、
前記第１タイミングに同期して前記データを前記指定アドレスに書き込む第１ポートと、書き込まれたデータを前記指定アドレスから読み出す第２ポートと、を有するデュアルポートメモリと、
前記第１タイミングを前記第２タイミングに同期して所定時間シフトさせ、シフトタイミングを生成するシフト手段と、
前記シフトタイミングを読み出しイネーブル信号として前記第２ポートから読み出されたデータを前記第２の回路へ出力するレジスタ手段と、
を有することを特徴とする同期化回路。
【請求項５】
前記第１の回路はＣＰＵであり、前記データはＯＵＴ命令であり、前記シフト手段によりメタステーブルを遮断することを特徴とする請求項４に記載の同期化回路。
【請求項６】
請求項１−５のいずれか１項に記載の同期化回路を実装したＦＰＧＡ(Field Programmable Gate Array)。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は異なる回路間に設けられた同期化回路に係り、特にメタステーブル伝播を遮断する同期化回路に関する。
【背景技術】
【０００２】
メタステーブル伝播を遮断する回路としては、２段以上のフリップフロップ回路をカスケード接続した構成が一般的である。たとえば、ＣＰＵの命令を外部装置へ通知する際の動作タイミング調整のために、２段フリップフロップ回路を用いた同期化回路が使用されている。
【０００３】
図１は従来の同期化回路の一例を示すブロック図であり、図２はその動作を示すタイミングチャートである。ここでは、同期化回路１によってＣＰＵ２と外部のハードウェア３とが接続され、ＣＰＵ２からのＯＵＴ命令がハードウェア３に通知される場合の構成が図示されている。
【０００４】
図１および図２において、ＣＰＵ２からのwr_data上のデータ（命令）Ｄ１は、ライト要求wr_reqのタイミングでアドレスＡ１に対応するラッチ回路４にラッチされ、続いてシステムクロックclockに同期して２段接続されたフリップフロップ回路５および６に順次シフトして外部ハードウェア３へ出力される。すなわち、同期化回路１は、システムクロックに同期した２段のフリップフロップ回路５および６によりメタステーブルの伝播を遮断すると共に出力データ（命令）Ｄ１をシステムクロックに同期させてハードウェアへ通知する。続くデータ（命令）Ｄ２は、ライト要求wr_reqのタイミングでアドレスＡ２に対応するラッチ回路４にラッチされ、以下同様に、システムクロックに同期して２段のフリップフロップ回路５および６を通してハードウェアへ通知される。なお、どのラッチ回路がwr_data上のデータ（命令）をラッチするかはアドレスデコーダ７によって決定され、ラッチされたデータ（命令）はセレクタ８を通してＣＰＵ２で確認される。
【０００５】
データ転送時の動作タイミングを調整する同期化回路の他の例としては、シングルポートメモリとデュアルポートメモリとを用いたＦＩＦＯ型記憶装置が特許文献１に開示されている。このＦＩＦＯ型記憶装置は、入力データを第１クロックに同期してシングルポートメモリに書き込み、この書込みを行わない期間に第１クロックに同期してシングルポートメモリからデータを読み出してデュアルポートメモリへ書き込み、そして、外部から読出し要求が発生すると、第２クロックに同期してデュアルポートメモリからデータを読み出す。このように、データを蓄える機能をシングルポートメモリで実現し、非同期転送する機能をデュアルポートメモリで実現することで、全体として必要される回路規模を低減させている（特許文献１の明細書段落０００７，００８３、図１０参照）。
【０００６】
【特許文献１】特開２００１−１３４４２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、２段のフリップフロップ回路をカスケード接続した構成では、命令数／アドレス数の増加に比例して回路規模が増大してしまう。特に図１に示す構成では、ラッチ回路４と２段のフリップフロップ回路５および６の組が命令数／アドレス数に比例して増加する。
【０００８】
また、シングルポートメモリとデュアルポートメモリとを用いたＦＩＦＯ型記憶装置は、タイミング調整を行う回路における回路規模の低減を目的としたものであり、データを蓄えるためのシングルポートメモリの容量を確保する必要がある。しかも、命令ごとにシングルポートメモリを設けると、命令数／アドレス数の増加に伴ってシングルポートメモリの個数を増加させる必要があり、同期化回路を実装したときに回路規模が著しく増大するという問題がある。
【０００９】
特に、ＦＰＧＡ(Field Programmable Gate Array)に同期化回路を実装する場合、上述した従来の回路構成では同期化に必要な信号数に比例して論理ゲートを消費する。このように命令数／アドレス数の増加に伴ってレジスタ数あるいはメモリ容量が大きく増加する従来の回路構成は、容量の限られたＦＰＧＡやＬＳＩに同期化回路を実装することをより困難にしていた。
【００１０】
本発明の目的は、命令数あるいはアドレス数の増加に伴うメタステーブル遮断回路の規模の増大を抑制することができる同期化回路を提供することにある。
【００１１】
本発明の他の目的は、容量の限られたＦＰＧＡやＬＳＩなどのデバイスへの実装に適した同期化回路を提供することにある。
【課題を解決するための手段】
【００１２】
本発明によれば、ライト要求に従ってデュアルポートメモリに格納したデータを、そのデータのアドレスをクロックに同期して時間的にシフトさせることでデュアルポートメモリから読み出し、時間的シフトしたアドレスおよびライト要求に従って当該データを当該クロックに同期したハードウェアへ出力する。
【００１３】
本発明の第１実施形態によれば、第１タイミングで第１の回路から入力するデータおよび指定アドレスを第２タイミングに同期させて第２の回路へ出力する同期化回路は、前記第１タイミングに同期して前記データを前記指定アドレスに書き込む第１ポートと、書き込まれたデータを指定されたアドレスから読み出す第２ポートと、を有するデュアルポートメモリと、前記第１タイミングを前記第２タイミングに同期して所定時間シフトさせ、シフトタイミングを生成する第１シフト手段と、前記指定アドレスを前記第２タイミングに同期して前記所定時間シフトさせ、シフトアドレスを生成する第２シフト手段と、前記シフトアドレスおよび前記シフトタイミングに従って前記第２ポートから読み出されたデータを前記第２の回路へ出力するレジスタ手段と、を有することを特徴とする。
【００１４】
本発明の第１実施形態によれば、前記第１タイミングに同期して前記データを前記指定アドレスに書き込む第１ポートと、書き込まれたデータを前記指定アドレスから読み出す第２ポートと、を有するデュアルポートメモリと、前記第１タイミングを前記第２タイミングに同期して所定時間シフトさせ、シフトタイミングを生成するシフト手段と、前記シフトタイミングを読み出しイネーブル信号として前記第２ポートから読み出されたデータを前記第２の回路へ出力するレジスタ手段と、を有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、アドレスおよび第１タイミングをシフトすることにより従来と同等のタイミングでメタステーブル伝播を解消することができる。より具体的には、ＣＰＵからの命令に対して、アドレスおよびライト要求をシフトし、ＣＰＵからの命令のラッチをデュアルポートメモリで行うことで、メタステーブル伝播の回避と命令数／アドレス数の増加に伴う回路規模の増大の低減を同時に達成することができる。
【００１６】
このようにアドレスとライト要求とを同じ時間だけシフトさせ、これらシフトしたアドレスおよびライト要求を用いて最終段のレジスタにデータをラッチすることで、メタステーブル伝播の遮断回路をメモリで容易に構成することができる。特に、ＬＳＩで未使用のメモリが存在する場合に適用することにより柔軟な論理ゲートの使用を可能とする。
【００１７】
また、ＦＰＧＡ等であらかじめ実装されているメモリのうち未使用のものを使用することにより、論理回路設計用の面積や配線を増やすことができ、より顕著な効果を得ることができる。また、実装しているメモリが全て使用されている場合であっても、未使用な領域があれば、使用領域と分けて使用することにより新たなメモリの追加を必要としない。
【００１８】
さらに、ＯＵＴ命令実行からハードウェアへの通知処理時間を従来の２段フリップフロップ回路をカスケード接続した従来例と同等にすることができるので、設計の変更などを行うことなく本実施形態を採用することができる。
【発明を実施するための最良の形態】
【００１９】
１．第１実施形態
１．１）回路構成
図３は本発明の第１実施形態による同期化回路を示すブロック図である。同期化回路１０はＣＰＵ２０とハードウェア３０との間に接続され、システムクロックclockがメタステーブル伝播遮断回路１０およびハードウェア３０に供給されている。
【００２０】
同期化回路１０は、デュアルポートメモリ（ＤＰＭ：Dual Port Memory)１０１、アドレス調整部１０２、ライト調整部１０３、アドレスデコーダ１０４およびＮ個のレジスタＲＥＧ＿１〜ＲＥＧ＿Ｎを含んで構成される。
【００２１】
デュアルポートメモリ１０１のポートＡのDin、adrs、wrenおよびrdenには、ＣＰＵ２０からのデータwr_data、指定アドレスadrs、ライト要求wr_reqおよびリード要求rd_reqがそれぞれ入力する。ＣＰＵ２０からのデータwr_dataは、ライト要求wr_reqに応じて、指定アドレスadrsに格納される。ポートＡのDoutからは、リード要求rd_reqに応じて、指定アドレスadrsに格納されたデータrd_dataがＣＰＵ２０へ出力される。
【００２２】
また、デュアルポートメモリ１０１のポートＢのadrsにはアドレス調整部１０２からのシフトアドレスadrs_sが入力し、同じくポートＢのwrenおよびrdrenにはこの例ではdisableおよびenableがそれぞれ入力している。またポートＢのDoutからはシフトアドレスadrs_sに格納されたデータwr_data_sがレジスタＲＥＧ＿１〜ＲＥＧ＿Ｎの入力Dinへそれぞれ出力される。
【００２３】
アドレス調整部１０２は、ＣＰＵ２０からアドレスadrsを入力し、クロックclockに同期してアドレスadrsを時間的にシフトさせたシフトアドレスadrs_sをデュアルポートメモリ１０１のポートＢのadrsとアドレスでコーダ１０４へ出力する。
【００２４】
ライト調整部１０３は、ＣＰＵ２０からライト要求wr_reqを入力し、クロックclockに同期してライト要求wr_reqを時間的にシフトさせたシフトライト要求wr_req_sをレジスタＲＥＧ＿１〜ＲＥＧ＿Ｎのライトイネーブルwrenへそれぞれ出力する。
【００２５】
言い換えれば、アドレス調整部１０２およびライト調整部１０３は、ＣＰＵ２０からのデータ（ここではＯＵＴ命令）毎に動作し、デュアルポートメモリ１０１のポートＢから出力されるデータをレジスタＲＥＧ＿１〜ＲＥＧ＿Ｎにラッチする際のタイミング調整を行う。
【００２６】
アドレスデコーダ１０４はシフトアドレスadrs_sをデコードして、デュアルポートメモリ１０１のポートＢから出力されるデータ（ＯＵＴ命令）をラッチするレジスタを選択する信号reg1_en〜regN_enを生成する。たとえば、シフトアドレスadrs_sがレジスタＲＥＧ＿１に対応する場合には、対応する選択信号reg1_enのみをenableとし、その他のreg2_en〜regN_enをdisableにすることでデュアルポートメモリ１０１からのＯＵＴ命令がレジスタＲＥＧ＿１にラッチされる。
【００２７】
レジスタＲＥＧ＿１〜ＲＥＧ＿Ｎの各々はＣＰＵ２０からのＯＵＴ命令の最終段のラッチであり、クロックclockに同期して、ラッチしたＯＵＴ命令をハードウェア３０に伝達する。ここでは、Ｎ個のレジスタＲＥＧ＿１〜ＲＥＧ＿ＮがＮ個のＯＵＴ命令reg1_out〜regN_outをハードウェア３０にそれぞれ伝達することができる。
【００２８】
１．２）動作
図４は本発明の第１実施形態による同期化回路の動作を示すタイミングチャートである。まず、ＣＰＵ２０からデュアルポートメモリ１０１のポートＡのDinおよびadrsに、それぞれデータwr_data（ここではＤ１）およびアドレスadrs（ここではＡ１）が与えられ、ライト要求wr_reqの立ち上がりエッジのタイミングで、デュアルポートメモリ１０１のアドレスＡ１にデータＤ１が格納される。
【００２９】
アドレス調整部１０２は、ＣＰＵ２０からのアドレスadrs（Ａ１）をクロックclockの立ち上がりエッジのタイミングで時間的にシフトさせ（ここでは２クロック遅延）、シフトアドレスadrs_s（Ａ１）を出力する。ライト調整部１０３は、ＣＰＵ２０からのライト要求wr_reqをクロックclockの立ち上がりエッジのタイミングでアドレスと同じ時間だけシフトさせ（すなわち２クロック遅延）、シフトライト要求wr_req_sを生成する。
【００３０】
アドレスデコーダ１０４は、アドレス調整部１０２から入力したシフトアドレスadrs_s（Ａ１）をもとにレジスタＲＥＧ＿１に対する選択信号としてreg1_enを生成する。デュアルポートメモリ１０１のポートＢは、指定されたシフトアドレスadrs_s（Ａ１）に対するデータwr_data_s（Ｄ１）をレジスタＲＥＧ＿１〜ＲＥＧ＿Ｎへ出力する。このうちレジスタＲＥＧ＿１は、選択信号reg1_enがロー（Ｌｏｗ）のとき、クロックclockの立ち上がりエッジのタイミングでデータwr_data_sの値（Ｄ１）をラッチし、ハードウェア３０への出力信号reg1_outを更新する。したがって、データwr_data_sはデータwr_dataに対して２クロック遅延して最終段のレジスタにラッチされる。他のレジスタＲＥＧ＿２−ＲＥＧ＿Ｎはそれぞれの選択信号reg2_en−regN_enがハイ（Ｈｉｇｈ）のままであるからデータwr_data_sのラッチは行われない。
【００３１】
ＣＰＵ２０からデータwr_data（Ｄ２）およびアドレスadrs（Ａ２）が与えられた場合も同様に動作する。すなわち、ライト要求wr_reqの立ち上がりエッジのタイミングで、デュアルポートメモリ１０１のアドレスＡ２にデータＤ２が格納される。
【００３２】
アドレス調整部１０２は、ＣＰＵ２０からのアドレスadrs（Ａ２）をクロックclockの立ち上がりエッジのタイミングで時間的にシフトさせ（ここでは２クロック遅延）、シフトアドレスadrs_s（Ａ２）を出力する。ライト調整部１０３は、ＣＰＵ２０からのライト要求wr_reqをクロックclockの立ち上がりエッジのタイミングでアドレスと同じ時間だけシフトさせ（すなわち２クロック遅延）、シフトライト要求wr_req_sを生成する。
【００３３】
アドレスデコーダ１０４は、アドレス調整部１０２から入力したシフトアドレスadrs_s（Ａ２）をもとにレジスタＲＥＧ＿２に対する選択信号としてreg2_enを生成する。デュアルポートメモリ１０１のポートＢは、指定されたシフトアドレスadrs_s（Ａ２）に対するデータwr_data_s（Ｄ２）をレジスタＲＥＧ＿１〜ＲＥＧ＿Ｎへ出力する。このうちレジスタＲＥＧ＿２は、選択信号reg2_enがロー（Ｌｏｗ）のとき、クロックclockの立ち上がりエッジのタイミングでデータwr_data_sの値（Ｄ２）をラッチし、ハードウェア３０への出力信号reg2_outを更新する。したがって、データwr_data_sはデータwr_dataに対して２クロック遅延して最終段のレジスタにラッチされる。他のレジスタＲＥＧ＿１、ＲＥＧ＿３−ＲＥＧ＿Ｎはそれぞれの選択信号reg1_en、reg3_en−regN_enがハイ（Ｈｉｇｈ）のままであるからデータwr_data_sのラッチは行われない。
【００３４】
１．３）効果
このようにアドレス調整部１０２でアドレスadrsを、ライト調整部１０３でライト要求wr_reqを同じ時間だけシフトさせ、これらシフトしたアドレスおよびライト要求を用いて最終段のレジスタにデータwr_data_sをラッチすることで、メタステーブル伝播の遮断回路をメモリで容易に構成することができ、命令数／アドレス数の増加に対しても最終段のレジスタを増加させるだけであり、実質的に回路規模を増加させることなく容易に対応することができる。
【００３５】
本実施形態によれば、ＦＰＧＡ等であらかじめ実装されているメモリのうち未使用のものを使用することにより、論理回路設計用の面積や配線を増やすことができ、より顕著な効果を得ることができる。また、実装しているメモリが全て使用されている場合であっても、未使用な領域があれば、使用領域と分けて使用することにより新たなメモリの追加を必要としない。
【００３６】
さらに、本実施形態によれば、ＯＵＴ命令実行からハードウェアへの通知処理時間を従来の２段フリップフロップ回路をカスケード接続した従来例と同等にすることができるので、設計の変更などを行うことなく本実施形態を採用することができる。
【００３７】
２．第２実施形態
２．１）回路構成
図５は本発明の第２実施形態による同期化回路の主要部を示すブロック図である。ただし、ここでは同期化回路で使用されるデュアルポートメモリまわりの構成のみを図示している。
【００３８】
本実施形態による同期化回路では、クロックＡに同期して動作するデータ入力をシステムクロックＢに乗せ変えるためにデュアルポートメモリ（ＤＰＭ：Dual Port Memory)２０１が設けられている。ポートＡのDinおよびadrsには、データおよびアドレスが入力し、アドレスはポートＢのadrsにも入力する。ポートＡにはクロックＡが、ポートＢにはクロックＢが供給される。
【００３９】
クロックＡは初段のフリップフロップ２０２に入力し、フリップフロップ２０２の出力は第２段のフリップフロップ２０３に入力し、第２段のフリップフロップ２０３の出力は第３段のフリップフロップ２０４およびゲート２０５へ入力する。すなわち、フリップフロップ２０２−２０４は３段にカスケード接続され、フリップフロップ２０２−２０４のそれぞれにはクロックＢが供給される。
【００４０】
ゲート２０５は、後述するように、第２段のフリップフロップ２０３の出力がハイで、第３段のフリップフロップ２０４の出力がローの場合のみローとなり、それ以外はハイとなるイネーブル信号をデュアルポートメモリ２０１のポートＢのリードイネーブルrdenへ供給する。
【００４１】
２．２）動作
図６は本発明の第２実施形態による同期化回路の動作を示すタイミングチャートである。まず、まずデータＤ１はクロックＡの立ち上がりエッジにてデュアルポートメモリ２０１に書き込まれる。また、クロックＢの立ち上がりエッジのタイミングで、クロックＡがフリップフロップ２０２−２０４により順次シフトしてゲート２０５に到達し、第２段のフリップフロップ２０３の出力がハイで、第３段のフリップフロップ２０４の出力がローとなる期間でゲート２０５の出力であるイネーブル信号がローとなり、デュアルポートメモリ２０１のポートＢのリードイネーブルrdenへ出力される。
【００４２】
デュアルポートメモリ２０１のポートＢのadrsには、ポートＡのadrsと同じアドレスが入力しているので、ゲート２０５のイネーブル信号が立ち上がるタイミングで、デュアルポートメモリ２０１に書き込まれたデータＤ１が読み出され出力される。
【００４３】
２．３）効果
本実施形態によれば、デュアルポートメモリ２０１のアドレスについてはポートＡおよびＢで固定値とすることにより、ポートＡ側のデータがポートＢ側に一定のタイミング遅延（クロックＢの３クロック遅延）で伝達される。クロックＢに乗せかえる必要のある信号数が増えた場合にもフリップフロップを追加する必要がなく、メモリバス幅の変更にて対応可能となる。
【産業上の利用可能性】
【００４４】
本発明は、ＣＰＵからのＯＵＴ命令によりハードウェアを制御する装置に適用できる。
【図面の簡単な説明】
【００４５】
【図１】従来の同期化回路の一例を示すブロック図である。
【図２】図１に示す従来例の動作を示すタイミングチャートである。
【図３】本発明の第１実施形態による同期化回路を示すブロック図である。
【図４】本発明の第１実施形態による同期化回路の動作を示すタイミングチャートである。
【図５】本発明の第２実施形態による同期化回路の主要部を示すブロック図である。
【図６】本発明の第２実施形態による同期化回路の動作を示すタイミングチャートである。
【符号の説明】
【００４６】
１０  同期化回路
２０  ＣＰＵ
３０  ハードウェア
１０１  デュアルポートメモリ
１０２  アドレス調整部
１０３  ライト調整部
１０４  アドレスデコーダ
２０１  デュアルポートメモリ
２０２−２０４  フリップフロップ
２０５  ゲート
ＲＥＧ＿１〜ＲＥＧ＿Ｎ  レジスタ
【図１】
2008217450.tif 000003
【図２】
2008217450.tif 000004
【図３】
2008217450.tif 000005
【図４】
2008217450.tif 000006
【図５】
2008217450.tif 000007
【図６】
2008217450.tif 000008