JP2005149517A - 積和演算器 - Google Patents

積和演算器 Download PDF

Info

Publication number
JP2005149517A
JP2005149517A JP2004353408A JP2004353408A JP2005149517A JP 2005149517 A JP2005149517 A JP 2005149517A JP 2004353408 A JP2004353408 A JP 2004353408A JP 2004353408 A JP2004353408 A JP 2004353408A JP 2005149517 A JP2005149517 A JP 2005149517A
Authority
JP
Japan
Prior art keywords
data
register
product
address
sum operation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004353408A
Other languages
English (en)
Inventor
Satoshi Matsui
聡 松井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004353408A priority Critical patent/JP2005149517A/ja
Publication of JP2005149517A publication Critical patent/JP2005149517A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 本発明は積和演算器に関し、演算データを複数個格納するレジスタのアドレスを自動生成、演算途中のデータの出力、オーバーフローの通知を可能とし、積和演算器の処理効率を向上し、再帰型のフィルタを容易に構成可能とすることを目的とする。
【解決手段】 係数レジスタ100 、データレジスタ110 、乗算器130 、加算器140 および外部装置との間でデータ転送を行なうデータバス120 を有する積和演算器において、データレジスタ110 のアドレスを外部から一々すべて指定することなく、外部からは最初に一度だけ該データレジスタ110 を示すアドレスを入力するだけでデータ格納アドレスを自動生成し、一連のデータを格納するデータ一括自動格納手段180 を有する。また、積和演算途中の中間結果データをデータレジスタ110 に自動的に格納し、再帰的な積和演算を行なう。
【選択図】図1

Description

