(57)【特許請求の範囲】
【請求項１】
８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、
入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、入力データの所定の７ビットの内で４ビット以上が第１のレベルであるか否かによって変化すると共に出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、
第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路と、
第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、
第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路と、
を具備する半導体集積回路。
【請求項２】
前記遷移数低減回路が、前記レベル数比較回路から出力される第１のデータに従って、８ビットの符号化された入力データの内の所定の４ビットを反転させるビット反転回路を含む、請求項１記載の半導体集積回路。
【請求項３】
８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、
入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、
第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路であって、第１のデータに従って、８ビットの符号化された入力データの内の所定の４ビットを反転させるビット反転回路を含む前記遷移数低減回路と、
第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、
第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路と、
を具備する半導体集積回路。
【請求項４】
前記ＤＣバランス回路が、
出力データにおける第１のレベルのビット数と第２のレベルのビット数との差の半分の履歴を４ビット分記憶するためのレジスタと、
前記遷移数低減回路から出力される第２のデータにおける第１のレベルのビット数と第２のレベルのビット数との差の半分を計算するためのレベル数差計算回路と、
前記レベル数比較回路から出力される第１のデータと前記レジスタから出力されるデータと前記レベル数差計算回路から出力されるデータとを受けて、条件データを作成する条件判定回路と、
条件データに従って、前記レベル数差計算回路から出力されるデータを反転させるビット反転回路と、
前記レベル数比較回路から出力される第１のデータと前記レジスタから出力されるデータと前記ビット反転回路から出力されるデータの和を計算して前記レジスタに出力する加算回路と、
を含む、請求項１〜３のいずれか１項記載の半導体集積回路。
【請求項５】
８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、
入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、
第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路と、
第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路であって、出力データにおける第１のレベルのビット数と第２のレベルのビット数との差の半分の履歴を４ビット分記憶するためのレジスタと、第２のデータにおける第１のレベルのビット数と第２のレベルのビット数との差の半分を計算するためのレベル数差計算回路と、第１のデータと前記レジスタから出力されるデータと前記レベル数差計算回路から出力されるデータとを受けて、条件データを作成する条件判定回路と、条件データに従って、前記レベル数差計算回路から出力されるデータを反転させるビット反転回路と、第１のデータと前記レジスタから出力されるデータと前記ビット反転回路から出力されるデータの和を計算して前記レジスタに出力する加算回路とを含む前記ＤＣバランス回路と、
第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路と、
を具備する半導体集積回路。
【請求項６】
前記レベル数差計算回路が、前記遷移数低減回路から出力される第２のデータに加えて、８ビットの入力データの内の所定の４ビットを入力する、請求項４又は５記載の半導体集積回路。
【請求項７】
前記ＤＣバランス回路が、前記遷移数低減回路から出力される第２のデータにおける第１のレベルのビット数と第２のレベルのビット数との差の半分を計算するためのレベル数差計算回路を含み、前記レベル数差計算回路が、第２のデータに加えて、８ビットの入力データの内の所定の４ビットを入力する、請求項１〜３のいずれか１項記載の半導体集積回路。
【請求項８】
８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、
入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、
第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路と、
第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路であって、第２のデータにおける第１のレベルのビット数と第２のレベルのビット数との差の半分を計算するためのレベル数差計算回路を含み、前記レベル数差計算回路が、第２のデータに加えて、８ビットの入力データの内の所定の４ビットを入力する、前記ＤＣバランス回路と、
第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路と、
を具備する半導体集積回路。
【請求項９】
前記遷移数低減回路が、
前記第１のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第１の回路と、
前記第２のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第２の回路と、
前記レベル数比較回路から出力される第１のデータに従って、前記第１の回路から出力されるデータと前記第２の回路から出力されるデータとの内の一方を選択するセレクタと、
を含み、前記第１の回路及び／又は前記第２の回路が並列処理を行うことにより、直列に接続されるＸＯＲゲート及び／又はＸＮＯＲゲートの段数を減少させた、請求項１〜８のいずれか１項記載の半導体集積回路。
【請求項１０】
８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、
入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、
第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路であって、前記第１のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第１の回路と、前記第２のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第２の回路と、第１のデータに従って、前記第１の回路から出力されるデータと前記第２の回路から出力されるデータとの内の一方を選択するセレクタとを含み、前記第１の回路及び／又は前記第２の回路が並列処理を行うことにより、直列に接続されるＸＯＲゲート及び／又はＸＮＯＲゲートの段数を減少させた前記遷移数低減回路と、
第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、
第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路と、
を具備する半導体集積回路。
【請求項１１】
前記遷移数低減回路が、
前記第１のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第１の回路、又は、前記第２のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第２の回路と、
前記レベル数比較回路から出力される第１のデータに従って、前記第１又は第２の回路から出力されるデータに含まれる８ビットの内の所定の４ビットを反転させるビット反転回路と、
を含み、前記第１又は第２の回路が並列処理を行うことにより、直列に接続されるＸＯＲゲート又はＸＮＯＲゲートの段数を減少させた、請求項１〜８のいずれか１項記載の半導体集積回路。
【請求項１２】
８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、
入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、
第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路であって、前記第１のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第１の回路、又は、前記第２のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第２の回路と、第１のデータに従って、前記第１又は第２の回路から出力されるデータに含まれる８ビットの内の所定の４ビットを反転させるビット反転回路とを含み、前記第１又は第２の回路が並列処理を行うことにより、直列に接続されるＸＯＲゲート又はＸＮＯＲゲートの段数を減少させた前記遷移数低減回路と、
第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、
第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路と、
を具備する半導体集積回路。
【請求項１３】
前記第１又は第２の回路において、直列に接続されるＸＯＲゲート又はＸＮＯＲゲートの段数が最大３段である、請求項９〜１２のいずれか１項記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的に、半導体集積回路に関し、特に、ディジタル画像信号を高速伝送するための符号化回路を実現する半導体集積回路に関する。
【０００２】
【従来の技術】
ディジタル画像信号の高速伝送方式の１つとして、ＤＶＩ（Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）の規格がある。以下においては、この規格を「ＤＶＩ規格」といい、この規格に関する規格書を「ＤＶＩ規格書」という。ＤＶＩ規格書は、ｈｔｔｐ：／／ｗｗｗ．ｄｄｗｇ．ｏｒｇ／ｄｏｗｎｌｏａｄｓ．ｈｔｍｌより入手することができる。本発明において扱う符号化方式は、ＤＶＩ規格書Ｒｅｖ．１．０の２８及び２９ページに定められている。以下においては、この符号化方式を「ＤＶＩ符号化方式」という。ＤＶＩ符号化方式の基礎となる回路に関しては、ＵＳＰ第６０２６１２４号に記載されている。
【０００３】
図１〜図３は、ＤＶＩ符号化方式を示すフローチャートである。ＤＶＩ規格において用いられる伝送方式は、送信側において、画像データのＲＧＢ（Ｒｅｄ、Ｇｒｅｅｎ、Ｂｌｕｅ）のそれぞれについての８ビットの入力データを１０ビットに符号化し、その並列１０ビットのデータを直列化（シリアル化）し、それらにクロック信号を加えた４つの差動ペア信号を伝送する方式である。
【０００４】
ＤＶＩ符号化方式は、８ビットの入力データを１０ビットに符号化することで信号の隣り合うビット間での遷移の確率を最小化し、それと共に、”Ｈ”レベル（以下においては”１”と記述する場合もある）のビット数と”Ｌ”レベル（以下においては”０”と記述する場合もある）のビット数とのバランスをとっている。
【０００５】
隣り合うビット間での遷移の確率を最小化することにより、並列１０ビットのデータをシリアル化して伝送する際にデータのレベルが変化する回数が少なくなり、余分な電磁波の放出を低減させることができる。また、”Ｈ”レベルのビット数と”Ｌ”レベルのビット数とのバランスをとることにより、差動ペアで送られる信号において、ペア間の直流的な偏りが少なくなる。
【０００６】
具体的には、単位時間において８ビットの画像データＤ［０：７］を１キャラクタ分入力し、１０ビットのデータｑ＿ｏｕｔ［０：９］を１ＴＭＤＳキャラクタ分出力する。ＴＭＤＳ（Ｔｒａｎｓｉｔｉｏｎ  Ｍｉｎｉｍｉｚｅｄ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｉｇｎａｌｉｎｇ）とは、ＤＶＩ規格の基礎となっている符号化方式であり、ＴＭＤＳキャラクタとは、符号化された１０ビット分のデータを意味する。この符号化は、信号ＤＥが”Ｈ”レベルのときになされる。
【０００７】
Ｃｎｔ（ｔ）は、連続する複数ＴＭＤＳキャラクタ内で”１”の個数と”０”の個数とのバランスを保つために、時刻ｔにおいて内部レジスタに保持される値であり、”１”の個数から”０”の個数を減じた値と時刻（ｔ−１）における内部レジスタの値Ｃｎｔ（ｔ−１）との和である。例えば、時刻ｔにおいて信号が「１０１１０００００１」であるとき、”１”の数４から、”０”の数６を減じた「−２」を時刻（ｔ−１）における内部レジスタの値Ｃｎｔ（ｔ−１）に加えた値がＣｎｔ（ｔ）となる。
【０００８】
なお、図１〜図３において、Ｎ１｛ｘ｝は、多ビットの変数ｘの中に”１”がいくつ含まれているかを算出する式である。同様に、Ｎ０｛ｘ｝は、多ビット変数ｘの中に”０”がいくつ含まれているかを算出する式である。また、ｑ＿ｍ［ｉ］（ｉ＝０、１、２、・・・、７）は、８ビットの入力データＤ［０：７］の隣り合うビット間の遷移数が少なくなるように処理を加えた結果である。
【０００９】
隣り合うビット間の遷移数について、「１００１００１０」という８ビットの入力データを例にとって説明する。入力データを左から右に順に見ていくと、”１”から”０”へ、又は、”０”から”１”へと値が遷移している部分が５ヶ所あるため、隣り合うビット間の遷移数は５となる。また、ｑ＿ｏｕｔ［０：９］は、さらにＤＣバランスを取るための処理を加えた１０ビットの符号化された出力データを表す。
【００１０】
図１のステップＳ１０１に示すように、ＤＶＩ規格書によると、信号の遷移の確率を最小化するために、８ビットの入力データの”Ｈ”レベルのビット数を数えて、「”Ｈ”レベルのビット数が４個よりも多い場合、又は、第０ビットが”Ｌ”レベルであり、かつ”Ｈ”レベルのビット数が４個である場合」と、そうでない場合とを判別する必要がある。
【００１１】
”Ｈ”レベルのビット数が少ない場合には、図１のステップＳ１０２に示すように、ＸＯＲ（エクスクルーシブＯＲ）ゲートを用いた符号化により、隣り合うビット間の遷移の数を減らすことができる。また、”Ｈ”レベルのビット数が多い場合には、図１のステップＳ１０３に示すように、ＸＮＯＲ（エクスクルーシブＮＯＲ）ゲートを用いた符号化により、隣り合うビット間の遷移の数を減らすことができる。
【００１２】
ＤＶＩ規格書において図１のステップＳ１０１を実現する回路は、図４に示すように、ビットスライスアダー２と、条件判別回路３とを組み合わせて実現することができる。しかし、この回路は、最終結果が求まるまでに通らなければならないゲートの段数が多いために、信号処理に時間がかかってしまう。例えば、通常のＣＭＯＳ方式の論理回路を用いた場合には、全加算器（ＦＡ）７〜１０において、入力された信号は、桁上げ信号Ｃを求めるためにゲートを２段、和信号Ｓを求めるためにゲートを３段通る必要があり、半加算器（ＨＡ）４〜６において、入力された信号は、桁上げ信号Ｃを求めるためにゲートを２段、和信号Ｓを求めるためにゲートを２段通る必要がある。従って、ビットスライスアダー２の入力データは、条件判別回路３にたどりつくまでに最大１０段ゲートを通らなければならない。最終的な結果を得るためには、この入力データは、条件判別回路３においてさらに数段ゲートを通る必要がある。
【００１３】
また、図１のステップＳ１０２、Ｓ１０３に示すように、ＤＶＩ規格によると、入力データの第０ビットと第１ビットとのＸＯＲもしくはＸＮＯＲをとり、それ以降、その計算結果と隣のビットとのＸＯＲもしくはＸＮＯＲを取っていくという処理を行うことにより、遷移の数が少なくなるようにしている。この動作を行う回路は、ＤＶＩ規格書通りの解釈をすると、図５に示すような回路になる。この回路においては、ＸＮＯＲゲート１１ａ〜１１ｇとＸＯＲゲート１２ａ〜１２ｇとが並列に配置されていて、後段のセレクタ１３でいずれかの結果を選ぶようになっている。この回路も、最後のビットが決まるまでに通るゲートの段数が多いという欠点を有している。
【００１４】
次に、ＤＶＩ規格によると、図２のステップＳ１０６及びＳ１０７において、出力コードのＤＣ的なバランスを取るための判断が行われる。具体的には、時刻（ｔ−１）における内部レジスタの値Ｃｎｔ（ｔ−１）が正か負か零かという判断が行われる。また、隣り合うビット間の遷移数を少なくする処理をした後の８ビットの信号ｑ＿ｍ［０：７］について、”Ｈ”レベルのビットの個数と”Ｌ”レベルのビットの個数とをそれぞれ数え、”Ｈ”レベルのビット数の方が多いか、又は”Ｌ”レベルのビット数の方が多いか、又は、”Ｈ”レベルのビット数と”Ｌ”レベルのビット数とが等しいかという判断が行われる。
【００１５】
その結果を受けて、図２のステップＳ１１０及びＳ１１１と図３のステップＳ１１２及びＳ１１３において、ＤＣバランスが取れるように出力データｑ＿ｏｕｔ［０：９］の値を決めると共に、内部のレジスタの更新を行う。この動作と近い動作をする回路が、ＵＳＰ第６０２６１２４号のＦＩＧ．７Ｂに示されている。図６は、これに基づく回路の動作を説明するための簡略化したブロック図である。
【００１６】
まず、隣り合うビット間の遷移数が少なくなるように符号化された信号ｑ＿ｍ［０：７］を、２ビットづつに分ける。それぞれのビットの組について、ビットの値が”１１”か”００”かを、”１１”／”００”検出回路１４ａ〜１４ｄで評価する。もし２ビットの組の値が”０１”もしくは”１０”であれば、その２ビット内ではすでにＤＣバランスが取れているために無視する。その結果を受けて、カウンタ１５及び１６が、”１１”と”００”の数をそれぞれ数える。２つのカウンタのカウント値の差を引算器１７ａ及び１７ｂで計算して、その結果と内部レジスタの値とｑ＿ｍ［８］の値とを条件判定回路１８が評価する。条件判定回路１８における評価結果に基づいて、引算器１７ａと１７ｂとの内のいずれかの出力値をセレクタ１９で選び、その出力値と条件判定回路１８の出力値と４ビットレジスタ２１に記憶されている値との和を４ビット加算器２０で求め、４ビットレジスタ２１に記憶されている値を更新すると共に、最終的な符号化結果を反転するか否かを表す信号ｑ＿ｏｕｔ［９］を出力する。しかしながら、この回路は、遷移の数を少なくする回路の出力を受けて動作するために、最終的な結果が求まるまでに時間がかかるという欠点を有している。
【００１７】
【発明が解決しようとする課題】
そこで、上記の点に鑑み、本発明は、ＤＶＩ符号化方式における上記の欠点を克服し、少ないハードウェア量で高速に、かつ低消費電力で行うための符号化回路を実現する半導体集積回路を提供することを目的とする。
【００１８】
以上の課題を解決するため、本発明の第１の観点に係る半導体集積回路は、８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、入力データの所定の７ビットの内で４ビット以上が第１のレベルであるか否かによって変化すると共に出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路と、第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路とを具備する。
【００１９】
従来のレベル数比較回路においては、８ビットの入力データを受けて条件を判断して出力の状態を切り換えていた。これに対し、本発明の第１の観点に係る半導体集積回路におけるレベル数比較回路によれば、７ビットで同等の機能を実現できるので、回路面積や消費電力の点で従来よりも有利である。
【００２０】
本発明の第２の観点に係る半導体集積回路は、８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路であって、第１のデータに従って、８ビットの符号化された入力データの内の所定の４ビットを反転させるビット反転回路を含む遷移数低減回路と、第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路とを具備する。
【００２１】
本発明の第３の観点に係る半導体集積回路は、８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路と、第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路であって、出力データにおける第１のレベルのビット数と第２のレベルのビット数との差の半分の履歴を４ビット分記憶するためのレジスタと、第２のデータにおける第１のレベルのビット数と第２のレベルのビット数との差の半分を計算するためのレベル数差計算回路と、第１のデータとレジスタから出力されるデータとレベル数差計算回路から出力されるデータとを受けて、条件データを作成する条件判定回路と、条件データに従って、レベル数差計算回路から出力されるデータを反転させるビット反転回路と、第１のデータとレジスタから出力されるデータとビット反転回路から出力されるデータの和を計算してレジスタに出力する加算回路とを含むＤＣバランス回路と、第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路とを具備する。
【００２２】
従来のＤＣバランス回路においては、加算回路に与える値を決めるために、２つの判断を行う必要があった。これに対し、本発明の第３の観点に係る半導体集積回路におけるＤＣバランス回路によれば、条件判定回路がレベル数差計算回路の出力を反転させるかさせないかという１つの条件のみを判断すれば、加算回路に与える値が求まる。
【００２３】
本発明の第４の観点に係る半導体集積回路は、８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路と、第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路であって、第２のデータにおける第１のレベルのビット数と第２のレベルのビット数との差の半分を計算するためのレベル数差計算回路を含み、レベル数差計算回路が、第２のデータに加えて、８ビットの入力データの内の所定の４ビットを入力する、ＤＣバランス回路と、第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路とを具備する。
【００２４】
本発明の第５の観点に係る半導体集積回路は、８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路であって、第１のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第１の回路と、第２のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第２の回路と、第１のデータに従って、第１の回路から出力されるデータと第２の回路から出力されるデータとの内の一方を選択するセレクタとを含み、第１の回路及び／又は第２の回路が並列処理を行うことにより、直列に接続されるＸＯＲゲート及び／又はＸＮＯＲゲートの段数を減少させた遷移数低減回路と、第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路とを具備する。
【００２５】
本発明の第６の観点に係る半導体集積回路は、８ビットの入力データを１０ビットの出力デ−タに符号化する半導体集積回路であって、入力データの所定の複数ビットにおける第１のレベルのビット数と第２のレベルのビット数とを比較して、出力デ−タの一部を構成する第１のデータを出力するレベル数比較回路と、第１のデータに従って、入力データの隣合う２ビット間の遷移の数を低減させて、８ビットの第２のデータを出力する遷移数低減回路であって、第１のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第１の回路、又は、第２のレベルのビット数が所定の値よりも大きい場合に、入力データの隣合う２ビット間の遷移の数を低減させる第２の回路と、第１のデータに従って、第１又は第２の回路から出力されるデータに含まれる８ビットの内の所定の４ビットを反転させるビット反転回路とを含み、第１又は第２の回路が並列処理を行うことにより、直列に接続されるＸＯＲゲート又はＸＮＯＲゲートの段数を減少させた遷移数低減回路と、第１及び第２のデータに従って、１０ビットの出力デ−タにおける第１のレベルのビット数と第２のレベルのビット数とのバランスをとって、出力デ−タの一部を構成する第３のデータを出力するＤＣバランス回路と、第３のデータに従って、第２のデータを反転させて、出力デ−タの一部を構成する第４のデータを出力する出力反転回路とを具備する。
【００２６】
以上において、第１のレベルは、”Ｈ”レベルと”Ｌ”レベルとの内の一方を表し、第２のレベルは、”Ｈ”レベルと”Ｌ”レベルとの内の他方を表す。
【００２７】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態について説明する。なお、同一の構成要素については同一の参照番号で示し、説明を省略する。
まず、本発明の一実施形態に係る半導体集積回路において用いられるアルゴリズムについてフローチャートを用いて説明し、その後に、そのアルゴリズムを実現するための半導体集積回路の構成について説明する。
【００２８】
（１）アルゴリズムの説明
本発明は、図１〜図３に示すＤＶＩ符号化方式のフローと論理的に等価なフローが、図７と図８に示すようなフローによっても実現できること、及び、図７と図８のフローチャートに基づいて回路を構成した場合に、図１〜図３のフローチャートをそのまま回路化した場合と比べて効率がよく、少ないハードウェア資源で高速かつ低消費電力の回路が実現できることに着目してなされたものである。図１〜図３に示すフローチャートと比較して、図７と図８に示すフローチャートの方が、共通化できる部分をできるだけ共通化することにより、信号が分岐した際に行われる処理が少なくなっており、少ないハードウェア資源で実現できることが分る。
【００２９】
まず、図１のステップＳ１０１〜Ｓ１０３は、図７のステップＳ５０１〜Ｓ５０４に置き換えることが可能である。
【００３０】
（ステップＳ５０１の説明）
ステップＳ５０１は、図１のステップＳ１０１と、ステップＳ１０２及びＳ１０３におけるｑ＿ｍ［８］の値を代入する部分とを合わせた処理を行うステップである。ステップＳ１０１で行う条件判断をステップＳ５０１に示すような条件に置き換えることにより、信号処理を効率化することができる。
【００３１】
すなわち、図１のステップＳ１０１においては、
（Ｎ１｛Ｄ｝＞４）  ＯＲ  （Ｎ１｛Ｄ｝＝＝４  ＡＮＤ  Ｄ［０］＝＝０）
という判別条件を用いるが、図７のステップＳ５０１においては、これと等価な、
Ｎ１｛Ｄ［１：７］｝＞＝４
という条件を用いている。
【００３２】
（ステップＳ５０２〜Ｓ５０４の説明）
ステップＳ５０２においては、図１のステップＳ１０２におけるのと同様の計算式を用いてｑ＿ｍ［０：７］を求める。ただし、具体的な回路化においてはさらに効率化を行うが、それについては後述する。また、ステップＳ５０２においては、ステップＳ１０２ではなくステップＳ１０３におけるのと同様の計算式を用いるように変更することも可能である。
【００３３】
次に、ステップＳ５０２〜Ｓ５０４を合わせて説明する。
図１〜図３のフローチャートの通りに実現した回路は、８ビット分のＸＯＲを用いたエンコーダ（ステップＳ１０２に相当）と、８ビット分のＸＮＯＲを用いたエンコーダ（ステップＳ１０３に相当）と、それら２つのエンコーダの内の１つの結果を選択する８ビットのセレクタ（ステップＳ１０１に相当）によって構成される。しかしながら、同じ動作をする回路は、８ビット分のＸＯＲを用いたエンコーダと、４ビット分の反転回路のみで構成することが可能である。なぜならば、（８ビット分のＸＯＲを用いたエンコーダの結果）＋（４ビット反転）＝（８ビット分のＸＮＯＲを用いたエンコーダの結果）となるからである。具体的には、（Ｎ１｛Ｄ［７：１］｝＞＝４）のときに、次式が成立する。
【数１】
0003589648.tif 000002
【００３４】
これらの式を書き下すと、次のようになる。
【数２】
0003589648.tif 000003
【００３５】
ここで、偶数回のＸＮＯＲ演算に対して、
【数３】
0003589648.tif 000004
の関係が成り立つことを利用すると、式（１）は、次のように変形できる。
【数４】
0003589648.tif 000005
【００３６】
一方、（Ｎ１｛Ｄ［７：１］｝＜４）のときには、次式が成立する。
【数５】
0003589648.tif 000006
【００３７】
これらの式を書き下すと、次のようになる。
【数６】
0003589648.tif 000007
【００３８】
式（２）と式（３）とを比較すると、その差は、ｑ＿ｍ［８］の場合を除いて、ｉが奇数であるビット（以下、奇数ビットという）のｑ＿ｍ［ｉ］が反転しているだけである。従って、図１のステップＳ１０１における場合分けとステップＳ１０３における計算とを行うことなく、ステップＳ１０２におけるＸＯＲの計算のみを行ってｑ＿ｍ［０：８］を求めた上で、図７のステップＳ５０３及びＳ５０４における計算を行えば足りることが分かる。
以上のように、本発明においては、従来技術である図１のステップＳ１０１〜Ｓ１０３が、図７におけるステップＳ５０１〜Ｓ５０４のように置換されている。
【００３９】
（ステップＳ５０５及びＳ５０６の説明）
図７のステップＳ５０５及びＳ５０６は、図１のステップＳ１０４及びＳ１０５と同じである。
【００４０】
（ステップＳ５０７〜Ｓ５１４の説明）
図８のステップＳ５０７〜Ｓ５１４は、図２と図３のステップＳ１０６〜Ｓ１１３に対応する。
【００４１】
ステップＳ１１０〜Ｓ１１３によると、カウンタの値の更新のためには、次の４つの式を条件に応じて使い分ける必要がある。
【数７】
0003589648.tif 000008
ここで、Ｎ１はＮ１｛ｑ＿ｍ［０：７］｝を、Ｎ０はＮ０｛ｑ＿ｍ［０：７］｝を表している。
【００４２】
上記の式において、ｑ＿ｍ［８］は、０又は１であるので、次のようになる。
【数８】
0003589648.tif 000009
２進数におけるｎビットの引き算は、補数を用いた演算により次のように表すことができる。
【数９】
0003589648.tif 000010
ここで、記号“〜Ａ”は、Ａの全ビット反転を表している。例えば、Ａ＝１の場合には、−Ａ＝−１＝１１１１であり、〜Ａ＋１＝〜（０００１）＋１＝１１１０＋１＝１１１１となる。
【００４３】
このことと、Ｎ０とＮ１の差は必ず偶数になるために式全体を２で割ることができることとを利用して、Ｃｎｔ／２をｈＣｎｔと置き直すと以下の式になる。
【数１０】
0003589648.tif 000011
ここで、Ｎ０Ｎ１＝（Ｎ０−Ｎ１）／２である。このように、カウンタ値ｈＣｎｔの計算は、全反転・１ビット加算・全加算の３つの演算で実現することができる。
【００４４】
次に、ステップＳ１１０〜Ｓ１１３の各条件の計算について詳しく説明する。ステップＳ１１０においては、次の計算を行う。
【数１１】
0003589648.tif 000012
ここで、最後の“１−（〜ｑ＿ｍ［８］）”という項は、ｑ＿ｍ［８］が０のときには０となり、ｑ＿ｍ［８］が１のときには１となるため、ｑ＿ｍ［８］に置き換える事が可能である。従って、上式は、次のように表すことができる。
【数１２】
0003589648.tif 000013
【００４５】
また、ステップＳ１１１は、次のように置き換えられる。
【数１３】
0003589648.tif 000014
さらに、ステップＳ１１２は、次のように置き換えられる。
【数１４】
0003589648.tif 000015
ステップＳ１１２の条件が実行されるのは、ステップＳ１０９を見ると分るように、ｑ＿ｍ［８］が０のときである。このため、ｈＣｎｔ（ｔ）の計算式を次のように置き換えても構わない。
【数１５】
0003589648.tif 000016
【００４６】
また、ステップＳ１１３については、次のように表すことができる。
【数１６】
0003589648.tif 000017
しかしながら、ステップＳ１１２の場合と同様に考えると、この計算はｑ＿ｍ［８］が１のときにのみ実行されるため、次のように表すことができる。
【数１７】
0003589648.tif 000018
【００４７】
これらの式変形を行うことで、ステップＳ１１０とＳ１１３、ステップＳ１１１とＳ１１２は全く同じ式で計算できるようになり、計算式は次のように２つの式に単純化される。
【数１８】
0003589648.tif 000019
ここで、ステップＳ１１０とＳ１１３が実行されるときはＮ０Ｎ１を反転し、ステップＳ１１１とＳ１１２が実行されるときにはＮ０Ｎ１を反転しない。図８においては、ステップＳ５０７においてＮ０Ｎ１を計算し、ステップＳ５０８においてＮ０Ｎ１を反転するかしないかを判別する。その結果に応じて、ステップＳ５０９においてはＮ０Ｎ１を反転せずに、ステップＳ５１０においてはＮ０Ｎ１を反転して、ステップＳ５１１においてｈＣｎｔ（ｔ）の値を計算している。
【００４８】
次に、ステップＳ５０９とＳ５１０で使われている今まで説明しなかったｑ＿ｍ［９］という値について説明する。この値は、最終的に、ステップＳ５１３及びＳ５１４においてｑ＿ｏｕｔ［９］にそのまま代入する値であり、従って、図２のステップＳ１１０及びＳ１１１と、図３のステップＳ１０８で用いられているｑ＿ｏｕｔ［９］と等価である。順に値を見てみると、ステップＳ１１０においては、ｑ＿ｏｕｔ［９］は０である。さらに、ステップＳ１１１においては、ｑ＿ｏｕｔ［９］は１である。次に、ステップＳ１０８においては、ｑ＿ｏｕｔ［９］に〜ｑ＿ｍ［８］を代入している。
【００４９】
ｑ＿ｍ［８］の値によって、ステップＳ１１２を実行するかステップＳ１１３を実行するかにフローが分かれるため、それぞれの場合について検討する。ステップＳ１１２においては、ｑ＿ｍ［８］が０であるため、ｑ＿ｏｕｔ［９］は１となる。ステップＳ１１３においては、ｑ＿ｍ［８］が１であるため、ｑ＿ｏｕｔ［９］は０となる。ということは、Ｎ０Ｎ１の反転条件と同様に、ステップＳ１１０とＳ１１３が同じｑ＿ｏｕｔ［９］の値を用い、ステップＳ１１１とＳ１１２が同じｑ＿ｏｕｔ［９］の値を用いるということが分る。
【００５０】
次に、図８のステップＳ５１２〜Ｓ５１４において、最終的に出力する値であるｑ＿ｏｕｔ［０：９］を決めている。ステップＳ５１２においてｑ＿ｍ［９］が０か１かを判別し、その結果に応じて、ステップＳ５１３においてはｑ＿ｍ［０：９］をそのままｑ＿ｏｕｔ［０：９］として出力し、ステップＳ５１４においてはｑ＿ｍ［０：７］を反転してｑ＿ｏｕｔ［０：７］として出力している。これらの違いは、ｑ＿ｍ［０：７］を反転するかしないかである。これについても、図２と図３の中では、ステップＳ１０６とＳ１０７で条件分岐してステップＳ１０８、Ｓ１１０、Ｓ１１１の３箇所で値を決めている。しかし、ｑ＿ｍ［９］の値を求める際と同様に、ステップＳ１０８において代入している値は結局ｑ＿ｍ［８］に依存しているため、ステップＳ１０９で分岐した後のステップＳ１１２とＳ１１３のどちらを実行するかによって決まる。
【００５１】
ステップＳ１１０〜Ｓ１１３において、ｑ＿ｍ［０：７］が反転されるか否かについて検討する。ステップＳ１１０においては、ｑ＿ｍ［０：７］を反転していない。ステップＳ１１１においては、ｑ＿ｍ［０：７］を反転している。ステップＳ１１２においては、ｑ＿ｍ［８］が０であるために、ｑ＿ｍ［０：７］を反転する。ステップＳ１１３においては、ｑ＿ｍ［８］が１であるために、ｑ＿ｍ［０：７］を反転しない。つまり、ｑ＿ｏｕｔ［０：９］を決めるときにも、ステップＳ１１０とＳ１１３、ステップＳ１１１とＳ１１２は、それぞれ同じ処理を行っても良いことが分る。
【００５２】
以上のように、本実施形態においては、従来技術である図２と図３のステップＳ１０６〜Ｓ１１３が、図８におけるステップＳ５０７〜Ｓ５１４のように置換されている。なお、図７と図８に示すアルゴリズムは、次に説明する図１０の回路構成に対応させるため冗長な部分があるが、アルゴリズムのみを考慮したフローチャート（後半部）は、図９に示すように、より簡単なものとなる。
【００５３】
（２）半導体集積回路の説明
図１０は、図７と図８のフローチャートを回路化したブロック図である。以下、図１０を参照しながら、本発明の一実施形態に係る半導体集積回路によって実現される符号化回路の構成について説明する。
【００５４】
まず、８ビットの入力データＤ［０：７］のうち、２ビット目から８ビット目までの７ビット分の信号Ｄ［１：７］が、レベル数比較回路２２に供給される。レベル数比較回路２２は、供給された７ビットのデータの内の”Ｈ”レベルのビット数を数えて、そのビット数が４よりも大きいか小さいかを判断して出力を発生する。その出力は、遷移数低減回路２３及びＤＣバランス回路２４に加えられるほか、ｑ＿ｏｕｔ［８］として出力される。
【００５５】
それとは別に、８ビットの入力データＤ［０：７］は、遷移数低減回路２３に供給される。ここで符号化した結果とレベル数比較回路２２の出力とに基づいて、隣り合うビット間の遷移数を低減した８ビットのデータが出力される。遷移低減回路２３の出力は、出力反転回路２５に加えられる。出力反転回路２５は、ＤＣバランス回路２４の出力に従って、全てのビットをそのまま又は反転して、ｑ＿ｏｕｔ［０：７］として出力する。また、遷移数低減回路２３の出力は、ＤＣバランス回路２４にも加えられる。
【００５６】
ＤＣバランス回路２４は、遷移数低減回路２３の出力データと入力データＤ［０：７］との内で変数が奇数であるビットのデータＤ［１］、Ｄ［３］、Ｄ［５］、Ｄ［７］と、レベル数比較回路２２の出力とを受けて、現在のデータのＤＣバランスを計算し、内部レジスタに保持している過去に出力したデータのＤＣバランスと合わせてカウンタの値を求め、その値を新たな値としてレジスタに保持すると共に、その時点で出力するデータを反転するか反転しないかを示す出力信号を出力反転回路２５に供給する。
【００５７】
また、ＤＣバランス回路２４は、ＤＥ信号が”Ｌ”レベルのときに、４ビットの内部レジスタの値をクリアする。なお、ＤＥ信号が”Ｌ”レベルのときに、Ｃｏｍｍａと呼ばれる同期を取るために挿入される特殊なデータを出力する必要があるが、本発明はＤＥ信号が”Ｈ”レベルのときの符号化回路の実現方法を問題としているため、Ｃｏｍｍａを生成するための回路については省略する。以上のようにして、ＤＶＩ規格に従った符号化が行われる。
【００５８】
図７と図８のフローチャートと、図１０のブロック図の対応は、以下の通りである。
図７のステップＳ５０１          ：図１０の参照番号２２
図７のステップＳ５０２          ：図１０の参照番号２３
図７のステップＳ５０３、Ｓ５０４：図１０の参照番号２６
図８のステップＳ５０７          ：図１０の参照番号２７
図８のステップＳ５０８          ：図１０の参照番号２８
図８のステップＳ５０９、Ｓ５１０：図１０の参照番号２９
図８のステップＳ５１１          ：図１０の参照番号３０、３１
図８のステップＳ５１２〜Ｓ５１４：図１０の参照番号２５
【００５９】
図１０に示す各部の動作について、さらに詳しく説明する。
まず、レベル数比較回路２２について説明する。図７のフローチャートにおいては、ステップＳ５０１の部分に相当する。
【００６０】
レベル数比較回路２２は、入力データ中の”Ｈ”レベルのビット数を数え、４個以上あるか否かを判断する回路である。ＤＶＩ規格書によると、次のように規定されている。
（Ｎ１｛Ｄ｝＞４）  ＯＲ  （Ｎ１｛Ｄ｝＝＝４  ＡＮＤ  Ｄ［０］＝＝０）
従って、８ビットの入力データＤ［７：０］を評価して、”Ｈ”レベルのビット数が４個よりも多い場合と、Ｄ［０］が”Ｌ”  レベルのときに”Ｈ”  レベルのビット数が４個である場合とを検出しなればならない。しかし、この条件は、Ｄ［０］のビットを評価しなくても良いように変形できる。すなわち、上式は次式と等価である。
Ｎ１｛Ｄ［１：７］｝＞＝４
従って、Ｄ［１：７］の７ビットの入力データの内で、”Ｈ”レベルのビット数が４以上であるか否かを判断すれば良い。この式を用いることにより、評価に必要なビット数が１ビット少なくなる。またＤ［０］の値により場合分けしていたものが場合分けしなくても良くなるので、条件判断回路が不要となり、回路規模が小さく回路動作が高速になるという利点がある。
【００６１】
図１１に、このアルゴリズムを具体的な回路として構成した例を示す。前述したように、レベル数比較回路は、７ビットのデータ中に”１”のビット数が４個よりも多いか少ないかを判別する回路である。入力データに含まれている７ビットデータＤ［７：１］を、Ｄ［６：１］の６ビットとＤ［７］の１ビットとに分ける。６ビットの部分については、さらに２ビットづつに分ける。それらを、Ｄ［２ｉ−１］、Ｄ［２ｉ］（ｉ＝１、２、３）とする。ここで、
【数１９】
0003589648.tif 000020
とすると、２つのビットが”００”のときにＮＮ［ｉ］が”１”になり、２つのビットが”１１”のときにＰＰ［ｉ］が”１”になる。このため、ＮＮ［ｉ］もＰＰ［ｉ］も”０”の場合には、２つのビットは”０１”であるか”１０”  であるかのいずれかになる。ＮＮ［１］、ＮＮ［２］、ＮＮ［３］の内で”１”になっている個数と、ＰＰ［１］、ＰＰ［２］、ＰＰ［３］の内で”１”になっている個数と、Ｄ［７］が”０”  であるか”１”  であるかとの条件によって場合分けをして、Ｄ［７：１］の７ビットの中に”１”が４個以上あるケースを選び出すと、以下のようになる。
【表１】
0003589648.tif 000021
【００６２】
ＮＮ［ｉ］＝＝”１”となる個数が０個であるという条件をＮＮ０とすると、この条件は次式でチェックできる。
【数２０】
0003589648.tif 000022
ＮＮ［ｉ］＝＝”１”となる個数が１個であるという条件をＮＮ１とすると、この条件は次式でチェックできる。
【数２１】
0003589648.tif 000023
【００６３】
ＰＰ［ｉ］＝＝”１”となる個数が０個以外であるという条件をＰＰ０＿とすると、この条件は次式でチェックできる。
【数２２】
0003589648.tif 000024
ＰＰ［ｉ］＝＝”１”となる個数が２個であるという条件をＰＰ２とすると、この条件は次式でチェックできる。
【数２３】
0003589648.tif 000025
【００６４】
これらの条件式を使用して、Ｄ［７：１］の７ビットのデータ中に”１”が４個以上あるための条件式を整理すると、
【数２４】
0003589648.tif 000026
と表すことができる。
【００６５】
この式を用いると、理想的にはゲート５段の遅延で求めることができる。しかし、バッファとして挿入しているインバータが１４個、トランジスタ数で２８個分あり、それらを加えて図１１に示した回路ではトランジスタ数１３０個、クリティカルパスの長さはゲート８段分となっている。同様の回路は、フルアダーを用いたビットスライスアダーによって構成することも可能である。この場合、単純に計算してトランジスタ数で１１２個、クリティカルパスの長さは理想的にはゲート８段分になる。しかし、実際に半導体集積回路として実現するためには途中にバッファ等を挿入する可能性があるため、本実施形態における回路を用いることにより、同等の回路規模で少ないゲート遅延の回路を実現できる。
【００６６】
次に、図１０の遷移数低減回路２３（ビット反転部２６を含む）について説明する。図７のフローチャートではステップＳ５０２〜Ｓ５０４の部分に相当する。
遷移数低減回路２３は、図１に示すステップＳ１０２の演算を行う回路を実現したものである。すなわち、遷移数低減回路２３は、図１２に示すように、レベル数比較回路２２の出力をｑ＿ｍ［８］として、ＸＮＯＲゲート１１ａ〜１１ｇをベースにした符号化を行った後、奇数ビットを反転させるビット反転回路２６（図７のステップＳ５０３、Ｓ５０４に相当）に通すという形で実現できる。また、同様にして、図１３に示すように、ＸＯＲゲート１２ａ〜１２ｇをベースにした符号化を行った後、奇数ビットを反転させるビット反転回路２６に通すという形でも実現できる。
【００６７】
図１２及び図１３に示す回路は、図５に示す従来の遷移数低減回路と比較して、７個のＸＮＯＲゲート１１ａ〜１１ｇと７個のＸＯＲゲート１２ａ〜１２ｇとの内のいずれかを削減できるだけでなく、図５のセレクタ１３を、奇数ビットを反転させる回路２６によって置き換えることができるので、必要とされるトランジスタの数がＣＭＯＳ回路では半分になる。このため、回路を構成するトランジスタの数がおよそ半分になり、それと共に、消費電力も削減される。
【００６８】
また、遷移数低減回路２３は、さらに効率の良い図１４に示す回路として実現することが可能である。図１４の破線で囲っていない部分（ビット反転回路２６以外の部分）が、図７のステップＳ５０２を実現する回路である。
この部分は、ＤＶＩ規格（図１のステップＳ１０２）の通りに計算すると
【数２５】
0003589648.tif 000027
となり、ｑ＿ｍ［７］を求めるためには、ｑ＿ｍ［０］から順にｑ＿ｍ［６］まで求めなければならないために時間がかかる。
【００６９】
そこで、次のように置き換える。
【数２６】
0003589648.tif 000028
このように、ｑ＿ｍ［５］〜ｑ＿ｍ［７］については、括弧の中を先に並列に計算しておいてｑ＿ｍ［３］とＸＯＲを取ることで早く計算結果を得ることができる。しかし、これでもｑ＿ｍ［３］が求まるまでにＸＯＲゲートを３段通らなければならない。
【００７０】
このため、さらに並列化を行う。
【数２７】
0003589648.tif 000029
【００７１】
このように計算を行うことでｑ＿ｍ［３］が求まるまでにＸＯＲゲートを２段、最も時間がかかるものでもＸＯＲゲートを３段通るだけで結果が求まるようになる。ゲート数は増えるものの、ＸＯＲゲートを７段通らないと求まらなかった結果が３段で求まるようになり、短い遅延時間で出力を求められる回路になっている。
【００７２】
図１４の破線で囲った部分はビット反転回路２６であり、図７のフローチャートのステップＳ５０３とＳ５０４で表される部分であることは、図１２、図１３の場合と同様である。ｑ＿ｍ［８］の値に応じて奇数ビットを反転させている。また、この回路は、図１２と図１３との関係と同様に、ＸＯＲゲートだけでなくＸＮＯＲゲートを用いても同様の機能の回路を実現することができる。
【００７３】
次に、図１０に示すＤＣバランス回路２４について説明する。
ＤＣバランス回路２４は、遷移数低減回路２３の８ビットの出力データにおいて”Ｈ”レベルのビット数が多いのか”Ｌ”レベルのビット数が多いのかを内部レジスタを含めて判断し、最終的な出力を反転するか否かを決定して、出力データが複数のＴＭＤＳキャラクタ内においてＤＣ的にバランスがとれるようにするための回路である。
【００７４】
このＤＣバランス回路２４は、８ビットのデータのうち”Ｈ”  レベルのビット数と”Ｌ”  レベルのビット数の差の半分を計算するレベル数差計算回路２７と、所定の条件を計算する条件判定回路２８と、条件判定回路２８によって与えられる条件に従って入力４ビットを反転させるビット反転回路２９と、キャリー入力付の４ビット全加算回路３０と、過去のＤＣバランス状態を記憶する４ビットレジスタ３１とによって構成されている。
【００７５】
従来の条件判定回路は、カウンタの値を計算する式を４種類持っていたため、内部カウンタの値Ｃｎｔ（ｔ−１）に加える値として（Ｎ０−Ｎ１）と（Ｎ１−Ｎ０）とのどちらを選ぶのかという判断と、ｑ＿ｍ［８］を加えるか否かという判断との２つの判断を行う必要があった。一方、本発明によれば、条件判定回路２８において、カウンタの値を計算する式が２種類で足りるため、Ｎ０Ｎ１を反転させるか反転させないかという１つの条件のみを判断すれば良い。
【００７６】
また、従来のレベル数差計算回路は、図６の参照番号１７ａと１７ｂで示すように、Ｎ０Ｎ１とＮ１Ｎ０の２つの引き算回路を必要とする。これに対し、本実施形態においては、セレクタ１９の代わりに、図１０に示すようにビット反転回路２９を用いるので、引き算回路が１つで足り、ハードウェア量が少なくなる。このため、図６に示す従来の回路構成と比較して、本実施形態によれば、レベル数差計算回路２７及び条件判定回路２８が簡単になるのでハードウェア量が少なくなり、消費電力を低減できる。
【００７７】
次に、ＤＣバランス回路２４を構成するレベル数差計算回路２７（図８のフローチャートのステップＳ５０７に相当）について、さらに詳しく述べる。
レベル数差計算回路２７は、遷移数低減回路２３の出力を受けて、”Ｌ”  レベルのビット数と”Ｈ”  レベルのビット数の差の半分（これを、Ｎ０Ｎ１と表す）を計算する回路である。ここで、次の関係がある。
（Ｎ０｛ｑ＿ｍ［０：７］｝−Ｎ１｛ｑ＿ｍ［０：７］｝）／２
＝４−Ｎ１｛ｑ＿ｍ［０：７］｝
＝Ｎ０｛ｑ＿ｍ［０：７］｝−４
【００７８】
このため、Ｎ１｛ｑ＿ｍ［０：７］｝が奇数ならばＮ０Ｎ１も奇数であり、Ｎ１｛ｑ＿ｍ［０：７］｝が偶数ならばＮ０Ｎ１も偶数であるということが分る。Ｎ０Ｎ１を２進数で表現した場合に、偶数か奇数かということは最下位ビットが”Ｌ”レベルか”Ｈ”レベルかということと等価である。従って、Ｎ１｛ｑ＿ｍ［０：７］｝が偶数か奇数かを判断することにより、Ｎ０Ｎ１の最下位のビットを求めることができる。
【００７９】
８ビットのデータｑ＿ｍ［０］〜ｑ＿ｍ［７］の和が偶数か奇数であるかは、式（４）によって求めることができる。
【数２８】
0003589648.tif 000030
【００８０】
ｑ＿ｍ［ｎ］の定義と、同じもの同士のＸＯＲは”Ｌ”になるということを利用して変形をすると、式（５）の関係がある。
【数２９】
0003589648.tif 000031
【００８１】
数式（４）を数式（５）を用いて変形すると、式（６）が得られる。
【数３０】
0003589648.tif 000032
これを見ると分るように、Ｎ０Ｎ１の最下位のビットはＤ［１］、Ｄ［３］、Ｄ［５］、Ｄ［７］の４ビットで計算できる。従って、Ｎ０Ｎ１の最下位ビットは、遷移数低減回路２３を通すことなく求めることができるため、遷移数低減回路２３の遅延時間分だけ速く求めることができる。
【００８２】
図１５に、本実施形態におけるレベル数差計算回路の構成を示す。”１１”／”００”  検出回路１４ａ〜１４ｄは、遷移数低減回路２３の出力ｑ＿ｍ［０］〜ｑ＿ｍ［７］を受けて、入力の２ビットが”１１”であるか”００”であるかを検出する。カウンタ回路３４ａと３４ｂは、それらの出力を受けて、ｑ＿ｍ［０］〜ｑ＿ｍ［３］又はｑ＿ｍ［４］〜ｑ＿ｍ［７］の４ビット分の”００”の個数と”１１”の個数の差である”００”−”１１”をそれぞれ計算する。”００”−”１１”は、”０”の個数と”１”の個数との差の半分である（”０”−”１”）／２と等しいため、カウンタ回路３４ａと３４ｂの出力を加算器３５で加えることにより、Ｎ０Ｎ１を求めることができる。
【００８３】
通常、加算回路は下位のビットから順に計算していくため、上位のビットが求まるまでに時間がかかる。一方、本発明によれば、下位ビット計算回路３６を用いて最下位のビットをあらかじめ計算しておくことができるため、速く計算を行うことができる。しかも、Ｄ［１］、Ｄ［３］、Ｄ［５］、Ｄ［７］の４ビットの少ない入力データに基づいて下位ビットを計算することができるので、ハードウェア量が増加することはない。
【００８４】
図１６に、図１５のレベル数差計算回路のより具体的な構成を示す。
ｑ＿ｍ［０］〜ｑ＿ｍ［７］において、“０”のビット数（Ｎ０）と“１”のビット数（Ｎ１）との差の半分を求める。このために、まずｑ＿ｍ［０］〜ｑ＿ｍ［３］における“０”のビット数と“１”のビット数との差の半分と、ｑ＿ｍ［４］〜ｑ＿ｍ［７］における“０”のビット数と“１”のビット数との差の半分とを求める。得られた３ビットのデータ同士を足し算して、ｑ＿ｍ［０］〜ｑ＿ｍ［７］における“０”のビット数と“１”のビット数との差の半分を求める。
【００８５】
このとき、最下位ビットは、図中の破線で囲ってある下位ビット計算回路３６において求められ、遷移数低減部２３の出力結果を用いる必要がない。このため、本実施形態によれば、遷移数低減回路２３の結果が求められてから計算を開始するよりも、早く結果を求めることができる。
【００８６】
このアルゴリズムについて、もう少し詳しく説明する。
ｑ＿ｍ［０：３］における０の数と１の数との差は、−２〜２までの３ビットのデータＳ０、Ｓ１、Ｓ２で表される。
【表２】
0003589648.tif 000033
【００８７】
Ｓ０、Ｓ１、Ｓ２のそれぞれに対して論理式を作ると、以下のようになる。
【数３１】
0003589648.tif 000034
ここで、次の条件を用いて簡単化する。
【数３２】
0003589648.tif 000035
【００８８】
その結果、上記論理式は次のようになる。
【数３３】
0003589648.tif 000036
【００８９】
ｑ＿ｍ［４：７］についても同様に、０の数と１の数との差を、−２〜２までの３ビットのデータＴ０、Ｔ１、Ｔ２で表す。
【数３４】
0003589648.tif 000037
Ｓ０〜Ｓ２とＴ０〜Ｔ２を足し算して、（Ｎ０−Ｎ１）／２を求める。
【００９０】
次に、ＤＣバランス回路２４に含まれているカウンタ更新部について説明する。カウンタ更新部は、図１０において、参照番号２８〜３１で表されている部分である。図８のフローチャートにおいては、ステップＳ５０８〜Ｓ５１１に相当する。
【００９１】
図１７に、ＤＣバランス回路に含まれているカウンタ更新部の構成を示す。フローチャートにおいて説明したように、重複する処理が共通化されているため、条件判定回路２８の出力を受けて、ビット反転回路２９がＮ０Ｎ１のビットを反転し、その結果と４ビットレジスタ３１の出力とｑ＿ｍ［８］とを加算回路３０において加えるだけの単純な構成となっている。このため、本実施形態の回路構成においては、従来の回路構成に比べ、ハードウェア量が少なく、消費電力も少なくなっている。
【００９２】
【発明の効果】
以上述べたように、本発明によれば、本発明は、ＤＶＩ符号化方式における欠点を克服し、少ないハードウェア量で高速に、かつ低消費電力で行うための符号化回路を実現する半導体集積回路を提供することができる。
【図面の簡単な説明】
【図１】ＤＶＩ符号化方式を示すフローチャートである。
【図２】ＤＶＩ符号化方式を示すフローチャートである。
【図３】ＤＶＩ符号化方式を示すフローチャートである。
【図４】従来の符号化器に含まれるレベル数比較回路の構成を示す図である。
【図５】従来の符号化器に含まれる遷移数低減回路の構成を示す図である。
【図６】従来の符号化器に含まれるＤＣバランス回路の構成を示すブロック図である。
【図７】本発明の一実施形態に係る半導体集積回路において用いられるアルゴリズムを示すフローチャートである。
【図８】本発明の一実施形態に係る半導体集積回路において用いられるアルゴリズムを示すフローチャートである。
【図９】本発明の一実施形態に係る半導体集積回路において用いることが可能な単純化されたアルゴリズムを示すフローチャート（後半部）である。
【図１０】本発明の一実施形態に係る半導体集積回路によって実現される符号化回路の構成を示すブロック図である。
【図１１】本発明の一実施形態に係る半導体集積回路に含まれるレベル数比較回路の構成例を示す回路図である。
【図１２】本発明の一実施形態に係る半導体集積回路に含まれる遷移数低減回路の構成例を示す回路図である。
【図１３】本発明の一実施形態に係る半導体集積回路に含まれる遷移数低減回路の他の構成例を示す回路図である。
【図１４】本発明の一実施形態に係る半導体集積回路に含まれる遷移数低減回路のさらに別の構成例を示す回路図である。
【図１５】本発明の一実施形態に係る半導体集積回路に含まれるＤＣバランス回路内のレベル数差計算回路の構成例を示すブロック図である。
【図１６】本発明の一実施形態に係る半導体集積回路に含まれるＤＣバランス回路内のレベル数差計算回路の構成例を示す図である。
【図１７】本発明の一実施形態に係る半導体集積回路に含まれるＤＣバランス回路内のカウンタ更新部の構成例を示す図である。
【符号の説明】
２  ビットスライスアダー
３  条件判別回路
４〜６  半加算器（ＨＡ）
７〜１０  全加算器（ＦＡ）
１１ａ〜１１ｇ  ＸＮＯＲゲート
１２ａ〜１２ｇ  ＸＯＲゲート
１３  セレクタ
１４ａ〜１４ｄ  “１１”／”００”検出回路
１５、１６  カウンタ
１７ａ、１７ｂ  引算器
１８  条件判定回路
１９  セレクタ
２０  ４ビット加算器
２１  ４ビットレジスタ
２２  レベル数比較回路
２３  遷移数低減回路
２４  ＤＣバランス回路
２５  出力反転回路
２６  ビット反転回路
２７  レベル数差計算回路
２８  条件判定回路
２９  ビット反転回路
３０  ４ビット全加算回路
３１  ４ビットレジスタ
３４ａ、３４ｂ  カウンタ回路
３５  加算器
３６  下位ビット計算回路
【図１】
0003589648.tif 000038
【図２】
0003589648.tif 000039
【図３】
0003589648.tif 000040
【図４】
0003589648.tif 000041
【図５】
0003589648.tif 000042
【図６】
0003589648.tif 000043
【図７】
0003589648.tif 000044
【図８】
0003589648.tif 000045
【図９】
0003589648.tif 000046
【図１０】
0003589648.tif 000047
【図１１】
0003589648.tif 000048
【図１２】
0003589648.tif 000049
【図１３】
0003589648.tif 000050
【図１４】
0003589648.tif 000051
【図１５】
0003589648.tif 000052
【図１６】
0003589648.tif 000053
【図１７】
0003589648.tif 000054