JP2006319941A - Firフィルタ演算器 - Google Patents

Firフィルタ演算器 Download PDF

Info

Publication number
JP2006319941A
JP2006319941A JP2005203431A JP2005203431A JP2006319941A JP 2006319941 A JP2006319941 A JP 2006319941A JP 2005203431 A JP2005203431 A JP 2005203431A JP 2005203431 A JP2005203431 A JP 2005203431A JP 2006319941 A JP2006319941 A JP 2006319941A
Authority
JP
Japan
Prior art keywords
data
input data
register
outputs
adder
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.)
Granted
Application number
JP2005203431A
Other languages
English (en)
Other versions
JP5022577B2 (ja
Inventor
Yukito Takeda
幸人 武田
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.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
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 Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2005203431A priority Critical patent/JP5022577B2/ja
Publication of JP2006319941A publication Critical patent/JP2006319941A/ja
Application granted granted Critical
Publication of JP5022577B2 publication Critical patent/JP5022577B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】デュアルポートRAMを使用せずにフィルタ演算処理の高速化を図る。
【解決手段】対称形の有限インパルス応答を示すフィルタ係数系列と入力データ系列とのたたみ込み演算を行うFIRフィルタ演算器において、第1のデータ対を格納する第1のシングルポートRAMと、第2のデータ対を格納する第2のシングルポートRAMと、前記第1及び前記第2のシングルポートRAMから前記第1及び前記第2のデータ対を読み出して当該データ対を構成する2個の入力データを交互に加算又は減算する入力データ演算部と、前記入力データ演算部の演算結果とそれに対応するフィルタ係数との乗算結果を累積加算する係数乗加算部と、を有する。
【選択図】 図1

Description

本発明は、FIRフィルタ演算器に関する。
音声や画像のデジタル信号処理では、様々なFIR(Finite Impulse Response)フィルタ演算処理が実行される。
例えば、デジタルオーディオ機器の場合、アップサンプリング後のインターポレーション・フィルタ演算処理や、ダウンサンプリング前のデシメーション・フィルタ演算処理等がある。なお、これらのフィルタ演算処理を実現するFIRフィルタ演算器として、一般的に、直線位相FIRフィルタ(例えば、以下に示す特許文献1を参照)が用いられる。
さらに、デジタル受信器の場合、いわゆる90°移相処理があり、この処理を実現するFIRフィルタ演算器として、ヒルベルトフィルタ演算器(例えば、以下に示す特許文献2を参照)が用いられる。なお、ヒルベルトフィルタ演算器は、つぎの式(1)で表現される周波数特性H(ω)を有する。すなわち、ヒルベルトフィルタ演算器は、振幅特性を周波数特性に依らず一定とさせるとともに、正の周波数領域では位相を“π/2”遅らせ、負の周波数領域では位相を“π/2”進ませる特性を有する。但し、ωsは標本化角周波数である。
H(ω)=−j(0<ω<ωs/2)=j(−ωs/2<ω<0) …式(1)
ところで、前述したようなFIRフィルタ演算器は、線形時不変システムに基づき、有限インパルス応答を示すフィルタ係数系列Cnと入力データ系列x(t−n)とのたたみ込み演算を行うことで、直線位相特性の出力データy(t)を得るものである。なお、たたみ込み演算とは、つぎの式(2)で表現される。
y(t)=Σx(t−n)*Cn(但し、n=0〜N)
=x(t)*C0+x(t−1)*C1+・・・+x(t−N)*CN …式(2)
また、FIRフィルタ演算器は、フィルタ係数系列Cnの総数によって、偶数タップの場合と奇数タップの場合とに大別される。図8は、偶数タップの一例として“8”タップのFIRフィルタ演算器の概念的な構成を示す。図9は、奇数タップの一例として“7”タップのFIRフィルタ演算器の概念的な構成を示す。なお、タップとは、図8及び図9において、後述の遅延器群1からの所定数分の入力データの取り出し点のことである。
なお、直線位相FIRフィルタ演算器の場合、有限インパルス応答を示すフィルタ係数系列Cn(n=0〜N)の値が、偶対称形(f(x)=f(−x))を成す特徴がある。例えば、図8に示した例では、フィルタ係数{C0、C7}、フィルタ係数{C1、C6}、フィルタ係数{C2、C5}、フィルタ係数{C3、C4}の各データ対の中の各値は同一の値を示す。
また、ヒルベルトフィルタ演算器の場合も同様に、有限インパルス応答を示すフィルタ係数系列Cn(n=0〜N)の値が、奇対称形(f(x)=−f(−x))を成す特徴がある。例えば、図8に示した例では、フィルタ係数{−C0、C7}、フィルタ係数{−C1、C6}、フィルタ係数{−C2、C5}、フィルタ係数{−C3、C4}の各データ対の中の各絶対値は同一の値を示す。
以下、FIRフィルタ演算器として、図8に示す“8”タップの場合であり且つ直線位相FIRフィルタ演算器である場合を例に挙げて説明する。
図10は、従来例1に係るFIRフィルタ演算器のハードウェア構成を示す。
データRAM4は、入力データ系列Dnを格納するシングルポートのRAMであり、レジスタ5は、データRAM4から1マシン・サイクル毎に読み出された入力データ系列Dn(n=0〜N)の各入力データDnを一時的に格納する。係数格納ROM6は、フィルタ係数系列Cn(n=0〜N)を格納するROMであり、レジスタ7は、係数格納ROM6から1マシン・サイクル毎に読み出されたフィルタ係数系列Cn(n=0〜N)の各フィルタ係数Cnを一時的に格納する。
乗算器8は、レジスタ5から1マシン・サイクル毎に遅延出力される入力データDnとレジスタ7から1マシン・サイクル毎に遅延出力されるフィルタ係数Cnとの乗算を行うものであり、レジスタ9は、乗算器8の乗算結果を一時的に格納する。加算器10は、レジスタ9から1マシン・サイクル毎に遅延出力される乗算結果とレジスタ11から1マシン・サイクル毎に遅延出力される前回の累積加算結果との累積加算を行うものであり、レジスタ11は、加算器10の累積加算結果を一時的に格納するとともに出力データy(t)として1マシン・サイクル毎に出力する。
図11は、図10に示した従来例1に係るFIRフィルタ演算器の動作タイミングを示す。同図に示す時間t=“0”から時間t=“9”までの各期間が、1マシン・サイクルに相当する。図11に示すように、従来例1では、時間t=“0”から時間t=“9”まで、すなわち10マシン・サイクル分、フィルタ演算処理を実行する。この結果、時間t=“9”のとき、最終的な出力データy(9){=A0+A1+・・・+A7}が、レジスタ11より得られる。
ところで、直線位相FIRフィルタの場合、前述したように、有限インパルス応答を示すフィルタ係数系列Cn(n=0〜N)が左右対称形を成す特徴がある。そこで、同一の値を示すフィルタ係数Cnの乗算対象となる入力データDnのデータ対(以下、データ対と称する。)を、当該フィルタ係数Cnとの乗算前に予め加算することで、トータル乗算回数を半分に削減できるため効率的である。
例えば、フィルタ係数{C0、C1、C2、C3}との乗算前に、つぎの式(3)で示すように、データ対{D0、D7}、データ対{D1、D6}、データ対{D2、D5}、データ対{D3、D4}の各中身を予め加算しておく。
y(t)=(D0+D7)*C0+(D1+D6)*C1+(D2+D5)*C2
+(D3+D4)*C3 … 式(3)

図12は、式(3)に基づく従来例2に係る直線位相FIRフィルタ演算器のハードウェア構成を示す。
図10に示した従来例1との相違点は、レジスタ5と乗算器8の間に、レジスタ12、加算器13、レジスタ14を設けた点にある。
まず、データRAM4から2マシン・サイクル毎に各データ対が読み出される。すなわち、データRAM4から1マシン・サイクル毎に各データ対の一方及び他方の入力データDnが交互に読み出される。
レジスタ5は、データRAM4から交互に読み出された各データ対の一方及び他方の入力データDnを、レジスタ12及び加算器13の一方の入力に対して、1マシン・サイクル分遅延出力させる。
レジスタ12は、レジスタ5から1マシン・サイクル毎に交互に遅延出力された各データ対の一方及び他方の入力データDnを、更に、1マシン・サイクル分、加算器13の他方の入力に対して遅延出力させる。このレジスタ12を設けることで、加算器13の一方及び他方の入力では、各データ対の一方及び他方の入力データDnの同期が図られる。
加算器13は、2マシン・サイクル毎に、レジスタ12から遅延出力された各データ対の一方の入力データDnと、レジスタ5から遅延出力された各データ対の他方の入力データDnとの加算を行い、当該加算の結果をレジスタ14に一時的に格納する。そして、レジスタ14は、加算器13の加算結果を、1マシン・サイクル分、乗算器8の一方の入力へと遅延出力させる。
図13は、図12に示した従来例2のFIRフィルタ演算器の動作タイミングを示す。同図に示す時間t=“0”から時間t=“10”までの各期間が、1マシン・サイクルに相当する。図13に示すように、従来例2では、時間t=“0”から時間t=“10”まで、すなわち11マシン・サイクル分、フィルタ演算処理を実行する。この結果、時間t=“10”のとき、最終的な出力データy(10){=A0+A1+・・・+A7}が、レジスタ11より得られる。
図14は、従来例2とは異なる、式(3)に基づく従来例3のFIRフィルタ演算器のハードウェア構成を示す。なお、以下の説明で、従来例2と従来例3の1マシン・サイクルの周期は同一長とする。
図12に示した従来例2との相違点は、シングルポートのデータRAM4をデュアルポートのデータRAM15に置き換えた点と、データRAM15と加算器13の間の構成として、各ポートのデータバスにレジスタ16とレジスタ17を夫々設けた点である。
すなわち、従来例2のように2マシン・サイクル毎ではなく、データRAM15から各データ対の一方及び他方の入力データDnが、1マシン・サイクル毎に同時に読み出される。そして、レジスタ16は、データRAM15から読み出された各データ対の一方の入力データDnを、加算器13の一方の入力に対して、1マシン・サイクル分遅延出力させる。同様に、レジスタ17は、データRAM15から読み出された各データ対の他方の入力データDnを、加算器13の他方の入力に対して、1マシン・サイクル分遅延出力させる。この結果、加算器13は、従来例2のように2マシン・サイクル毎ではなく、各データ対の一方及び他方の入力データDnの加算を、1マシン・サイクル毎に実行する。
図15は、図14に示した従来例3に係るFIRフィルタ演算器の動作タイミングを示す。同図に示す時間t=“0”から時間t=“6”までの各期間が、1マシン・サイクルに相当する。図15に示すように、従来例3では、時間t=“0”から時間t=“6”まで、すなわち7マシン・サイクル分、フィルタ演算処理を実行する。この結果、時間t=“6”のとき、最終的な出力データy(6){=A0+A1+・・・+A7}が、レジスタ11より得られる。
特開2001−77669号公報 特開2003−283255号公報
まず、図10に示した従来例1では、フィルタ係数系列Cn(n=0〜N)が左右対称形である特徴を有効に活用しておらず、フィルタ係数Cnと入力データDnとの乗算回数が多いという欠点がある。
つぎに、図12に示した従来例2では、フィルタ係数系列Cn(n=0〜N)が左右対称形である特徴を有効に活用しており、フィルタ係数Cnと入力データDnとの乗算回数が減少するという利点がある。しかしながら、図11に示した従来例1の動作タイミングと対比した場合、フィルタ演算処理に要するトータル時間自体に大きな変化が見られない。よって、フィルタ演算処理に要するトータル時間の大幅な短縮を図るためには、1マシン・サイクルあたりの期間を短縮させる必要があるが、トータル消費電力の増加が免れないので好ましくない。
つぎに、図14に示した従来例3では、フィルタ係数系列Cn(n=0〜N)が左右対称形である特徴を有効に活用しており、フィルタ係数Cnと入力データDnとの乗算回数が減少するという利点がある。さらに、図14に示した従来例3では、図12に示した従来例2と対比して、フィルタ演算処理に要するトータル時間、すなわち、マシン・サイクル数が略半分に抑えられる。
しかしながら、図14に示した従来例3では、入力データ系列Dn(n=0〜N)を格納するメモリとして、デュアルポートRAMが必要となる。ここで、デュアルポートRAMの回路面積は、同一の記憶容量のシングルポートRAMの回路面積と対比して略2倍の回路面積を示し、半分の記憶容量のシングルポートRAMを2組設けた場合の回路面積と対比しても大きくなる。
このように、図14に示した従来例3では、フィルタ演算処理に要するトータル時間は短縮されるという利点があるが、デュアルポートRAMを採用しているが故に回路面積が大きくなり、ユーザーへの安価なFIRフィルタ演算器の提供が困難であった。
前述した課題を解決するための主たる本発明は、対称形の有限インパルス応答を示すフィルタ係数系列と入力データ系列とのたたみ込み演算を行うFIRフィルタ演算器において、第1のデータ対を格納する第1のシングルポートRAMと、第2のデータ対を格納する第2のシングルポートRAMと、前記第1及び前記第2のシングルポートRAMから前記第1及び前記第2のデータ対を読み出して当該データ対を構成する2個の入力データを交互に加算又は減算する入力データ演算部と、前記加算の結果とそれに対応するフィルタ係数との乗算結果を累積加算する係数乗加算部と、を有することとする。
本発明によれば、デュアルポートRAMを使用せずにフィルタ演算処理の高速化が可能なFIRフィルタ演算器を提供することができる。
<第1実施形態>
===直線位相FIRフィルタ演算器(2チャンネル処理)の構成===
本発明の第1実施形態に係る直線位相FIRフィルタ演算器のハードウェア構成例を図1に示す。
直線位相FIRフィルタ演算器は、例えば、A/D変換装置やD/A変換装置に内蔵若しくは外付けのインターポレーション・フィルタ回路やデシメーション・フィルタ回路、若しくは、標本化周波数変換装置に内蔵若しくは外付けのアンチエイリアス・フィルタ回路として提供される。また、夫々のフィルタ回路は、一般的に、CPU等と対比して高速な積和演算処理が可能なDSP(Digital Signal Processor)として提供される。
本実施形態に係るフィルタ演算処理(たたみ込み演算処理)の対象となる入力データ系列Dn(n=0〜N)は、例えば、ステレオ2チャンネル方式において、標本化周波数44.1kHzで標本化された、Lチャンネル(『第1のチャンネル』)のデータ系列DmL(m=0〜N)とRチャンネル(『第2のチャンネル』)のデータ系列DmR(m=0〜N)を含む。
まず、入力データ系列Dn(n=0〜N)を、同一の値を示すフィルタ係数Cnの乗算対象とする2個の入力データDnで構成される『データ対』毎に分類するとともに、当該データ対を、更に、フィルタ係数Cnとの乗算を奇数番目(1番目、3番目、・・・)に実行する第1のデータ対と、偶数番目(0番目を除く、2番目、4番目、・・・)に実行する第2のデータ対とに分類する。
ここで、本実施形態では、第1のデータ対は、Lチャンネルのデータ系列DmL(m=0〜N)のうち、同一の値を示すフィルタ係数Cnの乗算対象となる2個の入力データDnで構成されるとともに、第2のデータ対は、Rチャンネルのデータ系列DmR(m=0〜N)のうち、同一の値を示すフィルタ係数の乗算対象となる2個の入力データで構成される。勿論、第1のデータ対をRチャンネルに、第2のデータ対をLチャンネルに対応づけてもよい。
データRAM20は、本発明に係る『第1のシングルポートRAM』の一実施形態であり、Lチャンネルのデータ系列DmL(m=0〜N)を構成する第1のデータ対を格納するものである。
データRAM30は、本発明に係る『第2のシングルポートRAM』の一実施形態であり、Rチャンネルのデータ系列DmR(m=0〜N)を構成する第2のデータ対を格納するものである。
ここで、本実施形態に係る直線位相FIRフィルタ演算器は、図10、図12に示した従来例1、2のように、Lチャンネルのデータ系列DmL(m=0〜N)とRチャンネルのデータ系列DmR(m=0〜N)に対するフィルタ演算処理を、独立に実施するのではなく、同時並列的に実施するものである。すなわち、Lチャンネルのデータ系列DmL(m=0〜N)及びRチャンネルのデータ系列DmR(m=0〜N)と、フィルタ係数系列Cn(n=0〜N)と、のたたみ込み演算が、1マシン・サイクル毎に交互に行われる。
レジスタ21、22、31、32、61、セレクタ40、セレクタ50、加算器60で構成される回路は、本発明に係る『入力データ演算部』の一実施形態であり、データRAM20及びデータRAM30から第1及び第2のデータ対を交互に読み出すとともに当該第1及び第2のデータ対を構成する2個の入力データを順次加算する。
レジスタ21及びレジスタ22は、本発明に係る入力データ演算部の『第1の遅延器』及び『第2の遅延器』の一実施形態である。レジスタ21は、データRAM20から読み出された第1のデータ対の一方の入力データDmLを1マシン・サイクル分遅延出力させる。レジスタ22は、データRAM20から読み出された第1のデータ対の他方の入力データDmLをレジスタ21にて1マシン・サイクル分遅延出力させる際に、レジスタ21において遅延出力させた第1のデータ対の一方の入力データDmLを更に1マシン・サイクル分遅延出力させる。
レジスタ31及びレジスタ32は、本発明に係る入力データ演算部の『第3の遅延器』及び『第4の遅延器』の一実施形態である。レジスタ31は、レジスタ22と同様に、データRAM20から読み出された第1のデータ対の他方の入力データDmLをレジスタ21にて1マシン・サイクル分遅延出力させる際に、データRAM30から読み出された第2のデータ対の一方の入力データDmRを1マシン・サイクル分遅延出力させる。レジスタ32は、データRAM30から読み出された第2のデータ対の他方の入力データDmRをレジスタ31にて1マシン・サイクル分遅延出力させる際に、レジスタ31において遅延出力させた第2のデータ対の一方の入力データDmRを更に1マシン・サイクル分遅延させる。
セレクタ40及びセレクタ50は、本発明に係る入力データ演算部の『第1のセレクタ』及び『第2のセレクタ』に該当する。セレクタ40は、レジスタ22及びレジスタ32において遅延出力させた入力データDmL及びDmRを1マシン・サイクル毎に交互に選択出力する。セレクタ50は、レジスタ21及びレジスタ31において遅延出力させた入力データDmL及びDmRを1マシン・サイクル毎に交互に選択出力する。
加算器60は、本発明に係る入力データ演算部の『第1の加算器』に該当し、セレクタ40及びセレクタ50の選択出力を加算する。なお、加算器60の加算結果は、レジスタ61に格納される。
レジスタ71、81、91、92、係数格納ROM70、乗算器80、加算器90で構成される回路は、本発明に係る『係数乗加算部』の一実施形態であり、加算器60の加算結果とそれに対応するフィルタ係数Cnとの乗算を行い、さらに、その乗算結果を累積加算することで出力データy(t)を得る。
係数格納ROM70は、フィルタ係数系列Cn(n=0〜N)を格納するROMであり、レジスタ71は、係数格納ROM70から1マシン・サイクル毎に読み出されたフィルタ係数系列Cn(n=0〜N)の各フィルタ係数Cnを一時的に格納する。
乗算器80は、レジスタ61から1マシン・サイクル毎に遅延出力される加算器60の加算結果と、レジスタ71から1マシン・サイクル毎に遅延出力されるフィルタ係数Cnとの乗算を行うものであり、レジスタ81は、乗算器80の乗算結果を一時的に格納する。
加算器90は、本発明に係る係数乗加算部の『第2の加算器』の一実施形態である。加算器90は、レジスタ81から1マシン・サイクル毎に遅延出力される乗算器80の乗算結果と、レジスタ92から1マシン・サイクル毎に遅延出力される前回の累積加算結果との累積加算を行うものである。
レジスタ91及びレジスタ92は、本発明に係る係数乗加算部の『第5の遅延器』及び『第6の遅延器』の一実施形態である。レジスタ91は、加算器90の累積加算結果を一時的に格納するとともに、1マシン・サイクル毎に出力データy(t)として出力する。レジスタ92は、レジスタ91において遅延出力された加算器90の累積加算結果を、更に1マシン・サイクル分遅延出力させて累積加算の結果を得る。
なお、図1に示す加算器90ならびにレジスタ91及びレジスタ92の構成によって、Lチャンネルのデータ系列DmL(m=0〜N)とRチャンネルのデータ系列DmR(m=0〜N)夫々のフィルタ演算処理の結果が、交互にレジスタ91から出力される。
===ヒルベルトフィルタ演算器(2チャンネル処理)の構成===
本発明の第1実施形態に係るヒルベルトフィルタ演算器のハードウェア構成例を図3に示す。
図1に示した直線位相FIRフィルタ演算器との相違点は、加算器60が減算器100に置き換わった点にある。すなわち、ヒルベルトフィルタ演算器の場合、フィルタ係数系列Cn(n=0〜N)が奇対称形を成して加算ではなく減算を行う必要があるので、減算器100が設けられる。
減算器100は、本発明に係る入力データ演算部の『減算器』に該当し、セレクタ40及びセレクタ50の選択出力を減算する。なお、本実施形態では、減算器100は、セレクタ40の選択出力よりセレクタ50の選択出力を減算する。また、減算器100の減算結果は、レジスタ61に格納される。
===FIRフィルタ演算器の動作(2チャンネル処理、偶数タップの場合)===
図2は、偶数タップの一例として“8”タップの場合における、図1に示した直線位相FIRフィルタ演算器の動作タイミングを示したものである。同様に、図4は、偶数タップの一例として“8”タップの場合における、図3に示したヒルベルトフィルタ演算器の動作タイミングを示したものである。なお、以下では、直線位相FIRフィルタ演算器の場合を中心に説明する。また、図2に示す時間t=“0”から時間t=“11”までの各期間が、1マシン・サイクルに相当する。
まず、時間t=“0”のとき、データRAM20から読み出された第1のデータ対{D0L、D7L}の一方の入力データD0Lがレジスタ21に一時的に格納される。
つぎに、時間t=“1”のとき、レジスタ21より遅延出力された第1のデータ対{D0L、D7L}の一方の入力データD0Lがレジスタ22に一時的に格納される。また、データRAM20から読み出された第1のデータ対{D0L、D7L}の他方の入力データD7Lがレジスタ21に一時的に格納される。さらに、データRAM30から読み出された第2のデータ対{D0R、D7R}の一方の入力データD0Rがレジスタ31に一時的に格納される。
つぎに、時間t=“2”のとき、セレクタ40は、レジスタ22から出力された、第1のデータ対{D0L、D7L}の一方の入力データD0Lを、選択出力する。また、レジスタ21より遅延出力された第1のデータ対{D0L、D7L}の他方の入力データD7Lが、レジスタ22に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD0Lと、セレクタ50から選択出力された入力データD7Lと、の加算を行い、その加算結果{D0L+D7L}をレジスタ61へと一時的に格納する。さらに、データRAM20から読み出されたつぎの第1のデータ対{D1L、D6L}の一方の入力データD1Lが、レジスタ21に一時的に格納される。
また、時間t=“2”のとき、レジスタ31より遅延出力された第2のデータ対{D0R、D7R}の一方の入力データD0Rが、レジスタ32に一時的に格納される。また、データRAM30から読み出された第2のデータ対{D0R、D7R}の他方の入力データD7Rがレジスタ31に一時的に格納される。さらに、係数格納ROM70から、第1のデータ対{D0L、D7L}及び第2のデータ対{D0R、D7R}の共通因子であるフィルタ係数C0が読み出されレジスタ71に一時的に格納される。
つぎに、時間t=“3”のとき、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C0と、レジスタ61より遅延出力された加算器60の加算結果{D0L+D7L}との乗算を行い、その乗算結果{A0L(=C0*D0L)+A7L(=C0*D7L)}をレジスタ81に一時的に格納する。
また、時間t=“3”のとき、セレクタ40は、レジスタ32から出力された、第2のデータ対{D0R、D7R}の一方の入力データD0Rを、選択出力する。さらに、レジスタ31より遅延出力された第2のデータ対{D0R、D7R}の他方の入力データD7Rが、レジスタ32に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD0Rと、セレクタ50から選択出力された入力データD7Rと、の加算を行い、その加算結果{D0R+D7R}をレジスタ61へと一時的に格納する。さらに、データRAM30から読み出されたつぎの第2のデータ対{D1R、D6R}の一方の入力データD1Rが、レジスタ31に一時的に格納される。
さらに、時間t=“3”のとき、レジスタ21より遅延出力されたつぎの第1のデータ対{D1L、D6L}の一方の入力データD1Lが、レジスタ22に一時的に格納される。また、データRAM20から読み出されたつぎの第1のデータ対{D1L、D6L}の他方の入力データD6Lがレジスタ21に一時的に格納される。
つぎに、時間t=“4”のとき、レジスタ81より遅延出力された乗算器80の乗算結果{A0L+A7L)}が、加算器90の一方の入力へと供給される。なお、加算器90の他方の入力は、累積加算が未実施のため“0”とするが、例えば、加算器90の他方の入力に対して、レジスタ92又はデータ“0”を格納したレジスタ(不図示)の一方を選択して出力するセレクタ(不図示)によって実現する。
よって、加算器90は、レジスタ81より遅延出力された乗算結果{A0L+A7L}を、レジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C0と、レジスタ61より遅延出力された加算器60の加算結果{D0R+D7R}との乗算を行い、その乗算結果{A0R(=C0*D0R)+A7R(=C0*D7R)}をレジスタ81に一時的に格納する。
また、時間t=“4”のとき、セレクタ40は、レジスタ22から出力された、第1のデータ対{D1L、D6L}の一方の入力データD1Lを、選択出力する。さらに、レジスタ21より遅延出力された第1のデータ対{D1L、D6L}の他方の入力データD6Lが、レジスタ22に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD1Lと、セレクタ50から選択出力された入力データD6Lと、の加算を行い、その加算結果{D1L+D6L}をレジスタ61へと一時的に格納する。さらに、データRAM20からつぎの第1のデータ対{D2L、D5L}の一方の入力データD2Lが、レジスタ21に一時的に格納される。
さらに、時間t=“4”のとき、レジスタ31より遅延出力された第2のデータ対{D1R、D6R}の一方の入力データD1Rが、レジスタ32に一時的に格納される。また、データRAM30から読み出された第2のデータ対{D1R、D6R}の他方の入力データD6Rがレジスタ31に一時的に格納される。さらに、係数格納ROM70から、第1のデータ対{D1L、D6L}及び第2のデータ対{D1R、D6R}の共通因子であるフィルタ係数C1が読み出されレジスタ71に一時的に格納される。
つぎに、時間t=“5”のとき、レジスタ91より遅延出力された加算器90の累積加算結果{A0L+A7L}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A0R+A7R}が、加算器90の一方の入力へと供給される。なお、加算器90の他方の入力は、“0”のままである。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A0R+A7R}を、レジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C1と、レジスタ61より遅延出力された加算器60の加算結果{D1L+D6L}との乗算を行い、その乗算結果{A1L(=C1*D1L)+A6L(=C1*D6L)}をレジスタ81に一時的に格納する。
また、時間t=“5”のとき、セレクタ40は、レジスタ32から出力された、第2のデータ対{D1R、D6R}の一方の入力データD1Rを、選択出力する。さらに、レジスタ31より遅延出力された第2のデータ対{D1R、D6R}の他方の入力データD6Rが、レジスタ32に一時的に格納されるとともに、セレクタ50は、これを選択出力する。
この結果、加算器60は、セレクタ40から選択出力された入力データD1Rと、セレクタ50から選択出力された入力データD6Rと、の加算を行い、その加算結果{D1R+D6R}をレジスタ61へと一時的に格納する。さらに、データRAM30からつぎの第2のデータ対{D2R、D5R}の一方の入力データD2Rが、レジスタ31に一時的に格納される。
さらに、時間t=“5”のとき、レジスタ21より遅延出力された第1のデータ対{D2L、D5L}の一方の入力データD2Lが、レジスタ22に一時的に格納される。また、データRAM20から読み出された第1のデータ対{D2L、D5L}の他方の入力データD5Lがレジスタ21に一時的に格納される。
つぎに、時間t=“6”のとき、レジスタ92より遅延出力された加算器90の累積加算結果{A0L+A7L}が加算器90の他方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0R+A7R}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A1L+A6L}が、加算器90の一方の入力へと供給される。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A1L+A6L}と、レジスタ92より遅延出力された累積加算結果{A0L+A7L}との累積加算を行い、その累積加算結果{A0L+A1L+A6L+A7L}をレジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C1と、レジスタ61より遅延出力された加算器60の加算結果{D1R+D6R}との乗算を行い、その乗算結果{A1R(=C1*D1R)+A6R(=C1*D6R)}をレジスタ81に一時的に格納する。
また、時間t=“6”のとき、セレクタ40は、レジスタ22から出力された、第1のデータ対{D2L、D5L}の一方の入力データD2Lを、選択出力する。さらに、レジスタ21より遅延出力された第1のデータ対{D2L、D5L}の他方の入力データD5Lが、レジスタ22に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD2Lと、セレクタ50から選択出力された入力データD5Lと、の加算を行い、その加算結果{D2L+D5L}をレジスタ61へと一時的に格納する。さらに、データRAM20からつぎの第1のデータ対{D3L、D4L}の一方の入力データD3Lが、レジスタ21に一時的に格納される。
さらに、時間t=“6”のとき、レジスタ31より遅延出力された第2のデータ対{D2R、D5R}の一方の入力データD2Rが、レジスタ32に一時的に格納される。また、データRAM30から読み出された第2のデータ対{D2R、D5R}の他方の入力データD5Rがレジスタ31に一時的に格納される。さらに、係数格納ROM70から、第1のデータ対{D2L、D5L}及び第2のデータ対{D2R、D5R}の共通因子であるフィルタ係数C2が読み出されレジスタ71に一時的に格納される。
つぎに、時間t=“7”のとき、レジスタ92より遅延出力された加算器90の累積加算結果{A0R+A7R}が加算器90の他方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A1L+A6L}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A1R+A6R}が、加算器90の一方の入力へと供給される。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A1R+A6R}と、レジスタ92より遅延出力された累積加算結果{A0R+A7R}との累積加算を行い、その累積加算結果{A0R+A1R+A6R+A7R}をレジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C2と、レジスタ61より遅延出力された加算器60の加算結果{D2L+D5L}との乗算を行い、その乗算結果{A2L(=C2*D2L)+A5L(=C2*D5L)}をレジスタ81に一時的に格納する。
また、時間t=“7”のとき、セレクタ40は、レジスタ32から出力された、第2のデータ対{D2R、D5R}の一方の入力データD2Rを、選択出力する。さらに、レジスタ31より遅延出力された第2のデータ対{D2R、D5R}の他方の入力データD5Rが、レジスタ32に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD2Rと、セレクタ50から選択出力された入力データD5Rと、の加算を行い、その加算結果{D2R+D5R}をレジスタ61へと一時的に格納する。さらに、データRAM30からつぎの第2のデータ対{D3R、D4R}の一方の入力データD3Rが、レジスタ31に一時的に格納される。
さらに、時間t=“7”のとき、レジスタ21より遅延出力された第1のデータ対{D3L、D4L}の一方の入力データD3Lが、レジスタ22に一時的に格納される。また、データRAM20から読み出された第1のデータ対{D3L、D4L}の他方の入力データD4Lがレジスタ21に一時的に格納される。
つぎに、時間t=“8”のとき、レジスタ92より遅延出力された加算器90の累積加算結果{A0L+A1L+A6L+A7L}が加算器90の他方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0R+A1R+A6R+A7R}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A2L+A5L}が、加算器90の一方の入力へと供給される。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A2L+A5L}と、レジスタ92より遅延出力された累積加算結果{A0L+A1L+A6L+A7L}との累積加算を行い、その累積加算結果{A0L+A1L+A2L+A5L+A6L+A7L}をレジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C2と、レジスタ61より遅延出力された加算器60の加算結果{D2R+D5R}との乗算を行い、その乗算結果{A2R(=C2*D2R)+A5R(=C2*D5R)}をレジスタ81に一時的に格納する。
また、時間t=“8”のとき、セレクタ40は、レジスタ22から出力された、第1のデータ対{D3L、D4L}の一方の入力データD3Lを、選択出力する。さらに、レジスタ21より遅延出力された第1のデータ対{D3L、D4L}の他方の入力データD4Lが、レジスタ22に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD3Lと、セレクタ50から選択出力された入力データD4Lと、の加算を行い、その加算結果{D3L+D4L}をレジスタ61へと一時的に格納する。
さらに、時間t=“8”のとき、レジスタ31より遅延出力された第2のデータ対{D3R、D4R}の一方の入力データD3Rが、レジスタ32に一時的に格納される。また、データRAM30から読み出された第2のデータ対{D3R、D4R}の他方の入力データD4Rがレジスタ31に一時的に格納される。さらに、係数格納ROM70から、第1のデータ対{D3L、D4L}及び第2のデータ対{D3R、D4R}の共通因子であるフィルタ係数C3が読み出されレジスタ71に一時的に格納される。
つぎに、時間t=“9”のとき、レジスタ92より遅延出力された加算器90の累積加算結果{A0R+A1R+A6R+A7R}が加算器90の他方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0L+A1L+A2L+A5L+A6L+A7L}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A2R+A5R}が、加算器90の一方の入力へと供給される。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A2R+A5R}と、レジスタ92より遅延出力された累積加算結果{A0R+A1R+A6R+A7R}との累積加算を行い、その累積加算結果{A0R+A1R+A2R+A5R+A6R+A7R}をレジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C3と、レジスタ61より遅延出力された加算器60の加算結果{D3L+D4L}との乗算を行い、その乗算結果{A3L(=C3*D3L)+A4L(=C4*D4L)}をレジスタ81に一時的に格納する。
また、時間t=“9”のとき、セレクタ40は、レジスタ32から出力された、第2のデータ対{D3R、D4R}の一方の入力データD3Rを、選択出力する。さらに、レジスタ31より遅延出力された第2のデータ対{D3R、D4R}の他方の入力データD4Rが、レジスタ32に一時的に格納されるとともに、セレクタ50は、これを選択出力する。この結果、加算器60は、セレクタ40から選択出力された入力データD3Rと、セレクタ50から選択出力された入力データD4Rと、の加算を行い、その加算結果{D3R+D4R}をレジスタ61へと一時的に格納する。
つぎに、時間t=“10”のとき、レジスタ92より遅延出力された加算器90の累積加算結果{A0L+A1L+A2L+A5L+A6L+A7L}が加算器90の他方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0R+A1R+A2R+A5R+A6R+A7R}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A3L+A4L}が、加算器90の一方の入力へと供給される。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A3L+A4L}と、レジスタ92より遅延出力された累積加算結果{A0L+A1L+A2L+A5L+A6L+A7L}との累積加算を行い、その累積加算結果{A0L+A1L+A2L+A3L+A4L+A5L+A6L+A7L}をレジスタ91に一時的に格納する。さらに、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C3と、レジスタ61より遅延出力された加算器60の加算結果{D3R+D4R}との乗算を行い、その乗算結果{A3R(=C3*D3R)+A4R(=C4*D4R)}をレジスタ81に一時的に格納する。
つぎに、時間t=“11”のとき、レジスタ92より遅延出力された加算器90の累積加算結果{A0R+A1R+A2R+A5R+A6R+A7R}が加算器90の他方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0L+A1L+A2L+A3L+A4L+A5L+A6L+A7L}が、レジスタ92に一時的に格納される。また、レジスタ81より遅延出力された乗算器80の乗算結果{A3R+A4R}が、加算器90の一方の入力へと供給される。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A3R+A4R}と、レジスタ92より遅延出力された累積加算結果{A0R+A1R+A2R+A5R+A6R+A7R}との累積加算を行い、その累積加算結果{A0R+A1R+A2R+A3R+A4R+A5R+A6R+A7R}をレジスタ91に一時的に格納する。
このように、本発明の第1実施形態に係る直線位相FIRフィルタ演算器は、時間t=“0”から時間t=“11”まで、すなわち12マシン・サイクル分、前述した一連の処理を実行する。この結果、時間t=“10”のとき、Lチャンネルのデータ系列{D0L〜D7L}に対するフィルタ演算処理の最終的な出力データy(10){=A0L+A1L+・・・+A7L}が得られることになる。また、時間t=“11”のとき、Rチャンネルのデータ系列{D0R〜D7R}に対するフィルタ演算処理の最終的な出力データy(11){=A0R+A1R+・・・+A7R}が得られる。
なお、前述した第1実施形態では、係数格納ROM70からレジスタ71へのフィルタ係数の読み出し回数を減らすため、同一の値を示すフィルタ係数Cnの乗算対象となる第1のデータ対の加算値と第2のデータ対の加算値とが連続してレジスタ61に格納される(図2に示す、t=“2”とt=“3”、t=“4”とt=“5”等を参照)。しかし、係数格納ROM70からレジスタ71へのフィルタ係数の読み出しを毎回行うようにすれば、これに限られない。
ところで、本発明の第1実施形態に係るヒルベルトフィルタ演算器の場合、図2と図4を対比すれば分かるように、レジスタ61にはセレクタ40及びセレクタ50の各選択出力の減算結果が一時的に格納される点と、レジスタ81にはセレクタ40及びセレクタ50の各選択出力の減算結果とそれに対応するフィルタ係数Cnとの乗算結果が一時的に格納される点、が相違するが、動作タイミング自体は同一であるので、説明は省略する。
ここで、本発明の第1実施形態を、従来例1及び従来例2と対比する。
従来例1では、本発明と同様に、シングルポートのデータRAM4を採用しているが、2チャンネル且つ8タップの場合のフィルタ演算処理を実施する場合、1チャンネル毎に逐次処理される。また、図11に示すように、Lチャンネルのフィルタ演算処理に、t=“0”からt=“9”までの10マシン・サイクル分必要とし、その後、t=“10”からRチャンネルのフィルタ演算処理を開始する際に2マシン・サイクル分オーバーラップするため、2チャンネルのフィルタ演算処理に合計18マシン・サイクル分必要とする。
従来例2では、本発明と同様に、シングルポートのデータRAM4を採用しているが、2チャンネル且つ8タップの場合のフィルタ演算処理を実施する場合、1チャンネル毎に逐次処理される。また、図13に示すように、Lチャンネルのフィルタ演算処理に、t=“0”からt=“10”までの11マシン・サイクル分必要とし、その後、t=“8”からRチャンネルのフィルタ演算処理を開始する際に3マシン・サイクル分オーバーラップするため、2チャンネルのフィルタ演算処理に合計19マシン・サイクル分必要とする。
一方、本発明の第1実施形態では、2チャンネル分のフィルタ演算処理を、1チャンネル毎の逐次処理ではなく、同時並列的に実施できる。しかも、2チャンネル分のフィルタ演算処理が12マシン・サイクルで済み、従来例1の場合の合計18マシン・サイクルや、従来例2の場合の合計19マシン・サイクルよりも短縮化される。
さらに、本発明の第1実施形態を、従来例3と対比する。
従来例3では、デュアルポートのデータRAM15を採用している。
一方、本発明の第1実施形態では、従来例3の場合と対比して、デュアルポートではなくシングルポートであり、更に、データRAM15の半分の記憶容量に設計可能なデータRAM20、30を採用している。ここで、前述したように、従来例3に係るデュアルポートのデータRAM15の回路面積は、本発明の第1実施形態に係るシングルポートのデータRAM20、30の合計回路面積よりも大きい。よって、本発明の第1実施形態に係るFIRフィルタ演算器は、従来例3に係るFIRフィルタ演算器と対比して、ダウンサイジングされる。
===FIRフィルタ演算器の動作(2チャンネル処理、奇数タップの場合)===
図5は、奇数タップの一例として“7”タップの場合における、図1に示した本発明の第1実施形態に係る直線位相FIRフィルタ演算器の動作タイミングを示したものである。なお、図5に示す時間t=“0”から時間t=“11”までの各期間が、1マシン・サイクルに相当する。
図5に示すように、奇数タップの場合は、図2に示した偶数タップの場合の動作タイミングと同様な動作タイミングを示す。なお、奇数タップの場合、中央タップに係る入力データD3L及びD3Rが、第1及び第2のデータ対を形成することができない。
このため、図5に示すように、時間t=“7”のとき、データRAM20からは入力データD3Lとデータ対を形成する入力データが存在しないため、レジスタ21には“0”が格納される。例えば、レジスタ21の入力に対して、データRAM20又はデータ“0”を格納したレジスタ(不図示)の一方を選択して出力するセレクタ(不図示)によって実現される。よって、時間t=“8”のとき、レジスタ61に一時的に格納される加算器60の加算結果はD3Lであり、時間t=“9”のとき、レジスタ81に一時的に格納される乗算器80の乗算結果は{C3*D3L}である。
また、同様に、時間t=“8”のとき、データRAM30からは入力データD3Rとデータ対を形成する入力データが存在しないため、レジスタ31には“0”が格納される。例えば、レジスタ31の入力に対して、データRAM30又はデータ“0”を格納したレジスタ(不図示)の一方を選択して出力するセレクタ(不図示)によって実現される。よって、時間t=“9”のとき、レジスタ61に一時的に格納される加算器60の加算結果はD3Rであり、時間t=“10”のとき、レジスタ81に一時的に格納される乗算器80の乗算結果は{C3*D3R}である。
なお、本発明の第1実施形態に係るヒルベルトフィルタ演算器の場合、レジスタ61にはセレクタ40及びセレクタ50の各選択出力の減算結果が一時的に格納される点と、レジスタ81にはセレクタ40及びセレクタ50の各選択出力の減算結果とそれに対応するフィルタ係数Cnとの乗算結果が一時的に格納される点、が相違するが、動作タイミング自体は図5の内容と同一であるので、説明は省略する。
このように、本発明の第1実施形態では、偶数タップ又は奇数タップのいずれの場合もフィルタ演算処理を実施可能である。
<第2実施形態>
===FIRフィルタ演算器の構成(1チャンネル処理)===
本発明の第2実施形態に係るFIRフィルタ演算器として、直線位相FIRフィルタ演算器の場合のハードウェア構成例を図6に示す。なお、本発明の第2実施形態に係る直線位相FIRフィルタ演算器は、モノクロの1チャンネル方式等において、1チャンネル分の単独フィルタ演算処理のみ実施可能である。よって、2チャンネル分のフィルタ演算処理を実施するためには、1チャンネル毎のフィルタ演算処理を逐次処理する必要がある。
図1に示した本発明の第1実施形態の場合との相違点についてのみ説明する。
まず、入力データ系列Dn(n=0〜N)を、同一の値を示すフィルタ係数Cnの乗算対象とする2個の入力データDnで構成される『データ対』毎に分類するとともに、当該データ対を構成する2個の入力データDnのうち、一方の入力データDnをデータRAM20に格納し、他方の入力データをデータRAM30に格納する。
なお、このとき、入力データ系列Dn(n=0〜N)について、nが偶数の入力データをデータRAM20又はデータRAM30の一方に格納し、nが奇数の入力データを他方に格納すればよい。このようにした結果、フィルタ演算の一連の処理が終了して、つぎの入力データ系列Dn(n=1〜N+1)をデータRAM20及びデータRAM30に格納する際には、新たな入力データDn(n=N+1)を入力データDn(n=0)と差し替えるだけで済む。
レジスタ21、31、61、加算器60で構成される回路は、本発明に係る『入力データ演算部』の一実施形態であり、データRAM20及びデータRAM30からデータ対を構成する2個の入力データを併行して読み出すとともに当該2個の入力データを加算する。
レジスタ21及びレジスタ31は、本発明に係る入力データ演算部の『第1の遅延器』及び『第2の遅延器』の一実施形態である。レジスタ21は、データRAM20から読み出されたデータ対の一方の入力データを1マシン・サイクル分遅延出力させる。レジスタ31は、データRAM30から読み出されたデータ対の他方の入力データを1マシン・サイクル分遅延出力させる。なお、このとき、データRAM20及びデータRAM30からレジスタ21及びレジスタ31への読み出しは、併行して行われる。
加算器60は、本発明に係る入力データ演算部の『加算器』であり、レジスタ21及びレジスタ31の遅延出力を加算して、その加算結果をレジスタ61に一時的に格納する。
レジスタ71、81、91、係数格納ROM70、乗算器80、加算器90で構成される回路は、本発明に係る『係数乗加算部』の一実施形態であり、加算器60の加算結果とそれに対応するフィルタ係数Cnとの乗算を行い、さらに、その乗算結果を累積加算することで出力データy(t)を得る。
また、本発明の第2実施形態に係るヒルベルトフィルタ演算器の場合のハードウェア構成例としては、図3に示した本発明の第1実施形態の場合と同様に、加算器60が減算器100に置き換わる点以外は、図6に示した構成と同一である為、説明を省略する。
===FIRフィルタ演算器の動作(1チャンネル処理)===
図7は、偶数タップの一例として“8”タップの場合における、図6に示した直線位相FIRフィルタ演算器の動作タイミングを示す。同図に示す時間t=“0”から時間t=“6”までの各期間が、1マシン・サイクルに相当する。
まず、時間t=“0”のとき、データRAM20から読み出されたデータ対{D0、D7}の一方の入力データD0がレジスタ21に一時的に格納されるとともに、データRAM30から読み出されたデータ対{D0、D7}の他方の入力データD7がレジスタ31に一時的に格納される。
つぎに、時間t=“1”のとき、レジスタ21から加算器60の一方の入力へとデータ対{D0、D7}の一方の入力データD0が供給されるとともに、レジスタ31から加算器60の他方の入力へとデータ対{D0、D7}の他方の入力データD7が供給される。この結果、加算器60は、入力データD0と入力データD7との加算を行い、この加算結果{D0+D7}をレジスタ61に一時的に格納する。
また、時間t=“1”のとき、データRAM20から読み出されたつぎのデータ対{D6、D1}の一方の入力データD6がレジスタ21に一時的に格納されるとともに、データRAM30から読み出されたデータ対{D6、D1}の他方の入力データD1がレジスタ31に一時的に格納される。さらに、係数格納ROM70からデータ対{D0、D7}の共通因子であるフィルタ係数C0が読み出されてレジスタ71に一時的に格納される。
つぎに、時間t=“2”のとき、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C0と、レジスタ61より遅延出力された加算器60の加算結果{D0+D7}との乗算を行い、その乗算結果{A0(=C0*D0)+A7(=C0*D7)}をレジスタ81に一時的に格納する。
また、時間t=“2”のとき、レジスタ21から加算器60の一方の入力へとデータ対{D6、D1}の一方の入力データD6が供給されるとともに、レジスタ31から加算器60の他方の入力へとデータ対{D6、D1}の他方の入力データD1が供給される。この結果、加算器60は、入力データD1、D6の加算を行い、この加算結果{D1+D6}をレジスタ61に一時的に格納する。
さらに、時間t=“2”のとき、データRAM20から読み出されたつぎのデータ対{D2、D5}の一方の入力データD2がレジスタ21に一時的に格納されるとともに、データRAM30から読み出されたデータ対{D2、D5}の他方の入力データD5がレジスタ31に一時的に格納される。さらに、係数格納ROM70からデータ対{D6、D1}の共通因子であるフィルタ係数C1が読み出されてレジスタ71に一時的に格納される。
つぎに、時間t=“3”のとき、レジスタ81より遅延出力された乗算器80の乗算結果{A0+A7}が、加算器90の一方の入力へと供給される。なお、加算器90の他方の入力は、累積加算が未実施のため“0”である。よって、加算器90は、レジスタ81より遅延出力された乗算結果{A0L+A7L}をレジスタ91に一時的に格納する。また、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C1と、レジスタ61より遅延出力された加算器60の加算結果{D1+D6}との乗算を行い、その乗算結果{A1(=C1*D1)+A6(=C1*D6)}をレジスタ81に一時的に格納する。
また、時間t=“3”のとき、レジスタ21から加算器60の一方の入力へとデータ対{D2、D5}の一方の入力データD2が供給されるとともに、レジスタ31から加算器60の他方の入力へとデータ対{D2、D5}の他方の入力データD5が供給される。この結果、加算器60は、入力データD2、D5の加算を行い、この加算結果{D2+D5}をレジスタ61に一時的に格納する。
さらに、時間t=“3”のとき、データRAM20から読み出されたつぎのデータ対{D4、D3}の一方の入力データD4がレジスタ21に一時的に格納されるとともに、データRAM30から読み出されたデータ対{D4、D3}の他方の入力データD3がレジスタ31に一時的に格納される。さらに、係数格納ROM70からデータ対{D2、D5}の共通因子であるフィルタ係数C2が読み出されてレジスタ71に一時的に格納される。
つぎに、時間t=“4”のとき、レジスタ81より遅延出力された乗算器80の乗算結果{A1+A6}が、加算器90の一方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0+A7}が、加算器90の他方の入力へと供給される。よって、加算器90は、乗算器80の乗算結果{A1+A6}と加算器90の加算結果{A0+A7}との累積加算を行い、その累積加算結果{A0+A1+A6+A7}をレジスタ91に一時的に格納する。また、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C2と、レジスタ61より遅延出力された加算器60の加算結果{D2+D5}との乗算を行い、その乗算結果{A2(=C2*D2)+A5(=C2*D5)}をレジスタ81に一時的に格納する。
また、時間t=“4”のとき、レジスタ21から加算器60の一方の入力へとデータ対{D4、D3}の一方の入力データD4が供給されるとともに、レジスタ31から加算器60の他方の入力へとデータ対{D4、D3}の他方の入力データD3が供給される。この結果、加算器60は、入力データD3、D4の加算を行い、この加算結果{D3+D4}をレジスタ61に一時的に格納する。さらに、係数格納ROM70からデータ対{D4、D3}の共通因子であるフィルタ係数C3が読み出されてレジスタ71に一時的に格納される。
つぎに、時間t=“5”のとき、レジスタ81より遅延出力された乗算器80の乗算結果{A2+A5}が、加算器90の一方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0+A1+A6+A7}が、加算器90の他方の入力へと供給される。よって、加算器90は、乗算器80の乗算結果{A2+A5}と加算器90の累積加算結果{A0+A1+A6+A7}との累積加算を行い、その累積加算結果{A0+A1+A2+A5+A6+A7}をレジスタ91に一時的に格納する。また、乗算器80は、レジスタ71より遅延出力されたフィルタ係数C3と、レジスタ61より遅延出力された加算器60の加算結果{D3+D4}との乗算を行い、その乗算結果{A3(=C3*D3)+A4(=C3*D4)}をレジスタ81に一時的に格納する。
つぎに、時間t=“6”のとき、レジスタ81より遅延出力された乗算器80の乗算結果{A3+A4}が、加算器90の一方の入力へと供給される。また、レジスタ91より遅延出力された加算器90の累積加算結果{A0+A1+A2+A5+A6+A7}が、加算器90の他方の入力へと供給される。よって、加算器90は、乗算器80の乗算結果{A3+A4}と加算器90の累積加算結果{A0+A1+A2+A5+A6+A7}との累積加算を行い、その累積加算結果{A0+A1+A2+A3+A4+A5+A6+A7}をレジスタ91に一時的に格納する。
このように、本発明の第2施形態に係る直線位相FIRフィルタ演算器は、時間t=“0”から時間t=“6”まで、すなわち7マシン・サイクル分、前述した一連の処理を実行する。この結果、時間t=“6”のとき、入力データ系列{D0〜D7}に対するフィルタ演算処理の最終的な出力データy(6){=A0+A1+・・・+A7}が得られる。
ここで、本発明の第2実施形態を、従来例1と対比する。従来例1では、本発明と同様に、シングルポートのデータRAM4を採用しているが、1チャンネル分のフィルタ演算処理に10マシン・サイクル分必要とする。一方、本発明の第2実施形態では、図7に示したように、1チャンネル分のフィルタ演算処理が7マシン・サイクルで済み、従来例1の場合よりも短縮化される。
つぎに、本発明の第2実施形態を、従来例2と対比する。従来例2では、本発明と同様に、シングルポートのデータRAM4を採用しているが、1チャンネル分のフィルタ演算処理に12マシン・サイクル分必要とする。一方、本発明の第2実施形態では、図7に示したように、1チャンネル分のフィルタ演算処理が7マシン・サイクルで済み、従来例2の場合よりも短縮化される。
さらに、本発明の第2実施形態を、従来例3と対比する。従来例3では、デュアルポートのデータRAM15を採用しており、1チャンネル分のフィルタ演算処理に7マシン・サイクル分必要とする。一方、本発明の第2実施形態では、図7に示したように、シングルポートのデータRAM20、30にも関わらず、1チャンネル分のフィルタ演算処理が従来例3と同様の7マシン・サイクルで済む。
以上、本発明の実施形態について説明したが、前述した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更/改良され得るとともに、その等価物も含まれる。
本発明の第1実施形態に係る直線位相FIRフィルタ演算器の構成例を示す図である。 本発明の第1実施形態に係る直線位相FIRフィルタ演算器が偶数タップであり且つ2チャンネルの入力データ系列を処理する場合の動作タイミングを示す図である。 本発明の第1実施形態に係るヒルベルトフィルタ演算器の構成例を示す図である。 本発明の第1実施形態に係るヒルベルトフィルタ演算器が偶数タップであり且つ2チャンネルの入力データ系列を処理する場合の動作タイミングを示す図である。 本発明の第1実施形態に係る直線位相FIRフィルタ演算器が奇数タップであり且つ2チャンネルの入力データ系列を処理する場合の動作タイミングを示す図である。 本発明の第2実施形態に係る直線位相FIRフィルタ演算器の構成例を示す図である。 本発明の第2実施形態に係る直線位相FIRフィルタ演算器が偶数タップであり且つ1チャンネルの入力データ系列を処理する場合の動作タイミングを示す図である。 偶数タップのFIRフィルタ演算器の概念的な構成を示す図である。 奇数タップのFIRフィルタの概念的な構成を示す図である。 従来例1のFIRフィルタ演算器のハードウェア構成を示す図である。 従来例1のFIRフィルタ演算器の動作タイミングを示す図である。 従来例2のFIRフィルタ演算器のハードウェア構成を示す図である。 従来例2のFIRフィルタ演算器の動作タイミングを示す図である。 従来例3のFIRフィルタ演算器のハードウェア構成を示す図である。 従来例3のFIRフィルタ演算器の動作タイミングを示す図である。
符号の説明
1 遅延器群
2 係数乗算器群
4、20、30 データRAM(シングルポート)
15 データRAM(デュアルポート)
5、7、9、11、12、14、16、17 レジスタ
21、22、31、32 レジスタ
61、71、81、91、92 レジスタ
40、50 セレクタ
3、10、13、60、90 加算器
6、70 係数格納ROM
8、80 乗算器

