図面 (/)

この項目の情報は公開日時点(2000年2月25日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

複数の可変長符号化規格における符号化処理あるいは復号化処理が可能な可変長符号処理装置を得る。

解決手段

シーケンス制御部5は2つの制御レジスタ(VL_MODEとVL_CNT)を有する。CPU2は制御レジスタVL_MODEに所望の値を設定することにより、VLC処理装置4に実行させる処理の内容を選択する。ローカルメモリ7は4KバイトのRAMにより実現されており、デコード処理エンコード処理に使用する検索テーブルを格納する。シーケンス制御部5は制御レジスタVL_MODEの指示する処理内容が実行可能となるように、第2DCTバッファ部11、アドレス生成部12、DCT生成部13、VLC生成部14、シフタ部15、VLCバッファ部16及びVLCパック部17を制御する。

概要

背景

デジタル技術の進歩に伴って、従来はアナログ処理が一般的であった処理のデジタル化が進められている。例えばMPEG2等に代表される動画像処理などがその代表である。このような分野ではデータ圧縮の技術が重要であり、データの可変長符号化及び符号化は有効な一手法である。

しかしながら、可変長符号化処理可変長復号化処理とはその処理内容が大きく異なるため、固有符号化規格における可変長符号化専用の装置、可変長復号化専用の装置をそれぞれ用いて可変長符号化処理、可変長復号化処理を行うのが一般的であった。

概要

複数の可変長符号化規格における符号化処理あるいは復号化処理が可能な可変長符号処理装置を得る。

シーケンス制御部5は2つの制御レジスタ(VL_MODEとVL_CNT)を有する。CPU2は制御レジスタVL_MODEに所望の値を設定することにより、VLC処理装置4に実行させる処理の内容を選択する。ローカルメモリ7は4KバイトのRAMにより実現されており、デコード処理エンコード処理に使用する検索テーブルを格納する。シーケンス制御部5は制御レジスタVL_MODEの指示する処理内容が実行可能となるように、第2DCTバッファ部11、アドレス生成部12、DCT生成部13、VLC生成部14、シフタ部15、VLCバッファ部16及びVLCパック部17を制御する。

目的

この発明は上記問題点を解決するためになされたもので、複数の可変長符号化規格における符号化処理あるいは復号化処理が可能な可変長符号処理装置、あるいはハードウェア構成の簡略化を図りながら可変長符号化処理及び復号化処理が共に実行可能な可変長符号処理装置を得ることを目的とする。

効果

実績

技術文献被引用数
2件
牽制数
6件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

書き換え可能な第1の記憶部と、書き換え可能な第2の記憶部と、外部より付与される可変長符号復号する復号化処理及び外部より付与される符号化対象データ可変長符号化する符号化処理のうち、少なくとも一方の処理を含む可変長符号処理を実行する可変長符号処理実行部とを備え、前記第1の記憶部は対象とする可変長符号の符号化規格に応じた前記可変長符号処理を実行する際の参照情報となる可変長符号処理用情報が格納可能であり、前記第2の記憶部は前記対象とする可変長符号の符号化規格を示す符号化規格情報が格納可能であり、前記可変長符号処理実行部は、前記符号化規格情報及び前記可変長符号処理用情報を参照して前記可変長符号処理を行うことを特徴とする、可変長符号処理装置。

請求項2

前記可変長符号処理実行部は、外部より付与される可変長符号を復号する復号化処理を行う可変長復号部を含む、請求項1記載の可変長符号処理装置。

請求項3

前記外部より付与される可変長符号は第1及び第2の符号を含み、前記第1の符号は2次元符号を可変長符号化した符号を含み、前記2次元符号中は各々が異なる意味を有する第1及び第2の項目データにより構成され、前記第1の項目データはゼロが連続する個数を示し、前記第2の項目データは前記第1の項目データにおいて計数したゼロの後に与えられるデータの値を示し、前記第2の符号は可変長符号の境界を示す符号を含み、前記可変長復号部は、前記復号データを構成する少なくとも1つのデータビットを順次出力することにより前記復号データを出力し、出力する前記データビットの個数を計数する出力データ計数器を有し、前記第1の符号を復号する場合は第1の項目データが示す個数のゼロを出力した後に第2の項目データの示す値を出力することにより前記復号データを出力し、前記第2の符号を復号する場合は前記出力データ計数器が所定の値を示すまでゼロを出力することにより前記復号データを出力する、請求項2記載の可変長符号処理装置。

請求項4

復号データ有効領域情報を格納する第3の記憶部をさらに備え、前記可変長復号部は、前記復号データがゼロ以外の値を出力する場合、当該復号データの有効領域を指示する前記復号データ有効領域情報を前記第3の記憶部に書き込むことを特徴とする、請求項3記載の可変長符号処理装置。

請求項5

復号データ有効ビット終了情報を格納する第3の記憶部をさらに備え、前記可変長復号部は前記第2の符号を復号して前記復号データを出力するときに、前記出力データ計数器の値を指示する前記復号データ有効ビット終了情報を前記第3の記憶部に書き込むことを特徴とする、請求項3記載の可変長符号処理装置。

請求項6

前記可変長符号処理実行部は、外部より付与される符号化対象データを可変長符号化する符号化処理を行う可変長符号化部を含む、請求項1記載の可変長符号処理装置。

請求項7

前記可変長符号化部は、前記符号化対象データを第1及び第2の項目データからなる2次元符号を生成する2次元符号化部と、前記2次元符号を可変長符号化して可変長符号を生成する可変長符号生成部とを有し、前記可変長符号処理装置は、前記可変長符号を連結する可変長符号結合器をさらに備え、前記2次元符号化部は、連続して与えられる前記符号化対象データ中のデータのゼロが連続する個数を常時計数するゼロ計数器を有し、ゼロ以外の値を持ったデータが与えられた場合に前記2次元符号を生成し、前記第1の項目データには前記ゼロ計数器の値を与え、前記第2の項目データには該ゼロ以外の値を与え、前記2次元符号化部は、さらに、前記符号化対象データの終了を検出するとその旨を示す終了信号を前記可変長符号生成部に与え、前記可変長符号生成部は前記終了信号を受けて情報の区切りを示す終了指示用可変長符号を生成することを特徴とする、請求項6記載の可変長符号処理装置。

請求項8

前記可変長符号化部は、外部より順次付与される符号化対象データを可変長符号化して可変長符号を生成し、前記可変長符号処理装置は、前記可変長符号化部から順次生成される前記可変長符号を結合対象とし、該結合対象を順次結合して結合可変長符号を得、第1のビットサイズの前記結合可変長符号を結合済み可変長符号として出力する可変長符号結合部をさらに備え、前記可変長符号結合部は、外部から順次付与される外部符号を前記結合対象として、前記第1のサイズの前記結合済み可変長符号を出力することが可能である、請求項6記載の可変長符号処理装置。

請求項9

前記可変長符号処理実行部は、外部より付与される可変長符号を復号する復号化処理を行う可変長復号部と、外部より付与される符号化対象データを可変長符号化する符号化処理を行う可変長符号化部とを含み、前記第2の記憶部は、前記可変長符号処理内容が前記符号化処理であるか前記復号化処理であるかを指示する処理内容情報を格納し、前記可変長符号処理装置は、前記符号化規格情報及び前記処理内容情報に基づき、前記第1の記憶部に対する読み出し処理書き込み処理の際のアドレスを生成するアドレス生成部と、前記処理内容情報が前記復号化処理を指示する時に前記外部より付与される可変長符号を一時的に保持した後前記可変長復号部に転送し、前記処理内容情報が前記符号化処理を指示する時に前記可変長符号化部で符号化処理が施された可変長符号化済み符号を一時的に保持した後に外部に転送する可変長符号一時保持部とをさらに備え、前記可変長符号化部は、前記処理内容情報が前記符号化処理を指示するとき前記アドレス生成部で生成されるアドレスに基づき前記第1の記憶部にアクセスして前記符号化処理を行い、前記可変長復号部は、前記処理内容情報が前記復号化処理を指示するとき前記アドレス生成部で生成されるアドレスに基づき前記第1の記憶部にアクセスして前記復号化処理を行うことを特徴とする、請求項1記載の可変長符号処理装置。

技術分野

0001

この発明は可変長符号化可変長エンコード)及び復号化可変長デコード)を行う可変長符号処理装置に関する。

背景技術

0002

デジタル技術の進歩に伴って、従来はアナログ処理が一般的であった処理のデジタル化が進められている。例えばMPEG2等に代表される動画像処理などがその代表である。このような分野ではデータ圧縮の技術が重要であり、データの可変長符号化及び符号化は有効な一手法である。

0003

しかしながら、可変長符号化処理可変長復号化処理とはその処理内容が大きく異なるため、固有符号化規格における可変長符号化専用の装置、可変長復号化専用の装置をそれぞれ用いて可変長符号化処理、可変長復号化処理を行うのが一般的であった。

発明が解決しようとする課題

0004

従来の可変長符号化及び復号化処理は以上のように行われており、1つの装置が複数の符号化規格における可変長符号化及び可変長復号化処理を効率的に行うことができないという問題点があった。

0005

特開平5−56283号公報に開示された符号化復号化装置のように、1つの記憶装置(ROM)に符号化テーブル及び復号化テーブルを格納して、符号化及び復号化処理を同一のCPUによるソフトウェア処理で行う装置は存在する。

0006

しかしながら、上記した符号化復号化装置におけるハードウェア上の工夫は、符号化テーブル及び復号化テーブルを共に1つのROMに記憶させた程度であり、実質的には可変長符号化装置可変長復号化装置とを足し合わせた構成にすぎず、ハードウェア構成の簡略化は殆ど図られていない。

0007

この発明は上記問題点を解決するためになされたもので、複数の可変長符号化規格における符号化処理あるいは復号化処理が可能な可変長符号処理装置、あるいはハードウェア構成の簡略化を図りながら可変長符号化処理及び復号化処理が共に実行可能な可変長符号処理装置を得ることを目的とする。

課題を解決するための手段

0008

この発明に係る請求項1記載の可変長符号処理装置は、書き換え可能な第1の記憶部と、書き換え可能な第2の記憶部と、外部より付与される可変長符号復号する復号化処理及び外部より付与される符号化対象データを可変長符号化する符号化処理のうち、少なくとも一方の処理を含む可変長符号処理を実行する可変長符号処理実行部とを備え、前記第1の記憶部は対象とする可変長符号の符号化規格に応じた前記可変長符号処理を実行する際の参照情報となる可変長符号処理用情報が格納可能であり、前記第2の記憶部は前記対象とする可変長符号の符号化規格を示す符号化規格情報が格納可能であり、前記可変長符号処理実行部は、前記符号化規格情報及び前記可変長符号処理用情報を参照して前記可変長符号処理を行っている。

0009

請求項2記載の可変長符号処理装置において、前記可変長符号処理実行部は、外部より付与される可変長符号を復号する復号化処理を行う可変長復号部を含んでいる。

0010

請求項3記載の可変長符号処理装置において、前記外部より付与される可変長符号は第1及び第2の符号を含み、前記第1の符号は2次元符号を可変長符号化した符号を含み、前記2次元符号中は各々が異なる意味を有する第1及び第2の項目データにより構成され、前記第1の項目データはゼロが連続する個数を示し、前記第2の項目データは前記第1の項目データにおいて計数したゼロの後に与えられるデータの値を示し、前記第2の符号は可変長符号の境界を示す符号を含み、前記可変長復号部は、前記復号データを構成する少なくとも1つのデータビットを順次出力することにより前記復号データを出力し、出力する前記データビットの個数を計数する出力データ計数器を有し、前記第1の符号を復号する場合は第1の項目データが示す個数のゼロを出力した後に第2の項目データの示す値を出力することにより前記復号データを出力し、前記第2の符号を復号する場合は前記出力データ計数器が所定の値を示すまでゼロを出力することにより前記復号データを出力している。

0011

請求項4記載の可変長符号処理装置は、復号データ有効領域情報を格納する第3の記憶部をさらに備え、前記可変長復号部は、前記復号データがゼロ以外の値を出力する場合、当該復号データの有効領域を指示する前記復号データ有効領域情報を前記第3の記憶部に書き込んでいる。

0012

請求項5記載の可変長符号処理装置は、復号データ有効ビット終了情報を格納する第3の記憶部をさらに備え、前記可変長復号部は前記第2の符号を復号して前記復号データを出力するときに、前記出力データ計数器の値を指示する前記復号データ有効ビット終了情報を前記第3の記憶部に書き込んでいる。

0013

請求項6記載の可変長符号処理装置において、前記可変長符号処理実行部は、外部より付与される符号化対象データを可変長符号化する符号化処理を行う可変長符号化部を含んでいる。

0014

請求項7記載の可変長符号処理装置において、前記可変長符号化部は、前記符号化対象データを第1及び第2の項目データからなる2次元符号を生成する2次元符号化部と、前記2次元符号を可変長符号化して可変長符号を生成する可変長符号生成部とを有し、前記可変長符号処理装置は、前記可変長符号を連結する可変長符号結合器をさらに備え、前記2次元符号化部は、連続して与えられる前記符号化対象データ中のデータのゼロが連続する個数を常時計数するゼロ計数器を有し、ゼロ以外の値を持ったデータが与えられた場合に前記2次元符号を生成し、前記第1の項目データには前記ゼロ計数器の値を与え、前記第2の項目データには該ゼロ以外の値を与え、前記2次元符号化部は、さらに、前記符号化対象データの終了を検出するとその旨を示す終了信号を前記可変長符号生成部に与え、前記可変長符号生成部は前記終了信号を受けて情報の区切りを示す終了指示用可変長符号を生成している。

0015

請求項8記載の可変長符号処理装置において、前記可変長符号化部は、外部より順次付与される符号化対象データを可変長符号化して可変長符号を生成し、前記可変長符号処理装置は、前記可変長符号化部から順次生成される前記可変長符号を結合対象とし、該結合対象を順次結合して結合可変長符号を得、第1のビットサイズの前記結合可変長符号を結合済み可変長符号として出力する可変長符号結合部をさらに備え、前記可変長符号結合部は、外部から順次付与される外部符号を前記結合対象として、前記第1のサイズの前記結合済み可変長符号を出力することが可能である。

0016

請求項9記載の可変長符号処理装置において、前記可変長符号処理実行部は、外部より付与される可変長符号を復号する復号化処理を行う可変長復号部と、外部より付与される符号化対象データを可変長符号化する符号化処理を行う可変長符号化部とを含み、前記第2の記憶部は、前記可変長符号処理内容が前記符号化処理であるか前記復号化処理であるかを指示する処理内容情報を格納し、前記可変長符号処理装置は、前記符号化規格情報及び前記処理内容情報に基づき、前記第1の記憶部に対する読み出し処理書き込み処理の際のアドレスを生成するアドレス生成部と、前記処理内容情報が前記復号化処理を指示する時に前記外部より付与される可変長符号を一時的に保持した後前記可変長復号部に転送し、前記処理内容情報が前記符号化処理を指示する時に前記可変長符号化部で符号化処理が施された可変長符号化済み符号を一時的に保持した後に外部に転送する可変長符号一時保持部とをさらに備え、前記可変長符号化部は、前記処理内容情報が前記符号化処理を指示するとき前記アドレス生成部で生成されるアドレスに基づき前記第1の記憶部にアクセスして前記符号化処理を行い、前記可変長復号部は、前記処理内容情報が前記復号化処理を指示するとき前記アドレス生成部で生成されるアドレスに基づき前記第1の記憶部にアクセスして前記復号化処理を行っている。