本発明は、積和演算器に係り、さらに詳しくは、IIR(Infinite Impulse Response)フィルタ(再帰型フィルタ)あるいは、FIR(Finite Impulse Response)フィルタ(非再帰型フィルタ)として機能し、かつ、転送速度の速い、高速の積和演算器に関する。
近年、自動車、メカトロニクス等の分野で、データをディジタルフィルタを用いてフィルタリングする要求が高まっており、積和演算器やディジタル信号処理専用のLSI(Large Scale Integration Circuit) であるDSP(Digital Signal Processor) 等が活用されている。これらの分野では、演算項数の少ないフィルタ計算が主であり、処理速度の速いIIRフィルタがしばしば使用される。
図17は、FIRを使用した従来の積和演算器の説明図である。
この演算器は、RAM(Random Accress Memory)等で実現できる二つのレジスタ、すなわち、係数レジスタ800 とデータレジスタ810 と、該係数レジスタ800 の出力および該データレジスタ810 の出力を二つの入力として積を求める乗算器830 、該乗算器830 の出力を一方の入力とする加算器840 、該乗算器830 および加算器840 による積和演算途中の中間データを格納する中間データレジスタ850 、積和演算結果を格納する結果レジスタ860 、データレジスタ810 のアドレスを指定するアドレス・デコーダ870 で構成される。ここで、中間データレジスタ850 の出力が該加算器850 のもう一方の入力となり、これにより積和演算が可能となる。
まず、係数レジスタ800 とデータレジスタ810 に、それぞれ係数データと入力データを予めデータバス820 を介して転送しておく。例えば、4項の積和演算ならば、4つの入力データと4つの係数データをそれぞれデータ・レジスタ810 と係数レジスタ800 に入力しておく。そして、このデータと係数を一つずつ順次掛け合わせて加算することによりFIRフィルタ演算を実行する。このとき、データレジスタ810 の書き込みアドレスは図示していない外部のCPU等がアドレス指定することにより行なう。すなわち、図示されていない外部のCPU等からアドレスをアドレス・デコーダ870 に入力し、アドレスデコーダ870 がこのアドレスをデコードしてデーダレジスタ810 の実アドレスを求め、そのアドレスにデータバス820 を介して入力データを書き込み、書き込まれたデータを読みだして乗算器830 に入力し、積和演算を起動させる。
この演算器でIIRフィルタを実現するためには、結果レジスタ860 に格納された積和演算結果をデータバス820 を介してデータレジスタ810 に転送し、再び積和演算を起動する必要がある。すなわち、図示されていない外部のCPU等でアドレス指定を行ないアドレスデータ870 により実アドレスを求めてデータレジスタ810 の該アドレスに結果レジスタ860 の内容をデータバス820 を介して書き込み、さらに、データレジスタ810 の読み出しアドレスを指定し積和演算を再起動して次の積和演算を開始するのである。
しかしながら、従来の方法では、アドレス指定および積和演算の起動をすべて外部のCPU等が実行しなければならず、そのためのソフトウエアが必要なうえ、データ転送等の処理速度が遅いという問題があった。
また、CPUがデータレジスタの書き込みアドレスを指定するため、指定のためのアドレスを格納しておく記憶域がデータ毎に必要であった。
本発明は、FIRフィルタ処理が行え、かつ、IIRフィルタの実現に適し、転送速度の速い、高速の積和演算回路を提供することを目的とする。
本発明のブロック図を図1乃至図6に示す。本発明は、積和演算の係数を複数項分格納する係数レジスタ100 と、積和演算のデータを複数格納するデータレジスタ110 、データバス120 、係数レジスタ100 内の係数とデータレジスタ110 内のデータの積和演算を行なう乗算器130 と加算器140 、積和演算の中間データを格納する中間データレジスタ150 、積和演算結果を格納する結果レジスタ160 、アドレスバス170 を前提とする。ここで、データバス120 およびアドレスバス170 は図示されていないCPUに接続されており、データおよびアドレスの入出力に使用されることを前提とする。
係数レジスタ100 はデータバス120 と接続され、該係数レジスタ120 の出力は乗算器130 の一方の入力となり、データレジスタ110 の出力が乗算器130 のもう一方の入力となる。乗算器130 の出力は加算器140 の一方の入力となり、中間データレジスタ150 の出力がもう一方の入力となる。加算器140 の出力は中間データレジスタ150 および結果レジスタ160 の入力となり、該結果レジスタ160 はデータバス120 に接続されている。
図1は本発明の第1の構成のブロック図である。
データ一括自動格納手段180 を有する。データ一括自動格納手段180 は、図示されていない外部のCPUからのデータレジスタ110 のアドレスを最初に一度アドレスバス170 を介して受けることにより、データレジスタ110 の格納位置を自動的に順次指定する。これにより、初めの一回だけ外部のCPUからアドレスデータを入力しさえすれば、データバス120 を介して送られてくる入力データをデータレジスタ110 に順次書き込む処理、およびデータレジスタ110 からデータを順次読み出して積和演算を行なう処理が可能になる。
図2は本発明の第2の構成のブロック図である。
第2の構成は、第1の構成のデータ一括自動格納手段180 に代えてアドレス自動設定手段200 を有する。
アドレス自動設定手段200 は、図示されていない外部のCPUからのアドレスバス170 を介してデータレジスタ110 のアドレスを受け取り、その後は最初のアドレスと同一のダミー・アドレスをアドレスバス170 を介して受けることにより、データレジスタ110 の格納位置を自動的に指定し、入力データの書き込みおよび読み出しを行なう。
従来、図17に示したように、データレジスタ110 にデータを一つ格納するたびにその都度、外部のCPUで指定したアドレスをデコードして実アドレスを求めていた。しかし、この構成のデータ一括自動格納手段180 により、データレジスタ110 のアドレスをダミーアドレスとしてデータ入力の都度入力すれば自動的にデータレジスタ110 の格納位置を指定することが可能になる。これにより、CPU側でデータレジスタ110 の一つ一つの格納位置のアドレス・データを記憶させておく必要もなくなる。
図3は本発明の第3の構成のブロック図である。
第3の構成は、第1の構成のデータ一括自動格納手段180 に代えてアドレス設定手段300 を有する。
アドレス設定手段300 は、図示されていない外部のCPUから最初の一度だけアドレスデータをアドレスバス170 を介して入力し、また、データバス120 を介してデータ入力の都度ポインタ値を入力すれば、データレジスタ110 の格納位置を指定する。
これにより、従来、その都度アドレスデータをアドレスバス170 を介して入力していた手間が省ける。
図4は本発明の第4の構成のブロック図である。
第4の構成は、第3の構成に加えて、中間データ再帰手段400 を有する。
中間データ再帰手段400 は、乗算器130 および加算器140 による積和演算の中間結果をデータバス120 を介することなくデータレジスタ110 に戻す。
これにより、IIRのような再帰型のフィルタを構成する場合に、簡単に演算途中結果をデータレジスタ110 に格納し、再度積和演算を行なうことが可能になる。このとき、中間結果を格納するデータレジスタ110 のアドレスは第3の構成のアドレス設定手段300 により発生する。
第4の構成のアドレス設定手段300 は、第1の構成のデータ一括自動格納手段180 あるいは第2の構成のアドレス自動設定手段200 に置き換えることもできる。
図5は本発明の第5の構成のブロック図である。
第5の構成は、第4の構成に加えて、中間データ読み出し手段500 を有する。 中間データ読み出し手段500 は、乗算器130 および加算器140 による積和演算の中間結果をデータバス120 に出力する。これにより、図示されていないCPU等は、データバス120 を介して積和演算途中の中間データを読みだすことが可能になる。
第5の構成のアドレス設定手段300 は、第1の構成のデータ一括自動格納手段180 あるいは第2の構成のアドレス自動設定手段200 に置き換えることもできる。
図6は本発明の第6の構成のブロック図である。
第6の構成は、第5の構成に加えて、オーバフロー通知手段600 を有する。
オーバーフロー通知手段600 は、演算途中にオーバーフローが起きた場合に、該オーバーフローが発生したときに演算していた積和の項数番号を格納し、図示していない外部のCPUに通知する。
第6の構成のアドレス設定手段300 は、第1の構成のデータ一括自動格納手段180 あるいは第2の構成のアドレス自動設定手段200 に置き換えることもできる。
次に、図1乃至図6に示した第1乃至第6の構成のブロック図の作用を説明する。
まず、第1の構成(図1)の作用を説明する。
積和演算に先立ち、係数レジスタ100 およびデータレジスタ110 に係数および入力データを格納する。データレジスタ110 にデータを格納する場合、まず、データバス120 およびアドレスバス170 に接続され、図示されていないCPU等によりデータレジスタ110 のアドレスをアドレスバス170 によりデータ一括自動格納手段180 に入力する。また、データバス120 を介して格納データをデータ一括自動格納手段180 に入力する。
データ一括自動格納手段180 は、入力されたアドレスがデータレジスタ110 のアドレスであればデータレジスタ110 の先頭実アドレスを指定し、該先頭実アドレスに格納データを格納する。アドレスがデータレジスタ110 のアドレスでなければ無視する。
最初のアドレス入力によりデータレジスタ110 の先頭アドレスが指定され、その後はデータバス120 からデータが入力されるごとに順次データレジスタ110 の次のアドレスにデータを格納していく。
第1の構成は、図示していないCPUからのアドレス指定を1回すればよい。従来の方式よりもデータ転送、アドレス指定にかかる時間が短くでき、積和演算処理を簡単に、また高速に実行することが可能になる。
係数レジスタ100 には、図示されていないCPUから係数データをデータバスを介して入力する。係数データは入力データのように頻繁に書き換える訳ではないので、従来通り該CPUによってアドレスを指定し、データバスを介して係数データを書き込めばよいが、データレジスタ110 の場合と同様にデータ一括自動格納手段180 を係数レジスタ100 に接続して、データレジスタ110 と同様のアドレス指定を行ってもよい。
係数レジスタ100 およびデータレジスタ110 に係数および入力データが格納されたら、乗算器130 および加算器140 により積和演算を行なう。この場合、積和演算に最初に使用するデータが乗算器130 に入力される。係数レジスタ100 内の係数が乗算器130 のもう一方の入力となる。乗算器130 が積を算出し、これを加算器140 に入力する。最初加算器140 のもう一方の入力値は0に設定しておき和を求める。加算器140 の出力は中間データレジスタ150 に格納され、中間データレジスタ150 の出力は加算器140 の入力となる。これにより、中間結果に次の積が足しこまれていき、積和演算が実行される。積和演算の結果は結果レジスタ160 に格納され、図示されていないCPU等から読みだすことができる。
次に、第2の構成(図2)の作用を説明する。
第2の構成と第1の構成における相違点は、第2の構成のアドレス自動設定手段200 によるデータレジスタ110 のアドレス設定方法である。それ以外は第1の構成の作用と同様である。
第1の構成の場合は、データレジスタ110 にデータを最初に格納する際に1回だけアドレスバス170 を介してデータレジスタ110 のアドレスをデータ一括自動格納手段180 に入力した。これに対して第2の構成の場合は、データレジスタ110 にデータを入力するごとに、図示していないCPUからアドレスバス170 を介してデータレジスタ110 のアドレスをアドレス自動設定手段200 に入力する。この際、該アドレスはデータレジスタ110 の一つ一つの格納領域のアドレスである必要はなく、最初に入力したデータレジスタ110 のアドレスと同一でよい(データレジスタ110 のアドレスであれば同じアドレスでよいのでダミーアドレスと呼ぶ)。
アドレス自動設定手段200 は、入力されたアドレスがデータレジスタ110 のアドレスであれば最初は先頭の実アドレスを、それ以後は順次格納されるべき実アドレスを指定し、データバス120 から入力される入力データを順次格納していく。アドレスバス170 を介してアドレス自動設定手段200 に入力されたアドレスがデータレジスタ110 のアドレスでなければ、アドレス自動設定手段200 は無視する。
これによって、従来のように実際にデータレジスタ110 に格納するのに使用するアドレスを保持しておく必要はなく、メモリ領域が削減できる。また、最初の格納アドレス以外は従来のように一々入力されたアドレスをデコードする必要もなく、処理速度も速くなる。
次に、第3の構成(図3)の作用を説明する。
第3の構成と第1、第2の構成における相違点は、アドレス設定手段300 によるデータレジスタ110 のアドレス設定方法である。それ以外は第1および第2の構成の作用と同様である。
第3の構成では、図示していないCPUにより、データレジスタ110 に最初に、例えばデータを格納する先頭アドレスをアドレスバス170 を介して、また、データバス120 を介してデータレジスタ110 のポインタ値と入力データを対にして入力する。すなわち、最初のデータの場合はポインタ値0と入力データを、次にポインタ値1と入力データを、というように順次入力する。
アドレス設定手段300 は、該先頭アドレスからデータレジスタ110 に格納する先頭実アドレスを指定し、ポインタ値によって当該入力データの格納アドレスを指定し、格納する。
第3の構成は、第1および第2の構成のようにデータレジスタ110 のポインタは自動生成できない。しかしながら、アドレスの指定を最初のデータ転送のときのみ行えばよいので、従来の方式よりもアドレス転送処理が少なく、処理速度が向上する。よって、第3の構成は、第1および第2の構成よりもハードウエア・コストを抑えた普及版向けの構成と言える。
次に、第4の構成(図4)の作用を説明する。
第4の構成は、第3の構成に中間データ再帰手段400 を加えた構成であり、データレジスタ110 のアドレス指定は第3の構成の作用と同様で、前述の作用によりデータレジスタ110 および係数レジスタ100 にそれぞれデータおよび係数が格納され、積和演算が起動される。
乗算器130 により係数レジスタ100 およびデータレジスタ110 のそれぞれ先頭の係数とデータの積が算出され、加算器140 に入力される。最初、加算器140 ののもう一方の入力値は0に設定され、和が算出され、
出力される。該和は中間データレジスタ150 に格納される。最初の積和が算出され、中間データレジスタ150 に格納されると、次の係数とデータの積和が読みだされて乗算器130 により積が算出される。該積は加算器140 の入力となり、中間データレジスタ150 に先に格納された該和をもう一方の入力として和を求め、再び中間データレジスタ150 に格納される。この処理が繰り返されることにより、積和が求まる。
第4の構成では、中間データ再帰手段400 が該加算器140 の出力である積和の中間データを、図示していないCPUからの指示によりデータレジスタ110 に戻す処理を行なう。該中間データは図示していないCPUから指定されたデータレジスタ110 のアドレスに格納される。これにより、積和の中間データを使用して再帰的な積和演算が可能となる。この第4の構成はIIRフィルタの構成に適している。
第5の構成(図5)は、第4の構成にさらに中間データ読み出し手段500 を加えた構成である。よって、第5の構成の作用は、前述の第4の構成の作用に加えて、加算器140 の出力である積和の中間データを、図示していないCPUからの指示によりデータバス120 に出力し、該CPUに該中間データを転送する。
これにより、任意の時点で、図示していないCPUの指示により、積和の中間データを読みだすことが可能になる。
最後に、第6の構成(図6)は、第5の構成にさらに加えてオーバーフロー通知手段600 を有するものである。よって、データレジスタ110 へのデータ書き込みや積和演算処理は第5の構成と同様に行われる。
積和演算では乗算器130 および加算器140 で演算できるビット数に限りがあり、積和によりそのビット数をオーバーフローしてしまうことがある。従来はオーバフローを起こしてもそのまま処理が継続するだけであったが、第6の構成のオーバフロー通知手段600 は、乗算器130 および加算器140 により積和が算出され中間データが求まるごとにオーバーフローが起きていないか否かを判断し、オーバーフローが起きた場合には、オーバーフローを起こした中間データが何項目までの積和であるかを示すために、オーバーフローを起こした項数をデータバス120 に出力する。
図示されていないCPUはこの項数を読みだすことにより、オーバーフローが起きないように係数等を修正するデバグ処理を容易に行なうことが可能になる。
本発明によれば、第1および第2の構成では、積和演算データを格納するデータレジスタの格納アドレスを外部から指定することなく、積和演算回路内でアドレス生成できるようになり、従来のように、アドレスデータを外部のメモリ領域等に格納しておいて積和演算回路に転送する必要がなくなり、転送時間、アドレス生成時間が短縮され、処理速度が向上する。また、第3の構成では、演算データを任意のタイミングでデータレジスタに格納することが可能になる。さらに、第4の構成では、積和演算の途中データをデータレジスタ110 に戻すことにより再帰的な積和演算がデータバスを介することなく実現でき、データ転送処理時間を短縮できる。また、第5の構成では、積和演算の途中データをデータバスに出力することにより、外部での途中データの処理が容易に行えるようになる。また、第6の構成では、積和演算中のオーバーフローを通知可能となり、係数の再設定等のデバグ効率が向上する。
以上のように、本発明により、FIRフィルタだけでなくIIRフィルタに適し、アドレス生成やデータ転送を高速に行える積和演算回路が実現できる。
図7は、本発明の一実施例のシステム構成図である。前述した本発明の第1乃至第6のいずれも、このシステム構成で実現できる。
まず、CPU700 が存在する。このCPU700 は第1乃至第6の構成の説明において図示していないCPUと記述していたものにあたる。CPU700 はアドレスバス710 およびデータバス720 を有している。また、アドレスバス710 およびデータバス720 にはメモリ730 と積和演算回路740 が接続されている。
メモリ730 にはCPU700 の制御ソフトウエアや、積和演算回路740 が使用する入力データや係数、アドレスデータ、ポインタ値等が格納されている。
一方、積和演算回路740 は、第1乃至第6の構成を実現した積和演算回路が入る。
尚、本発明は図7の構成に必ずしも限定されるものではなく、例えば、CPUの代わりにシーケンサを備えたDSPにも同様に適用できる。
以下、第1乃至第6の構成について、それぞれの実施例を説明する。
どの構成の実施例も、複数項分の係数データを格納する係数レジスタ100 、複数項分の入力データを格納するデータレジスタ110 、積和演算処理を行なうための乗算器130 と加算器140 、積和演算途中の中間データを格納する中間データレジスタ150 、積和演算結果を格納する結果レジスタ160 を前提とする。
係数レジスタ100 およびデータレジスタ110 の出力はそれぞれ乗算器130 の2つの入力となり、係数レジスタ100 はデータバス120 にも接続され、図7に図示され、図8には図示されていないCPU700 によってデータバス120 を介して係数データの書き込み/読み出しを行える。乗算器130 の出力は加算器140 の入力となり、加算器140 のもう一つの入力には中間データレジスタ150 の出力が接続されている。加算器140 の出力は中間データレジスタ150 および結果レジスタ160 の入力となる。結果レジスタ160 はデータバス120 に接続され、該CPU700 によって積和演算結果を結果レジスタ160 から読み出す等の処理が可能である。 図8は第1の構成の積和演算回路についての一実施例の構成図である。
図1で説明した第1の構成のデータ一括自動格納手段180 は、デコーダ800 と、カウンタ810 、セレクタ820 で構成される。デコーダ800 はアドレスバス170 とカウンタ810 に接続され、カウンタ810 はデコーダ800 とセレクタ820 に接続される。セレクタ820 はカウンタ及びデータバス120 、データレジスタ110 に接続される。
該CPU700 の指示によりアドレスデータがアドレスバス170 を介してデコーダ800 に入力される。デコーダ800 は入力されたアドレスデータをデコードする。すなわち、入力されたアドレスがデータレジスタ110 のアドレスか否かを判定し、データレジスタ110 のアドレスでなければ無視する。一方、データレジスタ110 のアドレスであればカウンタ810 にクリア信号を入力する。
カウンタ810 は、データレジスタ110 の格納位置に対応する項数番号をカウントする。例えば同図の場合、データレジスタ110 には4項分の入力データが格納できるので、カウンタ810 は0〜3をカウントする。8項の積和演算であれば0〜7、32項の積和演算であれば0〜31をカウントするのは言うまでもない。カウンタ810 はサイクリックなカウンタ回路で実現できる。
カウンタ810 はデコーダ800 からのクリア信号を受けてカウントを0にクリアする。すなわち、外部のCPU700 によってデータレジスタ110 のアドレスがアドレスバス170 を介してデコーダ800 に入力されると、カウンタ810 が0にクリアされる。
カウンタ810 の出力はセレクタ820 に入力され、選択信号となる。すなわち、カウンタ出力が0ならばデータレジスタ110 の先頭アドレスに、カウンタ出力が1ならばデータレジスタ110 の2番目の格納場所にデータバス120 を介してセレクタ820 に入力された入力データを格納する。カウンタ810 はデータレジスタ110 へのデータ格納が完了するとインクリメントする。
この構成では、CPU700 は、最初のデータ格納時にのみアドレスデータと入力データの対を積和演算回路740 に転送し、それ以降はデータのみをデータバス120 を介して積和演算回路740 に転送すればよい。また、本構成のデコーダ800 は、入力されるアドレスがデータレジスタ110 のアドレスか否かを判定し、データレジスタ110 のアドレスであればクリア信号をカウンタ810 に出力する簡単な構成のデコーダである。
以上のように、この構成は、データレジスタ110 のアドレスを最初に一回指定すれば、その後はデータを順次自動的にデータレジスタ110 に格納することが可能であり、複数のデータを一括して自動的にデータレジスタ110 に格納できる。 また、積和演算のためのデータの読み出しにも適する構成である。
すなわち、積和演算の起動時に1回データレジスタ110 のアドレスを指定して読み出し乗算器130 や加算器140 等を起動するようにすれば、データレジスタ110 の値を自動的に順次読み出して乗算器130 に出力することが可能である。このときは、カウンタ810 を積和演算1回が完了するごとにインクリメントすればよい。
同図では、係数レジスタ100 の書き込み/読み出しはCPU700 が行ない自動化されていないが、データレジスタ110 と同様の回路を付加して、係数の一括自動書き込み/読み出しを行わせてもよい。
図9は、第2の構成(図2)の実施例のシステム構成図である。
第2の構成のアドレス自動設定手段200 は、第1の構成(図8)と同様に、デコーダ900 とカウンタ910 、セレクタ920 で構成する。デコーダ900 はアドレスバス170 とカウンタ910 に、カウンタ910 はデコーダ900 とセレクタ920 に、セレクタ920 はデータバス120 とカウンタ910 、データレジスタ110 に接続される。この接続も第1の構成と同じである。
第1の構成(図8)との違いは、CPU700 が常にアドレスと入力データを対にして入力する点である。アドレスはアドレスバス170 を介してデコーダ900 に、入力データはデータバス120 を介してセレクタ920 に入力される。但し、該アドレスからデータレジスタ110 の実アドレスを求めるわけではないので、該アドレスはデータレジスタ110 を示すアドレスであれば何でもよい。
デコーダ900 はアドレスバス170 から入力される該アドレスをデコードし、該アドレスがデータレジスタ110 を示すアドレスか否かを判断する。該アドレスがデータレジスタ110 を示すアドレスであればカウンタ910 をインクリメントする信号をカウンタ910 に出力する。一方、該アドレスが他のレジスタ等を示す異なるアドレスであれば、該アドレスとデータの対は無視する。
カウンタ910 は、デコーダ900 からのインクリメント信号を受けてインクリメントし、カウンタ値をセレクタ920 に出力する。カウンタ910 の値は、最初のアドレス/データ入力の時点で0にクリアすればよい。
セレクタ920 はカウンタ910 からの入力(カウンタ値)を選択信号とし、データレジスタ110 の対応する格納位置に、データバス120 から入力されたデータを格納する。
以上のように、第2の構成によれば、データレジスタ110 のアドレスが指定されたデータだけをデータレジスタ110 に順次格納することができる。従来の方式では、アドレスバス170 から入力されるアドレスをデコードして一々データレジスタ110 の実アドレスを求めていたが、本構成の場合は、カウンタ910 をインクリメントしてデータレジスタ110 の格納位置を求めるので、デコーダ900 はデータレジスタ110 を示すアドレスか否かを判定する機能だけを持っていればよい。 図10は、第3の構成(図3)の実施例のシステム構成図である。
第3の構成のアドレス設定手段300 は、ポインタレジスタ1000、加算器1010、データ1020、セレクタ1030からなる。ポインタレジスタ1000はデータバス120 と加算器1010の一方の入力と接続され、加算器1010のもう一方の入力はアドレスバス170 と接続される。加算器1010の出力がデコーダ1020に接続され、デコーダ1020の出力はセレクタ1030に接続される。セレクタ1030はデータバス120 およびデコーダ1020、データレジスタ110 と接続される。
第3の構成は、第1および第2の構成のようにデータレジスタ110 の格納位置の選択信号(ポインタ)を内部で自動的に生成するわけではない。すなわち、CPU700 が、データレジスタ110 のアドレスと、データレジスタ110 中での格納位置を示すポインタ値をデータレジスタ110 にデータを格納するごとに指定する。アドレスとしては例えば先頭アドレスを指定すればよい。あるいはまた、データアドレス110 に対応するダミーアドレスを指定してもよい。
該アドレスはアドレスバス170 を介して加算器1010に、ポインタ値はデータバス120 を介してポインタレジスタ1000に格納される。ポインタ値は0〜(データレジスタ110 の格納個数−1)の値をとり、その値はCPU700 が制御する。
該アドレスおよびポインタレジスタ1000の出力であるポインタ値が加算器1010に入力され、加算される。加算器1010の出力はデコーダ1020に入力され、アドレスのデコードを行なう。デコーダ1020の出力はセレクタ1030に入力され、セレクタ1030の選択信号となる。デコーダ1020からの選択信号により、データレジスタ110 中での格納位置が決まり、データバス120 を介してセレクタ1030に入力された入力データを該格納位置に格納する。
以上のように、本構成は、CPU700 がデータレジスタ110 の先頭アドレスとポインタ値を指定する必要があり、第1、第2の構成に比べればCPU700 への依存度は大きい。しかし、CPU700 は従来方式のようにデータレジスタ110 の個々の格納位置のアドレスを持つ必要はなく、先頭アドレスとポインタ値だけをメモリ領域に格納しておき、積和演算回路に対して指定してやればよい。また、第1、第2の構成と異なり、CPU700 がデータレジスタ110 内の格納位置を先頭アドレスとポインタ値を使用して指定することが可能である。
第3の構成は、加算器1010がなしでも実現できる。すなわち、アドレスバス170 から入力されるアドレスをデコーダ1020でデコードしたうえセレクタ1030に入力するとともに、データバス120 を介してポインタレジスタ1000に格納されたポインタ値もセレクタ1030に入力する。そして、セレクタ1030がデコード済みのアドレス、例えばデータレジスタ110 の先頭アドレスと、ポインタ値の両方を選択信号としてデータレジスタ110 の格納位置を指定する。
図11は、第4の構成(図4)の実施例のシステム構成図である。
第4の構成は、第3の構成に中間データ再帰手段400 を加えたものであり、中間データ再帰手段400 以外は第3の構成と同様である。
中間データ再帰手段400 は積和演算の加算器140 の出力をデータレジスタ110 に戻すデータ線1100で実現する。データレジスタ110 への格納アドレスはCPU700 で直接指定してもよいし、第3の構成の実施例(図10)で説明したアドレス指定方法で指定してもよい。
このように、加算器140 の出力をデータレジスタ110 に戻すことにより、積和演算の途中データを使用して再び積和演算を行なう再帰型の処理が可能となり、IIRフィルタを実現できる。
図12は、第5の構成(図5)の実施例のシステム構成図である。
第5の構成は、第4の構成に中間データ読み出し手段500 を加えた構成であり、中間データ読み出し手段500 以外は第4の構成と同様である。
中間データ読み出し手段500 は、中間データレジスタ150 の出力をデータバス120 に接続するデータ線1200で実現できる。CPU700 の命令により中間データレジスタ150 に格納されている積和演算の途中データをデータバスを介して読み出す。
読み出したデータはCPU700 で処理することもできるし、再びデータレジスタ110 に格納することも可能である。データレジスタ110 に格納する場合、ポインタレジスタ1000、加算器1010、デコーダ1020、セレクタ1030を使用した第3の構成のアドレス指定方法でデータレジスタ110 のアドレスを指定し格納することができる。また、第1の構成のアドレス指定方法である、カウンタを自動的にインクリメントしてデータレジスタ110 のアドレスを指定する方法により、中間データを次々にデータレジスタ110 に格納し、再び積和演算を行なうこともできる。
図13は、第6の構成(図6)の実施例のシステム構成図である。
第6の構成は、第5の構成にオーバーフロー通知手段600 を加えた構成であり、オーバーフロー通知手段600 以外は第5の構成と同様である。
オーバーフロー通知手段600 は、中間データレジスタ150 の出力を入力とするオーバーフロー項数レジスタ1300で実現する。オーバーフロー項数レジスタ1300の出力はデータバス120 に接続される。
オーバーフロー項数レジスタ1300には、積和演算途中でオーバーフローが生じた場合に、オーバーフローが生じた積和演算の項数が格納される。オーバーフロー項数レジスタ1300に格納された項数や中間データレジスタ150 のオーバーフローした中間データをデータ線1200を使用して読みだすことにより、オーバーフローしないように係数データを作り変える等のデバグ処理が容易に行えるようになる。
図14は、第6の構成(図6、図13)の実施例のより詳しいシステム構成図である。
同図では、例えば、4項の積和演算を想定し、係数レジスタ100 には4項分の係数データ(A0 、A1 、A2 、A3 )が、データレジスタ110 には4項分の入力データ(X0 、X1 、X2 、X3 )が格納できるようになっている。この項数は、2以上ならいくらでも良い。
本実施例では、図13のシステム構成に加えて、中間データレジスタ150 の出力を入力としオーバーフローしたデータを格納し、その出力がデータバス120 に接続されたオーバーフローデータレジスタ1400と、データバス120 に接続されCPU700 が転送するポインタ値を格納する二つのレジスタ、ポインタレジスタ2 1410とポインタレジスタ3 1420と、データレジスタ110 のデータ出力を入力データとし、ポインタレジスタ3 1420のポインタ値を選択信号とするセレクタ1430で実現する。ポインタレジスタ2 1410のポインタ値はもう一方のセレクタ1030の選択信号となる。
今、係数レジスタ100 には係数データ(A0 、A1 、A2 、A3 )が、データレジスタ110 には入力データ(X0 、X1 、X2 、X3 )が格納されたものとし、積和演算の手順を順を追って説明する。
この積和演算器では、乗算器130 で係数データ×入力データの演算を各項のデータについて行ない、加算器140 で積の値を順次加算していく。すなわち、A0 ×X0 +A1 ×X1 +A2 ×X2 +A3 ×X3 を演算することになる。
係数データおよび入力データが8ビットならば、加算器140 の出力線は8+8+2(4項分を足すことにより生じる)=18ビットの幅があれば積和演算でオーバーフローを起こすことはない。しかし、演算結果も8ビットとすると、オーバーフローが起こることが考えられ、オーバーフローへの対策が積和演算回路に必要となる。
本実施例で、例えば、Q6固定小数点データで演算を行なうとする。すなわち、符号1ビットに整数部1ビット、小数部6ビットのデータ形式である。
そして、今、A0 =A1 =A2 =A3 =1(10進数)=40H(Q6固定小数点表現を16進数で表記。2進数で表現すると0100 0000)、X0 =X1 =X2 =X3 =40Hとする。すると、最初の積演算A0 ×X0 =1000H(2進数で表現すると0001 0000 0000 0000)となる。これは8ビットのQ6固定小数点で表すと40Hである。次にA1 ×X1 =1000HをA0 ×X0 =1000Hに加算すると2000Hとなる。これを8ビットのQ6で表すと80Hとなってしまい、8ビットのQ6固定小数点データとしてはオーバーフローしたことになる。すなわち、Q6固定小数点データは80H(2進数では1000 0000 、10進数では−2)から7FH(2進数では0111 1111 、10進数では1.984375)の間の値しか表せない。
本実施例では、この場合、オーバーフローデータレジスタ1400にオーバーフローしてしまった中間データである80Hが、また、オーバーフロー項数レジスタ1300には第2項目の積和演算でオーバーフローを起こしたので2という値が格納されたうえ、積和演算は続けられる。そして、オーバーフローしたままA0 ×X0 +A1 ×X1 +A2 ×X2 +A3 ×X3 を最後まで演算し、4000Hを結果レジスタ160 に格納し、さらにデータ線1200を介してデータバス120 に出力して処理を終了する。このとき、8ビットのQ6固定小数点データとして出力するように指定してあれば、結果レジスタ160 には00Hが格納され、処理を終了する。
一方、連続して次の演算を行なう場合を考える。今までのデータX0 、X1 、X2 、X3 の次に新たな入力データX4 を持ってきてA0 ×X1 +A1 ×X2 +A2 ×X3 +A3 ×X4 を演算したい場合には、X0 が入っているデータレジスタ100 の格納位置にX4 を格納する必要がある。
この場合、CPU700 により、データバス120 を介してポインタレジスタ1 1000に値0を、またデータバス120 を介してセレクタ1030に入力データを、さらにアドレスバス170 を介して加算器1010にダミーアドレス(データレジスタ110 を示すアドレス)等を指定することにより、今までのX0 の位置にX4 が格納される。
そして、積和演算を起動するのに先立ち、CPU700 により、ポインタレジスタ3 1420の値を0から1にする。これにより、セレクタ1430の選択信号の値が1増え、データレジスタ110 からの先頭の読み出しアドレスが1ずれてX1 になる。
以上のように、ポインタレジスタ3 1420はデータレジスタ110 からの先頭読み出しアドレスをずらす信号を発生する。
さらに、積和演算結果あるいは中間データをデータレジスタ110 に格納して次の積和演算に使用する場合を考える。
このような場合は、積和演算結果ならばCPU700 により結果レジスタ160 の値をデータバス120 を介してセレクタ1030に戻し、2つ目のポインタレジスタ2 1410に値を設定して該ポインタ値をセレクタ1030に入力する。これにより、データレジスタ110 の格納位置が定まり、演算結果を格納することが可能になる。 一方、中間データをデータレジスタ110 に戻す場合には、CPU700 によりデータ線1100を介して中間データをセレクタ1030に戻してやればよい。データレジスタ110 の格納位置はポインタレジスタ2 1410にポインタ値を設定することにより決める。
ポインタレジスタ2 1410を置くことにより、IIRフィルタを容易に構成することが可能になる。
図15は、図14の実施例の構成に加えてデータ長選択セレクタ1500を加算器140 の出力と中間データレジスタ150 の間に挿入した構成である。データ長選択セレクタ1500は、積和結果のデータのうちの一部のビットを選択するセレクタである。例えば16ビットのうちの8ビットを選択したり、32ビットのうちの16ビットを選択したり、8ビットをそのまま出したりすることが可能になる。
最後に、図16は、図14の実施例の構成に加えてポインタレジスタ4 1600とコントローラCTL1610を加えた構成である。ポインタレジスタ4 1600はデータバス120 およびコントローラ1610に接続され、コントローラ1610はデータバス120 およびデータレジスタ110 、係数レジスタ100 、乗算器130 、加算器140 に接続されている。
積和演算をある項まで実行し、その後の演算は図示していない他の処理装置等から送られてこないと実行できないような場合、演算できる項まで演算しておき、そこで止めておく場合に使用する。ポインタレジスタ4 1600には積和演算を止める項のアドレスを示すポインタ値を格納しておく。
データレジスタ110 から乗算器130 に入力されるデータ読み出しのアドレスがポインタレジスタ4 1600が示すアドレスと一致すると、コントローラ1610は積和演算を中止する。そして、コントローラ1610は必要なデータがデータバス120 を介して転送されるのを待機し、該データがデータレジスタ110 あるいは係数レジスタ100 等に格納されると、コントローラ1610は中断した積和演算を再開するように乗算器130 、加算器140 等を制御する。
本発明の積和演算器では、係数レジスタに格納する係数データを適当に選ぶことにより、様々な特性を持つFIRフィルタを構成することができる。また、積和演算の結果を入力データとしてデータレジスタに格納することにより、多様なIIRフィルタを構成できる。
例えば、遅延素子を介した信号に相当するデータを入力データとして用いれば、非再帰形の遅延フィルタ(トランスバーサルフィルタ)や再帰形の遅延フィルタを構成することができる。
本発明の第1の構成のブロック図である。 本発明の第2の構成のブロック図である。 本発明の第3の構成のブロック図である。 本発明の第4の構成のブロック図である。 本発明の第5の構成のブロック図である。 本発明の第6の構成のブロック図である。 一実施例のシステム構成図である。 積和演算回路の第1の構成の一実施例のシステム構成図である。 積和演算回路の第2の構成の一実施例のシステム構成図である。 積和演算回路の第3の構成の一実施例のシステム構成図である。 積和演算回路の第4の構成の一実施例のシステム構成図である。 積和演算回路の第5の構成の一実施例のシステム構成図である。 積和演算回路の第6の構成の一実施例のシステム構成図である。 積和演算回路の第6の構成のより詳細な構成図である。 積和演算結果のデータ長を選択可能にするための一実施例のシステム構成図である。 積和演算を一時中断可能にする一実施例のシステム構成図である。 従来の積和演算回路の構成図である。
符号の説明
100 係数レジスタ
110 データレジスタ
120 データバス
130 乗算器
140 加算器
150 中間データレジスタ
160 結果レジスタ
170 アドレスバス
180 データ一括自動格納手段
300 アドレス設定手段
400 中間データ再帰手段
500 中間データ読出し手段
600 オーバーフロー通知手段

