以下、本発明を実施するための最良の形態について図面を参照しながら説明する。
(実施の形態1)
図1Aは、本発明の実施の形態1における多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図1Bは、図1Aの誤差蓄積回路15の構成を示すブロック図である。図1Cは、図1Aの多段型ノイズシェーピング型量子化器を簡略化した単積分型ノイズシェーピング型量子化器である。図1Eは、第1の局部量子化器13の入力範囲及び入力信号を示す説明図である。図1Fは、図1Aのリミッタ14の部分に振幅制御器を追加し出力制御器とした多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図1Gは、図1Aのリミッタ14の部分に振幅制御器を追加した構成の出力制御器を示すブロック図である。
図1Aにおいて、本発明の実施の形態1の多段型ノイズシェーピング型量子化器は、メインループ19とサブループ114と微分器117から構成されている。そして、メインループ19は、加算器11と加算器12、局部量子化器13、リミッタ14、誤差蓄積回路15、加算器16、減算器17、遅延器18により構成される1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器である。また、サブループ114は、加算器110と局部量子化器111、減算器112、帰還回路113により構成される1次又は2次以上のノイズシェーピング次数を有する多重積分型ノイズシェーピング量子化器である。このサブループ114の出力を減算器115と遅延器116で構成される微分器117によりメインループ19のノイズシェーピング次数に応じて微分した後、加算器118によりメインループ19の出力と加算すると、(サブループのノイズシェーピング次数+1)次の多段型ノイズシェーピング型量子化器が構成される。この帰還回路113は、サブループ114が2次以上のノイズシェーピング特性を持つような伝達関数H(z)の特性を有している。
帰還信号119は、サブループ114の帰還回路113から出力され、加算器12において局部量子化器13の入力信号に対し帰還信号119に応じた所定の値を加減算する事によりサブループ114へ入力される量子化誤差を抑え正常に動作させるためのものである。なお、帰還信号119は、サブループ114に構成された積分器の出力でも良く、加算器12において局部量子化器13の入力信号に対し帰還信号119に応じた所定の値を加減算する方法以外に、局部量子化器13の量子化テーブルを帰還信号119に応じてシフトする方法でも良く、サブループ114へ入力される量子化誤差を抑え正常に動作させるために、帰還信号119に基づいて局部量子化器13の出力信号を変化させてサブループ114への入力信号の範囲を制御する方法であれば良い。
リミッタ14は、微分器117あるいは遅延器116からの出力により、第1の局部量子化器13の出力の振幅を制御して加算器118への出力を決定している。つまり、リミッタ14は、微分器117の状態(遅延器116からの値)に基づき、微分器117の出力値と加算器118への出力との和が多段型ノイズシェーピング回路の出力階調数を超えないように、第1の局部量子化器13から入力される値の上限値及び下限値を制御して出力している。これにより、微分器117の出力値に応じて、第1の局部量子化器13の出力範囲を可変し広げる事が可能となる。
そしてリミッタ14は、第1の局部量子化器13から入力される信号を振幅制限して出力すると同時に、振幅制限した分の量子化誤差を、誤差蓄積回路15に対して出力する。また、リミッタ14は、第1の局部量子化器13出力の符号を判別し、誤差蓄積回路15へ第1の局部量子化器13出力の符号を示す信号を出力している。なお、第1の局部量子化器13出力の符号と加算器118へ入力するリミッタ14出力の符号は同じであるためリミッタ14においてリミッタ14出力の符号を判別して誤差蓄積回路15へリミッタ14出力の符号を出力しても良い。
誤差蓄積回路15は、第1の局部量子化器13の出力と微分器117の動作状態を参照してリミッタ14が振幅制限することによって発生する量子化誤差を制御するために、リミッタ14で制限された分の量子化誤差を入力して蓄積し、リミッタ14の動作状態の信号とサブループ114の帰還回路113の出力信号120の符号を参照することによって蓄積された量子化誤差分の信号を出力して加算器16へレベル制限し入力するか否かを制御している。
図1A、図1B及び図1Eを用いて誤差蓄積回路15について詳細に説明する。
図1Bに示すように、誤差蓄積回路15は、加算器1b3と処理選択回路1b6から構成される。リミッタ14から出力されるリミッタ14で振幅制限した分の量子化誤差の信号1b1(新たに発生した量子化誤差入力)が加算器1b3に入力され、処理選択回路1b6からの出力信号1b2(蓄積されていた量子化誤差量)と加算されて、信号1b4(新たに蓄積された量子化誤差量)として処理選択回路1b6へ入力される。処理選択回路1b6は、第1の局部量子化器13出力の符号を示す信号1b8とサブループ114からの帰還信号1b5(帰還信号120)を参照して蓄積された量子化誤差量1b2及び出力1b7を制御する。
次に、誤差蓄積回路15の出力(処理選択回路1b6の出力1b7)の決定方法について説明する。まず、図1Eに示す第1の局部量子化器13の入力範囲及び入力信号について説明する。第1の局部量子化器13の入力範囲1e1は、音声信号分1e4及び、量子化誤差部分1e3、サブループ114からの帰還入力分1e2からなる。そして、第1の局部量子化器への入力信号1e5は、図1Eに示すように帰還回路の出力とリミッタの出力が同符号の場合と異符号の場合で異なっており、音声信号分1e4及び、量子化誤差分1e3、サブループ212からの帰還入力分1e2、振幅制限されたリミッタ動作により発生する量子化誤差1e6からなる。
まず、第1の局部量子化器13がオーバーフローしないために、第1の局部量子化器13出力の符号1b8と、サブループ114からの帰還信号120とを参照して、二つの符号が同符号の場合はサブループ114からの帰還入力分1e2の部分が使用されているので、マージンがゼロの場合には処理選択回路1b6は誤差蓄積回路15の出力1b7をゼロへリミットする必要がある。
また、第1の局部量子化器13出力の符号1b8と、サブループ114の帰還信号120とを参照して、二つの符号が異符号の場合は、サブループ114からの帰還入力分1e2の部分が使用されていないので(図1E参照)、処理選択回路1b6は誤差蓄積回路15の出力1b7をサブループ114からの帰還入力分1e2の範囲におさまるようにリミットする。
次に、第2の局部量子化器111がオーバーフローしないための条件を求める。まず、第2の局部量子化器111がオーバーフローしない状態を保つことが出来るサブループ114の入力として許容される量子化誤差の大きさを、第2の局部量子化器111の入力範囲をサブループ114の帰還回路113のゲインで除算する事により求める。
そして、第1の局部量子化器13出力の符号1b8と、サブループ114の帰還信号120とを参照して、二つの符号が同符号の場合はリミッタ14の動作により発生する量子化誤差とサブループ114の帰還入力分との極性が一致するため、サブループ114からの帰還入力分1e2を含めて第2の局部量子化器111がオーバーフローしない状態を保つことが出来るサブループ114の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路の出力1b7をリミットする必要がある。
また、第1の局部量子化器13出力の符号1b8と、サブループ114の帰還信号120とを参照して、二つの符号が異符号の場合はリミッタ14の動作により発生する量子化誤差がサブループ114の帰還入力分と異符号なため、サブループ114からの帰還入力分1e2を考慮する必要がなく第2の局部量子化器111がオーバーフローしない状態を保つことが出来るサブループ114の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路の出力1b7をリミットする。
そして、第1の局部量子化器13と第2の局部量子化器111の両方が安定であると判断されたとき(第1の局部量子化器13出力の符号1b8と帰還信号1b5が異符号であると判断されたとき)に、両局部量子化器をオーバーフローさせないためにかけるリミットの大きい方、つまりリミット後の値の小さい方の値を出力1b7として出力する。
このように、処理選択回路1b6は、第1及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値を求め、第1の局部量子化器13出力の符号と、サブループ114の帰還信号120の符号とから、誤差蓄積回路の出力1b7を決定する。
なお、本実施の形態において、第1及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値は、回路設計の段階で予め決められた値である。ただし、サブループ114からの帰還信号120の符号で無く値そのものを参照した場合、制限値を各タイミングにおいて計算し、制限値を切り替えるような構成とすることにより、より高精度に制御する事が可能となる。これは、帰還信号120の値により、メインループ19の第1局部量子化器13の帰還入力分の余裕分がより正確に得られるからである。同時にサブループ114へ入力される量子化誤差の範囲もより高精度に限定する事が可能となる。
次に、図3Aを用いて、誤差蓄積回路15の動作について説明する。図3Aは、図1Aの誤差蓄積回路15の動作を示すフローチャートである。
まず、リミッタ14で新たに発生した量子化誤差入力1b1が誤差蓄積回路15に入力される(S31)。
次に、新たに発生した量子化誤差入力1b1と蓄積された量子化誤差量1b2とを加算する(S32)。
そして、処理選択回路1b6は、ステップS32での加算結果1b4の最大値もしくは最小値を振幅制限し蓄積する。この蓄積された値が量子化誤差量1b2となる。なお、ここで振幅制限するための最大値・最小値は、処理選択回路1b6内に蓄積可能な最大値・最小値という意味であり、処理選択回路1b6で蓄積可能な最大値・最小値の範囲内に、入力された1b4が収まっていれば、振幅制限されない(S33)。
そして、処理選択回路1b6は、信号1b2と信号1b4とを比較して、新たに発生した量子化誤差入力1b1がゼロであるかどうかを検出する事により、リミッタ14が動作しているかどうかを判断する(S34)。
ステップS34で、リミッタ14が動作していないと判断されたならば、処理選択回路1b6は、第1の局部量子化器13出力の符号を示す信号1b8とサブループ114からの帰還信号1b5(帰還信号120)を参照して、符号が異符号であるかどうかを判断する(S35)。
ステップS35で符号が異符号と判断されたならば、処理選択回路1b6内に蓄積されている値が、出力1b7として出力可能な所定の制限値を超えているかどうかを判断する(S36)。
ステップS36において、処理選択回路1b6に蓄積されていた値が所定の制限値(誤差蓄積回路15から1回に返せる量子化誤差量)よりも大きいと判断されたならば、所定の制限値を出力1b7として出力し、処理選択回路1b6に蓄積されていた値から所定の制限値を減算し減算された結果を量子化誤差として蓄積する(S37)。
また、ステップS36において、処理選択回路1b6に蓄積されていた値が所定の制限値よりも小さいと判断されたならば、蓄積されていた量子化誤差を出力1b7として、全て出力し、蓄積している量子化誤差を0とする(S38)。
また、ステップS34においてリミッタが動作している場合と、ステップS35において信号1b8と帰還信号1b5が同符号である場合は、誤差蓄積回路15から誤差を出力すると、第1及び第2の局部量子化器がオーバーフローを起こす可能性がある不安定な状態であるため、誤差蓄積回路15からの出力1b7をゼロにする、もしくは出力しない(S39)。ただし、判断処理S34は必ずしも必要では無い。
以上のように構成することで、リミッタ14の動作で発生する量子化誤差による第1の局部量子化器13のオーバーフローを抑え、メインループ19を安定に保ちつつ、制限された分の量子化誤差を蓄積・出力制御する事で歪率の劣化を抑える事が可能となる。
ここで、ステップS33における処理選択回路1b6による量子化誤差蓄積量の最大値もしくは最小値を振幅制限する処理は、リミッタ14が頻繁に動作するような状態で量子化誤差を帰還するタイミングが遅くなり、量子化誤差がノイズとなってしまう事を防ぐためのもので、リミッタ14が頻繁に動作しない場合はこの処理を行わなくても正常に動作する。
さらに、第1の局部量子化器13のオーバーフローを抑える事によって、サブループ114の帰還回路113の出力119に応じて第1の局部量子化器13の入力信号に対し所定の値を加減算して、サブループ114へ入力される量子化誤差を抑えサブループ114を正常に動作させる事が可能となり、メインループ19及び、サブループ114の安定度を向上させる事が可能となる。
また、第2のノイズシェーピング型量子化器114の帰還回路113の出力信号119に基づき、第1の局部量子化器13の入力信号に対し所定の値を加減算する事により第2の局部量子化器111へ入力される量子化誤差を抑え正常に動作させることによって、この動作を常に維持するように誤差蓄積回路15で量子化誤差の蓄積及び、誤差蓄積回路15に蓄積した量子化誤差の帰還を行う事で、第2のノイズシェーピング型量子化器114を安定に保つ事が可能となる。
また、メインループ19へ帰還される量子化誤差を制御してメインループ19を安定させることによって、第1の局部量子化器13の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、第1の局部量子化器13の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
なお、上記説明の構成において、リミッタ14の部分へ振幅制御器1g6を追加し、二つを併せて出力制御器1F1とした構成に関しても、本発明の実施の形態1の内容を適用することができる。
ここで、図1Fは図1Aのリミッタ14の部分に振幅制御器1g6を追加し出力制御器1F1とした多段型ノイズシェーピング型量子化器の構成を示すブロック図であり、図1Fを参照して、図1Aの多段型ノイズシェーピング型量子化器と同等以上の効果を有する多段型ノイズシェーピング型量子化器について説明する。ただし、図1Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図1Fの多段型ノイズシェーピング型量子化器と図1Aの多段型ノイズシェーピング型量子化器との違いは、図1Fのリミッタ14の部分に振幅制御器1g6が追加され出力制御器1F1となっている点である。
図1Gは、図1Aのリミッタ14の部分に振幅制御器1g6を追加した構成の出力制御器1F1を示すブロック図である。
出力制御器1F1は、リミッタ1g3と振幅制御器1g6から構成され、信号1g1、1g2、1g4、1g5、1g7〜1g10を入出力している。
リミッタ1g3は、微分器117あるいは遅延器116からの出力1g2により、第1の局部量子化器13の出力1g1の振幅を制御して加算器118への出力1g4を決定している。つまり、リミッタ1g3は、微分器117の状態(遅延器116からの値)1g2に基づき、微分器117の出力値と加算器118への出力1g4との和が多段型ノイズシェーピング回路の出力階調数を超えないように、第1の局部量子化器13から入力される値の上限値及び下限値を制御して出力している。これにより、微分器117の出力値に応じて、第1の局部量子化器13の出力範囲を可変し広げる事が可能となる。
振幅制御器1g6は、リミッタ1g3への入力1g1とリミッタ1g3の動作状態を表す信号1g5とサブループの帰還信号の符号1g7とを入力とし、第1のノイズシェーピング型量子化器の量子化誤差を計算するための出力1g8と出力1g8で出力できなかった新たに発生した量子化誤差量1g9と第1の局部量子化器13の出力信号の符号1g10とを出力とする。
リミッタ1g3への入力1g1とリミッタ1g3の動作状態を表す信号1g5から、リミッタ1g3で新たに発生する量子化誤差量を計算し、第1の局部量子化器13の出力信号の符号1g10を得る。そして、第1の局部量子化器13の出力信号の符号1g10とサブループの帰還信号の符号1g7とから、メインループ19とサブループ114が量子化誤差を加算してもオーバーフローしない状態であるかを判断して、第1のノイズシェーピング型量子化器の量子化誤差を計算するための出力1g8と出力1g8で出力できなかった新たに発生した量子化誤差量1g9が決定されている。
図3Bは、誤差蓄積回路1F5の動作を説明するフローチャートであり、図3Aの誤差蓄積回路15の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS34の判断処理をステップS3b4の判断処理へ変更したものが誤差蓄積回路1F5の動作フローになり、出力制御器1F1の動作状態にも基づいて誤差蓄積回路1F5の出力が決定されている。
ステップS3b4の判断処理では、処理選択回路1b6が、信号1b2と信号1b4とが一致するかを判断する事により信号1b1がゼロであるかを判断し、出力制御器1F1が動作しているかどうかを判断する(S3b4)。
以上のように、本実施の形態1の多段型ノイズシェーピング型量子化器は、振幅制御器5g6を追加する事により、リミッタ1g3部分で発生する誤差の一部をメインループ19とサブループ114の状態に応じて出力し、誤差蓄積回路15への量子化誤差の蓄積量をより少なく抑える事ができ、より良好な歪率の信号を出力する事が可能となる。
なお、上記説明において、多段型ノイズシェーピング量子化器について説明したが、本発明の実施の形態1の内容は単積分型ノイズシェーピング型量子化器にも適用することができる。
ここで、図1Cは単積分型ノイズシェーピング型量子化器のブロック図であり、図1Cを参照して、図1Aの多段型ノイズシェーピング型量子化器と同等の効果を有する単積分型ノイズシェーピング型量子化器について説明する。ただし、図1Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図1Cの単積分型ノイズシェーピング型量子化器と図1Aの多段型ノイズシェーピング型量子化器との大きな違いは、図1Cの単積分型ノイズシェーピング型量子化器には図1Aのサブループ114がなく帰還信号120と局部量子化器13出力の符号を示す信号1b8が誤差蓄積回路に入力されない点と誤差検出回路1c2が追加され、その出力が誤差蓄積回路1c1へ入力されている点である。
図1Cの単積分型ノイズシェーピング型量子化器は、加算器11と、局部量子化器13、リミッタ14、誤差蓄積回路1c1、誤差検出回路1c2、加算器16、減算器17、遅延器18により1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器として構成されている。
図1Hは単積分型ノイズシェーピング型量子化器の局部量子化器13の入力範囲及び入力信号を示しており、図1Eの局部量子化器13の入力範囲及び入力信号の図と同じ構成については同じ番号を付し、説明を省略する。
局部量子化器13の入力範囲1h1は、音声信号分1e4及び、量子化誤差部分1e3からなる。そして、局部量子化器13への入力信号1h5は、図1Hに示すように誤差検出回路1c2の出力と蓄積されている量子化誤差1b4が同符号の場合と異符号の場合で異なっており、音声信号分1e4及び、量子化誤差分1e3、誤差蓄積回路1c1から出力する量子化誤差分1h2からなる。
追加された誤差検出回路1c2について説明する。誤差検出回路1c2では、二つの入力信号の大小比較する事により局部量子化器13において発生する量子化誤差の符号の検出又は、局部量子化器13の前後の値の差を計算することで局部量子化器13において発生する量子化誤差の値の計算を行なう。
図1Dは誤差蓄積回路1c1のブロック図を示しており、図1Bの誤差蓄積回路15のブロック図と同じ構成については同じ番号を付し、説明を省略する。誤差蓄積回路1c1は、誤差検出回路1c2が局部量子化器13において発生する量子化誤差の符号の検出を行なう場合と局部量子化器13において発生する量子化誤差の値の計算を行なう場合とで動作が異なるので、それぞれについて説明をする。誤差蓄積回路1c1は、加算器1b3と処理選択回路1d6から構成され、信号1b1、1b2、1b4、1b7,1d8を入出力している。誤差蓄積回路1c1は、リミッタ14からの入力1b1と誤差検出回路1c2からの入力1d8に基づいて出力する信号1b7を決定している点が、図1Bの誤差蓄積回路15と異なる。
誤差検出回路1c2が局部量子化器13において発生する量子化誤差の符号の検出を行なう場合には、誤差蓄積回路1c1は、リミッタ14から入力され蓄積されている量子化誤差量1b4を、信号1b2と信号1b4とが一致するかを判断する事により信号1b1がゼロであるかを判断してリミッタ14が動作していない場合、且つ蓄積されている量子化誤差量1b4の符号と局部量子化器13において発生する量子化誤差の符号1d8の符号とを比較して異符号の場合に出力し、同符号の場合又はリミッタ14が動作する場合は、出力しないように出力信号1b7を制御している。出力する誤差量は、局部量子化器13で発生する量子化誤差分1e3を使用していない場合なのでマージンがゼロの場合には、量子化誤差分1e3の大きさ分だけ出力する。ただし、リミッタ14の動作による判断処理は必ずしも必要では無い。
次に、誤差検出回路1c2が局部量子化器13において発生する量子化誤差の値の計算を行なう場合でマージンがゼロの場合について説明する。まず、局部量子化器13で発生する量子化誤差分1e3の範囲に局部量子化器13において発生する量子化誤差の値が含まれている場合は、局部量子化器13で発生する量子化誤差分1e3の範囲から局部量子化器13において発生する量子化誤差の値を減算する事により出力可能な量子化誤差量を求めて出力するように出力信号1b7を制御している。また、局部量子化器13で発生する量子化誤差分1e3の範囲に局部量子化器13において発生する量子化誤差の値が含まれていない場合は、局部量子化器13で発生する量子化誤差分1e3の範囲に収まるように、誤差蓄積回路1c1から補正出力を出力信号1b7として出力し、補正出力に相当する誤差分を誤差蓄積回路へ加算する。補正出力分は、局部量子化器13において発生する量子化誤差の値から局部量子化器13で発生する量子化誤差分1e3を減算する事により求める。以上の様に出力信号1b7を制御している。
図3Cは、誤差蓄積回路1c1の誤差検出回路1c2が局部量子化器13において発生する量子化誤差の符号の検出を行なう場合の動作を説明するフローチャートであり、図3Aの誤差蓄積回路15の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS35の判断処理をステップS3c5へ変更したものが誤差蓄積回路1c1の動作フローになり、リミッタ14の動作状態と蓄積されている量子化誤差量1b4の符号と局部量子化器13において発生する量子化誤差の符号1d8とに基づいて誤差蓄積回路1c1の出力が決定されている。
ステップS3c5の判断処理では、処理選択回路1b6が、蓄積している量子化誤差量1b4の符号と局部量子化器13において発生する量子化誤差の符号1d8の符号とを比較して、局部量子化器13で発生する量子化誤差分1e3を使用しているかを判断する(S3c5)。
図3Dは、誤差蓄積回路1c1の誤差検出回路1c2が局部量子化器13において発生する量子化誤差の値の計算を行なう場合の動作を説明するフローチャートであり、図3Aの誤差蓄積回路15の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS34の判断処理を削除し、ステップS35の判断処理をステップS3d5へ変更し、ステップS38の処理をステップS3d8へ変更したものが誤差蓄積回路1c1の動作フローになり、局部量子化器13において発生する量子化誤差の値1d8に基づいて誤差蓄積回路1c1の出力が決定されている。
ステップS3d5の判断処理では、局部量子化器13において発生する量子化誤差が局部量子化器13で発生する量子化誤差分1e3の範囲内であるかで、蓄積している量子化誤差1b4を出力するかを判断する(S3d5)。
ステップS3d4において量子化誤差分1e3の範囲外と判断された場合、ステップS3d9の処理では、局部量子化器13において発生する量子化誤差が局部量子化器13で発生する量子化誤差分1e3の範囲内になるように誤差蓄積回路1c1から補正出力をし、補正出力に相当する誤差分を誤差蓄積回路へ加算する(S3d9)。
以上のように、本実施の形態1の単積分型ノイズシェーピング型量子化器は、誤差蓄積回路1c1が、リミッタ14の振幅制限した量子化誤差量を蓄積して、入力1b1と蓄積されている量子化誤差量1b4の符号と誤差検出回路1c2の出力と蓄積されている量子化誤差の符号又は値1d8とリミッタ14の動作状態とに基づいて、蓄積した量子化誤差を局部量子化器13に帰還させるように制御することにより、ループ全体を安定に保ちつつ、制限された分の量子化誤差を蓄積する事で歪率の劣化を抑える事が可能となる。
また、帰還される量子化誤差を制御してループを安定させることによって、局部量子化器13の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、局部量子化器13の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
(実施の形態2)
図2Aは、本発明の実施の形態2における多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図2Bは、図2Aの誤差蓄積回路25の構成を示すブロック図である。図2Cは、図2Aの多段型ノイズシェーピング型量子化器を簡略化した単積分型ノイズシェーピング型量子化器である。
図2Aにおいて、本発明の実施の形態2の多段型ノイズシェーピング型量子化器は、メインループ29とサブループ214と微分器217から構成されている。そして、メインループ29は、加算器21と加算器22、オーバーフロー分誤差検出回路23、局部量子化器24、誤差蓄積回路25、加算器26、減算器27、遅延器28により構成される1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器である。また、サブループ214は、加算器210と局部量子化器211、減算器212、帰還回路213により構成される1次又は2次以上のノイズシェーピング次数を有する多重積分型ノイズシェーピング量子化器である。このサブループ214の出力を減算器215と遅延器216で構成される微分器217によりメインループ29のノイズシェーピング次数に応じて微分した後、加算器218によりメインループ29の出力と加算すると、(サブループのノイズシェーピング次数+1)次の多段型ノイズシェーピング型量子化器が構成される。この帰還回路213は、サブループ214が2次以上のノイズシェーピング特性を持つような伝達関数H(z)の特性を有している。
帰還信号219は、サブループ214の帰還回路213から出力され、加算器22において第1の局部量子化器24の入力信号に対し帰還信号219に応じた所定の値を加減算する事によりサブループ214へ入力される量子化誤差抑え正常に動作させるためのものである。なお、帰還信号219は、サブループ214に構成された積分器の出力でも良く、加算器22において第1の局部量子化器24の量子化テーブルを帰還信号219に応じてシフトする方法でも良く、サブループ214へ入力される量子化誤差を抑え正常に動作させるために、帰還信号219に基づいて第1の局部量子化器24の出力信号を変化させてサブループ214への入力信号の範囲を制御する方法であれば良い。
オーバーフロー分誤差検出回路23は、第1の局部量子化器24におけるオーバーフローを前もって検出している。これは、加算器22からの信号が局部量子化器24への入力範囲を超えているときにオーバーフローを起こすとして、検出を行なう。そして、オーバーフロー分誤差検出回路23は、オーバーフローを検出したときに、加算器22からの入力信号を、オーバーフロー分の量子化誤差出力と、オーバーフロー分を差し引いて振幅制限した第1の局部量子化器24への入力信号とに分割する。
また、オーバーフロー分誤差検出回路は、オーバーフローの検出に関わらず第1の局部量子化器24への出力信号の符号(第1の局部量子化器24の出力信号の符号)を判別し、誤差蓄積回路25へ第1の局部量子化器24出力の符号を示す信号を出力している。この第1の局部量子化器24出力の符号を示す信号は、第1の局部量子化器24の動作状態を意味している。
誤差蓄積回路25は、オーバーフロー分誤差検出回路23から出力されるオーバーフロー分の量子化誤差出力を蓄積し、第1の局部量子化器24の動作状態の信号(第1の局部量子化器24の出力信号の符号及びオーバーフロー検出状態)とサブループ214の帰還回路213の出力信号220の符号を参照して、蓄積された量子化誤差分の信号を出力制御して、加算器26へ入力している。
図2A、図2B及び図1Eを用いて誤差蓄積回路25について詳細に説明する。
図2Bに示すように、誤差蓄積回路25は、加算器2b3と処理選択回路2b6から構成される。オーバーフロー分誤差検出回路23から出力されるオーバーフロー分の信号2b1が加算器2b3に入力され、処理選択回路2b6からの出力信号2b2(蓄積されていた量子化誤差)と加算されて、信号2b4(新たに蓄積された量子化誤差量)として処理選択回路2b6へ入力される。処理選択回路2b6は、第1の局部量子化器24出力の符号を示す信号2b8とサブループ214からの帰還信号2b5(帰還信号220)を参照して蓄積された量子化誤差量2b2及び出力2b7を制御する。
次に、誤差蓄積回路25の出力(出力2b7)の決定方法について説明する。まず、第1の局部量子化器24がオーバーフローしないために、第1の局部量子化器24出力の符号2b8と、サブループ214からの帰還信号2b5とを参照して、2つの信号の符号が同符号の場合は、サブループ214からの帰還入力分1e2(図1E参照)の部分が使用されているので、マージンがゼロの場合には処理選択回路2b6は誤差蓄積回路25の出力2b7をゼロへリミットする必要がある。
また、第1の局部量子化器24出力の符号2b8と、サブループ214の帰還信号2b5とを参照して、2つの信号の符号が異符号の場合は、サブループ214からの帰還入力分1e2の部分が使用されていないので、処理選択回路2b6は誤差蓄積回路25の出力2b7をサブループ214からの帰還入力分1e2の範囲に収まるようにリミットする。
次に、第2の局部量子化器211がオーバーフローしないための条件を求める。まず、第2の局部量子化器211がオーバーフローしない状態を保つことが出来るサブループ214の入力として許容される量子化誤差の大きさを、第2の局部量子化器211の入力範囲をサブループ214の帰還回路213のゲインで除算する事により求める。
そして、第1の局部量子化器24出力の符号を示す信号2b8と、サブループ214の帰還信号2b5とを参照して、二つの符号が同符号の場合はオーバーフロー分誤差検出回路23の動作により発生する量子化誤差とサブループ214の帰還入力分との極性が一致するため、サブループ214からの帰還入力分1e2を含めて第2の局部量子化器211がオーバーフローしない状態を保つことが出来るサブループ214の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路25の出力2b7をリミットする必要がある。
また、第1の局部量子化器24出力の符号を示す信号2b8と、サブループ214の帰還信号2b5とを参照して、二つの符号が異符号の場合はオーバーフロー分誤差検出回路23の動作により発生する量子化誤差がサブループ214の帰還入力分と異符号なため、サブループ214からの帰還入力分1e2を考慮する必要がなく第2の局部量子化器211がオーバーフローしない状態を保つことが出来るサブループ214の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路の出力2b7をリミットする。
そして、第1の局部量子化器24と第2の局部量子化器211の両方が安定であると判断されたとき(第1の局部量子化器24出力の符号2b8と帰還信号2b5が異符号であると判断されたとき)に、両局部量子化器をオーバーフローさせないためにかけるリミットの大きい方、つまりリミット後の値の小さい方の値を出力2b7として出力する。
このように、処理選択回路2b6は、第1の及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値を求め、第1の局部量子化器24出力の符号とサブループ214の帰還信号220の符号とから、誤差蓄積回路25の出力2b7を決定する。
なお、本実施の形態において、第1及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値は、回路設計の段階で予め決められた値である。ただし、サブループ214からの帰還信号220の符号で無く値そのものを参照した場合、制限値を各タイミングにおいて計算し、制限値を切り替えるような構成とすることにより、より高精度に制御する事が可能となる。これは、帰還信号220の値により、メインループ29の第1局部量子化器24の帰還入力分の余裕分がより正確に得られるからである。同時にサブループ214へ入力される量子化誤差の範囲もより高精度に限定する事が可能となる。
次に、図4Aを用いて、誤差蓄積回路25の動作について説明する。図4Aは、図2Aの誤差蓄積回路25の動作を示すフローチャートである。
まず、オーバーフロー分誤差検出回路23で新たに発生したオーバーフロー分の量子化誤差入力2b1が誤差蓄積回路25に入力される(S41)。
次に、新たに発生した量子化誤差入力2b1と蓄積されていたオーバーフロー分の量子化誤差量2b2とを加算する(S42)。
そして、処理選択回路2b6は、ステップS42での加算結果2b4の最大値もしくは最小値を振幅制限し蓄積する。この蓄積された値が量子化誤差量2b2となる。なお、ここで、振幅制限するための最大値・最小値は、処理選択回路2b6内に蓄積可能な最大値・最小値という意味であり、処理選択回路2b6で蓄積可能な最大値・最小値の範囲内に、入力された2b4が収まっていれば振幅制限されない(S43)。
そして、処理選択回路2b6は、信号2b2と信号2b4とを比較して、新たに発生した量子化誤差入力2b1がゼロであるかどうかを検出する事により、オーバーフロー分誤差検出回路23がオーバーフローを検出したかどうかを判断する(S44)。
ステップS44で、オーバーフローが検出されていないと判断されたならば、処理選択回路2b6は、第1の局部量子化器24出力の符号を示す信号2b8とサブループ214からの帰還信号2b5(帰還信号220)を参照して、符号が異符号であるかどうかを判断する(S45)。
ステップS45で符号が異符号と判断されたならば、処理選択回路2b6内に蓄積されている値が、出力2b7として出力可能な所定の制限値を超えているかどうかを判断する(S46)。
ステップS46において、処理選択回路2b6に蓄積されていた値が所定の制限値(誤差蓄積回路25から1回に返せる量子化誤差量)よりも大きいと判断されたならば、所定の制限値を出力2b7として出力し、処理選択回路2b6に蓄積されていた値から所定の制限値を減算し減算された結果を量子化誤差として蓄積する(S47)。
また、ステップS46において、処理選択回路2b6に蓄積されていた値が所定の制限値よりも小さいと判断されたならば、蓄積されていた量子化誤差を出力2b7として、全て出力し、蓄積している量子化誤差を0とする(S48)。
また、ステップS44においてリミッタが動作している場合と、ステップS45において信号2b8と帰還信号2b5が同符号である場合は、誤差蓄積回路25から誤差を出力すると、第1及び第2の局部量子化器がオーバーフローを起こす可能性がある不安定な状態であるため、誤差蓄積回路25からの出力2b7をゼロにする、もしくは出力しない(S49)。
以上のように構成することで、オーバーフロー分誤差検出回路の動作で発生する量子化誤差による第1の局部量子化器24のオーバーフローを抑え、メインループ29を安定に保ちつつ、制限された分の量子化誤差を蓄積・出力制御する事で歪率の劣化を抑える事が可能となる。
ここで、ステップS43における処理選択回路2b6による量子化誤差蓄積量の最大値もしくは最小値を振幅制限する処理は、オーバーフロー分誤差検出回路23が頻繁に動作するような状態で量子化誤差を帰還するタイミングが遅くなり、量子化誤差がノイズとなってしまう事を防ぐためのもので、オーバーフロー分誤差検出回路23が頻繁に動作しない場合はこの処理を行わなくても正常に動作する。
さらに、第1の局部量子化器24のオーバーフローを抑える事によって、サブループ214の帰還回路213の出力219に応じて第1の局部量子化器24の入力信号に対し所定の値を加減算して、サブループ214へ入力される量子化誤差を抑えサブループ214を正常に動作させる事が可能となり、メインループ29及び、サブループ214の安定度を向上させる事が可能となる。
また、第2のノイズシェーピング型量子化器214の帰還回路213の出力信号219に基づき、第1の局部量子化器24の入力信号に対し所定の値を加減算する事により第2の局部量子化器211へ入力される量子化誤差を抑え正常に動作させることによって、この動作を常に維持するように誤差蓄積回路25で量子化誤差の蓄積及び、誤差蓄積回路25に蓄積した量子化誤差の帰還を行う事で、第2のノイズシェーピング型量子化器214を安定に保つ事が可能となる。
また、メインループ29へ帰還される量子化誤差を制御してメインループ29を安定させることによって、第1の局部量子化器24の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、第1の局部量子化器24の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
なお、上記説明において、多段型ノイズシェーピング量子化器について説明したが、本発明の実施の形態2の内容は単積分型ノイズシェーピング型量子化器にも適用することができる。
ここで、図2Cは単積分型ノイズシェーピング型量子化器のブロック図であり、図2Cを参照して、図2Aの多段型ノイズシェーピング型量子化器と同等の効果を有する単積分型ノイズシェーピング型量子化器について説明する。ただし、図2Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図2Cの単積分型ノイズシェーピング型量子化器と図2Aの多段型ノイズシェーピング型量子化器との大きな違いは、図2Cの単積分型ノイズシェーピング型量子化器には図2Aのサブループ214がなく帰還信号220と局部量子化器24出力の符号を示す信号2b8が誤差蓄積回路に入力されない点と誤差検出回路2c2が追加され、その出力が誤差蓄積回路2c1へ入力されている点である。
図2Cの単積分型ノイズシェーピング型量子化器は、加算器21と、オーバーフロー分誤差検出回路23、局部量子化器24、誤差蓄積回路2c1、誤差検出回路2c2、加算器26、減算器27、遅延器28により1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器として構成されている。
追加された誤差検出回路2c2について説明する。誤差検出回路2c2では、二つの入力信号の大小比較する事により局部量子化器24において発生する量子化誤差の符号の検出又は、局部量子化器24の前後の値の差を計算することで局部量子化器24において発生する量子化誤差の値の計算を行なう。
図2Dは誤差蓄積回路2c1のブロック図を示しており、図2Bの誤差蓄積回路25のブロック図と同じ構成については同じ番号を付し、説明を省略する。誤差蓄積回路2c1は、誤差検出回路2c2が局部量子化器24において発生する量子化誤差の符号の検出を行なう場合と局部量子化器24において発生する量子化誤差の値の計算を行なう場合とで動作が異なるので、それぞれについて説明をする。誤差蓄積回路2c1は、加算器2b3と処理選択回路2d6から構成され、信号2b1、2b2、2b4、2b7、2d8を入出力している。誤差蓄積回路2c1は、オーバーフロー分誤差検出回路23からの入力2b1と誤差検出回路2c2からの入力に基づいて出力する信号2b7を決定している点が、図2Bの誤差蓄積回路25と異なる。
誤差検出回路2c2が局部量子化器24において発生する量子化誤差の符号の検出を行なう場合には、誤差蓄積回路2c1は、オーバーフロー分誤差検出回路23から入力され蓄積されている量子化誤差量2b4を、蓄積されている量子化誤差量2b4の符号と局部量子化器24において発生する量子化誤差の符号2d8の符号とを比較して異符号、且つオーバーフロー分誤差検出回路23からの入力2b1がゼロの場合には出力し、同符号の場合又はオーバーフロー分誤差検出回路23からの入力2b1がゼロで無い場合には、出力しないように出力信号2b7を制御している。出力する誤差量は、局部量子化器24で発生する量子化誤差分1e3を使用していない場合なのでマージンがゼロの場合には、量子化誤差分1e3の大きさ分だけ出力する。
次に、誤差検出回路2c2が局部量子化器24において発生する量子化誤差の値の計算を行なう場合でマージンがゼロの場合について説明する。まず、オーバーフロー分誤差検出回路23からの入力2b1がゼロの場合には、局部量子化器24で発生する量子化誤差分1e3の範囲から局部量子化器24において発生する量子化誤差の値を減算する事により出力可能な量子化誤差量を求める事ができ、誤差蓄積回路2c1から出力可能な量子化誤差量を出力するように出力信号2b7を制御している。また、オーバーフロー分誤差検出回路23からの入力2b1がゼロでない場合には、出力しないように出力信号2b7を制御している。
図4Bは、誤差蓄積回路2c1の誤差検出回路2c2が局部量子化器24において発生する量子化誤差の符号の検出を行なう場合の動作を説明するフローチャートであり、図4Aの誤差蓄積回路25の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS45の判断処理をステップS4c5へ変更したものが誤差蓄積回路2c1の動作フローになり、オーバーフロー分誤差検出回路23からの入力2b1と蓄積されている量子化誤差量2b4の符号と局部量子化器24において発生する量子化誤差の符号2d8とに基づいて誤差蓄積回路2c1の出力が決定されている。
ステップS4c5の判断処理では、処理選択回路2b6が、蓄積している量子化誤差量2b4の符号と局部量子化器24において発生する量子化誤差の符号2d8の符号とを比較して、局部量子化器24で発生する量子化誤差分1e3を使用しているかを判断する(S4c5)。
図4Cは、誤差蓄積回路2c1の誤差検出回路2c2が局部量子化器24において発生する量子化誤差の値の計算を行なう場合の動作を説明するフローチャートであり、図4Aの誤差蓄積回路25の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS45の判断処理を削除したものが誤差蓄積回路2c1の動作フローになり、オーバーフロー分誤差検出回路23からの入力2b1と局部量子化器24において発生する量子化誤差の値2d8とに基づいて誤差蓄積回路2c1の出力が決定されている。
以上のように、本実施の形態2の単積分型ノイズシェーピング型量子化器は、誤差蓄積回路2c1が、オーバーフロー分誤差検出回路23の振幅制限した量子化誤差量を蓄積して、オーバーフロー分誤差検出回路23からの入力2b1と蓄積されている量子化誤差量2b4の符号と局部量子化器24において発生する量子化誤差の符号又は値2d8とに基づいて、蓄積した量子化誤差を局部量子化器24に帰還させるように制御することにより、局部量子化器24のオーバーフローを抑え、ループ全体を安定に保ちつつ、制限された分の量子化誤差を蓄積する事で歪率の劣化を抑える事が可能となる。
また、帰還される量子化誤差を制御してループを安定させることによって、局部量子化器24の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、局部量子化器24の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
(実施の形態3)
図5Aは、本発明の実施の形態3における多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図5Bは、図5Aの誤差蓄積回路56の構成を示すブロック図である。図5Cは、図5Aの多段型ノイズシェーピング型量子化器を簡略化した単積分型ノイズシェーピング型量子化器である。図5Fは、図5Aのリミッタ55の部分に振幅制御器を追加し出力制御器とした多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図5Gは、図5Aのリミッタ55の部分に振幅制御器を追加した構成の図5Fの出力制御器を示すブロック図である。
図5Aにおいて、本発明の実施の形態3の多段型ノイズシェーピング型量子化器は、メインループ510とサブループ515と微分器518から構成されている。そして、メインループ510は、加算器51と加算器52、オーバーフロー検出回路53、局部量子化器54、リミッタ55、誤差蓄積回路56、加算器57、減算器58、遅延器59により構成される1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器である。また、サブループ515は、加算器511と局部量子化器512、減算器513、帰還回路514により構成される1次又は2次以上のノイズシェーピング次数を有する多重積分型ノイズシェーピング量子化器である。
このサブループ515の出力を減算器516と遅延器517で構成される微分器518によりメインループ510のノイズシェーピング次数に応じて微分した後、加算器519によりメインループ510の出力と加算すると、(サブループのノイズシェーピング次数+1)次の多段型ノイズシェーピング型量子化器が構成される。この帰還回路514は、サブループ515が2次以上のノイズシェーピング特性を持つような伝達関数H(z)の特性を有している。
帰還信号520は、サブループ515の帰還回路514から出力され、加算器52において第1の局部量子化器54の入力信号に対し帰還信号520に応じた所定の値を加減算する事によりサブループ515へ入力される量子化誤差を抑え正常に動作させるためのものである。
なお、帰還信号520は、サブループ515に構成された積分器の出力でも良く、加算器52において局部量子化器54の入力信号に対し帰還信号520に応じた所定の値を加減算する方法以外に、第1の局部量子化器54の量子化テーブルを帰還信号520に応じてシフトする方法でも良く、サブループ515へ入力される量子化誤差を抑え正常に動作させるために、帰還信号520に基づいて局部量子化器54の出力信号を変化させてサブループ515への入力信号の範囲を制御する方法であれば良い。
リミッタ55は、微分器518あるいは遅延器517からの出力により、第1の局部量子化器54の出力の振幅を制御して加算器519への出力を決定している。つまり、リミッタ55は、微分器518の状態(遅延器517からの値)に基づき、微分器518の出力値と加算器519への出力との和が多段型ノイズシェーピング回路の出力階調数を超えないように、第1の局部量子化器54から入力される値の上限値及び下限値を制御して出力している。これにより、微分器518の出力値に応じて、第1の局部量子化器54の出力範囲を可変し広げる事が可能となる。
そしてリミッタ55は、第1の局部量子化器54から入力される信号を振幅制限して出力すると同時に、振幅制限した分の量子化誤差を、誤差蓄積回路56に対して出力する。また、リミッタ55は、第1の局部量子化器54出力の符号を判別し、誤差蓄積回路56へ第1の局部量子化器54出力の符号を示す信号を出力している。
なお、第1の局部量子化器54出力の符号と加算器519へ入力するリミッタ55出力の符号は同じであるためリミッタ55においてリミッタ55出力の符号を判別して誤差蓄積回路56へリミッタ55出力の符号を出力しても良い。
オーバーフロー検出回路53は、第1の局部量子化器54におけるオーバーフローを前もって検出している。これは、加算器52からの信号が局部量子化器54への入力範囲を超えているときにオーバーフローを起こすとして、検出を行なう。そして、オーバーフロー検出回路53は、オーバーフローを検出したときに、オーバーフロー検出状態を誤差蓄積回路56へ入力する。
誤差蓄積回路56は、リミッタ55が振幅制限することによって発生する量子化誤差を制御するために、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態と第1の局部量子化器54の動作状態の信号とサブループ515の帰還回路514の出力信号521の符号とを参照してリミッタ55で制限された分の量子化誤差を入力して蓄積し、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態とリミッタ55の動作状態の信号とサブループ515の帰還回路514の出力信号521の符号を参照することによって蓄積された量子化誤差分の信号を出力して加算器57へレベル制限し入力するか否かを制御している。
図5A、図5B及び図1Eを用いて誤差蓄積回路56について詳細に説明する。
図5Bに示すように、誤差蓄積回路56は、加算器5b3と処理選択回路5b6から構成される。
リミッタ55から出力されるリミッタ55で振幅制限した分の量子化誤差の信号5b1(新たに発生した量子化誤差入力)が加算器5b3に入力され、処理選択回路5b6からの出力信号5b2(蓄積されていた量子化誤差量)と加算されて、信号5b4(新たに蓄積された量子化誤差量)として処理選択回路5b6へ入力される。処理選択回路5b6は、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態5b9と第1の局部量子化器54出力の符号を示す信号5b8とサブループ515からの帰還信号5b5(帰還信号521)を参照して蓄積された量子化誤差量5b2及び出力5b7を制御する。
次に、誤差蓄積回路56の出力(処理選択回路5b6の出力5b7)の決定方法について説明する。まず、図1Eに示す第1の局部量子化器54の入力範囲及び入力信号について説明する。第1の局部量子化器54の入力範囲1e1は、音声信号分1e4及び、量子化誤差部分1e3、サブループ515からの帰還入力分1e2からなる。そして、第1の局部量子化器への入力信号1e5は、図1Eに示すように帰還回路の出力とリミッタの出力が同符号の場合と異符号の場合で異なっており、音声信号分1e4及び、量子化誤差分1e3、サブループ513からの帰還入力分1e2、振幅制限されたリミッタ動作により発生する量子化誤差1e6からなる。
まず、第1の局部量子化器54がオーバーフローしないために、第1の局部量子化器54出力の符号5b8と、サブループ515からの帰還信号521とを参照して、二つの符号が同符号の場合はサブループ515からの帰還入力分1e2の部分が使用されているので、マージンがゼロの場合に処理選択回路5b6は誤差蓄積回路56の出力5b7をゼロへリミットする必要がある。
また、第1の局部量子化器54出力の符号5b8と、サブループ515の帰還信号521とを参照して、二つの符号が異符号の場合は、サブループ515からの帰還入力分1e2の部分が使用されていないので(図1E参照)、処理選択回路5b6は誤差蓄積回路56の出力5b7をサブループ515からの帰還入力分1e2の範囲におさまるようにリミットする。
同時に、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態を示す信号5b9でオーバーフローが検出されている場合は、量子化誤差部分1e3が正常な状態よりも大きくなっている事が考えられるため、マージンがゼロの場合には処理選択回路5b6は誤差蓄積回路56の出力5b7をゼロへリミットする必要がある。
また、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態5b9でオーバーフローが検出されていない場合は、第1の局部量子化器54出力の符号5b8と、サブループ515の帰還信号521とを参照した結果により、処理選択回路5b6は誤差蓄積回路56の出力5b7を決定する。
次に、第2の局部量子化器512がオーバーフローしないための条件を求める。まず、第2の局部量子化器512がオーバーフローしない状態を保つことが出来るサブループ515の入力として許容される量子化誤差の大きさを、第2の局部量子化器512の入力範囲をサブループ515の帰還回路514のゲインで除算する事により求める。
そして、リミッタ55の出力と、サブループ515の帰還信号521とを参照して、二つの符号が同符号の場合はリミッタ55の動作により発生する量子化誤差と極性が一致するため、サブループ515からの帰還入力分1e2を含めて第2の局部量子化器512がオーバーフローしない状態を保つことが出来るサブループ515の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路の出力5b7をリミットする必要がある。
また、リミッタ55の出力と、サブループ515の帰還信号521とを参照して、二つの符号が異符号の場合はリミッタ55の動作により発生する量子化誤差が異符号なため、サブループ515からの帰還入力分1e2を考慮する必要がなく第2の局部量子化器512がオーバーフローしない状態を保つことが出来るサブループ515の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路の出力5b7をリミットする。
そして、第1の局部量子化器54と第2の局部量子化器512の両方が安定であると判断されたとき(第1の局部量子化器54出力の符号5b8と帰還信号5b5が異符号であり、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態を示す信号5b9がオーバーフローしていないと判断されたとき)に、両局部量子化器をオーバーフローさせないためにかけるリミットの大きい方、つまりリミット後の値の小さい方の値を出力5b7として出力する。
このように、処理選択回路5b6は、第1及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値を求め、第1の局部量子化器54出力の符号と、サブループ515の帰還信号521の符号とから、誤差蓄積回路の出力5b7を決定する。
なお、本実施の形態3において、第1及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値は、回路設計の段階で予め決められた値である。ただし、サブループ515からの帰還信号521の符号で無く値そのものを参照した場合、制限値を各タイミングにおいて計算し、制限値を切り替えるような構成とすることにより、より高精度に制御する事が可能となる。これは、帰還信号521の値により、メインループ510の第1局部量子化器54の帰還入力分の余裕分がより正確に得られるからである。同時にサブループ515へ入力される量子化誤差の範囲もより高精度に限定する事が可能となる。
次に、図5Eを用いて、誤差蓄積回路56の動作について説明する。図5Eは、図5Aの誤差蓄積回路56の動作を示すフローチャートである。
まず、リミッタ55で新たに発生した量子化誤差入力5b1が誤差蓄積回路56に入力される(S51)。
次に、新たに発生した量子化誤差入力5b1と蓄積された量子化誤差量5b2とを加算する(S52)。
そして、処理選択回路5b6は、ステップS52での加算結果5b4の最大値もしくは最小値を振幅制限し蓄積する。この蓄積された値が量子化誤差量5b2となる。なお、ここで振幅制限するための最大値・最小値は、処理選択回路5b6内に蓄積可能な最大値・最小値という意味であり、処理選択回路5b6で蓄積可能な最大値・最小値の範囲内に、入力された5b4が収まっていれば、振幅制限されない(S53)。
そして、処理選択回路5b6は、信号5b2と信号5b4とを比較して、新たに発生した量子化誤差入力5b1がゼロであるかどうかを検出する事により、リミッタ55が動作しているかどうかを判断する(S54)。
ステップS54で、リミッタ55が動作していないと判断されたならば、処理選択回路5b6は、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態5b9により、第1の局部量子化器54がオーバーフローしているかどうかを判断する(S55)。
ステップS55で、第1の局部量子化器54がオーバーフローしていないと判断されたならば、処理選択回路5b6は、第1の局部量子化器54出力の符号を示す信号5b8とサブループ515からの帰還信号5b5(帰還信号521)を参照して、符号が異符号であるかどうかを判断する(S56)。
ステップS56で符号が異符号と判断されたならば、処理選択回路5b6内に蓄積されている値が、出力5b7として出力可能な所定の制限値を超えているかどうかを判断する(S57)。
ステップS57において、処理選択回路5b6に蓄積されていた値が所定の制限値(誤差蓄積回路56から1回に返せる量子化誤差量)よりも大きいと判断されたならば、所定の制限値を出力5b7として出力し、処理選択回路5b6に蓄積されていた値から所定の制限値を減算し減算された結果を量子化誤差として蓄積する(S58)。
また、ステップS57において、処理選択回路5b6に蓄積されていた値が所定の制限値よりも小さいと判断されたならば、蓄積されていた量子化誤差を出力5b7として、全て出力し、蓄積している量子化誤差を0とする(S59)。
また、ステップS54においてリミッタが動作している場合と、ステップS55において第1の局部量子化器54がオーバーフローしている場合と、ステップS56において信号5b8と帰還信号5b5が同符号である場合は、誤差蓄積回路56から誤差を出力すると、第1及び第2の局部量子化器がオーバーフローを起こす可能性がある不安定な状態であるため、誤差蓄積回路56からの出力5b7をゼロにする、もしくは出力しない(S510)。ただし、判断処理S54は必ずしも必要では無い。
以上のように構成することで、リミッタ55の動作で発生する量子化誤差による第1の局部量子化器54のオーバーフローを抑え、メインループ520を安定に保ちつつ、制限された分の量子化誤差を蓄積・出力制御する事で歪率の劣化を抑える事が可能となる。
ここで、ステップS53における処理選択回路5b6による量子化誤差蓄積量の最大値もしくは最小値を振幅制限する処理は、リミッタ55が頻繁に動作するような状態で量子化誤差を帰還するタイミングが遅くなり、量子化誤差がノイズとなってしまう事を防ぐためのもので、リミッタ55が頻繁に動作しない場合はこの処理を行わなくても正常に動作する。
さらに、第1の局部量子化器54のオーバーフローを抑える事によって、サブループ515の帰還回路514の出力520に応じて第1の局部量子化器54の入力信号に対し所定の値を加減算して、サブループ515へ入力される量子化誤差を抑えサブループ515を正常に動作させる事が可能となり、メインループ510及び、サブループ515の安定度を向上させる事が可能となる。
また、第2のノイズシェーピング型量子化器515の帰還回路514の出力信号520に基づき、第1の局部量子化器54の入力信号に対し所定の値を加減算する事により第2の局部量子化器512へ入力される量子化誤差を抑え正常に動作させることによって、この動作を常に維持するように誤差蓄積回路56で量子化誤差の蓄積及び、誤差蓄積回路56に蓄積した量子化誤差の帰還を行う事で、第2のノイズシェーピング型量子化器515を安定に保つ事が可能となる。
また、メインループ510へ帰還される量子化誤差を制御してメインループ510を安定させることによって、第1の局部量子化器54の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、第1の局部量子化器54の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
シミュレーション結果では、本発明を適用していない場合の出力振幅を100%とすると、本発明を適用した場合、0dB・1kHzの入力信号に対して出力振幅は115.384%であり、0dB・10kHzの入力信号に対しての出力振幅は115.345%であった。また、リミッタが動作しない領域の入力信号に対しては、出力振幅は115.384%であり、マージンをなくしたことによる出力信号振幅のほぼ均一な割合の増大を確認できる。
また、別のシミュレーション結果として、本発明を適用していない場合、0dB・1kHzの入力信号に対して歪率が6.4%であり、0dB・10kHzの入力信号に対して歪率が5.1%であった。次に、本発明を適用した場合、0dB・1kHzの入力信号に対して歪率が0.36%であり、0dB・10kHzの入力信号に対して歪率が0.27%であり歪率の改善効果が確認された。
なお、上記説明の構成において、リミッタ55の部分へ振幅制御器5g6を追加し、二つを併せて出力制御器5F1とした構成に関しても、本発明の実施の形態3の内容を適用することができる。
ここで、図5Fは図5Aのリミッタ55の部分に振幅制御器5g6を追加し出力制御器5F1とした多段型ノイズシェーピング型量子化器の構成を示すブロック図であり、図5Fを参照して、図5Aの多段型ノイズシェーピング型量子化器と同等以上の効果を有する多段型ノイズシェーピング型量子化器について説明する。ただし、図5Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図5Fの多段型ノイズシェーピング型量子化器と図5Aの多段型ノイズシェーピング型量子化器との違いは、図5Fのリミッタ55の部分に振幅制御器5g6が追加され出力制御器5F1となっている点である。
図5Gは、図5Aのリミッタ55の部分に振幅制御器5g6を追加した構成の出力制御器5F1を示すブロック図である。
出力制御器5F1は、リミッタ5g3と振幅制御器5g6から構成され、信号5g1、5g2、5g4、5g5、5g7〜5g11を入出力している。
リミッタ5g3は、微分器518あるいは遅延器517からの出力5g2により、第1の局部量子化器54の出力5g1の振幅を制御して加算器519への出力5g4を決定している。つまり、リミッタ5g3は、微分器518の状態(遅延器517からの値)5g2に基づき、微分器518の出力値と加算器519への出力5g4との和が多段型ノイズシェーピング回路の出力階調数を超えないように、第1の局部量子化器54から入力される値の上限値及び下限値を制御して出力している。これにより、微分器518の出力値に応じて、第1の局部量子化器54の出力範囲を可変し広げる事が可能となる。
振幅制御器5g6は、リミッタ5g3への入力5g1とリミッタ5g3の動作状態を表す信号5g5とサブループの帰還信号の符号5g7とオーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態5g11とを入力とし、第1のノイズシェーピング型量子化器の量子化誤差を計算するための出力5g8と出力5g8で出力できなかった新たに発生した量子化誤差量5g9と第1の局部量子化器54の出力信号の符号5g10とを出力とする。このとき振幅制御器5g6は、リミッタ5g3への入力5g1とリミッタ5g3の動作状態を表す信号5g5から、リミッタ5g3で新たに発生する量子化誤差量を計算し、第1の局部量子化器54の出力信号の符号5g10を得ている。
そして、オーバーフロー検出回路53からの出力である第1の局部量子化器54のオーバーフローの状態5g11と第1の局部量子化器54の出力信号の符号5g10とサブループの帰還信号の符号5g7とから、メインループ510とサブループ515が量子化誤差を加算してもオーバーフローしない状態であるかを判断して、第1のノイズシェーピング型量子化器の量子化誤差を計算するための出力5g8と出力5g8で出力できなかった新たに発生した量子化誤差量5g9が決定されている。
図5Hは、誤差蓄積回路5F6の動作を説明するフローチャートであり、図5Eの誤差蓄積回路56の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS54の判断処理をステップS5h4の判断処理へ変更したものが誤差蓄積回路5F6の動作フローになり、出力制御器5F1の動作状態にも基づいて誤差蓄積回路5F6の出力が決定されている。
ステップS5h4の判断処理では、処理選択回路5b6が、信号5b2と信号5b4とが一致するかを判断する事により信号5b1がゼロであるかを判断し、出力制御器5F1が動作しているかどうかを判断する(S5h4)。
以上のように、本実施の形態3の多段型ノイズシェーピング型量子化器は、振幅制御器5g6を追加する事により、リミッタ5g3部分で発生する誤差の一部をメインループ510とサブループ515の状態に応じて出力し、誤差蓄積回路56への量子化誤差の蓄積量をより少なく抑える事ができ、より良好な歪率の信号を出力する事が可能となる。
なお、上記説明において、多段型ノイズシェーピング量子化器について説明したが、本発明の実施の形態3の内容は単積分型ノイズシェーピング型量子化器にも適用することができる。
ここで、図5Cは単積分型ノイズシェーピング型量子化器のブロック図であり、図5Cを参照して、図5Aの多段型ノイズシェーピング型量子化器と同等の効果を有する単積分型ノイズシェーピング型量子化器について説明する。ただし、図5Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図5Cの単積分型ノイズシェーピング型量子化器と図5Aの多段型ノイズシェーピング型量子化器との大きな違いは、図5Cの単積分型ノイズシェーピング型量子化器には図5Aのサブループ515がなく帰還信号521と局部量子化器54出力の符号5b8が誤差蓄積回路に入力されない点と誤差検出回路5c2が追加され、その出力が誤差蓄積回路5c1へ入力されている点である。
図5Cの単積分型ノイズシェーピング型量子化器は、加算器51と、オーバーフロー検出回路53、局部量子化器54、リミッタ55、誤差蓄積回路5c1、誤差検出回路5c2、加算器57、減算器58、遅延器59により1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器として構成されている。
追加された誤差検出回路5c2について説明する。誤差検出回路5c2では、二つの入力信号の大小比較する事により局部量子化器54において発生する量子化誤差の符号の検出又は、局部量子化器54の前後の値の差を計算することで局部量子化器54において発生する量子化誤差の値の計算を行なう。
図5Dは誤差蓄積回路5c1のブロック図を示しており、図5Bの誤差蓄積回路56のブロック図と同じ構成については同じ番号を付し、説明を省略する。誤差蓄積回路5c1は、加算器5b3と処理選択回路5d6から構成され、信号5b1、5b2、5b4、5b7、5d8、5b9を入出力している。
誤差蓄積回路5c1は、誤差検出回路5c2が局部量子化器54において発生する量子化誤差の符号の検出を行なう場合と局部量子化器54において発生する量子化誤差の値の計算を行なう場合とで動作が異なるので、それぞれについて説明をする。
誤差蓄積回路5c1は、リミッタ55からの入力5b1と誤差検出回路5c2からの入力5d8と第1の局部量子化器54のオーバーフローの状態を示す信号5b9とに基づいて出力する信号5b7を決定している点が、図5Bの誤差蓄積回路56と異なる。誤差検出回路5c2が局部量子化器54において発生する量子化誤差の符号の検出を行なう場合には、誤差蓄積回路5c1は、リミッタ55から入力され蓄積されている量子化誤差量5b4を、蓄積されている量子化誤差量5b4の符号と局部量子化器54において発生する量子化誤差の符号5d8の符号とを比較して異符号、且つオーバーフローの状態を示す信号5b9により第1の局部量子化器54がオーバーフローしておらず、且つリミッタ55からの入力5b1がゼロの場合には出力し、同符号の場合又はオーバーフローの状態を示す信号5b9により第1の局部量子化器54がオーバーフローしている場合又は、リミッタ55からの入力5b1がゼロで無い場合には、出力しないように出力信号5b7を制御している。出力する誤差量は、局部量子化器54で発生する量子化誤差分1e3を使用していない場合なのでマージンがゼロの場合には、量子化誤差分1e3の大きさ分だけ出力する。ただし、リミッタ55の動作による判断処理は必ずしも必要では無い。
次に、誤差検出回路5c2が局部量子化器54において発生する量子化誤差の値の計算を行なう場合でマージンがゼロの場合について説明する。まず、オーバーフローの状態を示す信号5b9により第1の局部量子化器54がオーバーフローしている場合には、局部量子化器54で発生する量子化誤差分1e3の範囲から局部量子化器54において発生する量子化誤差の値(誤差検出回路5c2の出力5d8)を減算する事により出力可能な量子化誤差量を求めて出力するように出力信号5b7を制御している。
また、オーバーフローの状態を示す信号5b9により第1の局部量子化器54がオーバーフローしている場合は、局部量子化器54がオーバーフローしない、すなわち、局部量子化器54で発生する量子化誤差分1e3の範囲に局部量子化器54において発生する量子化誤差の値収まるように、誤差蓄積回路5c1から補正出力を出力信号5b7として出力し、補正出力に相当する誤差分を誤差蓄積回路へ加算する。補正出力分は、局部量子化器54において発生する量子化誤差の値から局部量子化器54で発生する量子化誤差分1e3を減算する事により求める。以上の様に出力信号5b7を制御している。
図5Iは、誤差蓄積回路5c1の誤差検出回路5c2が局部量子化器54において発生する量子化誤差の符号の検出を行なう場合の動作を説明するフローチャートであり、図5Eの誤差蓄積回路56の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS56の判断処理をステップS5i6へ変更したものが誤差蓄積回路5c1の動作フローになり、リミッタ55からの入力5b1とオーバーフローの状態を示す信号5b9と蓄積されている量子化誤差量5b4の符号と局部量子化器54において発生する量子化誤差の符号5d8とに基づいて誤差蓄積回路5c1の出力が決定されている。
ステップS5i6の判断処理では、処理選択回路5b6が、蓄積している量子化誤差量5b4の符号と局部量子化器54において発生する量子化誤差の符号5d8の符号とを比較して、局部量子化器54で発生する量子化誤差分1e3を使用しているかを判断する(S5i6)。
図5Jは、誤差蓄積回路5c1の誤差検出回路5c2が局部量子化器54において発生する量子化誤差の値の計算を行なう場合の動作を説明するフローチャートであり、図5Eの誤差蓄積回路56の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS54及びステップS56の判断処理を削除し、ステップS510の処理をステップS5j10へ変更したものが誤差蓄積回路5c1の動作フローになり、オーバーフローの状態を示す信号5b9と局部量子化器54において発生する量子化誤差の値5d8に基づいて誤差蓄積回路5c1の出力が決定されている。
ステップS55において局部量子化器54がオーバーフローしていると判断された場合、ステップS5j10の処理では、局部量子化器54において発生する量子化誤差が局部量子化器54で発生する量子化誤差分1e3の範囲内になるように誤差蓄積回路5c1から補正出力をし、補正出力に相当する誤差分を誤差蓄積回路へ加算する(S5j10)。
以上のように、本実施の形態3の単積分型ノイズシェーピング型量子化器は、誤差蓄積回路5c1が、リミッタ55の振幅制限した量子化誤差量を蓄積して、リミッタ55の動作状態と局部量子化器54がオーバーフローしているかどうかと蓄積されている量子化誤差量5b4の符号と局部量子化器54において発生する量子化誤差の符号又は値5d8とに基づいて、蓄積した量子化誤差を局部量子化器54に帰還させるように制御することにより、ループ全体を安定に保ちつつ、制限された分の量子化誤差を蓄積する事で歪率の劣化を抑える事が可能となる。
また、帰還される量子化誤差を制御してループを安定させることによって、局部量子化器54の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、局部量子化器54の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
(実施の形態4)
図6Aは、本発明の実施の形態4における多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図6Bは、図6Aの誤差蓄積回路66の構成を示すブロック図である。図6Cは、図6Aの多段型ノイズシェーピング型量子化器を簡略化した単積分型ノイズシェーピング型量子化器である。図6Fは、図6Aのリミッタ65の部分に振幅制御器6g6を追加し出力制御器6F1とした多段型ノイズシェーピング型量子化器の構成を示すブロック図である。図6Gは、図6Aのリミッタ65の部分に振幅制御器6g6を追加した構成の出力制御器6F1を示すブロック図である。
図6Aにおいて、本発明の実施の形態4の多段型ノイズシェーピング型量子化器は、メインループ610とサブループ615と微分器618から構成されている。そして、メインループ610は、加算器61と加算器62、オーバーフロー分誤差検出回路63、局部量子化器64、リミッタ65、誤差蓄積回路66、加算器67、減算器68、遅延器69により構成される1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器である。また、サブループ615は、加算器611と局部量子化器612、減算器613、帰還回路614により構成される1次又は2次以上のノイズシェーピング次数を有する多重積分型ノイズシェーピング量子化器である。このサブループ615の出力を減算器616と遅延器617で構成される微分器618によりメインループ610のノイズシェーピング次数に応じて微分した後、加算器619によりメインループ610の出力と加算すると、(サブループのノイズシェーピング次数+1)次の多段型ノイズシェーピング型量子化器が構成される。この帰還回路614は、サブループ615が2次以上のノイズシェーピング特性を持つような伝達関数H(z)の特性を有している。
帰還信号620は、サブループ615の帰還回路614から出力され、加算器62において第1の局部量子化器64の入力信号に対し帰還信号620に応じた所定の値を加減算する事によりサブループ615へ入力される量子化誤差抑え正常に動作させるためのものである。なお、帰還信号620は、サブループ615に構成された積分器の出力でも良く、加算器62において第1の局部量子化器64の量子化テーブルを帰還信号620に応じてシフトする方法でも良く、サブループ615へ入力される量子化誤差を抑え正常に動作させるために、帰還信号620に基づいて第1の局部量子化器64の出力信号を変化させてサブループ615への入力信号の範囲を制御する方法であれば良い。
オーバーフロー分誤差検出回路63は、第1の局部量子化器64におけるオーバーフローを前もって検出している。これは、加算器62からの信号が局部量子化器64への入力範囲を超えているときにオーバーフローを起こすとし、検出を行なう。そして、オーバーフロー分誤差検出回路63は、オーバーフローを検出したときに、加算器62からの入力信号を、オーバーフロー分の量子化誤差出力と、オーバーフロー分を差し引いて振幅制限した第1の局部量子化器64への入力信号とに分割する。
また、オーバーフロー分誤差検出回路63は、オーバーフローの検出に関わらず第1の局部量子化器64への出力信号の符号(第1の局部量子化器64の出力信号の符号)を判別し、誤差蓄積回路66へ第1の局部量子化器64出力の符号を示す信号を出力してよい。この第1の局部量子化器64出力の符号を示す信号は、第1の局部量子化器64の動作状態を意味している。
リミッタ65は、微分器618あるいは遅延器617からの出力により、第1の局部量子化器64の出力の振幅を制御して加算器619への出力を決定している。つまり、リミッタ65は、微分器618の状態(遅延器617からの値)に基づき、微分器618の出力値と加算器619への出力との和が多段型ノイズシェーピング回路の出力階調数を超えないように、第1の局部量子化器64から入力される値の上限値及び下限値を制御して出力している。これにより、微分器618の出力値に応じて、第1の局部量子化器64の出力範囲を可変し広げる事が可能となる。
そしてリミッタ65は、第1の局部量子化器64から入力される信号を振幅制限して出力すると同時に、振幅制限した分の量子化誤差を、誤差蓄積回路66に対して出力する。また、リミッタ65は、第1の局部量子化器64出力の符号を判別し、誤差蓄積回路66へ第1の局部量子化器64出力の符号を示す信号を出力している。なお、第1の局部量子化器64出力の符号と加算器619へ入力するリミッタ65出力の符号は同じであるためリミッタ65においてリミッタ65出力の符号を判別して誤差蓄積回路66へリミッタ65出力の符号を出力しても良い。また、第1の局部量子化器64出力の符号の判別はオーバーフロー分誤差検出回路63でも行なえるため、これらのいずれか一つ以上で検出を行なえば良い。
誤差蓄積回路66は、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の量子化誤差出力及び、リミッタ65において新たに発生する量子化誤差を蓄積し、第1の局部量子化器64の動作状態の信号(第1の局部量子化器64の出力信号の符号及びオーバーフロー検出状態)とサブループ615の帰還回路614の出力信号621の符号を参照して、蓄積された量子化誤差分の信号を出力制御して、加算器67へ入力している。
図6A、図6B及び図1Eを用いて誤差蓄積回路66について詳細に説明する。図6Bに示すように、誤差蓄積回路66は、加算器6b3,6b12と処理選択回路6b6、動作状態検出回路6b14、6b15から構成され、信号6b1、6b2、6b4、6b5、6b7〜6b11、6b13を入出力している。
オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10とリミッタ65において発生する量子化誤差6b11が加算器6b12で加算され、新たに発生する量子化誤差6b1として加算器6b3に入力され、処理選択回路6b6からの出力信号6b2(蓄積されていた量子化誤差)と加算されて、信号6b4(新たに蓄積された量子化誤差量)として処理選択回路6b6へ入力される。
動作状態検出回路6b14は、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10がゼロかどうかを検出する事により、オーバーフロー分誤差検出回路63が動作しているかどうかを判別して第1の局部量子化器64のオーバーフロー状態6b9を出力している。
動作状態検出回路6b15は、リミッタ65において発生する量子化誤差6b11がゼロかどうかを検出する事により、リミッタ65が動作しているかどうかを判別してリミッタ65の動作状態を表す信号6b13を出力している。
処理選択回路6b6は、第1の局部量子化器64出力の符号を示す信号6b8とサブループ615からの帰還信号6b5(帰還信号621)とオーバーフロー分誤差検出回路63からの出力信号と第1の局部量子化器64のオーバーフロー状態6b9とリミッタ65の動作状態を表す信号6b13とを参照して蓄積された量子化誤差量6b2及び出力6b7を制御する。
次に、誤差蓄積回路66の出力(出力6b7)の決定方法について説明する。まず、第1の局部量子化器64がオーバーフローしないために、第1の局部量子化器64のオーバーフロー状態6b9の参照及び、第1の局部量子化器64出力の符号6b8と、サブループ615からの帰還信号6b5とを参照する。第1の局部量子化器64がオーバーフローしている場合は、量子化誤差部分1e3が正常な状態よりも大きくなっている事が考えられ、2つの信号6b8と6b5の符号が同符号の場合は、サブループ615からの帰還入力分1e2(図1E参照)の部分が使用されているので、マージンがゼロの場合には処理選択回路6b6は誤差蓄積回路66の出力6b7をゼロへリミットする必要がある。
また、第1の局部量子化器64のオーバーフローしていない且つ、第1の局部量子化器64出力の符号6b8と、サブループ615の帰還信号6b5とを参照して、2つの信号の符号が異符号の場合は、量子化誤差部分1e3が正常な状態で、サブループ615からの帰還入力分1e2の部分が使用されていないので、処理選択回路6b6は誤差蓄積回路66の出力6b7をサブループ615からの帰還入力分1e2の範囲に収まるようにリミットする。
次に、第2の局部量子化器612がオーバーフローしないための条件を求める。まず、第2の局部量子化器612がオーバーフローしない状態を保つことが出来るサブループ615の入力として許容される量子化誤差の大きさを、第2の局部量子化器612の入力範囲をサブループ615の帰還回路614のゲインで除算する事により求める。
そして、第1の局部量子化器64出力の符号6b8と、サブループ615の帰還信号6b5とを参照して、二つの符号が同符号の場合はオーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10とリミッタ65において発生する量子化誤差6b11を加算した量子化誤差とサブループ615の帰還入力分との極性が一致するため、サブループ615からの帰還入力分1e2を含めて第2の局部量子化器612がオーバーフローしない状態を保つことが出来るサブループ615の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路66の出力6b7をリミットする必要がある。
また、第1の局部量子化器64出力の符号6b8と、サブループ615の帰還信号6b5とを参照して、二つの符号が異符号の場合はオーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10とリミッタ65において発生する量子化誤差6b11を加算した量子化誤差がサブループ615の帰還入力分と異符号なため、サブループ615からの帰還入力分1e2を考慮する必要がなく第2の局部量子化器612がオーバーフローしない状態を保つことが出来るサブループ615の入力として許容される量子化誤差の大きさを超えないように誤差蓄積回路の出力6b7をリミットする。
そして、第1の局部量子化器64と第2の局部量子化器612の両方が安定であると判断されたとき(第1の局部量子化器64出力の符号6b8と帰還信号6b5が異符号であると判断されたとき)に、両局部量子化器をオーバーフローさせないためにかけるリミットの大きい方、つまりリミット後の値の小さい方の値を出力6b7として出力する。
このように、処理選択回路6b6は、第1の及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値を求め、第1の局部量子化器64出力の符号とサブループ615の帰還信号621の符号とから、誤差蓄積回路66の出力6b7を決定する。
なお、本実施の形態において、第1及び第2の局部量子化器が共にオーバーフローしない状態になるような制限値は、回路設計の段階で予め決められた値である。ただし、サブループ615からの帰還信号621の符号で無く値そのものを参照した場合、制限値を各タイミングにおいて計算し、制限値を切り替えるような構成とすることにより、より高精度に制御する事が可能となる。これは、帰還信号621の値により、メインループ610の第1局部量子化器64の帰還入力分の余裕分がより正確に得られるからである。同時にサブループ615へ入力される量子化誤差の範囲もより高精度に限定する事が可能となる。
次に、図6Eを用いて、誤差蓄積回路66の動作について説明する。図6Eは、図6Aの誤差蓄積回路66の動作を示すフローチャートである。
まず、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10とリミッタ65において発生する量子化誤差6b11を加算した新たに発生した量子化誤差入力6b1が誤差蓄積回路66に入力される(S61)。
次に、新たに発生した量子化誤差入力6b1と蓄積されていたオーバーフロー分の量子化誤差量6b2とを加算する(S62)。
そして、処理選択回路6b6は、ステップS62での加算結果6b4の最大値もしくは最小値を振幅制限し蓄積する。この蓄積された値が量子化誤差量6b2となる。なお、ここで、振幅制限するための最大値・最小値は、処理選択回路6b6内に蓄積可能な最大値・最小値という意味であり、処理選択回路6b6で蓄積可能な最大値・最小値の範囲内に、入力された6b4が収まっていれば振幅制限されない(S63)。
そして、処理選択回路6b6は、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10がゼロであるか否かにより、第1の局部量子化器64のオーバーフロー状態6b9を求め、オーバーフロー分誤差検出回路63が第1の局部量子化器64のオーバーフローを検出したかどうかを判断する(S64)。
そして、ステップS64で、オーバーフローが検出されていないと判断されたならば、処理選択回路6b6は、リミッタ65において発生する量子化誤差6b11がゼロであるか否かによりリミッタ65の動作状態を表す信号6b13を求め、リミッタ65が動作しているかどうかを判断する(S65)。
ステップS65で、リミッタ65が動作していないと判断されたならば、処理選択回路6b6は、第1の局部量子化器64出力の符号を示す信号6b8とサブループ615からの帰還信号6b5(帰還信号621)を参照して、符号が異符号であるかどうかを判断する(S66)。
ステップS66で符号が異符号と判断されたならば、処理選択回路6b6内に蓄積されている値が、出力6b7として出力可能な所定の制限値を超えているかどうかを判断する(S67)。
ステップS67において、処理選択回路6b6に蓄積されていた値が所定の制限値(誤差蓄積回路66から1回に返せる量子化誤差量)よりも大きいと判断されたならば、所定の制限値を出力6b7として出力し、処理選択回路6b6に蓄積されていた値から所定の制限値を減算し減算された結果を量子化誤差として蓄積する(S68)。
また、ステップS67において、処理選択回路6b6に蓄積されていた値が所定の制限値よりも小さいと判断されたならば、蓄積されていた量子化誤差を出力6b7として、全て出力し、蓄積している量子化誤差を0とする(S69)。
また、ステップS64で、オーバーフローが検出されている場合と、ステップS65においてリミッタが動作している場合と、ステップS66において信号6b8と帰還信号6b5が同符号である場合は、誤差蓄積回路65から誤差を出力すると、第1及び第2の局部量子化器がオーバーフローを起こす可能性がある不安定な状態であるため、誤差蓄積回路66からの出力6b7をゼロにする、もしくは出力しない(S610)。
以上のように構成することで、オーバーフロー分誤差検出回路63及び、リミッタ65の動作において発生する量子化誤差による第1の局部量子化器64のオーバーフローを抑え、メインループ610を安定に保ちつつ、制限された分の量子化誤差を蓄積・出力制御する事で歪率の劣化を抑える事が可能となる。
ここで、ステップS63における処理選択回路6b6による量子化誤差蓄積量の最大値もしくは最小値を振幅制限する処理は、オーバーフロー分誤差検出回路63又はリミッタ65が頻繁に動作するような状態で量子化誤差を帰還するタイミングが遅くなり、量子化誤差がノイズとなってしまう事を防ぐためのもので、オーバーフロー分誤差検出回路63又はリミッタ65が頻繁に動作しない場合はこの処理を行わなくても正常に動作する。
さらに、第1の局部量子化器64のオーバーフローを抑える事によって、サブループ615の帰還回路614の出力620に応じて第1の局部量子化器64の入力信号に対し所定の値を加減算して、サブループ615へ入力される量子化誤差を抑えサブループ615を正常に動作させる事が可能となり、メインループ610及び、サブループ615の安定度を向上させる事が可能となる。
また、第2のノイズシェーピング型量子化器615の帰還回路614の出力信号620に基づき、第1の局部量子化器64の入力信号に対し所定の値を加減算する事により第2の局部量子化器612へ入力される量子化誤差を抑え正常に動作させることによって、この動作を常に維持するように誤差蓄積回路66で量子化誤差の蓄積及び、誤差蓄積回路66に蓄積した量子化誤差の帰還を行う事で、第2のノイズシェーピング型量子化器615を安定に保つ事が可能となる。
また、メインループ610へ帰還される量子化誤差を制御してメインループ610を安定させることによって、第1の局部量子化器66の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、第1の局部量子化器64の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
なお、上記説明の構成において、リミッタ65の部分へ振幅制御器6g6を追加し、二つを併せて出力制御器6F1とした構成に関しても、本発明の実施の形態4の内容を適用することができる。
ここで、図6Fは図6Aのリミッタ65の部分に振幅制御器6g6を追加し出力制御器6F1とした多段型ノイズシェーピング型量子化器の構成を示すブロック図であり、図6Fを参照して、図6Aの多段型ノイズシェーピング型量子化器と同等以上の効果を有する多段型ノイズシェーピング型量子化器について説明する。ただし、図6Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図6Fの多段型ノイズシェーピング型量子化器と図6Aの多段型ノイズシェーピング型量子化器との違いは、図6Fのリミッタ65の部分に振幅制御器6g6が追加され出力制御器6F1となっている点である。図6Gは、図6Aのリミッタ65の部分に振幅制御器6g6を追加した構成の出力制御器6F1を示すブロック図である。
出力制御器6F1は、リミッタ6g3と振幅制御器6g6から構成され、信号6g1、6g2、6g4、6g5、6g7〜6g11を入出力している。リミッタ6g3は、微分器618あるいは遅延器617からの出力6g2により、第1の局部量子化器64の出力6g1の振幅を制御して加算器619への出力6g4を決定している。つまり、リミッタ6g3は、微分器618の状態(遅延器617からの値)6g2に基づき、微分器618の出力値と加算器619への出力6g4との和が多段型ノイズシェーピング回路の出力階調数を超えないように、第1の局部量子化器64から入力される値の上限値及び下限値を制御して出力している。これにより、微分器618の出力値に応じて、第1の局部量子化器64の出力範囲を可変し広げる事が可能となる。
振幅制御器6g6は、リミッタ6g3への入力6g1とリミッタ6g3の動作状態を表す信号6g5とサブループの帰還信号の符号6g7とオーバーフロー分誤差検出回路63からの出力である第1の局部量子化器64のオーバーフローの状態を示す信号6g11とを入力とし、第1のノイズシェーピング型量子化器の量子化誤差を計算するための出力6g8と出力6g8で出力できなかった新たに発生した量子化誤差量6g9と第1の局部量子化器64の出力信号の符号6g10とを出力とする。
振幅制御器6g6は、リミッタ6g3への入力6g1とリミッタ6g3の動作状態を表す信号6g5から、リミッタ6g3で新たに発生する量子化誤差量を計算し、第1の局部量子化器64の出力信号の符号6g10を得る。
そして、オーバーフロー分誤差検出回路63からの出力である第1の局部量子化器64のオーバーフローの状態6g11と第1の局部量子化器64の出力信号の符号6g10とサブループの帰還信号の符号6g7とから、メインループ610とサブループ615が量子化誤差を加算してもオーバーフローしない状態であるかを判断して、第1のノイズシェーピング型量子化器の量子化誤差を計算するための出力6g8と出力6g8で出力できなかった新たに発生した量子化誤差量6g9が決定されている。
図6Hは、誤差蓄積回路6F6の動作を説明するフローチャートであり、図6Eの誤差蓄積回路66の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS65の判断処理をステップS6h5の判断処理へ変更したものが誤差蓄積回路6F6の動作フローになり、出力制御器6F1の動作状態にも基づいて誤差蓄積回路6F6の出力が決定されている。
ステップS6h5の判断処理では、処理選択回路6b6が、信号6b2と信号6b4とが一致するかを判断する事により信号6b1がゼロであるかを判断し、出力制御器6F1が動作しているかどうかを判断する(S6h5)。
以上のように、本実施の形態4の多段型ノイズシェーピング型量子化器は、振幅制御器6g6を追加する事により、リミッタ6g3部分で発生する誤差の一部をメインループ610とサブループ615の状態に応じて出力し、誤差蓄積回路66への量子化誤差の蓄積量をより少なく抑える事ができ、より良好な歪率の信号を出力する事が可能となる。
なお、上記説明において、多段型ノイズシェーピング量子化器について説明したが、本発明の実施の形態4の内容は単積分型ノイズシェーピング型量子化器にも適用することができる。
ここで、図6Cは単積分型ノイズシェーピング型量子化器のブロック図であり、図6Cを参照して、図6Aの多段型ノイズシェーピング型量子化器と同等の効果を有する単積分型ノイズシェーピング型量子化器について説明する。ただし、図6Aと同様の構成については同じ番号を付し、説明を省略する。
まず、図6Cの単積分型ノイズシェーピング型量子化器と図6Aの多段型ノイズシェーピング型量子化器との大きな違いは、図6Cの単積分型ノイズシェーピング型量子化器には図6Aのサブループ615がなく帰還信号621と局部量子化器64出力の符号を示す信号6b8が誤差蓄積回路に入力されない点と誤差検出回路6c2が追加され、その出力が誤差蓄積回路6c1へ入力されている点である。
図6Cの単積分型ノイズシェーピング型量子化器は、加算器61と、オーバーフロー分誤差検出回路63、局部量子化器64、リミッタ65、誤差蓄積回路6c1、誤差検出回路6c2、加算器67、減算器68、遅延器69により1次のノイズシェーピング次数を有する単積分型ノイズシェーピング型量子化器として構成されている。
追加された誤差検出回路6c2について説明する。誤差検出回路6c2では、二つの入力信号の大小比較する事により局部量子化器64において発生する量子化誤差の符号の検出又は、局部量子化器64の前後の値の差を計算することで局部量子化器64において発生する量子化誤差の値の計算を行なう。
図6Dは誤差蓄積回路6c1のブロック図を示しており、図6Bの誤差蓄積回路66のブロック図と同じ構成については同じ番号を付し、説明を省略する。誤差蓄積回路6c1は、誤差検出回路6c2が局部量子化器64において発生する量子化誤差の符号の検出を行なう場合と局部量子化器64において発生する量子化誤差の値の計算を行なう場合とで動作が異なるので、それぞれについて説明をする。誤差蓄積回路6c1は、加算器6b3と処理選択回路6d6、動作状態検出回路6b14、6b15から構成され、信号6b1、6b2、6b4、6b7、6d8、6b9〜6b11、6b13を入出力している。誤差蓄積回路6c1は、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10とリミッタ65において発生する量子化誤差6b11と誤差検出回路6c2からの入力に基づいて出力する信号6b7を決定している点が、図6Eの誤差蓄積回路66と異なる。
誤差検出回路6c2が局部量子化器64において発生する量子化誤差の符号の検出を行なう場合には、誤差蓄積回路6c1は、オーバーフロー分誤差検出回路63とリミッタ65から入力され蓄積されている量子化誤差量6b4を、蓄積されている量子化誤差量6b4の符号と局部量子化器64において発生する量子化誤差の符号6d8の符号とを比較して異符号、且つ第1の局部量子化器64のオーバーフロー状態6b9により局部量子化器64がオーバーフローしておらず、且つリミッタ65の動作状態を表す信号6b13によりリミッタ65が動作していない場合には出力し、蓄積されている量子化誤差量6b4の符号と局部量子化器64において発生する量子化誤差の符号6d8の符号とを比較して同符号の場合又は、第1の局部量子化器64のオーバーフロー状態6b9により局部量子化器64がオーバーフローしている場合又は、リミッタ65の動作状態を表す信号6b13によりリミッタ65が動作している場合には、出力しないように出力信号6b7を制御している。出力する誤差量は、局部量子化器64で発生する量子化誤差分1e3を使用していない場合なのでマージンがゼロの場合には、量子化誤差分6e3の大きさ分だけ出力する。ただし、リミッタ65の動作による判断処理は必ずしも必要では無い。
次に、誤差検出回路6c2が局部量子化器64において発生する量子化誤差の値の計算を行なう場合でマージンがゼロの場合について説明する。
まず、第1の局部量子化器64のオーバーフロー状態6b9により局部量子化器64がオーバーフローしていない場合には、局部量子化器64で発生する量子化誤差分1e3の範囲から局部量子化器64において発生する量子化誤差の値を減算する事により出力可能な量子化誤差量を求める事ができ、誤差蓄積回路6c1から出力可能な量子化誤差量を出力するように出力信号6b7を制御している。また、第1の局部量子化器64のオーバーフロー状態6b9により局部量子化器64がオーバーフローしている場合には、出力しないように出力信号6b7を制御している。
図6Iは、誤差蓄積回路6c1の誤差検出回路6c2が局部量子化器64において発生する量子化誤差の符号の検出を行なう場合の動作を説明するフローチャートであり、図6Eの誤差蓄積回路66の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS66の判断処理をステップS6i6へ変更したものが誤差蓄積回路6c1の動作フローになり、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10(第1の局部量子化器64のオーバーフロー状態6b9)とリミッタ65において発生する量子化誤差6b11(リミッタ65の動作状態を表す信号6b13)と蓄積されている量子化誤差量6b4の符号と局部量子化器64において発生する量子化誤差の符号6d8とに基づいて誤差蓄積回路6c1の出力が決定されている。
ステップS6i6の判断処理では、処理選択回路6b6が、蓄積している量子化誤差量6b4の符号と局部量子化器64において発生する量子化誤差の符号6d8の符号とを比較して、局部量子化器64で発生する量子化誤差分1e3を使用しているかを判断する(S6i6)。
図6Jは、誤差蓄積回路6c1の誤差検出回路6c2が局部量子化器64において発生する量子化誤差の値の計算を行なう場合の動作を説明するフローチャートであり、図6Eの誤差蓄積回路66の動作を説明するフローチャートと同じ構成については同じ番号を付し、説明を省略する。
ステップS65、ステップS66の判断処理を削除したものが誤差蓄積回路6c1の動作フローになり、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10(第1の局部量子化器64のオーバーフロー状態6b9)とリミッタ65において発生する量子化誤差6b11と局部量子化器64において発生する量子化誤差の値6d8とに基づいて誤差蓄積回路6c1の出力が決定されている。
以上のように、本実施の形態4の単積分型ノイズシェーピング型量子化器は、誤差蓄積回路6c1が、オーバーフロー分誤差検出回路63の振幅制限した量子化誤差量とリミッタ65の動作により発生した量子化誤差を蓄積して、オーバーフロー分誤差検出回路63から出力されるオーバーフロー分の信号6b10(第1の局部量子化器64のオーバーフロー状態6b9)とリミッタ65において発生する量子化誤差6b11(リミッタ65の動作状態を表す信号6b13)と蓄積されている量子化誤差量6b4の符号と局部量子化器64において発生する量子化誤差の符号又は値6d8に基づいて、蓄積した量子化誤差を局部量子化器64に帰還させるように制御することにより、局部量子化器64のオーバーフローを抑え、ループ全体を安定に保ちつつ、制限された分の量子化誤差を蓄積する事で歪率の劣化を抑える事が可能となる。
また、帰還される量子化誤差を制御してループを安定させることによって、局部量子化器64の入力範囲におけるマージンを無くす、もしくはマージンの割合を小さくできるので、局部量子化器64の全入力範囲に対する音楽信号入力の割合を増加させることができ、音楽信号出力の振幅を増加させる事が可能となる。
なお、上記の説明においては、単積分型を例にとり説明を行なったが、同様の方法でサブループを持たない構成の2次以上のノイズシェーピング型量子化器に関しても適応する事が可能である。
以上の構成に限らず、量子化誤差を発生する全てのリミッタ及び、所定のレベルで信号を制限し分割するオーバーフロー分誤差検出回路、リミッタやオーバーフロー分誤差検出回路により発生した量子化誤差を蓄積する全ての誤差蓄積回路に適用する事が可能である。