JP2010200281A - 復号装置、及びプログラム - Google Patents

復号装置、及びプログラム Download PDF

Info

Publication number
JP2010200281A
JP2010200281A JP2009046107A JP2009046107A JP2010200281A JP 2010200281 A JP2010200281 A JP 2010200281A JP 2009046107 A JP2009046107 A JP 2009046107A JP 2009046107 A JP2009046107 A JP 2009046107A JP 2010200281 A JP2010200281 A JP 2010200281A
Authority
JP
Japan
Prior art keywords
counter
suffix
detection unit
separator
prefix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009046107A
Other languages
English (en)
Inventor
Shuhei Iwade
秀平 岩出
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Josho Gakuen Educational Foundation
Original Assignee
Josho Gakuen Educational Foundation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Josho Gakuen Educational Foundation filed Critical Josho Gakuen Educational Foundation
Priority to JP2009046107A priority Critical patent/JP2010200281A/ja
Publication of JP2010200281A publication Critical patent/JP2010200281A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】指数ゴロム符号を復号する復号装置を提供する。
【解決手段】入力される指数ゴロム符号のセパレータ「1」を検出する第1の検出部11、セパレータの検出までのプリフィックスの0の数をカウントアップし、セパレータの検出後のサフィックスの符号の数を、カウントアップ後のカウント値からカウントダウンするカウンタ12、サフィックスの全符号のカウントダウンの終了を検出する第2の検出部14、カウントアップ後のプリフィックスの0の数(=n)を用いて2−1を計算する計算部18、セパレータの検出からカウントダウンの終了の検出まで、サフィックスの符号列を読み込む読み込み部16、計算結果と読み込まれた符号列とを加算した復号結果を出力する加算器20を備え、カウンタ12は、カウントダウンの終了の検出後、次のプリフィックスの0の数のカウントアップを開始する。
【選択図】図1

Description