発明を実施するための最良の形態

0017

<<VLC処理装置を使ったシステムの構成>>本発明の実施の形態であるVLC(Variable Length Code)処理装置(可変長符号処理装置)の構成や動作について詳細に説明するにあたり、まず本VLC処理装置を使用するシステムについて説明しておく。図1は、VLC処理装置を使用するシステムの構成を示すブロック図である。

0018

このシステムは本発明の実施の形態であるVLC処理装置の他に、データメモリ1,CPU2及びDMAコントローラ3を有し、データメモリ1,CPU2及びDMAコントローラ3間はメモリバスB1を介して信号の授受が可能であり、CPU2,DMAコントローラ3及びVLCD処理装置4間は周辺バスB2を介して信号の授受が可能である。

0019

したがって、CPU2はメモリバスB1を介してデータメモリ1にアクセスすることができ、周辺バスB2を介してVLC処理装置4にアクセスすることができる。これらアクセスはロードストア命令により実行される。DMAコントローラ3はVLC処理装置4の要求を受けて、データメモリ1とVLC処理装置4との間のDMA転送を実現する。DMA転送時にはメモリバスB1と周辺バスB2とを使用することになるため、DMA転送を実行するためにはこれらのバスB1,B2の使用権をCPU2から譲り受ける必要がある。DMAコントローラ3は、VLC処理装置4からDMA要求を受けるとCPU2との間でこれらのバス権調停し、バス権を取得した後にVLC処理装置4にDMA転送の開始を告げる。

0020

本システムにおいて、VLC処理装置4はCPU2の命令に従って処理を行う。また、VLC処理装置4のデータ入力としてデータメモリ1に格納されたデータが与えられ、VLC処理装置4からの処理結果はデータメモリ1に格納される。すなわち、VLC処理装置4はDMA転送によってデータメモリ1上のデータを自ブロックに転送してから処理を行い、DMA転送により処理結果をデータメモリ4上に書き戻してから処理を完了する。

0021

CPU2はVLC処理装置4に処理を命じる前に、入力データの存在する場所と、処理結果を書き戻す場所を示しておく。これは、データメモリ1上のアドレスを指定することにより示される。

0022

当然ながら、周辺バスB2に接続される機能ブロックはVLC処理装置4だけではない。システム全体で目的とする機能を実現するためには、数多くの機能ブロックが必要である。例えば、ビデオ出力装置オーディオ出力装置、あるいはデータ入力装置などである。しかしながら、これらの動作は本発明の説明には直接関係ないので説明を省略する。

0023

<<VLC処理装置の機能>>VLC処理装置4は、VLCデコード処理とVLCエンコード処理を行う。

0024

VLCデコード処理では、MPEG2等のブロックレイヤに属する可変長符号化されたデータを復号し、これによって得られた2次元データ(RUNとLEVEL)を1次元に展開する。VLC処理装置4がデコードして最終的に出力するデータは64個のDCT係数であり、これらは16ビット符号付き整数で与えられる。デコード対象となる可変長符号化データ先頭ビット位置は、いかなるデータ境界にも整置されている必要は無い。MPEG2の他に、MPEG1とDVCのブロックレイヤに属するデータに対しても同様の処理を行うことができる。但し、MPEG1とMPEG2のイントラブロックにおいては、ブロックレイヤの先頭に位置するデータのみは可変長復号化を行わない。

0025

VLCエンコード処理では、64個のDCT係数をRUNとLEVELの2次元データに符号化し、更にこれを可変長符号化する。可変長符号化により生成されたデータはVLC処理装置4内でシームレス繋ぎ合わされる。VLC処理装置4は、このデータを所定のデータ境界毎(8バイト)に切り出して出力する。切り出した残りのデータはVLC処理装置4内に保持される。可変長データのシームレスな繋ぎ合わせと、所定データ境界での切り出しを合わせて本明細書ではパック処理と呼ぶことにするが、このパック処理はVLCエンコード処理と独立に動作可能である。即ち、VLC処理装置4以外で生成した可変長符号データとVLC処理装置4が生成した可変長符号データとを混在したパック処理が可能である。VLCエンコード処理が対象とするデータフォーマットはMPEG2とDVCである。但しデコードの場合と同様に、MPEG2のイントラブロックにおいては、最初のDCT係数の可変長符号化は行わない。

0026

ここで、DVCフォーマットの場合はブロックデータに属するデータの名称がMPEG1やMPEG2と異なる。しかしながらその意味するところは同じであり、今後はDVCの場合もMPEG1やMPEG2と同様にRUN、LEVELを用いて説明を行うものとする。

0027

<<VLC処理装置の構成>>図2はVLC処理装置4の内部構成を示すブロック図である。VLC処理装置4は10個の機能ブロック(シーケンス制御部5、バスインターフェイス部6、ローカルメモリ7(第1の記憶部)、第2DCTバッファ11、アドレス生成部12、DCT生成部13、VLC生成部14、シフタ部15、VLCバッファ部16、VLCパック部17)と、ローカルメモリ7への書き込みデータを選択するライトセレクタ18とを有する。以下に各機能ブロックの構成、動作について説明する。

0028

<シーケンス制御部>シーケンス制御部5は、VLCデコード処理やVLCエンコード処理に対して予め定められた処理シーケンスと、各機能ブロックの判定結果に基いてVLC処理装置4全体の動作を制御する。各機能ブロックはシーケンス制御部5の与える制御信号に従って動作し、そこで処理したデータに応じて様々な判定結果をシーケンス制御部5に与える。図面が煩雑になりすぎるため、これら制御信号や判定結果は図2では図示していない。

0029

シーケンス制御部5は第2及び第3の記憶部として、2つの制御レジスタVL_MODE及びVL_CNTを有する。CPU2は制御レジスタVL_MODEに所望の値を設定することにより、VLC処理装置4に実行させる処理の内容を選択する。制御レジスタVL_MODEの設定値により選択可能なVLC処理装置4の処理内容は以下のとおりである。

0030

・MPEG1のVLCデコード処理、
・ MPEG2のVLCデコード処理、
・ DVCのVLCデコード処理、
・ MPEG2のVLCエンコード処理、
・ DVCのVLCエンコード処理
シーケンス制御部5は制御レジスタVL_MODEの指示する処理内容が実行可能となるように、第2DCTバッファ部11、アドレス生成部12、DCT生成部13、VLC生成部14、シフタ部15、VLCバッファ部16及びVLCパック部17を制御する。

0031

制御レジスタVL_CNTはVLC処理装置4の動作を起動するための処理起動ビットを有している。VLC処理装置4は、このビットがセットされることにより制御レジスタVL_MODEで選択された処理を開始する。全ての処理を終了すると、VLC処理装置4は上記処理起動ビットをクリアする。CPU2は制御レジスタVL_CNTの値をモニタすることにより、VLC処理装置4の処理終了を検出する。

0032

制御レジスタVL_CNTは処理起動ビットの他にブロック属性指定ビットエラー表示ビットを格納している。ブロック属性指定ビットは、制御レジスタVL_MODEの格納値の指定がMPEG1かMPEG2のデコードやエンコードを示した場合にのみ有効である。ブロック属性ビットは、処理対象のブロックレイヤデータがノンイントラブロックかイントラブロックか、イントラブロックの場合はどの符号化テーブルを使用するべきかを示す。

0033

ここで選択する符号化テーブルは、MPEGに関する「ITU-T H.262」(ITU;International Telecominicaton Union,国際電気通信連合)の勧告書に基づく規格「ISO/IEC13818-2」のB14とB15に指定されているものである。テーブルB15はMPEG2専用であり、MPEG1のVLCデコード時には常にB14用のデコードテーブルを使用する。

0034

エラー表示ビットは、処理中にエラーが生じたことを示すものである。VLCエンコードやVLCデコード時にエラーが検出された場合、VLC処理装置4は処理の終了と同時に(処理起動ビットをクリアすると同時に)エラー表示ビットをセットする。復号化できない可変長データが与えられた場合は、エラー表示ビットがセットされる。また、64個分のDCT係数が得られたにも関わらずブロックの終了を示す符号(EOB)が与えられない場合もエラー表示ビットがセットされる。

0035

また、制御レジスタVL_CNTはエントリ有効フィールドとEOBポインタフィールドを格納している。エントリ有効フィールドは、VLCデコード時に生成したDCT係数のどこに有効なデータが格納されているかを示すものである。エントリ有効フィールドは4ビットからなり、先頭ビットは最初の16個のDCT係数に、第2ビットは次の16個に、第3ビットは更に次の16個に、第4ビットは最後の16個に対応している。VLCデコードの結果、エントリ有効フィールドの第1ビットのみがセットされていたならば、生成されたDCT係数は前半16個のみに有効なデータが存在し、残り48個は全てゼロである(エラーが生じた場合は負の最大値であるが、これはエラー表示ビットにより識別できる)。

0036

したがって、CPU2がDCT係数の処理を行う際には、不要な48個のデータに対する処理をスキップすることができる。またEOBポインタフィールドは、何番目のDCT係数が最後の有効なデータであったかを示すものであり、これ以降のDCT係数は全てゼロであることを示す。エントリ有効ビットフィールドと同様に、CPU2が不要な処理をスキップするために有効な情報である。それぞれの処理時にどのような処理を行うかは、各機能ブロックの構成の後で説明する。

0037

<バスインターフェイス部>バスインターフェイス部6は周辺バスB2とのインターフェイスを制御するブロックであり、周辺バスB2とあらゆる機能ブロック間データ転送はバスインターフェイス部6を介して行われる。周辺バスB2のデータビット幅は64ビットであり、上記データ転送にはCPU2主導のロードストア命令と、VLC処理装置4から要求を発したDMA転送の2種類がある。ロードストア命令時のCPU2とのインターフェイス処理や、DMA転送時のDMAコントローラ3とのインターフェイス処理は、全て本ブロックによって行われる。VLC処理装置4が行うDMA転送には以下のものがある。

0038

[VLC入力DMA]VLCデコード処理時に実行され、データメモリ上に格納されているデコード対象可変長データをVLCバッファ部16に転送する。2ワードの転送により1回のDMA処理を構成し、1ワードは64ビットである。よって1回のDMA転送により16バイトのデータが転送される。DMAスタートアドレスには、バスインターフェイス部6の保有するアドレスレジスタVL_STRAPの値が用いられ、DMA転送の終了時に“16”が加算される。CPU2はストア命令によりアドレスレジスタVL_STRAPに値を設定できる。ただし、その設定値は8バイトのデータ境界に整置されていなければならない。

0039

[DCT出力DMA]VLCデコード処理時に実行され、ローカルメモリ7上に格納されたデコード済みDCT係数をデータメモリ1上に転送する。ローカルメモリ7のアクセス速度とDMA転送の要求するアクセス速度の差を吸収するためみ第2DCTバッファ部11が使用される。16ワードの転送により1回のDMA転送を構成し、1ワードは32ビットである。よって1回のDMA転送により64バイトのデータが転送される。DMAスタートアドレスには、バスインターフェイス部6の保有するアドレスレジスタVL_DCTAPの(格納)値が用いられ、DMA転送の終了時に“64”が加算される。CPU2はストア命令によりアドレスレジスタVL_DCTAPの値を設定できる。ただし、その設定値は8バイトのデータ境界に整置されていなければならない。

0040

[DCT入力DMA]VLCエンコード処理時に実行され、データメモリ1上のエンコード対象DCT係数をローカルメモリ7上に転送する。ローカルメモリ7のアクセス速度とDMA転送の要求するアクセス速度の差を吸収するためみ第2DCTバッファ部11が使用される。16ワードの転送により1回のDMA転送を構成し、1ワードは32ビットである。よって1回のDMA転送により64バイトのデータが転送される。DMAスタートアドレスには、バスインターフェイス部6の保有するアドレスレジスタVL_DCTAPの値が用いられ、DMA転送の終了時に“64”が加算される。CPU2はストア命令によりアドレスレジスタVL_DCTAPに値を設定できる。ただし、その設定値は8バイトのデータ境界に整置されていなければならない。

0041

[VLC出力DMA]VLCエンコード処理時に実行され、VLCバッファ部16上に格納されたパック済みVLC109をCPU2が管理するデータメモリ1上に転送する。1ワードの転送により1回のDMA転送を構成し、1ワードは64ビットである。よって1回のDMA転送により8バイトのデータが転送される。DMAスタートアドレスには、バスインターフェイス部6の保有するアドレスレジスタVL_STRAPの値が用いられ、DMA転送の終了時に“8”が加算される。CPU2はストア命令によりアドレスレジスタVL_STRAPに値を設定できる。たたし、その設定値は8バイトのデータ境界に整置されていなければならない。

0042

CPU2は、以下に示すレジスタに対してロードストア命令でアクセスできる。これらの処理は常識的な方法で極めて容易に実現可能であるため、詳細な説明は省く。また、図面が煩雑になり理解を困難にすることを避けるため、今後の説明図からも省略する。

0043

・制御レジスタVL_MODE (シーケンス制御部5内)
・ 制御レジスタVL_CNT(シーケンス制御部5内)
・ 制御レジスタVL_INTRA (DCT生成部13内)
・アドレスレジスタVL_DCTAP(バスインターフェイス部6内)
・ アドレスレジスタVL_STRAP (バスインターフェイス部6内)
・ 制御レジスタ VL_STRBP (VLCバッファ部16部内)
・ 制御レジスタVL_CBUFST (VLCバッファ部16部内)
データレジスタVL_CBUF0 (VLCバッファ部16部内)
・ データレジスタVL_CBUF1 (VLCバッファ部16部内)
・ データレジスタVL_CBUF2 (VLCバッファ部16部内)
・ データレジスタVL_CBUF3 (VLCバッファ部16部内)
・ 制御レジスタVL_PCKDT (VLCパック部17内)
・ 制御レジスタVL_PCKLN (VLCパック部17内)
・ 制御レジスタVL_REMDH (VLCパック部17内)
・ 制御レジスタVL_REMDL (VLCパック部17内)
・ 制御レジスタVL_REMBP (VLCパック部17内)
・ データレジスタVL_DBUF0 (第2DCTバッファ部11内)
・ データレジスタVL_DBUF1 (第2DCTバッファ部11内)
・ データレジスタVL_DBUF2 (第2DCTバッファ部11内)
・ データレジスタVL_DBUF3 (第2DCTバッファ部11内)
・ 制御レジスタVL_LMAR (アドレス生成部12内)
・ データレジスタVL_LMDR (アドレス生成部12内)
<ローカルメモリ>ローカルメモリ7は4KバイトのRAMにより実現されており、デコード処理やエンコード処理に使用する検索テーブルを格納する。また、デコードにより生成したDCT係数(デコードDCT112)と、エンコード対象のDCT係数を一時的に保持するための第1DCTバッファ部としても用いられる。リードライト基本単位は32ビットであるが、VLCデコード処理時のDCT係数ライト時にのみ16ビット単位の書き込み処理が行われる。