Claims (9)

  1. 対称形の有限インパルス応答を示すフィルタ係数系列と入力データ系列とのたたみ込み演算を行うFIRフィルタ演算器において、
    第1のデータ対を格納する第1のシングルポートRAMと、
    第2のデータ対を格納する第2のシングルポートRAMと、
    前記第1及び前記第2のシングルポートRAMから前記第1及び前記第2のデータ対を読み出して当該データ対を構成する2個の入力データを交互に加算又は減算する入力データ演算部と、
    前記入力データ演算部の演算結果とそれに対応するフィルタ係数との乗算結果を累積加算する係数乗加算部と、
    を有することを特徴とするFIRフィルタ演算器。
  2. 前記入力データ演算部は、
    前記第1のシングルポートRAMから読み出された前記第1のデータ対の入力データを1マシン・サイクル分遅延出力させる第1の遅延器と、
    前記第1の遅延器の出力を更に前記1マシン・サイクル分遅延出力させる第2の遅延器と、
    前記第2のシングルポートRAMから読み出された前記第2のデータ対の入力データを前記1マシン・サイクル分遅延出力させる第3の遅延器と、
    前記第3の遅延器において遅延出力させた前記第2のデータ対の入力データを更に前記1マシン・サイクル分遅延させる第4の遅延器と、
    前記第2及び前記第4の遅延器の遅延出力を前記1マシン・サイクル毎に交互に選択出力する第1のセレクタと、
    前記第1及び前記第3の遅延器の遅延出力を前記1マシン・サイクル毎に交互に選択出力する第2のセレクタと、
    前記第1及び前記第2のセレクタの選択出力を加算する第1の加算器と、
    を有することを特徴とする請求項1に記載のFIRフィルタ演算器。
  3. 前記入力データ演算部は、
    前記第1のシングルポートRAMから読み出された前記第1のデータ対の入力データを1マシン・サイクル分遅延出力させる第1の遅延器と、
    前記第1の遅延器の出力を更に前記1マシン・サイクル分遅延出力させる第2の遅延器と、
    前記第2のシングルポートRAMから読み出された前記第2のデータ対の入力データを前記1マシン・サイクル分遅延出力させる第3の遅延器と、
    前記第3の遅延器において遅延出力させた前記第2のデータ対の入力データを更に前記1マシン・サイクル分遅延させる第4の遅延器と、
    前記第2及び前記第4の遅延器の遅延出力を前記1マシン・サイクル毎に交互に選択出力する第1のセレクタと、
    前記第1及び前記第3の遅延器の遅延出力を前記1マシン・サイクル毎に交互に選択出力する第2のセレクタと、
    前記第1及び前記第2のセレクタの選択出力を減算する減算器と、
    を有することを特徴とする請求項1に記載のFIRフィルタ演算器。
  4. 前記入力データ系列は、第1及び第2のチャンネルのデータ系列を含み、前記第1のデータ対は、前記第1のチャンネルのデータ系列のうち、同一の値を示すフィルタ係数の乗算対象となる2個の入力データで構成されるとともに、前記第2のデータ対は、前記第2のチャンネルのデータ系列のうち、同一の値を示すフィルタ係数の乗算対象となる2個の入力データで構成されること、を特徴とする請求項2又は3に記載のFIRフィルタ演算器。
  5. 前記係数乗加算部は、
    前記乗算の結果と、前記累積加算の前回の結果との加算を行う第2の加算器と、
    前記第2の加算器の加算の結果を前記1マシン・サイクル分遅延出力する第5の遅延器と、
    前記第5の遅延器において遅延出力された前記第2の加算器の加算結果を、更に前記1マシン・サイクル分遅延出力する第6の遅延器と、
    を有することを特徴とする請求項4に記載のFIRフィルタ演算器。
  6. 前記入力データ系列は、一のチャンネルのデータ系列であり、前記第1及び前記第2のデータ対は、夫々、同一の値を示すフィルタ係数の乗算対象となる2個の入力データで構成されること、を特徴とする請求項2又は3に記載のFIRフィルタ演算器。
  7. 対称形の有限インパルス応答を示すフィルタ係数系列と入力データ系列とのたたみ込み演算を行うFIRフィルタ演算器において、
    データ対を構成する2個の入力データのうち、一方の入力データを格納する第1のシングルポートRAM、及び、他方の入力データを格納する第2のシングルポートRAMと、
    前記第1及び前記第2のシングルポートRAMから前記データ対を構成する2個の入力データを読み出すとともに当該2個の入力データを加算又は減算する入力データ演算部と、
    前記入力データ演算部の演算結果とそれに対応するフィルタ係数との乗算結果を累積加算する係数乗加算部と、
    を有することを特徴とするFIRフィルタ演算器。
  8. 前記入力データ演算部は、
    前記第1のシングルポートRAMから読み出された前記データ対の一方の入力データを1マシン・サイクル分遅延出力する第1の遅延器と、
    前記第2のシングルポートRAMから読み出された前記データ対の他方の入力データを前記1マシン・サイクル分遅延出力する第2の遅延器と、
    前記第1及び前記第2の遅延器の遅延出力を加算する加算器と、
    を有することを特徴とする請求項7に記載のFIRフィルタ演算器。
  9. 前記入力データ演算部は、
    前記第1のシングルポートRAMから読み出された前記データ対の一方の入力データを1マシン・サイクル分遅延出力する第1の遅延器と、
    前記第2のシングルポートRAMから読み出された前記データ対の他方の入力データを前記1マシン・サイクル分遅延出力する第2の遅延器と、
    前記第1及び前記第2の遅延器の遅延出力を減算する減算器と、
    を有することを特徴とする請求項7に記載のFIRフィルタ演算器。