本発明は、指数ゴロム符号を復号する復号装置等に関する。
画像圧縮技術の一つであるH.264/AVCでは、基本的なシンタックス要素の符号化に指数ゴロム符号を用いている。その指数ゴロム符号は、次に示すように、プリフィックス(Prefix)、セパレータ(Separator)、サフィックス(Suffix)を有し、プリフィックスとサフィックスとのビット数は等しくなっている。また、プリフィックスは、0個以上の0を有する。なお、プリフィックスが接頭辞と呼ばれることもあり、セパレータが分離記号と呼ばれることもあり、サフィックスが接尾辞と呼ばれることもある。
指数ゴロム符号 符号番号
1 0
0 1 0 1
0 1 1 2
0 0 1 0 0 3
0 0 1 0 1 4
0 0 1 1 0 5
0 0 1 1 1 6
0 0 0 1 0 0 0 7
0 0 0 1 0 0 1 8
: : : : : : : :
: : : : : : : :
プリフィックス S サフィックス
なお、「S」はセパレータを示している。
指数ゴロム符号を復号した符号番号は、プリフィックスにおける0の個数を「n」として、サフィックスの値を「m」とすると次のようになる。なお、プリフィックス及びサフィックスに符号が存在しない場合には、サフィックスの値は0であるとする(すなわち、m=0)。
符号番号=2−1+m
このような指数ゴロム符号の復号を行う種々の方法が知られている(例えば、特許文献1参照)。
特開2006−254225号公報
しかしながら、従来の特許文献1の技術では、指数ゴロム符号のビットストリームをバッファ回路に読み込んでプリフィックスの0の個数をカウントするなどの処理を行っていたため、そのバッファ回路が必須であり、また、複雑な制御を行うため、多くの回路が必要であり、それだけ回路規模が大きくなっていた。また、指数ゴロム符号の一部をバッファ回路に読み込んでから処理を行うため、指数ゴロム符号のビットストリームについて処理を行うためには、そのバッファよりも前段に他の記憶手段を設けるか、あるいは、バッファ回路に読み込まれた符号列を、指数ゴロム符号のビットストリームのビットレートよりもよほど高速なレートで処理する必要がある。前者の場合には、さらに回路規模が増大することとなり、後者の場合には、それだけ消費電力が大きくなる(消費電力はクロック周波数に比例するため)。
本発明は、上記課題を解決するためになされたものであり、使用するメモリ容量を削減することができると共に、リアルタイム処理を行うことができる指数ゴロム符号の復号装置等を提供することを目的とする。
上記目的を達成するため、本発明による復号装置は、0個以上の0の連続であるプリフィックスと、当該プリフィックスに続く1であるセパレータと、当該セパレータに続く、前記プリフィックスの0と同数の0または1の符号列であるサフィックスとを有する指数ゴロム符号が順次入力され、当該指数ゴロム符号を復号する復号装置であって、指数ゴロム符号のセパレータを検出する第1の検出部と、前記第1の検出部がセパレータを検出するまでのプリフィックスにおける0の個数をカウントアップし、前記第1の検出部がセパレータを検出した後のサフィックスにおける0及び1の符号の個数を、カウントアップした結果のカウント値からカウントダウンするカウンタと、前記カウンタがサフィックスにおけるすべての符号のカウントダウンを終了したことを検出する第2の検出部と、前記カウンタがカウントアップしたプリフィックスにおける0の個数(この個数をnとする)を用いて、2−1を計算する計算部と、前記第1の検出部がセパレータを検出してから前記第2の検出部がカウントダウンの終了を検出するまで、指数ゴロム符号のサフィックスの符号列を読み込む読み込み部と、前記計算部の計算結果と、前記読み込み部が読み込んだサフィックスの符号列とを加算し、その加算結果である指数ゴロム符号の復号結果を出力する加算器と、を備え、前記カウンタは、前記第2の検出部がカウントダウンの終了を検出すると、次の指数ゴロム符号のプリフィックスにおける0の個数のカウントアップを開始する、ものである。
このような構成により、特許文献1に記載されているような指数ゴロム符号のビットストリームの一部を記憶させるバッファ回路が不要となる。したがって、使用するメモリ容量を削減することができる。その結果、この復号装置を論理回路のハードウェアとして構成した場合に、回路規模を縮小させることができる。また、このような構成によって、リアルタイム処理も実現することができる。
また、本発明による復号装置において、前記第1の検出部がセパレータを検出するまで、前記カウンタがカウントアップするごとにカウント値をホールドするカウンタホールドと、前記第2の検出部がカウントダウンの終了を検出したことに応じて、前記計算部の計算値である計算結果をホールドする計算値ホールドと、前記第2の検出部がカウントダウンの終了を検出したことに応じて、前記読み込み部が読み込んだ読み込み値であるサフィックスの符号列をホールドする読み込み値ホールドと、前記第2の検出部によるカウントダウンの終了の検出時点を所定の期間だけ遅延させた時点である前記読み込み値ホールドによる符号列のホールド後の時点に前記読み込み部の読み込み値をリセットする遅延部と、をさらに備え、前記計算部は、前記カウンタホールドがホールドしたカウント値(n)を用いて前記計算を行い、前記加算器は、前記計算値ホールドがホールドした計算結果と、前記読み込み値ホールドがホールドしたサフィックスの符号列とを加算してもよい。
このような構成により、カウント値や読み込み値等を適切にホールドすることができ、そのホールドした値を用いて復号処理を行うことができる。
本発明による復号装置等によれば、指数ゴロム符号を復号する際に、使用するメモリ容量を削減することができると共に、リアルタイム処理を行うことができるようになる。
本発明の実施の形態1による復号装置の構成を示すブロック図 同実施の形態による復号装置のさらに詳細な構成の一例を示す図 同実施の形態における信号の変化の一例を示すタイミングチャート
以下、本発明による復号装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素は同一または相当するものであり、再度の説明を省略することがある。
(実施の形態1)
本発明の実施の形態1による復号装置について、図面を参照しながら説明する。本実施の形態による復号装置は、指数ゴロム符号の復号を行うものである。
図1は、本実施の形態による復号装置1の構成を示すブロック図である。本実施の形態による復号装置1は、第1の検出部11と、カウンタ12と、カウンタホールド13と、第2の検出部14と、遅延部15と、読み込み部16と、読み込み値ホールド17と、計算部18と、計算値ホールド19と、加算器20とを備える。
なお、この復号装置1には、指数ゴロム符号が順次入力され、その指数ゴロム符号が順次復号されるものとする。その指数ゴロム符号は、前述のように、0個以上の0の連続であるプリフィックスと、そのプリフィックスに続く1であるセパレータと、そのセパレータに続く、プリフィックスの0と同数の0または1の符号列であるサフィックスとを有するものである。本実施の形態では、指数ゴロム符号のビットストリームが復号装置1に入力される場合について説明を行うが、そうでなくてもよい。例えば、復号装置1は、記録媒体等において記憶されている指数ゴロム符号を順次、読み出しながら復号処理を行ってもよい。
第1の検出部11は、指数ゴロム符号のセパレータを検出する。具体的には、指数ゴロム符号のビットストリーム(BS)において、プリフィックスの0が順次、入力されてきている際に、セパレータの「1」が入力されると、そのことを検出する。そして、第1の検出部11は、セパレータを検出すると、その旨をカウンタ12、カウンタホールド13、第2の検出部14、読み込み部16に渡す。具体的には、第1の検出部11は、セパレータを検出すると、カウンタ12、及びカウンタホールド13に出力しているup_down信号を「1」から「0」にする。なお、up_down信号は、指数ゴロム符号のプリフィックスが入力されている際には「1」となり、サフィックスが入力されている際には「0」となる信号である。また、第1の検出部11は、セパレータを検出すると、第2の検出部14、及び読み込み部16に出力しているshift_enable信号を「0」から「1」にする。なお、shift_enable信号は、指数ゴロム符号のプリフィックスが入力されている際には「0」となり、サフィックスが入力されている際には「1」となる信号である。このように、shift_enable信号は、up_down信号を反転させた信号である。また、第1の検出部11は、後述する第2の検出部14によって、サフィックスの入力の終了が検出された際に、up_down信号を「0」から「1」にすると共に、shift_enable信号を「1」から「0」にする。第2の検出部14がサフィックスの入力の終了を検出した旨は、第2の検出部14が出力するrst_s信号が「1」から「0」になったことによって知ることができる。
カウンタ12は、第1の検出部11がセパレータを検出するまでのプリフィックスにおける0の個数をカウントアップし、第1の検出部11がセパレータを検出した後のサフィックスにおける0及び1の符号の個数を、カウントアップした結果のカウント値からカウントダウンする。すなわち、プリフィックスの符号が入力されている場合に、第1の検出部11がセパレータを検出するまで、カウンタ12は、符号(=0)が入力されるごとにカウント値をカウントアップする。また、サフィックスの符号が入力されている場合に、後述する第2の検出部14がカウントダウンの終了を検出するまで、カウンタ12は、符号(=0または1)が入力されるごとにカウント値をカウントダウンする。また、カウンタ12は、後述する第2の検出部14がカウントダウンの終了を検出すると、次の指数ゴロム符号のプリフィックスにおける0の個数のカウントアップを開始する。このように、カウンタ12は、指数ゴロム符号が入力されるごとに、プリフィックスでは0ごとにカウントアップを行い、サフィックスでは0及び1の符号ごとにカウントダウンを行う。したがって、このカウント値が所定の値となった場合に、サフィックスが終了したことを知ることができる。その検出を行うのが後述する第2の検出部14である。具体的には、カウンタ12は、up_down信号が「1」の場合、すなわち、プリフィックスの符号が入力されている場合には、クロック(CLK)ごとにカウント値を「1」だけインクリメントする。また、カウンタ12は、up_down信号が「0」の場合、すなわち、サフィックスの符号が入力されている場合には、クロックごとにカウント値を「1」だけデクリメントする。また、カウンタ12は、後述する第2の検出部14がサフィックスの入力の終了を検出した場合に、カウント値を「0」にリセットする。第2の検出部14がサフィックスの入力の終了を検出した旨は、第2の検出部14が出力するrst_s信号が「1」から「0」になったことによって知ることができる。なお、指数ゴロム符号のビットストリームのビットレートと、クロックの周波数とが同期していることは当然である。
カウンタホールド13は、カウンタ12によってカウントアップされたプリフィックスの0の個数をホールドする。その方法は問わないが、本実施の形態では、up_down信号が「1」の場合には、クロックごとにカウンタ12のカウント値をホールドし、up_down信号が「0」の場合には、新たなホールドを行わないことによって、プリフィックスの0の個数がカウンタホールド13によってホールドされる場合について説明する。すなわち、本実施の形態によるカウンタホールド13は、第1の検出部11がセパレータを検出するまで、カウンタ12がカウントアップするごとにカウント値をホールドするものである。
第2の検出部14は、カウンタ12がサフィックスにおけるすべての符号のカウントダウンを終了したことを検出する。具体的には、第2の検出部14は、shift_enable信号が「1」の場合、すなわち、サフィックスの符号が入力されている場合に、カウンタ12のカウント値があらかじめ設定されている値になった時にカウントダウンの終了を検出する。そして、第2の検出部14は、カウントダウンの終了を検出すると、第1の検出部11、カウンタ12、遅延部15、読み込み値ホールド17、計算値ホールド19に出力しているrst_s信号を「1」から「0」にする。なお、そのrst_s信号は、「1」から「0」に変更された後に、再度、「1」に戻るものとする。また、第2の検出部14は、shift_enable信号が「0」の場合、すなわち、プリフィックスの符号が入力されている場合には、その検出の処理を行わないものとする。
遅延部15は、第2の検出部14によるカウントダウンの終了の検出時点を所定の期間だけ遅延させた時点に、後述する読み込み部16の読み込み値をリセットする。そのカウントダウンの終了の検出時点を所定の期間だけ遅延させた時点とは、後述する読み込み値ホールド17による符号列のホールド後の時点のことである。これは、読み込み部16が読み込んだ値を、読み込み値ホールド17がホールドするまで消去しないようにするためである。例えば、遅延部15は、第2の検出部14がカウントダウンの終了を検出すると、その次のクロックのタイミングで、読み込み部16にカウントダウンの終了を伝える。すなわち、遅延部15は、約1クロックの周期だけ遅延させて、読み込み部16にカウントダウンの終了を伝える。より具体的には、遅延部15は、第2の検出部14が出力しているrst_s信号が「1」から「0」になった場合に、その次のクロックのタイミングで読み込み部16に出力しているrst_d信号を「1」から「0」にする。なお、そのrst_d信号は、その次のクロックのタイミングで「0」から「1」に戻るものとする。また、カウントダウンの終了が読み込み部16に伝えられることにより、読み込み部16は、読み込み値のリセットを行うものとする。
読み込み部16は、第1の検出部11がセパレータを検出してから第2の検出部14がカウントダウンの終了を検出するまで、指数ゴロム符号のサフィックスの符号列を読み込む。すなわち、読み込み部16は、サフィックスの符号が入力されている場合に、第2の検出部14がカウントダウンの終了を検出するまで、新たなサフィックスの符号が入力されるごとに、その符号を読み込んでいく。この読み込み部16は、例えば、シフトレジスタによって構成されてもよく、指数ゴロム符号のサフィックスの符号列を適宜、メモリに格納する制御手段によって構成されてもよい。本実施の形態では、前者の場合について説明する。具体的には、読み込み部16は、shift_enable信号が「1」である場合に、クロックごとに入力される指数ゴロム符号を順次、読み込んでいく。その結果、指数ゴロム符号のサフィックスの符号列が読み込み部16によって読み込まれることになる。一方、遅延部15が出力しているrst_d信号が「1」から「0」になると、読み込み部16は、読み込んでいた符号列をリセットして「0」に戻す。そして、次の指数ゴロム符号のサフィックスの符号列の入力に備えることになる。
読み込み値ホールド17は、読み込み部16が読み込んだ指数ゴロム符号のサフィックスの符号列をホールドする。本実施の形態では、読み込み値ホールド17は、第2の検出部14がカウントダウンの終了を検出したことに応じて、読み込み部16の出力をホールドするものとする。「カウントダウンの終了を検出したことに応じて」とは、カウントダウンの終了の検出の直後であってもよい。具体的には、読み込み値ホールド17は、rst_s信号が「0」から「1」に変化する際に、読み込み部16の出力である読み込み値(=サフィックスの符号列)をホールドする。
計算部18は、カウンタ12がカウントアップしたプリフィックスにおける0の個数(この個数をnとする)を用いて、2−1を計算する。具体的には、カウンタホールド13がホールドしたプリフィックスの0の個数を用いて、計算部18は、その計算を行う。また、この計算の方法は問わない。例えば、nの値と、2−1の値との関係は次のようになるため、nの値を入力として、2−1の値を出力とする論理回路を、ハードウェア記述言語を用いて構成してもよい。その場合には、減算器を用いて計算するよりも、より高速に算出することができ、回路規模を削減することができる。
n 2−1
00 000
01 001
10 011
11 111
なお、計算部18による2−1の計算の方法は問わない。例えば、nの値と、2−1の値とを対応付けるテーブル等の情報を用いて2−1の値を算出してもよく、左シフトレジスタや減算器を用いて2−1の値を算出してもよい。
計算値ホールド19は、計算部18が計算した2−1の値である計算値をホールドする。本実施の形態では、計算値ホールド19は、読み込み値ホールド17と同様に、第2の検出部14がカウントダウンの終了を検出したことに応じて、計算部18の出力をホールドするものとする。「カウントダウンの終了を検出したことに応じて」とは、カウントダウンの終了の検出の直後であってもよい。具体的には、計算値ホールド19は、rst_s信号が「0」から「1」に変化する際に、計算部18の出力である2−1の値をホールドする。
加算器20は、計算部18の計算結果と、読み込み部16が読み込んだサフィックスの符号列とを加算し、その加算結果である指数ゴロム符号の復号結果を出力する。加算器20は、一の指数ゴロム符号について、そのプリフィックスの0の個数を用いた計算部18の計算結果と、読み込み部16が読み込んだ、そのサフィックスの符号列とを加算する。具体的には、加算器20は、読み込み値ホールド17がホールドしたサフィックスの符号列と、計算値ホールド19がホールドした2−1の計算結果とを加算して出力する。なお、加算器20の出力は、読み込み値ホールド17がサフィックスの符号列をホールドし、計算値ホールド19が2−1の計算結果をホールドした後に、サンプリングされて取り込まれてもよい。具体的には、rst_s信号が「0」から「1」に変化して符号列等のホールドが行われた後に、加算器20の出力がサンプリングされて取り込まれてもよい。
なお、このようにして、第1の検出部11によって指数ゴロム符号のプリフィックスからサフィックスへの変化が検出され、第2の検出部14によって一の指数ゴロム符号のサフィックスから、その次の指数ゴロム符号のプリフィックスへの変化が検出され、カウンタ12によってプリフィックスの0の個数をカウントし、読み込み部16によってサフィックスの符号列を読み込むことによって、バッファ回路を設けることなく、指数ゴロム符号を復号することができる。また、シンプルな処理によって、指数ゴロム符号の復号を行うことができる。
また、本実施の形態では、各要素のリセットのためにrst信号や、rst_s信号、rst_d信号を用いているが、これらの信号は「1」から「0」になるタイミングで各要素をリセットするものである。
次に、本実施の形態による復号装置1のより詳細な構成の一例について説明する。図2は、本実施の形態による復号装置1のより詳細な構成の一例を示す論理回路図である。
図2において、第1の検出部11は、遅延フリップフロップ11a,11bと、論理素子11c,11dとを備える。遅延フリップフロップ11aは、クロック(CLK)に同期してBSの値を取り込み、その取り込んだ値を論理素子11cに出力する。また、遅延フリップフロップ11aはrst_s信号によってリセットされる。遅延フリップフロップ11bは、論理素子11dの出力に同期して論理素子11cの出力を取り込み、その取り込んだ値であるshift_enable信号と、そのshift_enable信号が反転された信号であるup_down信号とを出力する。論理素子11cは、遅延フリップフロップ11aの出力を反転させるNOT素子と、そのNOT素子の出力とBSとを入力とするAND素子とを有する。論理素子11dは、クロック(CLK)と、遅延フリップフロップ11bの出力であるup_down信号とを入力とするAND素子である。
このような構成により、BSが0から1に変化したタイミングで、論理素子11cの出力は「1」となり、それ以外の場合には、論理素子11cの出力は「0」となる。そして、その論理素子11cの出力が遅延フリップフロップ11bに取り込まれ、shift_enable信号として出力される。ただし、遅延フリップフロップ11bのクロックの入力の前段にAND素子である論理素子11dが存在することにより、一度、up_down信号が「1」から「0」になると、新たなクロックが入力されないことになり、rst_s信号によってリセットされるまで、shift_enable信号=1,up_down信号=0が保持されることになる。rst_s信号によってリセットされると、遅延フリップフロップ11aの論理素子11cへの出力は「0」になり、遅延フリップフロップ11bのshift_enable信号の出力は「0」になり、up_down信号の出力は「1」になる。したがって、第1の検出部11において、プリフィックスでBSが0から1に変化したタイミングで、論理素子11cの出力「1」が遅延フリップフロップ11bに取り込まれ、shift_enable信号が「1」になり、up_down信号が「0」になる。その後は、rst_s信号によってリセットがかけられるまで、そのshift_enable信号等の値は保持されることになる。
カウンタ12は、up_down信号が「1」の場合にはクロック(CLK)に同期してカウントアップを行い、up_down信号が「0」の場合にはクロック(CLK)に同期してカウントダウンを行う。なお、カウントダウンは、カウントアップを行った後のカウント値から行われる。また、rst_s信号によってリセットされると、カウンタ12のカウント値が0になる。また、図2において、カウンタ12の出力は図中上側が上位ビットであり、図中下側が下位ビットである。
選択器21は、初期リセットのためのrst信号と、第2の検出部14の出力とを入力として、そのうちの一方を選択して出力する。この選択器21の出力がrst_s信号である。なお、選択器21は、初期リセットのためにrst信号が「0」になった場合にはrst信号を選択し、その後、rst信号が「1」に戻った場合には、第2の検出部14の出力を選択するものとする。
第2の検出部14は、カウンタ12の最下位ビット以外のビットをそれぞれ反転させる複数のNOT素子14a〜14eと、shift_enable信号とカウンタ12の最下位ビットとNOT素子14a〜14eのそれぞれの出力とを入力とするNAND素子14fとを備える。NAND素子14fには、shift_enable信号が入力されているため、shift_enable信号が「0」の期間、すなわち、プリフィックスの期間は、第2の検出部14の出力は「1」に保たれる。一方、カウンタ12によるカウントダウンが行われる場合、すなわち、shift_enable信号が「1」の場合に、カウンタ12のカウント値が「000001」となると、NAND素子14fの出力は「0」となる。なお、初期リセットのとき以外は選択器21は第2の検出部14の出力を選択するため、NAND素子14fの出力が「0」になると、rst_s信号は「0」となる。そして、rst_s信号が「0」になると、第1の検出部11の遅延フリップフロップ11bがリセットされ、shift_enable信号が「0」になる。その結果、NAND素子14fの出力はすぐに「1」に戻る。このように、図2の具体例では、第2の検出部14は、カウント値が「000001」になった場合に、カウントダウンの終了を検出していることになる。
カウンタホールド13は、up_down信号が「1」の場合、すなわち、カウンタ12がカウントアップを行う場合には、クロック(CLK)に同期してカウンタ12のカウント値をホールドする。一方、up_down信号が「0」の場合には、カウンタホールド13は、カウント値のホールドを行わない。図2では、カウンタホールド13は、第2の検出部14の複数のNOT素子14a〜14eによって反転されたカウンタ12の出力が再度、複数のNOT素子22〜26によって反転されたものを入力とする場合について示しているが、カウンタホールド13は、カウンタ12の出力を直接、入力としてもよい。また、カウンタホールド13は、初期セットの際にのみrst信号によってリセットされる。
遅延部15は、NAND素子15a,15bと、NOT素子15cと、遅延フリップフロップ15dとを備える。NAND素子15aの一方の入力はrst_s信号であり、他方の入力はNAND素子15bの出力である。また、NAND素子15bの一方の入力はNAND素子15aの出力であり、他方の入力は遅延フリップフロップ15dの出力、すなわち、rst_d信号である。NOT素子15cは、NAND素子15aの出力を反転させて遅延フリップフロップ15dに入力する。遅延フリップフロップ15dは、初期セットの際にのみrst信号によってリセットされるものであり、クロック(CLK)に同期してNOT素子15cの出力を取り込み、rst_d信号を出力する。
その図2の論理回路の構成から分かるように、遅延部15は、初期リセットがかけられてrst_s信号が「0」となった際には、rst_d信号が「0」となる。その後に初期リセットが戻されてrst_s信号が「1」になると、次のクロックのタイミングでrst_d信号は「1」になる。その後は、rst_s信号=0になるまで、rst_d信号が「1」に保持される。また、第2の検出部14がカウントダウンの終了を検出してrst_s信号が「0」になり、その後にrst_s信号が「1」に戻ってクロックがかかったタイミングで、rst_d信号は「0」になる。また、次のクロックでrst_d信号は「1」に戻る。その後は、rst_s信号=0になるまで、rst_d信号が「1」に保持される。このようにして、遅延部15は、rst_s信号を約1クロックの周期だけ遅延させたrst_d信号を出力することができる。
読み込み部16は、前述のように、シフトレジスタである。shift_enable信号が「1」の場合には、クロック(CLK)に同期してBSの値を1ビットずつずらしながら読み込み、その読み込んだ値を出力する。一方、shift_enable信号が「0」の場合には、その読み込みを行わない。また、読み込み部16は、rst_d信号によってリセットされる。リセットされると出力が0になる。
読み込み値ホールド17、計算値ホールド19は、それぞれ読み込み部16の出力、計算部18の出力をホールドする。そのホールドは、rst_s信号が「0」から「1」となるタイミングで行われる。すなわち、rst_s信号によってリセットが行われ、その直後に、前述のようにしてrst_s信号が「1」に戻るタイミングで、読み込み値等のホールドが行われる。また、読み込み値ホールド17、及び計算値ホールド19は、初期リセットの際にのみrst信号によってリセットされるものである。リセットされると出力が0になる。
次に、図3を用いて、各信号の変化について説明する。図3は、復号装置1が図2で示される論理回路である場合であって、ビットストリーム(BS)「0011000…」が入力される場合における各信号の変化を示すタイミングチャートである。その入力のはじめの5ビットが一の指数ゴロム符号に対応している。
まず、rst信号が0となり初期リセットがかけられると、選択器21はrst信号を選択するため、rst_s信号は0になる(これについては図3で図示していない)。その結果、up_down信号は1になり、shift_enable信号は0になる。また、カウンタ12のカウント値や、カウンタホールド13、読み込み値ホールド17、計算値ホールド19の出力も0になる。また、shift_enable信号が0であるため、第2の検出部14の出力は1になる。また、遅延部15の出力であるrst_d信号も0となるため、読み込み部16の出力も0となる。また、カウンタホールド13の出力CNT1が0であるため、計算部18の出力PBも0となる。また、読み込み値ホールド17の出力SB1が0であり、計算値ホールド19の出力PB1が0であるため、加算器20の出力GBも0となる。なお、rst信号が0から1に戻るタイミングで、選択器21は、第2の検出部14の出力を選択するため、rst_s信号は1に戻る。
その後、指数ゴロム符号のビットストリーム(BS)が順次入力され、クロックが入力されるごとに、カウンタ12がカウント値を1ずつインクリメントする。また、それに応じて、カウンタホールド13の出力CNT1も1クロックの周期だけ遅れて更新されていく。また、カウンタホールド13の出力CNT1の更新にともなって計算部18の出力PBも更新されるがrst_s信号が「1」のままであるため、計算値ホールド19は、その計算部18の出力PBをホールドしない。また、読み込み部16は、shift_enable信号が0であるため、ビットストリームの値を読み込まない。また、rst_s信号が「1」のままであるため、読み込み値ホールド17も読み込み部16の出力SBをホールドしない。
次に、セパレータの「1」が入力されると、遅延フリップフロップ11aの出力は0であり、ビットストリームの値が1であるため、論理素子11cの出力が0から1になる。そして、遅延フリップフロップ11bは、次のクロックのタイミングで、その1の値を取り込み、shift_enable信号が0から1になり、up_down信号が1から0になる。その結果、カウンタ12は、次のクロックのタイミングからは、カウントダウンを行うようになる。また、カウンタホールド13は、up_down信号が1から0になったタイミングでのカウント値のホールドを行った後は、クロックが入力されても新たなホールドを行わなくなる。また、読み込み部16は、shift_enable信号が0から1になったため、次のクロックのタイミングから、入力されたビットストリームを順次、取り込むことになる。
その後、クロックが入力されるごとに、カウンタ12がカウント値を1ずつデクリメントする。また、読み込み部16も、クロックが入力されるごとに、順次、入力されるビットを読み込んでいく。
そのようにしてカウンタ12のカウント値が「000001」になると、NAND素子14fへの入力がすべて1になるため、NAND素子14fの出力、すなわち、第2の検出部14の出力であるrst_s信号が0になる。その結果、遅延フリップフロップ11a,11bがリセットされてshift_enable信号が1から0になり、up_down信号が0から1になる。また、カウンタ12もリセットされるため、カウンタ12の出力も0になる。なお、rst_s信号は読み込み部16には入力されていないため、読み込み部16はリセットされない。また、カウンタホールド13にはrst_s信号が入力されていないため、カウンタホールド13もリセットされないが、up_down信号が「1」になったため、カウンタホールド13は、次のクロックのタイミングからカウンタ12のカウント値のホールドを再開することになる。
rst_s信号が0になったことによりshift_enable信号が0になり、カウンタ12の出力もすべて0になるため、第2の検出部14の出力であるrst_s信号はすぐに1に戻る。そして、rst_s信号が0から1に戻るタイミングで、読み込み値ホールド17は、読み込み部16の出力SBをホールドする。その結果、サフィックスの符号列が読み込み値ホールド17でホールドされることになる。また、rst_s信号が0から1に戻るタイミングで、計算値ホールド19は、計算部18の出力PBをホールドする。なお、この時点では、カウンタホールド13は、カウンタ12がカウントしたプリフィックスの0の個数をまだホールドしているため、計算値ホールド19は、2−1の値をホールドすることになる。ただし、n(=2)はプリフィックスの0の個数である。また、加算器20は、読み込み値ホールド17の出力SB1と、計算値ホールド19の出力PB1とを加算して出力する。その出力GBは、入力された指数ゴロム符号「00110」に対応する復号結果「5」となる。なお、図2では図示していないが、前述のように、指数ゴロム符号の復号結果が出力されるタイミング、すなわち、rst_s信号が0から1に戻るタイミングをトリガとして、加算器20の出力GBを取り込むようにしてもよい。そのようにすることで、指数ゴロム符号の復号結果を順次、取り込むことができるようになる。
その後、次のクロックが入力されるタイミングから、前述の説明と同様にして、新たな指数ゴロム符号に対するプリフィックスの0の個数のカウント等が開始されることになり、順次、指数ゴロム符号の復号処理が継続されることになる。
なお、図3で示されるタイミングチャートでは、プリフィックスに1以上の0が存在する場合について説明したが、プリフィックスの0が0個である場合、すなわち、プリフィックスが存在しない場合であっても、適切に符号番号「0」を出力できることは、図2の論理回路を参照することによって理解可能である。
また、図2で示される論理回路の場合には、カウンタ12がセパレータの入力時にもカウントアップする構成としたため、第2の検出部14が、カウント値が1になった場合にサフィックスの終了を検出するようにしたが、これは一例であって、例えば、カウンタ12がセパレータの入力時にカウントアップを行わない構成とした場合には、第2の検出部14は、例えば、カウント値が0になった場合にサフィックスの終了を検出してもよい。このように、サフィックスの終了を検出する際のカウント値については任意性があることになる。
以上のように、本実施の形態による復号装置1によれば、前述の特許文献1の復号回路と異なり、バッファ回路を設けることなく指数ゴロム符号の復号処理を実現することができる。したがって、指数ゴロム符号の復号処理で用いられるメモリの容量を削減することができる。その結果、この復号装置1をハードウェアとして構成した場合に、回路規模を削減することができる。また、本実施の形態による復号装置1では、入力される指数ゴロム符号のビットレートに同期したクロックで動作させることによって、リアルタイム処理を実現可能である。したがって、前述の特許文献1と異なり、クロックの周波数を上げることなく、リアルタイム処理を行うことができる。
なお、本実施の形態による復号装置1の具体的な構成として、図2の場合について説明したが、復号装置1の構成が図2に限定されないことはいうまでもない。同様の処理を異なる論理回路によって構成してもよく、同様の目的を異なる構成によって実現してもよい。例えば、読み込み部16が読み込んだサフィックスの符号列を読み込み値ホールド17が適切にホールドできるのであれば、復号装置1は、遅延部15を備えなくてもよい。また、例えば、図2では、読み込み部16が第1の検出部11の出力するshift_enable信号を用いて、入力されている符号がサフィックスからプリフィックスに変化したことを受け取る場合、すなわち、読み込み部16が、第2の検出部14が検出したサフィックスのカウントダウンの終了(すなわち、入力がサフィックスからプリフィックスに変化したこと)を第1の検出部11を経由して受け取る場合について説明したが、そうでなくてもよい。例えば、読み込み部16は、第2の検出部14から直接、入力がサフィックスからプリフィックスに変化したことを受け取り、それに応じて、符号の読み込みを終了するようにしてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる数式等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していない場合であっても、ユーザが適宜、それらの情報を変更できるようにしてもよく、あるいは、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。
また、上記実施の形態において、各構成要素は例えば図2で示されるように専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。なお、上記実施の形態における復号装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、0個以上の0の連続であるプリフィックスと、当該プリフィックスに続く1であるセパレータと、当該セパレータに続く、前記プリフィックスの0と同数の0または1の符号列であるサフィックスとを有する指数ゴロム符号を順次復号する復号装置として機能させるためのプログラムであって、指数ゴロム符号のセパレータを検出する第1の検出部、前記第1の検出部がセパレータを検出するまでのプリフィックスにおける0の個数をカウントアップし、前記第1の検出部がセパレータを検出した後のサフィックスにおける0及び1の符号の個数を、カウントアップした結果のカウント値からカウントダウンするカウンタ、前記カウンタがサフィックスにおけるすべての符号のカウントダウンを終了したことを検出する第2の検出部、前記カウンタがカウントアップしたプリフィックスにおける0の個数(この個数をnとする)を用いて、2−1を計算する計算部、前記第1の検出部がセパレータを検出してから前記第2の検出部がカウントダウンの終了を検出するまで、指数ゴロム符号のサフィックスの符号列を読み込む読み込み部、前記計算部の計算結果と、前記読み込み部が読み込んだサフィックスの符号列とを加算し、その加算結果である指数ゴロム符号の復号結果を出力する加算器、として機能させ、前記カウンタは、前記第2の検出部がカウントダウンの終了を検出すると、次の指数ゴロム符号のプリフィックスにおける0の個数のカウントアップを開始する、ものである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を読み込む読み込み部などにおけるメモリなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。また、上記実施の形態による復号装置1をソフトウェアによって実現する場合には、カウンタ12や、カウンタホールド13、読み込み部16、読み込み値ホールド17、計算値ホールド19におけるデータの記憶は、CPU等がデータを一時記憶メモリ等に蓄積することによって実現されてもよい。
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
以上より、本発明による復号装置等によれば、指数ゴロム符号の復号処理において使用するメモリの容量を削減できるという効果が得られ、指数ゴロム符号を復号する装置等として有用である。
1 復号装置
11 第1の検出部
12 カウンタ
13 カウンタホールド
14 第2の検出部
15 遅延部
16 読み込み部
17 読み込み値ホールド
18 計算部
19 計算値ホールド
20 加算器
21 選択器