0044

ローカルメモリ7のアドレスは、アドレス生成部12より与えられる。アドレス生成部12は、アドレス生成処理に1サイクルを要する。また、本ローカルメモリ7のリードライト処理にも1サイクルを要するため、アクセスのレイテンシ2サイクルである。但し、アドレス生成サイクルとメモリアクセスサイクルオーバーラップ実行が可能である。即ちパイプライン化により、1サイクルのスループットを実現できる。

0045

ローカルメモリ7への書き込みデータはライトセレクタ18により選択される。ライトセレクタ18には、3つのデータが与えられており、シーケンス制御部5の制御下でこれら3つのうちの一のデータがライトデータ115としてローカルメモリ7に出力される。第2DCTバッファ部11からの書き込み経路は、VLCエンコード処理時に用いられる。DMA転送により第2DCTバッファ部11上に転送されたエンコード対象のDCT係数は、この経路にてローカルメモリ7に格納される。アドレス生成部12からの書き込み経路は、CPU2が任意の値をローカルメモリ7上の任意アドレスに対して書き込むためのものであり、検索テーブルの格納時に使用される。DCT生成部13からの書き込み経路は、VLCデコード処理時にデコードによって得られたDCT係数をローカルメモリ7上に格納するときに用いられるものである。

0046

ローカルメモリ7から読み出すデータは、一度ローカルメモリ7内のリードデータレジスタに格納され、その後リードデータ114として出力される。このレジスタは、ローカルメモリ7の読み出しの度に更新される。

0047

<第2DCTバッファ部>第2DCTバッファ部11は、ローカルメモリ7と周辺バスB2間でDMA転送を行う際に、両者間の動作速度差を吸収するために設けられている。本ブロックはローカルメモリ7より小容量であるが、1サイクルでリードライト処理が可能である。VLCエンコード処理、VLCデコード処理のいずれにおいても動作する。

0048

DMA転送は1サイクルでの応答が求められる。例えばDCT出力処理のDMA転送では、DMAコントローラ3が転送開始を告げた次のサイクルにVLC処理装置4から周辺バスB2にデータを出力する必要がある。

0049

しかしながら、ローカルメモリ7のレイテンシは2サイクルであり、ローカルメモリ7から直接データを読み出していたのではこの要求を満たすことはできない。ローカルメモリ7と周辺バスB2の間に第2DCTバッファ部11を挿入することにより求められる上記したタイミング仕様を満たすことができる。DMA転送の開始を告げられる前にローカルメモリ7の読み出しを開始し、読み出したデータは第2DCTバッファ部11に蓄える。DMA転送の開始が告げられると、ここに蓄えたデータを速やかに出力することができる。DCT入力処理のDMA転送ではデータの流れが反対になるだけで、基本的な機能は同様である。周辺バスB2から与えられたデータは、一度第2DCTバッファ部11に蓄えられた後ローカルメモリ7に書き込まれる。

0050

図3は第2DCTバッファ部11の内部構成を示すブロック図である。図3に示すように、保持レジスタ群23は4個のデータ保持レジスタ(VL_DBUF0〜3)を有し、バスインターフェイス部6から送られるDMA入力データ(DBF入力B102)あるいはローカルメモリ7からの読み出しデータ(リードデータ114)がDBF入力セレクタ22によって選択されて書き込まれる。

0051

各データ保持レジスタは32ビットなのに対してDBF入力B102は64ビットであるため、DBF入力B102は分割器21によって上位と下位32ビットづつに分割され、いずれかのみが書き込まれる。これら書き込むデータの選択はDBF入力セレクタ22が行い、VLCデコード時にはリードデータ114を選択する。VLCエンコード時にはDBF入力B102を選択する。この時、DMA転送時のアドレスに応じてDBF入力B102の上位と下位を選択する。保持レジスタ群23における書き込み対象のデータ保持レジスタは、書き込みポインタDBFWPが示す。書き込みポインタDBFWPはデータ保持レジスタに書き込みを行う度に更新される。

0052

保持レジスタ群23のデータ保持レジスタから読み出されたデータは、バスインターフェイス部6に送られDMA転送に供されるか、またはローカルメモリ7に書き込まれる。読み出し対象は、読み出しポインタDBFRPにより示される。読み出しポインタDBFRPはデータ保持レジスタの読み出しを行う度に更新される。

0053

バスインターフェイス部6への読み出し経路(DBF出力B101)は64ビットである。上位32ビットと下位32ビットは別の経路(DBF出力B上位セレクタ24とDBF出力B下位セレクタ25)で選択され、結合器27で結合されたのちに出力される。VL_DBUFiのiが偶数番のデータ保持レジスタはDBF出力B上位セレクタ24に接続され、iが奇数番のデータ保持レジスタはDBF出力B下位セレクタ25に接続されている。ローカルメモリ7への書き込みデータ(DBF出力M110)はDBF出力Mセレクタ26によって選択される。

0054

<アドレス生成部>アドレス生成部12は、ローカルメモリ7にアクセスする際のアドレスを生成するものである。VLCエンコード、VLCデコードのいずれにおいても動作する。アドレス生成部12は図4に示すように、DCTポインタ31、オフセット生成器21、変位生成器33(変位選択器34,変位シフタ35)、アドレス結合器36、直接アクセス制御器37、アドレスセレクタ38及びアドレスレジスタ39により構成される。

0055

オフセット生成器32は、テーブル検索やDCT係数アクセスなど様々なローカルメモリ7へのアクセスに応じて、検索テーブルやDCT係数バッファ領域のオフセットアドレスを生成する。オフセット生成器32にはDCTポインタ31の出力とローカルメモリ7の読み出しデータ(リードデータ114)の一部が与えられる。ローカルメモリ7から読み出したデータの中で、オフセット生成器32に与えられるのはbit2〜bit11であり、これは後述するデコード検索やオフセット検索結果のOFFSETフィールドに対応する。

0056

オフセット生成器32はアクセスの種類に応じて、DCTポインタ31の出力、OFFSETフィールド、あるいはオフセット生成器32自身が有する固定値のいずれかを出力する。MPEG1、MPEG2、DVCフォーマットのエンコードやデコードに対応するため、オフセット生成器32は以下に示す9種類のアクセスに対する固定値を有している。ここで、B14テーブル及びB15テーブルは、それぞれISO/IEC13818-2のTable-B14及びTable-B15に対応する。

0057

・MPEG1/2ブロックのB14テーブルDC係数デコード
・ MPEG1/2ブロックのB14テーブルAC係数デコード
・ MPEG1/2ブロックのB15テーブルAC係数デコード
・ DVCブロックデコード
・ MPEG2ブロックのB14テーブルDC係数エンコード用オフセット検索
・ MPEG2ブロックのB14テーブルAC係数エンコード用オフセット検索
・ MPEG2ブロックのB15テーブルAC係数エンコード用オフセット検索
・ MPEG2ブロックエンコードのエスケープ検索
・ DVCブロックエンコードのオフセット検索
変位生成器33は、テーブル検索の種類に応じて検索テーブルの変位アドレスを生成する。変位生成器33は、その中に変位選択器34と変位シフタ35とを有している。変位選択器34には、シフタ部15の与えるシフタ出力H117と、VLC生成部14の与えるエンコード(対象)RUN104とエンコード(対象)ABS103とが与えられている。変位選択器34はアクセス内容に応じていずれかを選択し、変位アドレスとして出力する。ここでシフタ出力H117はデコード対象のVLCを左詰めで含んでいる。

0058

変位選択器34によってシフタ出力H117が選択される場合は更に4つの選択肢が存在し、シフタ出力Hのbit[00:07]、bit[04:11]、bit[08:15]、あるいはbit[12:19]フィールドのどれかが変位アドレスとされる。後述するデコード検索におけるBSELフィールド(図4では図示せず)は、この4つのフィールドのいずれかを指定する制御コードであり、変位選択器34に与えられる。

0059

変位シフタ35は変位選択器34の出力を右に論理シフトするものであり、シフト量は0、1、2、あるいは3のいずれかである。後述するデコード検索におけるSHFフィールド(図4では図示せず)はこのシフト量を指定するものであり、変位シフタ35に与えられる。デコード検索時には、変位選択器34と変位シフタ35を組み合わせることで、デコード対象VLCの上位20ビットから任意の8bitを切り出すことができる。

0060

アドレス結合器36は、オフセット生成器32からのオフセットアドレスと変位生成器33からの変位アドレスを結合することにより、検索テーブルやDCT係数バッファアクセス用のアドレスを生成する。これは両アドレスの加算によって容易に実現できる。しかしながら、加算器面積や動作速度上のペナルティが大きいため、ここではセレクタによる方法を採用している。即ち、出力するアドレスの上位側にはオフセットアドレスを充て、下位側には変位アドレスを充てる。あるアクセスにおいて生じ得る変位アドレスの最大値を2のN乗としたとき、下位Nビットは変位アドレスを、残りビットにはオフセットアドレスを充てる。この時、オフセットアドレスは{M×2N }となるように選ばれていなければならない。ここで、N、Mは自然数である。

0061

後述のデコード検索やオフセット検索で得られるBTSELフィールドはアドレス結合器36の制御コードであり、何ビットの変位アドレスを出力するかを決定する。アドレスの上位2bitには、必ずオフセットアドレスを充てる。下位8bitとBTSELの各ビットが対応しており、BTSELで1がセットされているビットには変位アドレスが充てられる。BTSEL=8'b11111111の場合は、アドレスの上位2bitはオフセットアドレス、下位8bitは変位アドレスとなる。BTSEL=8'b00001111の場合は、アドレスの上位6bitはオフセットアドレス、下位8bitは変位アドレスとなる。

0062

DCTポインタ31は、DCT係数をローカルメモリ7上のDCTバッファ領域に出し入れするためのアドレスポインタである。本ポインタは、DCT係数の書き込みとDCT係数の読み出しのいずれにおいてもポストインクリメント処理される。インクリメント値はアクセスのサイズ(16bitアクセスか32bitアクセスか)に応じて切り替えられる。本ポインタの生成するDCTアドレスはオフセット生成器32に与えられる。オフセット生成器32がDCTポインタ31を選択する時、オフセットアドレスはDCTポインタ31の出力にDCTバッファ領域のオフセットアドレスを付加したものとなる。DCTバッファ領域のオフセットアドレスはオフセット生成器32中に固定値として埋め込まれている。

0063

直接アクセス制御器37はCPU2がローカルメモリ7の任意アドレスをアクセスするために用いる。例えば、検索テーブルの書き込みなどである。これは直接アドレスレジスタVL_LMARと直接データレジスタVL_LMDRを含み、直接アドレスレジスタVL_LMARはローカルメモリ7に対するライト処理リード処理かを指定するビットを含んでいる。両レジスタはロードストア命令によりアクセス可能である。CPU2が直接アドレスレジスタVL_LMARに対するストア命令を実行すると、これをトリガとしてローカルメモリ7へのアクセス処理が起動される。この時、直接アドレスレジスタVL_LMARの値がローカルメモリ7に対するアクセスアドレスとなる。ローカルメモリ7からのリードの場合は読み出したデータが直接データレジスタVL_LMDRに格納され、ローカルメモリ7へのライトの場合は直接データレジスタVL_LMDRの内容が直接ライトデータ111としてローカルメモリ7に書き込まれる。

0064

アドレスレジスタ39はアドレスセレクタ38により選択されたアドレス113を一時的に保持するためのものである。アドレスセレクタ38は、直接アドレスレジスタVL_LMARへのストア命令が実行された場合には直接アドレス生成器を選択し、それ以外の場合はアドレス結合器36を選択する。

0065

<DCT生成部>DCT生成部13は、シフタ部15から送られたデータと、ローカルメモリ7上のデコードテーブル検索結果に基いて、可変長符号化された1個のデータを復号する。図5に示す様にESC復号器41、検索復号器42、DCT生成器43、及びLENGTHレジスタ48から構成され、VLCデコード処理時にのみ動作する。

0066

ESC復号器41には、シフタ部15から送られるシフタ出力H117が与えられる。このデータはデコード対象となる可変長データを左詰めで含んでいる。ESC復号器41はこのデータと、MPEG1やMPEG2のESCAPEコードに規定されている符号化規則とに基いて、ESC_RUN、ESC_LEVEL、及びデコードした可変長データのビット長(ESC_LENGTH)を生成する。これらの処理は完全なハードワイヤード論理で実現され、以下の通りに生成される。生成した値は検索復号器42に与えられる。

0067

(a)MPEG2デコード
ESC_RUN …シフタ出力Hのbit[6:11]
ESC_LEVEL …シフタ出力Hのbit[12:23]
ESC_LENGTH …24ビット
(b) MPEG1デコード
(b-1) シフタ出力Hのbit[13:19]がオールゼロの場合
ESC_RUN …シフタ出力Hのbit[6:11]
ESC_LEVEL …シフタ出力Hのbit[20:27]をbit[12]で符号拡張
ESC_LENGTH …28ビット
(b-2) シフタ出力Hのbit[13:19]がオールゼロでない以外の場合
ESC_RUN …シフタ出力Hのbit[6:11]
ESC_LEVEL …シフタ出力Hのbit[12:19]をbit[12]で符号拡張
ESC_LENGTH …20ビット
検索復号器42には、ローカルメモリ7から読み出されたリードデータ114に含まれるデコードテーブル検索結果が与えられる。検索復号器42は、上記デコードテーブル検索結果に基いて、可変長符号のデコード結果を生成する。生成するデータはRUNとLEVELからなる2次元データと、デコードした可変長符号の符号長LENGTHである。生成したRUNとLEVELはDCT生成器43に送られる。LENGTHはLENGTHレジスタ48に格納された後にデコードビット長としてVLCバッファ部16に送られる。

0068

DCT生成器43は、検索復号器42の生成した2次元データを1次元に展開して所定個数のDCT係数(デコードDCT112)を生成する。DCT係数は16bit符号付き整数で現され、これらはローカルメモリ7に格納される。DCT生成器43に、RUNとLEVELからなる1個の2次元データが与えられると、DCT生成器43は(RUN+1)個のDCT係数を生成する。生成したDCT係数においては最後の1個のみが値を持ち、それ以外は全てゼロである。検索結果がEOBを示した場合には、当該ブロックの残りDCT係数全てにゼロを設定する。また、検索結果がエラーを示した場合には、当該ブロックの残りDCT係数全てに負の最大値を設定する。当該ブロックにおいて処理を終えたDCT係数は、DCTポインタ31の値に示されている。

0069