JP2005203431A 2005-04-15 2005-07-12 Firフィルタ演算器 Expired - Fee Related JP5022577B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005203431A JP5022577B2 (ja) 2005-04-15 2005-07-12 Firフィルタ演算器

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005118486 2005-04-15
JP2005118486 2005-04-15
JP2005203431A JP5022577B2 (ja) 2005-04-15 2005-07-12 Firフィルタ演算器

Publications (2)

Publication Number Publication Date
JP2006319941A true JP2006319941A (ja) 2006-11-24
JP5022577B2 JP5022577B2 (ja) 2012-09-12

Family

ID=37540139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005203431A Expired - Fee Related JP5022577B2 (ja) 2005-04-15 2005-07-12 Firフィルタ演算器

Country Status (1)

Country Link
JP (1) JP5022577B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013031083A1 (ja) * 2011-09-02 2013-03-07 パナソニック株式会社 対称型フィルタ演算装置及び対称型フィルタ演算方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02264509A (ja) * 1989-04-04 1990-10-29 Pioneer Electron Corp デジタルフィルタ
JPH0438005A (ja) * 1990-06-04 1992-02-07 Nec Corp ディジタル信号処理回路
JPH04323910A (ja) * 1991-04-23 1992-11-13 Mitsubishi Electric Corp A/d,d/a変換装置
JPH05199072A (ja) * 1992-01-22 1993-08-06 Nec Ic Microcomput Syst Ltd ディジタルフィルタ
JPH06274314A (ja) * 1992-12-04 1994-09-30 Philips Electron Nv データ処理システム
JPH08265103A (ja) * 1995-03-14 1996-10-11 Thomson Multimedia Sa デジタル標本値フィルタリング装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02264509A (ja) * 1989-04-04 1990-10-29 Pioneer Electron Corp デジタルフィルタ
JPH0438005A (ja) * 1990-06-04 1992-02-07 Nec Corp ディジタル信号処理回路
JPH04323910A (ja) * 1991-04-23 1992-11-13 Mitsubishi Electric Corp A/d,d/a変換装置
JPH05199072A (ja) * 1992-01-22 1993-08-06 Nec Ic Microcomput Syst Ltd ディジタルフィルタ
JPH06274314A (ja) * 1992-12-04 1994-09-30 Philips Electron Nv データ処理システム
JPH08265103A (ja) * 1995-03-14 1996-10-11 Thomson Multimedia Sa デジタル標本値フィルタリング装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013031083A1 (ja) * 2011-09-02 2013-03-07 パナソニック株式会社 対称型フィルタ演算装置及び対称型フィルタ演算方法
JPWO2013031083A1 (ja) * 2011-09-02 2015-03-23 パナソニックIpマネジメント株式会社 対称型フィルタ演算装置及び対称型フィルタ演算方法
US8989512B2 (en) 2011-09-02 2015-03-24 Panasonic Intellectual Property Management Co., Ltd. Symmetric filter arithmetic apparatus and symmetric filter arithmetic method

