(57)【要約】【課題】波形発生回路が生成する波形データの誤差を抑制する。【解決手段】波形発生回路１００は、入力データをサンプリング周波数のｍ（ｍは自然数）倍の時間だけ遅延させて第１データＤａとして出力する第１遅延回路２０Ａと、第１遅延回路の後段に位置し、第１データＤａをサンプリング周波数のｍ倍の時間だけ遅延させて第２データＤｂとして出力する第２遅延回路２０Ｂとを有する。さらに、波形発生回路１００は、第１データＤａに係数Ｋを乗算する乗算器３１と、この乗算器３１からの出力データと第２データＤｂを加減算する加減算器３２とを有する演算部（演算手段）３０を有する。くわえて、波形発生回路１００は１番目から２ｍ番目の波形データｄを初期値として予め記憶したメモリＭと、選択部４０とを有する。選択部４０は、メモリＭから出力される波形データｄ又は加減算器３２から出力される波形データｄのいずれかを選択的に出力する。【選択図】図１
2008131280.tif 000002
【特許請求の範囲】
【請求項１】
正弦波又は余弦波の波形データをサンプリング周期で発生する波形発生回路であって、
１番目の前記波形データから２ｍ（ｍは任意の自然数）番目の前記波形データまでを初期値として記憶する記憶手段と、
第１データと第２データとに基づいて前記波形データを演算する演算手段と、
前記演算手段から出力される前記波形データを前記サンプリング周期のｍ倍の時間だけ遅延させて前記第１データを出力する第１遅延手段と、
前記第１データを前記サンプルング周期のｍ倍の時間だけ遅延させて前記第２データを出力する第２遅延手段とを備え、
前記演算手段は、
前記第１データに係数を乗算して第３データを出力する乗算手段と、
前記第３データと前記第２データとを加算又は減算して前記波形データを生成する加減算手段とを備え、
２ｍ＋１番目から３ｍ番目までの前記波形データを生成する場合、ｉを１からｍまでの自然数としたとき、前記第１データの替わりに前記記憶手段から読み出したｉ番目の前記波形データを用いると共に、前記第２データの替わりに前記記憶手段から読み出したｉ＋ｍ番目の前記波形データを用い、ｉを１からｍまで変化させる、
ことを特徴とする波形発生回路。
【請求項２】
正弦波又は余弦波の波形データをサンプリング周期で発生する波形発生回路であって、
１番目の前記波形データから２ｍ（ｍは任意の自然数）番目の前記波形データまでを初期値として記憶する第１記憶手段と、
第１データに係数を乗算して第３データを出力する乗算手段と、
第２データと前記第３データとを加算又は減算して前記波形データを生成する加減算手段と、
前記乗算手段に前記第１データを供給すると共に前記加減算手段に前記第２データを供給する制御手段と、
前記加減算手段によって生成された少なくとも２ｍ個の前記波形データを記憶する第２記憶手段とを備え、
前記制御手段は、
ｉを１からｍまでの自然数としたとき、前記第１データとして前記第１記憶手段から読み出したｍ＋ｉ番目の前記波形データを用いると共に、前記第２データとして前記第１記憶手段から読み出したｉ番目の前記波形データを用い、ｉを１からｍまで変化させ、２ｍ＋１番目から３ｍ番目までの前記波形データを生成し、前記第２記憶手段に記憶させ、
前記第１データとして前記第２記憶手段から読み出した２ｍ＋ｉ番目の前記波形データを用いると共に、前記第２データとして前記第１記憶手段から読み出したｍ＋ｉ番目の前記波形データを用い、ｉを１からｍまで変化させ、３ｍ＋１番目から４ｍ番目までの前記波形データを生成し、前記第２記憶手段に記憶させ、
ｎを２以上の自然数としたとき、前記第１データとして前記第２記憶手段から読み出した（ｎ＋１）ｍ＋ｉ番目の前記波形データを用いると共に、前記第２データとして前記第２記憶手段から読み出したｎｍ＋ｉ番目の前記波形データを用い、ｉを１からｍまで変化させ、（ｎ＋２）ｍ＋１番目から（ｎ＋３）ｍ番目までの前記波形データを生成し、前記第２記憶手段に記憶させる、
ことを特徴とする波形発生回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、正弦波又は余弦波の波形データを発生する波形発生回路に関する。
【背景技術】
【０００２】
正弦波の波形データをサンプリング周期で発生する波形発生回路がある。特許文献１には、サンプリング周期の最初の２点（サンプル点）の波形データを初期値として、これらの初期値に基づいて漸化式により正弦波信号を生成する方式が記載されている。この漸化式方式においては、処理対象であるサンプル点ｐ（ｐは自然数）における波形データｓｉｎ（ｐ）は、直前の２つのサンプル点ｐ−１及びｐ−２における波形データｓｉｎ（ｐ−１）及びｓｉｎ（ｐ−２）に基づいて生成される。
図６に、この従来の漸化式方式による波形発生回路Ａを示す。図６に示されるように、従来の波形発生回路Ａは、入力されたデータｄｃを遅延させてデータｄａを出力する第１の遅延回路Ｄ１と、データｄａを遅延させてデータｄｂを出力する第２の遅延回路Ｄ２と、データｄａに係数Ｑを乗算する乗算器１と、乗算器１から出力されるデータＱ・ｄａ及びデータｄｂとを加減算する加減算器２とを有する。加減算器２から出力されるデータｄｃは外部に出力されると共に、第１の遅延回路Ｄ１に入力される。ここで、Ｑ＝２×ｃｏｓ（Δω）、Δω＝２π×ｆ÷ｆｓ（ω：角速度、ｆ：正弦波の周波数、ｆｓ：サンプリング周波数）であり、Δωは１サンプリング周期となる。また、第１の遅延回路Ｄ１と第２の遅延回路Ｄ２の遅延時間は１サンプリング周期Δωとなる。
【特許文献１】特開２００４−４８１０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、発生させる周波数ｆが低い場合や、サンプリング周波数が高い場合、１サンプリング周期Δωは小さい値となる。このとき、上述した波形発生回路Ａにおいては、初期値であるｓｉｎ（Δω）が極端に０に近づいてくる。しかしながら、乗算器１と加減算器２におけるビット数は有限であるため、初期値が０に近づくと有効数字のけた数が減少する。このため、この初期値を用いた演算に誤差が生じる。さらに、従来の漸化式方式では、直前の２つのサンプル点を帰納的に用いて波形データを求めるので、波形の演算が進むにつれて最初の誤差が蓄積する。つまり、時間（ｔ）が経過するほど波形の誤差が拡がっていく。
本発明は、以上の事情に鑑みてなされたものであり、漸化式を用いて正弦波又は余弦波を生成する場合に、波形演算における誤差を抑制することが可能な波形生成装置を提供するという課題の解決を目的としている。
【課題を解決するための手段】
【０００４】
以上の課題を解決するために、本発明に係る波形発生回路は、正弦波又は余弦波の波形データをサンプリング周期で発生する波形発生回路であって、１番目の前記波形データから２ｍ（ｍは任意の自然数）番目の前記波形データまでを初期値として記憶する記憶手段と、第１データと第２データとに基づいて前記波形データを演算する演算手段と、前記演算手段から出力される前記波形データを前記サンプリング周期のｍ倍の時間だけ遅延させて前記第１データを出力する第１遅延手段と、前記第１データを前記サンプルング周期のｍ倍の時間だけ遅延させて前記第２データを出力する第２遅延手段とを備え、前記演算手段は、前記第１データに係数を乗算して第３データを出力する乗算手段と、前記第３データと前記第２データとを加算又は減算して前記波形データを生成する加減算手段とを備え、２ｍ＋１番目から３ｍ番目までの前記波形データを生成する場合、ｉを１からｍまでの自然数としたとき、前記第１データの替わりに前記記憶手段から読み出したｉ番目の前記波形データを用いると共に、前記第２データの替わりに前記記憶手段から読み出したｉ＋ｍ番目の前記波形データを用い、ｉを１からｍまで変化させることを特徴とする。
【０００５】
本発明の波形発生回路は、１番目の波形データから２ｍ番目の波形データまでを初期値として記憶する記憶手段を有し、２ｍ＋１番目から３ｍ番目までの波形データを漸化式方式で生成する場合、この記憶手段から、生成対象の波形データに先行する波形データをｍ個飛ばしで２つ読み出して第１データ及び第２データとして用いる。このように、とびとびの初期値を用いて波形データを生成するので、波形演算における誤差を抑制することが可能となる。
【０００６】
本発明に係る別の波形発生回路は、正弦波又は余弦波の波形データをサンプリング周期で発生する波形発生回路であって、１番目の前記波形データから２ｍ番目の前記波形データまでを初期値として記憶する第１記憶手段と、第１データに係数を乗算して第３データを出力する乗算手段と、第２データと前記第３データとを加算又は減算して前記波形データを生成する加減算手段と、前記乗算手段に前記第１データを供給すると共に前記加減算手段に前記第２データを供給する制御手段と、前記加減算手段によって生成された少なくとも２ｍ個の前記波形データを記憶する第２記憶手段とを備え、前記制御手段は、ｉを１からｍまでの自然数としたとき、前記第１データとして前記第１記憶手段から読み出したｍ＋ｉ番目の前記波形データを用いると共に、前記第２データとして前記第１記憶手段から読み出したｉ番目の前記波形データを用い、ｉを１からｍまで変化させ、２ｍ＋１番目から３ｍ番目までの前記波形データを生成し、前記第２記憶手段に記憶させ、前記第１データとして前記第２記憶手段から読み出した２ｍ＋ｉ番目の前記波形データを用いると共に、前記第２データとして前記第１記憶手段から読み出したｍ＋ｉ番目の前記波形データを用い、ｉを１からｍまで変化させ、３ｍ＋１番目から４ｍ番目までの前記波形データを生成し、前記第２記憶手段に記憶させ、ｎを２以上の自然数としたとき、前記第１データとして前記第２記憶手段から読み出した（ｎ＋１）ｍ＋ｉ番目の前記波形データを用いると共に、前記第２データとして前記第２記憶手段から読み出したｎｍ＋ｉ番目の前記波形データを用い、ｉを１からｍまで変化させ、（ｎ＋２）ｍ＋１番目から（ｎ＋３）ｍ番目までの前記波形データを生成し、前記第２記憶手段に記憶させることを特徴とする。
【０００７】
本発明の別の波形発生回路においては、１番目の波形データから２ｍ番目の波形データまでを初期値として記憶する第１記憶手段と、加減算手段によって生成された少なくとも２ｍ個の波形データを記憶する第２記憶手段とを有し、２ｍ＋１番目から３ｍ番目までの波形データを生成する場合には、第１データ及び第２データの両方を第１記憶手段から読み出して用い、３ｍ＋１番目から４ｍ番目までの波形データを生成する場合には、第１データを第２記憶手段から読み出し、第２データを第１記憶手段から読み出して用いる。さらに、（ｎ＋２）ｍ＋１番目から（ｎ＋３）ｍ番目までの波形データを生成する場合には、第１データと第２データの両方を第２記憶手段から読み出して用いる。このように、２ｍ＋１番目から３ｍ番目までの波形データを生成する場合には、サンプリング周期がｍ個相異なる初期値を用いるので、波形演算における誤差が抑制される。これらの初期値を用いた演算結果は第２記憶手段に蓄積されて、以降の演算に用いられる。初期値を用いた演算の誤差が抑制されているので、以降の演算における誤差も同様に抑制される。また、演算が進むにつれて蓄積する誤差も、抑制することが可能となる。
【発明を実施するための最良の形態】
【０００８】
＜１．第１実施形態＞
図１を参照して、本発明の第１実施形態に係る波形発生回路１００の構成を説明する。波形発生回路１００は、周波数ｆの正弦波Ｓをサンプリング周期で（又はΔωで）発生させる回路である。ここで、Δω＝２π×ｆ÷ｆｓである。図１に示されるように、この波形発生回路１００は、入力される波形データｄをΔωのｍ（ｍは自然数）倍の時間だけ遅延させて第１データＤａとして出力する第１遅延回路２０Ａと、第１遅延回路２０Ａの後段に位置して第１データＤａを遅延させて第２データＤｂとして出力する第２遅延回路２０Ｂとを有する。第１遅延回路２０Ａ及び第２遅延回路２０Ｂの遅延時間は、Δωのｍ（ｍは自然数）倍に相当する時間であり、１サンプリング周期のｍ倍の時間である。
【０００９】
さらに、波形発生回路１００は、第１データＤａに係数Ｋを乗算する乗算器３１と、この乗算器３１からの出力データと第２データＤｂを加減算する加減算器３２とを有する演算部（演算手段）３０を有する。このように、波形発生回路１００は、第１遅延回路２０Ａ、第２遅延回路２０Ｂ及び演算部３０とを有することにより、漸化式方式で帰納的に波形データｄを生成することが可能である。くわえて、波形発生回路１００は後述の波形データの初期値を記憶するメモリＭと選択部４０とを有する。選択部４０は、メモリＭから出力される波形データｄ又は加減算器３２から出力される波形データｄのいずれかを選択して出力波形データｄoutとして出力する。ここで、係数Ｋ＝２×ｃｏｓ（Δω・ｍ）である。
【００１０】
メモリＭには、周波数ｆの正弦波Ｓをサンプリング周波数ｆｓで発生させる場合における、１番目から２ｍ（ｍは任意の自然数）番目の波形データｄが初期値として記憶されている。具体的には、正弦波Ｓの波高値を示す２ｍ個の波形データｄ1，ｄ2，…，ｄm，ｄm+1，ｄm+2，…，ｄ2mが予め保持されている。
【００１１】
波形発生回路１００の選択部４０は、ｘ（ｘは自然数、１≦ｘ≦２ｍ）番目の波形データｄx（波形データｄ1〜ｄ2m）を生成する場合には、これらの初期値を出力波形データｄoutとして出力するように動作する。以上のように生成された１番目から２ｍ番目までの波形データｄ1〜ｄ2mは、出力波形データｄoutとして外部に出力される前に分岐して、第１遅延回路２０Ａに入力されて、２ｍ＋１番目以降の演算に利用される。
【００１２】
次に、２ｍ＋１番目から３ｍ番目までの波形データｄ2m+1〜ｄ3mを生成する場合について説明する。図２は、２ｍ＋１番目から３ｍ番目までの波形データｄ2m+1〜ｄ3mを生成する際に用いる波形データｄを説明するための図である。図２に示されるように、例えば、２ｍ＋１番目の波形データｄ2m+1を生成するとき、第１データＤａとして波形データｄm+1が用いられ、第２データＤｂとして波形データｄ1が用いられる。また、２ｍ＋ｉ（ｉは自然数、１≦ｉ≦ｍ）番目の波形データｄ2m+iを生成するとき、第１データＤａとして波形データｄm+iが用いられ、第２データＤｂとして波形データｄiが用いられる。このように、波形データｄの初期値をｍ個ずつ遅延させて、第１データＤａ及び第２データＤｂとして演算部３０による演算に用いる。
【００１３】
さらに、詳細には、ｘ（ｘ≧２ｍ＋１）番目の波形データｄxは、以下の式により演算される。
Ｋ＝２×ｃｏｓ（Δω・ｍ）
ｄx ＝ｓｉｎ（ｘ）＝Ｋ・ｓｉｎ（ｘ−ｍ）−ｓｉｎ（ｘ−２ｍ）
＝Ｋ・Ｄａ−Ｄｂ
よって、
ｓｉｎ（２ｍ＋１）＝Ｋ・ｓｉｎ（ｍ＋１）−ｓｉｎ（１）＝Ｋ・ｓｉｎ（ｍ＋１）
ｓｉｎ（２ｍ＋２）＝Ｋ・ｓｉｎ（ｍ＋２）−ｓｉｎ（２）
：
：
ｓｉｎ（２ｍ＋ｉ）＝Ｋ・ｓｉｎ（ｍ＋ｉ）−ｓｉｎ（ｉ）
：
：
ｓｉｎ（２ｍ＋ｍ）＝ｓｉｎ（３ｍ）＝Ｋ・ｓｉｎ（２ｍ）−ｓｉｎ（ｍ）
但し、ｓｉｎ（ｊ）はｊ（ｊは自然数）番目のサンプルを意味し、ｊ＝１のときｓｉｎ（１）＝０であり、正確にはｓｉｎ（ｊ）＝ｓｉｎ（Δω（ｊ−１））である。
以上のように生成された２ｍ＋１番目から３ｍ番目までの波形データｄ2m+1〜ｄ3mは、第１遅延回路２０Ａに入力されて、３ｍ＋１番目〜４ｍ番目までの波形データｄの演算に利用される。
【００１４】
次に、３ｍ＋１番目〜４ｍ番目までの波形データｄ3m+1〜ｄ4mが生成される。この場合、上記２ｍ＋１番目から３ｍ番目までの波形データｄ2m+1〜ｄ3mの演算結果が第１データＤａとして用いられ、メモリＭに記憶された波形データｄの初期値を第２データＤｂとして演算に用いる。これらの演算結果もまた、第１遅延回路２０Ａに入力される。続いて、４ｍ＋１番目以降の波形データｄが生成される。この場合、２ｍ＋１番目以降の波形データｄの演算結果が第１データＤａ及び第２データＤｂとして用いられる。
【００１５】
ところで、上述したように、Δω＝２π×ｆ÷ｆｓである。よって、周波数ｆが低いほどΔωは小さくなる。また、サンプリング周波数ｆｓが高いほど（つまり、小刻みにサンプリングされるほど）、Δωは小さくなる。このとき、１番目の波形データｓｉｎ（１）＝０に続く２番目の波形データｓｉｎ（２）は限りなく０に近づく。しかしながら、乗算器３１や加減算器３２におけるビット数は有限であるため、初期値が０に近づくと有効数字のけた数が減少する。このため、ｓｉｎ（１）及びｓｉｎ（２）を初期値として漸化式に代入演算した結果（すなわち、演算回路３０による演算結果）の誤差が大きくなる。この誤差を有する波形データは漸化式に代入されて繰り返し利用され、誤差がさらに蓄積することになる。これに対して、本実施形態の波形発生回路１００では、演算回路３０に入力される第１データＤａ及び第２データＤｂとしてｍ個飛ばしの初期値を用いる。すなわち、サンプリング周期のｍ倍に相当する時間（Δω・ｍ）だけ遅延された初期値を用いて演算が行われる。よって、Δωの値が小さい場合であっても、時間（Δω・ｍ）だけ離れたサンプルを初期値として用いるので、単にΔωだけ離れたサンプルを初期値として用いる場合と比較して、有効数字のけた数が増加し、演算結果における誤差が抑制される。また、初期値は予め生成されてメモリＭに記憶されているので、初期値自体の誤差を予め抑制することが可能である。よって、全体として、波形演算の誤差が抑制される。
【００１６】
以上説明したように、第１実施形態の波形発生回路１００においては、波形データｄ1〜波形データｄm+1の２ｍ個の波形データを初期値として予めメモリＭに記憶しておく。これらの初期値は、メモリＭから順次読み出されて出力波形データｄoutとして外部に出力されるとともに、第１遅延回路２０Ａに入力される。その結果、波形データｄ2m+1以降の演算には、ｍ個飛ばしの２個の波形データｄが各々第１データＤａ及び第２データＤｂとして利用される。つまり、波形発生回路１００は、最初の２ｍ個の波形データの出力が完了すると、選択部４０を、加減算器３２の演算結果としての波形データｄを出力波形データｄoutとして出力するように切り替え、それ以降は、ｍ個飛ばしの２個の波形データ（すなわち、第１データＤａおよび第２データＤｂ）に基づく演算結果を外部に出力する。具体的には、例えば、２ｍ＋１番目の波形データｄ2m+1を生成する場合、第１遅延回路２０Ａは波形データｄ2m+1に対してｍ個遅延された波形データｄm+1を第１データＤａとして出力し、第２遅延回路２０Ｂは波形データｄm+1に対してｍ個遅延された波形データｄ1を第２データＤｂとして出力し（すなわち、各第１遅延回路２０Ａおよび第２遅延回路２０Ｂは、波形データｄを記憶して遅延させる手段として機能する）、演算部３０はこの第１データＤａおよび第２データＤｂを演算に用いる。このようにして、波形発生回路１００では、波形演算の初期段階における誤差を抑制することにより以降の演算における誤差もまた抑制されるので、結果として、全体としての誤差の抑制が可能となる。
【００１７】
＜２．第２実施形態＞
図３は、第２実施形態に係る波形発生回路２００の構成を示す図である。本実施形態の波形発生回路２００は、第１実施形態の波形発生回路１００と同様に、周波数ｆの正弦波Ｓをサンプリング周期で発生させる回路である。但し、第１実施形態の波形発生回路１００の第１遅延回路２０Ａ及び第２遅延回路２０Ｂの替わりに、第２実施形態の波形発生回路２００では、第２メモリＭ２を用いる。
また、ｘ番目の波形データｄxを生成するにあたって、第１データＤａとしてｘ−ｍ番目の波形データｄx-mを用い、第２データＤｂとしてｘ−２ｍ番目の波形データｄx-2mを用いる。なお、図３において、上記実施形態と同様の要素については同一の符号を付し、その説明は適宜省略する。
【００１８】
図３に示されるように、波形発生回路２００は、上記実施形態と同様に、乗算器３１と加減算器３２とを有する演算部３０、及び選択部４０を備える。さらに、波形発生回路２００は、１番目の波形データｄ1から２ｍ番目の波形データｄ2mまでを初期値として記憶する第１メモリＭ１と、加減算器３２からの順次出力される波形データｄを少なくとも２ｍ個記憶する第２メモリＭ２とを有する。制御部１０は、第１データＤａ及び第２データＤｂを第１メモリＭ１及び第２メモリＭ２の両方、又は第２メモリＭ２のみから読み出して演算部３０に供給する。くわえて、制御部１０は選択部４０を制御する。詳細には、加減算器３２から出力された波形データｄ及び第１メモリＭ１から読み出された波形データｄのいずれを出力波形データｄoutとして出力するかを指示する選択信号Ｓ１，Ｓ２を、選択部４０に対して供給する。
【００１９】
次に、図４及び図５を参照しながら、制御部１０によって制御される波形データｄxの生成処理手順について説明する。図４は、制御部１０が実行する波形データ生成処理の流れを示すフローチャートである。図５は、波形データ生成処理に用いられる波形データｄについて説明するための図である。
【００２０】
制御部１０は、まず、生成すべき波形データｄxが１番目〜２ｍ番目の波形データｄ1〜ｄ2mのいずれかであるかについて判定する（ステップＳ１）。この判定結果がＹＥＳの場合、制御部１０は、ステップＳ２において、選択部４０に選択信号Ｓ１を送信する。上述したように、１番目〜２ｍ番目の波形データｄ1〜ｄ2mの各々は、第１メモリＭ１に記憶されている。よって、選択信号Ｓ１は、選択部４０に対して、第１メモリＭ１から供給される波形データを出力波形データｄoutとして出力することを指示する信号である。次に、制御部１０は、波形データｄを第１メモリＭ１から読み出し（ステップＳ３）、この読み出した波形データｄを出力波形データｄoutとして出力する（ステップＳ４）。続いて、制御部１０は、生成すべき波形データｄxの全てについて出力が完了したか否かを判定する（ステップＳ５）。制御部１０は、ステップＳ１の判定結果がＮＯになるまで、すなわち、２ｍ番目の波形データｄの生成が完了して２ｍ＋１番目の波形データｄの生成処理に移行するまで、上述したステップＳ１〜Ｓ５の処理を繰り返す。
【００２１】
次いで、ステップＳ１における判定結果がＮＯの場合、すなわち、生成すべき波形データｄxが１番目〜２ｍ番目の波形データｄ1〜ｄ2mでない場合、制御部１０は選択部４０に対して選択信号Ｓ２を送信する（ステップＳ６）。選択信号Ｓ２は、選択部４０に対して、加減算器３２から出力される波形データを出力波形データｄoutとして出力することを指示する信号である。
【００２２】
次に、制御部１０は、ステップＳ７において、生成すべき波形データｄxが２ｍ＋１番目〜３ｍ番目の波形データｄ2m+1〜ｄ3mのいずれかであるかについて判定する。この判定結果がＹＥＳの場合、処理はステップＳ８に進む。図５に示されるように、２ｍ＋１番目〜３ｍ番目の波形データｄ2m+1〜ｄ3mの各々は、第１メモリＭ１に記憶された波形データｄm+1〜ｄ2mの各々を第１データＤａとして読み出し、第１メモリＭ１に記憶された波形データｄ1〜ｄmの各々を第２データＤｂとして読み出すことにより生成される。よって、ステップＳ８において、制御部１０は、第１データＤａ及び第２データＤｂを第１メモリＭ１から読み出す。具体的には、ｉを１からｍまでの自然数としたとき、第１メモリＭ１に記憶されたｍ＋ｉ番目の波形データｄm+iを第１データＤａとして読み出し、ｉ番目の波形データｄiを第２データＤｂとして読み出す。
【００２３】
次に、制御部１０は、第１メモリＭ１から読み出した第１データＤａ及び第２データＤｂを演算部３０に供給して、演算部３０において波形データｄを生成させる（ステップＳ９）。この演算部３０において、乗算器３１は第１データＤａに係数Ｋを乗算して、その演算結果を加減算器３２に供給する。加減算器３２は、乗算器３１から供給された演算結果及び第２データＤｂを加減算して出力すると共に、ステップＳ１０において、加減算器３２から出力された波形データｄを第２メモリＭ２に記憶する。続いて、制御部１０は、ステップＳ４において加減算器３２から出力された波形データｄを出力波形データｄoutとして出力する。
【００２４】
ここで、上述したように、波形データｄxはＫ・ｓｉｎ（ｘ−ｍ）−ｓｉｎ（ｘ−２ｍ）＝Ｋ・Ｄａ−Ｄｂによって求められる。つまり、波形データｄxの演算には、ｘ−ｍ番目の波形データｄx-m及びｘ−２ｍ番目の波形データｄx-2mが用いられる。このため、第１メモリＭ１及び／又は第２メモリＭ２から、生成すべき波形データｄxの直前２ｍ個の波形データｄが読み出せるように、少なくとも直前２ｍ個の波形データｄxが第１メモリＭ１及び第２メモリＭ２に記憶されていることが望ましい。このため、本実施形態では、２ｍ＋１番目以降の波形データｄを生成する度に、生成した波形データｄを第２メモリＭ２に記憶する構成としている。これにより、ｘ−ｍの値が第１メモリＭ１に記憶された波形データの数（２ｍ個）を超えた場合にも、第１メモリＭ１及び／又は第２メモリＭ２に記憶された波形データｄx-m及び波形データｄx-2mを用いて波形データｄxを生成することが可能となる。
【００２５】
制御部１０は、ステップＳ７の判定結果がＮＯになるまで、すなわち、３ｍ番目の波形データｄ3mの生成処理が完了して３ｍ＋１番目の波形データｄ3m+1の生成処理に移行するまで、ｉを１からｍまで変化させ、ステップＳ８〜Ｓ１０、Ｓ４、Ｓ５、Ｓ１、Ｓ６、Ｓ７の処理を繰り返す。なお、制御部１０は、例えば、ｉを１からｍまで変化させる第１カウンタ及び第２カウンタ（図示略）を有し、第１データＤａを読み出す度に第１カウンタのカウント値をインクリメントし、第２データＤｂを読み出す度に第２カウンタのカウント値をインクリメントする。第１カウンタ及び第２カウンタはカウント値がｍに達すると０にリセットされる。
【００２６】
続いて、ステップＳ７における判定結果がＮＯの場合、すなわち、生成すべき波形データｄxが２ｍ＋１番目〜３ｍ番目の波形データｄ2m+1〜ｄ3mのいずれかでない場合、制御部１０は、さらに、生成すべき波形データｄxが３ｍ＋１番目〜４ｍ番目の波形データｄ3m+1〜ｄ4mのいずれかであるか否か判定する（ステップＳ１１）。この判定結果がＹＥＳの場合、処理はステップＳ１２に進む。図５に示されるように、３ｍ＋１番目〜４ｍ番目の波形データｄ3m+1〜ｄ4mの各々は、第２メモリＭ２に記憶された波形データｄ2m+1〜ｄ3mの各々を第１データＤａとして読み出し、第１メモリＭ１に記憶された波形データｄm+1〜ｄ2mの各々を第２データＤｂとして読み出すことにより生成される。波形データｄ2m+1〜ｄ3mは、上述したステップＳ８〜Ｓ１０における処理を通じて生成されて第２メモリＭ２に記憶された波形データである。よって、制御部１０は、ステップＳ１２において、２ｍ＋ｉ番目の波形データｄ2m+iを第１データＤａとして第２メモリＭ２から読み出し、続いてステップＳ１３において、ｍ＋ｉ番目の波形データｄm+iを第２データＤｂとして第１メモリＭ１から読み出す。具体的には、制御部１０は、第２メモリＭ２に記憶された２ｍ＋ｉ番目の波形データｄ2m+iを第１データＤａとして読み出し、第１メモリに記憶されたｍ＋ｉ番目の波形データｄm+iを第２データＤｂとして読み出す。この第１データＤａ及び第２データＤｂは演算部３０に供給されて、この演算部３０において波形データが生成される（ステップＳ９）。
【００２７】
次に、ステップＳ１０において、演算部３０から出力された波形データｄを第２メモリＭ２に記憶すると共に、ステップＳ４において出力波形データｄoutとして出力する。制御部１０は、ステップＳ１１の判定結果がＮＯになるまで、すなわち、４ｍ番目の波形データｄ4mの生成処理が完了して４ｍ＋１番目の波形データｄ4m+1の生成処理に移行するまで、ｉを１からｍまで変化させ、ステップＳ１２、Ｓ１３、Ｓ９、Ｓ１０、Ｓ４、Ｓ５、Ｓ１、Ｓ６、Ｓ７、Ｓ１１の処理を繰り返す。
【００２８】
次に、ステップＳ１１の判定結果がＮＯの場合、すなわち、生成すべき波形データｄxが３ｍ＋１番目〜４ｍ番目でない場合、処理はステップＳ１４に移行する。図５に示されるように、４ｍ＋１番目〜５ｍ番目の波形データｄ4m+1〜ｄ5mの各々は、第２メモリＭ２に記憶された波形データｄ3m+1〜ｄ4mの各々を第１データＤａとして読み出し、同じく第２メモリＭ２に記憶された波形データｄ2m+1〜ｄ3mの各々を第２データＤｂとして読み出すことにより生成される。また、図示は略したが、５ｍ＋１番目以降の波形データｄも同様に、第１データＤａ及び第２データＤｂの両方を第２メモリＭ２から読み出すことにより生成される。つまり、４ｍ＋１番目（つまり、（ｎ＋２）ｍ＋１番目、ｎは２以上の自然数）以降の波形データｄの生成に際しては、第１データＤａとして第２メモリＭ２から読み出した（ｎ＋１）ｍ＋ｉ番目の波形データｄ(n+1)m+iを用い、第２データとして第２メモリＭ２から読み出したｎｍ＋１番目の波形データｄnm+iを用いる。よって、制御部１０は、ステップＳ１４において、第１データＤａとして、第２メモリＭ２から波形データｄ(n+1)m+iを読み出し、第２データＤｂとして、第２メモリＭ２から波形データｄnm+iを読み出す。このようにして読み出されたこの第１データＤａ及び第２データＤｂは演算部３０に供給されて、この演算部３０において波形データが生成される（ステップＳ９）。
【００２９】
次に、ステップＳ１０において、演算部３０から出力された波形データｄを第２メモリＭ２に記憶すると共に、ステップＳ４において出力波形データｄoutとして出力する。制御部１０は、ステップＳ５の判定結果がＹＥＳになるまで、すなわち、生成すべき波形データｄxの出力が全て完了するまで、ｎがインクリメントする度にｉを１からｍまで変化させ、ステップＳ１、Ｓ６、Ｓ７、Ｓ１１、Ｓ１４、Ｓ９、Ｓ１０、Ｓ４、Ｓ５の処理を繰り返す。ステップＳ５の判定結果がＹＥＳになると、波形データ生成処理は終了する。
【００３０】
以上説明したように、本実施形態における波形発生回路２００においては、１番目の波形データｄ1から２ｍ番目の波形データｄ2mまでを初期値として記憶する第１メモリＭ１と、演算部３０によって生成された少なくとも２ｍ個の波形データｄを記憶する第２メモリＭ２とを有し、２ｍ＋１番目から３ｍ番目までの波形データを生成する場合には、第１データＤａ及び第２データＤｂの両方を第１メモリＭ１から読み出して用い、３ｍ＋１番目から４ｍ番目までの波形データを生成する場合には、第１データＤａを第２メモリＭ２から読み出し、第２データＤｂを第１メモリＭ１から読み出して用いる。さらに、（ｎ＋２）ｍ＋１番目から（ｎ＋３）ｍ番目までの波形データを生成する場合には、第１データＤａと第２データＤｂの両方を第２メモリＭ２から読み出して用いる。このように、本実施形態の波形発生回路２００によれば、上記第１実施形態と同様の効果を得ることが可能となる。すなわち、２ｍ＋１番目から３ｍ番目までの波形データｄを生成する場合には、サンプリング周期がｍ個相異なる初期値をメモリから読み出して用いるので、波形演算における誤差が抑制される。さらに、これらの初期値を用いた演算結果（波形データｄ2m+1〜ｄ3m）は第２メモリＭ２に蓄積され、以降の演算に用いられる。初期値を用いて生成された波形データｄ2m+1〜ｄ3mの誤差が抑制されているので、これらの波形データを以降の演算に用いることで、以降の演算における誤差も同様に抑制される。また、演算が進むにつれて蓄積する誤差も、同様に抑制することが可能となる。
【００３１】
＜３．変形例＞
上述した実施形態では、波形発生回路１００，２００が正弦波Ｓを生成する態様について説明したが、上記波形発生回路１００，２００を余弦波を生成する回路に適用させることも可能である。この場合、余弦波の波高値としての波形データｄ1〜ｄ2mをテーブルとして予め保持し、これらを初期値として用いて２ｍ＋１番目以降の波形データを生成する。
【図面の簡単な説明】
【００３２】
【図１】第１実施形態に係る波形発生回路の構成を示すブロック図である。
【図２】第１実施形態における波形データの生成に用いられる波形データを説明するための図である。
【図３】第２実施形態に係る波形発生回路の構成を示すブロック図である。
【図４】第２実施形態における波形生成処理の流れを示すフローチャートである。
【図５】第２実施形態における波形データ生成処理に用いられる波形データを説明するための図である。
【図６】従来の波形発生回路の構成を示すブロック図である。
【符号の説明】
【００３３】
１０……制御部、２０Ａ……第１遅延回路（第１遅延手段）、２０Ｂ……第２遅延回路（第２遅延手段）、３０……演算部（演算手段）、３１……乗算部（乗算手段）、３２……加減算部（加減算手段）、４０……選択部、１００，２００……波形発生回路、Ｄａ……第１データ、Ｄｂ……第２データ、Ｋ……係数、Ｍ……メモリ（記憶手段）、Ｍ１……第１メモリ（第１記憶手段）、Ｍ２……第２メモリ（第２記憶手段）、Ｓ……正弦波、ｄ……波形データ、ｄout……出力波形データ、ｆ……周波数、ｆｓ……サンプリング周波数。
【図１】
2008131280.tif 000003
【図２】
2008131280.tif 000004
【図３】
2008131280.tif 000005
【図４】
2008131280.tif 000006
【図５】
2008131280.tif 000007
【図６】
2008131280.tif 000008