(57)【要約】【課題】回路規模を増大させることなく、クロックの切り替えを可能とする半導体集積回路及びクロック切り替え方法を提供すること。【解決手段】本発明にかかる半導体集積回路１は、ループカウンタ１１、クロックセレクタ１３、演算器１４、ＲＡＭ１６を備える。ＲＡＭ１６では、第１のクロックに基づいて、入力データの書き込み及び出力データの読み出しが行われる。演算器１４は、第２クロックに基づいて、ＲＡＭ１６を用いたループ演算処理を繰り返す。ループカウンタ１１は、演算器１４のループ処理の回数をカウントする。クロックセレクタ１３は、第１及び第２のクロックが入力され、ループカウンタ１１のカウント値に基づいて、第１及び第２のクロックのうち、いずれか一方のクロックを選択する。クロックセレクタ１３は、選択したクロックを演算器１４及びＲＡＭ１６に供給する。【選択図】図１
2011253502.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロックに基づいて、入力データの書き込み及び出力データの読み出しが行われるメモリと、
前記メモリに格納されたデータの読み出し処理と、当該データに基づく演算処理と、当該メモリへの演算結果の書き込み処理とを含むループ処理を、第２クロックに基づいて繰り返す演算器と、
前記演算器の前記ループ処理の回数をカウントするループカウンタと、
前記第１及び第２のクロックが入力され、前記ループカウンタのカウント値に基づいて、前記第１及び第２のクロックのうち、いずれか一方のクロックを選択し、当該クロックを前記メモリ及び前記演算器に供給するクロックセレクタと、
を備える半導体集積回路。
【請求項２】
前記クロックセレクタは、
前記演算器が前記ループ処理を実行していない場合、前記第１のクロックを選択し、
前記演算器が前記ループ処理を実行している場合、前記第２のクロックを選択する請求項１に記載の半導体集積回路。
【請求項３】
前記演算器が前記ループ処理をｍ回（ｍは２以上の整数）実行する場合、
前記クロックセレクタは、
前記ループカウンタのカウント値が０またはｍ＋１の場合、前記第１のクロックを選択し、
前記ループカウンタの前記カウント値が１〜ｍの場合、前記第２のクロックを選択する請求項２に記載の半導体集積回路。
【請求項４】
前記第１及び第２のクロックをカウントし、当該カウント値に基づいて、前記メモリに対する前記データの書き込みアドレス及び読み出しアドレスを指定するアドレスカウンタをさらに備え、
前記アドレスカウンタの前記カウント値に基づいて、前記ループカウンタの前記カウント値が変化する請求項１〜３のいずれか一項に記載の半導体集積回路。
【請求項５】
前記アドレスカウンタは、前記メモリに対して、前記データを書き込むワード線及び前記データを読み出すワード線を、前記アドレスカウンタの前記カウント値に基づいて指定し、
前記アドレスカウンタの前記カウント値が最大値となった場合、前記ループカウンタの前記カウント値が増加する請求項４に記載の半導体集積回路。
【請求項６】
前記メモリの入力側に設けられ、前記ループカウンタの前記カウント値に基づいて、前記入力データが入力される前記半導体集積回路の入力端子と前記演算器の出力端子とのうち、いずれか一方を選択する入力セレクタと、
前記メモリの出力側に設けられ、前記ループカウンタの前記カウント値に基づいて、前記出力データが出力される前記半導体集積回路の出力端子と前記演算器の入力端子とのうち、いずれか一方を選択する出力セレクタと、
をさらに備える請求項１〜５のいずれか一項に記載の半導体集積回路。
【請求項７】
前記入力セレクタは、
前記メモリに前記入力データが書き込まれる場合、前記半導体集積回路の入力端子を選択し、前記入力データを前記メモリに供給し、
前記演算器が前記ループ処理を実行している場合、前記演算器の出力端子を選択し、前記演算結果を前記メモリに供給し、
前記出力セレクタは、
前記メモリから前記出力データが読み出される場合、前記半導体集積回路の出力端子を選択し、前記メモリに格納された前記データを出力し、
前記演算器が前記ループ処理を実行している場合、前記演算器の入力端子を選択し、前記メモリに格納された前記データを出力する請求項６に記載の半導体集積回路。
【請求項８】
第１のクロックに基づいて、入力データの書き込み及び出力データの読み出しが行われるメモリと、
前記メモリに格納されたデータの読み出し処理と、当該データに基づく演算処理と、当該メモリへの演算結果の書き込み処理とを含むループ処理を、第２クロックに基づいて繰り返す演算器と、を備える半導体集積回路のクロック切り替え方法であって、
前記演算器の前記ループ処理の回数をカウントし、
前記ループ処理の回数に基づいて、前記第１及び第２のクロックのいずれか一方を選択し、
選択したクロックを前記メモリ及び前記演算器に供給するクロック切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路及びクロック切り替え方法に関し、特にクロック切り替え回路を備える半導体集積回路及びクロック切り替え方法に関する。
【背景技術】
【０００２】
フーリエ変換におけるバタフライ演算等のループ処理を含む演算回路において、演算に用いるメモリとデータ入出力に用いるメモリを共有する技術が知られている。メモリの共有を行う場合、演算時とデータ入出力時とにおいて、異なるクロックによりメモリを動作させる必要が生じる。そのため、メモリを共有する半導体集積回路には、異なる複数のクロックを選択するクロック切り替え装置が設けられている。
【０００３】
特許文献１には、入力される異なる２つのクロックを選択するクロック切り替え回路が開示されている。特許文献１に記載のクロック切り替え回路の回路図を図３に示す。図３に示す回路は、高速発振回路３１、低速発振回路３２、リセットディレイ３３、セレクタ３４、制御レジスタ３５、ＣＰＵ(Central Processing Unit)３６、カウンタ３７を備える。
【０００４】
カウンタ３７は、高速発振回路３１により生成されたクロックを用いてカウントする。カウンタ３７のカウント値が所定の値に達すると、カウンタ３７の出力値が０から１に変わる。また、カウンタ３７のカウント値が最大値に達し、次のカウントで０に戻ると、カウンタ３７の出力値は１から０に変わる。カウンタ３７の出力値は制御レジスタ３５を介してセレクタ３４に入力される。そして、制御レジスタ３５の出力値に応じて、セレクタ３４から出力されるクロックが切り替えられる。セレクタ３４によって選択されたクロックはＣＰＵ３６に供給される。
【０００５】
図３に示したクロック切り替え回路の動作を示すタイミングチャートを図４に示す。高速発振回路３１により生成されたクロックＣ１と低速発振回路３２により生成されたクロックＣ２とのどちらか一方のクロックが、制御レジスタ３５の出力値ＳＣによって選択される。選択されたクロックは、セレクタ３４の出力信号ＳＣＫとして出力される。図４においては、ＳＣが１の場合、セレクタ３４はクロックＣ１を選択する。これに対して、ＳＣが０の場合、セレクタ３４はクロックＣ２を選択する。
【０００６】
また、図３に示したクロック切り替え回路は、リセットディレイ３３から出力されるリセット信号及び外部信号ＳＲにより、セレクタ３４に入力される選択信号ＳＣを強制的に０にすることもできる。図４では、ＲＥＳＥＴの値を１にすることにより、制御レジスタ３５がＳＣを０にしている。さらに、制御レジスタ３５は、カウント値が所定の値に達すると信号レベルが変化するオーバーフロー信号を出力し、当該オーバーフロー信号によりセレクタ３４に入力される選択信号ＳＣを強制的に１にすることもできる。
【０００７】
一方、特許文献２には、バタフライ演算器とメモリとを備え、ループ演算を行うフーリエ変換演算装置が開示されている（図５参照）。このような装置では、装置性能最適化のため、入出力期間と演算期間でクロック周波数が異なる場合がある。例えば、データ入出力期間においては、フーリエ変換演算装置は、外部のインタフェース規格で定められた周波数で動作する。これに対し、演算期間においては、フーリエ変換演算装置は、動作速度を最大にする周波数で動作する。
【０００８】
ここで、図５に示したループ演算を行うバタフライ演算器及びメモリを備える演算装置に、図３に示したクロック切り替え回路を適用することを考える。つまり、セレクタ３４が、入力される選択信号（０または１）に応じて、入出力期間または演算期間に対応するどちらかのクロックを選択する。
【０００９】
例えば、入出力期間には、選択信号としてセレクタ３４に０が入力され、演算期間には、セレクタ３４に１が入力される必要があるとする。具体的には、まず、選択信号としてセレクタ３４に０が入力され、セレクタ３４により低速発振回路３２の低速クロックが選択される。この期間にメモリにデータの入力が行われる。次に、選択信号としてセレクタ３４に１が入力され、セレクタ３４により高速発振回路３１の高速クロックが選択される。この期間にバタフライ演算器においてループ演算が行われる。さらに、選択信号としてセレクタ３４に０が入力され、セレクタ３４により再び低速クロックが選択される。この期間にループ演算結果のデータが出力される。この一連の動作が１周期となり、以後これを繰り返す。
【００１０】
上記の例におけるタイミングチャートを図６に示す。まず、選択信号として０が入力され、低速クロックＣ２によりメモリに入力データが入力される。次に、カウンタ３７のカウント値が所定の値になると、カウンタ３７はオーバーフロー信号を出力し、選択信号を０から１へと変更する。そして、高速クロックＣ１によりバタフライ演算が行われる。再び低速クロックＣ２に変更させるために、ループ演算期間の終了に合わせて、リセットディレイ３３は、リセット信号を出力する。これにより、低速クロックＣ２によりメモリから演算結果が出力される。新たなデータ入力する場合には、再びカウンタ３７のクロックカウント値を０にするため、リセットディレイ３３はリセット信号を出力する。つまり、オーバーフロー信号及びリセット信号を所定のタイミングで供給することにより、入出力期間及び演算期間に合わせてクロック切り替え動作が実現できる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−６７０８０号公報
【特許文献２】特開平９−２９７７５３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、入出力期間及び演算期間に合わせてクロック切り替え動作が実現するためには、上述したように、リセット信号を適切なタイミングで供給する必要がある。そのため、当該リセット信号を生成するためのカウンタ等の回路を、演算装置に別途追加する必要がある。その結果、回路規模が増大し、設計自由度が低下するという問題があった。
【課題を解決するための手段】
【００１３】
本発明にかかる半導体集積回路は、第１のクロックに基づいて、入力データの書き込み及び出力データの読み出しが行われるメモリと、前記メモリに格納されたデータの読み出し処理と、当該データに基づく演算処理と、当該メモリへの演算結果の書き込み処理とを含むループ処理を、第２クロックに基づいて繰り返す演算器と、前記演算器の前記ループ処理の回数をカウントするループカウンタと、前記第１及び第２のクロックが入力され、前記ループカウンタのカウント値に基づいて、前記第１及び第２のクロックのうち、いずれか一方のクロックを選択し、当該クロックを前記メモリ及び前記演算器に供給するクロックセレクタと、を備えるものである。これにより、クロックを切り替えるタイミングを計るカウンタ等を別途設けることなく、入出力期間と演算期間との間で、クロックの切り替えを実現できる。
【００１４】
本発明にかかるクロック切り替え方法は、第１のクロックに基づいて、入力データの書き込み及び出力データの読み出しが行われるメモリと、前記メモリに格納されたデータの読み出し処理と、当該データに基づく演算処理と、当該メモリへの演算結果の書き込み処理とを含むループ処理を、第２クロックに基づいて繰り返す演算器と、を備える半導体集積回路のクロック切り替え方法であって、前記演算器の前記ループ処理の回数をカウントし、前記ループ処理の回数に基づいて、前記第１及び第２のクロックのいずれか一方を選択し、選択したクロックを前記メモリ及び前記演算器に供給するものである。これにより、クロックを切り替えるタイミングを計るカウンタ等を別途設けることなく、入出力期間と演算期間との間で、クロックの切り替えを実現できる。
【発明の効果】
【００１５】
本発明により、回路規模を増大させることなく、クロックの切り替えを可能とする半導体集積回路及びクロック切り替え方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態にかかる半導体集積回路の構成例を示す図である。
【図２】実施の形態にかかる半導体集積回路の動作を示すタイミングチャートである。
【図３】関連するクロック切り替え回路の構成例を示す図である。
【図４】関連するクロック切り替え回路の動作を示すタイミングチャートである。
【図５】関連するループ演算装置の構成例を示す図である。
【図６】関連するループ演算装置の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかる半導体集積回路１の構成例を図１に示す。半導体集積回路１は、ループカウンタ１１、ワードカウンタ１２、クロックセレクタ１３、演算器１４、セレクタ１５、１７、ＲＡＭ（Random Access Memory）１６を備える。半導体集積回路１は、半導体集積回路１の入力端子に外部から入力された入力データＩＤＡＴＡを、演算器１４によって複数回のループ演算処理を行う。そして、複数回のループ演算処理の最終的な演算結果である出力データＯＤＡＴＡを半導体集積回路１の出力端子から外部に出力する。なお、図１において、破線で囲まれた回路は、クロックセレクタ１３から供給されるクロックＣＬＫによって動作する。
【００１８】
ループカウンタ１１は、演算器１４が行うループ演算のループ回数をカウントする。ループカウンタ１１は、ワードカウンタ１２、クロックセレクタ１３、セレクタ１５、１７と接続される。そして、ループカウンタ１１は、カウントしたカウント値に応じた制御信号を、クロックセレクタ１３及びセレクタ１５、１７に出力する。
【００１９】
ワードカウンタ１２は、ＲＡＭ１６に対して、書き込みデータ及び読み出しデータのアドレス（ワード線）を指定する。具体的には、ワードカウンタ１２は、クロックセレクタ１３から供給されるクロックＣＬＫに基づいてカウントを行う。そして、ワードカウンタ１２は、当該カウント値に対応するＲＡＭ１６のワード線を指定する。
【００２０】
また、ワードカウンタ１２のカウント値が最大値になった場合、ワードカウンタ１２は、ループカウンタ１１にイネーブル信号ＥＮを出力する。ループカウンタ１１にイネーブル信号が入力されると、ループカウンタ１１のカウント値が１つ増える。
【００２１】
クロックセレクタ１３には、第１のクロックＣＬＫ１及び第２のクロックＣＬＫ２が入力される。そして、クロックセレクタ１３は、ループカウンタ１１から入力された制御信号に基づいて、第１のクロックＣＬＫ１と第２のクロックＣＬＫ２のうち、いずれか一方を選択する。クロックセレクタ１３は、選択したクロックをワードカウンタ１２や演算器１４等の破線内の回路に供給する。
【００２２】
演算器１４は、ＲＡＭ１６に格納されたデータを読み出し、演算を行う。演算が終わると、演算器１４は、演算結果をＲＡＭ１６に書き込む。演算器１４は、複数のフリップフロップにより構成される（図示省略）。演算器１４は、クロックセレクタ１３が供給するクロックＣＬＫに基づいて、ＲＡＭ１６からデータを読み出す処理、読み出したデータを用いた演算処理、演算結果をＲＡＭ１６に書き込む処理の一連のループ処理を行う。
【００２３】
ここで、ループカウンタ１１及びクロックセレクタ１３の具体的な動作について説明する。ループカウンタ１１のカウント値が０の場合、または、当該カウント値が所定のループ処理回数（例えばｍ回）よりも大きい場合（例えばカウント値がｍ＋１の場合）、ループカウンタ１１は、制御信号として０を出力する。一方、ループカウンタ１１のカウント値が１以上、所定のループ処理回数以下の場合（例えばカウント値が１〜ｍの場合）、ループカウンタ１１は、制御信号として１を出力する。なお、所定のループ処理回数は、演算器１４の演算処理に応じて任意に設定可能である。
【００２４】
クロックセレクタ１３は、ループカウンタ１１から制御信号として０が出力された場合、第１のクロックＣＬＫ１を選択し、出力する。一方、ループカウンタ１１から制御信号として１が出力された場合、クロックセレクタ１３は、第２のクロックＣＬＫ２を選択し、出力する。
【００２５】
セレクタ１５は、演算器１４の出力端子及び半導体集積回路１の入力端子と接続される。つまり、セレクタ１５には、外部からの入力データＩＤＡＴＡ及び演算器１４の演算結果が入力される。セレクタ１５は、ループカウンタ１１から入力された制御信号に基づいて、半導体集積回路１の入力端子と演算器１４の出力端子のうち、いずれか一方を選択する。
【００２６】
セレクタ１７は、半導体集積回路１の出力端子及び演算器１４の入力端子と接続される。セレクタ１７には、ＲＡＭ１６に格納されたデータが入力される、セレクタ１７は、ループカウンタ１１から入力された制御信号に基づいて、演算器１４の入力端子と半導体集積回路１の出力端子うち、いずれか一方を選択する。
【００２７】
具体的には、セレクタ１５は、ループカウンタ１１から０が入力された場合、半導体集積回路１の入力端子を選択する。そのため、入力データＩＤＡＴＡがＲＡＭ１６に供給される。一方、セレクタ１５は、ループカウンタ１１から１が入力された場合、演算器１４の出力端子を選択する。そのため、演算結果がＲＡＭ１６に供給される。
【００２８】
これに対して、セレクタ１７は、ループカウンタ１１から０が入力された場合、半導体集積回路１の出力端子を選択する。そのため、ＲＡＭ１６に格納されたデータが外部に出力される。一方、セレクタ１７は、ループカウンタ１１から１が入力された場合、演算器１４の入力端子を選択する。そのため、ＲＡＭ１６に格納されたデータが演算器１４に入力される。
【００２９】
続いて、半導体集積回路１の動作例について説明する。図２は、半導体集積回路１の動作を示すタイミングチャートである。まず、ループカウンタ１１は制御信号として０を出力する。そのため、クロックセレクタ１３は、第１のクロックＣＬＫ１を選択する。そして、ＲＡＭ１６には、第１のクロックＣＬＫ１に基づいて、入力データＩＤＡＴＡが書き込まれる。
【００３０】
入力データＩＤＡＴＡの書き込みが終わると、ループカウンタ１１が制御信号として１を出力する。その制御信号に基づいて、クロックセレクタ１３は、第２のクロックＣＬＫ２を選択する。また、演算器１４は、第２のクロックＣＬＫ２に基づいて、ループ処理を繰り返す。そして、所定回数のループ処理が終了すると、ループカウンタ１１は、制御信号として再び０を出力する。その制御信号に基づいて、クロックセレクタ１３は、再び第１のクロックＣＬＫ１を選択する。そして、第１のクロックＣＬＫ１に基づいて、ＲＡＭ１６から出力データＯＤＡＴＡが読み出される。ＲＡＭ１６が格納する出力データＯＤＡＴＡが全て読み出されると、新たな入力データＩＤＡＴＡが第１のクロックＣＬＫ１に基づいて書き込まれる。
【００３１】
以下では、上記した半導体集積回路１の動作を詳細に説明する。なお、以下の説明では、演算器１４は、１回のループ処理において１０２４個のデータを演算するものとする。また、演算器１４のループ処理はｍ回行われるものとする。さらに、第１のクロックＣＬＫ１は、第２のクロックＣＬＫ２に比べて、低い周波数であるとする（例えば、第１のクロックＣＬＫ１が６０ＭＨｚ、第２のクロックＣＬＫ２が９０ＭＨｚ）。
【００３２】
まず、ループカウンタ１１、ワードカウンタ１２、クロックセレクタ１３に、初期化信号ＳＴＡＲＴとして０が入力される。初期化信号ＳＴＡＲＴにより、ループカウンタ１１のカウント値及びワードカウンタ１２のカウント値が０となる。また、クロックセレクタ１３は、制御信号として０が入力されることにより、第１のクロックＣＬＫ１を選択する。
【００３３】
次に、半導体集積回路１の入力端子から入力データＩＤＡＴＡが入力される。このとき、ループカウンタ１１のカウント値は０であるため、セレクタ１５は、半導体集積回路１の入力端子を選択する。そのため、入力データＩＤＡＴＡがセレクタ１５を介してＲＡＭ１６に供給される。このとき、入力データＩＤＡＴＡは、１個がｎｂｉｔであり、ＲＡＭ１６に１６個ずつ供給されるものとする。また、入力データＩＤＡＴＡは、全部で１０２４個、つまり（１０２４×ｎ）ｂｉｔのデータがあるものとする。すなわち、入力データＩＤＡＴＡは、６４回に分けてＲＡＭ１６に供給される。
【００３４】
ワードカウンタ１２は、ワードカウンタ１２のカウント値に基づいて、入力データＩＤＡＴＡを書き込むＲＡＭ１６のワード線を指定する。具体的には、ワードカウンタ１２は、第１のクロックＣＬＫ１に基づいてカウントし、当該カウント値に対応するワード線を指定する。なお、未だループカウンタ１１のカウント値は０であるため、制御信号として０が出力されている。したがって、クロックセレクタ１３は第１のクロックＣＬＫ１を選択している。
【００３５】
入力データＩＤＡＴＡの全てがＲＡＭ１６に格納されると、ワードカウンタ１２は、ＲＡＭ１６の全てのワード線を指定したことになる。そのため、ワードカウンタ１２のカウント値は最大値となる。したがって、ワードカウンタ１２は、ループカウンタ１１に対してイネーブル信号ＥＮを出力する。
【００３６】
ループカウンタ１１は、イネーブル信号ＥＮが入力されると、ループカウンタ１１のカウント値を１つ増やす。つまり、ループカウンタ１１のカウント値は０から１となる。それに伴って、ループカウンタ１１は、クロックセレクタ１３及びセレクタ１５、１７に対して、制御信号として１を出力する。
【００３７】
クロックセレクタ１３は、制御信号として１が入力されると、第２のクロックＣＬＫ２を選択し、出力する。また、セレクタ１７は、制御信号として１が入力されると、演算器１４の入力端子を選択する。そのため、ＲＡＭ１６に格納されたデータが演算器１４に入力される。具体的には、セレクタ１７から演算器１４への配線は１６本設けられており、各配線はデータをｎｂｉｔずつ演算器１４に供給する。つまり、ワードカウンタ１２は、１本のワード線を指定し、当該ワード線に格納された１６個のデータ（１個ｎｂｉｔ）を並列に１６本の配線に供給する。演算器１４には、一回のループ処理において、演算したデータの個数が合計１０２４個に達するまでＲＡＭ１６からデータが入力される。
【００３８】
演算器１４は、第２のクロックＣＬＫ２に基づいて、ＲＡＭ１６からデータ（１６個）を読み出す。また、演算器１４は、読み出したデータを用いて演算を行う。そして、演算器１４は、演算結果をＲＡＭ１６に出力する。このとき、セレクタ１５には、制御信号として１が入力されている。そのため、セレクタ１５は、演算器１４の出力端子を選択し、演算結果（１６個）をＲＡＭ１６に供給する。ワードカウンタ１２は、データ読み出しの際に指定したワード線を指定している。そのため、演算結果のデータ（１６個）は指定されたワード線に書き込まれる。このようにして、ワードカウンタ１２は、１６個のデータが格納されたワード線（全部で６４本）を順番に指定する。したがって、ＲＡＭ１６に格納されたデータ（合計１０２４個）全ての演算が行われる。すなわち、ループ処理が１回終わる。
【００３９】
例えば、１個のデータが８ｂｉｔ（ｎ＝８）である場合について考える。ＲＡＭ１６には、入力データＩＤＡＴＡが１６個ずつ入力される。つまり、合計１０２４×８ｂｉｔのデータが１２８（１６×８）ｂｉｔずつＲＡＭ１６に入力される。そのため、ワードカウンタ１２は、１０２４個のデータを全てＲＡＭ１６に格納するために、ワード線を指定する処理を６４回（１０２４個÷１６個）行う。これにより、ワードカウンタ１２のカウント値は最大値となり、ループカウンタ１１のカウント値が１増える。また、ワードカウンタ１２のカウント値は最大値の６３から０に戻る。
【００４０】
次に、ワードカウンタ１２は、０番目のワード線を指定する。これにより、１６個のデータが並列に選択される。演算器１４は、ワードカウンタ１２が指定したワード線に格納された１２８（１６×８）ｂｉｔのデータを読み出す。演算器１４は、第２のクロックＣＬＫ２に基づいて演算を行う。演算結果（１６個）は、ワードカウンタ１２が指定している０番目のワード線に書き込まれる。そして、ワードカウンタ１２のカウント値は０から１になる。これにより、ワードカウンタ１２は、１番目のワード線を指定する。ワードカウンタ１２は、このような動作を６３番目のワード線を指定するまで繰り返す。すなわち、ワードカウンタ１２のカウント値が最大値となるまで繰り返す。これにより、１０２４個のデータ全ての演算が行われ、ループ処理が１回終わる。
【００４１】
１回のループ処理が終了すると、ワードカウンタ１２のカウント値は最大値となる。ワードカウンタ１２のカウント値が最大値となると、ワードカウンタ１２は、イネーブル信号ＥＮをループカウンタ１１に対して出力する。そして、ワードカウンタ１２のカウント値は０に戻る。また、イネーブル信号ＥＮにより、ループカウンタ１１のカウント値は１増える。演算器１４は、以上のループ処理を第２のクロックＣＬＫ２に基づいてｍ回繰り返す。
【００４２】
演算器１４がｍ回のループ処理を完了すると、ループカウンタ１１のカウント値はｍ＋１となる。ループカウンタ１１は、カウント値がｍ以上となると、制御信号として０を出力する。当該制御信号は、クロックセレクタ１３、セレクタ１５、１７に供給される。クロックセレクタ１３は、制御信号として０が入力されると、第１のクロックＣＬＫ１を選択し、出力する。また、セレクタ１７は、制御信号として０が入力されると、半導体集積回路１の出力端子を選択する。したがって、半導体集積回路１の出力端子から、第１のクロックＣＬＫ１に基づいて、出力データＯＤＡＴＡが１６個ずつ外部に出力される。
【００４３】
このように、本実施の形態にかかる半導体集積回路によれば、ループカウンタ１１のカウント値に基づいて、クロックセレクタ１３が、第１及び第２のクロックのうち、いずれか一方を選択する。そのため、演算器１４のループ処理の開始前と終了後は入出力用のクロックを選択することができる。また、演算器１４のループ処理中の場合は、演算用のクロックを選択できる。したがって、ループ演算を行う回路に通常設けられているループカウンタ１１があれば、クロックの切り替えが可能となる。その結果、入出力期間と演算期間とを判別するための特別な回路を新たに設ける必要がない。つまり、回路規模を増大させることなく、クロック切り替えを実現できる。
【００４４】
また、ワードカウンタ１２が最大値となった場合に、ワードカウンタ１２は、ループカウンタ１１に対してイネーブル信号ＥＮを出力する。そして、ループカウンタ１１のカウント値は、当該イネーブル信号ＥＮにより１つ増える。そのため、入力データＩＤＡＴＡが、ＲＡＭ１６に全て格納されたことを判定できる。その結果、入出力期間からループ演算期間へ移行するタイミングを計ることができる。加えて、メモリにデータを書き込む場合には、通常ワードカウンタ１２も設けられているため、回路規模の増大も防止できる。
【００４５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、ループカウンタ１１が制御信号を０から１に切り替えるカウント値は１に限られない。ループカウンタ１１のカウント値が２以上の所定のカウント値となった場合に、制御信号を０から１に切り替えて、入出力期間から演算期間に移行してもよい。また、入力データの個数や演算器１４の演算可能なｂｉｔ数は上記の実施の形態の値に限られるものではない。
【符号の説明】
【００４６】
１  半導体集積回路
１１  ループカウンタ
１２  ワードカウンタ
１３  クロックセレクタ
１４  演算器
１５、１７  セレクタ
１６  ＲＡＭ
３１  高速発振回路
３２  低速発振回路
３３  リセットディレイ
３４  セレクタ
３５  制御レジスタ
３６  ＣＰＵ
３７  カウンタ
【図１】
2011253502.tif 000003
【図２】
2011253502.tif 000004
【図３】
2011253502.tif 000005
【図４】
2011253502.tif 000006
【図５】
2011253502.tif 000007
【図６】
2011253502.tif 000008