(57)【要約】プロセッサと連結されたプログラム可能な可変長デコーダが開示される。入力されるビットストリームデータを所定ビット数だけ並列化して保存し、第１制御信号によって出力するバッファメモリ、バッファメモリから出力されるデータを第１制御信号によって一時保存した後に出力するラッチ部、ラッチ部の出力データを選択して出力するマルチプレキシング部、マルチプレキシング部の出力データを第２制御信号による値だけシフトして出力する第１バレルシフタ、第１バレルシフタの出力データをデコーディングし、デコーディングされたコードワード及びビット長を出力するデコーディング部、及び、現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算して保存し、これにより、第１及び第２制御信号を生成してバッファメモリ、ラッチ部及び第１バレルシフタに出力する制御部を備える。
2005531172.tif 000002
【特許請求の範囲】
【請求項１】
入力されるビットストリームデータを所定ビット数だけ並列化して保存し、第１制御信号によって出力するバッファメモリと、
前記バッファメモリから出力されるデータを前記第１制御信号によって一時保存した後に出力するラッチ部と、
前記ラッチ部の出力データを選択して出力するマルチプレキシング部と、
前記マルチプレキシング部の出力データを第２制御信号による値だけシフトして出力する第１バレルシフタと、
前記第１バレルシフタの出力データをデコーディングし、デコーディングされたコードワード及びビット長を出力するデコーディング部と、
現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算して保存し、これにより、前記第１及び第２制御信号を生成して前記バッファメモリ、前記ラッチ部及び前記第１バレルシフタに出力する制御部と、
を備えていることを特徴とする、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項２】
所定の可変長デコーディング過程を前記可変長デコーダの外部プロセッサで行うために、前記第１バレルシフタの出力データを前記外部プロセッサに提供するプロセッサデータインターフェース部をさらに備え、
前記プロセッサデータインターフェース部は、前記第１バレルシフタの出力データを前記外部プロセッサから提供されるビット長値だけシフトして出力する第２バレルシフタを含むことを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項３】
前記ラッチ部は、
前記バッファメモリから出力されるデータを前記第１制御信号によって一時保存した後、保存されたデータを出力する第１ラッチと、
前記第１ラッチの出力データを前記第１制御信号によって一時保存した後、保存されたデータを出力する第２ラッチと、
前記第２ラッチの出力データを前記第１制御信号によって一時保存した後、保存されたデータを出力する第３ラッチと、
を含むことを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項４】
前記マルチプレキシング部は、
前記第１ラッチ及び前記第２ラッチから出力されるデータを所定の選択制御信号によって選択して前記第１バレルシフタの下位ビットとして出力する第１マルチプレクサと、
前記第２ラッチ及び前記第３ラッチから出力されるデータを前記選択制御信号によって選択して前記第１バレルシフタの上位ビットとして出力する第２マルチプレクサと、
を含むことを特徴とする請求項３に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項５】
前記デコーディング部は、
前記第１バレルシフタの出力データをデコーディングして検出された可変長コードを確定長コードに変換させるシンボルデコーダと、
検出された可変長コードのビット長値を前記制御部に出力する長デコーダと、
を含むことを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項６】
前記デコーディング部は、プログラム可能ロジックアレイにより構成されたコードワードテーブルをさらに含み、
前記シンボルデコーダは、前記第１バレルシフタの出力データを、前記コードワードテーブルに基づくコードワードにデコードし、デコーディングされる出力をシンボル化して所定値として出力することを特徴とする請求項５に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項７】
前記制御部は、
前記長デコーダから出力される現在デコーディングされているコードワードのビット長値又は前記外部プロセッサから提供されるビット長値を選択する第３マルチプレクサと、
前記第３マルチプレクサにより選択された現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算する加算器と、
前記加算器で合算されたコードワードのビット長値、即ち、直前クロックまでにデコーディングされたコードワードのビット値の和を保存し、これを前記第２制御信号として前記第１バレルシフタに出力し、前記加算器に累積コードワードのビット長値として提供する累積値レジスタと、
前記加算器の演算時にキャリ信号が発生する場合、その発生するキャリ信号を一時保存し、これを前記第１制御信号として前記バッファメモリ及び前記ラッチ部に出力するキャリレジスタと、
を含むことを特徴とする請求項５に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項８】
前記バッファメモリで並列化する所定ビット数は１６であることを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮符号化された映像データを効果的に復号化させるデコーディング装置に係り、より詳細には、可変長コード（ＶＬＣ：Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｅ）で圧縮された映像データをデコーディングするプロセッサと連結されたプログラム可能な可変長デコーダに関する。
【背景技術】
【０００２】
映像、音声及びデータを効果的に保存又は伝送するために色々なデータ圧縮技術のうちの一つとしてＶＬＣが使用される。ＶＬＣは、保存又は伝送しなければならないデータの発生頻度によって、発生頻度の高いデータは可能な限り短いコードを割当て、発生頻度の低いデータは相対的に長いコードを割当てて全体的なデータの量を低減させるために使用される。
【０００３】
このようなＶＬＣは、ＭＰＥＧ−１、ＭＰＥＧ−２又はＭＰＥＧ−４のような圧縮標準アルゴリズムにおいて使用されている。移動通信及び有無線マルチメディア応用分野では低いビットレートの高効率の圧縮が次第に要求されるようになってきており、ＭＰＥＧ−４がそのような要求に符合している。従って、可変長デコーダは、高速処理が可能でなければならず、低電力の回路構成が必要であり、多様なヘッダシンタックスをプログラム的に処理する必要がある。
【０００４】
図１は、従来の可変長デコーダの構成を示すブロック図である。図１を参照して、以下、従来の可変長デコーダの構成及び作用を説明する。
【０００５】
従来の可変長デコーダは、データチャンネルを通じて受信された可変長コードワードの直列ビットストリームを一時保存しかつ出力する外部バッファメモリ１０と、入力される連続的な可変長コードワードを継続的なストリームでデコーディングし、リード信号によってデコーディングされた固定長コードワードを対応出力するデコーダ部３０と、外部バッファメモリ１０及びデコーダ部３０をインターフェース連結して外部バッファメモリから出力される可変長コードワードをデコーダ部に供給するインターフェース部２０と、より構成される。
【０００６】
インターフェース部２０は、第１フリップフロップ２１、第２フリップフロップ２２、第１バレルシフタ２４、加算器２６及び累積値レジスタ２８を含む。第１フリップフロップ２１及び第２フリップフロップ２２は、外部バッファメモリ１０から出力されるデータを一時保存しかつ出力する。加算器２６は、デコーダ部３０から出力されるコードワード長と以前にデコーディングされたコードワードの累積値とを合算して最大コードワード長を超える場合、キャリを発生させる。累積値レジスタ２８は、加算器で合算されるコードワード長を保存する。そして、第１バレルシフタ２４は、外部バッファメモリ１０、第１フリップフロップ２１及び第２フリップフロップ２２からデータを入力されて加算器で発生するコードワード長の累積値によってデータをシフトさせてデコーダ部３０に出力する。
【０００７】
デコーダ部３０は、第３フリップフロップ３１、第４フリップフロップ３２、第５フリップフロップ３３、第２バレルシフタ３４及び可変長コードテーブル３５を含む。第４フリップフロップ３２は、インターフェース部２０の第１バレルシフタ２４から出力されるデータを一時保存する。可変長コードテーブル３５は、コードワードテーブル３６、コード長テーブル３７及びデコードワードテーブルを含み、プログラム可能であり、コードワード長情報及び入力される連続的な可変長コードワードをデコーディングして継続的なストリームとして出力する。第５フリップフロップ３３は、以前にデコーディングされたコードワード長を保存する。第２バレルシフタ３４は、第５フリップフロップ３３から伝達される以前のデコーディングされたコードワード長情報によって第３フリップフロップ３１及び第４フリップフロップ３２から出力されるデータをシフトして可変長コードテーブル３５に出力する。第３フリップフロップ３１は、第２バレルシフタ３４の出力を入力される。
【０００８】
以下、上述したような構成を有する従来の可変長デコーダの動作を説明する。  
外部バッファメモリ１０では、データチャンネルを通じて受信された可変長コードワードの直列ビットストリームを保存するが、このような可変長コードワードは、デコーダ部３０から伝達されるコードワード長情報によって、インターフェース部２０を通じてデコーダ部３０に伝達され、デコーダ部３０では、このように入力される連続的な可変長コードワードを継続的なストリームとしてデコーディングする。
【０００９】
デコーダ部３０の可変長コードテーブル３５は、未確認の可変長コードワードの第１ビットで始まるビットの入力セグメントをデコーディングしてコードワード長及び固定された長さのデコーディングされたワード出力を提供し、テーブルルックアップメモリを含む。デコーダ部３０の第２バレルシフタ３４の出力は、可変長コードテーブル３５のテーブルルックアップメモリにデコーディングされる入力データとして提供され、第２バレルシフタ３４は、第５フリップフロップ３３に保存されている以前にデコーディングされたコードワード長によって制御される。
【００１０】
第２バレルシフタ３４の入力は、第３フリップフロップ３１及び第４フリップフロップ３２の出力によってなされる。このとき、第３フリップフロップ３１及び第４フリップフロップ３２のそれぞれは、最大可変長コードワードに少なくとも同じビットを保存することができるサイズを有する。第２バレルシフタ３４の出力は、可変長コードテーブル３５のテーブルルックアップメモリに連結され、インターフェース部２０から第４フリップフロップ３２に入力データが提供される間は第３フリップフロップ３１に連結される。第２バレルシフタ３４は、毎クロックに第３フリップフロップ３１及び第４フリップフロップ３２に保存されている最大コードワードの２倍程度の連続したビットのうち、デコーディングされる最大コードワード長のビットを出力として発生させる。
【００１１】
可変長コードテーブル３５では、テーブルルックアップメモリで第２バレルシフタ３４の出力に対するコードワード長を第５フリップフロップ３３に出力し、デコーディングされたワードを出力する。
【００１２】
第５フリップフロップ３３では、可変長コードテーブル３５から入力される保存された以前コードワード長を、次のデコーディングされるコードワード長情報として提供する。即ち、第２バレルシフタ３４の出力は、第５フリップフロップ３３から出力される以前のコードワード長だけシフトされて、常に出力の開始をデコーディングされるワードの最初のビットと一致させる。
【００１３】
第３フリップフロップ３１内のビットが総てのクロックにおいて変換されるため、第４フリップフロップ３２はインターフェース部２０からそれぞれのサイクルで再び充填されて、以前にデコーディングされたコードワードを初ビットとして始まる連続したビットフローが第２バレルシフタ３４に現れる。
【００１４】
第４フリップフロップ３２の入力は、インターフェース部２０の第１バレルシフタ２４の出力からなされる。
【００１５】
第１バレルシフタ２４の入力は、最大コードワード長を有する２個の連続したフリップフロップである第１及び第２フリップフロップ２１，２２と外部バッファメモリ１０とから行われる。第１フリップフロップ２１は、外部バッファメモリ１０からデータを提供され、以後に第２フリップフロップ２２は、第１フリップフロップ２１に保存されているデータを保存しかつ出力し、第１及び第２フリップフロップ２１，２２でデコーディングされるコードワード長は、最大のコードワード長と同じである。
【００１６】
第１バレルシフタ２４の出力は、累積値レジスタ２８に保存されている以前にデコーディングされたコードワード長の累積値と、デコーダ部３０の第５フリップフロップ３３から出力されるデコーディングされたコードワード長とを合算する加算器２６の出力によって制御される。即ち、第１バレルシフタ２４の出力は、累積されたコードワード長によってシフトされてデコーダ部３０の第２バレルシフタ３４の出力と連続したビットをなす。このとき、加算器２６で累積されたコードワード長が最大コードワード長を超える場合、即ち、キャリが発生する場合、第２フリップフロップ２２内に保存されている総てのビットがデコーダ部３０に移動したということを意味する。換言すると、キャリが発生する場合、第１フリップフロップ２１の内容は第２フリップフロップ２２に移動し、外部バッファメモリ１０の出力は第１フリップフロップ２１に移動し、これと同時に新たなデータセグメントが外部バッファメモリ１０から検索される。
【００１７】
このように可変長コードテーブル３５から出力されるコードワード長情報によって、外部バッファメモリ１０から順次に伝えられるデータを、第１バレルシフタ２４ではシフトしてデコーダ部３０に伝達し、これにより、デコーダ部３０では前述の過程で可変長コードワードをデコーディングする。
【００１８】
前述したように、従来の可変長デコーダは２個のバレルシフタを使用しており、総てのシンタックスをプログラム可能ロジックアレイ（ＰＬＡ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ）コードワードでハードウェア的に具現化している。従って、バレルシフタを１個使用するより２個を使用することによって、計算量が多く、かつ、回路が複雑で大きいという短所がある。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明が解決しようとする技術的課題は、一部の可変長デコーディング過程をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のようなプロセッサを通じて行うためにプロセッサとインターフェース可能であり、１個のバレルシフタのみを使用して計算量を低減し、回路のサイズを縮小する、プロセッサと連結されたプログラム可能な可変長デコーダを提供することである。
【課題を解決するための手段】
【００２０】
上記課題を達成するための本発明に係る、プロセッサと連結されたプログラム可能な可変長デコーダは、入力されるビットストリームデータを所定ビット数だけ並列化して保存し、第１制御信号によって出力するバッファメモリと、上記バッファメモリから出力されるデータを上記第１制御信号によって一時保存した後に出力するラッチ部と、上記ラッチ部の出力データを選択して出力するマルチプレキシング部と、上記マルチプレキシング部の出力データを第２制御信号による値だけシフトして出力する第１バレルシフタと、上記第１バレルシフタの出力データをデコーディングし、デコーディングされたコードワード及びビット長を出力するデコーディング部と、現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算して保存し、これにより、上記第１及び第２制御信号を生成して上記バッファメモリ、上記ラッチ部及び上記第１バレルシフタに出力する制御部と、を備えている。
【００２１】
望ましくは、所定の可変長デコーディング過程を上記可変長デコーダの外部プロセッサで行うために、上記第１バレルシフタの出力データを上記外部プロセッサに提供するプロセッサデータインターフェース部をさらに備え、上記プロセッサデータインターフェース部は、上記第１バレルシフタの出力データを上記外部プロセッサから提供されるビット長値だけシフトして出力する第２バレルシフタを有する。
【００２２】
望ましくは、上記ラッチ部は、上記バッファメモリから出力されるデータを上記第１制御信号によって一時保存した後、保存されたデータを出力する第１ラッチと、上記第１ラッチの出力データを上記第１制御信号によって一時保存した後、保存されたデータを出力する第２ラッチと、上記第２ラッチの出力データを上記第１制御信号によって一時保存した後、保存されたデータを出力する第３ラッチと、を備える。
【００２３】
望ましくは、上記マルチプレキシング部は、上記第１ラッチ及び上記第２ラッチから出力されるデータを所定の選択制御信号によって選択して上記第１バレルシフタの下位ビットとして出力する第１マルチプレクサと、上記第２ラッチ及び上記第３ラッチから出力されるデータを上記選択制御信号によって選択して上記第１バレルシフタの上位ビットとして出力する第２マルチプレクサと、を備える。
【００２４】
望ましくは、上記デコーディング部は、上記第１バレルシフタの出力データをデコーディングして検出されたＶＬＣを確定長コードに変換させるシンボルデコーダと、検出されたＶＬＣのビット長値を上記制御部に出力する長デコーダと、を備える。
【００２５】
望ましくは、上記デコーディング部は、ＰＬＡより構成されたコードワードテーブルをさらに含み、上記シンボルデコーダは、上記第１バレルシフタの出力データを、上記コードワードテーブルに基づくコードワードにデコードし、デコーディングされる出力をシンボル化して所定値として出力する。
【００２６】
望ましくは、上記制御部は、上記長デコーダから出力される現在デコーディングされているコードワードのビット長値又は上記外部プロセッサから提供されるビット長値を選択する第３マルチプレクサと、上記第３マルチプレクサにより選択された現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算する加算器と、上記加算器で合算されたコードワードのビット長値、即ち、直前クロックまでにデコーディングされたコードワードのビット値の和を保存し、これを上記第２制御信号として上記第１バレルシフタに出力し、上記加算器に累積コードワードのビット長値として提供する累積値レジスタと、上記加算器の演算時にキャリ信号が発生する場合、発生するキャリ信号を一時保存し、これを上記第１制御信号として上記バッファメモリ及び上記ラッチ部に出力するキャリレジスタと、を備える。  
望ましくは、上記バッファメモリで並列化する所定ビット数は１６である。
【発明を実施するための最良の形態】
【００２７】
以下、添付した図面を参照しながら、本発明に係る、プロセッサと連結されたプログラム可能な可変長デコーダの望ましい実施の形態について詳細に説明する。本発明と関連した公知の技術又は構成についての具体的な説明が本発明の要旨を曖昧にする虞があると判断される場合には、その詳細な説明は省略する。そして、後述する用語は、本発明における機能を考慮して定義された用語であって、これはユーザ、運用者の意図又は慣例によって変わり得る。従って、本明細書の全体の内容に基づいて定義されなければならない。
【００２８】
図２は、本発明に係るプログラム可能な可変長デコーダのブロック構成図である。  
図２を参照すると、本発明に係る可変長デコーダは、バッファメモリ１００、ラッチ部２００、マルチプレキシング部３００、第１バレルシフタ４００、デコーディング部６００及び制御部７００を含み、選択的にプロセッサデータインターフェース部５００を含む。
【００２９】
バッファメモリ１００は、入力されるビットストリームデータを所定ビット数だけ、例えば１６ビットだけ並列化して保存し、制御部７００から出力される第１制御信号によって保存されたデータを出力する。
【００３０】
ラッチ部２００は、第１ラッチ２０２、第２ラッチ２０４及び第３ラッチ２０６を含み、バッファメモリ１００から出力されるデータを制御部７００から出力される第１制御信号によって一時保存した後に出力する。第１ラッチ２０２は、バッファメモリ１００から出力されるデータを第１制御信号によって一時保存した後、保存されたデータを出力する。第２ラッチ２０４は、第１ラッチ２０２の出力データを第１制御信号によって一時保存した後、保存されたデータを出力する。第３ラッチ２０６は、第２ラッチ２０４の出力データを第１制御信号によって一時保存した後、保存されたデータを出力する。即ち、制御部７００から出力される第１制御信号によって、第２ラッチ２０４の出力データは第３ラッチ２０６に移動し、同時に第１ラッチ２０２の出力データは第２ラッチ２０４に移動し、バッファメモリ１００の出力データは第１ラッチ２０２に移動する。
【００３１】
マルチプレキシング部３００は、ラッチ部２００の出力データをデータパーティションモードＤＰ＿ＭＯＤＥによって選択して第１バレルシフタ４００に出力する。即ち、第１ラッチ２０２及び第２ラッチ２０４から出力されるデータを下位データ３０２とし、第２ラッチ２０４及び第３ラッチ２０６から出力されるデータを上位データ３０４とする。マルチプレクサ３０６は、ＤＰ＿ＭＯＤＥが０である場合、第３ラッチ２０６から出力されるデータを上位データとし、第２ラッチ２０４から出力されるデータを下位データとして選択して出力する。また、マルチプレクサ３０６は、ＤＰ＿ＭＯＤＥが１である場合、第２ラッチ２０４から出力されるデータを上位データとし、第１ラッチ２０２から出力されるデータを下位データとして選択して出力する。
【００３２】
マルチプレキシング部３００は、第１マルチプレクサ及び第２マルチプレクサにより構成され得る。第１マルチプレクサは、第１ラッチ２０２及び第２ラッチ２０４から出力されるデータをＤＰ＿ＭＯＤＥによって選択して第１バレルシフタ４００の下位１６ビットとして出力する。第２マルチプレクサは、第２ラッチ２０４及び第３ラッチ２０６から出力されるデータをＤＰ＿ＭＯＤＥによって選択して第１バレルシフタ４００の上位１６ビットとして出力する。即ち、ＤＰ＿ＭＯＤＥが０である場合、第１マルチプレクサは、第２ラッチ２０４の出力データを選択して出力し、第２マルチプレクサは、第３ラッチ２０６の出力データを選択して出力する。また、ＤＰ＿ＭＯＤＥが１である場合、第１マルチプレクサは、第１ラッチ２０２の出力データを選択して出力し、第２マルチプレクサは、第２ラッチ２０４の出力データを選択して出力する。
【００３３】
第１バレルシフタ４００は、マルチプレキシング部３００の出力データを制御部７００から出力される第２制御信号による値だけシフトして出力する。
【００３４】
プロセッサデータインターフェース部５００は、所定の可変長デコーディング過程を本発明に係る可変長デコーダの外部プロセッサで行うために、第１バレルシフタ４００の出力データを外部プロセッサ、例えばＣＰＵに提供する。プロセッサデータインターフェース部５００は、第２バレルシフタ５０２及びシフトされた値を伝達するロジック５０４を含む。第２バレルシフタ５０２は、第１バレルシフタ４００の出力データを外部プロセッサから提供されるビット長値ｃｍｄだけシフトして、シフトデータ５０４を外部プロセッサに出力する。
【００３５】
このようなプロセッサデータインターフェース部５００を含めて構成することによって、プロセッサの性能の向上に伴い、可変長デコーダのヘッダシンタックスをＣＰＵのようなプロセッサを通じて処理し、マクロブロック以下の計算量の多い部分は可変長デコーダ内のハードウェアで処理し得る。本発明に係る可変長デコーダは、ヘッダシンタックスパーシングは外部プロセッサで行えるようにＣＰＵインターフェースを構成し、動作の計算量及び回路の面積を低減するために１個のバレルシフタのみを使用する。
【００３６】
デコーディング部６００は、コードワードテーブル６０２、シンボルデコーダ６０４及び長デコーダ６０６を含む。デコーディング部６００は、第１バレルシフタ４００の出力データをデコーディングし、デコーディングされたコードワード及びビット長Ｌを出力する。シンボルデコーダ６０４は、第１バレルシフタ４００の出力データをデコーディングして検出されたＶＬＣを確定長コードに変換する。即ち、シンボルデコーダ６０４は、第１バレルシフタ４００の出力データを、コードワードテーブル６０２に基づくコードワードにデコードし、デコーディングされる出力をシンボル化して所定値として出力する。コードワードテーブル６０２は、ＰＬＡより構成され得る。長デコーダ６０６は、検出されたＶＬＣのビット長値Ｌを制御部７００に出力する。
【００３７】
制御部７００は、第３マルチプレクサ７０２、加算器７０４、累積値レジスタ７０６及びキャリレジスタ７０８を含む。制御部７００は、現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算して保存し、これにより、第１制御信号７１２及び第２制御信号７１４を生成してバッファメモリ１００、ラッチ部２００及び第１バレルシフタ４００に出力する。
【００３８】
上記第３マルチプレクサ７０２は、デコーディング部６００の長デコーダ６０６から出力される現在デコーディングされているコードワードのビット長値Ｌ又は外部プロセッサから提供されるビット長値ｃｍｄを選択する。外部プロセッサから提供されるビット長値ｃｍｄは、例えばヘッダパーシング部分を外部プロセッサで処理するとき、デコーディングのために外部プロセッサが提供するものである。第３マルチプレクサ７０２の出力は、現在ビット長７１６を表す。
【００３９】
加算器７０４は、第３マルチプレクサ７０２から選択された現在デコーディングされているコードワードのビット長値７１６と以前に累積されていたコードワードのビット長値７１４とを合算する。
【００４０】
累積値レジスタ７０６は、加算器７０４で合算されたコードワードのビット長値、即ち、直前クロックまでにデコーディングされたコードワードのビット値の和を保存し、これを第２制御信号７１４として第１バレルシフタ４００に出力し、加算器７０４に累積コードワードのビット長値７１４として提供する。
【００４１】
キャリレジスタ７０８は、加算器７０４の演算時にキャリ信号が発生する場合に、発生するキャリ信号を一時保存し、これを第１制御信号７１２としてバッファメモリ１００及びラッチ部２００に出力する。
【００４２】
このような構成を有する本発明の実施の形態は、１６ビットのデータで整列されたデータの保存及び出力を一例としたものであり、そのビット数は制限されない。以下、図３及び図４を参照して本発明に係る可変長デコーダの動作を説明する。
【００４３】
図３は、バッファメモリに保存されるビットストリームデータの一例を示す図面であり、図４は、図３のデータの入力による図２の各部におけるデータの一例を示す表である。図３は、バッファメモリのビットストリーム構成及びアドレス方向を表す。図３のようなビットストリームデータがバッファメモリ１００に入力される場合、図４において、第１ラッチは“７Ｆ７Ｆ”に初期化されている。
【００４４】
第１クロックにおいて、開始コードを探せという命令をプロセッサから受ける場合、開始コードを探すまで制御部７００の第３マルチプレクサ７０２から出力される現在ビット長７１６を“８”に出力し続ける。
【００４５】
第２クロックにおいて、キャリが発生し（キャリレジスタ値＝１）、バッファメモリ１００の“０”番地データである“７Ｆ００”値を読み込んで第１ラッチ２０２に保存する。同時に、第１ラッチ２０２のデータである“７Ｆ７Ｆ”は第２ラッチ２０４に保存され、第２ラッチ２０４のデータである“００００”は第３ラッチ２０６に保存される。図４に示された実施の形態において、データパーティションモードＤＰ＿ＭＯＤＥは“０”に設定される。この場合、マルチプレキシング部３００から出力されるデータは、第３ラッチ２０６のデータを上位データとし、第２ラッチ２０４のデータを下位データとする。従って、マルチプレキシング部３００から出力されるデータは“００００＿７Ｆ７Ｆ”であり、第１バレルシフタ４００の入力は“００００＿７Ｆ７Ｆ”となる。第１バレルシフタ４００は、累積値レジスタ７０６から出力される値が“０”であるので、“０”だけシフトされた値“００００”を出力する。
【００４６】
第３クロックにおいて、累積値レジスタ７０６から出力される値が“８”であるので、“８”だけシフトされた値“００７Ｆ”が第１バレルシフタ４００から出力される。
【００４７】
第４クロックにおいて、キャリが発生し（キャリレジスタ値＝１）、また、バッファメモリ１００の“１”番地データである“０００１”を読み込み、｛第３ラッチ，第２ラッチ，第１ラッチ｝＝（７Ｆ７Ｆ，７Ｆ００，０００１）となる。第１バレルシフタ４００の入力は７Ｆ７Ｆ＿７Ｆ００となり、第１バレルシフタ４００の出力は、累積値レジスタ値が“０”であるので、“０”だけシフトされた値“７Ｆ７Ｆ”となる。
【００４８】
第６クロックにおいて、キャリが発生し（キャリレジスタ値＝１）、また、バッファメモリ１００の“２”番地データである“Ｂ６１０”を読み込み、｛第３ラッチ，第２ラッチ，第１ラッチ｝＝（７Ｆ００，０００１，Ｂ６１０）となる。第１バレルシフタ４００の入力は７Ｆ００＿０００１となり、第１バレルシフタ４００の出力は、累積値レジスタ７０６の値が“０”であるので、“０”だけシフトされた値“７Ｆ００”となる。
【００４９】
第８クロックにおいて、キャリが発生し（キャリレジスタ値＝１）、また、バッファメモリ１００の“３”番地データである“００１８”を読み込み、｛第３ラッチ，第２ラッチ，第１ラッチ｝＝（０００１，Ｂ６１０，００１８）となる。第１バレルシフタ４００の入力は０００１＿Ｂ６１０となり、第１バレルシフタ４００の出力は、累積値レジスタ７０６の値が“８”（開始コードが検出された場合、累積値レジスタ値は“８”を維持する）であるので、“８”だけシフトされた値“０１Ｂ６”となる。プロセッサに開始コードを探したことを知らせ、以後ではヘッダパーシングのためにプロセッサから提供されるビット長値ｃｍｄによる現在ビット長７１６によってプロセッサデータインターフェース部５００にプロセッサが要求するビットストリームを提供する（第１０クロック乃至第１７クロック）。
【００５０】
第１０クロックにおいて、第１バレルシフト４００の出力は“４０００”となり、プロセッサデータインターフェース部５００の第２バレルシフト５０２の出力であるシフトデータは、“４０００”をｃｍｄである“２”だけシフトした“１”となる。これを受けてプロセッサでヘッダパーシングするのに使用する。
【００５１】
第１１クロックにおいて、プロセッサは、ビット長値ｃｍｄである“１”を伝達する場合、現在ビット長は“１”となり、第１バレルシフト４００の出力は“８０００”となり、第１バレルシフト４００の出力を入力された第２バレルシフト５０２はｃｍｄによって“１”だけシフトしたシフトデータを“１”として出力する。このような方式でプロセッサとインターフェース連結し続けて可変長デコーディングを行うことができる。
【００５２】
次いで、マクロブロック以下のパーシングは、デコーディング部６００のＰＬＡでコードワードを生成する。第１８クロックからは、デコーディング部６００を通じて発生するコードワード長による可変長デコーダ動作である。
【００５３】
第１８クロックにおいて、現在コード長は“３”であるので、累積値レジスタ７０６値は“８”となり、第１バレルシフタ４００の入力である７Ｂ６３＿３２Ｆ９で８ビットシフトさせた値“６３３２”が第１バレルシフタ４００の出力となる。この値をデコーディング部６００でデコーディングして、第１９クロックにおけるように、１ビットのコードワード長を使用したことを制御部７００に知らせる方式で可変長デコーダを行い続ける。
【００５４】
本発明の望ましい実施の形態においては、一部のヘッダパーシングのみをプログラム的に行い、マクロブロック以下の復号化はハードウェア的に処理した。
【００５５】
以上、本発明についてその望ましい実施の形態を中心に説明した。当業者は、本発明が本発明の本質的な特性から逸脱しない範囲で変形された形態に具現化され得るということを理解できる。従って、開示された実施の形態は限定的な観点ではなく、説明的な観点で考慮されなければならない。本発明の範囲は、上記説明ではなく特許請求の範囲に示されており、それと同等な範囲内にある総ての差異点は本発明に含まれると解釈されなければならない。
【産業上の利用可能性】
【００５６】
本発明に係る、プロセッサと連結されたプログラム可能な可変長デコーダによれば、１個のバレルシフタのみを使用して回路の規模及び計算量を低減することができる。また、外部プロセッサとのインターフェース連結可能な構造を具現化して可変長デコーディングの一部を外部プロセッサにより処理させ得る。特に、ＭＰＥＧシンタックスのヘッダパーシングとマクロブロックのＶＬＣパーシングとを分離して処理し、マイクロプロセッサと連結してヘッダシンタックスを処理し得る柔軟な構造を有し得る。
【図面の簡単な説明】
【００５７】
【図１】図１は、従来の可変長デコーダのブロック構成図である。
【図２】図２は、本発明に係るプログラム可能な可変長デコーダのブロック構成図である。
【図３】図３は、バッファメモリに保存されるビットストリームデータの一例を示す図面である。
【図４】図４は、図３のデータの入力による図２の各部におけるデータの一例を示す表である。
【図１】
2005531172.tif 000003
【図２】
2005531172.tif 000004
【図３】
2005531172.tif 000005
【図４】
2005531172.tif 000006
【手続補正書】
【提出日】平成16年7月12日(2004.7.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力されるビットストリームデータを所定ビット数だけ並列化して保存し、第１制御信号によって出力するバッファメモリと、
前記バッファメモリから出力されるデータを前記第１制御信号によって一時保存した後に出力するラッチ部と、
前記ラッチ部の出力データを選択して出力するマルチプレキシング部と、
前記マルチプレキシング部の出力データを第２制御信号による値だけシフトして出力する第１バレルシフタと、
前記第１バレルシフタの出力データをデコーディングし、デコーディングされたコードワード及びビット長を出力するデコーディング部と、
現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算して保存し、これにより、前記第１及び第２制御信号を生成して前記バッファメモリ、前記ラッチ部及び前記第１バレルシフタに出力する制御部と、
所定の可変長デコーディング過程を前記可変長デコーダ外部のプロセッサで行うために、前記第１バレルシフタの出力データを前記外部プロセッサに提供するプロセッサデータインターフェース部と、
を備え、
前記プロセッサデータインターフェース部は、前記第１バレルシフタの出力データを前記外部プロセッサから提供されるビット長値だけシフトして出力する第２バレルシフタを含むことを特徴とする、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項２】
前記ラッチ部は、
前記バッファメモリから出力されるデータを前記第１制御信号によって一時保存した後、その保存されたデータを出力する第１ラッチと、
前記第１ラッチの出力データを前記第１制御信号によって一時保存した後、その保存されたデータを出力する第２ラッチと、
前記第２ラッチの出力データを前記第１制御信号によって一時保存した後、その保存されたデータを出力する第３ラッチと、
を含むことを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項３】
前記マルチプレキシング部は、
前記第１ラッチ及び前記第２ラッチから出力されるデータを所定の選択制御信号によって選択して前記第１バレルシフタの下位ビットとして出力する第１マルチプレクサと、
前記第２ラッチ及び前記第３ラッチから出力されるデータを前記選択制御信号によって選択して前記第１バレルシフタの上位ビットとして出力する第２マルチプレクサと、
を含むことを特徴とする請求項２に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項４】
前記デコーディング部は、
前記第１バレルシフタの出力データをデコーディングして検出された可変長コードを確定長コードに変換させるシンボルデコーダと、
検出された可変長コードのビット長値を前記制御部に出力する長デコーダと、
を含むことを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項５】
前記デコーディング部は、プログラム可能ロジックアレイにより構成されたコードワードテーブルをさらに含み、
前記シンボルデコーダは、前記第１バレルシフタの出力データを、前記コードワードテーブルに基づくコードワードにデコードし、デコーディングされる出力をシンボル化して所定値として出力することを特徴とする請求項４に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項６】
前記制御部は、
前記長デコーダから出力される現在デコーディングされているコードワードのビット長値又は前記外部プロセッサから提供されるビット長値を選択する第３マルチプレクサと、
前記第３マルチプレクサから選択された現在デコーディングされているコードワードのビット長値と以前に累積されていたコードワードのビット長値とを合算する加算器と、
前記加算器で合算されたコードワードのビット長値、即ち、直前クロックまでにデコーディングされたコードワードのビット値の和を保存し、これを前記第２制御信号として前記第１バレルシフタに出力して前記加算器に累積コードワードのビット長値として提供する累積値レジスタと、
前記加算器の演算時にキャリ信号が発生する場合に、発生するキャリ信号を一時保存し、これを前記第１制御信号として前記バッファメモリ及び前記ラッチ部に出力するキャリレジスタと、
を含むことを特徴とする請求項４に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【請求項７】
前記バッファメモリで並列化する所定ビット数は１６であることを特徴とする請求項１に記載の、プロセッサと連結されたプログラム可能な可変長デコーダ。
【国際調査報告】
2005531172.tif 000007
2005531172.tif 000008