Claims (6)

  1. 2つ以上のデータを格納可能な積和演算用のレジスタを2組以上有し、前記レジスタの各々に予め積和演算用データを転送したのち、前記レジスタの各データを使用して積和演算を行なう積和演算器において、
    演算結果のデータを積和演算器の演算データの一つとして前記レジスタに自動転送すること
    を特徴とする積和演算器。
  2. 前記レジスタに演算結果のデータを自動転送すると次の演算を起動すること
    を特徴とする請求項1に記載の積和演算器。
  3. 積和演算用のレジスタを有し、前記レジスタに予め積和演算用データを転送したのち、前記レジスタのデータを使用して積和演算を行なう積和演算器において、
    積和演算途中の中間データを前記レジスタにデータバスを介することなく出力する
    こと
    を特徴とする積和演算器。
  4. データを格納するデータレジスタと、
    前記データレジスタからのデータに基づいて積和演算を行なう積和演算部と、
    を備える積和演算器において、
    前記積和演算部で処理された中間結果をデータバスを介することなく前記データレジスタに出力すること
    を特徴とする積和演算器。
  5. 請求項3又は請求項4の記載の積和演算器を備えるデータ計算装置。
  6. 積和演算用データをレジスタの格納し、
    前記レジスタに格納された積和演算用データを使用して積和演算を行い、
    積和演算途中の中間結果を前記レジスタにバスを介することなく帰還すること
    を特徴とする積和演算方法。