Also Published As

Publication number Publication date
JP5022577B2 (ja) 2012-09-12

Similar Documents

Publication Publication Date Title
US6405229B1 (en) Digital filters
US6279021B1 (en) Digital filters
CN102035502A (zh) 一种fir滤波器的实现结构
JP4638695B2 (ja) 信号処理装置及びその方法
JP5065784B2 (ja) 同相成分抽出方法及び装置
JPH05235699A (ja) サンプリング周波数変換装置
JP5022577B2 (ja) Firフィルタ演算器
KR101050108B1 (ko) 저 복잡도 유한 임펄스 응답 필터의 필터링 방법, 장치 및 그 기록매체
JP6311601B2 (ja) 多段フィルタ処理装置及び方法
JP5428481B2 (ja) 帯域分割フィルターおよびプログラム
TW501376B (en) Decoding device and method of digital audio
JPH0998069A (ja) Fir型ディジタルフィルタ
WO2017088541A1 (zh) 一种多相插值滤波器及滤波方法
JP2864597B2 (ja) ディジタル演算回路
JPH06216715A (ja) ディジタルフィルタ
Mariammal et al. A reconfigurable high-speed and low-complexity residue number system-based multiply-accumulate channel filter for software radio receivers
JPH06216716A (ja) ディジタルフィルタ
JPH11220358A (ja) デジタルフィルタ
JP2628506B2 (ja) ディジタルフィルタ
JP2010011493A (ja) ディジタルフィルタ
JP3555551B2 (ja) マルチパイロットトーン検出方法および整合フィルタ
JP3582453B2 (ja) マルチパイロットトーン検出方法および整合フィルタ
JPH03211910A (ja) ディジタルフィルタ
JP4586114B1 (ja) 積和演算装置
JP2853722B2 (ja) サブバンド符号化復号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080709

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20110531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

AA91 Notification of revocation by ex officio

Free format text: JAPANESE INTERMEDIATE CODE: A971091

Effective date: 20110920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120605

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120618

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees