(57)【要約】  デジタルフィルタなどに用いられる積和演算を実行する積和演算装置において、第１のデータ記憶部（１）及び第２のデータ記憶部（２）において、第１のクロック（ＣＬＫ１）に同期してデータ（Ｄａ１）が書き込まれ、第１のクロックよりも高い周波数の第２のクロック（ＣＬＫ２）に同期して読み出される。演算処理部（５）が、第２のクロック（ＣＬＫ２）に同期して演算を実行する。第３の記憶部（３）では、第２のクロック（ＣＬＫ２）に同期して前記演算処理部（５）から出力されるデータが書き込まれ、第１のクロック（ＣＬＫ１）に同期して書き込まれたデータが読み出される。フィルタのタップ数が多くなった場合、フィルタのタップ数に比例して演算器の数が増加を抑制することができる。
2010113526.tif 000002
【特許請求の範囲】
【請求項１】
与えられたプログラムに従って積和演算を実行する積和演算装置であって、
第１のクロックを入力とし、前記第１のクロックを受けて、前記第１のクロックよりも高い周波数の第２のクロックを生成するクロック制御部と、
前記第１のクロックに同期して第１の入力データが書き込まれ、前記第２のクロックに同期して読み出される第１のデータ記憶部と、
前記第１のクロックに同期して第２の入力データが書き込まれ、前記第２のクロックに同期して読み出される第２のデータ記憶部と、
設定されたプログラムを前記第２のクロックに同期して出力する演算処理制御部と、
前記第１のデータ記憶部から読み出された前記第１の入力データと前記第２のデータ記憶部から読み出された前記第２の入力データを入力として前記第２のクロックに同期して演算を実行し、前記演算処理制御部から出力されるプログラムに従って演算内容を変える演算処理部と、
第２のクロックに同期して前記演算処理部から出力されるデータが書き込まれ、第１のクロックに同期して書き込まれたデータを出力する第３のデータ記憶部とを有すること
ことを特徴とする積和演算装置。
【請求項２】
前記演算処理制御部は、映像信号に含まれる水平同期信号に基づいて、前記第２のクロックに同期して前記プログラムを出力することを特徴とする請求項１に記載の積和演算装置。
【請求項３】
前記演算処理制御部は、
プログラムを保持するプログラムメモリと、
前記水平同期信号に基づいて、
前記プログラムメモリからプログラムを読み出すためのプログラムカウント値を生成するプログラムカウンタを備えたデコーダを有し、
前記デコーダは、前記水平同期信号が変化した際に前記プログラムカウンタをリセットすることを特徴とする請求項２に記載の積和演算装置。
【請求項４】
前記演算処理部は、前記演算処理制御部から出力される前記プログラムに従って演算内容を変える第１段乃至第Ｍ段（Ｍは２以上の整数）の演算ユニットを有し、前記第１段乃至第Ｍ段の演算ユニットは、それぞれ各段の演算ユニットにおける演算処理の結果として得られるデータが次段の演算ユニットに入力されるように接続され、前記演算処理部への入力データが第１段の演算ユニットに入力され、第Ｍ段の演算ユニットの演算処理の結果として得られるデータが前記演算処理部から出力されることを特徴とする請求項３に記載の積和演算装置。
【請求項５】
前記第１段の演算ユニットは、
セレクタと、
前記第１のデータ記憶部から読み出された前記第１の入力データを入力として、予め演算内容が定められた演算を実行する演算器と、
前記演算器から出力された演算結果を保持するレジスタとを有し、
前記セレクタは、前記演算処理制御部から出力される前記プログラムに基づいて、前記レジスタから出力されるデータと前記第２のデータ記憶部から読み出された前記第２の入力データのうちいずれかを選択して出力することを特徴とする請求項４に記載の積和演算装置。
【請求項６】
前記第２段以降の演算ユニットの各々は、
セレクタと、
前段の演算ユニットの出力を入力として、予め演算内容が定められた演算を実行する演算器と、
前記演算器から出力された演算結果を保持するレジスタとを有し、
前記セレクタは、前記演算処理制御部から出力される前記プログラムに基づいて、前記レジスタから出力されるデータと固定値のうちいずれかを選択して出力することを特徴とする請求項５に記載の積和演算装置。
【請求項７】
前記固定値が「０」であることを特徴とする請求項６に記載の積和演算装置。
【請求項８】
前記演算ユニットは、
セレクタと、
前記第１のデータ記憶部から読み出された前記第１の入力データを入力として、予め演算内容が定められた演算を実行する演算器と、
前記演算器から出力された演算結果を保持するレジスタとを有し、
前記セレクタは、前記演算処理制御部から出力される前記プログラムに基づいて、前記レジスタから出力されるデータと前記演算処理部の入力データのうちいずれかを選択して出力することを特徴とする請求項４に記載の積和演算装置。
【請求項９】
前記演算処理制御部は、
プログラムを格納するプログラムメモリと、
前記プログラムメモリから前記プログラムを読み出すためのプログラムカウント値を出力し、読み出された前記プログラムをデコードして出力するデコーダとを有する
ことを特徴とする請求項５乃至８のいずれかに記載の積和演算装置。
【請求項１０】
前記プログラムは、前記演算処理部が実行する積和演算のタップ数に対応するデータを含むことを特徴とする請求項９に記載の積和演算装置。
【請求項１１】
前記プログラムのステップ数が、前記演算処理部が実行する積和演算のタップ数と同数であり、又はタップ数の１／Ｎ（Ｎは２以上の整数）であることを特徴とする請求項１０に記載の積和演算装置。
【請求項１２】
前記プログラムのステップ数に従って、前記第２のクロックの周波数を変えるとともに、前記演算処理部が第１のクロックの１サイクルあたりに処理する演算量を変えることを特徴とする請求項１１に記載の積和演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理向けのデジタルフィルタなどに用いられる積和演算を実行する積和演算装置に関するものであり、特に積和演算回路の回路規模を小さくし、かつデジタルフィルタのタップ数をプログラムによって可変にすることを目的としたものである。
【背景技術】
【０００２】
画像信号処理や音声信号処理などに広く用いられているデジタルフィルタの多くは、演算対象となる信号とフィルタ係数との積和演算で実現される。実時間で動作するデジタルフィルタでは、フィルタのタップ数に応じて乗算器と加算器を並列に接続して演算を行う方法が一般的に用いられている。【０００３】
しかしながら、上記の一般的な手法では、フィルタのタップ数に応じて乗算器と加算器の数が増加し、回路規模が増大してしまうという問題点がある。また、フィルタのタップ数を可変にしたい場合、想定される最大タップ数の積和演算を実現可能なだけの乗算器と加算器を予め用意しておく必要があるため、冗長な回路を有していることになる。【０００４】
一方、プログラムによって演算内容を変える方式の一つとして、ＳＩＭＤ型の並列プロセッサがある。ＳＩＭＤ型プロセッサでは、例えば特許文献１に示されているように、一つの演算命令により複数のデータを並列処理することにより、処理すべきデータ量が多い場合であっても、実時間で動作可能な回路を構成することが可能である。【０００５】
しかしながら、上記従来の技術を用いて、実時間で多タップの積和演算を実現するためには、タップ数に応じたプロセッサエレメント数が必要であるため、回路規模が増大してしまう。逆に、少ないプロセッサエレメント数で多タップの積和演算を実行する場合、プログラムが複雑になり冗長な処理が多くなってしまう。【０００６】
また、特許文献２には、入力データのサンプリング周波数よりも十分高い周波数を有するクロックに同期して演算を実行する積和演算装置が開示されている。【０００７】
しかしながら、映像信号に対してフィルタリングを行う際に、映像信号の１走査線に含まれる画素数がフィルタタップ数で割り切れない場合は、走査線ごとにフィルタリングの位相がずれないように１走査線の走査が完了した時点でフィルタリング演算をリセットする必要がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−８４２２９号公報
【特許文献２】特開２００８−２１９５６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記特許文献１の方式においては、プログラムによってフィルタ演算を柔軟に行うことが可能であるが、フィルタのタップ数が多くなった場合、フィルタのタップ数に比例して演算器の数が増加し、回路規模が増大してしまう。また、フィルタのタップ数を可変にするためには、冗長な回路が必要になってしまう。【００１０】
また、上記特許文献２の方式においては、入力データのサンプリング周波数よりも十分高い周波数を有するクロックに同期して演算を実行するので、演算器の数を減少させることができるため、回路規模を小さくすることができるが、映像信号に対してフィルタリングを行う際に、走査線ごとにフィルタリング演算の位相がずれてしまう。
【課題を解決するための手段】
【００１１】
本発明の積和演算装置は、
与えられたプログラムに従って積和演算を実行する積和演算装置であって、
第１のクロックを入力とし、前記第１のクロックを受けて、前記第１のクロックよりも高い周波数の第２のクロックを生成するクロック制御部と、
前記第１のクロックに同期して第１の入力データが書き込まれ、前記第２のクロックに同期して読み出される第１のデータ記憶部と、
前記第１のクロックに同期して第２の入力データが書き込まれ、前記第２のクロックに同期して読み出される第２のデータ記憶部と、
設定されたプログラムを前記第２のクロックに同期して出力する演算処理制御部と、
前記第１のデータ記憶部から読み出された前記第１の入力データと前記第２のデータ記憶部から読み出された前記第２の入力データを入力として前記第２のクロックに同期して演算を実行し、前記演算処理制御部から出力されるプログラムに従って演算内容を変える演算処理部と、
第２のクロックに同期して前記演算処理部から出力されるデータが書き込まれ、第１のクロックに同期して書き込まれたデータを出力する第３のデータ記憶部とを有する
ことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、演算処理部の動作に用いられる第２のクロックの周波数が、前記第１のデータ記憶部への第１の入力データの書き込みと前記第２のデータ記憶部への第２の入力データの書き込みと、前記第３のデータ記憶部からのデータの読み出しに用いられる第１のクロックの周波数よりも高いので、演算処理部は、第１の入力データ、および第２の入力データの１サイクル期間に、一つの演算器あたり複数回の演算を実行することができる。このようにすることにより、積和演算の複数の演算を一つの演算器が担うことにより、積和演算処理に必要な演算器の個数を減らすことができるため、デジタルフィルタなどに用いられる積和演算回路を小さい回路規模で実現することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１に係る積和演算装置を示すブロック図である。
【図２】図１の積和演算装置の演算処理部５を構成する演算ユニット５−ｍの一般的な構成例を示すブロック図である。
【図３】実施の形態１に係る積和演算装置のより具体的な構成例を示すブロック図である。
【図４】第１のデータ記憶部１のデータ入出力のタイミングと、第１のクロックＣＬＫ１と第２のクロックＣＬＫ２の関係を説明するためのタイミング図である。
【図５】実施の形態１の演算処理制御部４の構成例を示すブロック図である。
【図６】第２のクロックＣＬＫ２の周波数が第１のクロックＣＬＫ１の周波数の４倍である場合の、第１の入力データＤａ１、およびプログラムカウント値ＤｆとプログラムＤｇの関係を示すタイミング図である。
【図７】デコードされたプログラムＤｅと、各部への入力データの関係を示すタイミング図である。
【図８】図３の演算処理部５の構成例を示すブロック図である。
【図９】図３の積和演算装置の動作の一例を説明するためのタイミング図である。
【図１０】本発明の実施の形態２に係る積和演算装置を示すブロック図である。
【図１１】本発明の実施の形態２に係る演算処理制御部を示すブロック図である。
【図１２】画像データの水平帰線期間におけるデコードされたプログラムＤｅと、各部への入力データの関係を示すタイミング図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１は、本発明の実施の形態１に係る積和演算装置の構成の一例を示す図である。実施の形態１に係る積和演算装置は、与えられたプログラムに従って、積和演算を実行するものであり、例えばデジタルフィルタに用いられる。
図示の積和演算装置は、第１のデータ記憶部１と、第２のデータ記憶部２と、第３のデータ記憶部３と、演算処理制御部４と、演算処理部５と、クロック制御部６を備える。
【００１５】
クロック制御部６は、第１のクロックＣＬＫ１を受けて、第２のクロックＣＬＫ２を生成する。第２のクロックＣＬＫ２の周波数は、第１のクロックＣＬＫ１の周波数よりも高く、例えば第１のクロックの周波数の整数倍である。
【００１６】
第１のデータ記憶部１は、第１のクロックＣＬＫ１に同期して第１の入力データＤａ１が書き込まれ、第２のクロックＣＬＫ２に同期してリードデータＤｂ１が読み出される。
第２のデータ記憶部２は、第１のクロックＣＬＫ１に同期して第２の入力データＤａ２が書き込まれ、第２のクロックＣＬＫ２に同期してリードデータＤｂ２が読み出される。
【００１７】
演算処理部５は、第１のデータ記憶部１から読み出された第１のリードデータＤｂ１と第２のデータ記憶部２から読み出された第２のリードデータＤｂ２を用いて、第２のクロックＣＬＫ２に同期して演算を行い、演算結果データＤｃを出力する。
【００１８】
図示の演算処理部５は、第１乃至第Ｍ段（Ｍは２以上の整数）の演算ユニット５−１、５−２・・・５−Ｍを備える。これら第１段乃至第Ｍ段の演算ユニット５−１乃至５−Ｍは互いに直列に、即ち各段の演算ユニットにおける演算処理の結果得られるデータが、次の段の演算ユニットに入力されるように接続されている。第Ｍ段の演算ユニットの出力データが演算処理部５の演算結果データＤｃとなる。
【００１９】
第３のデータ記憶部３は、第２のクロックＣＬＫ２に同期して演算処理部５から出力される演算結果データＤｃが書き込まれ、第１のクロックＣＬＫ１に同期して書き込まれたデータが読み出される。
【００２０】
演算処理制御部４は、
第１のデータ記憶部１及び第２のデータ記憶部２からのデータの読み出し動作と第３のデータ記憶部３へのデータの書き込み動作、および演算処理部５の演算内容とクロック制御部６の動作を決定するための演算制御信号Ｄｅを出力する。
演算制御信号Ｄｅのうち、第１のデータ記憶部１に供給されるものが符号Ｄｅ１で、第２のデータ記憶部２に供給されるものが符号Ｄｅ２で、第３のデータ記憶部３に供給されるものが符号Ｄｅ３で、演算処理部５に供給されるものが符号Ｄｅ５で、クロック制御部６に供給されるものが符号Ｄｅ６で、それぞれ示されている。
【００２１】
演算処理制御部４は、設定されたプログラムを第２のクロックＣＬＫ２に同期して出力する。
クロック制御部６は、演算制御信号Ｄｅ６に基づいて、第１のクロックから第２のクロック（ＣＬＫ２）を生成する。
【００２２】
演算処理部５は、演算制御信号Ｄｅ５（Ｄｅ２−１、Ｄｅ２−２）によって指定された演算を行う。即ち、演算処理部５は、演算処理制御部４から出力されるプログラムに従って演算内容を変える。演算処理部５に供給される演算制御信号Ｄｅ５のうち、第１段の演算ユニット５−１に供給されるものが符号Ｄｅ５−１で、第２段の演算ユニット５−２に供給されるものが符号Ｄｅ５−２で、第Ｍ段の演算ユニット５−Ｍに供給されるものが符号Ｄｅ５−Ｍで、それぞれ示されている。
第１のデータ記憶部１からのデータの読み出し、第２のデータ記憶部２からのデータの読み出し、及び第３のデータ記憶部３へのデータの書込みは、演算処理制御部４からの制御信号によって制御される。
【００２３】
次に、各部の動作について詳細に説明する。第１のデータ記憶部１、および第２のデータ記憶部２は、第１のクロックＣＬＫ１に同期して入力データが書き込まれ、第１のクロックＣＬＫ１の周波数の整数倍の周波数を持つ第２のクロックＣＬＫ２に同期して出力データが読み出される。つまり、入力データが書き込まれる１サイクル期間に、複数の出力データが読み出される。
【００２４】
図２は、図１の演算処理を構成する第１段乃至第М段の演算ユニット５−１乃至５−Мの各々として用いられる演算ユニットの一般的な形を示すものであり、第ｍ段の演算ユニット５−ｍとして示されている。
【００２５】
図示のように、第ｍ段の演算ユニット５−ｍは、セレクタ２１−ｍ、演算器２２−ｍ、およびレジスタ２３−ｍを備える。
第ｍ段の演算ユニット５−ｍには、第１の演算入力データＤｉ１−ｍとして、第（ｍ−１）段の演算ユニット、即ち前段の演算ユニット５−（ｍ−１）の出力データＤｏ−（ｍ−１）が入力され、第２の演算入力データＤｉ２−ｍとして、固定値例えばゼロを表すデータが入力される。ただし、ｍ＝１の場合、即ち第１段の演算ユニット５−１においては、第１の演算入力データＤｉ２−１として、第２のデータ記憶部２から読み出されたデータＤｂ２が入力される。
【００２６】
セレクタ２１−ｍは、デコードされたプログラムＤｅ５−ｍに基づいて、第２の演算入力データＤｉ２−ｍとレジスタ出力データＤｏ−ｍのいずれか一つを選択し、選択データＤｊ−ｍを出力する。
演算器２２−ｍは、第１の演算入力データＤｉ１−ｍと選択データＤｊ−ｍを用いて予め定められた所定の演算を実行し、演算器出力データＤｋ−ｍを出力する。レジスタ２３−ｍは、演算器出力データＤｋ−ｍを１クロックサイクル期間保持し、レジスタ出力データＤｏ−ｍを出力する。
【００２７】
以下では簡単のため、図３に示すように、演算処理部５が第１段の演算ユニット５−１と第２段の演算ユニット５−２で構成される場合、即ち図１においてＭ＝２である場合について特に詳しく説明する。
【００２８】
図４は、第１の入力データＤａ１と第１のリードデータＤｂ１、および第１のクロックＣＬＫ１と第２のクロックＣＬＫ２の関係を示すタイミング図の一例である。図４の例では、第２のクロックＣＬＫ２の周波数は、第１のクロックＣＬＫ１の周波数の４倍である。この場合、第１のデータ記憶部１に第１の入力データＤａ１を１回書き込む間に、第１のリードデータＤｂ１が４回読み出される。なお、読み出しに用いるアドレスは、演算処理制御部４から出力される、デコードされたプログラムＤｅ１に基づいて決定される。第２のデータ記憶部２のデータの読み書きに関しても同様である。
【００２９】
図５は、演算処理制御部４の内部構成の一例を示す図である。図示の演算処理制御部４は、デコーダ１１とプログラムメモリ１２を有する。
デコーダ１１は、プログラムカウンタ１１ａを有し、該プログラムカウンタ１１ａにより、プログラムメモリ１２からプログラムＤｇを読み出すためのプログラムカウント値Ｄｆを生成する。
プログラムメモリ１２は、デコーダ１１のプログラムカウンタ１１ａから出力されたプログラムカウント値Ｄｆに基づいてプログラムＤｇを出力する。
デコーダ１１は、プログラムＤｇの内容をデコードし、デコードされたプログラムＤｅを出力する。
【００３０】
演算処理制御部４は、第１のデータ記憶部１、第２のデータ記憶部２、第３のデータ記憶部３、演算処理部５及びクロック制御部６に対してデコードされたプログラムＤｅ（即ち、Ｄｅ１、Ｄｅ２、Ｄｅ３、Ｄｅ５、Ｄｅ６）を出力する。デコードされたプログラムＤｅは、
（１）第１のデータ記憶部１と第２のデータ記憶部２がデータ読み出しアドレスを生成するためのデータ（Ｄｅ１、Ｄｅ２）と、
（２）演算処理部５に含まれる各演算ユニットの演算内容を決定するためのデータ（Ｄｅ５）と、
（３）クロック制御部６が第１のクロックＣＬＫ１から第２のクロックＣＬＫ２を生成するためのデータ（Ｄｅ６）と、
（４）第３のデータ記憶部３に対して演算結果データＤｃを書き込むタイミングを示すデータ（Ｄｅ３）とを含む。
【００３１】
プログラムＤｅのステップ数は、（第２のクロックＣＬＫ２の周波数／第１のクロックＣＬＫ１の周波数）に（図４に示す例の場合には、「４」に）等しくなるように設定される。
演算処理制御部４は、第１の入力データＤａ１、および第２の入力データＤａ２の１サイクルごとにプログラムＤｅの全ステップの命令を繰り返し出力する。
【００３２】
図６は、第２のクロックＣＬＫ２の周波数が第１のクロックＣＬＫ１の周波数の４倍である場合の、第１の入力データＤａ１、およびプログラムカウント値ＤｆとプログラムＤｇの関係を示すタイミング図である。図６におけるＣ０、Ｃ１、Ｃ２、Ｃ３は、それぞれのステップの命令を示している。この場合、プログラムＤｅのステップ数は４であり、プログラムカウント値Ｄｆは、第１の入力データＤａ１の１サイクルごとに０から３までカウントアップされ、第１の入力データＤａ１が１サイクル入力される毎に、プログラムＤｇの全ステップの命令が繰り返し出力されている。
【００３３】
また、プログラムには、演算処理部５が実行する積和演算のタップ数に対応するデータが含まれる。そして、プログラムのステップ数に従って、第２のクロック（ＣＬＫ２）の周波数を変えるとともに、演算処理部５が第１のクロック（ＣＬＫ１）の１サイクルあたりに処理する演算量が変えられる。
【００３４】
プログラムＤｅのステップ数は、演算処理部５が実行する積和演算のタップ数と同数であるか、あるいは積和演算のタップ数の１／Ｎ（Ｎは２以上の整数）である。プログラムＤｅのステップ数が、演算処理部５が実行する積和演算のタップ数に等しい場合、プログラムの１ステップごとに積和演算の１タップごとの積算と累積のための加算が実行される。また、例えば、プログラムＤｅのステップ数が積和演算のタップ数の１／２である場合、プログラムの１ステップごとに積和演算の２タップごとの積算と累積加算が実行される。
【００３５】
デコーダ１１は、各部に出力するデコードされたプログラムＤｅのタイミング調節を行う。図７は、各部に出力するデコードされたプログラムＤｅと、各部への入力データの関係を示すタイミング図である。図７は、図３に示すように、演算処理部５が第１段の演算ユニット５−１及び第２段の演算ユニット５−２から成る場合の例であり、
Ｄｅ１、Ｄｅ２は、第１のデータ記憶部１と第２のデータ記憶部２に入力されるプログラム、
Ｄｅ５−１は、第１段の演算ユニット５−１に入力されるプログラム、
Ｄｅ５−２は、第２段の演算ユニット５−２に入力されるプログラム、
Ｄｅ３は、第３のデータ記憶部３に入力されるプログラムを示している。
また、Ｄｉ１−１は、第１段の演算ユニット５−１に入力される演算対象データ、
Ｄｉ１−２は、第２段の演算ユニット５−２に入力される演算対象データ、
Ｄｃは演算処理部５から出力される演算結果データを示している。
【００３６】
第１のデータ記憶部１から読み出されたデータＤｂ１は、演算対象データＤｉ１−１として第１段の演算ユニット５−１に入力される。第２のデータ記憶部２から読み出されたデータＤｂ２は、演算対象データＤｉ２−１として第１段の演算ユニット５−１に入力される。第１段の演算ユニット５−１は、演算対象データＤｉ１−１と演算対象データＤｉ２−１を用いて演算を実行し、演算の結果得られたデータＤｏ−１を出力する。データＤｏ−１は、演算対象データＤｉ１−２として第２段の演算ユニット５−２に供給される。第２段の演算ユニット５−２は、演算対象データＤｉ１−２と、固定データＤｉ２−２を用いて演算を実行し、演算結果データＤｏ−２を出力する。データＤｏ−２は、演算処理部５における演算の結果を表すデータＤｃとして第３のデータ記憶部３に供給される。
【００３７】
図７に示すように、上述した各処理において所定の遅延が発生するので、デコーダ１１は、上記所定の遅延に合わせて各部に出力するプログラムの遅延クロック数を変える必要がある。図７は、各処理における所定の遅延が全て１クロックの場合の図である。
【００３８】
図８は、第１段の演算ユニット５−１及び第２段の演算ユニット５−２の具体例を示す図である。第１段の演算ユニット５−１は、セレクタ２１−１、乗算器２２−２、およびレジスタ２３−１を備える。第２段の演算ユニット５−２は、セレクタ２１−２、加算器２２−２、およびレジスタ２３−１を備える。
【００３９】
第１段の演算ユニット５−１には、第１の演算入力データＤｉ１−１と第２の演算入力データＤｉ２−１が入力される。
第１段の演算ユニット５−１において、セレクタ２１−１は、デコードされたプログラムＤｅ５−１に基づいて、第２の演算入力データＤｉ２−１とレジスタ出力データＤｏ−１のいずれか一つを選択し、選択データＤｊ−１を出力する。乗算器２２−１は、第１の演算入力データＤｉ１−１（即ちＤｂ１）と選択データＤｊ−１を用いて予め定められた所定の演算として乗算を実行し、乗算器出力データＤｋ−１を出力する。レジスタ２３−１は、乗算器出力データＤｋ−１を１クロックサイクル期間保持し、レジスタ出力データＤｏ−１を出力する。
【００４０】
第２段の演算ユニット５−２において、セレクタ２１−２は、デコードされたプログラムＤｅ５−２に基づいて、第２の演算入力データＤｉ２−２（即ち固定データ、例えば値は０）とレジスタ出力データＤｏ−２のいずれか一つを選択し、選択データＤｊ−２を出力する。加算器２２−２は、第１の演算入力データＤｉ１−２（即ちＤｏ−１）と選択データＤｊ−１を用いて予め定められた所定の演算として加算を実行し、加算器出力データＤｋ−２を出力する。レジスタ２３−２は、加算器出力データＤｋ−２を１クロックサイクル期間保持し、レジスタ出力データＤｏ−２を出力する。
レジスタ出力データＤｏ−２は、演算処理部５の出力データＤｃとして第３のデータ記憶部３に供給される。
【００４１】
第３のデータ記憶部３は、第２のクロックＣＬＫ２に同期して、デコードされたプログラムＤｅ３によって指定されたタイミングで演算結果データＤｃが書き込まれる。データの読み出しは第１のクロックＣＬＫ１に同期して行われる。
【００４２】
以下、４タップの積和演算を行う場合の処理を例に挙げて動作を説明する。第１のデータ記憶部１、および第２のデータ記憶部２は、図４で示した例のとおり、それぞれ第１の入力データＤａ１と第２の入力データＤａ２が１つ書き込まれる期間に、それぞれ第１のリードデータＤｂ１と第２のリードデータＤｂ２を４つ読み出す。
【００４３】
以下、図８の演算処理部５において、第１段の演算ユニット５−１が乗算を行ない、第２段の演算ユニット５−２が加算を行なう場合について動作をさらに詳しく説明する。
第１段の演算ユニット５−１は、第１の演算入力データＤｉ１−１と第２の演算入力データＤｉ２−１を入力する。
セレクタ２１−１は、第２の演算入力データＤｉ２−１とレジスタ出力データＤｏ−１を入力し、第２の演算入力データＤｉ２−１を選択して出力する。演算器２２−１は第１の演算入力データＤｉ１−１と選択データＤｊ−１の乗算を実行する。演算器２２−１の乗算結果は演算器出力データＤｋ−１として出力され、レジスタ２３−１に保持される。レジスタに保持されたデータは、１クロック期間保持された後、レジスタ出力データＤｏ−１として出力される。このように、演算ユニット５−１は、第２のクロックＣＬＫ２の１クロックサイクル期間ごとに、積和演算の各項の積算を実行する。
【００４４】
第２段の演算ユニット５−２は、第１段の演算ユニット５−１の出力データＤｏ−１を第１の入力データＤｉ１−２として入力する。
セレクタ２１−２は、第１の入力データＤｉ１−２が積和演算の最初の項の積算結果を示すサイクルのみ固定値０を出力する。それ以外の場合は、レジスタ２３−２の出力データＤｏ−２を選択して出力する。
演算器２２−２は、第１の入力データＤｉ１−２と選択データＤｊ−２の加算を実行する。
演算器２２−２の加算結果は、演算器出力データＤｋ−２として出力され、レジスタ２３−２に保持される。
積和演算の全ての項の加算が終了した時点のレジスタ出力データＤｏ−２が、第３のデータ記憶部３に書き込まれる。このように、演算ユニット５−２は、各項の積算結果の累積加算を実行し、第２のクロックＣＬＫ２の４サイクルごとに累積加算値をリセットするとともに累積加算結果を第３のデータ記憶部に書き込むことで、積和演算の演算結果を出力する。
【００４５】
上述した演算ユニット５−１、および５−２の動作の中で、セレクタ２１−１、および２１−２の選択動作がデコードされたプログラムＤｅ５−１、Ｄｅ５−２によって決定される。
【００４６】
図９は、上述した４タップの積和演算を実行した場合のタイミング図である。Ａ０、Ａ１、Ａ２・・・は、第１の入力データＤａ１の値を、Ｂ０、Ｂ１、Ｂ２・・・は、第２の入力データＤａ２の値を示している。また、ｍ０、ｍ１・・・はそれぞれＡ１とＢ１、Ａ２とＢ２の積算結果である。また、ａ００、ａ０１、ａ０２、ａ０３は、各項の積算結果を累積加算した値を示しており、
ａ００＝ｍ０、
ａ０１＝ａ００＋ｍ１、
ａ０２＝ａ０１＋ｍ２、
ａ０３＝ａ０２＋ｍ３
である。つまり、ａ０３＝Ａ０×Ｂ０＋Ａ１×Ｂ１＋Ａ２×Ｂ２＋Ａ３×Ｂ３となり、４タップの積和演算の解となる。以下同様に、
ａ１０＝ｍ１、
ａ１１＝ａ１０＋ｍ２、
ａ１２＝ａ１１＋ｍ３、
ａ１３＝ａ１２＋ｍ４
であり、ａ１３が４タップの積和演算の解となる。
【００４７】
なお、上述の説明では、４タップの積和演算を行う場合の処理を例に挙げているが、本発明は４タップの積和演算に限定されず、プログラムの設定によって任意のタップ数の積和演算を実行することが可能である。
【００４８】
上述した積和演算の処理において、演算ユニット５−２における累積加算値のリセット、および累積加算値を出力するタイミングをプログラムによって制御するとともに、第１のクロックＣＬＫ１と第２のクロックＣＬＫ２の周波数の関係をプログラムによって制御することで、プログラムを変更するだけで、回路を変更することなく積和演算のタップ数を変更することが可能である。
【００４９】
例えば、クロック制御部６において、第２のクロックＣＬＫ２の周波数を第１のクロックＣＬＫ１の周波数の８倍にすると同時に、第２段の演算ユニット５−２において、第２のクロックＣＬＫ２の８サイクルごとに累積加算値をリセットするとともに累積加算結果を第３のデータ記憶部３に書き込むことで、８タップの積和演算を実行することができる。
【００５０】
また、入力データの動作クロックよりも速いクロックで積和演算を実行することによって、第１の入力データ、および第２の入力データの１サイクル期間に、一つの演算器あたり複数回の演算を実行することができる。そのため、積和演算処理に必要な演算器の個数を減らすことができるので、回路規模を大幅に削減することが可能である。
【００５１】
なお、上記の例では、演算処理部５が複数段の演算ユニット５−１乃至５−Ｍを有するが、演算処理部５が１段の演算ユニットのみから成る場合にも本発明は適用可能である。
【００５２】
実施の形態２．
図１０は、本発明の実施の形態２に係る積和演算装置の構成を示す図である。実施の形態２に係る積和演算装置は、与えられたプログラムに従って、積和演算を実行するものであり、特に、映像信号に対してフィルタリングを行う画像処理向けのデジタルフィルタに用いられる。
図示の積和演算装置は、第１のデータ記憶部１と、第２のデータ記憶部２と、第３のデータ記憶部３と、演算処理制御部４と、演算処理部５と、クロック制御部６を備える。本実施の形態においては、演算処理制御部４以外の動作については、実施の形態１の動作と同様であるので、説明は省略する。
【００５３】
実施の形態２による演算処理制御部４は、映像信号に含まれる水平同期信号Ｄｈに基づいて、第１のデータ記憶部１及び第２のデータ記憶部２からのデータの読み出し動作と第３のデータ記憶部３へのデータの書き込み動作、および演算処理部５の演算内容とクロック制御部６の動作を決定するためのプログラム乃至演算制御信号Ｄｅを出力する。演算制御信号Ｄｅのうち、第１のデータ記憶部１に供給されるものが符号Ｄｅ１で、第２のデータ記憶部２に供給されるものが符号Ｄｅ２で、第３のデータ記憶部３に供給されるものが符号Ｄｅ３で、演算処理部５に供給されるものが符号Ｄｅ５で、クロック制御部６に供給されるものが符号Ｄｅ６で、それぞれ示されている。
【００５４】
演算処理制御部４は、設定されたプログラムを第２のクロックＣＬＫ２に同期して出力する。
クロック制御部６は、演算制御信号Ｄｅ６に基づいて、第１のクロックから第２のクロック（ＣＬＫ２）を生成する。
【００５５】
図１１は、実施の形態２による演算処理制御部４の内部構成の一例を示す図である。図示の演算処理制御部４は、デコーダ１１とプログラムメモリ１２を有する。
デコーダ１１は、プログラムカウンタ１１ａを有し、該プログラムカウンタ１１ａにより、前記水平同期信号Ｄｈに基づいて、プログラムメモリ１２からプログラムＤｇを読み出すためのプログラムカウント値Ｄｆを生成する。
デコーダ１１はまた、水平同期信号Ｄｈに基づいて、プログラムカウンタ１１ａのリセット動作、即ちプログラムカウント値Ｄｆのリセット動作を行う。デコーダ１１は例えば、水平同期信号Ｄｈが変化した際に上記のリセットを行う。
プログラムメモリ１２は、デコーダ１１から出力されたプログラムカウント値Ｄｆに基づいてプログラムＤｇを出力する。
デコーダ１１は、プログラムＤｇの内容をデコードし、デコードされたプログラムＤｅを出力する。デコードされたプログラムの内容は実施の形態１と同様であるため説明を省略する。
【００５６】
図１２は、第１の入力データＤｉ１−１が画像データ、第２の入力データＤｉ１−２がフィルタ係数である場合の例を示しており、画像データの水平帰線期間におけるデコードされたプログラムＤｅと、各部への入力データの関係を示すタイミング図である。水平同期信号Ｄｈは、水平帰線期間中の一定期間‘０’（図１２で「低」レベル）になっている。図１２の例では、水平同期信号Ｄｈは負極性である。
【００５７】
図１２は、１走査線に含まれる画素数がプログラムＤｅのステップ数の倍数でない場合の例を示している。図１２の例では、プログラムＤｅのステップ数は図１２に示すように、デコーダ１１は、水平同期信号Ｄｈが‘０’に変化したタイミングでプログラムカウント値Ｄｆを０にリセットする。このように制御することで、１走査線の先頭では常にプログラムカウント値Ｄｆが０となるため、入力画像データと係数の位相関係が走査線ごとに異なるのを防ぐことができる。
以上のように、実施の形態２によれば、映像信号に含まれる水平同期信号に基づいて、プログラムカウント値を生成するため、映像信号に対してフィルタリングを行う処理に適用した場合、走査線ごとにフィルタリング演算の位相がずれることを防ぐことができる。
【符号の説明】
【００５８】
１  第１のデータ記憶部、  ２  第２のデータ記憶部、  ３  第３のデータ記憶部、  ４  演算処理制御部、  ５  演算処理部、  ５−１  第１段の演算ユニット、  ５−２  第２段の演算ユニット、  ５−Ｍ  第Ｍ段の演算ユニット、  ６  クロック制御部、  １１  デコーダ、  １２  プログラムメモリ、  ２１  セレクタ、  ２２  演算器、  ２３  レジスタ、  ２１−１  第１段の演算ユニットのセレクタ、  ２２−１  第１段の演算ユニットの演算器、  ２３−１  第１段の演算ユニットのレジスタ、  ２１−２  第２段の演算ユニットのセレクタ、  ２２−２  第２段の演算ユニットの演算器、  ２３−２  第２段の演算ユニットのレジスタ。
【図１】
2010113526.tif 000003
【図２】
2010113526.tif 000004
【図３】
2010113526.tif 000005
【図４】
2010113526.tif 000006
【図５】
2010113526.tif 000007
【図６】
2010113526.tif 000008
【図７】
2010113526.tif 000009
【図８】
2010113526.tif 000010
【図９】
2010113526.tif 000011
【図１０】
2010113526.tif 000012
【図１１】
2010113526.tif 000013
【図１２】
2010113526.tif 000014
【国際調査報告】
2010113526.tif 000015
2010113526.tif 000016
2010113526.tif 000017
2010113526.tif 000018