検索復号器42より送られたデータのうち、RUNはデコードRUNカウンタ45に、LEVELはLEVELレジスタ44にセットされる。DCTセレクタ46は、デコードRUNカウンタ45の値がゼロの場合はLEVELレジスタ44の格納値を、それ以外の場合はゼロを選択する。デコードRUNカウンタ45はDCT係数を出力する度にデクリメントされる。ただし、MPEG1やMPEG2におけるINTRAブロックで最初の可変長符号をデコードした場合はデコードRUNカウンタ45の値に関わらず制御レジスタVL_INTRAの格納値を選択する。制御レジスタVL_INTRAはCPU2から値を設定可能である。また、DCTセレクタ46は検索終了結果がエラーを示した場合は例外として負の最大値を出力する(この経路は図示していない)。DCTセレクタ46の出力は16ビットであり、ローカルメモリ7のデータ幅は32ビットである。よって、生成したDCT係数は、ローカルメモリ7に対する書き込みデータの上位か下位に適宜位置合わせしてある必要がある。

0070

図中、位置合わせ器47は、DCTセレクタ46の出力を受け、上記位置合わせ処理を行う。生成したDCT係数を書き込みデータの上位に配置するか、下位に配置するかはDCTポインタ31(図5では図示せず)の値により判定される。

0071

ここでDCT生成器43は、DCTセレクタ46の選択したデータがゼロか、あるいは負の最大値であるかを判定する機能を有する(図示せず)。

0072

<VLC生成部>VLC生成部14は、ローカルメモリ7より読み出したDCT係数からRUNとLEVELの2次元データを生成し、これを可変長符号化するブロックである。VLC生成部14はVLCエンコード時にのみ動作する。VLC生成部14は図6に示すように、ABS生成器53、RUN生成器57、VLC生成器61、DCTレジスタ51及び符号化DCTセレクタ52により構成される。

0073

DCTレジスタ51は、ローカルメモリ7より読み出されたリードデータ114に含まれるエンコード対象のDCT係数を一時的に保持するためのものである。リードデータ114の読み出しは32ビット単位で行われ、処理対象のDCT係数はDCTレジスタ51の上位か下位のいずれかに格納されている。符号化DCTセレクタ46が、DCTポインタ31(図6では図示せず)の値にしたがってDCTレジスタ51から処理対象のDCT係数を選択する。

0074

ABS生成器53は、絶対値生成器54とABSセレクタ55とを有する。絶対値生成器54はDCTレジスタ51が保持するDCT係数の絶対値を求め、ABSセレクタ55は求めた絶対値かゼロのいずれかを選択して出力し、切り出し器56はABSセレクタ55の出力が絶対値の場合、その下位7ビットを切り出して得られる値をエンコード(対象)ABSとしてアドレス生成部12に出力する。

0075

RUN生成器57は、DCTレジスタ51に格納されたDCT係数をモニタし、値がゼロであった場合にRUNカウンタをインクリメントする。読み出したDCT係数の値がゼロの場合は、直ちに次のDCT係数が読み出され、RUN生成器57は同様の処理を行う。読み出されたDCT係数がゼロ以外の値を有していた場合、この値がエンコードすべき2次元データのLEVELであり、その時のRUNカウンタの値がRUNに相当する。

0076

RUNカウンタ58は新しい2次元データのエンコードを開始する時点でゼロに初期化される。RUN生成器57はRUNセレクタ58の出力にDCTレジスタ51が保持するDCT係数の符号ビットを結合器60によって結合し、これをエンコード(対象)RUNとしてアドレス生成部12に出力する。符号ビットはRUNカウンタ58の右側に結合される。RUNセレクタ58は、RUNカウンタ58出力(6ビット)、RUNカウンタ58出力から1を減じた値、あるいはゼロのいずれかを選択する。

0077

RUNカウンタ58出力から1を減じた値を選択する場合は、[RUN/REVEL=30/20]を[RUN/REVEL=29/0]と[RUN/REVEL=0/20]とに分けて符号化する場合等が考えられる。

0078

VLC生成器61は、リードデータ114に含まれるテーブル検索結果、DCTレジスタ51の保持するデータ、及びRUNカウンタ58の値に基いてRUNとLEVELの2次元データを可変長符号化する。符号化によって生成した可変長符号化データ(エンコードVLC119)と、そのビット長(エンコードビット長118)はVLCパック部17に送られる。

0079

VLC生成器61は、内部にESC符号器62とVLCセレクタ63とを有する。ESC符号器62は後述するESC検索に基いて、同じく後述するRUN検索の結果が有効か無効かを判定し、その結果を保持する。VLCセレクタ63は、判定結果が有効ならばRUN検索結果から取り出した可変長符号化データとそのビット長を、判定結果が無効ならばESC符号器62が生成した可変長符号化データとそのビット長を、選択してエンコードVLC119及びエンコードビット長118として出力する。1ブロック分のDCT係数を全てエンコードし終えた後にはEOB符号をエンコードすることになるが、これはESC符号器62により生成される。ESC符号器62が生成するデータは以下の通りである。なお、ESC符号器62の出力する符号化データは24ビットであり、下記のとおりに生成されたデータは左詰めに配置される。この時、残りビットはゼロで埋められる。

0080

(a)MPEG2エンコード時
符号化データ …"000001"、RUNセレクタ58の出力6ビット、及び符号化DCTセレクタ46の下位12ビットの結合
ビット長…24ビット
(b) MPEG2エンコード終了時
(b-1) B14テーブルを使用したブロック
符号化データ …"10"
ビット長 …2ビット
(b-2) B15テーブルを使用したブロック
符号化データ …"0110"
ビット長 …4ビット
(c) DVCエンコード時
(c-1) RUNセレクタ58の出力がゼロ
符号化データ …"1111111"、ABSセレクタ55の出力の下位8ビット、及びエンコードDCTセレクタ46の符号ビットの結合
ビット長 …16ビット
(c-2) RUNセレクタ58の出力がゼロ以外
符号化データ …"1111110"及びRUNセレクタ58の出力6ビットの結合
ビット長 …13ビット
(d) DVCエンコード終了時
符号化データ …"0110"
ビット長 …4ビット
<シフタ部>シフタ部15は、VLCデコード時とVLCエンコード時の両方で動作する。デコード時には、VLCバッファ部16から送られる処理対象VLCを32ビットデータに左詰めする作業を行う。エンコード時には、エンコードされたVLCをそれ以前にエンコードされたVLCの末尾に連結するための位置合わせ作業を行う。

0081

シフタ部15は、図7に示す様にシフトデータ生成器71、シフタアレイ72、シフト量生成器73、シフタ出力Hレジスタ74、シフタ出力Lレジスタ75を含んでいる。シフタアレイ72はシフトデータ生成器71から与えられる63ビットデータを左にシフトし、シフト結果の上位32ビットを出力する。シフト結果はシフタ出力Hレジスタ74かシフタ出力Lレジスタ75に保持される。シフト量は0〜31ビットであり、シフト量生成器73から与えられる。

0082

シフトデータ生成器71は、VLCバッファ部16より与えられるVBF出力S105(63ビット)とVLCパック部17から与えられるパック対象VLC108(32ビット)が入力される。デコード処理時において、シフトデータ生成器71はVBF出力S105をそのままシフタアレイ72に与える。エンコード処理時には、パック対象VLC108をゼロ拡張するか、またはパック対象VLC108の下位31ビットの右側にゼロを32個するか、いずれかの方法により生成した63ビットデータをシフタアレイ72に与える。

0083

シフト量生成器73は、VLCバッファ部16より与えられる制御レジスタVL_STRBPの格納値とVLCパック部17より与えられる制御レジスタVL_REMBPの格納値を元にシフト量を生成し、シフタアレイ72に与える。デコード時には制御レジスタVL_STRBPの格納値の下位5ビットがシフト量であり、エンコード時には制御レジスタVL_REMBPの格納値の下位5ビットの反転データがシフト量とされる。

0084

<VLCバッファ部>VLCバッファ部16はVLCデコード時とVLCエンコード時の両方で動作する。デコード時にはDMA転送によりデータメモリ1より読み込んだVLCを保持し、これをシフタ部15に送る。保持しているデータが残り少なくなると、再度DMA転送を起動することにより新たなVLCを読み込む。エンコード時には64ビット単位にパックしたVLCを一時的に保持し、DMA転送を起動することによりデータメモリ1に転送する。

0085

図8はVLCバッファ部16の内部構成を示すブロック図である。VLCバッファ部16は4個のデータ保持レジスタ(VL_CBUF0〜VL_CBUF3)を有する保持レジスタ群83、VBF入力セレクタ81、VBF出力Bセレクタ87等から構成される。

0086

リードポインタVBFRPは読み出し対象となる保持レジスタを示し、ライトポインタVBFWPは書き込むべき保持レジスタを示す。制御レジスタVL_STRBPはデコード時にのみ意味を持ち、リードポインタVBFRPと併せて、保持レジスタ内のどこにデコードすべきVLCの先頭が位置するかを示す。リードポインタVBFRPはVLC先頭が含まれる保持レジスタを示し、制御レジスタVL_STRBPは保持レジスタ中でのVLC先頭のビット位置を示す。

0087

保持レジスタ群83を構成する各データ保持レジスタは64ビットの幅を持ち、例えば、VL_CBUF0の上位32ビットをVL_CBUF0H、下位32ビットをVL_CBUF0Lと呼ぶ。これら保持レジスタにはVLCパック部17から与えられるパック済みVLC109と、バスインターフェイス部6から与えられるVBF入力B106のどちらかが書き込まれる。書き込みデータはVBF入力セレクタ81により選択される。

0088

デコード時にはVBF入力B106が有効であり、ここにはVLC入力DMA転送によりデータメモリ1から転送されたデコード対象VLCが与えられる。エンコード時にはパック済みVLC109が有効であり、64ビットデータへのパッキングを完了したエンコード済みVLCが与えられる。書き込むべきレジスタはライトポインタVBFWPが示す。書き込みは必ず64ビット単位で行われ、データを一個書き込む度にライトポインタVBFWPは更新される。書き込みは、VL_CBUF0→VL_CBUF1→VL_CBUF2→VL_CBUF3→VL_CBUF1....の順番である。

0089

また、アドレスレジスタVBFAP0〜VBFAP3は、VLCバッファ部16は保持レジスタVL_CBUF0〜VL_CBUF3に対応して設けられ、VLC入力DMA転送によって保持レジスタVL_CBUF0〜VL_CBUF3にデータを書き込んだとき、各保持レジスタに書き込まれたデータのアドレスがアドレスレジスタVBFAP0〜VBFAP3に格納される。

0090

保持レジスタ群83からの読み出し経路は2種類ある。一つはシフタ部15への読み出し経路でありデコード時に動作する。VLCバッファ部16への読み出しデータは、VBF出力S上位セレクタ84とVBF出力S下位セレクタ85の出力を結合して作られる。これら2つのセレクタ84,85は、4つの保持レジスタの上位と下位併せて8個の入力から一つを選択するものである。VBF出力S上位セレクタ84は、リードポインタVBFRPの示すレジスタの上位あるいは下位32ビットで、制御レジスタVL_STRBPの格納値が示すビットが含まれる方を選択する。VBF出力S下位セレクタ85は、制御レジスタVL_STRBPの示すビット位置が32未満の場合と32以上の場合で処理が異なる。

0091

制御レジスタVL_STRBPが32未満の場合はリードポインタVBFRPの示すレジスタの下位32ビットを選択する。制御レジスタVL_STRBPが32以上の場合はリードポインタVBFRPの示す次のレジスタの上位32ビットを選択する(例えばリードポインタVBFRPが“0”の場合は保持レジスタVL_CBUF1Hを、リードポインタVBFRPが“3”の場合は保持レジスタVL_CBUF0Hを選択する)。

0092

VBF出力S上位セレクタ84の出力の右側(下位側)にVBF出力S下位セレクタ85の出力が結合器86によって結合され、その上位63ビットを切り取ったものがVBF出力S105として出力される。必ず上位32ビット中にデコード対象VLCの先頭を含んでいる。

0093

VLCバッファ部16は、一つのVLCデコードが完了する度にリードポインタVBFRPと制御レジスタVL_STRBPの格納値とを更新する。制御レジスタVL_STRBPにはDCT生成部13から与えられるデコードビット長とデコード前の制御レジスタVL_STRBPの格納値とを加算した結果が設定される。リードポインタVBFRPは、上記加算時にキャリーが生成された場合にのみ更新する。リードポインタVBFRPの更新順序はVL_CBUF0→VL_CBUF1→VL_CBUF2→VL_CBUF3→0....の順である。

0094

もう一つの読み出し経路はバスインターフェイス部6への読み出し経路でありエンコード時にのみ動作する。読み出し対象レジスタはリードポインタVBFRPにより示され、VBF出力Bセレクタ87により選択され、VBF出力B107として出力される。読み出しは64ビット単位で行われ、一つのデータを読み出すたびにリードポインタVBFRPは更新される。更新の順序はデコードの場合と同じである。読み出されたデータは、DMA転送によってデータメモリ1に転送される。

0095

制御レジスタVL_CBUFSTはデータ保持レジスタのステータスを示すレジスタであり、保持レジスタVL_CBUF0〜3に対応するビットを有している。各ビットは対応する保持レジスタにデータが書き込まれた場合にセットされる。デコードの場合は当該保持レジスタの保持するVLCが全てデコードされた場合にクリアされる。エンコードの場合は当該保持レジスタが読み出された場合にクリアされる。

0096

<VLCパック部>VLCパック部17はエンコード時にのみ動作し、VLC生成部14より送られた符号化可変長データの結合を行う。N番目にエンコードされた可変長データはN-1番目にエンコードされたデータの右側に結合され、さらにその右側にN+1番目にエンコードされたデータが結合される。この様な結合作業により生成されたデータが64ビット以上になると、VLCパック部17はここから64ビットを切り出してVLCバッファ部16に送る。結合によっても64ビットに満たなかったデータやVLCバッファ部16に送ったデータの残りは、パック残余データとしてVLCパック部17が保持する。次のパック処理において、パック残余データの右端には新たにエンコードされた可変長データが結合される。

0097

図9はVLCパック部17の構成を示す。VLCパック部17はパック処理部90とパック入力部91に分けられる。パック入力部91は制御レジスタVL_PCKDT及びVL_PCKLNを有する。制御レジスタVL_PCKDTは新たにエンコードされたVLCを格納するための32ビットレジスタであり、VLCは左詰めで格納される。ここに格納されたデータは、パック対象VLC108としてシフタ部15に与えられる。

0098

制御レジスタVL_PCKLNには制御レジスタVL_PCKDTに格納されたVLCのビット長が格納される。両レジスタにはエンコード処理の過程でVLC生成部14から送られたエンコードVLC119とエンコードビット長118が書き込まれる他、CPU2がストア命令を実行することによっても書き込みが行われる。PCKセレクタ97とLNセレクタ98が、それぞれの書き込みに応じて入力データを選択する。

0099

VLCパック部17は、パック残余データを保持するために2つの32ビットの制御レジスタVL_REMDH及びVL_REMDLを有する。これら2つのレジスタを合わせたものをパック残余レジスタと呼び、制御レジスタVL_REMDHの格納値が上位32ビットに対応し、制御レジスタVL_REMDLの格納値が下位32ビットに対応する。両レジスタへの書き込みデータは2つのデータセレクタ(REMHセレクタ92、REMLセレクタ93)により選択される。REMHセレクタ92には後述する論理和H回路94Hの出力、制御レジスタVL_REMDH自身の格納値、及びシフタ出力L116が与えられている。REMLセレクタ93には後述する論理和L回路95の出力、シフタ出力L116、及びゼロが与えられている。また2つの論理和回路(論理和H回路94,論理和L回路95)を有しており、論理和H回路94及び論理和L回路95によって、両制御レジスタそれぞれの格納値とシフタ出力H117との論理和がそれぞれ求められる。論理和L回路95(論理和L)の出力は、結合器96によって制御レジスタVL_REMDHの格納値の右側に結合され、パック済みVLC109としてVLCバッファ部16に与えられる。また、制御レジスタVL_REMBPの格納値は制御レジスタVL_REMDHと制御レジスタVL_REMDLに保持しているパック残余データのビット数を示すポインタである。

0100

VLCパック部17の動作は、制御レジスタVL_PCKDTへのデータ書き込みをトリガとして起動される。制御レジスタVL_PCKDTへの書き込みは、VLCエンコード時にVLC生成部14から書き込む場合と、ストア命令によりCPU2から書き込む場合があるが、いずれの場合にも同様の処理が起動される。VLCパック部17の動作は、パック残余データと制御レジスタVL_PCKDTの格納値を繋ぎ合わせる作業(VLC結合)と、繋ぎ合わせによって生成したデータから左側の8バイトを切り出してVLCバッファ部16に送る作業(パックデータ生成)とに分けられる。

0101

パック残余データと制御レジスタVL_PCKDTの格納値の結合処理は、2つのステップにより実現される。第1ステップでは、パック残余データの右端とパック対象VLCの左端が接する様に、パック対象VLCの位置合わせをする。第2ステップでは、位置合わせ後のパック対象VLCとパック残余データを重ね合わせる。図10及び図11はこの処理を模式的に現した説明図である。これらの図において、斜線を施した部分が有効なデータを現しており、それ以外の部分はゼロである。

0102

図10は重ね合わせ後のデータが64ビットに満たなかった場合を示し、処理結果はそのままパック残余レジスタに格納される。図11は重ね合わせ後のデータが64ビットを超えた場合を示している。処理結果の上位64ビットはパック済みデータ(パック済みVLC)としてVLCバッファ部16に送られる。これがパックデータ生成である。パックデータを生成した残りのビットがパック残余データであり、パック残余レジスタに格納される。重ね合わせ後のデータが64ビットを超えたか否かが後述のVLC境界判定で判定される。

0103

重ね合わせ処理は、2つのデータの論理和により実現できる。パック対象VLCの位置合わせは、96ビット以上の出力と最大63ビットのシフト量を有する右シフタがあれば容易に実現できる。しかしながらこの様な機能を持つシフタは大きなハードウェアを必要とする。よって、我々はパック対象VLCの位置合わせと、パック残余レジスタとの重ね合わせを32ビットづつに分割して実行することで、小さなハードウェアによりパック処理を実現している。以下に実現方法を示す。

0104

パック対象VLCの位置合わせは2回のシフト処理により実現される。第1回目のシフト処理において、シフタ部15のシフタアレイ72にはパック対象VLCのゼロ拡張により生成された63ビットデータが与えられ、シフト結果はシフタ出力Hレジスタ74に保持される。第2回目のシフト処理では、シフタアレイ72にはパック対象VLCの上位31ビットの右側に31個のゼロを結合したデータが与えられ、シフト結果はシフタ出力Lレジスタ75に保持される。両方のシフト処理において、シフト量は制御レジスタVL_REMBPの格納値の下位5ビットの論理反転データである。

0105

パック残余データとの重ね合わせ処理は、制御レジスタVL_REMBPの格納値により異なる。制御レジスタVL_REMBPの格納値が“32”未満ならば、重ね合わせ結果の上位32ビット(bit[0:31])は制御レジスタVL_REMDHの格納値とシフタ出力H117の論理和となる。次の32ビット(bit[32:63])はシフタ出力L116そのものとなる。重ね合わせにより生成されるデータビット長は制御レジスタVL_REMBPと制御レジスタVL_PCKLNの加算により得られる。この場合は63ビット以下であり、重ね合わせ結果の64ビットは全てパック残余レジスタに格納される。つまりREMHセレクタ92は論理和Hの出力を選択し、REMLセレクタ93はシフタ出力L116を選択する。また、制御レジスタVL_REMBPと制御レジスタVL_PCKLNの加算結果が制御レジスタVL_REMBPに格納される。この時、パック済みVLC109は出力されない。

0106

制御レジスタVL_REMBPが“32”以上ならば、重ね合わせ結果のbit[0:31]は制御レジスタVL_REMDHそのものである。bit[32:63]は制御レジスタVL_REMDLとシフタ出力H117の論理和であり、bit[64:95]はシフタ出力Lである。制御レジスタVL_REMBPと制御レジスタVL_PCKLNとの加算値の加算結果が“64”未満ならば、パック済みVLC109は出力されず、重ね合わせ結果のbit[0:63]は制御レジスタVL_REMDHと制御レジスタVL_REMDLに格納される。即ちREMHセレクタ92は制御レジスタVL_REMDHの出力を選択し、REMLセレクタ93は論理和Lの出力を選択する。制御レジスタVL_REMBPには制御レジスタVL_REMBPと制御レジスタVL_PCKLNの加算結果が格納される。重ね合わせ結果のbit[64:95]にはゼロが与えられているはずであり、この値はどこにも保持されない。

0107

一方、制御レジスタVL_REMBPが“32”以上で制御レジスタVL_REMBPと制御レジスタVL_PCKLNとの格納値の加算結果が“64”以上ならば、重ね合わせ結果のbit[0:63]がパック済みVLC109としてVLCバッファ部16に出力される。重ね合わせ結果のbit[64:95]は制御レジスタVL_REMDHに格納され、制御レジスタVL_REMDLにはゼロが格納される。制御レジスタVL_REMBPには、制御レジスタVL_REMBPと制御レジスタVL_PCKLNの加算結果の下位6ビットが格納される。これは、上記加算結果から64を減じた値と等しく、新たにパック残余レジスタに格納されたデータのビット長を示している。

0108

可変長符号化時には、生成された可変長符号を繋ぎ合わせ、更に所定サイズ毎に切り出す作業が必要である。これは、通常の情報処理装置の扱いうるデータは8ビットを一つの区切りとしたデータに限られるからである。本実施の形態においては、符号化処理によって生成した可変長符号の連結と、所定サイズへの切り出しを行うVLCパック部17を設けることにより、上記処理を効率よく行うことができる。更には、CPU2などVLC処理装置4外の装置からこのVLCパック部17の機能を使用できるようにすることで、CPU2等にとって負荷の大きな符号連結作業を軽減することができる。

0109

<VLCデコード処理の動作>VLCデコード処理は、制御レジスタVL_MODEの格納値がMPEG1、MPEG2、あるいはDVCデコードに設定されているときに、制御レジスタVL_CNTの処理ビットをセットすることにより開始される。正しく処理を行うためには、処理ビットを起動する前にアドレスレジスタVL_STRAP、制御レジスタVL_STRBP、アドレスレジスタVL_DCTAPの格納値をそれぞれ設定しておく必要がある。アドレスレジスタVL_STRAPは、デコード対象の可変長符号がデータメモリ1のどの領域に格納されているかを示すものであり、64ビットを1ワードとしたワードアドレスで与えられる。また制御レジスタVL_STRBPは、可変長符号の先頭がアドレスレジスタVL_STRAPで示したワード中のどのビット位置にあたるかを示したものである。アドレスレジスタVL_DCTAPは、VLC処理装置4が生成したDCT係数を書き戻すためのデータメモリ1領域を指定するものである。デコード対象がINTRAブロックの場合、必要に応じて制御レジスタVL_INTRAの格納値も設定する。

0110

VLC処理装置4はデータメモリ1上に与えられたデータをVLC処理装置4に読み込んでから、これをデコードする。デコード作業には、与えられたデータの可変長デコードと、ここで得られた2次元データ(RUNとLEVEL)を1次元に展開する作業とがある。最終的に得られるデータは1ブロックレイヤ分のDCT係数である。

0111

図12はVLC処理装置4のデコード処理を示すフローチャートである。同図に示すように、VLC入力、Blockデコード、DCT出力、及び制御レジスタ更新の4つの処理(S11〜S14)から構成される。以下にそれぞれの処理内容を説明する。

0112

[VLC入力(S11)]ステップS11で実行されるVLC入力は、データメモリ1上に与えられたデコード対象データをVLCバッファ部16に転送する処理である。これは、図13のフローチャートに示す様にVLC入力実行判定処理とVLC入力DMA転送処理とから構成される。

0113

ステップS21で実行されるVLC入力判定処理はVLCバッファ部16の状態によりVLC入力DMAを起動するか否かを判定するものである。ステップS21でVLCバッファ部16がフル状態(Full)と判定されるとステップS22のVLC入力DMA処理は起動されない。VLC処理装置4は、VLCバッファ部16に128ビットを超える可変長符号が格納されていれば、VLCバッファ部16がフルだと判断する。ただしBlockデコードが終了していれば、VLCバッファ部16の状態に関わらずVLC入力を終了する。

0114

ステップS22で実行されるVLC入力DMA処理はデータメモリ1からVLCバッファ部16へのDMA転送処理である。VLC入力DMAは一度に16バイトのデータを転送し、転送されたデータはライトポインタVBFWPの値に応じて保持レジスタVL_CBUF0〜VL_CBUF3のいずれかに格納される。VLC入力DMAで参照されるレジスタはアドレスレジスタVL_STRAPであり、これは1回のDMAが終了する度に更新される。

0115

[Blockデコード(S12)]ステップS12で実行されるBlockデコード処理は、VLCバッファ部16内に蓄えたデータを可変長デコードし、これによって得られた2次元データ(RUNとLEVEL)を展開して64個のDCT係数を生成する処理である。

0116

図14は、Blockデコードの処理手順を示すフローチャートである。同図に示すように、Blockデコード処理は、可変長デコード、DCT係数書き込み、RUNデクリメント、及び幾つかの条件判定により構成される。

0117

図14を参照して、ステップS31で実行されるデコードスキップ判定処理は、可変長符号のデコード処理をスキップするか否かの判定を行う。MPEG1やMPEG2イントラブロックの場合、最初の可変長符号デコードはスキップされる(ステップS32を飛ばしてステップS33が実行される)。最初の可変長符号とは、Blockデコードの開始後一度もDCT係数書き込みを実行していない状態で与えられた可変長符号を示し、DCTポインタ31の値に基づき判定することができる。

0118

続くステップS32で実行される可変長デコード処理はVLCバッファ部16内の可変長データを可変長デコードする処理であり、デコードの結果としてはRUNとLEVELからなる2次元データが得られる。可変長デコード処理は図15に示すように、VLCバッファ部16判定、VLC切り出し、デコードテーブル検索、検索終了判定、及び可変長デコード結果生成によって構成される。なお、その詳細は後述する。

0119

ステップS33で、1ブロックレイヤのデコード処理が完了したか否かのデコード終了判定が行われる。既に1ブロックレイヤ分(64個)のDCT係数を処理済みならば、DCTポインタ31を初期化してBlockデコードを終了する。この時点でEOBビットがセットされていなければ、ERRビットをセットする。まだ64個分のDCT係数を処理していなければ、ブロックレイヤのデコード処理途上であり、次にDCT係数書き込みを実行する。処理済みのDCT係数は、アドレス生成部12内のDCTポインタ31によって示される。

0120

したがって、可変長符号の復号結果によって得られる2次元データが更に展開され、64個のDCT係数として出力されることになる。これは出力データのサイズが一定になるという効果があり、出力データ用のバッファ領域をローカルメモリ7上に確保する際に、無駄が生じない。RUNとLEVELからなる2次元データを出力する場合、RUNがゼロでLEVELが大きな値を有するデータが続いた場合などは極めて大きな領域を必要とし、これに対応できるような出力データ領域を確保するのはなはだしい無駄を生じる。これは可変長符号化まえの入力データについても同様である。

0121

次に、ステップS34で、可変長デコードに基いて生成したDCT係数をローカルメモリ7に書き込むDCT係数書き込み処理が実行される。ローカルメモリ7へのアドレスにはDCTポインタ31の値が出力され、16ビット単位の書き込みに対応してポストインクリメントされる。書き込みデータの選択は、DCT生成器43が行う。デコードRUNカウンタ45の値がゼロならばLEVELレジスタ44の値を選択し、デコードRUNカウンタ45の値がゼロ以外ならばゼロを選択する。デコードRUNカウンタ45の値に関わらず、イントラブロックで最初の可変長符号の場合は制御レジスタVL_INTRAに設定された値を選択する。この処理を繰り返すことにより、可変長デコードにより得られた2次元データを1次元に展開する。

0122

DCT生成器43は、ローカルメモリ7に格納したデータがゼロでなくかつ負の最大値でもなければ(即ち有効なデータであれば)、制御レジスタVL_CNTのエントリ有効フィールドの所定ビットをセットする。セットするビットは書き込みを行った際のDCTポインタ31の値によって決まる。DCTポインタ31が0〜15ならばエントリ有効フィールドの先頭ビットを、16〜31ならば第2ビットを、32〜47ならば第3ビットを、48〜63ならば第4ビットを、それぞれセットする。

0123

ステップS34に続いてステップS34で、2次元データの1次元への展開が完了したか否かRUN判定処理が行われる。デコードRUNカウンタ45の値がゼロ(Yes)ならば、ステップS32に戻って再び可変長デコードを行い、ゼロ以外ならばステップS36のRUNデクリメント処理を行う。

0124

ステップS36で実行されるRUNデクリメント処理は、デコードRUNカウンタ45をデクリメントする処理である。

0125

[DCT出力(S13)]図12に戻って、ステップS13で実行されるDCT出力処理は、ステップS12で実行されるBlockデコード処理によってローカルメモリ7に格納されたDCT係数をデータメモリ1上に転送する処理である。この処理はステップS12のBlockデコード処理の終了後に行われる。

0126

DCT出力処理のデータ転送はDMAによって行われ(DCT出力DMA)、1回のDCT出力DMAで32個のDCT係数を転送する。出力すべきDCT係数は64個であり、DCT出力は2回のDCT出力DMA転送を行う。DCT出力DMA転送で参照されるレジスタはアドレスレジスタVL_DCTAPであり、これは1回のDMA転送が終了する度に更新される。DCT係数をローカルメモリ7から読み出す際のアドレスには、DCTポインタ31の値が用いられる。

0127

[制御レジスタ更新(S14)]ステップS13のDCT出力処理を終えると、VLC処理装置4は自らの制御レジスタを更新して、全ての処理を終える。更新するレジスタは制御レジスタVL_CNTとアドレスレジスタVL_STRAPの2つである。VLC処理装置4はDCT出力を終えると、制御レジスタVL_CNTの処理起動ビットをクリアする。ここで、検索復号器42内のERRビットがセットされていれば、処理起動ビットのクリアと同時にエラー表示ビットをセットする。エラー表示ビットは、VLCデコードの過程でエラーが観測されたことを示す。エラーは、符号化テーブルに規定されていない可変長符号が与えられた場合と、64個のDCT係数を生成した後もEOB符号が得られなかった場合に観測される。EOBポイントフィールドには、テーブル検索の結果EOBを検出したときに待避したDCTポインタ31の値が格納される。

0128

制御レジスタVL_CNTの更新と同時に、リードポインタVBFRPが示す保持レジスタ(VL_CBUF0〜VL_CBUF3)に対応するアドレスレジスタ(VBFAP0〜VBFAP3)の値がアドレスレジスタVL_STRAPセットされる。この値は、次に処理すべき可変長符号の先頭含まれるワードがデータメモリ1のどこに位置するかを示したアドレスである。ここでワードのサイズは64ビットでありアドレスレジスタVL_STRAPの値は64ビットデータ境界に整置されている。ワード内の可変長符号先頭ビット位置は制御レジスタVL_STRBPに示されている。

0129

[可変長デコード(S32)]図15を参照して可変長デコード処理内容の詳細を説明する。ステップS41で実行されるVLCバッファ判定処理は、VLCバッファ部16内に充分な可変長符号が蓄えられているか否かの判定処理であり、充分な符号が蓄えられていない場合(Empty)はVLCの切り出しを保留させる。VLCバッファ部16内に蓄えた可変長符号が32ビット未満の時、VLCバッファ部16がEmptyであると判断される。VLC入力DMA転送が実行されると、VLCバッファ部16の状態判定はEmptyからReadyに変わる。

0130

そして、ステップS42で、VLCバッファ部16に蓄えられている可変長符号の先頭32ビットを切り出すVLC切りだし処理が実行される。切り出した結果はシフタ出力Sとして与えられる。この処理はVLCバッファ部16とシフタ部15の動作により実現される。VLCバッファ部16は保持レジスタVL_CBUF0〜VL_CBUF3から63ビットのデータを選び出し、これをVBF出力S105としてシフタ部15に与える。VBF出力S105は、その上位32ビット中に可変長符号の先頭を含むように選ばれている。シフタ部15は制御レジスタVL_STRBPの格納値の下位5ビットが示す量だけVBF出力S105を左にシフトし、シフト結果の上位32ビットをシフタ出力Hレジスタに格納する。制御レジスタVL_STRBPの下位5ビットは、可変長符号の先頭がVBF出力S105の先頭から何ビット目に位置するかを示しているものであり、シフタ出力H117は可変長符号の先頭32ビットを切り出した値となる。

0131

ステップS43で実行されるデコードテーブル検索処理はローカルメモリ7上に格納されたデコードテーブルの読み出し処理として実現され、可変長デコードに必要な情報を読み出す。ローカルメモリ7の読み出しアドレスはアドレス生成部12によって生成される。

0132

テーブル検索用アドレスは、各デコードテーブルのオフセットアドレスと、各テーブル毎に定められた検索キーワードの加算により求められる。検索キーワードには可変長符号の一部が用いられ、各テーブル毎に可変長符号のどの部分をキーワードに用いるか決まっている。1回目のテーブル検索、即ち、ステップS42のVLC切り出し直後のテーブル検索における検索対象テーブルは、可変長符号の符号化規則に応じて一意的に決まる。2回目以降のテーブル検索における検索対象テーブルは、直前のテーブル検索によって指定される。

0133

ステップS44で実行される検索終了判定処理はDCT生成部13が行う。検索結果のMSB=1ならば検索終了であり、MSB=0ならば検索継続である。検索継続のならば再びデコードテーブル検索を行い、検索終了ならば可変長デコード結果生成を行う。

0134

ステップS45で実行される可変長デコード結果生成処理はDCT生成部13によって行われる処理であり、テーブル検索の結果に応じて可変長符号のデコード結果を生成する。生成するデータはRUNとLEVELからなる2次元データと、デコードした可変長符号の符号長を示すLENGTHとがある。これらのデータは、それぞれデコードRUNカウンタ45、LEVELレジスタ44、LENGTHレジスタ48にセットされる。ここでセットしたRUNとLEVELは、後のDCT係数書き込みにおいて用いられる。LENGTHはVLCバッファ部16に与えられ、制御レジスタVL_STRBPとリードポインタVBFRPを更新するための情報として用いられる。また、検索結果のIDフィールドが“01”の場合はEOBビットをセットし、DCTポインタ31の値を待避する。IDフィールドが“11”の場合はERRビットをセットする。

0135

ステップS43のデコードテーブル検索処理の結果は図16及び図17に示すフォーマットで与えられる。MSBがテーブル検索の終了か継続かを示し、図16のようにMSB=1のときはテーブル検索の終了を示し、図17のようにMSB=0のときはテーブル検索の継続を示す。DCT生成部13は、この値を観測することによりデコード検索を終了するか、繰り返すかを決定する。

0136

図16検索終了時のフォーマットであり、以下のフィールドを含んでいる。

0137

(a) IDフィールド
検索結果のbit[2:3]であり、検索終了時のステータスを示す。ID=00はテーブル検索によって可変長データのデコード結果が得られたことを示す。ID=01は、デコードによりブロック終了を示すEOBコードが得られたことを示す。ID=10はESCAPEコードが得られたことを示す。ID=11は、与えられた可変長データが想定する符号化規則に乗っ取っていないことを示す。

0138

(b)LENGTHフィールド
検索結果のbit[4:11]であり、デコード対象となった可変長データのビット長を示す。

0139

(c) RUNフィールド
検索結果のbit[14:19]であり、デコードによって得られた2次元データのRUNを示す。

0140

(d)LEVELフィールド
検索結果のbit[20:31]であり、デコードによって得られた2次元データのLEVELを示す。

0141

デコードテーブル検索を終了した場合、DCT生成部13(検索復号器42)は上記検索結果に基いて可変長符号のデコード結果を生成する。生成するデータはRUN、LEVEL、及びLENGTHである。ID=00の場合、検索復号器42は検索により得られた3つのフィールド(RUN、LEVEL、LENGTH)に与えられたデータをRUN、LEVEL、LENGTHとして出力する。ID=01の場合、検索復号器42はRUNには最大値(63)を、LEVELにはゼロを、LENGTHにはLENGTHフィールドより切り出した値を出力する。ID=10の場合、ESC復号器41より与えられたESC_RUN、ESC_LEVEL、ESC_LENGTHをそれぞれRUN、LEVEL、LENGTHとして出力する。ID=11の場合、RUNには最大値(63)を、LEVELには負の最大値(0x8000)を、LENGTHにはゼロを出力する。

0142

図5には示していないが、検索復号器42はEOBビットとERRビットを有している。EOBビットは、ブロックレイヤのデコード過程でEOBを示す可変長符号(ID=01)が与えられた場合にセットされる。ERRビットはブロックレイヤのデコード過程でID=11のテーブル検索結果が与えられた場合にセットされる。これらのビットはブロックレイヤのデコードを開始する時点でクリアされる。

0143

検索継続時に、検索結果は次のデコード検索で検索すべきデコードテーブルを示す。即ち、次のデコード検索時のアドレスを生成するための情報を与える。図17は検索終了時のデータフォーマットであり、以下のフィールドを含んでいる。これらはアドレス生成部12に与えられ、次のデコード検索用のアドレス生成時に制御信号として用いられる。

0144

(a) OFSETフィールド
検索結果のbit[2:11]であり、次に検索するテーブルのオフセットアドレスを示す。オフセット生成器32に与えられる。

0145

(b)BSELフィールド
検索結果のbit[12:15]であり、次に検索するテーブルの変位アドレスを生成するための制御信号である。変位選択器34に与えられ、シフタ出力H117からどのフィールドを取り出すかを制御する。

0146

(c)SHFフィールド
検索結果のbit[20:23]であり、次に検索するテーブルの変位アドレスを生成するための制御信号である。アドレス生成部12の変位シフタ35に与えられ、そのシフト量を制御する。上記BSELと併せて、シフタ出力H117から切り出す任意の8ビットの指定が可能である。

0147

(d)BTSELフィールド
検索結果のbit[24:31]であり、次にアクセスする検索テーブルのオフセットアドレスと変位アドレスを結合するための制御信号である。アドレス結合器36に与えられる。

0148

どの様な可変長符号が与えられた場合に、どの様なデコード結果が与えられるかは、デコード対象データに応じて準備したテーブルの内容に依存する。MPEG2データをデコードする場合を例にとって説明する。

0149

(MPEG2のデコード検索)図21は、MPEG2デコードに使用するデコードテーブルの一覧を示したもので、各テーブルの名称、オフセットアドレス、及び各テーブルでキーワードとして用いる可変長符号のビット位置を示す。可変長符号のビット位置はデコード対象符号の先頭から数えたものであり、即ちシフタ出力H117の先頭から数えたビット位置に相当する。テーブル番号1から10はTable-B14を用いたブロックレイヤのデコード用であり、テーブル番号11から20はTable-B15を用いたブロックレイヤのデコード用である。テーブル番号1、2、及び11は1回目のテーブル検索用デコードテーブルである。これらのキーワードには、必ず可変長符号の先頭から数ビットが用いられる。テーブル番号3〜5、及び12〜15は2回目のテーブル検索用デコードテーブルである。テーブル番号6〜10、及び16〜20は3回目のテーブル検索用デコードテーブルである。

0150

また、図22及び図23は、Table-B14を用いたブロックレイヤにおける最初の可変長符号に用いられる符号化テーブルを示す。図中、Variable length codeはRUN及びLEVELに対応する可変長符号を示し、lengthはその符号長を示す。図22及び図23に示した可変長符号は、最大3回のテーブル検索でデコードを完了する。図中1st、2nd、3rdはそれぞれ1回目、2回目、3回目に検索するデコードテーブルを示している。2回目、あるいは3回目の検索テーブルに"-"を記している符号は、それ以前のテーブル検索でデコードが完了することを示す。また図24及び図25はTable-B14を用いたブロックレイヤにおける2番目以降の可変長符号に対する符号化テーブル、図26及び図27はTable-B15を用いたブロックレイヤにおける2番目以降の可変長符号に対する符号化テーブルである。

0151

VLC処理装置4は、与えられた可変長コードの符号化テーブルに応じて1回目の検索テーブルを選ぶ。例えば、Table-B14を用いたブロックで最初の可変長符号が与えられた場合はB14-1-1が選ばれる。この時アドレス生成部12は、オフセット値ゼロとシフタ出力Hのbit[0:5]を足し合わせたアドレスを生成する。図28は、デコードテーブルB14-1-1の内容を示す。B14-1-1のキーワードは可変長符号のbit[0:5]であり、6ビット以内の可変長符号はB14-1-1のみの検索によりでデコードできる。例えば図22及び図23中のNo.1で示す符号が与えられた場合、s=1ならば検索キーワード(即ち変位アドレス)は110000から111111のいずれかとなり、図28の番号1に示すとおりRUN=0、LEVEL=-1、LENGTH=2とデコード結果が与えられる。s=0の場合は、RUN=0、LEVEL=+1、LENGTH=2となる。これらのデコード結果は図16のフォーマットで与えられる。6ビット以上の可変長符号が与えられた場合は、2回以上のテーブル検索が必要である。例えば図22及び図23中No.8で示す符号が与えられた場合、sの値に関わらず変位アドレスは001001となり、図28中の番号13に示すように次に検索するテーブルとしてB14-2-2が示される。この情報は、図17に示す様なアドレス生成部12の制御コードとして示される。B14-2-2の内容は図29に示すとおりである。s=1の場合、B14-2-2の変位アドレスは1111となり、図29中の番号1に示すとおりRUN=10、LEVEL=-1、LENGTH=9とデコード結果が与えられる。s=0の場合は、変位アドレスは1110となり、図29中の番号2に示すとおりRUN=10、LEVEL=+1、LENGTH=9となる。

0152

ところで、図22及び図23中No.24に示す可変長符号、即ちEscapeコードが与えられた場合、テーブルB14-1-1の検索結果は図16フォーマットにてID=10を与える。この時にESC復号器41が出力するデータは、DCT生成部13の説明で示したとおりである。また、図24及び図25のNo.2に示す可変長符号、即ちEOBコードが与えられた場合、テーブルB14-1-2の検索結果は図16フォーマットにてID=01を与える。

0153

(MPEG1のデコード検索)MPEG1のデコードは、MPEG2用のデコードテーブルの一部のみを使って行われる。MPEG1では、全てのブロックはTable-B14のみを使って符号化されている。即ち図22及び図23図24及び図25の符号化テーブルと、図21の番号1〜10のデコードテーブルのみが用いられる。後の処理は、MPEG2と同様である。異なる点は、Escapeコードが与えられたときにESC復号器41が生成するデコード結果のみである。

0154

(DVCのデコード検索)DVCのデコードで使用するデコードテーブルの一覧を図30に示す。また、図31図36はDVCのブロックレイヤに用いられる符号化テーブルを示す。各項目の示す意味は、MPEG2用のテーブルと同じである。

0155

VLC切り出し直後のデコードテーブル検索は、必ずV00-1-1に対して行われる。したがって、オフセットアドレスはゼロ、キーワードはシフタ出力Hのbit[0:5]である。後はMPEG2の場合と同様に処理が行われる。DVCにおいてはESCコードが定義されていないため、ESC復号器41のデコード出力が動作することはない。

0156

<VLCエンコード処理の動作>VLCエンコード処理は、制御レジスタVL_MODEがMPEG2あるいはDVCエンコードに設定されているときに、制御レジスタVL_CNTの処理ビットをセットすることにより開始される。正しく処理を行うためには、処理ビットを起動する前にアドレスレジスタVL_DCTAP、アドレスレジスタVL_STRAPの格納値を設定しておく必要がある。アドレスレジスタVL_DCTAPは、エンコード対象のDCT係数がデータメモリ1のどの領域に格納されているかを指定するものである。アドレスレジスタVL_STRAPは、エンコード結果の可変長符号をデータメモリ1のどの領域に格納するか示すものである。両者ともに64ビットを1ワードとしたワードアドレスで与えられる。

0157

VLC処理装置4はデータメモリ1上に与えられた1ブロックレイヤ分のDCT係数をVLC処理装置4に読み込んだ後、これをエンコードする。エンコードには、DCT係数をRUNとLEVELの2次元データにエンコードする作業と、更にこれを可変長エンコードする作業とがある。1ブロック分のデータの最後には、ブロックの終了を示す可変長符号(EOBコード)が付加される。可変長エンコードにより生成されたデータはVLC処理装置4内で繋ぎ合わされて、64ビットデータ境界に整置された後にデータメモリ1に書き戻される。

0158

図37はVLC処理装置4のエンコード処理を示すフローチャートである。同図に示すように、エンコード処理は、DCT入力処理(S51)、Blockエンコード処理(S52)、及び制御レジスタ更新処理(S53)から構成される。以下にそれぞれの処理内容を説明する。

0159

[DCT入力(S51)]ステップS51で実行されるDCT入力処理は、データメモリ1上に用意されたDCT係数をローカルメモリ7に転送する処理である。データ転送はDMA転送によって行われ(DCT入力DMA)、1回のDCT入力DMAで32個のDCT係数を転送する。入力すべきDCT係数は64個であり、1下位のDCT入力は2回のDCT入力DMA転送によって行われる。DCT入力DMAで参照されるレジスタはアドレスレジスタVL_DCTAPの格納値であり、これは1回のDMA転送が終了する度に更新される。DCT係数をローカルメモリ7から読み出す際のアドレスには、DCTポインタ31の値が用いられる。DCTポインタ31は、DCT入力の最初に初期化され、DCT入力の終了と同時に再び初期化される。

0160

[Blockエンコード(S52)]ステップS52で実行されるBlockエンコード処理は、ローカルメモリ7上に読み込んだDCT係数をRUNとLEVELの2次元データにエンコードし、更にこれを可変長エンコードする処理である。1ブロック分のデータの最後には、ブロックの終了を示す可変長符号(EOBコード)が付加される。可変長エンコードにより生成されたデータはVLC処理装置4内で繋ぎ合わされて、64ビットデータ境界に整置された後にデータメモリ1に書き戻される。

0161

図38はBlockエンコード処理の詳細を示すフローチャートである。図38に示すように、RUNの初期化(S62)、RUNの更新(S63)、DCTリード(S65)、可変長エンコード(S70)、EOB生成(S74)、パック処理(S75)と、幾つかの条件判定により構成される。

0162

同図を参照して、ステップS61で、エンコードにより生成した可変長符号がオーバーフローしないように、パック処理判定処理が実行される。パック処理判定処理は、VLCパック部17がビジー状態(busy)のときは、ステップS61を自己ループしてビジー状態が解消されるまで次の処理を行わない。VLCバッファ部16の保持レジスタ全てにパック処理済みデータが格納されているとき(ready)、VLCパック部17がビジー状態と判断され、ステップSS62に移行する。

0163

ステップS62で、エンコードRUNカウンタ58を初期化するRUN初期化処理が実行される。

0164

次に、ステップS63で、1ブロック分(64個)のDCT係数の処理を完了したか否かのエンコード終了判定処理が実行される。処理を完了していれば(yes)、ステップS74でEOB生成処理を行い、完了していなければ(no)、ステップS65でDCTリード処理を行う。エンコード処理の終了か否かはDCTポインタ31の値により判定される。

0165

ステップS65で実行されるDCTリード処理は、ローカルメモリ7上に転送したDCT係数を読み出す作業である。読み出しの際のアドレスにはDCTポインタ31の値が用いられ、ポストインクリメントされる。読み出したデータはVLC生成部14内のDCT係数レジスタに保持され、符号化DCTセレクタ46により選ばれた値が処理対象のDCT係数となる。

0166

続いて、ステップS66で、処理対象のDCT係数がゼロか否かを判定するDCT判定処理が行われる。すなわち、DCT係数がゼロならばステップS63でエンコードRUNカウンタ58をインクリメントするRUN更新処理を行わせた後、ステップS64のエンコード終了判定処理を実行させ、一方、DCT係数がゼロ以外ならば、ステップS67で可変長エンコード処理を行わせる。このとき、エンコードRUNカウンタ58の値がエンコードすべきRUNであり、DCTリードで読み出した値がエンコードすべきLEVELとなる。

0167

また、ステップS66のDCT判定処理は、MPEG2のイントラブロックにおいて、最初のDCT係数を読み出した場合(MPEG例外)には、DCT係数の値に関わらず再びエンコード終了判定に処理(S64)に移す。この場合はRUN更新処理(S65)を実行させない。即ち、イントラブロックで最初のDCT係数の処理はスキップされる。

0168

ステップS67で実行される可変長エンコード処理では、エンコードRUNカウンタ58の値と処理対象DCT係数からなる2次元データの可変長符号を得る。この時、RUNセレクタ58はエンコードRUNカウンタ58の値を選択し、ABSセレクタ55は求めた絶対値の下位7ビットを選択する。可変長エンコードは2次元データの可変長符号を得るための処理である。

0169

図39は可変長エンコード処理の処理内容を示すフローチャートである。図39に示すように3つの検索処理(オフセット検索(S81)、エスケープ検索(S82)、RUN検索(S83))とVLC生成処理(S84)により実現される。可変長エンコードの詳細は別途説明する。

0170

ステップS67に続いて実行されるステップS68のDVC例外判定処理は、DVCデータのVLCエンコード時の例外判定処理である。この判定処理によって、DVCデータのVLCエンコードで、可変長エンコード処理のRUN検索処理(S83)の検索結果が無効であり、かつエンコードRUNカウンタ58の値がゼロ以外の場合が検出される。ステップS68の例外判定処理によって上記例外に該当すると判定されるとステップS70の可変長エンコード処理に移行する。この時、可変長エンコード処理(S67)で生成した可変長符号は無視される。一方、ステップS68で例外に該当しないと判定されれば、ステップS69のパック処理に移行する。

0171

ステップS69で実行するパック処理は、可変長エンコード処理(S67)で生成した可変長符号を、以前に生成した可変長符号と繋ぎ合わせる。パック処理は図40に示すように、VLCライト処理(S91)、VLC結合処理(S92)、パックデータ生成Sy抵抗ROI(S94)、及びVLC境界判定処理(S93)によって実現される。これらの処理S91〜S94の詳細は、VLCパック部17の説明で述べたとおりである。ステップS69のパック処理が終了するとステップS61に戻る。

0172

パック処理によってVLCバッファ部16に格納されたパック済みVLC109は、DMA転送によりデータメモリ1に転送される。これはVLC出力DMA転送によって実現される。

0173

ステップS70の可変長エンコード処理後に行われるステップSS71のパック処理は、ステップS68のDVC例外判定処理で例外であると判定された場合にのみ実行される。ステップS70の可変長エンコード処理では、エンコードRUNカウンタ58の値から“1”を減じた値とゼロとからなる2次元データの可変長符号を得る。この時、RUNセレクタ58はエンコードRUNカウンタ58から“1”を減じた値を選択し、ABSセレクタ55はゼロを選択する。

0174

そして、ステップS71のパック処理で、ステップSS70の可変長エンコード処理で生成した可変長符号のパック処理が行われる。

0175

ステップS71に続いて実行されるステップS72の可変長エンコード処理では、ゼロと処理対象DCT係数とからなる2次元データの可変長符号を得る。この時、RUNセレクタ58はゼロを選択し、ABSセレクタ55は求めた絶対値の下位7ビットを選択する。

0176

そして、ステップS73のパック処理で、ステップS72の可変長エンコード処理で生成した可変長符号のパック処理が行われた後、ステップS61に戻る。

0177

ステップS74において、ブロックレイヤの終了を示す可変長符号(EOBコード)を生成するEOB生成処理が行われる。ステップS74で生成される符号はエンコード対象の符号化テーブルに規定されており、MPEG2でTabel-B14を使うならば"10"、MPEG2でTable-B15を使う場合とDVCの場合は"0110"である。

0178

そして、ステップS75のパック処理で、ステップS74のEOB生成処理で生成したEOBコードのパック処理が行われて、Blockエンコード処理が終了する。

0179

[制御レジスタ更新(S53)]図37に戻って、ステップS52のBlockエンコード処理を終えると、ステップS53でVLC処理装置4は自らの制御レジスタを更新する。更新対象レジスタは制御レジスタVL_CNTであり、この処理起動ビットがクリアされる。

0180

[可変長エンコード(S67)]可変長エンコード処理は、図39に示すように3つのテーブル検索処理(S81〜S83)とVLC生成処理(S84)とによって実現される。ステップS81で実行されるオフセット検索とステップS83で実行されるRUN検索は、2次元データの可変長符号を得るためのテーブル検索処理であり、ステップS82で実行されるエスケープ検索は上記検索によって得られた結果が正しいか否かを判定するための検索処理である。

0181

ステップS84で実行されるVLC生成処理は、上記テーブル検索の結果に基いて可変長符号とその符号長を生成する処理である。以下にこれらの処理内容を説明する。

0182

(オフセット検索(S81))オフセット検索はエンコードABS103をキーワードとして行われ、RUN検索でアクセスすべきテーブルを調べる。エンコードするデータの符号化テーブルに応じて、以下に示す4つのテーブルのどれかを検索する。

0183

(a) OFS_14D Table-B14を用いたMPEG2ブロックレイヤにおいて、各ブロックで最初の可変長符号を生成する際に用いる。
(b) OFS_14A Table-B14を用いたMPEG2ブロックレイヤにおいて、各ブロックで2番め以降の可変長符号を生成する際に用いる。
(c) OFS_15 Table-B15を用いたMPEG2ブロックレイヤにおいて可変長符号を生成する場合に用いる。
(d) OFS_DVCDVCブロックレイヤの可変長符号を生成する場合に用いる。

0184

オフセット検索の検索キーワードはVLC生成部14の出力するエンコードABS103である。アドレス生成部12は検索キーワードと所定のオフセットテーブルに対応するオフセットを加えて検索アドレスを生成する。より具体的にいうと、エンコードABS103の下位6ビットと、オフセット生成器32の出力するオフセット値の上位4ビットを結合する。各オフセットテーブルのオフセット値は、予めオフセット生成器32内に設定されている。

0185

オフセット検索結果のデータフォーマットは図18に示すとおりであり、これは基本的にデコード検索のデータフォーマット図17と同じである。OFFSETフィールドはRUN検索でアクセスするテーブルのオフセットを示す。BTSELフィールドはそのテーブルをアクセスする際の条件、即ち変位アドレスのサイズを示す。RUN検索ではBSELフィールドとSHFフィールドを操作する必要がないため、両フィールドはゼロに固定されている。

0186

(RUN検索(S83))RUN検索はオフセット検索で調べたテーブルに対して行われ、エンコードABS103とエンコードRUN104からなる2次元データの可変長符号を与える。検索キーワードはVLC生成部14の出力するエンコードRUN104の一部である。検索対象のRUNテーブル毎にエンコードRUN104のどこをキーワードに用いるか決まっており、オフセット検索結果のBTSELフィールドがこれを示す。アドレス生成部12は、オフセット検索結果のOFFSETフィールドとBTSELフィールドとに基いてRUN検索用アドレスを生成する。変位選択器34はエンコードRUN104を選択し、変位シフタ35は何も処理しない。

0187

RUN検索結果のデータフォーマットは図20に示すとおりであり、エンコード対象2次元データの可変長符号化データとそのビット長を得ることができる。可変長符号化データはテーブル検索結果のbit8〜bit31に左詰で格納されており、bit3〜bit7のLENGTHフィールドがその有効ビット長を示す。

0188

(エスケープ検索(S82))エスケープ検索はエンコードABS103とエンコードRUN104とからなる2次元データの可変長符号が、RUN検索によって得られるか否かを判定する。エンコードするデータに応じて次のどちらかを検索する。

0189

(a)ESC_MPEG MPEG2データのエンコード時
(b) ESC_DVCDVCデータのエンコード時
エスケープ検索の検索キーワードはVLC生成部14の出力するエンコードABS103の下位6ビットである。アドレス生成部12は検索キーワードに所定のエスケープテーブルに対応するオフセットを加えて検索アドレスを生成する。各エスケープテーブルに対応するオフセットアドレスは、予めオフセット生成器32内に設定されている。

0190

ESC検索結果のデータフォーマットは図19に示すとおりである。検索結果のbit0〜bit31は、エンコードRUN104の一部であるRUNセレクタ58出力値の0〜31に対応している。エスケープ検索結果のあるビットに1がセットされていれば、そのビットに対応するエンコードRUN104とキーワードに使われたエンコードABS103の組み合わせによる2次元データは、RUN検索によって可変長符号化可能であることを示す。つまりRUN検索の結果は有効である。エスケープ検索結果において、エンコードRUN104に対応するビットがセットされていなければ、これはRUN検索結果が無効であることを示している。

0191

(VLC生成(S84))エスケープ検索の結果とRUN検索の結果に基いて、対象とする2次元データの可変長符号を生成する。この処理はVLC生成部14が行う。生成された可変長符号はVLC生成器61のエンコードVLC119として得られ、生成した符号の符号長はエンコードビット長118として得られる。

0192

エスケープ検索結果がRUN検索の結果が有効であることを示した場合、VLC生成器61はRUN検索結果のLENGTHフィールドをエンコードビット長118として、同じく可変長符号化データフィールドをエンコードVLC119として出力する。一方、エスケープ検索結果がRUN検索の結果が無効であると示した場合、VLC生成器61はESC符号器62の生成した値をエンコードビット長118、エンコードVLC119として出力する。

0193

ところで、オフセット検索とエスケープ検索のいずれにおいても、キーワードとして使われるのはエンコードABSの下位6ビットのみである。したがって、これらの検索でキーワードとして使われなかった部分に有効なビットが含まれていたならば、つまりエンコードABSが64以上ならば、これらの検索そのものの正当性が失われることになる。この場合は、エスケープ検索の値に関わらずRUN検索の結果は無効として扱われる。また、エスケープ検索ではRUNセレクタ58の値0〜31についてのみ判定を行っている。したがって、RUNセレクタ58の値が32以上の場合はエスケープ検索の結果は正しくない。よってこの場合も、RUN検索の結果は無効として扱われる。

0194

(MPEG2の可変長エンコード例)ここで、MPEG2について可変長エンコード処理の一例を説明する。図41はMPEG2エンコードの検索テーブル一覧である。テーブル番号1〜3はオフセット検索テーブル、テーブル番号4はエスケープ検索テーブル、テーブル番号5〜85はRUN検索テーブルである。図42はオフセットテーブルの一例として、OFS_14Aの一部の内容を示す。図43はエスケープテーブルESC_MPEGの一部の内容を示す。図44はRUNテーブルの一例として、RUN_03B14の一部の内容を示す。これらのテーブル中で“無効”と記したものは、その検索結果が最終的に無視されるため、どの様な値であっても構わないということを示している。

0195

Table-B14を使ったMPEG2ブロックにおいて、RUN=4、LEVEL=-3の2次元データを可変長エンコードする場合を考える。また、この可変長エンコードは当該ブロックで2回目以降であるものとする。この場合、エンコードABSには3が出力され、オフセット検索はRUN検索用テーブルとしてRUN_03B14を示し、エスケープ検索の結果は0xfe000000となる。RUNの値(エンコードRUNカウンタ58の値)が4であり、LEVEL(符号化DCTセレクタ46の出力)が負の値であるため、エンコードRUNには9が出力される。これをキーワードとしたRUN検索の結果は、可変長符号として2進数“0000_0001_0010_1”、符号長として13が与えられる。エスケープ検索結果のRUNに対応するビット(即ちbit[4])に1がセットされており、かつエンコードABSが64未満であるためRUN検索の結果は有効である。よって、VLC生成においてはRUN検索の結果が採用される。この結果は、図24及び図25の符号化テーブルのNo.47とよく一致する。

