(57)【要約】【課題】  設計の手間が削減されるとともに回路規模の増大が抑えられたコード変換回路およびカウンタを提供する。【解決手段】  数値０から数値１３までの間の各数値を５ビットで表わした、隣り合う数値間および数値１３と数値０との間のハミング距離が全て１の疑似グレイコードを、第１のコード変換回路１２でバイナリコードに変換して加算回路１３でカウントアップして、カウントアップしたバイナリコードに対応する疑似グレイコードに第２のコード変換回路１４で変換して第１のレジスタ１１に格納する。【選択図】  図１
2010268302.tif 000002
【特許請求の範囲】
【請求項１】
数値０から、２ｎ−１以上２ｎ−２以下のいずれかの奇数の数値Ｍまでの間の各数値をｎビットで表わしたバイナリコードをｎビットのグレーコードに変換するバイナリコード・グレイコード変換回路と、
前記グレイコードを数値０から数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードに変換するグレイコード置き換え回路とを備えたことを特徴とするコード変換回路。
【請求項２】
ｎ＋１ビットの前記疑似グレイコードをｎビットのグレイコードに変換する通常グレイコード変換回路と、該グレイコードをｎビットのバイナリコードに変換するグレイコード・バイナリコード変換回路を備えたことを特徴とする請求項１記載のコード変換回路。
【請求項３】
前記グレイコード・バイナリコード変換回路で変換されたバイナリコードが｛（Ｍ＋１）／２｝以上の数値であったときに該数値から｛（Ｍ＋１）／２｝を減じたバイナリコードを出力するとともに、｛（Ｍ＋１）／２｝未満の数値であったときに該バイナリコードを素通りさせる数値変換回路を備えたことを特徴とする請求項２記載のコード変換回路。
【請求項４】
数値０から、２ｎ−１以上２ｎ−２以下のいずれかの奇数の数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードを第１のクロックで取り込む第１のレジスタと、
前記第１のレジスタから前記疑似グレイコードを読み出して該疑似グレイコードに対応するバイナリコードに変換する第１のコード変換回路と、
前記第１のコード変換回路で得られたバイナリコードを循環的にカウントアップ又はカウントダウンするトグル計数回路と、
前記トグル計数回路からカウントアップ又はカウントダウンされたバイナリコードを受け取って、対応する疑似グレイコードに変換して前記第１のレジスタに向けて出力する第２のコード変換回路とを有することを特徴とするカウンタ。
【請求項５】
前記第１のレジスタに格納されている、前記疑似グレイコードを該第１のレジスタから受け取って前記第１のクロックとは非同期の第２のクロックで取り込む第２のレジスタと、
前記第２のレジスタから前記疑似グレイコードを読み出して対応するバイナリコードに変換する第３のコード変換回路とをさらに備えたことを特徴とする請求項４記載のカウンタ。
【請求項６】
前記第３のコード変換回路で変換されたバイナリコードが｛（Ｍ＋１）／２｝以上の数値であったときに該数値から｛（Ｍ＋１）／２｝を減じたバイナリコードを出力する数値変換回路をさらに有することを特徴とする請求項５記載のカウンタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期式回路に組み込まれるコード変換回路およびカウンタに関する。
【背景技術】
【０００２】
非同期式回路の１つである非同期式ＦＩＦＯにおいて、書き込み用のクロックと読み出し用のクロックとで互いに動作周波数や位相が異なる場合、このＦＩＦＯが空の状態であることを示すエンプティ信号やフルの状態であることを示すフル信号を確実に制御するためには、書き込み用のアドレスと読み出し用のアドレスとの同期化を適切に行なう必要がある。このために、非同期式のＦＩＦＯには、グレイコードを採用した書き込み用のアドレスや読み出し用のアドレスをカウントするカウンタが好適に組み込まれる。先ず、グレイコードを採用したカウンタ以外の、バイナリコードを採用したカウンタについて、図７を参照して説明する。
【０００３】
図７は、従来の、バイナリコードを採用したカウンタの構成を示す図である。
【０００４】
図７に示すカウンタ１００には、４つのフリップフロップ１１１，１１２，１１３，１１４からなる第１のレジスタ１１０と、加算回路１２０と、４つのフリップフロップ１３１，１３２，１３３，１３４からなる第２のレジスタ１３０とが備えられている。
【０００５】
第１のレジスタ１１０のクロック端子には、所定の動作周波数および所定の位相を有するクロックＣｌｋ＿Ａが入力される。一方、第２のレジスタ１３０のクロック端子には、クロックＣｌｋ＿Ａが有する動作周波数および位相とは異なる動作周波数および位相を有するクロックＣｌｋ＿Ｂが入力される。
【０００６】
第１のレジスタ１１０からは４ビットのバイナリコードで表わされるデータｃｏｕｎｔ［３：０］が出力される。このデータｃｏｕｎｔ［３：０］は、加算回路１２０および第２のレジスタ１３０のデータ端子に入力される。加算回路１２０は、入力されたデータｃｏｕｎｔ［３：０］を１つインクリメントして第１のレジスタ１１０のデータ端子に入力する。第１のレジスタ１１０のデータ端子に入力されたデータｃｏｕｎｔ［３：０］は、クロックＣｌｋ＿Ａの立ち上がりで取り込まれ、これにより第１のレジスタ１１０から、値が１つインクリメントされたデータｃｏｕｎｔ［３：０］が出力される。
【０００７】
第２のレジスタ１３０は、データ端子に入力されたデータｃｏｕｎｔ［３：０］を、クロックＣｌｋ＿Ｂの立ち上がりで取り込んで、４ビットのバイナリコードで表わされるデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］を出力する。このデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］は、クロックＣｌｋ＿Ｂで動作する図示しない回路に向けて出力される。
【０００８】
図８は、図７に示すカウンタの動作波形を示す図である。
【０００９】
図８には、第１のレジスタ１１０に入力されるクロックＣｌｋ＿Ａと、第１のレジスタ１１０から出力される４ビットのバイナリコードで表わされるデータｃｏｕｎｔ［３：０］が示されている。ここでは、このデータｃｏｕｎｔ［３：０］を１０進数で表示したうちの、数値‘７’から数値‘１０’までの遷移状態が示されている。
【００１０】
また、図８には、データｃｏｕｎｔ［３：０］を構成する各ビットそれぞれのデータｃｏｕｎｔ［３］，ｃｏｕｎｔ［２］，ｃｏｕｎｔ［１］，ｃｏｕｎｔ［０］も示されている。さらに、図８には、第２のレジスタ１３０に入力されるクロックＣｌｋ＿Ｂと、第２のレジスタ１３０から出力される４ビットのバイナリコードで表わされるデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］が示されている。
【００１１】
ここで、４ビットのバイナリコードで表わされるデータｃｏｕｎｔ［３：０］が数値‘７’から数値‘８’に遷移するにあたり、データｃｏｕｎｔ［３：０］を構成する各ビットそれぞれのデータｃｏｕｎｔ［３］，ｃｏｕｎｔ［２］，ｃｏｕｎｔ［１］，ｃｏｕｎｔ［０］は、‘０１１１’から‘１０００’と４ビット全てが変化する。このため、クロックＣｌｋ＿Ｂの、丸で囲んだ立ち上がりエッジのタイミングでは、本来は第２のレジスタ１３０には数値‘７’もしくは数値‘８’が取り込まれるべきであるのに対し、クロックスキューや配線長等による遅延差に起因して各ビット間に生じる、‘０１１１’から‘１０００’に遷移する途中における数値‘０’が取り込まれてしまうという問題が発生する。この問題を解消するために、グレイコードが用いられる。このグレイコードの一例を表１に示す。
【００１２】
【表１】
2010268302.tif 000003
【００１３】
この表１には、１０進数の数値‘０’〜‘１５’に対応する、４ビットで表わしたグレイコードが示されている。グレイコードは、隣り合うコードハミング距離が全て１であるという特性を有する。ここで、表１に示すグレイコードを、図７に示すカウンタ１００に適用したカウンタの構成について、図９を参照して説明する。
【００１４】
図９は、表１に示すグレイコードが適用されたカウンタの構成を示す図である。
【００１５】
図９に示すカウンタ２００には、図７に示すカウンタ１００を構成する第１，第２のレジスタ１１０，１３０および加算回路１２０と、グレイコード・バイナリコード変換回路２１０と、バイナリコード・グレイコード変換回路２２０と、グレイコード・バイナリコード変換回路２３０とが備えられている。
【００１６】
グレイコード・バイナリコード変換回路２１０は、第１のレジスタ１１０からの４ビットのグレイコードで表わされるデータｃｏｕｎｔ＿ｇ［３：０］を入力し、入力されたデータｃｏｕｎｔ＿ｇ［３：０］を４ビットのバイナリコードで表わされるデータｃｏｕｎｔ［３：０］に変換して加算回路１２０に出力する。
【００１７】
加算回路１２０は、入力されたデータｃｏｕｎｔ［３：０］を１つインクリメントしてバイナリコード・グレイコード変換回路２２０に出力する。
【００１８】
バイナリコード・グレイコード変換回路２２０は、加算回路１２０からの４ビットのデータｃｏｕｎｔ［３：０］を入力し、入力されたデータｃｏｕｎｔ［３：０］を４ビットのグレイコードに変換して第１のレジスタ１１０に出力する。
【００１９】
第１のレジスタ１１０は、入力されたグレイコードをクロックＣｌｋ＿Ａでサンプリングして、値が１つインクリメントされた４ビットのグレイコードで表わされるデータｃｏｕｎｔ＿ｇ［３：０］を出力する。
【００２０】
第２のレジスタ１３０は、第１のレジスタ１１０からのデータｃｏｕｎｔ＿ｇ［３：０］をクロックＣｌｋ＿Ｂでサンプリングして４ビットのグレイコードで表わされるデータを出力する。このデータは、グレイコード・バイナリコード変換回路２３０に入力される。グレイコード・バイナリコード変換回路２３０は、この４ビットのグレイコードで表わされるデータを入力し、入力されたデータを４ビットのバイナリコードで表わされるデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］に変換して図示しない回路に向けて出力する。
【００２１】
図１０は、図９に示すカウンタの動作波形を示す図である。
【００２２】
図１０には、第１のレジスタ１１０に入力されるクロックＣｌｋ＿Ａと、第１のレジスタ１１０から出力される４ビットのグレイコードで表わされるデータｃｏｕｎｔ＿ｇ［３：０］が示されている。ここでは、このデータｃｏｕｎｔ＿ｇ［３：０］を１０進数で表示したうちの、数値‘７’から数値‘１０’までの遷移状態が示されている。
【００２３】
また、図１０には、４ビットのグレイコードで表わされるデータｃｏｕｎｔ＿ｇ［３：０］を構成する各ビットそれぞれのデータｃｏｕｎｔ＿ｇ［３］，ｃｏｕｎｔ＿ｇ［２］，ｃｏｕｎｔ＿ｇ［１］，ｃｏｕｎｔ＿ｇ［０］も示されている。さらに、図１０には、第２のレジスタ１３０に入力されるクロックＣｌｋ＿Ｂと、第２のレジスタ１３０を経由してグレイコード・バイナリコード変換回路２３０から出力される４ビットのバイナリコードで表わされるデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］が示されている。
【００２４】
ここで、グレイコードは、隣り合うコードハミング距離が全て１であるという特性を有するため、数値‘７’から数値‘８’に遷移するにあたり、データｃｏｕｎｔ＿ｇ［３：０］を構成する各ビットそれぞれのデータｃｏｕｎｔ＿ｇ［３］，ｃｏｕｎｔ＿ｇ［２］，ｃｏｕｎｔ＿ｇ［１］，ｃｏｕｎｔ＿ｇ［０］は、表１に示すように‘０１００’から‘１１００’と１ビットのみ変化する。このため、クロックＣｌｋ＿Ｂの、丸で囲んだ立ち上がりエッジのタイミングでは、各ビットにクロックスキューや配線長等による遅延差が生じた場合であっても、第２のレジスタ１３０には前回の数値‘７’もしくは今回の数値‘８’が取り込まれることとなる。この図１０では、前回の数値‘７’が取り込まれた例が示されている。
【００２５】
ところで、グレイコードを使用する場合にはコード長が２のべき乗でなければならないという制限がある。２のべき乗でないと最大値から０に遷移する時に２ビット以上が変化してしまうからである。表１に示すグレイコードにおけるコード長は１６（０〜１５）である。即ち、２の４乗（２４）である。ここで、表２に、２のべき乗でないグレイコードを示す。
【００２６】
【表２】
2010268302.tif 000004
【００２７】
表２に示すグレイコードは、コード長が１４（０〜１３）であるため、１３から０に遷移するところで３ビットが変化してしまう。
【００２８】
コード長が２のべき乗でないグレイコードを適用した回路が、例えば特許文献１に提案されている。この特許文献１では、識別ビットをグレイコードの最上位ビットの上に付加し、識別ビットが１であるとき、グレイコードの下位ビットが変化しても出力のバイナリコードにグリッチノイズが出ないように、組み合わせ回路で対策している。
【先行技術文献】
【特許文献】
【００２９】
【特許文献１】特開昭６１−１３１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００３０】
しかし、特許文献１に提案された、出力のバイナリコードにグリッチノイズが出ないように組み合わせ回路で対策する技術を、非同期回路に適用するには細かい遅延調整を行なう必要がある。近年の半導体設計では、配置，配線を自動で行なうため期待通りのタイミングで回路が生成されない可能性があり、従って特許文献１に提案された細かい遅延調整を行なう必要がある技術を適用するのは実用的でない。
【００３１】
また、非同期転送を行なうためには、グレイコードのままで動作周波数や位相が異なるクロックヘの乗せ換えを行なう必要があり、従って特許文献１に提案された識別ビットをグレイコードの最上位ビットの上に付加する技術を非同期転送が行なわれる回路に適用することは困難である。
【００３２】
さらに、特許文献１に提案された技術は、任意の分割数（コード長）に適用可能とあるが、例として挙げられている４ビットで７分割する以外の、５ビット以上で多数の分割数に適用する場合、組み合わせ回路での適用方法をその都度考える必要があり、設計の手間がかかるとともに回路規模も増大する恐れがある。
【００３３】
本発明は、上記事情に鑑み、設計の手間が削減されるとともに回路規模の増大が抑えられたコード変換回路およびカウンタを提供することを目的とする。
【課題を解決するための手段】
【００３４】
上記目的を達成する本発明のコード変換回路は、
数値０から、２ｎ−１以上２ｎ−２以下のいずれかの奇数の数値Ｍまでの間の各数値をｎビットで表わしたバイナリコードをｎビットのグレーコードに変換するバイナリコード・グレイコード変換回路と、上記グレイコードを数値０から数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードに変換するグレイコード置き換え回路とを備えたことを特徴とする。
【００３５】
ここで、ｎ＋１ビットの上記疑似グレイコードをｎビットのグレイコードに変換する通常グレイコード変換回路と、そのグレイコードをｎビットのバイナリコードに変換するグレイコード・バイナリコード変換回路を備えたことが好ましい。
【００３６】
本発明のコード変換回路は、上記構成のため、数値０から奇数の数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードを、バイナリコードに変換して出力することができる。ここで、疑似グレイコードは、コード長が２のべき乗でないグレイコードであって最大値から０に遷移する場合であっても、２ビット以上が変化することはなく、１ビットのみの変化で済む。従って、特許文献１に提案された、出力のバイナリコードにグリッチノイズが出ないように組み合わせ回路で対策する技術と比較し、細かい遅延調整を行なう必要はなく、また多数のコード長に適用する場合であっても、組み合わせ回路での適用方法をその都度考える必要はなく、設計の手間が削減されるとともに回路規模の増大を抑えることができる。
【００３７】
また、上記グレイコード・バイナリコード変換回路で変換されたバイナリコードが｛（Ｍ＋１）／２｝以上の数値であったときにその数値から｛（Ｍ＋１）／２｝を減じたバイナリコードを出力するとともに、｛（Ｍ＋１）／２｝未満の数値であったときにそのバイナリコードを素通りさせる数値変換回路を備えたことも好ましい態様である。
【００３８】
このようにすると、コード長が奇数の場合であっても、数値０から奇数の数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードを、バイナリコードに変換して出力することができる。
【００３９】
また、上記目的を達成する本発明のカウンタは、
数値０から、２ｎ−１以上２ｎ−２以下のいずれかの奇数の数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードを第１のクロックで取り込む第１のレジスタと、
上記第１のレジスタから上記疑似グレイコードを読み出してその疑似グレイコードに対応するバイナリコードに変換する第１のコード変換回路と、
上記第１のコード変換回路で得られたバイナリコードを循環的にカウントアップ又はカウントダウンするトグル計数回路と、
上記トグル計数回路からカウントアップ又はカウントダウンされたバイナリコードを受け取って、対応する疑似グレイコードに変換して上記第１のレジスタに向けて出力する第２のコード変換回路とを有することを特徴とする。
【００４０】
本発明のカウンタは、数値０から奇数の数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードを、バイナリコードに変換してカウントアップ又はカウントダウンし、対応する疑似グレイコードに変換して格納するものである。ここで、疑似グレイコードは、コード長が２のべき乗でないグレイコードであって最大値から０に遷移する場合であっても、２ビット以上が変化することはなく、１ビットのみの変化で済む。従って、特許文献１に提案された技術と比較し、設計の手間が削減されるとともに回路規模の増大を抑えることができる。
【００４１】
ここで、上記第１のレジスタに格納されている、上記疑似グレイコードをその第１のレジスタから受け取って上記第１のクロックとは非同期の第２のクロックで取り込む第２のレジスタと、
上記第２のレジスタから上記疑似グレイコードを読み出して対応するバイナリコードに変換する第３のコード変換回路とをさらに備えたことが好ましい。
【００４２】
このようにすると、疑似グレイコードを、対応するバイナリコードに変換することができる。
【００４３】
また、上記第３のコード変換回路で変換されたバイナリコードが｛（Ｍ＋１）／２｝以上の数値であったときにその数値から｛（Ｍ＋１）／２｝を減じたバイナリコードを出力する数値変換回路をさらに有することも好ましい態様である。
【００４４】
このような数値変換回路を有すると、コード長が奇数の場合であっても、数値０から奇数の数値Ｍまでの間の各数値をｎ＋１ビットで表わした、隣り合う数値間および数値Ｍと数値０との間のハミング距離が全て１の疑似グレイコードで表わされた数値を得ることができる。
【発明の効果】
【００４５】
本発明によれば、設計の手間が削減されるとともに回路規模の増大が抑えられたコード変換回路およびカウンタを提供することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の第１実施形態のカウンタの構成を示す図である。
【図２】本発明の第２実施形態のカウンタの構成を示す図である。
【図３】本発明のカウンタの一実施形態が適用された非同期式ＦＩＦＯの書き込み用ポートおよび読み出し用ポートにおける信号を示す図である。
【図４】図３に示すＦＩＦＯのブロック図である。
【図５】比較例としてのシステム構成を示す図である。
【図６】本発明が適用されたシステム構成を示す図である。
【図７】従来の、バイナリコードを採用したカウンタの構成を示す図である。
【図８】図７に示すカウンタの動作波形を示す図である。
【図９】表１に示すグレイコードが適用されたカウンタの構成を示す図である。
【図１０】図９に示すカウンタの動作波形を示す図である。
【発明を実施するための形態】
【００４７】
以下、図面を参照して本発明の実施の形態を説明する。
【００４８】
図１は、本発明の第１実施形態のカウンタの構成を示す図である。
【００４９】
尚、図１に示すカウンタ１には、本発明のコード変換回路の一例が組み込まれている。また、表３に、前述した表２に示す２のべき乗でない４ビットのグレイコードと、このグレイコードの最上位ビット側に１ビットが付加されてコード幅が５ビットの置き換え後グレイコード（本発明にいう疑似グレイコードの一例に相当）を示す。以下では、２のべき乗でないグレイコードを通常のグレイコード、置き換え後グレイコードを疑似グレイコードと称する。
【００５０】
【表３】
2010268302.tif 000005
【００５１】
図１に示すカウンタ１には、５つのフリップフロップ１１＿１，１１＿２，１１＿３，１１＿４，１１＿５からなる第１のレジスタ１１が備えられている。この第１のレジスタ１１には、表３に示す１０進数の数値０から数値１３（本発明にいう奇数の数値Ｍの一例に相当）までの間の各数値を５ビット（本発明にいうｎ＋１ビットの一例に相当）で表わした、隣り合う数値間および数値１３と数値０との間のハミング距離が全て１の疑似グレイコードで表わされた数値が、クロックＣｌｋ＿Ａの立ち上がりで格納される。格納された数値は、第１のレジスタ１１から５ビットの疑似グレイコードで表わされたデータｃｏｕｎｔ［４：０］として出力される。
【００５２】
また、カウンタ１には、通常グレイコード変換回路１２＿１およびグレイコード・バイナリコード変換回路１２＿２を有する第１のコード変換回路１２と、加算回路１３と、バイナリコード・グレイコード変換回路１４＿１およびグレイコード置き換え回路１４＿２を有する第２のコード変換回路１４とが備えられている。
【００５３】
加算回路１３が、本発明のトグル計数回路の一例に相当する。
【００５４】
通常グレイコード変換回路１２＿１は、第１のレジスタ１１から出力された５ビットの疑似グレイコードで表わされたデータｃｏｕｎｔ＿ｇ［４：０］を、４ビットのグレイコードで表わされる通常のグレイコードに変換する。変換された通常のグレイコードは、グレイコード・バイナリコード変換回路１２＿２に入力される。
【００５５】
グレイコード・バイナリコード変換回路１２＿２は、入力された通常のグレイコードをバイナリコードに変換して、データｃｏｕｎｔ［３：０］として加算回路１３に出力する。
【００５６】
加算回路１３は、データｃｏｕｎｔ［３：０］で構成されるバイナリコードを、数値０と数値１３との間で循環的にカウントアップしたバイナリコードを生成して、バイナリコード・グレイコード変換回路１４＿１に出力する。
【００５７】
バイナリコード・グレイコード変換回路１４＿１は、加算回路１３からバイナリコードを受け取って、対応する４ビットのグレイコードに変換してグレイコード置き換え回路１４＿２に出力する。
【００５８】
グレイコード置き換え回路１４＿２は、例えば、グレイコードに対応する疑似グレイコードのテーブルを備え、入力された４ビットのグレイコードの最上位ビット側に１ビットを付加したコード幅が５ビットの疑似グレイコードに置き換える。このようにして、表３に示す疑似グレイコードを生成する。詳細には、表３に示す数値‘９’から‘１０’の遷移において、最上位ビットのみ０から１に遷移するが他の最上位ビットは変化しないように最上位ビット側に１ビットが付加される。また、数値‘１０’以降では、最上位ビットは１のままに保持された状態で、他の１になっているビットが１つずつ０にされていき、最大値である数値‘１３’から数値‘０’への遷移時に最上位ビットが０にされる。
【００５９】
ここで、「通常のグレイコード」では、数値‘１３’から数値‘０’への遷移においては３ビットが同時に変化してしまうが、「置き換え後グレイコード」であれば１ビットしか変化しない。これにより、隣り合うコードのハミング距離が１であるというグレイコードの特性を維持したまま、コード長が２のべき乗でないコードを作り出すことができる。
【００６０】
さらに、カウンタ１には、５つのフリップフロップ１５＿１，１５＿２，１５＿３，１５＿４，１５＿５からなる第２のレジスタ１５と、通常グレイコード変換回路１６＿１およびグレイコード・バイナリコード変換回路１６＿２を有する第３のコード変換回路１６が備えられている。
【００６１】
第２のレジスタ１５では、第１のレジスタ１１からの５ビットの疑似グレイコードで表わされたデータｃｏｕｎｔ［４：０］が、クロックＣｌｋ＿Ａが有する動作周波数および位相とは異なる動作周波数および位相を有するクロックＣｌｋ＿Ｂの立ち上がりで格納される。格納されたデータｃｏｕｎｔ［４：０］は、通常グレイコード変換回路１６＿１に入力される。
【００６２】
通常グレイコード変換回路１６＿１は、第２のレジスタ１５から出力された５ビットの疑似グレイコードで表わされたデータｃｏｕｎｔ＿ｇ［４：０］を、４ビットのグレイコードで表わされる通常のグレイコードに変換する。変換された通常のグレイコードは、グレイコード・バイナリコード変換回路１６＿２に入力される。
【００６３】
グレイコード・バイナリコード変換回路１６＿２は、入力された通常のグレイコードをバイナリコードに変換して、表３に示すデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］として図示しない外部回路に向けて出力する。
【００６４】
上述した図１にカウンタ１では、コード長Ｍ＋１が１４（０〜１３）、即ち、コード長が偶数の例で説明した。ここで、コード長が奇数の場合は、以下に説明する図２に示すカウンタ２が用いられる。
【００６５】
図２は、本発明の第２実施形態のカウンタの構成を示す図である。
【００６６】
尚、図１に示すカウンタ１の構成要素と同じ構成要素には同一の符号を付し、異なる点について説明する。また、表４に、最上位ビット側に１ビットが付加されてコード幅が５ビットの置き換え後グレイコード（本発明にいう疑似グレイコードの他の一例に相当）を示す。
【００６７】
【表４】
2010268302.tif 000006
【００６８】
表４には、コード長が奇数の場合、例えば、コード長が（Ｍ＋１）／２、即ち、７（０〜６）の場合の例が示されている。コード長が奇数の場合は、倍の長さのコード長Ｍ＋１（０〜６＋０〜６＝１４）のものが用いられる。即ち、表３に示すコード長が１４のものと同じコード長のものが用いられる。
【００６９】
図２に示すカウンタ２は、図１に示すカウンタ１と比較し、数値変換回路２１が追加されている。数値変換回路２１は、減算器２１＿１と、マルチプレクサ２１＿３と、比較回路２１＿２とを有する。
【００７０】
この数値変換回路２１は、第３のコード変換回路１６でバイナリコードが７以上の数値（本発明の｛（Ｍ＋１）／２｝以上の数値の一例に相当）であったときに、その数値から７を減じた数値（本発明の｛（Ｍ＋１）／２｝を減じた数値の一例に相当）に変換するものである。具体的には、第３のコード変換回路１６でバイナリコードが７以上の数値であるか否かを比較回路２１＿２で比較し、比較した結果、数値７未満であった場合は、マルチプレクサ２１＿３で素通りさせる。一方、数値７以上であった場合は、減算器２１＿１でその数値から７を減算し、減算した数値をマルチプレクサ２１＿３から出力させる。このようにして、マルチプレクサ２１＿３から表４に示すデータｃｏｕｎｔ＿Ｃｌｋ＿Ｂ［３：０］を図示しない外部回路に向けて出力する。
【００７１】
次に、本発明のカウンタの一実施形態が適用された非同期式ＦＩＦＯについて説明する。
【００７２】
図３は、本発明のカウンタの一実施形態が適用された非同期式ＦＩＦＯの書き込み用ポートおよび読み出し用ポートにおける信号を示す図である。
【００７３】
図３に示すＦＩＦＯ３は、非同期で先入れ動作と先出し動作とを行なうデータバッファであり、図３の左側には書き込み用ポートの信号が示されており、また図３の右側には読み出し用ポートの信号が示されている。
【００７４】
ＦＩＦＯ３の書き込み用ポートには、書き込みクロックＷＣＬＫと、書き込みを許可するための書き込み信号ＷＥＮと、書き込みデータＷＤとが入力される。また、ＦＩＦＯ３の書き込み用ポートからは、書き込みデータＷＤがフルの状態にあることを示すフル信号ＦＵＬＬが出力される。
【００７５】
また、ＦＩＦＯ３の読み出し用ポートには、読み出しクロックＲＣＬＫと、読み出しを許可するための読み出し信号ＲＥＮが入力される。また、ＦＩＦＯ３の読み出し用ポートからは、読み出しデータＲＤと、読み出しデータＲＤが空の状態にあることを示すエンプティ信号ＥＭＰＴＹが出力される。
【００７６】
ここで、書き込みクロックＷＣＬＫと読み出しクロックＲＣＬＫは、互いに動作周波数および位相が異なっている。
【００７７】
図４は、図３に示すＦＩＦＯのブロック図である。
【００７８】
尚、図４に示す一点鎖線の左側は書き込み用ポート側を示し、右側は読み出し用ポート側を示す。
【００７９】
図４に示すＦＩＦＯ３には、書き込み用ポートと読み出し用のポートとの２つのポートを有するＲＡＭ３１が備えられている。
【００８０】
また、このＦＩＦＯ３の書き込み用ポート側には、書き込みアドレスカウンタ３２＿１と、ＷＣＬＫ同期回路３２＿２と、グレイコード・バイナリコード変換回路３２＿３，３２＿４と、比較回路３２＿５とが備えられている。ここで、書き込みアドレスカウンタ３２＿１が、本発明のカウンタの一実施形態に相当する。
【００８１】
一方、読み出し用ポート側には、読み出しアドレスカウンタ３３＿１と、ＲＣＬＫ同期回路３３＿２と、グレイコード・バイナリコード変換回路３３＿３，３３＿４と、比較回路３３＿５とが備えられている。ここで、読み出しアドレスカウンタ３３＿１が、本発明のカウンタの他の一実施形態に相当する。
【００８２】
このＦＩＦＯ３では、ＷＣＬＫ同期回路３２＿２が読み出しアドレスカウンタ３３＿１からの値（読み出しアドレス）を書き込みクロックＷＣＬＫで取り込むとともに、ＲＣＬＫ同期回路３３＿２が書き込みアドレスカウンタ３２＿１からの値（書き込みアドレス）を読み出しクロックＲＣＬＫで取り込むことにより、読み出しアドレスと書き込みアドレスとの同期化が行なわれている。
【００８３】
また、このＦＩＦＯ３では、書き込み信号ＷＥＮが入力された状態（書き込み許可状態）で書き込みデータＷＤがＲＡＭ３１に１つ書き込まれると、書き込みアドレスカウンタ３２＿１がインクリメントされる。また、読み出し信号ＲＥＮが入力された状態（読み出し許可状態）で読み出しデータＲＤがＲＡＭ３１から１つ読み出されると、読み出しアドレスカウンタ３３＿１がインクリメントされる。
【００８４】
ここで、ＦＩＦＯ３は、非同期式であり、また書き込みクロックＷＣＬＫと読み出しクロックＲＣＬＫとは互いに動作周波数や位相が異なっている。このため、このＦＩＦＯ３では、フルの状態であることを示すフル信号ＦＵＬＬと、空の状態であることを示すエンプティ信号ＥＭＰＴＹを確実に制御するために、疑似グレイコードを使用して書き込みアドレスと読み出しアドレスとの同期化が行なわれている。具体的には、フル信号ＦＵＬＬとエンプティ信号ＥＭＰＴＹの制御は、書き込みアドレスカウンタ３２＿１の値（書き込みアドレス）と読み出しアドレスカウンタ３３＿１の値（読み出しアドレス）とを比較することにより行なわれている。詳細には、フル信号ＦＵＬＬの制御は、書き込みアドレスカウンタ３２＿１の値をグレイコード・バイナリコード変換回路３２＿３を経由して比較回路３２＿５の一方に入力するとともに、ＷＣＬＫ同期回路３２＿２の値をグレイコード・バイナリコード変換回路３２＿４を経由して比較回路３２＿５の他方に入力し、書き込みアドレスと読み出しアドレスとを比較することにより行なわれる。一方、エンプティ信号ＥＭＰＴＹの制御は、読み出しアドレスカウンタ３３＿１の値をグレイコード・バイナリコード変換回路３３＿３を経由して比較回路３３＿５の一方に入力するとともに、ＲＣＬＫ同期回路３３＿２の値をグレイコード・バイナリコード変換回路３３＿４を経由して比較回路３３＿５の他方に入力し、読み出しアドレスと書き込みアドレスとを比較することにより行なわれる。
【００８５】
ここで、書き込みアドレスカウンタ３２＿１，読み出しアドレスカウンタ３３＿１の示す範囲は、このＦＩＦＯ３が有する段数（ここでは、４０９７段とする）と同じである。仮に、書き込みアドレスカウンタ３２＿１，読み出しアドレスカウンタ３３＿１に本発明のカウンタの一実施形態を適用しない場合、即ち、通常のグレイコードを用いた場合は、ＦＩＦＯの段数は必然的に２のべき乗に制限される。このため、ＦＩＦＯとして４０９７の段数が必要な場合は、８１９２の段数を実装することとなる。一方、本実施形態の非同期式ＦＩＦＯ３では、本発明のカウンタの一実施形態が適用されているため、ＦＩＦＯ３の段数は２のべき乗に制限されることもなく、４０９７段で済む。従って、設計の手間が削減されるとともに回路規模の増大が抑えられている。
【００８６】
また、カウンタの値をＣＰＵから読み出すシステムの場合も、このカウンタに本発明が適用されていると、このカウンタの値をＣＰＵから即座に読み出すことができる。以下、詳細に説明する。先ず、比較例としてのシステム構成について説明する。
【００８７】
図５は、比較例としてのシステム構成を示す図である。
【００８８】
図５に示すシステム３００には、バイナリコードが適用されたカウンタ３０１と、マルチプレクサ３０２と、退避レジスタ３０３と、バスＩ／Ｆ３０４，３０７と、同期回路３０５と、バス３０６と、ＣＰＵ３０８とが備えられている。カウンタ３０１および退避レジスタ３０３には、カウンタクロックｃｏｕｎｔｅｒ＿ｃｌｋが入力される。また、バスＩ／Ｆ３０４，３０７およびＣＰＵ３０８には、バスクロックｂｕｓ＿ｃｌｋが入力される。
【００８９】
ここで、カウンタ３０１が仕様上ある特定の範囲内での遷移しか許可されておらず、かつその範囲が２のべき乗でない場合は、このカウンタ３０１に通常のグレイコードを適用しても、カウンタ３０１の値が０に戻る際に２ビット以上が変化してしまう。このため、カウンタ３０１に通常のグレイコードを適用しても無意味である。従って、ここでは、カウンタ３０１にバイナリコードが適用されている。このカウンタ３０１の値は、マルチプレクサ３０２を経由して退避レジスタ３０３に退避される。ここで、ＣＰＵ３０８からバスリード信号ＢＵＳＲが発生し、このバスリード信号ＢＵＳＲがバスＩ／Ｆ３０７，バス３０６，バスＩ／Ｆ３０４を経由して同期回路３０５に入力されると、マルチプレクサ３０２はカウンタ３０１から退避レジスタ３０３ヘの退避を停止して退避レジスタ３０３の値をＣＰＵ３０８に返すように動作する。この動作は１サイクルでは終了しないので、ＣＰＵ３０８からのバスリード信号ＢＵＳＲを待たせるために十分なサイクル数のウェイトが必要とされる。ウェイト数はカウンタクロックｃｏｕｎｔｅｒ＿ｃｌｋとバスクロックｂｕｓ＿ｃｌｋの周波数比に依存するので、カウンタクロックｃｏｕｎｔｅｒ＿ｃｌｋの周波数が遅い場合、ウェイト数も大きくする必要があり、ＣＰＵ３０８のパフォーマンスを悪化させる要因になりやすい。
【００９０】
図６は、本発明が適用されたシステム構成を示す図である。
【００９１】
図６に示すシステム４には、疑似グレイコードが適用されたグレイコードカウンタ４１と、同期回路４２と、通常グレイコード変換回路４３と、グレイコード・バイナリコード変換回路４４と、バスＩ／Ｆ４５，４７と、バス４６と、ＣＰＵ４８とが備えられている。グレイコードカウンタ４１および同期回路４２には、カウンタクロックｃｏｕｎｔｅｒ＿ｃｌｋが入力される。また、同期回路４２およびバスＩ／Ｆ４５，４７およびＣＰＵ４８には、バスクロックｂｕｓ＿ｃｌｋが入力される。
【００９２】
このシステム４には、疑似グレイコードが適用されたグレイコードカウンタ４１および通常グレイコード変換回路４３が備えられているため、構成が簡素化されている。また、ＣＰＵ４８からの読み出しに対しては、同期回路４２の出力を、通常グレイコード変換回路４３，グレイコード・バイナリコード変換回路４４，バスＩ／Ｆ４５を経由してバイナリコード化したものをバス４６上に即座に返すことができるので、ウェイト操作は必要なく、読み出しに対して即座に応答することができる。
【符号の説明】
【００９３】
１，２，４  カウンタ
３  ＦＩＦＯ
１１  第１のレジスタ
１１＿１，１１＿２，１１＿３，１１＿４，１１＿５，１５＿１，１５＿２，１５＿３，１５＿４，１５＿５  フリップフロップ
１２  第１のコード変換回路
１２＿１，１６＿１，４３  通常グレイコード変換回路
１２＿２，１６＿２，３２＿３，３２＿４，３３＿３，３３＿４，４４  グレイコード・バイナリコード変換回路
１３  加算回路
１４  第２のコード変換回路
１４＿１  バイナリコード・グレイコード変換回路
１４＿２  グレイコード置き換え回路
１５  第２のレジスタ
１６  第３のコード変換回路
２１  数値変換回路
２１＿１  減算器
２１＿２，３２＿５，３３＿５  比較回路
２１＿３  マルチプレクサ
３１  ＲＡＭ
３２＿１  書き込みアドレスカウンタ
３２＿２  ＷＣＬＫ同期回路
３３＿１  読み出しアドレスカウンタ
３３＿２  ＲＣＬＫ同期回路
４１  グレイコードカウンタ
４２  同期回路
４５，４７  バスＩ／Ｆ
４６  バス
４８  ＣＰＵ
【図１】
2010268302.tif 000007
【図２】
2010268302.tif 000008
【図３】
2010268302.tif 000009
【図４】
2010268302.tif 000010
【図５】
2010268302.tif 000011
【図６】
2010268302.tif 000012
【図７】
2010268302.tif 000013
【図８】
2010268302.tif 000014
【図９】
2010268302.tif 000015
【図１０】
2010268302.tif 000016