Claims (3)

  1. 0個以上の0の連続であるプリフィックスと、当該プリフィックスに続く1であるセパレータと、当該セパレータに続く、前記プリフィックスの0と同数の0または1の符号列であるサフィックスとを有する指数ゴロム符号が順次入力され、当該指数ゴロム符号を復号する復号装置であって、
    指数ゴロム符号のセパレータを検出する第1の検出部と、
    前記第1の検出部がセパレータを検出するまでのプリフィックスにおける0の個数をカウントアップし、前記第1の検出部がセパレータを検出した後のサフィックスにおける0及び1の符号の個数を、カウントアップした結果のカウント値からカウントダウンするカウンタと、
    前記カウンタがサフィックスにおけるすべての符号のカウントダウンを終了したことを検出する第2の検出部と、
    前記カウンタがカウントアップしたプリフィックスにおける0の個数(この個数をnとする)を用いて、2−1を計算する計算部と、
    前記第1の検出部がセパレータを検出してから前記第2の検出部がカウントダウンの終了を検出するまで、指数ゴロム符号のサフィックスの符号列を読み込む読み込み部と、
    前記計算部の計算結果と、前記読み込み部が読み込んだサフィックスの符号列とを加算し、その加算結果である指数ゴロム符号の復号結果を出力する加算器と、を備え、
    前記カウンタは、前記第2の検出部がカウントダウンの終了を検出すると、次の指数ゴロム符号のプリフィックスにおける0の個数のカウントアップを開始する、復号装置。
  2. 前記第1の検出部がセパレータを検出するまで、前記カウンタがカウントアップするごとにカウント値をホールドするカウンタホールドと、
    前記第2の検出部がカウントダウンの終了を検出したことに応じて、前記計算部の計算値である計算結果をホールドする計算値ホールドと、
    前記第2の検出部がカウントダウンの終了を検出したことに応じて、前記読み込み部が読み込んだ読み込み値であるサフィックスの符号列をホールドする読み込み値ホールドと、
    前記第2の検出部によるカウントダウンの終了の検出時点を所定の期間だけ遅延させた時点である前記読み込み値ホールドによる符号列のホールド後の時点に前記読み込み部の読み込み値をリセットする遅延部と、をさらに備え、
    前記計算部は、前記カウンタホールドがホールドしたカウント値(n)を用いて前記計算を行い、
    前記加算器は、前記計算値ホールドがホールドした計算結果と、前記読み込み値ホールドがホールドしたサフィックスの符号列とを加算する、請求項1記載の復号装置。
  3. コンピュータを、
    0個以上の0の連続であるプリフィックスと、当該プリフィックスに続く1であるセパレータと、当該セパレータに続く、前記プリフィックスの0と同数の0または1の符号列であるサフィックスとを有する指数ゴロム符号を順次復号する復号装置として機能させるためのプログラムであって、
    指数ゴロム符号のセパレータを検出する第1の検出部、
    前記第1の検出部がセパレータを検出するまでのプリフィックスにおける0の個数をカウントアップし、前記第1の検出部がセパレータを検出した後のサフィックスにおける0及び1の符号の個数を、カウントアップした結果のカウント値からカウントダウンするカウンタ、
    前記カウンタがサフィックスにおけるすべての符号のカウントダウンを終了したことを検出する第2の検出部、
    前記カウンタがカウントアップしたプリフィックスにおける0の個数(この個数をnとする)を用いて、2−1を計算する計算部、
    前記第1の検出部がセパレータを検出してから前記第2の検出部がカウントダウンの終了を検出するまで、指数ゴロム符号のサフィックスの符号列を読み込む読み込み部、
    前記計算部の計算結果と、前記読み込み部が読み込んだサフィックスの符号列とを加算し、その加算結果である指数ゴロム符号の復号結果を出力する加算器、として機能させ、
    前記カウンタは、前記第2の検出部がカウントダウンの終了を検出すると、次の指数ゴロム符号のプリフィックスにおける0の個数のカウントアップを開始する、プログラム。
