(57)【要約】【課題】  回路規模の小さな積和演算回路を提供すること。【解決手段】  入力セレクタＳＬ１は、入力データ又は結果遅延回路Ｏｒｅｇからのデータのうちいずれかを乗算器１０に選択出力し、係数記憶回路５０は、カウンタ４０からの出力値に基づいて係数記憶回路５０に記憶されているデータを乗算器１０に選択出力し、乗算器１０は、乗算結果を乗算結果遅延回路Ａｒｅｇへ出力し、加算遅延回路用セレクタＳＬ２は、第１加算遅延回路Ｒｅｇ１、第２加算遅延回路Ｒｅｇ２または０データ記憶回路Ｚｒｅｇのいずれかに記憶されているデータを制御回路３０からの制御信号に基づいて加算器２０に選択出力し、加算結果を制御回路３０の制御信号に基づいて第１加算遅延回路Ｒｅｇ１、第２加算遅延回路Ｒｅｇ２または結果遅延回路Ｏｒｅｇのいずれかに選択出力し、結果遅延回路Ｏｒｅｇは、制御回路３０の制御信号に基づいて結果遅延回路Ｏｒｅｇに記憶されているデータを出力データとして出力する。【選択図】      図１
2005149009.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号に基づいて動作するカウンタ及び制御回路と、係数記憶回路と、乗算器と、乗算結果遅延回路と、加算器と、
前記制御回路からの制御信号に基づいて動作する第１加算遅延回路、第２加算遅延回路、０データ記憶回路、結果遅延回路、入力セレクタ及び加算遅延回路用セレクタとを有し、
前記入力セレクタは、外部からの入力データ又は前記結果遅延回路からのフィードバックデータのうちいずれかを前記乗算器に選択出力し、
前記係数記憶回路は、前記カウンタからの出力値に基づいて前記係数記憶回路に記憶されているデータを前記乗算器に選択出力し、
前記乗算器は、前記入力セレクタによって選択されたデータと、前記係数記憶回路から出力されたデータとを乗算し、その後乗算結果を前記乗算結果遅延回路へ出力し、
前記加算遅延回路用セレクタは、前記第１加算遅延回路、前記第２加算遅延回路または前記０データ記憶回路のいずれかに記憶されているデータを前記制御回路からの制御信号に基づいて前記加算器に選択出力し、
前記加算器は、前記乗算結果遅延回路から遅延出力されたデータと、前記加算遅延回路用セレクタによって選択出力されたデータとを加算し、その後加算結果を前記制御回路の制御信号に基づいて前記第１加算遅延回路、第２加算遅延回路または結果遅延回路のいずれかに選択出力し、
前記結果遅延回路は、前記制御回路の制御信号に基づいて前記結果遅延回路に記憶されているデータを出力データとして出力することを特徴とする積和演算回路。
【請求項２】
請求項１において、
前記０データ記憶回路は、０の値が記憶されている０データレジスタを含み、
前記乗算結果遅延回路は、乗算結果レジスタを含み、
前記乗算結果レジスタは、前記制御回路からのイネーブル信号がアクティブであるとき、前記乗算器から出力された前記乗算結果を記憶することを特徴とする積和演算回路。
【請求項３】
請求項１または２において、
前記第１加算遅延回路は、Ｎ個（Ｎは１以上の整数）の第１加算レジスタを含み、
前記第２加算遅延回路は、Ｎ個の第２加算レジスタを含み、
前記結果遅延回路は、Ｎ個の結果レジスタを含むことを特徴とする積和演算回路。
【請求項４】
請求項３において、
前記Ｎ個の結果レジスタのうち第Ｎ番目の結果レジスタに記憶されているデータは、前記出力データとして出力されることを特徴とする積和演算回路。
【請求項５】
請求項３の積和演算回路は、最終出力遅延回路を含み、
前記最終出力遅延回路は、前記Ｎ個の結果レジスタのうち第Ｎ番目の結果レジスタに記憶されているデータを記憶し、前記最終出力遅延回路に記憶されているデータを前記出力データとして出力することを特徴とする積和演算回路。
【請求項６】
請求項３乃至５のいずれかにおいて、
前記結果遅延回路は、前記Ｎ個の結果レジスタのうちのいずれかに記憶されているデータを前記制御回路からの制御信号に基づいて、前記入力セレクタに選択出力する結果出力セレクタ含むことを特徴とする積和演算回路。
【請求項７】
請求項３乃至６のいずれかにおいて、
前記制御回路は、デコーダと、加算レジスタコントローラと、結果レジスタコントローラとを含み、
前記加算レジスタコントローラは、前記Ｎ個の第１加算レジスタ及び前記Ｎ個の第２加算レジスタのそれぞれと接続され、
前記結果レジスタコントローラは、前記Ｎ個の結果レジスタのそれぞれと接続され、
前記デコーダは、クロック信号及び前記カウンタの出力値に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記Ｎ個の結果レジスタのなかから書き込みを行うレジスタを決定し、その決定結果を前記加算レジスタコントローラまたは前記結果レジスタコントローラの少なくともいずれか一方に出力することを特徴とする積和演算回路。
【請求項８】
請求項７において、
前記加算レジスタコントローラは、前記デコーダから出力された前記決定結果に基づいて、前記Ｎ個の第１加算レジスタ及び前記Ｎ個の第２加算レジスタのうちのいずれかのレジスタに対して、書き込みをアクティブにする書き込みイネーブル信号を出力することを特徴とする積和演算回路。
【請求項９】
請求項７または８において、
前記結果レジスタコントローラは、前記デコーダから出力された前記決定結果に基づいて、前記Ｎ個の結果レジスタうちのいずれかのレジスタに対して、書き込みをアクティブにする書き込みイネーブル信号を出力することを特徴とする積和演算回路。
【請求項１０】
請求項７乃至９のいずれかにおいて、
前記デコーダは、クロック信号及び前記カウンタの出力値に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記０データレジスタのうち、いずれかを選択し、その選択内容を前記加算遅延回路用セレクタに出力することを特徴とする積和演算回路。
【請求項１１】
請求項１０において、
前記加算遅延回路用セレクタは、前記デコーダから出力された前記選択内容に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記０データレジスタのそれぞれに記憶されているデータを前記加算器に選択出力することを特徴とする積和は演算回路。
【請求項１２】
請求項７乃至１１のいずれかにおいて、
前記デコーダは、クロック信号及び前記カウンタの出力値に基づいて、前記Ｎ個の結果レジスタのうち、いずれかを選択し、その選択内容を前記結果出力セレクタに出力することを特徴とする積和演算回路。
【請求項１３】
請求項１２において、
前記結果出力セレクタは、前記デコーダから出力された前記選択内容に基づいて、前記Ｎ個の結果レジスタのそれぞれに記憶されているデータを前記入力セレクタに選択出力することを特徴とする積和演算回路。
【請求項１４】
請求項２乃至１３のいずれかにおいて、
前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記Ｎ個の結果レジスタは、前記クロック信号の立ち上がりエッジまたは立ち下がりエッジに同期してデータ書き込みされることを特徴とする積和演算回路。
【請求項１５】
請求項２乃至１４のいずれかにおいて、
前記外部からの入力データに対して、（５×Ｎ＋２）クロックで１サイクルの演算結果を出力することを特徴とする積和演算回路。
【請求項１６】
請求項１乃至１５のいずれかにおいて、
ｎ番目（ｎは自然数）の入力データがＭ番目（Ｍは自然数）の前記クロック信号に同期して前記入力セレクタに入力されると、
第１ステップとして、
Ｍ番目の前記クロック信号の周期に同期して、前記乗算器は、前記ｎ番目の入力データと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、
第２ステップとして、
（Ｍ＋１）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、
前記乗算器は、前記ｎ番目の入力データと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、
前記加算器は、前記第１加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記結果遅延回路に出力し、
第３ステップとして、
（Ｍ＋２）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、
前記結果遅延回路は前記加算器から出力されている前記加算結果をラッチし、
前記乗算器は、前記結果遅延回路に記憶されているデータと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、
前記加算器は、前記第２加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第１加算遅延回路に出力し、
第４ステップとして、
（Ｍ＋３）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、
前記第１加算遅延回路は前記加算器から出力されている前記加算結果をラッチし、
前記乗算器は、前記ｎ番目の入力データと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、
前記加算器は、前記第１加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第１加算遅延回路に出力し、
第５ステップとして、
（Ｍ＋４）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、
前記第１加算遅延回路は前記加算器から出力されている前記加算結果をラッチし、
前記乗算器は、前記結果遅延回路に記憶されているデータと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、
前記加算器は、前記０データ記憶回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第２加算遅延回路に出力し、
第６ステップとして、
（Ｍ＋５）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、
前記第２加算遅延回路は前記加算器から出力されている前記加算結果をラッチし、
前記加算器は、前記第２加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第２加算遅延回路に出力し、
第７ステップとして、
（Ｍ＋６）番目の前記クロック信号の周期に同期して、  前記第２加算遅延回路は前記加算器から出力されている前記加算結果をラッチする
ことを特徴とする積和演算回路。
【請求項１７】
請求項２乃至１５のいずれかにおいて、
ｎ番目（ｎは自然数）の入力データが前記入力セレクタに入力されると、前記入力データに対して、Ｎステージの積和演算、第１の終段演算、第２の終段演算の順に演算が行われ、
前記積和演算のｍ（ｍは自然数）番目のステージは、５つの演算ステップを含み、
前記５つの演算ステップは、前記クロック信号の周期が５回分経過する間に、前記クロック信号の各周期に同期して行われ、
第１の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第１乗算ステップと、
ｍ＝１の時は加算を行わず、ｍ＞１の時は（ｍ−１）番目の前記第２加算レジスタに記憶されているデータと、前記第１乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（ｍ−１）番目の第２加算レジスタに出力する第１加算ステップとを含み、
第２の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第２乗算ステップと、
ｍ番目の前記第１加算レジスタに記憶されているデータと、前記第２乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果をｍ番目の前記結果レジスタに出力する第２加算ステップとを含み、
第３の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第３乗算ステップと、
ｍ番目の前記第２加算レジスタに記憶されているデータと、前記第３乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記ｍ番目の第１加算レジスタに出力する第３加算ステップとを含み、
第４の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第４乗算ステップと、
前記ｍ番目の第１加算レジスタに記憶されているデータと、前記第４乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記ｍ番目の第１加算レジスタに出力する第４加算ステップとを含み、
第５の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第５乗算ステップと、
前記０データレジスタに記憶されているデータと、前記第５乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記ｍ番目の第２加算レジスタに出力する第５加算ステップとを含み、
第１の終段演算は、Ｎ番目のステージにおける前記第５乗算ステップの前記乗算結果と、Ｎ番目の前記第２加算レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記Ｎ番目の第２加算レジスタに出力する第６加算ステップを含み、
第２の終段演算は、前記第６加算ステップの加算結果を前記Ｎ番目の第２加算レジスタに記憶させるラッチステップを含み、
前記第１の演算ステップ、前記第２の演算ステップ及び前記第４の演算ステップでは、ｍ＝１の時、前記入力セレクタは前記入力データを前記乗算器に選択出力し、
ｍ＞１の時、前記入力セレクタは（ｍ−１）番目の前記結果レジスタからの出力を前記乗算器に選択出力し、
前記第３の演算ステップ及び前記第５の演算ステップでは、前記入力セレクタは前記ｍ番目の結果レジスタからの出力を前記乗算器に選択出力することを特徴とする積和演算回路。
【請求項１８】
請求項２乃至１５のいずれかにおいて、
ｎ番目（ｎは自然数）の入力データが前記入力セレクタに入力されると、前記入力データに対して、Ｎステージの積和演算、第１の終段演算、第２の終段演算の順に演算が行われ、
前記積和演算のｍ（ｍは自然数）番目のステージは、５つの演算ステップを含み、
前記５つの演算ステップは、前記クロック信号の周期が５回分経過する間に、前記クロック信号の各周期に同期して行われ、
第１の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第１乗算ステップと、
ｍ＝１の時は加算を行わず、ｍ＞１の時は（Ｎ−ｍ＋１）番目の前記第２加算レジスタに記憶されているデータと、前記第１乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第２加算レジスタに出力する第１加算ステップとを含み、
第２の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第２乗算ステップと、
（Ｎ−ｍ＋１）番目の前記第１加算レジスタに記憶されているデータと、前記第２乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を（Ｎ−ｍ＋１）番目の前記結果レジスタに出力する第２加算ステップとを含み、
第３の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第３乗算ステップと、
前記（Ｎ−ｍ＋１）番目の第２加算レジスタに記憶されているデータと、前記第３乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第１加算レジスタに出力する第３加算ステップとを含み、
第４の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第４乗算ステップと、
前記（Ｎ−ｍ＋１）番目の第１加算レジスタに記憶されているデータと、前記第４乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第１加算レジスタに出力する第４加算ステップとを含み、
第５の演算ステップは、
前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第５乗算ステップと、
前記０データレジスタに記憶されているデータと、前記第５乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第２加算レジスタに出力する第５加算ステップとを含み、
第１の終段演算は、Ｎ番目のステージにおける前記第５乗算ステップの前記乗算結果と、１番目の前記第２加算レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記１番目の第２加算レジスタに出力する第６加算ステップを含み、
第２の終段演算は、前記第６加算ステップの加算結果を前記１番目の第２加算レジスタに記憶させるラッチステップを含み、
前記第１の演算ステップ、前記第２の演算ステップ及び前記第４の演算ステップでは、ｍ＝Ｎの時、前記入力セレクタは前記入力データを前記乗算器に選択出力し、
ｍ＜Ｎの時、前記入力セレクタは（Ｎ−ｍ）番目の前記結果レジスタからの出力を前記乗算器に選択出力し、
前記第３の演算ステップ及び前記第５の演算ステップでは、前記入力セレクタは前記（Ｎ−ｍ＋１）番目の結果レジスタからの出力を前記乗算器に選択出力することを特徴とする積和演算回路。
【請求項１９】
請求項１７または１８において、
前記カウンタは、（５×Ｎ＋２）進カウンタを含むことを特徴とする積和演算回路。
【請求項２０】
請求項１乃至１９のいずれかの積和演算回路を含むことを特徴とするアナログ／デジタル変換器。
【請求項２１】
請求項１乃至１９のいずれかの積和演算回路を含むことを特徴とするデジタル／アナログ変換器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、積和演算回路に関する。
【背景技術】
【０００２】
産業の発展と共に、量子化された電子情報を取り扱う場面が増えてきている中、その演算処理装置の需要は、多種多様な装置に拡大されてきた。
【０００３】
演算処理装置として例えば積和演算回路がある。リアルタイムな制御システムは高速な演算処理を要求し、この課題を解決する積和演算回路として、特許文献１がある。また、リアルタイムな制御システムの一例として、自動車の制御システムがある。例えば特許文献２には自動車の制御システム内の電子情報を高速に演算処理する積和演算回路が開示されている。
【０００４】
ところが近年、特に携帯可能な小型電子機器の発達が著しく、積和演算回路の需要は、小型電子機器にまで拡大された。しかしながら小型電子機器では、各構成部品の許容体積や搭載される電力源の許容体積が減少され、部品の小型化や消費電力の低減が課題となっていた。
【特許文献１】特開平７−２５３９６５号公報
【特許文献２】特開平８−４４７０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、回路のレイアウト面積が従来よりも小さく、消費電力の小さな積和演算回路を提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、クロック信号に基づいて動作するカウンタ及び制御回路と、係数記憶回路と、乗算器と、乗算結果遅延回路と、加算器と、前記制御回路からの制御信号に基づいて動作する第１加算遅延回路、第２加算遅延回路、０データ記憶回路、結果遅延回路、入力セレクタ及び加算遅延回路用セレクタとを有し、前記入力セレクタは、外部からの入力データ又は前記結果遅延回路からのフィードバックデータのうちいずれかを前記乗算器に選択出力し、係数記憶回路は、前記カウンタからの出力値に基づいて前記係数記憶回路に記憶されているデータを前記乗算器に選択出力し、前記乗算器は、前記入力セレクタによって選択されたデータと、前記係数記憶回路から出力されたデータとを乗算し、その後乗算結果を前記乗算結果遅延回路へ出力し、前記加算遅延回路用セレクタは、前記第１加算遅延回路、前記第２加算遅延回路または前記０データ記憶回路のいずれかに記憶されているデータを前記制御回路からの制御信号に基づいて前記加算器に選択出力し、前記加算器は、前記乗算結果遅延回路から遅延出力されたデータと、前記加算遅延回路用セレクタによって選択出力されたデータとを加算し、その後加算結果を前記制御回路の制御信号に基づいて前記第１加算遅延回路、第２加算遅延回路または結果遅延回路のいずれかに選択出力し、前記結果遅延回路は、前記制御回路の制御信号に基づいて前記結果遅延回路に記憶されているデータを出力データとして出力する積和演算回路に関する。
【０００７】
これによれば、積和演算回路の規模を小さくすることができる。
【０００８】
本発明に係る前記０データ記憶回路は、０の値が記憶されている０データレジスタを含み、前記乗算結果遅延回路は、乗算結果レジスタを含み、前記乗算結果レジスタは、前記制御回路からのイネーブル信号がアクティブであるとき、前記乗算器から出力された前記乗算結果を記憶することができる。
【０００９】
本発明に係る前記第１加算遅延回路は、Ｎ個（Ｎは１以上の整数）の第１加算レジスタを含み、前記第２加算遅延回路は、Ｎ個の第２加算レジスタを含み、前記結果遅延回路は、Ｎ個の結果レジスタを含むことができる。これにより、本発明に係る積和演算回路は、たとえばＮ段接続２次ＩＩＲフィルタ演算を実現することができる。
【００１０】
本発明に係る前記Ｎ個の結果レジスタのうち第Ｎ番目の結果レジスタに記憶されているデータは、前記出力データとして出力されることができる。これにより、たとえばＮ段接続２次ＩＩＲフィルタ演算が施された出力データを得ることができる。
【００１１】
本発明に関する積和演算回路は、最終出力遅延回路を含むことができ、前記最終出力遅延回路は、前記Ｎ個の結果レジスタのうち第Ｎ番目の結果レジスタに記憶されているデータを記憶し、前記最終出力遅延回路に記憶されているデータを前記出力データとして出力することができる。
【００１２】
本発明に係る前記結果遅延回路は、前記Ｎ個の結果レジスタのうちのいずれかに記憶されているデータを前記制御回路からの制御信号に基づいて、前記入力セレクタに選択出力する結果出力セレクタ含むことができる。
【００１３】
本発明に係る前記制御回路は、デコーダと、加算レジスタコントローラと、結果レジスタコントローラとを含み、前記加算レジスタコントローラは、前記Ｎ個の第１加算レジスタ及び前記Ｎ個の第２加算レジスタのそれぞれと接続され、前記結果レジスタコントローラは、前記Ｎ個の結果レジスタのそれぞれと接続され、前記デコーダは、クロック信号及び前記カウンタの出力値に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記Ｎ個の結果レジスタのなかから書き込みを行うレジスタを決定し、その決定結果を前記加算レジスタコントローラまたは前記結果レジスタコントローラの少なくともいずれか一方に出力することができる。
【００１４】
本発明に係る前記加算レジスタコントローラは、前記デコーダから出力された前記決定結果に基づいて、前記Ｎ個の第１加算レジスタ及び前記Ｎ個の第２加算レジスタのうちのいずれかのレジスタに対して、書き込みをアクティブにする書き込みイネーブル信号を出力することができる。これにより、前記加算レジスタコントローラは、前記デコーダからの出力値に基づいて、前記Ｎ個の第１加算レジスタ及び前記Ｎ個の第２加算レジスタうちのいずれかのレジスタを書き込み可能な状態に設定できる。
【００１５】
本発明に係る前記結果レジスタコントローラは、前記デコーダから出力された前記決定結果に基づいて、前記Ｎ個の結果レジスタうちのいずれかのレジスタに対して、書き込みをアクティブにする書き込みイネーブル信号を出力することができる。これにより、前記結果レジスタコントローラは、前記デコーダからの出力値に基づいて、前記Ｎ個の結果レジスタうちのいずれかのレジスタを書き込み可能な状態に設定できる。
【００１６】
本発明に係る前記デコーダは、クロック信号及び前記カウンタの出力値に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記０データレジスタのうち、いずれかを選択し、その選択内容を前記加算遅延回路用セレクタに出力することができる。これにより、前記加算遅延回路用セレクタは、クロック信号及びカウンタの出力値に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記０データレジスタのうち、いずれかを選択することができる。
【００１７】
本発明に係る前記加算遅延回路用セレクタは、前記デコーダから出力された前記選択内容に基づいて、前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記０データレジスタのそれぞれに記憶されているデータを前記加算器に選択出力することができる。これにより、本発明に係る加算器に、様々な値に対する加算を行わせることができる。
【００１８】
本発明に係る前記デコーダは、クロック信号及び前記カウンタの出力値に基づいて、前記Ｎ個の結果レジスタのうち、いずれかを選択し、その選択内容を前記結果出力セレクタに出力することができる。これにより、結果出力セレクタはカウンタの出力値に基づいた結果レジスタを選択することができる。
【００１９】
本発明に係る前記結果出力セレクタは、前記デコーダから出力された前記選択内容に基づいて、前記Ｎ個の結果レジスタのそれぞれに記憶されているデータを前記入力セレクタに選択出力することができる。これにより、本発明に係る乗算器に、様々な値に対する乗算を行わせることができる。
【００２０】
本発明に係る前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記Ｎ個の結果レジスタは、前記クロック信号の立ち上がりエッジまたは立ち下がりエッジに同期してデータ書き込みされることができる。これにより、本発明に係る前記Ｎ個の第１加算レジスタ、前記Ｎ個の第２加算レジスタ及び前記Ｎ個の結果レジスタは、加算器からの出力データを遅延出力することができる。
【００２１】
本発明に係る積和演算回路は、前記外部からの入力データに対して、（５×Ｎ＋２）クロックで１サイクルの演算結果を出力することができる。
【００２２】
本発明に係る積和演算回路は、ｎ番目（ｎは自然数）の入力データがＭ番目（Ｍは自然数）の前記クロック信号に同期して前記入力セレクタに入力されると、第１ステップとして、Ｍ番目の前記クロック信号の周期に同期して、前記乗算器は、前記ｎ番目の入力データと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、第２ステップとして、（Ｍ＋１）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、前記乗算器は、前記ｎ番目の入力データと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、前記加算器は、前記第１加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記結果遅延回路に出力し、第３ステップとして、（Ｍ＋２）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、前記結果遅延回路は前記加算器から出力されている前記加算結果をラッチし、前記乗算器は、前記結果遅延回路に記憶されているデータと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、前記加算器は、前記第２加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第１加算遅延回路に出力し、第４ステップとして、（Ｍ＋３）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、前記第１加算遅延回路は前記加算器から出力されている前記加算結果をラッチし、前記乗算器は、前記ｎ番目の入力データと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、前記加算器は、前記第１加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第１加算遅延回路に出力し、第５ステップとして、（Ｍ＋４）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、前記第１加算遅延回路は前記加算器から出力されている前記加算結果をラッチし、前記乗算器は、前記結果遅延回路に記憶されているデータと、前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを乗算し、その乗算結果を前記乗算結果遅延回路に出力し、前記加算器は、前記０データ記憶回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第２加算遅延回路に出力し、第６ステップとして、（Ｍ＋５）番目の前記クロック信号の周期に同期して、前記乗算結果遅延回路は前記乗算器から出力されている前記乗算結果をラッチし、前記第２加算遅延回路は前記加算器から出力されている前記加算結果をラッチし、前記加算器は、前記第２加算遅延回路に記憶されているデータと、前記乗算結果遅延回路に記憶されているデータとを加算し、その加算結果を前記第２加算遅延回路に出力し、第７ステップとして、（Ｍ＋６）番目の前記クロック信号の周期に同期して、前記第２加算遅延回路は前記加算器から出力されている前記加算結果をラッチすることができる。
【００２３】
これにより、本発明に係る積和演算回路は小さな回路構成で、例えばＩＩＲフィルタ演算を行うことができる。
【００２４】
本発明に係る積和演算回路は、ｎ番目（ｎは自然数）の入力データが前記入力セレクタに入力されると、前記入力データに対して、Ｎステージの積和演算、第１の終段演算、第２の終段演算の順に演算が行われ、前記積和演算のｍ（ｍは自然数）番目のステージは、５つの演算ステップを含み、前記５つの演算ステップは、前記クロック信号の周期が５回分経過する間に、前記クロック信号の各周期に同期して行われ、第１の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第１乗算ステップと、ｍ＝１の時は加算を行わず、ｍ＞１の時は（ｍ−１）番目の前記第２加算レジスタに記憶されているデータと、前記第１乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（ｍ−１）番目の第２加算レジスタに出力する第１加算ステップとを含み、第２の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第２乗算ステップと、ｍ番目の前記第１加算レジスタに記憶されているデータと、前記第２乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果をｍ番目の前記結果レジスタに出力する第２加算ステップとを含み、第３の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第３乗算ステップと、ｍ番目の前記第２加算レジスタに記憶されているデータと、前記第３乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記ｍ番目の第１加算レジスタに出力する第３加算ステップとを含み、第４の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第４乗算ステップと、前記ｍ番目の第１加算レジスタに記憶されているデータと、前記第４乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記ｍ番目の第１加算レジスタに出力する第４加算ステップとを含み、第５の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第５乗算ステップと、前記０データレジスタに記憶されているデータと、前記第５乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記ｍ番目の第２加算レジスタに出力する第５加算ステップとを含み、第１の終段演算は、Ｎ番目のステージにおける前記第５乗算ステップの前記乗算結果と、Ｎ番目の前記第２加算レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記Ｎ番目の第２加算レジスタに出力する第６加算ステップを含み、第２の終段演算は、前記第６加算ステップの加算結果を前記Ｎ番目の第２加算レジスタに記憶させるラッチステップを含み、前記第１の演算ステップ、前記第２の演算ステップ及び前記第４の演算ステップでは、ｍ＝１の時、前記入力セレクタは前記入力データを前記乗算器に選択出力し、ｍ＞１の時、前記入力セレクタは（ｍ−１）番目の前記結果レジスタからの出力を前記乗算器に選択出力し、前記第３の演算ステップ及び前記第５の演算ステップでは、前記入力セレクタは前記ｍ番目の結果レジスタからの出力を前記乗算器に選択出力することができる。
【００２５】
これにより、本発明に係る積和演算回路は、例えばＮ段接続２次ＩＩＲフィルタ演算を行うことができる。
【００２６】
本発明に係る積和演算回路は、ｎ番目（ｎは自然数）の入力データが前記入力セレクタに入力されると、前記入力データに対して、Ｎステージの積和演算、第１の終段演算、第２の終段演算の順に演算が行われ、前記積和演算のｍ（ｍは自然数）番目のステージは、５つの演算ステップを含み、前記５つの演算ステップは、前記クロック信号の周期が５回分経過する間に、前記クロック信号の各周期に同期して行われ、第１の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第１乗算ステップと、ｍ＝１の時は加算を行わず、ｍ＞１の時は（Ｎ−ｍ＋１）番目の前記第２加算レジスタに記憶されているデータと、前記第１乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第２加算レジスタに出力する第１加算ステップとを含み、第２の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第２乗算ステップと、（Ｎ−ｍ＋１）番目の前記第１加算レジスタに記憶されているデータと、前記第２乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を（Ｎ−ｍ＋１）番目の前記結果レジスタに出力する第２加算ステップとを含み、第３の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第３乗算ステップと、前記（Ｎ−ｍ＋１）番目の第２加算レジスタに記憶されているデータと、前記第３乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第１加算レジスタに出力する第３加算ステップとを含み、第４の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第４乗算ステップと、前記（Ｎ−ｍ＋１）番目の第１加算レジスタに記憶されているデータと、前記第４乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第１加算レジスタに出力する第４加算ステップとを含み、第５の演算ステップは、前記入力セレクタからの出力データと前記カウンタの出力値に基づいた前記係数記憶回路の出力データとを前記乗算器にて乗算し、その乗算結果を前記乗算結果レジスタに出力する第５乗算ステップと、前記０データレジスタに記憶されているデータと、前記第５乗算ステップ以前に前記乗算結果レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記（Ｎ−ｍ＋１）番目の第２加算レジスタに出力する第５加算ステップとを含み、第１の終段演算は、Ｎ番目のステージにおける前記第５乗算ステップの前記乗算結果と、１番目の前記第２加算レジスタに記憶されているデータとを前記加算器にて加算し、その加算結果を前記１番目の第２加算レジスタに出力する第６加算ステップを含み、第２の終段演算は、前記第６加算ステップの加算結果を前記１番目の第２加算レジスタに記憶させるラッチステップを含み、前記第１の演算ステップ、前記第２の演算ステップ及び前記第４の演算ステップでは、ｍ＝Ｎの時、前記入力セレクタは前記入力データを前記乗算器に選択出力し、ｍ＜Ｎの時、前記入力セレクタは（Ｎ−ｍ）番目の前記結果レジスタからの出力を前記乗算器に選択出力し、前記第３の演算ステップ及び前記第５の演算ステップでは、前記入力セレクタは前記（Ｎ−ｍ＋１）番目の結果レジスタからの出力を前記乗算器に選択出力することができる。
【００２７】
これにより、本発明に係る積和演算回路は、Ｎに比例した遅延時間を発生することができるので、遅延時間が考慮された電子機器に対して、本発明に係る積和演算回路を容易に搭載することができる。
【００２８】
本発明に係る前記カウンタは、（５×Ｎ＋２）進カウンタを含むことができる。これにより、カウンタの出力する値のそれぞれに、各ステージの各演算ステップを対応させることができる。
【００２９】
本発明に係るアナログ／デジタル変換器は、本発明に係る積和演算回路を含むことができる。これにより、小型電子機器に搭載容易なアナログ／デジタル変換器を提供することができる。
【００３０】
本発明に係るデジタル／アナログ変換器は、本発明に係る積和演算回路を含むことを特徴とする。これにより、小型電子機器に搭載容易なデジタル／アナログ変換器を提供することができる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の一実施形態について、図面を参照して説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００３２】
１．第１実施形態の構成
図１は本実施形態の積和演算回路１００の構成を示すブロック図である。積和演算回路１００は、入力セレクタＳＬ１と、レジスタセレクタＳＬ２（広義には加算遅延回路用セレクタ）とを含む。また、積和演算回路１００は、乗算器１０と、加算器２０と、シーケンサ３０（広義には制御回路）と、カウンタ４０と、係数ＲＯＭ５０（広義には係数記憶回路）とを含む。さらに、積和演算回路１００は、乗算結果レジスタＡｒｅｇ（広義には乗算結果遅延回路）と、Ｎ個（Ｎは自然数）の第１加算レジスタＲｅｇ１（広義には第１加算遅延回路）と、Ｎ個の第２加算レジスタＲｅｇ２（広義には第２加算遅延回路）と、０データレジスタＺｒｅｇ（０データ記憶回路）と、Ｎ個の結果レジスタＯｒｅｇ（広義には結果遅延回路）と、最終出力レジスタＥｒｅｇ（広義には最終結果遅延回路）とを含む。変形例として、積和演算回路１００は図１の最終出力レジスタＥｒｅｇを含まない構成も可能である。なお、以下の図において同符号のものは同様の意味を示す。
【００３３】
入力セレクタＳＬ１は、結果レジスタＯｒｅｇからの出力データまたは外部からの入力データのいずれか一方を乗算器１０に選択出力する。カウンタ４０は、クロックＣＬＫに同期してインクリメントされる数値（以後、カウンタ値とも言う）を係数ＲＯＭ５０及びシーケンサ３０に出力する。カウンタ４０は、例えば（５×Ｎ＋２）進カウンタで構成することができる。係数ＲＯＭ５０は複数の係数を格納し、カウンタ値に対応する係数を乗算器１０に出力する。
【００３４】
乗算器１０は入力Ｘ及び入力Ｙを備える。入力セレクタＳＬ１の出力データは例えば乗算器１０の入力Ｘに入力され、係数ＲＯＭ５０の出力データは例えば乗算器１０の入力Ｙに入力される。乗算器１０は、入力Ｘに入力されたデータ（入力セレクタＳＬ１からの出力データ）と入力Ｙに入力されたデータ（係数ＲＯＭ５０からの出力データ）とを乗算し、その乗算結果を乗算結果レジスタＡｒｅｇに出力する。レジスタセレクタＳＬ２は、Ｎ個の第１加算レジスタＲｅｇ１、Ｎ個の第２加算レジスタＲｅｇ２又は０データレジスタＺｒｅｇのうち、いずれかの出力データを加算器２０に選択出力する。
【００３５】
加算器２０は入力Ａ及び入力Ｂを備える。乗算結果レジスタＡｒｅｇの出力データは例えば加算器２０の入力Ａに入力され、レジスタセレクタＳＬ２の出力データは例えば加算器２０の入力Ｂに入力される。加算器２０は、入力Ａに入力されたデータ（乗算結果レジスタＡｒｅｇからの出力データ）と入力Ｂに入力されデータ（レジスタセレクタＳＬ２からの出力データ）とを加算し、その加算結果をＮ個の結果レジスタＯｒｅｇ、Ｎ個の第１加算レジスタＲｅｇ１及びＮ個の第２加算レジスタＲｅｇ２に出力する。最終出力レジスタＥｒｅｇには、Ｎ個の結果レジスタＯｒｅｇのうち、Ｎ番目の結果レジスタＯｒｅｇに記憶されているデータが出力される。
【００３６】
シーケンサ３０は、カウンタ値に基づいて、各セレクタＳＬ１、ＳＬ２と各レジスタＯｒｅｇ、Ｒｅｇ１、Ｒｅｇ２に制御信号を出力する。
【００３７】
図２に２次ＩＩＲフィルタ演算（Infinite-Impulse-Response）の一般形を示した。乗算手段１１は入力と係数ａ０とを乗算する手段である。乗算手段１２は入力と係数ａ１とを乗算するする手段である。乗算手段１３は入力と係数ａ２とを乗算するする手段である。乗算手段１４は加算手段２１の出力と係数ｂ１とを乗算するする手段である。乗算手段１５は加算手段２１の出力と係数ｂ２とを乗算するする手段である。
【００３８】
加算手段２１は乗算手段１１の結果と遅延手段Ｒ１の出力とを加算するする手段である。加算手段２１の結果は、遅延手段Ｒ３に出力される。遅延手段Ｒ３に入力されたデータはフィルタ演算の出力データとして出力される。加算手段２２は乗算手段１２の結果と遅延手段Ｒ２の出力と乗算手段１４の結果とを加算するする手段である。加算手段２３は乗算手段１３の結果と乗算手段１５の結果とを加算するする手段である。なお、図２は２次ＩＩＲ演算１段分を示している。
【００３９】
図３は、図２に示される演算を本実施形態で行う場合の演算手順を示す図である。なお、本実施形態では、図２の各乗算手段１１〜１５は図１の乗算器１０を用い、図２の各加算手段２１〜２３は図１の加算器２０を用いる。また、本実施形態では、図２の遅延手段Ｒ１は図１の第１加算レジスタＲｅｇ１を用い、図２の遅延手段Ｒ２は図１の第２加算レジスタＲｅｇ２を用い、図２の遅延手段Ｒ３は図１の結果レジスタＯｒｅｇを用いる。
【００４０】
図３では５つの手順１〜５で演算手順が示されている。加算手段２１は手順１で表される。加算手段２２は、手順２及び手順３で表される。加算手段２３は、手順４及び手順５で表される。
【００４１】
手順１では、まず乗算手段１１として、図１の乗算器１０にて入力データとａ０（係数ＲＯＭ５０の出力データ）とを乗算し、その乗算結果と第１加算レジスタＲｅｇ１の出力データとを図１の加算器２０にて加算する。その加算結果は結果レジスタＯｒｅｇに出力される。
【００４２】
手順２では、まず乗算手段１２として、図１の乗算器１０にて入力データとａ１（係数ＲＯＭ５０の出力データ）とを乗算し、その乗算結果と第２加算レジスタＲｅｇ２の出力データとを図１の加算器２０にて加算する。その加算結果は第１加算レジスタＲｅｇ１に出力される。
【００４３】
手順３では、まず乗算手段１４として、結果レジスタＯｒｅｇの出力データとｂ１（係数ＲＯＭ５０の出力データ）とを図１の乗算器１０にて乗算し、その乗算結果と第１加算レジスタＲｅｇ１の出力データとを図１の加算器２０にて加算する。その加算結果は第１加算レジスタＲｅｇ１に出力される。
【００４４】
手順４では、まず乗算手段１３として、図１の乗算器１０にて入力データとａ２（係数ＲＯＭ５０の出力データ）とを乗算し、その乗算結果と０データレジスタＺｒｅｇの出力データとを図１の加算器２０にて加算する。その加算結果は第２加算レジスタＲｅｇ２に出力される。
【００４５】
手順５では、まず乗算手段１５として、結果レジスタＯｒｅｇの出力データとｂ２（係数ＲＯＭ５０の出力データ）とを図１の乗算器１０にて乗算し、その乗算結果と第２加算レジスタＲｅｇ２の出力データとを図１の加算器２０にて加算する。その加算結果は第２加算レジスタＲｅｇ２に出力される。
【００４６】
図１の積和演算回路１００は、図３の各手順１〜５を時系列に順次処理していくことで、入力データに対してフィルタ演算の施された出力データを得ることができる。また、積和演算回路１００は、５つの手順１〜５を１ステージとして、入力データに対してフィルタ演算をＮステージ行うことで、Ｎ段接続２次ＩＩＲフィルタ演算の施された出力データを得ることができる。
【００４７】
図４は、Ｎ＝１の場合のときの積和演算回路１００の演算ステップを示す図である。図４の各第１ステップ〜第７ステップは、図３の演算手順がクロックＣＬＫ単位に分割されたときのクロックＣＬＫ毎のそれぞれの演算過程を示す。つまり、積和演算回路１００がＮ＝１として構成された場合、積和演算回路１００は入力データに対して、７ステップ（７クロック）の演算処理を行うことでフィルタ演算の施された出力データを得ることができる。また、図４に記載されている変数ｎは、入力データが入力セレクタＳＬ１に入力されたときの順番を示す。例えば図４のＩｎｐｕｔ（ｎ）は、ｎ番目に入力セレクタＳＬ１に入力された入力データを示し、図４のＯｒｅｇ（ｎ）はＩｎｐｕｔ（ｎ）に対する最終出力データを示す。また、図４のＲｅｇ１（ｎ）はＩｎｐｕｔ（ｎ）に対する最終的な第１加算レジスタＲｅｇ１の値を示し、Ｒｅｇ１（ｎ−１）はＩｎｐｕｔ（ｎ−１）に対する最終的な第１加算レジスタＲｅｇ１の値を示す。同様に、図４のＲｅｇ２（ｎ）は第２加算レジスタＲｅｇ２の値を示す。
【００４８】
第１ステップでは、ｎ番目の入力データ（以後、Ｉｎｐｕｔ（ｎ）ともいう）が図１の乗算器１０の入力Ｘに入力される。乗算器１０の入力Ｙには図１の係数ＲＯＭ５０から係数（ａ０）が入力される。乗算器１０は、入力Ｘ及び入力Ｙの乗算結果を図１の乗算結果レジスタＡｒｅｇに出力する。この時点では、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ−１）を記憶し、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ−１）を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ−１）を記憶する。
【００４９】
第２ステップでは、図１の乗算結果レジスタＡｒｅｇは、第１ステップにて乗算器１０から出力された乗算結果を、図１の加算器２０の入力Ａに遅延出力する。図１の加算器２０の入力Ｂには図１のレジスタセレクタＳＬ２から図１の第１加算レジスタＲｅｇ１の値であるＲｅｇ１（ｎ−１）が選択出力される。加算器２０は入力Ａ及び入力Ｂの加算結果を図１の結果レジスタＯｒｅｇに出力する。また、Ｉｎｐｕｔ（ｎ）が図１の乗算器１０の入力Ｘに入力される。乗算器１０の入力Ｙには図１の係数ＲＯＭ５０から係数（ａ１）が入力される。乗算器１０は、入力Ｘ及び入力Ｙの乗算結果を図１の乗算結果レジスタＡｒｅｇに出力する。この時点では、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ−１）を記憶し、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ−１）を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ−１）を記憶する。
【００５０】
第３ステップでは、図１の乗算結果レジスタＡｒｅｇは、第２ステップにて乗算器１０から出力された乗算結果を、図１の加算器２０の入力Ａに遅延出力する。図１の加算器２０の入力Ｂには図１のレジスタセレクタＳＬ２から図１の第２加算レジスタＲｅｇ２の値であるＲｅｇ２（ｎ−１）が選択出力される。加算器２０は入力Ａ及び入力Ｂの加算結果を図１の第１加算レジスタＲｅｇ１に出力する。また、第２ステップにて加算器２０から出力された加算結果は、Ｏｒｅｇ（ｎ）として図１の結果レジスタＯｒｅｇによって、図１の乗算器１０の入力Ｘに遅延出力される。乗算器１０の入力Ｙには図１の係数ＲＯＭ５０から係数（ｂ１）が入力される。乗算器１０は、入力Ｘ及び入力Ｙの乗算結果を図１の乗算結果レジスタＡｒｅｇに出力する。この時点では、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ−１）を記憶する。また、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ−１）を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ）としてＩｎｐｕｔ（ｎ）×ａ０＋Ｒｅｇ１（ｎ−１）を記憶する。
【００５１】
第４ステップでは、図１の乗算結果レジスタＡｒｅｇは、第３ステップにて乗算器１０から出力された乗算結果を、図１の加算器２０の入力Ａに遅延出力する。図１の加算器２０の入力Ｂには図１のレジスタセレクタＳＬ２から図１の第１加算レジスタＲｅｇ１の値であるＲｅｇ１（ｎ）が選択出力される。このときのＲｅｇ１（ｎ）は、第３ステップにて加算器２０から出力された加算結果が図１の第１加算レジスタＲｅｇ１によって遅延出力された値である。すなわち、Ｒｅｇ１（ｎ）＝Ｉｎｐｕｔ（ｎ）×ａ１＋Ｒｅｇ２（ｎ−１）である。加算器２０は入力Ａ及び入力Ｂの加算結果を図１の第１加算レジスタＲｅｇ１に出力する。また、Ｉｎｐｕｔ（ｎ）が図１の乗算器１０の入力Ｘに入力される。乗算器１０の入力Ｙには図１の係数ＲＯＭ５０から係数（ａ２）が入力される。乗算器１０は、入力Ｘ及び入力Ｙの乗算結果を図１の乗算結果レジスタＡｒｅｇに出力する。この時点では、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ）として、Ｉｎｐｕｔ（ｎ）×ａ１＋Ｒｅｇ２（ｎ−１）を記憶し、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ−１）を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ）としてＩｎｐｕｔ（ｎ）×ａ０＋Ｒｅｇ１（ｎ−１）を記憶する。
【００５２】
第５ステップでは、図１の乗算結果レジスタＡｒｅｇは、第４ステップにて乗算器１０から出力された乗算結果を、図１の加算器２０の入力Ａに遅延出力する。図１の加算器２０の入力Ｂには図１のレジスタセレクタＳＬ２から図１の０データレジスタＺｒｅｇの値（０）が選択出力される。加算器２０は入力Ａ及び入力Ｂの加算結果を図１の第２加算レジスタＲｅｇ２に出力する。図１の乗算器１０の入力Ｘには結果レジスタＯｒｅｇの値であるＯｒｅｇ（ｎ）が入力される。乗算器１０の入力Ｙには図１の係数ＲＯＭ５０から係数（ｂ２）が入力される。乗算器１０は、入力Ｘ及び入力Ｙの乗算結果を図１の乗算結果レジスタＡｒｅｇに出力する。この時点では、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ）として第４ステップでの加算器２０の出力を記憶する。すなわち、Ｒｅｇ１（ｎ）＝Ｉｎｐｕｔ（ｎ）×ａ１＋Ｒｅｇ２（ｎ−１）＋Ｏｒｅｇ（ｎ）×ｂ１である。また、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ−１）を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ）としてＩｎｐｕｔ（ｎ）×ａ０＋Ｒｅｇ１（ｎ−１）を記憶する。
【００５３】
第６ステップでは、図１の乗算結果レジスタＡｒｅｇは、第５ステップにて乗算器１０から出力された乗算結果を、図１の加算器２０の入力Ａに遅延出力する。図１の加算器２０の入力Ｂには図１のレジスタセレクタＳＬ２から選択出力された第２加算レジスタＲｅｇ２の値であるＲｅｇ２（ｎ）が選択出力される。このときのＲｅｇ２（ｎ）は、第５ステップにて加算器２０から出力された加算結果が図１の第２加算レジスタＲｅｇ２によって遅延出力された値である。すなわち、Ｒｅｇ２（ｎ）＝Ｉｎｐｕｔ（ｎ）×ａ２である。加算器２０は入力Ａ及び入力Ｂの加算結果を図１の第２加算レジスタＲｅｇ２に出力する。この時点では、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ）としてＩｎｐｕｔ（ｎ）×ａ１＋Ｒｅｇ２（ｎ−１）＋Ｏｒｅｇ（ｎ）×ｂ１を記憶する。また、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ）としてＩｎｐｕｔ（ｎ）×ａ２を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ）としてＩｎｐｕｔ（ｎ）×ａ０＋Ｒｅｇ１（ｎ−１）を記憶する。
【００５４】
第７ステップでは、図１の第２加算レジスタＲｅｇ２は、第６ステップでの加算器２０の加算結果をＲｅｇ２（ｎ）として記憶する。すなわち、Ｒｅｇ２（ｎ）＝Ｉｎｐｕｔ（ｎ）×ａ２＋Ｏｒｅｇ（ｎ）×ｂ２である。この時点で、図４に示されるように、図１の第１加算レジスタＲｅｇ１はＲｅｇ１（ｎ）としてＩｎｐｕｔ（ｎ）×ａ１＋Ｒｅｇ２（ｎ−１）＋Ｏｒｅｇ（ｎ）×ｂ１を記憶する。また、図１の第２加算レジスタＲｅｇ２はＲｅｇ２（ｎ）としてＩｎｐｕｔ（ｎ）×ａ２＋Ｏｒｅｇ（ｎ）×ｂ２を記憶する。また、図１の結果レジスタＯｒｅｇはＯｒｅｇ（ｎ）としてＩｎｐｕｔ（ｎ）×ａ０＋Ｒｅｇ１（ｎ−１）を記憶する。
【００５５】
上記にような演算過程において、Ｉｎｐｕｔ（ｎ）に対するＯｒｅｇ（ｎ）は第３ステップにて決定する。また、Ｉｎｐｕｔ（ｎ）に対するＲｅｇ１（ｎ）は第５ステップにて決定する。また、Ｉｎｐｕｔ（ｎ）に対するＲｅｇ２（ｎ）は第７ステップにて決定する。
【００５６】
なお、図１の乗算器１０及び加算器２０は、互いに独立であるので同時の演算が可能である。そのため、図１の乗算器１０は、図４の第６ステップの時点で（ｎ＋１）番目の入力データであるＩｎｐｕｔ（ｎ＋１）に対する乗算を開始できる。
【００５７】
次にＮ＝６の場合、つまり６段接続２次ＩＩＲフィルタを実現する積和演算回路を説明する。
【００５８】
図５は、６段２次ＩＩＲフィルタを実現する積和演算回路１０００の詳細なブロック図である。積和演算回路１０００は、図１の積和演算回路１００と同様の構成をとり、Ｎ＝６の場合の積和演算回路である。積和演算回路１０００は、結果出力セレクタＳＬ３を含む。また、積和演算回路１０００は、６個の第１加算レジスタＲｅｇ１１〜Ｒｅｇ１６（広義には第１加算遅延回路）と、６個の第２加算レジスタＲｅｇ２１〜Ｒｅｇ２６（広義には第２加算遅延回路）と、６個の結果レジスタＯｒｅｇ１〜Ｏｒｅｇ６（広義には結果遅延回路）とを含む。各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）は、データ入力端子Ｄと、データ出力端子Ｑと、イネーブル入力端子Ｅを備える。各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）にはクロックＣＬＫが入力される。
【００５９】
各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）は、イネーブル入力端子Ｅにアクティブな信号が入力された状態において、例えばクロックＣＬＫの立ち上がりエッジに同期してデータ書き換えが行われるように設計されている。変形例として、各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）は、例えばクロックＣＬＫの立ち下がりエッジに同期してデータ書き換えが行われるように設計されてもよい。また、積和演算回路１０００では、結果レジスタＯｒｅｇ６に最終出力レジスタＥｒｅｇが接続されているが、変形例として、積和演算回路１０００は最終出力レジスタＥｒｅｇを含まない構成も可能である。最終出力レジスタＥｒｅｇはイネーブル入力端子Ｅを備える。最終出力レジスタＥｒｅｇのイネーブル入力端子Ｅに、シーケンサ３０からアクティブな信号が入力されると、最終出力レジスタＥｒｅｇはデータ書き換えが可能な状態になる。
【００６０】
シーケンサ３０はデコーダ３１と、加算レジスタコントローラ３２と、結果レジスタコントローラ３３とを含む。
【００６１】
図５のカウンタ４０は、クロックＣＬＫに同期してカウンタ値を係数ＲＯＭ５０及びシーケンサ３０のデコーダ３１に出力する。図５のカウンタ４０は、例えば（５×Ｎ＋２＝３２）進カウンタで構成することができる。係数ＲＯＭ５０は複数の係数（ａ０１〜ａ０６、ａ１１〜ａ１６、ａ２１〜ａ２６、ｂ１１〜ｂ１６、ｂ２１〜ｂ２６）を格納し、カウンタ値に対応する係数を乗算器１０に出力する。
【００６２】
デコーダ３１はカウンタ４０からのカウンタ値に基づいて、加算レジスタコントローラ３２または結果レジスタコントローラ３３の少なくともいずれか一方に、レジスタ情報を出力する。レジスタ情報は、各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）のいずれかのうち少なくとも１つを示す情報を含む。デコーダ３１は、加算レジスタコントローラ３２及び結果レジスタコントローラ３３の両方にレジスタ情報を出力してもよい。
【００６３】
加算レジスタコントローラ３２は、デコーダ３１からのレジスタ情報に基づいて、各第１加算レジスタＲｅｇ１１〜Ｒｅｇ１６または各第２加算レジスタＲｅｇ２１〜Ｒｅｇ２６のいずれかのイネーブル入力端子Ｅにアクティブな信号を出力する。結果レジスタコントローラ３３は、デコーダ３１からのレジスタ情報に基づいて、各結果レジスタＯｒｅｇ１〜Ｏｒｅｇ６のいずれかのイネーブル入力端子Ｅにアクティブな信号を出力する。
【００６４】
変形例として、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を、一つのレジスタコントローラに置き換えて、一つのレジスタコントローラに各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）のイネーブル入力端子Ｅの制御を行わせることも可能である。
【００６５】
各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）のデータ入力端子Ｄには、加算器２０から加算結果が入力される。
【００６６】
レジスタセレクタＳＬ２は、６個の第１加算レジスタＲｅｇ１１〜Ｒｅｇ１６、６個の第２加算レジスタＲｅｇ２１〜Ｒｅｇ２６又は０データレジスタＺｒｅｇのうち、いずれかの出力データを加算器２０に選択出力する。
【００６７】
加算器２０は、入力Ａに入力されたデータ（乗算結果レジスタＡｒｅｇからの出力データ）と入力Ｂに入力されデータ（レジスタセレクタＳＬ２からの出力データ）とを加算し、その加算結果を各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。最終出力レジスタＥｒｅｇには、結果レジスタＯｒｅｇ６（Ｎ番目の結果レジスタ）に記憶されているデータが出力される。
【００６８】
次に、図５の積和演算回路１０００の演算手順について、図６を参照しながら説明する。図５の積和演算回路１０００は１段（１ステージ）のフィルタ演算の過程で図６のステップ１〜ステップ５を有する。図５の積和演算回路１０００は６段のフィルタ演算を行うので、図６のように１ステージ（ステップ１〜ステップ５）を６回行う。図６のフローチャートの変数ｍはステージ数を示す。例えば、図６のａ０（ｍ）は、ｍ＝１のとき、係数ａ０１を表す。積和演算回路１０００は６段接続２次ＩＩＲフィルタ演算を行うので、変数ｍは１から６までの範囲で可変である。変数ｍが、順に１ずつインクリメントされ、ｍ＝６となったとき、１つのサンプル（入力セレクタＳＬ１に入力される入力データ）に対する６段接続２次ＩＩＲフィルタ演算が終了する。なお、図６の第ｍステージにおいて、前段とは第（ｍ−１）ステージを示す。
【００６９】
ステップ１（第１の演算ステップ）では、図５の乗算器１０にて入力Ｘ及び入力Ｙに対する乗算（第１乗算ステップ）が行われる。このとき、図５の入力セレクタＳＬ１によって、入力Ｘにはｍ＝１のときサンプル（入力セレクタＳＬ１に入力される入力データ）が入力され、ｍ＞１のときは前段の出力データ（Ｏｒｅｇ（ｍ−１））が入力される。また、入力Ｙには図５の係数ＲＯＭから係数ａ０（ｍ）が入力される。図５の乗算器１０は乗算結果を図５の乗算結果レジスタＡｒｅｇに出力する。さらに図５の加算器２０にて入力Ａ及び入力Ｂに対する演算（第１加算ステップ）が行われる。この演算（第１加算ステップ）では、ｍ＞１のとき、乗算結果レジスタＡｒｅｇに記憶されているデータと第２加算レジスタＲｅｇ２（ｍ）に記憶されているデータとの加算が行われ、ｍ＝１のときは入力Ａ及び入力Ｂに対する加算が行われない。なお、このときの乗算結果レジスタＡｒｅｇには、前段のステップ５の第５乗算ステップの乗算結果が記憶されている。図５の加算器２０は、ｍ＞１の場合、加算結果を第２加算レジスタＲｅｇ２（ｍ）に出力する。
【００７０】
ステップ２（第２の演算ステップ）では、図５の乗算器１０にて入力Ｘ及び入力Ｙに対する乗算（第２乗算ステップ）が行われる。このとき、図５の入力セレクタＳＬ１によって、入力Ｘにはｍ＝１のときサンプル（入力セレクタＳＬ１に入力される入力データ）が入力され、ｍ＞１のときは前段の出力データ（Ｏｒｅｇ（ｍ−１））が入力される。また、入力Ｙには図５の係数ＲＯＭから係数ａ１（ｍ）が入力される。図５の乗算器１０は乗算結果を図５の乗算結果レジスタＡｒｅｇに出力する。さらに図５の加算器２０にて入力Ａ及び入力Ｂに対する演算（第２加算ステップ）が行われる。このとき図５の加算器２０の入力Ａには、ステップ１での乗算器１０の乗算結果が乗算結果レジスタＡｒｅｇによって遅延出力される。加算器２０の入力Ｂには、図５のレジスタセレクタＳＬ２によって第１加算レジスタＲｅｇ１（ｍ）に記憶されているデータが選択出力される。図５の加算器２０は、加算結果を結果レジスタＯｒｅｇ（ｍ）に出力する。
【００７１】
ステップ３（第３の演算ステップ）では、図５の乗算器１０にて入力Ｘ及び入力Ｙに対する乗算（第３乗算ステップ）が行われる。このとき、図５の入力セレクタＳＬ１によって、入力Ｘには結果レジスタＯｒｅｇ（ｍ）に記憶されているデータが入力される。また、入力Ｙには図５の係数ＲＯＭから係数ｂ１（ｍ）が入力される。図５の乗算器１０は乗算結果を図５の乗算結果レジスタＡｒｅｇに出力する。さらに図５の加算器２０にて入力Ａ及び入力Ｂに対する演算（第３加算ステップ）が行われる。このとき図５の加算器２０の入力Ａには、ステップ２での乗算器１０の乗算結果が乗算結果レジスタＡｒｅｇによって遅延出力される。加算器２０の入力Ｂには、図５のレジスタセレクタＳＬ２によって第２加算レジスタＲｅｇ２（ｍ）に記憶されているデータが選択出力される。図５の加算器２０は、加算結果を第１加算レジスタＲｅｇ１（ｍ）に出力する。
【００７２】
ステップ４（第４の演算ステップ）では、図５の乗算器１０にて入力Ｘ及び入力Ｙに対する乗算（第４乗算ステップ）が行われる。このとき、図５の入力セレクタＳＬ１によって、入力Ｘにはｍ＝１のときサンプル（入力セレクタＳＬ１に入力される入力データ）が入力され、ｍ＞１のときは前段の出力データ（Ｏｒｅｇ（ｍ−１））が入力される。また、入力Ｙには図５の係数ＲＯＭから係数ａ２（ｍ）が入力される。図５の乗算器１０は乗算結果を図５の乗算結果レジスタＡｒｅｇに出力する。さらに図５の加算器２０にて入力Ａ及び入力Ｂに対する演算（第４加算ステップ）が行われる。このとき図５の加算器２０の入力Ａには、ステップ３での乗算器１０の乗算結果が乗算結果レジスタＡｒｅｇによって遅延出力される。加算器２０の入力Ｂには、図５のレジスタセレクタＳＬ２によって第１加算レジスタＲｅｇ１（ｍ）に記憶されているデータが選択出力される。図５の加算器２０は、加算結果を第１加算レジスタＲｅｇ１（ｍ）に出力する。
【００７３】
ステップ５（第５の演算ステップ）では、図５の乗算器１０にて入力Ｘ及び入力Ｙに対する乗算（第５乗算ステップ）が行われる。このとき、図５の入力セレクタＳＬ１によって、入力Ｘには結果レジスタＯｒｅｇ（ｍ）に記憶されているデータが入力される。また、入力Ｙには図５の係数ＲＯＭから係数ｂ２（ｍ）が入力される。図５の乗算器１０は乗算結果を図５の乗算結果レジスタＡｒｅｇに出力する。さらに図５の加算器２０にて入力Ａ及び入力Ｂに対する演算（第５加算ステップ）が行われる。このとき図５の加算器２０の入力Ａには、ステップ４での乗算器１０の乗算結果が乗算結果レジスタＡｒｅｇによって遅延出力される。加算器２０の入力Ｂには、図５のレジスタセレクタＳＬ２によって０データレジスタＺｒｅｇに記憶されているデータが選択出力される。図５の加算器２０は、加算結果を第２加算レジスタＲｅｇ２（ｍ）に出力する。
【００７４】
図６には図示されていないが、上記のステップ１〜ステップ５までが６回行われた後に、第１の終段演算及び第２の終段演算が行われる。
【００７５】
第１の終段演算では、加算器２０は、加算器２０の入力Ａ及び入力Ｂに対して加算（第６加算ステップ）が行われる。このとき、第６ステージ（第Ｎステージ）のステップ５（第５の演算ステップ）の第５乗算ステップでの乗算結果が、乗算結果レジスタＡｒｅｇによって加算器２０の入力Ａに遅延出力される。また、加算器２０の入力Ｂには、第２加算レジスタＲｅｇ２６に記憶されているデータが入力される。加算器２０は、加算結果を第２加算レジスタＲｅｇ２６（Ｎ番目の第２加算レジスタ）に出力する。
【００７６】
第２の終段演算では、ラッチステップが行われる。ラッチステップでは、第１の終段演算によって出力された加算結果が、第２加算レジスタＲｅｇ２６（Ｎ番目の第２加算レジスタ）に記憶される。
【００７７】
上記のステップ１〜ステップ５までを６回行われた後、第１の終段演算及び第２の終段演算を行うことで、１つのサンプル（入力セレクタＳＬ１に入力される入力データ）に対する６段接続２次ＩＩＲフィルタ演算が終了する。
【００７８】
２．第１実施形態の動作
第１実施形態の動作を説明するために、第１実施形態の一例である図５の積和演算回路１０００の動作を説明する。図７及び図８は、各カウンタ値での、乗算器１０、加算器２０、及び各レジスタに入力されるデータを示す図である。６つのステージのうち、図７には前半の３つのステージについて示され、図８には後半の３つのステージに着いて示されている。６つのステージについて演算を行うので、積和演算回路１０００は、３２通り（５×Ｎ＋２）のカウンタ値を用いる。カウンタ値は、便宜上１６進数で表されている。また、図７及び図８の変数ｎは、入力セレクタＳＬ１に入力される入力データの順番を示す。例えばｎ番目に入力セレクタＳＬ１に入力された入力データ（サンプル）は、Ｉｎｐｕｔ（ｎ）である。各レジスタに記憶されているデータは、各レスタの符号の末尾に（ｎ）または（ｎ−１）を付した符号で示されている。例えば、Ｏｒｅｇ１（ｎ）は、Ｉｎｐｕｔ（ｎ）に対応する結果レジスタＯｒｅｇ１に記憶されているデータである。各ステージの各ステップは、図７及び図８に示されるように各カウンタ値に対応する。
【００７９】
各ステップにおいて、乗算器１０の出力データは、乗算結果レジスタＡｒｅｇによって遅延出力されるので、乗算器１０の出力データと加算器２０の入力Ａに入力されるデータとでは、１クロック分（広義には一ステップ分）のタイムラグがある。例えば、第１ステージのステップ１での乗算結果は、第１ステージのステップ２で加算器２０によって加算演算される。
【００８０】
図７によると、第１ステージのステップ３にて結果レジスタＯｒｅｇ１に記憶されているデータであるＯｒｅｇ１（ｎ）が決定される。第２ステージのステップ３では、Ｏｒｅｇ１（ｎ）に基づいて演算されたＯｒｅｇ２（ｎ）が決定される。第３ステージのステップ３では、Ｏｒｅｇ２（ｎ）に基づいて演算されたＯｒｅｇ３（ｎ）が決定される。
【００８１】
図８によると、第４ステージのステップ３では、Ｏｒｅｇ３（ｎ）に基づいて演算されたＯｒｅｇ４（ｎ）が決定される。第５ステージのステップ３では、Ｏｒｅｇ４（ｎ）に基づいて演算されたＯｒｅｇ５（ｎ）が決定される。第６ステージのステップ３では、Ｏｒｅｇ５（ｎ）に基づいて演算されたＯｒｅｇ６（ｎ）が決定される。さらに第１の終段演算及び第２の終段演算では、Ｏｒｅｇ６（ｎ）に基づいて演算された演算結果としてＲｅｇ２６（ｎ）が第２加算レジスタＲｅｇ２６に記憶される。このＲｅｇ２６（ｎ）は、（ｎ＋１）番目のサンプルに対して積和演算を行うときの第２加算レジスタＲｅｇ２６のデータとして用いられる。
【００８２】
表１に各ステージ、第１の終段演算及び第２の終段演算の１サイクルが終了した時点での各レジスタに記憶されているデータを記載する。
【００８３】
【表１】
2005149009.tif 000003
【００８４】
図９及び図１０は、積和演算回路１０００の動作をしめすタイミングチャートである。図９は、カウンタ値００ｈから１０ｈまでの範囲でタイミングが示されている。図１０はカウンタ値１０ｈから１Ｆｈまでの範囲と次のサイクルのカウンタ値００ｈについてのタイミングが示されている。図９または図１０の符号ｔ１〜ｔ３３は時刻を示す。まず図９のｔ１からｔ７までの期間を説明する。
【００８５】
時刻ｔ１に第１ステージのステップ１が開始される。時刻ｔ１から時刻ｔ２までの期間において、カウンタ４０のカウンタ値は００ｈである。このとき図５の入力セレクタＳＬ１はｎ番目のサンプル（ｎ番目に入力される入力データ）を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ０１が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇは、クロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、時刻ｔ２以前ではステップ１の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００８６】
時刻ｔ２に第１ステージのステップ２が開始される。時刻ｔ２から時刻ｔ３までの期間において、カウンタ４０のカウンタ値は０１ｈである。このカウンタ値に基づいて図５のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて結果レジスタＯｒｅｇ１のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ２にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ１の乗算結果を記憶する。また、図５の入力セレクタＳＬ１はｎ番目のサンプル（ｎ番目に入力される入力データ）を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ１１が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ３以前ではステップ２の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００８７】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第１加算レジスタＲｅｇ１１に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を図５の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図９の符号Ｅ１によると、結果レジスタＯｒｅｇ１のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ２から時刻ｔ３の期間に立ち上がる。これにより、結果レジスタＯｒｅｇ１はデータ書き換え可能な状態であるが、結果レジスタＯｒｅｇ１はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ２ではステップ２の加算結果が結果レジスタＯｒｅｇ１に書き込まれない。
【００８８】
時刻ｔ３に第１ステージのステップ３が開始される。時刻ｔ３から時刻ｔ４までの期間において、カウンタ４０のカウンタ値は０２ｈである。このカウンタ値に基づいて図５のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて第１加算レジスタＲｅｇ１１のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ３にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ２の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、結果レジスタＯｒｅｇ１にステップ２の加算結果（Ｏｒｅｇ１（ｎ））が書き込まれる。また、図５の入力セレクタＳＬ１は結果レジスタＯｒｅｇ１に記憶されているデータ（Ｏｒｅｇ１（ｎ））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ｂ１１が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ４以前ではステップ３の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００８９】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第２加算レジスタＲｅｇ２１に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を図５の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図９の符号Ｅ２によると、第１加算レジスタＲｅｇ１１のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ３から時刻ｔ４の期間に立ち上がる。これにより、第１加算レジスタＲｅｇ１１はデータ書き換え可能な状態であるが、第１加算レジスタＲｅｇ１１はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ３ではステップ３の加算結果は第１加算レジスタＲｅｇ１１に書き込まれない。
【００９０】
時刻ｔ４に第１ステージのステップ４が開始される。時刻ｔ４から時刻ｔ５までの期間において、カウンタ４０のカウンタ値は０３ｈである。このカウンタ値に基づいて図５のシーケンサ３０は、第１ステージのステップ３で第１加算レジスタＲｅｇ１１に出力していたアクティブなイネーブル信号を継続して出力する。時刻ｔ４にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ３の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第１加算レジスタＲｅｇ１１にステップ２の加算結果が書き込まれる。また、図５の入力セレクタＳＬ１はｎ番目のサンプル（ｎ番目に入力される入力データ）を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ２１が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ５以前ではステップ４の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００９１】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第１加算レジスタＲｅｇ１１に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を図５の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図９の符号Ｅ２によると、第１加算レジスタＲｅｇ１１のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ４でアクティブな状態である。これにより、第１加算レジスタＲｅｇ１１はデータ書き換え可能な状態であるが、第１加算レジスタＲｅｇ１１はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ４ではステップ４の加算結果は第１加算レジスタＲｅｇ１１に書き込まれない。
【００９２】
時刻ｔ５に第１ステージのステップ５が開始される。時刻ｔ５から時刻ｔ６までの期間において、カウンタ４０のカウンタ値は０４ｈである。このカウンタ値に基づいて図５のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて第２加算レジスタＲｅｇ２１のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ５にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ４の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第１加算レジスタＲｅｇ１１にステップ４の加算結果（Ｒｅｇ１１（ｎ））が書き込まれる。第１加算レジスタＲｅｇ１１に加算結果（Ｒｅｇ１１（ｎ））が書き込まれた後、シーケンサ３０によって、第１加算レジスタＲｅｇ１１に入力されていたイネーブル信号はノンアクティブな信号に設定される。また、図５の入力セレクタＳＬ１は結果レジスタＯｒｅｇ１に記憶されているデータ（Ｏｒｅｇ１（ｎ））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ｂ２１が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ６以前ではステップ５の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００９３】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から０データレジスタＺｒｅｇに記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を図５の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図９の符号Ｅ３によると、第２加算レジスタＲｅｇ２１のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ５から時刻ｔ６の期間に立ち上がる。これにより、第２加算レジスタＲｅｇ２１はデータ書き換え可能な状態であるが、第２加算レジスタＲｅｇ２１はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ５ではステップ５の加算結果は第２加算レジスタＲｅｇ２１に書き込まれない。
【００９４】
時刻ｔ６に、第２ステージのステップ１が開始される。時刻ｔ６から時刻ｔ７までの期間において、カウンタ４０のカウンタ値は０５ｈである。このカウンタ値に基づいて図５のシーケンサ３０は、第１ステージのステップ５で第２加算レジスタＲｅｇ２１に出力していたアクティブなイネーブル信号を継続して出力する。時刻ｔ６にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ５の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第２加算レジスタＲｅｇ２１にステップ５の加算結果が書き込まれる。また、図５の入力セレクタＳＬ１は結果レジスタＯｒｅｇ１に記憶されているデータ（Ｏｒｅｇ１（ｎ））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ０２が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ６以前では第１ステージのステップ５の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００９５】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第２加算レジスタＲｅｇ２１に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を図５の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図９の符号Ｅ３によると、第２加算レジスタＲｅｇ２１のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ６でアクティブな状態である。これにより、第２加算レジスタＲｅｇ２１はデータ書き換え可能な状態であるが、第２加算レジスタＲｅｇ２１はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、第２ステージのステップ１では第２ステージのステップ１の加算結果は第２加算レジスタＲｅｇ２１に書き込まれない。
【００９６】
時刻ｔ７に第２ステージのステップ２が開始される。時刻ｔ７から時刻ｔ８までの期間において、カウンタ４０のカウンタ値は０６ｈである。このカウンタ値に基づいて図５のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて結果レジスタＯｒｅｇ２のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ７にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇは第１ステージのステップ１の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第２加算レジスタＲｅｇ２１に第２ステージのステップ１の加算結果（Ｒｅｇ２１（ｎ））が書き込まれる。第２加算レジスタＲｅｇ２１に加算結果（Ｒｅｇ２１（ｎ））が書き込まれた後、シーケンサ３０によって、第２加算レジスタＲｅｇ２１に入力されていたイネーブル信号はノンアクティブな信号に設定される。また、図５の入力セレクタＳＬ１は結果レジスタＯｒｅｇ１に記憶されているデータ（Ｏｒｅｇ１（ｎ））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ１２が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ７以前では第２ステージのステップ２の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【００９７】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第１加算レジスタＲｅｇ１２に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を図５の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図９の符号Ｅ４によると、結果レジスタＯｒｅｇ２のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ７から時刻ｔ８の期間に立ち上がる。これにより、結果レジスタＯｒｅｇ２はデータ書き換え可能な状態であるが、結果レジスタＯｒｅｇ２はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、第２ステージのステップ２では第２ステージのステップ２の加算結果が結果レジスタＯｒｅｇ２に書き込まれない。
【００９８】
上記のようなタイミングで、各ステップの演算結果が各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力される。図７及び図８に示されている各ステップの演算は、時刻ｔ７から時刻ｔ３０までは上記と同様なタイミングで行われる。また、図１０の時刻ｔ２８で、図５のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて最終出力レジスタＥｒｅｇのイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ２９のクロックＣＬＫの立ち上がりに同期して、最終出力レジスタＥｒｅｇは結果レジスタＯｒｅｇ６に記憶されているデータ（Ｏｒｅｇ６（ｎ））を記憶する。
【００９９】
次に図１０を用いて第１の終段演算及び第２の終段演算を説明する。
【０１００】
時刻ｔ３０では、第６ステージのステップ５が開始され、加算器２０から第２加算レジスタＲｅｇ２６に第６ステージのステップ５の加算結果が出力される。図５のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて第２加算レジスタＲｅｇ２６のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。
【０１０１】
時刻ｔ３１では第１の終段演算が開始される。図５のシーケンサ３０は、第６ステージのステップ５で第２加算レジスタＲｅｇ２６に出力していたアクティブなイネーブル信号を継続して出力する。時刻３１でクロックＣＬＫが立ち上がり、このクロックＣＬＫの立ち上がりに同期して、第２加算レジスタＲｅｇ２６に第６ステージのステップ５の加算結果が書き込まれる。さらに、加算器２０は、第６ステージのステップ５の乗算器１０の乗算結果と第２加算レジスタＲｅｇ２６に記憶されているデータとを加算し、その加算結果（Ｒｅｇ２６（ｎ））を第２加算レジスタＲｅｇ２６に出力する。
【０１０２】
時刻ｔ３２では、第２の終段演算が開始される。時刻ｔ３２にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、第２加算レジスタＲｅｇ２６に第１の終段演算での加算結果（Ｒｅｇ２６（ｎ））が書き込まれる。第２加算レジスタＲｅｇ２６に加算結果（Ｒｅｇ２６（ｎ））が書き込まれた後、シーケンサ３０によって、第２加算レジスタＲｅｇ２６に入力されていたイネーブル信号はノンアクティブな信号に設定される。
【０１０３】
時刻ｔ３３からは、（ｎ＋１）番目のサンプルに対する第１ステージのステップ１が開始される。
【０１０４】
上記のような過程（第１ステージから第６ステージ、第１の終段演算及び第２の終段演算）を１サイクルとして、積和演算回路１０００は、単位時間毎に入力されるサンプルの各々に対して１サイクルの演算を行う。これにより、積和演算回路１０００は、サンプルに対して６段接続２次ＩＩＲフィルタ演算が施された出力データを出力できる。
【０１０５】
３．第１実施形態の効果
図１１は、図２の２次ＩＩＲフィルタ演算を実現させる比較例の積和演算回路２０００のブロック図である。積和演算回路２０００は、図２の各乗算手段１１〜１５のそれぞれに対応する乗算器として乗算器１１１、乗算器１１２、乗算器１１３、乗算器１１４及び乗算器１１５が設けられている。また、図２の各加算手段２１〜２３のそれぞれに対応する加算器として、加算器２１１、加算器２１２、加算器２１３及び加算器２１４が設けられている。また、積和演算回路２０００は、レジスタＲ１００、レジスタＲ２００及びレジスタＲ３００を含む。
【０１０６】
乗算器や加算器などの演算回路は、レジスタ等の回路に比べると設計上チップ面積をより大きく占有する。また、高分解能を要求される積和演算回路の場合、演算回路に入力される入力データが多ビット化するので、その演算回路はさらに肥大化する。
【０１０７】
図１１の比較例では、５つの乗算器と４つの加算器を含む構成がとられている。高分解能の要求をクリアするためには、チップ面積を拡大させる必要がある。また、たとえばＩＩＲフィルタを多段接続させる場合は、前述の演算回路を多段接続させる必要があるため、さらなる回路規模の増大を引き起こす。これらは、多大なコストを消費させ、さらには小型電子機器への搭載も極めて困難にさせる課題である。
【０１０８】
ところが、第１実施形態の積和演算回路１００は、演算回路として、１つの乗算器１０と１つの加算器２０を含む。つまり、回路規模を大きくさせる要因である演算回路の絶対数が極めて少ないのである。これにより、極めて小さな回路規模でフィルタ回路などを設計できるので、小型電子機器への搭載が容易になり、汎用性にすぐれる。また、回路規模が大幅に小さくなるので、コスト削減も可能になり、他の回路への組み込みなど応用範囲が拡大される。
【０１０９】
比較例に比べ、積和演算回路１００は、１つのサンプルに対する演算回数が増大するが、大幅な回路規模縮小によって、寄生容量が減少するので、消費電力の増大を大幅に防ぐことができる。
【０１１０】
また、第１実施形態の積和演算回路１０００は、６段接続２次ＩＩＲフィルタ演算を行うことができる。積和演算回路１０００も、１つの乗算器１０と１つの加算器２０を含む。比較例を６段接続させた場合と比べると、積和演算回路１０００は、大幅な回路規模の縮小化が可能なことがわかる。一例として６段接続であるが、第１実施形態のＮを所望の値に設定し、積和演算回路を設計すれば様々な多段接続２次ＩＩＲフィルタ演算が可能な積和演算回路を得ることができる。
【０１１１】
また、第１実施形態のような演算手順をもちいると、フィルタを多段接続した場合でも、遅延時間の増加が小さい。第１実施形態を用いた装置を設計する場合、遅延時間の増加を考慮する必要が少なくなり、第１実施形態は、第１実施形態を適用した装置を設計しやすくする効果も有する。
【０１１２】
４．第２実施形態
第１実施形態の積和演算回路１０００の係数ＲＯＭ５０及びデコーダ３１を変更したものが第２実施形態の積和演算回路である。図示しないが第２実施形態の積和演算回路は、カウンタ値に基づいた制御が変更されるだけで、他の接続関係は第１実施形態の積和演算回路１０００と同じである。第２実施形態の積和演算回路は、第１実施形態と同様に、Ｎ段接続２次ＩＩＲフィルタ演算が可能な積和演算回路である。ここでは、一例としてＮ＝６の６段接続２次ＩＩＲフィルタ演算が可能な積和演算回路を説明する。
【０１１３】
第２実施形態の積和演算回路は、第１実施形態の積和演算回路１０００の演算手順とは逆方向に演算を行う。図１２は、第２実施形態の積和演算回路の演算手順を示すフローチャートである。各ステップ１〜６の内容は、図６と同様である。図６の変数ｍのインクリメントを第２実施形態の図１２では、変数ｍが６から１までデクリメントされる。
【０１１４】
５．第２実施形態の動作
第２実施形態の動作を説明する。図１３及び図１４は、第１実施形態の図７及び図８に対応する図である。６つのステージのうち、図１３には前半の３つのステージについて示され、図１４には後半の３つのステージについて示されている。図１３及び図１４の各符号の意味は図７及び図８の同符号のものと同じである。
【０１１５】
図１３によると、第１ステージのステップ３にて結果レジスタＯｒｅｇ６に記憶されているデータであるＯｒｅｇ６（ｎ）が決定される。第２ステージのステップ３では、Ｏｒｅｇ４（ｎ−１）に基づいて演算されたＯｒｅｇ５（ｎ）が決定される。第３ステージのステップ３では、Ｏｒｅｇ３（ｎ−１）に基づいて演算されたＯｒｅｇ４（ｎ）が決定される。
【０１１６】
図１４によると、第４ステージのステップ３では、Ｏｒｅｇ２（ｎ−１）に基づいて演算されたＯｒｅｇ３（ｎ）が決定される。第５ステージのステップ３では、Ｏｒｅｇ１（ｎ−１）に基づいて演算されたＯｒｅｇ２（ｎ）が決定される。第６ステージのステップ３では、Ｉｎｐｕｔ（ｎ）に基づいて演算されたＯｒｅｇ１（ｎ）が決定される。さらに第１の終段演算及び第２の終段演算では、Ｏｒｅｇ１（ｎ）に基づいて演算された演算結果としてＲｅｇ２１（ｎ）が第２加算レジスタＲｅｇ２１に記憶される。このＲｅｇ２１（ｎ）は、（ｎ＋１）番目のサンプルに対して積和演算を行うときの第２加算レジスタＲｅｇ２１のデータとして用いられる。
【０１１７】
表２に第２実施形態における、各ステージ、第１の終段演算及び第２の終段演算の１サイクルが終了した時点での各レジスタに記憶されているデータを記載する。
【０１１８】
【表２】
2005149009.tif 000004
【０１１９】
図１５及び図１６は、第２実施形態の積和演算回路の動作をしめすタイミングチャートである。図１５はカウンタ値００ｈから１０ｈまでの範囲でタイミングが示されている。図１６はカウンタ値１０ｈから１Ｆｈまでの範囲と次のサイクルのカウンタ値００ｈについてのタイミングが示されている。まず図１５のｔ１からｔ７までの期間を説明する。
【０１２０】
時刻ｔ１に第１ステージのステップ１が開始される。時刻ｔ１から時刻ｔ２までの期間において、カウンタ４０のカウンタ値は００ｈである。このとき第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ５に記憶されているデータ（Ｏｒｅｇ５（ｎ−１））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ０６が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇは、クロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、時刻ｔ２以前ではステップ１の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１２１】
時刻ｔ２に第１ステージのステップ２が開始される。時刻ｔ２から時刻ｔ３までの期間において、カウンタ４０のカウンタ値は０１ｈである。このカウンタ値に基づいて第２実施形態のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて結果レジスタＯｒｅｇ６のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ２にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ１の乗算結果を記憶する。また、第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ５に記憶されているデータ（Ｏｒｅｇ５（ｎ−１））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ１６が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ３以前ではステップ２の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１２２】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第１加算レジスタＲｅｇ１６に記憶されているデータ（Ｒｅｇ１６（ｎ−１））が選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を第２実施形態の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図１６の符号Ｅ５によると、結果レジスタＯｒｅｇ６のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ２から時刻ｔ３の期間に立ち上がる。これにより、結果レジスタＯｒｅｇ６はデータ書き換え可能な状態であるが、結果レジスタＯｒｅｇ６はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ２ではステップ２の加算結果が結果レジスタＯｒｅｇ６に書き込まれない。
【０１２３】
時刻ｔ３に第１ステージのステップ３が開始される。時刻ｔ３から時刻ｔ４までの期間において、カウンタ４０のカウンタ値は０２ｈである。このカウンタ値に基づいて第２実施形態のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて第１加算レジスタＲｅｇ１６及び最終出力レジスタＥｒｅｇのイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ３にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ２の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、結果レジスタＯｒｅｇ６にステップ２の加算結果（Ｏｒｅｇ６（ｎ））が書き込まれる。また、第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ６に記憶されているデータ（Ｏｒｅｇ６（ｎ））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ｂ１６が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ４以前ではステップ３の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１２４】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第２加算レジスタＲｅｇ２６に記憶されているデータ（Ｒｅｇ２６（ｎ−１））が選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を第２実施形態の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図１６の符号Ｅ６によると、第１加算レジスタＲｅｇ１６のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ３から時刻ｔ４の期間に立ち上がる。これにより、第１加算レジスタＲｅｇ１６はデータ書き換え可能な状態であるが、第１加算レジスタＲｅｇ１６はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ３ではステップ３の加算結果は第１加算レジスタＲｅｇ１６に書き込まれない。
【０１２５】
時刻ｔ４に第１ステージのステップ４が開始される。時刻ｔ４から時刻ｔ５までの期間において、カウンタ４０のカウンタ値は０３ｈである。このカウンタ値に基づいて第２実施形態のシーケンサ３０は、第１ステージのステップ３で第１加算レジスタＲｅｇ１６に出力していたアクティブなイネーブル信号を継続して出力する。時刻ｔ４にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ３の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第１加算レジスタＲｅｇ１６にステップ２の加算結果が書き込まれる。また、クロックＣＬＫの立ち上がりに同期して、最終出力レジスタＥｒｅｇは結果レジスタＯｒｅｇ６に記憶されているデータ（Ｏｒｅｇ６（ｎ））を記憶する。また、第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ６に記憶されているデータ（Ｏｒｅｇ６（ｎ）を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ２６が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ５以前ではステップ４の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１２６】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第１加算レジスタＲｅｇ１６に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を第２実施形態の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図１６の符号Ｅ６によると、第１加算レジスタＲｅｇ１６のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ４でアクティブな状態である。これにより、第１加算レジスタＲｅｇ１６はデータ書き換え可能な状態であるが、第１加算レジスタＲｅｇ１６はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ４ではステップ４の加算結果は第１加算レジスタＲｅｇ１６に書き込まれない。
【０１２７】
時刻ｔ５に第１ステージのステップ５が開始される。時刻ｔ５から時刻ｔ６までの期間において、カウンタ４０のカウンタ値は０４ｈである。このカウンタ値に基づいて第２実施形態のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて第２加算レジスタＲｅｇ２６のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ５にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ４の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第１加算レジスタＲｅｇ１６にステップ４の加算結果（Ｒｅｇ１６（ｎ））が書き込まれる。第１加算レジスタＲｅｇ１６に加算結果（Ｒｅｇ１６（ｎ））が書き込まれた後、シーケンサ３０によって、第１加算レジスタＲｅｇ１６に入力されていたイネーブル信号はノンアクティブな信号に設定される。また、第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ６に記憶されているデータ（Ｏｒｅｇ６（ｎ））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ｂ２６が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ６以前ではステップ５の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１２８】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から０データレジスタＺｒｅｇに記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を第２実施形態の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図１６の符号Ｅ７によると、第２加算レジスタＲｅｇ２６のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ５から時刻ｔ６の期間に立ち上がる。これにより、第２加算レジスタＲｅｇ２６はデータ書き換え可能な状態であるが、第２加算レジスタＲｅｇ２６はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、ステップ５ではステップ５の加算結果は第２加算レジスタＲｅｇ２６に書き込まれない。
【０１２９】
時刻ｔ６に、第２ステージのステップ１が開始される。時刻ｔ６から時刻ｔ７までの期間において、カウンタ４０のカウンタ値は０５ｈである。このカウンタ値に基づいて第２実施形態のシーケンサ３０は、第１ステージのステップ５で第２加算レジスタＲｅｇ２６に出力していたアクティブなイネーブル信号を継続して出力する。時刻ｔ６にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇはステップ５の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第２加算レジスタＲｅｇ２６にステップ５の加算結果が書き込まれる。また、第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ４に記憶されているデータ（Ｏｒｅｇ４（ｎ−１））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ０５が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ６以前では第１ステージのステップ５の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１３０】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第２加算レジスタＲｅｇ２６に記憶されているデータが選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を第２実施形態の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図１６の符号Ｅ７によると、第２加算レジスタＲｅｇ２６のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ６でアクティブな状態である。これにより、第２加算レジスタＲｅｇ２１はデータ書き換え可能な状態であるが、第２加算レジスタＲｅｇ２６はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、第２ステージのステップ１では第２ステージのステップ１の加算結果は第２加算レジスタＲｅｇ２６に書き込まれない。
【０１３１】
時刻ｔ７に第２ステージのステップ２が開始される。時刻ｔ７から時刻ｔ８までの期間において、カウンタ４０のカウンタ値は０６ｈである。このカウンタ値に基づいて第２実施形態のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて結果レジスタＯｒｅｇ５のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。時刻ｔ７にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、乗算結果レジスタＡｒｅｇは第１ステージのステップ１の乗算結果を記憶する。また、このクロックＣＬＫの立ち上がりに同期して、第２加算レジスタＲｅｇ２６に第２ステージのステップ１の加算結果（Ｒｅｇ２６（ｎ））が書き込まれる。第２加算レジスタＲｅｇ２６に加算結果（Ｒｅｇ２６（ｎ））が書き込まれた後、シーケンサ３０によって、第２加算レジスタＲｅｇ２６に入力されていたイネーブル信号はノンアクティブな信号に設定される。また、第２実施形態の入力セレクタＳＬ１は結果レジスタＯｒｅｇ４に記憶されているデータ（Ｏｒｅｇ４（ｎ−１））を乗算器１０の入力Ｘに選択出力する。乗算器１０の入力Ｙには係数ＲＯＭ５０から係数ａ５が入力される。乗算器１０は、入力Ｘ及び入力Ｙに対する乗算結果を乗算結果レジスタＡｒｅｇに出力する。ただし、乗算結果レジスタＡｒｅｇはステップ１と同様に、時刻ｔ７以前では第２ステージのステップ２の乗算結果は、乗算結果レジスタＡｒｅｇに書き込まれない。
【０１３２】
また、加算器２０の入力Ａには乗算結果レジスタＡｒｅｇの出力データが入力され、加算器２０の入力ＢにはレジスタセレクタＳＬ２から第１加算レジスタＲｅｇ１５に記憶されているデータ（Ｒｅｇ１５（ｎ−１））が選択出力される。加算器２０は入力Ａ及び入力Ｂに対する加算結果を第２実施形態の各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力する。図１６の符号Ｅ８によると、結果レジスタＯｒｅｇ５のイネーブル入力端子Ｅに入力されているイネーブル信号が時刻ｔ７から時刻ｔ８の期間に立ち上がる。これにより、結果レジスタＯｒｅｇ５はデータ書き換え可能な状態であるが、結果レジスタＯｒｅｇ５はクロックＣＬＫの立ち上がりに同期してデータ書き換えを行うので、第２ステージのステップ２では第２ステージのステップ２の加算結果が結果レジスタＯｒｅｇ５に書き込まれない。
【０１３３】
上記のようなタイミングで、各ステップの演算結果が各レジスタ（Ｒｅｇ１１〜Ｒｅｇ１６、Ｒｅｇ２１〜Ｒｅｇ２６、Ｏｒｅｇ１〜Ｏｒｅｇ６）に出力される。図１３及び図１４に示されている各ステップの演算は、時刻ｔ７から時刻ｔ３０までは上記と同様なタイミングで行われる。
【０１３４】
次に図１６を用いて第１の終段演算及び第２の終段演算を説明する。
【０１３５】
時刻ｔ３０では、第６ステージのステップ５が開始され、加算器２０から第２加算レジスタＲｅｇ２１に第６ステージのステップ５の加算結果が出力される。第２実施形態のシーケンサ３０は、デコーダ３１、加算レジスタコントローラ３２及び結果レジスタコントローラ３３を用いて第２加算レジスタＲｅｇ２１のイネーブル入力端子Ｅにアクティブなイネーブル信号を出力する。
【０１３６】
時刻ｔ３１では第１の終段演算が開始される。第２実施形態のシーケンサ３０は、第６ステージのステップ５で第２加算レジスタＲｅｇ２１に出力していたアクティブなイネーブル信号を継続して出力する。時刻３１でクロックＣＬＫが立ち上がり、このクロックＣＬＫの立ち上がりに同期して、第２加算レジスタＲｅｇ２１に第６ステージのステップ５の加算結果が書き込まれる。さらに、加算器２０は、第６ステージのステップ５の乗算器１０の乗算結果と第２加算レジスタＲｅｇ２１に記憶されているデータとを加算し、その加算結果（Ｒｅｇ２１（ｎ））を第２加算レジスタＲｅｇ２１に出力する。
【０１３７】
時刻ｔ３２では、第２の終段演算が開始される。時刻ｔ３２にクロックＣＬＫが立ち上がり、この立ち上がりに同期して、第２加算レジスタＲｅｇ２１に第１の終段演算での加算結果（Ｒｅｇ２１（ｎ））が書き込まれる。第２加算レジスタＲｅｇ２１に加算結果（Ｒｅｇ２１（ｎ））が書き込まれた後、シーケンサ３０によって、第２加算レジスタＲｅｇ２１に入力されていたイネーブル信号はノンアクティブな信号に設定される。
【０１３８】
時刻ｔ３３からは、（ｎ＋１）番目のサンプルに対する第１ステージのステップ１が開始される。
【０１３９】
上記のような過程（第１ステージから第６ステージ、第１の終段演算及び第２の終段演算）を１サイクルとして、第２実施形態の積和演算回路は、単位時間毎に入力されるサンプルの各々に対して１サイクルの演算を行う。これにより、第２実施形態の積和演算回路は、サンプルに対して６段接続２次ＩＩＲフィルタ演算が施された出力データを５ステップ分遅延させて出力できる。
【０１４０】
６．第２実施形態の効果
第２実施形態は、第１実施形態と同様な、回路規模が小さくなる効果を有している。第１実施形態との相違点は、第２実施形態ではフィルタを多段接続した分だけ遅延時間が増加する点である。
【０１４１】
図１７は図１１の比較例や、その他ＩＩＲフィルタを多段に接続したときの図である。図１７に示すように、フィルタを多段に接続する場合、レジスタをフィルタ間に介すので接続したフィルタの数に比例した長さの遅延時間が生じる。図１７に示すような多段接続ＩＩＲフィルタには遅延時間が発生するので、多段接続ＩＩＲフィルタを用いた装置を設計する際に遅延時間を考慮する。このように設計された装置に対して、該多段接続ＩＩＲフィルタの代わりに、たとえば第１実施形態の一例である積和演算回路１０００を適用させる場合、前述の遅延時間が発生しないので、該装置の設計を変更する必要がある。
【０１４２】
ところが、第１実施形態と同じ回路規模で構成できる第２実施形態を用いれば、前述のように遅延時間を考慮して設計された装置に対して、容易に回路規模の小さい積和演算回路を適用できる。
【０１４３】
次に第２実施形態の遅延時間の増加の理由を説明する。
【０１４４】
ｎ番目のサンプルに対する最終出力データを考える。ｎ番目のサンプルはＩｎｐｕｔ（ｎ）である。図１４によると、Ｉｎｐｕｔ（ｎ）は、第６ステージにて演算が施され結果レジスタＯｒｅｇ１にＯｒｅｇ１（ｎ）として記憶される。このＯｒｅｇ１（ｎ）が利用されるのは、次のサイクルの第５ステージである。その時、Ｏｒｅｇ１（ｎ）は、第５ステージで演算が施され結果レジスタＯｒｅｇ２にＯｒｅｇ２（ｎ＋１）として記憶される。このＯｒｅｇ２（ｎ＋１）が利用されるのは、さらに次のサイクルの第４ステージである。その時、Ｏｒｅｇ２（ｎ＋１）は、第４ステージで演算が施され結果レジスタＯｒｅｇ３にＯｒｅｇ３（ｎ＋２）として記憶される。このような動作が繰り返され、Ｉｎｐｕｔ（ｎ）に６段接続２次ＩＩＲフィルタ演算が施された出力データは、結果レジスタＯｒｅｇ６に記憶される。その時の結果レジスタＯｒｅｇ６に記憶されているデータは、Ｏｒｅｇ６（ｎ＋５）である。これは、（ｎ＋５）番目のサンプルをフィルタ演算しているときに、Ｉｎｐｕｔ（ｎ）に対応する出力データが出力されることを意味する。つまり、５サイクル分の遅延が生じるのである。
【０１４５】
例えば図１１の比較例２次ＩＩＲフィルタを６段接続した場合、フィルタ間にレジスタを介すので５つのレジスタで遅延が生じる。第２実施形態は、上記の理由から、フィルタ演算の回数に応じた遅延を発生できるので、回路規模の小さな積和演算回路を既存の設計情報を有効利用してＩＩＲフィルタを用いた装置に適用できる。
【０１４６】
７．アナログ／デジタル変換器及びデジタル／アナログ変換器
図１８は、第１実施形態または第２実施形態の積和演算回路を用いたアナログ／デジタル変換器３０００のブロック図である。ＡＤＣはＡＤコンバータを示し、ＤＦはデジタルフィルタを示す。デジタルフィルタＤＦは、第１実施形態または第２実施形態の積和演算回路を含む。第１実施形態または第２実施形態の積和演算回路は、回路規模が小さいため、容易にアナログ／デジタル変換器３０００に組み込むことができる。これにより、デジタルフィルタＤＦを有するアナログ／デジタル変換器３０００を提供できる。このアナログ／デジタル変換器３０００を小型電子機器やその他の電子デジタルデバイスに用いることは、小型電子機器やその他の電子デジタルデバイスを設計する際に、装置の小型化を実現させ、さらには、設計時間の短縮化をも可能にする。
【０１４７】
図１９は、第１実施形態または第２実施形態の積和演算回路を用いたデジタル／アナログ変換器４０００のブロック図である。ＤＡＣはＤＡコンバータを示し、ＤＦはデジタルフィルタを示す。デジタルフィルタＤＦは、第１実施形態または第２実施形態の積和演算回路を含む。第１実施形態または第２実施形態の積和演算回路は、回路規模が小さいため、容易にデジタル／アナログ変換器４０００に組み込むことができる。これにより、デジタルフィルタＤＦを有するデジタル／アナログ変換器４０００を提供できる。このデジタル／アナログ変換器４０００を小型電子機器やその他の電子デジタルデバイスに用いることは、小型電子機器やその他の電子デジタルデバイスを設計する際に、装置の小型化を実現させ、さらには、設計時間の短縮化をも可能にする。
【図面の簡単な説明】
【０１４８】
【図１】図１は第１実施形態及び第２実施形態の積和演算回路の構成図。
【図２】図２は２次ＩＩＲフィルタのブロック図。
【図３】図３は、第１実施形態の演算手順を示す図。
【図４】図４は、Ｎ＝１の場合のときの積和演算回路の演算ステップを示す図。
【図５】図５は、６段２次ＩＩＲフィルタ演算をする積和演算回路のブロック図。
【図６】図６は、第１実施形態の演算手順を示すフローチャート。
【図７】図７は、各カウンタ値での、乗算器、加算器、及び各レジスタに入力されるデータを示す図。
【図８】図８は、各カウンタ値での、乗算器、加算器、及び各レジスタに入力されるデータを示す他の図。
【図９】図９は、積和演算回路の動作を示すタイミングチャート。
【図１０】図１０は、積和演算回路の動作を示す他のタイミングチャート。
【図１１】図１１は、２次ＩＩＲフィルタ演算を行う比較例の積和演算回路のブロック図。
【図１２】図１２は、第２実施形態の積和演算回路の演算手順を示すフローチャート。
【図１３】図１３は、第２実施形態での各カウンタ値での、乗算器、加算器、及び各レジスタに入力されるデータを示す図。
【図１４】図１４は、第２実施形態での各カウンタ値での、乗算器、加算器、及び各レジスタに入力されるデータを示す他の図。
【図１５】図１５は、第２実施形態の積和演算回路の動作を示すタイミングチャート。
【図１６】図１６は、第２実施形態の積和演算回路の動作を示す他のタイミングチャート。
【図１７】図１７は比較例や、その他ＩＩＲフィルタを多段に接続したときの構成図。
【図１８】図１８は、第１実施形態または第２実施形態の積和演算回路を用いたアナログ／デジタル変換器のブロック図。
【図１９】図１９は、第１実施形態または第２実施形態の積和演算回路を用いたデジタル／アナログ変換器のブロック図。
【符号の説明】
【０１４９】
１０  乗算器、２０  加算器、３０  シーケンサ（制御回路）、３１  デコーダ、
３２  加算レジスタコントローラ、３３  結果レジスタコントローラ、４０  カウンタ、
５０  係数ＲＯＭ（係数記憶回路）、１００  積和演算回路、１０００  積和演算回路、３０００  アナログ／デジタル変換器、４０００  デジタル／アナログ変換器、
Ａｒｅｇ  乗算結果レジスタ（乗算結果記憶回路）、
Ｅｒｅｇ  最終出力レジスタ（最終出力遅延回路）
Ｏｒｅｇ  結果レジスタ（結果遅延回路）
Ｒｅｇ１  第１加算レジスタ（第１加算遅延回路）、
Ｒｅｇ２  第２加算レジスタ（第２加算遅延回路）、
ＳＬ１  入力セレクタ、
ＳＬ２  レジスタセレクタ（加算遅延回路用セレクタ）、
ＳＬ３  結果出力セレクタ、
Ｚｒｅｇ  ０データレジスタ（０データ記憶回路）
【図１】
2005149009.tif 000005
【図２】
2005149009.tif 000006
【図３】
2005149009.tif 000007
【図４】
2005149009.tif 000008
【図５】
2005149009.tif 000009
【図６】
2005149009.tif 000010
【図７】
2005149009.tif 000011
【図８】
2005149009.tif 000012
【図９】
2005149009.tif 000013
【図１０】
2005149009.tif 000014
【図１１】
2005149009.tif 000015
【図１２】
2005149009.tif 000016
【図１３】
2005149009.tif 000017
【図１４】
2005149009.tif 000018
【図１５】
2005149009.tif 000019
【図１６】
2005149009.tif 000020
【図１７】
2005149009.tif 000021
【図１８】
2005149009.tif 000022
【図１９】
2005149009.tif 000023