0196

このシチュエーションでRUNの値が16ならば、エスケープ検索結果において対応するビット(bit[16])がセットされていないため、RUN検索の結果は無効である。よってVLC生成器61はESC符号器62の出力を選択する。この時ESC符号器62は、可変長符号として2進数“0000_0101_0000_1111_1111_1101”、符号長として24を与える。

0197

また同じシチュエーションでRUN=4、LEVEL=-67の場合を考える。この時、3つのテーブル検索結果はRUN=4、LEVEL=-3の場合と同じ結果となる。しかしながらエンコードABSの値は67となり、これは64以上である。したがってエスケープ検索の結果に関わらず、VLC生成器61はESC符号器62の出力を選択する。この時ESC符号器62は、可変長符号として2進数“0000_0101_0000_1111_1011_1101”、符号長として24を与える。

0198

(DVCの可変長エンコード例)図45はDVCエンコードで使用する検索テーブルの一覧を示す。テーブル番号1はオフセット検索テーブル、テーブル番号2はエスケープ検索テーブル、テーブル番号3〜66はRUN検索テーブルである。図46はOFS_DVCの一部を、図47はESC_DVCの一部をそれぞれ示し、図48図49及び図50はRUNテーブルの例としてRUN_00DVC、RUN_03DVC、及びRUN_13DVCの一部をそれぞれ示す。

0199

DVCブロックにおいて、RUN=4、LEVEL=-3の2次元データを可変長エンコードする場合を考える。この場合、エンコードABSには3が出力され、オフセット検索はRUN検索用テーブルとしてRUN_03DVCを示し、エスケープ検索の結果は0xff800000となる。RUNの値(エンコードRUNカウンタ58の値)が4であり、LEVEL(符号化DCTセレクタ46の出力)が負の値であるため、エンコードRUNには9が出力される。これをキーワードとしたRUN検索の結果は、可変長符号として2進数“1111_0011_11”、符号長として10が与えられる。エスケープ検索結果のRUNに対応するビット(即ちbit[4])に1がセットされており、かつエンコードABSが64未満であるためRUN検索の結果は有効である。よって、VLC生成においてはRUN検索の結果が採用される。この結果は、図31図36の符号化テーブルのNo.46とよく一致する。

0200

次に、RUN=4、LEVEL=-13の場合について考える。この時エスケープ検索結果は0xc0000000となり、RUNと対応するビット(bit[4])はセットされていない。またRUNの値がゼロでないためDVC例外判定が真となり、更に2回の可変長エンコードが行われる。始めの可変長エンコードではエンコードABSにゼロが出力され、オフセット検索の結果はRUN_00DVC、エスケープ検索の結果は“0xffffffff”となる。RUNセレクタ58の値は3となり、エンコードRUNには7が出力される。したがってRUN検索の結果は、可変長符号として2進数“1111_1010_1101”を、LEBGTHとして12を与える。エスケープ検索結果のbit[3]には1がセットされているため、このRUN検索結果は有効である。次の可変長エンコードではエンコードABSにLEVELの絶対値13が出力され、エンコードRUNには1が出力される。この場合、オフセット検索の結果はRUN_13DVC、エスケープ検索の結果は0xc0000000となる。RUN検索の結果は、可変長符号として2進数“1110_1011_1”、LENGTHとして9を与える。エンコードRUNに対応するbit[0]に1がセットされているため、このRUN検索結果は有効である。

0201

次に、RUN=0、LEVEL=-128の場合について考える。この場合、エンコードABSが64以上となり、全てのテーブル検索結果は無効である。ただし、RUNの値がゼロのためDVC例外判定はである。VLC生成器61はESC符号器62の出力を選択し、ESC符号器62は可変長符号として2進数“1111_1111_0000_0001”、符号長として16を出力する。

0202

最後にRUN=33、LEVEL=-128の場合を考える。この場合は、全てのテーブル検索は無効であり、かつDCT例外判定も真である。よって引き続き2回の可変長エンコードを行う。始めの可変長エンコードでは、エンコードABSはゼロ、エンコードRUNは32である。エンコードRUNが32以上のためRUN検索は無効であり、VLC生成器61はESC符号器62の出力を選択する。ESC符号器62は、可変長符号として2進数“1111_1101_0000_0”、符号長として13を与える。次の可変長エンコードでは、エンコードABSは128、エンコードRUNは0となる。エンコードABSが64以上のためこの場合もRUN検索は無効であり、VLC生成器61はESC符号器62の出力を選択する。ESC符号器62は、可変長符号として2進数“1111_1111_0000_0001”、符号長として16を出力する。”

発明の効果

0203

以上説明したように、この発明における請求項1記載の可変長符号処理装置において、第1の記憶部は対象とする可変長符号の符号化規格に応じた可変長符号処理を実行する際の参照情報となる可変長符号処理用情報が格納可能であり、第2の記憶部は対象とする可変長符号の符号化規格を示す符号化規格情報が格納可能であり、可変長符号処理実行部は、符号化規格情報及び可変長符号処理用情報を参照して可変長符号処理を行っている。

0204

したがって、対象とする可変長符号の符号化規格に応じて第1の記憶部の可変長符号処理用情報及び第2の記憶部の符号化規格情報を書き込むことにより、複数の符号化規格のうち所望の符号化規格で可変長符号処理を行うことができる。

0205

請求項2記載の可変長符号処理装置における可変長符号処理実行部は、外部より付与される可変長符号を復号する復号化処理を行う可変長復号部を含むため、複数の符号化規格のうち所望の符号化規格で復号化処理を行うことができる。

0206

請求項3記載の可変長符号処理装置における可変長復号部は、2次元符号を可変長符号化した第1の符号を復号する場合は第1の項目データが示す個数のゼロを出力した後に第2の項目データの示す値を出力し、可変長符号の境界を示す第2の符号を復号する場合は出力データ計数器が所定の値を示すまでゼロを出力して復号データを出力するため、上記性質を有する第1及び第2の符号それぞれに対する復号化処理を可変長復号部によって行うことができる。

0207

請求項4記載の可変長符号処理装置の可変長復号部は、復号データがゼロ以外の値を出力する場合、当該復号データの有効領域を指示する復号データ第1情報を第3の記憶部に書き込む。

0208

したがって、復号データに対して所定の処理を行う際に、復号データ有効領域情報に基づき復号データの有効領域のみを処理対象とすることにより、復号データに対して効率的に所定の処理を行うことができる。

0209

請求項5記載の可変長符号処理装置の可変長復号部は、第2の符号を復号して復号データを出力するときに、出力データ計数器の値を指示する復号データ有効ビット終了情報に第3の記憶部に書き込む。

0210

したがって、復号データに対して所定の処理を行う際に、復号データ有効ビット終了情報の指示するビット以降の復号データのデータビットを無視することにより、復号データに対して効率的に所定の処理を行うことができる。

0211

請求項6記載の可変長符号処理装置における可変長符号処理実行部は、外部より付与される符号化対象データを可変長符号化する可変長符号化処理を行う可変長符号化部を含むため、複数の符号化規格のうち所望の符号化規格で可変長符号化処理を行うことができる。

0212

請求項7記載の可変長符号処理装置の可変長符号化部は、符号化対象データを第1及び第2の項目データからなる2次元符号を生成する2次元符号化部と、2次元符号を可変長符号化して可変長符号を生成する可変長符号生成部とを有することにより、符号化対象データを2次元符号化した後、可変長符号化した可変長符号を得ることができる。

0213

請求項8記載の可変長符号処理装置の可変長符号結合部は、外部から順次付与される外部符号を結合対象として、第1のサイズの結合済み可変長符号を出力することが可能であるため、可変長符号結合部の機能を可変長符号処理装置の外部から利用することができる。

0214

請求項9記載の可変長符号処理装置において、可変長符号化部は、処理内容情報が符号化処理を指示するときアドレス生成部で生成されるアドレスに基づき第1の記憶部にアクセスして符号化処理を行い、可変長復号部は、処理内容情報が復号化処理を指示するときアドレス生成部で生成されるアドレスに基づき第1の記憶部にアクセスして復号化処理を行っている。

0215

したがって、対象とする可変長符号の符号化規格及び処理内容に応じて第1の記憶部の可変長符号処理用情報並びに第2の記憶部の符号化規格情報及び処理内容情報を書き込むことにより、複数の符号化規格のうち所望の符号化規格で復号化処理あるいは可変長符号化処理を行うことができる。

0216

この際、第1の記憶部、アドレス生成部及び可変長符号保持部を可変長符号化部と可変長復号部とで共有することにより、そのハードウェア構成の簡略化を図っている。

図面の簡単な説明

0217

図1この発明の実施の形態であるVLC処理装置を使ったシステム構成を示すブロック図である。
図2この発明の実施の形態であるVLC処理装置の構成を示すブロック図である。
図3図2の第2DCTバッファ部の内部構成を示すブロック図である。
図4図2のアドレス生成部の内部構成を示すブロック図である。
図5図2のDCT生成部の内部構成を示すブロック図である。
図6図2のVLC生成部の内部構成を示すブロック図である。
図7図2のシフタ部の内部構成を示すブロック図である。
図8図2のVLCバッファ部の内部構成を示すブロック図である。
図9図2のVLCパック部の内部構成を示すブロック図である。
図10VLCパック部のパック処理動作を示す説明図である。
図11VLCパック部のパック処理動作を示す説明図である。
図12VLCデコード処理の内容を示すフローチャートである。
図13VLC入力処理の内容を示すフローチャートである。
図14Blockデコード処理の内容を示すフローチャートである。
図15可変量デコード処理の内容を示すフローチャートである。
図16デコードテーブル検索結果のデータフォーマットを示す説明図である。
図17デコードテーブル検索結果のデータフォーマットを示す説明図である。
図18エンコード検索結果のデータフォーマットを示す説明図である。
図19エンコード検索結果のデータフォーマットを示す説明図である。
図20エンコード検索結果のデータフォーマットを示す説明図である。
図21MPEG2のVLCデコード処理に使用するデコードテーブルの一覧を示す図である。
図22MPEG2でTable−B14を使用したブロックレイヤにおいて、最初の可変長符号に適用される符号化規則を示した図である。
図23MPEG2でTable−B14を使用したブロックレイヤにおいて、最初の可変長符号に適用される符号化規則を示した図である。
図24MPEG2でTable−B14を使用したブロックレイヤにおいて、2番目以降の可変長符号に適用される符号化規則を示した図である。
図25MPEG2でTable−B14を使用したブロックレイヤにおいて、2番目以降の可変長符号に適用される符号化規則を示した図である。
図26MPEG2でTable−B15を使用したブロックレイヤにおいて、2番目以降の可変長符号に適用される符号化規則を示した図である。
図27MPEG2でTable−B15を使用したブロックレイヤにおいて、2番目以降の可変長符号に適用される符号化規則を示した図である。
図28MPEG2のVLCデコードで使用するテーブルB14-1-1に記載されている内容を示した図である。
図29MPEG2のVLCデコードで使用するテーブルB14-2-2に記載されている内容を示した図である。
図30DVCのVLCデコード処理に使用するデコードテーブルの一覧を示した図である。
図31DVCのブロックレイヤにおいて適用される符号化規則を示した図である。
図32DVCのブロックレイヤにおいて適用される符号化規則を示した図である。
図33DVCのブロックレイヤにおいて適用される符号化規則を示した図である。
図34DVCのブロックレイヤにおいて適用される符号化規則を示した図である。
図35DVCのブロックレイヤにおいて適用される符号化規則を示した図である。
図36DVCのブロックレイヤにおいて適用される符号化規則を示した図である。
図37VLCエンコード処理の内容を示すフローチャートである。
図38Blockエンコード処理の内容を示すフローチャートである。
図39可変長エンコード処理の内容を示すフローチャートである。
図40パック処理の内容を示すフローチャートである。
図41MPEG2のVLCエンコード処理に使用するテーブルの一覧を示した図である。
図42MPEG2のVLCエンコード処理に必要なテーブル検索の一つ、オフセット検索で使用するテーブルの内容を、テーブル名OFS_14Aを例に示した図である。
図43MPEG2のVLCエンコード処理時に必要なテーブル検索の一つ、エスケープ検索で使用するテーブルESC_MPEGの内容を示した図である。
図44MPEG2のVLCエンコード処理時に必要なテーブル検索の一つ、RUN検索で使用するテーブルの内容を、テーブル名RUN_03B14を例に示した図である。
図45DVCのVLCエンコード処理に使用するテーブルの一覧を示した図である。
図46DVCのVLCエンコード処理時に必要なテーブル検索の一つ、オフセット検索で使用するテーブルOFS_DVCの内容を示した図である。
図47DVCのVLCエンコード処理時に必要なテーブル検索の一つ、エスケープ検索で使用するテーブルESC_DVCの内容を示した図である。
図48DVCのVLCエンコード処理時に必要なテーブル検索の一つ、RUN検索で使用するテーブルRUN_00DVCの内容を示した図である。
図49DVCのVLCエンコード処理時に必要なテーブル検索の一つ、RUN検索で使用するテーブルRUN_03DVCの内容を示した図である。
図50DVCのVLCエンコード処理時に必要なテーブル検索の一つ、RUN検索で使用するテーブルRUN_13DVCの内容を示した図である。

--

0218

4 VLC処理装置、5シーケンス制御部、6バスインターフェイス部、7ローカルメモリ、11 第2DCTバッファ部、12アドレス生成部、13 DCT生成部、14 VLC生成部、15シフタ部、16 VLCバッファ部、17 VLCパック部、18ライトセレクタ、101 DBF出力B、101 DBF入力B、103エンコードABS、104 エンコードRUN、105 VBF出力S、106 VBF入力B 107 VBF出力B、108 パック対象VLC、109パック済みVLC、110 DBF出力M、111直接ライトデータ、112デコードDCT(DCT係数)、113アドレス、114リードデータ、115 ライトデータ、116 シフタ出力L、117 シフタ出力H、118 エンコードビット長、119 エンコードVLC。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 株式会社東芝の「 AD変換回路」が 公開されました。( 2020/09/24)

    【課題】一つの実施形態は、信号に含まれる誤差を低減できるAD変換回路を提供することを目的とする。【解決手段】一つの実施形態によれば、AD変換回路の第1のΔΣ変換回路において、第1の量子化器は、1.5ビ... 詳細

  • 株式会社デンソーの「 データ圧縮方法、データ圧縮装置」が 公開されました。( 2020/09/24)

    【課題】データを可逆的且つ効率よく圧縮することができるデータ圧縮方法、データ圧縮装置を提供する。【解決手段】実施形態のデータ圧縮方法は、文字および数字の少なくとも一方を含むデータを圧縮するものであって... 詳細

  • シャープ株式会社の「 画像スケーリング変換、逆変換装置及び方法」が 公開されました。( 2020/09/24)

    【課題】画質の低下を抑制可能な画像処理装置を実現する。【解決手段】画素スケーリング階調変換部(51)は、入力画像の各画素値にオフセットを加算又は減算したうえでスケーリングすることによりスケーリング済画... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