JP2004353408A 2004-12-06 2004-12-06 積和演算器 Pending JP2005149517A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004353408A JP2005149517A (ja) 2004-12-06 2004-12-06 積和演算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004353408A JP2005149517A (ja) 2004-12-06 2004-12-06 積和演算器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004147053A Division JP2004280854A (ja) 2004-05-17 2004-05-17 積和演算器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005214150A Division JP2005353094A (ja) 2005-07-25 2005-07-25 積和演算器

Publications (1)

Publication Number Publication Date
JP2005149517A true JP2005149517A (ja) 2005-06-09

Family

ID=34698095

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004353408A Pending JP2005149517A (ja) 2004-12-06 2004-12-06 積和演算器

Country Status (1)

Country Link
JP (1) JP2005149517A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010165245A (ja) * 2009-01-16 2010-07-29 Fujitsu Ltd プロセッサ
US11281376B2 (en) 2017-10-18 2022-03-22 Mitsubishi Electric Corporation Operation circuit and method of operation for use in operations that are performed in parallel using multiple operators

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010165245A (ja) * 2009-01-16 2010-07-29 Fujitsu Ltd プロセッサ
US11281376B2 (en) 2017-10-18 2022-03-22 Mitsubishi Electric Corporation Operation circuit and method of operation for use in operations that are performed in parallel using multiple operators