JP2009046107A 2009-02-27 2009-02-27 復号装置、及びプログラム Pending JP2010200281A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009046107A JP2010200281A (ja) 2009-02-27 2009-02-27 復号装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009046107A JP2010200281A (ja) 2009-02-27 2009-02-27 復号装置、及びプログラム

Publications (1)

Publication Number Publication Date
JP2010200281A true JP2010200281A (ja) 2010-09-09

Family

ID=42824481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009046107A Pending JP2010200281A (ja) 2009-02-27 2009-02-27 復号装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP2010200281A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107835431A (zh) * 2011-06-28 2018-03-23 三星电子株式会社 对视频编码的方法和设备以及对视频解码的方法和设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107835431A (zh) * 2011-06-28 2018-03-23 三星电子株式会社 对视频编码的方法和设备以及对视频解码的方法和设备
US10547842B2 (en) 2011-06-28 2020-01-28 Samsung Electronics Co., Ltd. Method and apparatus for coding video and method and apparatus for decoding video accompanied with arithmetic coding
CN107835431B (zh) * 2011-06-28 2021-05-25 三星电子株式会社 对视频编码的方法和设备以及对视频解码的方法和设备

Similar Documents

Publication Publication Date Title
KR20160065516A (ko) 지연 고정 루프 및 이를 포함하는 메모리 장치
JP2007047160A (ja) 調節可能な時間アキュムレータ
JP2006018413A (ja) プロセッサおよびパイプライン再構成制御方法
KR0152032B1 (ko) 영상신호를 위한 가변장복호기
US20140047221A1 (en) Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
CN110741345A (zh) 对固定方向分支指令的分支预测
JP2010200281A (ja) 復号装置、及びプログラム
JP5464942B2 (ja) 電子機器、及びその制御方法
US7345496B2 (en) Semiconductor apparatus and test execution method for semiconductor apparatus
WO2020259400A1 (zh) 编码方法、装置、存储介质及计算机设备
JP4323663B2 (ja) 画像フィルタ回路及び画像フィルタリング方法
TWI285836B (en) Method and/or architecture implemented in hardware for the adjustment of messages with indeterministic length
JP2016021739A (ja) デジタル補間器及び補間方法
JP6266193B2 (ja) データ圧縮装置、データ伸長装置、データ圧縮プログラム、データ伸長プログラム、データ圧縮方法及びデータ伸長方法
JP2005233975A (ja) 遅延測定装置
JP3991348B2 (ja) 符号化装置および方法、復号装置および方法、並びに記録媒体
JP4189729B2 (ja) タイマーカウント値の非同期読み出し方法及びタイマー
JP2005303358A (ja) デジタルノイズフィルタ
JP3230270B2 (ja) 信号処理装置
JP2671163B2 (ja) 変調装置の故障検出方式
KR100505471B1 (ko) 데이터 변환을 이용한 파형 생성방법
JP2935305B2 (ja) 短縮化ファイア符号の高速復号器
JP2006053770A (ja) データ処理装置、データ復元装置、データ処理方法及びデータ処理プログラム
JP2011009852A (ja) ディジタル・ノイズフィルタと方法
JP2638337B2 (ja) エラーカウンタ回路