Similar Documents

Publication Publication Date Title
JP2002152014A (ja) 正規最小平均二乗アルゴリズムに基づいた係数適応用ハードウエアアクセリレータ
WO2021056711A1 (zh) 一种用数字电路实现的插值滤波器系统
US4809208A (en) Programmable multistage digital filter
JPH07253965A (ja) 積和演算器
JPH0514936B2 (ja)
US6108681A (en) System for sharing resources in a digital filter
JP2005149517A (ja) 積和演算器
JP2005353094A (ja) 積和演算器
JP6311601B2 (ja) 多段フィルタ処理装置及び方法
JP2005149518A (ja) 積和演算器
JP2005141764A (ja) 積和演算器
JP2006236369A (ja) 積和演算器
CN210466088U (zh) 微控制器和硬件模块
JP2856064B2 (ja) ディジタルフィルタ
JP2004280854A (ja) 積和演算器
US7032162B1 (en) Polynomial expander for generating coefficients of a polynomial from roots of the polynomial
JPS63153636A (ja) 情報処理装置
CN108140017B (zh) 用于线性相位有限脉冲响应抽取滤波器的方法和装置
US6314132B1 (en) Microprocessor structure and method for implementing digital filter operations
JP3166781B2 (ja) 加算回路
JP2013161325A (ja) Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法
JP2864598B2 (ja) ディジタル演算回路
WO2021035715A1 (zh) 数据处理方法和装置
JPH01179515A (ja) デジタル信号処理装置
JPH0828647B2 (ja) メモリ装置及びそれを用いたディジタル信号処理装置

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20050323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060905