(57)【要約】      （修正有）【課題】フリップフロップを他の論理と兼用することができるメモリ制御方法、メモリ制御装置を提供する。【解決手段】メモリに対するデータの書き込みにおける書き込み位置を選択する場合、メモリの格納領域のうち、少なくとも１つ以上の格納領域を有する格納ブロックにおける格納領域のアドレスと、格納ブロックに対して冗長化され、少なくとも１つ以上の格納領域を有する複数の冗長化ブロックのいずれかにおける格納領域のアドレスとを書き込み位置として選択し、データの書き込みによりメモリに書き込まれたデータの読み出しにおける読み出し位置を選択する場合、格納ブロックにおける格納領域のアドレスと、複数の冗長化ブロックのアドレスのうち、書き込み位置の選択において選択されたアドレスとを前記読み出し位置として選択する。【選択図】図２
2010262496.tif 000002
【特許請求の範囲】
【請求項１】
複数の格納領域を有するメモリに対して、先入れ先出しによるアクセス制御を行うメモリ制御方法であって、
前記メモリに対するデータの書き込みにおける書き込み位置を選択する場合、前記メモリの格納領域のうち、少なくとも１つ以上の格納領域を有する格納ブロックにおける格納領域のアドレスと、前記格納ブロックに対して冗長化され、少なくとも１つ以上の格納領域を有する複数の冗長化ブロックのいずれかにおける格納領域のアドレスとを前記書き込み位置として選択し、
前記データの書き込みにより前記メモリに書き込まれたデータの読み出しにおける読み出し位置を選択する場合、前記格納ブロックにおける格納領域のアドレスと、前記複数の冗長化ブロックのアドレスのうち、前記書き込み位置の選択において選択されたアドレスとを前記読み出し位置として選択するメモリ制御方法。
【請求項２】
請求項１に記載のメモリ制御方法において、
前記書き込み位置として選択されるアドレスを含む冗長化ブロックは、前記データの書き込み毎に切り替えられることを特徴とするメモリ制御方法。
【請求項３】
請求項１または請求項２に記載のメモリ制御方法において、
前記複数の冗長化ブロックは、含まれる格納領域数が互いに同数であることを特徴とするメモリ制御方法。
【請求項４】
請求項１乃至請求項３のいずれかに記載のメモリ制御方法において、
前記複数の冗長化ブロックは、それぞれに含まれる格納領域のアドレスが連続するように配置されることを特徴とするメモリ制御方法。
【請求項５】
請求項４に記載のメモリ制御方法において、
前記複数の冗長化ブロックは、前記メモリの端部に配置されることを特徴とするメモリ制御方法。
【請求項６】
複数の格納領域を有するメモリに対して、先入れ先出しによるアクセス制御を行うメモリ制御装置であって、
前記メモリに対するデータの書き込みにおいて、前記メモリの格納領域のうち、少なくとも１つ以上の格納領域を有する格納ブロックにおける格納領域のアドレスと、前記格納ブロックに対して冗長化され、少なくとも１つ以上の格納領域を有する複数の冗長化ブロックのいずれかにおける格納領域のアドレスとを前記書き込み位置として選択する書き込み位置選択部と、
前記データの書き込みにより前記メモリに書き込まれたデータの読み出しにおいて、前記格納ブロックにおける格納領域のアドレスと、前記複数の冗長化ブロックのアドレスのうち、前記書き込み位置選択部により選択されたアドレスとを読み出し位置として選択する読み出し位置選択部と
を備えるメモリ制御装置。
【請求項７】
請求項６に記載のメモリ制御装置において、
前記書き込み位置として選択されるアドレスを含む冗長化ブロックは、前記データの書き込み毎に切り替えられることを特徴とするメモリ制御装置。
【請求項８】
請求項６または請求項７に記載のメモリ制御装置において、
前記複数の冗長化ブロックは、含まれる格納領域数が互いに同数であることを特徴とするメモリ制御装置。
【請求項９】
請求項６乃至請求項８のいずれかに記載のメモリ制御装置において、
前記複数の冗長化ブロックは、それぞれに含まれる格納領域のアドレスが連続するように配置されることを特徴とするメモリ制御装置。
【請求項１０】
請求項９に記載のメモリ制御装置において、
前記複数の冗長化ブロックは、前記メモリの端部に配置されることを特徴とするメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対するアクセス制御に関する。
【背景技術】
【０００２】
従来、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の制御方法として、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ，  Ｆｉｒｓｔ  Ｏｕｔ）が知られている。以下、ＲＡＭに対するＦＩＦＯによるアクセス制御について説明する。図８は、ＦＩＦＯによるアクセス制御の概要を示す。
【０００３】
図８に示すように、ＦＩＦＯによるアクセス制御によれば、まず、アドレス０〜９のＲＡＭに対して、最初のデータから１０番目のデータまでが順に書き込まれる。その後、書き込まれたデータが上書きされる前に、最初のデータから１０番目のデータまでが読み込まれる。その後、最初のデータから１０番目のデータまでが順に書き込まれる。
【０００４】
次に、ＦＩＦＯによるアクセス制御におけるアクセスタイミングについて説明する。図９は、従来のＲＡＭに対する制御タイミングを示す。なお、図９において、１つのアドレスに対する書き込みの間隔は２０ｃｌｏｃｋとする。また、読み出しにおいて、それぞれのアドレスに対する読み出しには１ｃｌｏｃｋ掛かり、データは連続で読み出されるものとする。
【０００５】
図９に示すように、ｗｒｉｔｅ  ｅｎａｂｌｅがＲＡＭに対して２０ｃｌｏｃｋ間隔で入力される度に、ｗｒｉｔｅ  ｐｏｉｎｔｅｒによりＲＡＭのアドレス０〜９までが順に示され、アドレス０〜９に１０データが書き込まれる。この動作において、１データの書き込みに２０ｃｌｏｃｋ掛かることから、アドレス０〜９へのデータの書き込みには２００ｃｌｏｃｋ掛かる。また、この書き込まれたデータの読み出しは、ＲＡＭの最後のアドレス９への書き込み後に局所的になされる。この動作において、１データの読み出しに１ｃｌｏｃｋ掛かることから、アドレス０〜９からのデータの読み出しには１０ｃｌｏｃｋ掛かる。なお、ｒｅａｄ  ｐｏｉｎｔｅｒは、読み出しの先頭のアドレスを示すため、ｒｅａｄ  ｅｎａｂｌｅがＲＡＭに入力されない場合は、常にアドレス０を示す。
【０００６】
しかしながら、上述したＦＩＦＯによるアクセス制御には、読み出し可能期間が短いという問題がある。ｗｒｉｔｅ  ｐｏｉｎｔｅｒは最後のアドレス９を示すと、その後最初のアドレス０を示し、データが上書きされる。そのため、データの読み出しは、最後のアドレス９への書き込み後から、最初のアドレス０への書き込み前までの間になされる必要がある。
【０００７】
この読み出し可能期間が短いという問題に対して、ＲＡＭのアドレスの一部を冗長ブロックとして用いるアクセス制御が知られている。図１０は、ＲＡＭのアドレスの一部を冗長ブロックとして用いるアクセス制御の概要を示す図である。なお、図１０において、アドレスは図８に示したＲＡＭに対して２つ増えているが、ＲＡＭに書き込まれるデータは１０個とする。また、図１１は、ＲＡＭのアドレスの一部を冗長ブロックとして用いるアクセス制御のタイミングを示す。
【０００８】
図１０に示すように、冗長ブロックを用いるアクセス制御によれば、まず、１２個あるアドレスのうち、アドレス０〜９に、１０個のデータが順に書き込まれる。その後、書き込まれた１０個のデータが読み込まれる。次に、アドレス１０、１１、０〜７に１０個のデータが順に書き込まれる。つまり、１０個目のデータが書き込まれたアドレスに続くアドレス２つ分のブロックが冗長化されたブロックとして常に確保される。このように読み書きされるデータに対して冗長化されたブロックが設定されることにより、１０個目のデータの書き込みから、次のデータの書き込みによる１個目のデータに対する上書きまでの期間を延ばすことができる。具体的には、図１１に示すように、上述したアクセス制御に比べ、冗長化されたアドレスの個数分だけ読み出し期間が延びる。
【０００９】
次に、冗長ブロックを用いるアクセス制御に係る構成について説明する。図１２は、アドレスの一部を冗長ブロックとして用いるＲＡＭに対する制御構成を示す。
【００１０】
図１２に示すように、ＲＡＭを制御するための構成として、ｗｒｉｔｅ  ｅｎａｂｌｅ生成部、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部、ｒｅａｄ  ｅｎａｂｌｅ生成部、ｒｅａｄ  ａｄｄｒｅｓｓ生成部が設けられている。また、ＲＡＭには上述したように０〜１１までの格納領域が設けられ、それぞれの格納領域は１０ｂｉｔの容量を持つ。また、ｗｒｉｔｅ  ｄａｔａを一時的に保持する１０ｂｉｔのフリップフロップ、ｒｅａｄ  ｄａｔａを一時的に保持する１０ｂｉｔのフリップフロップがＲＡＭ周辺に設けられている。
【００１１】
また、ｗｒｉｔｅ  ｅｎａｂｌｅ生成部は、ＲＡＭに対する１ｂｉｔのｗｒｉｔｅ  ｅｎａｂｌｅを生成する。このｗｒｉｔｅ  ｅｎａｂｌｅ生成部とＲＡＭとの間には、ｗｒｉｔｅ  ｅｎａｂｌｅを一時的に保持する１ｂｉｔのフリップフロップが設けられている。また、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部は、ＲＡＭに対するｗｒｉｔｅ  ｐｏｉｎｔｅｒとして、４ｂｉｔのｗｒｉｔｅ  ａｄｄｒｅｓｓを生成する。このｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部とＲＡＭとの間には、ｗｒｉｔｅ  ａｄｄｒｅｓｓを一時的に保持する４ｂｉｔのフリップフロップが設けられている。また、ｒｅａｄ  ｅｎａｂｌｅ生成部は、ＲＡＭに対する１ｂｉｔのｒｅａｄ  ｅｎａｂｌｅを生成する。このｒｅａｄ  ｅｎａｂｌｅ生成部とＲＡＭとの間には、ｒｅａｄ  ｅｎａｂｌｅを一時的の保持する１ｂｉｔのフリップフロップが設けられている。また、ｒｅａｄ  ａｄｄｒｅｓｓ生成部は、ＲＡＭに対するｒｅａｄ  ｐｏｉｎｔｅｒとして、４ｂｉｔのｒｅａｄ  ａｄｄｒｅｓｓを生成する。このｒｅａｄ  ａｄｄｒｅｓｓ生成部とＲＡＭとの間には、ｒｅａｄ  ａｄｄｒｅｓｓを一時的に保持する４ｂｉｔのフリップフロップが設けられている。
【００１２】
次に、ｒｅａｄ  ａｄｄｒｅｓｓ生成部の動作について説明する。図１３は、従来のｒｅａｄ  ａｄｄｒｅｓｓ生成部の動作を示す。
【００１３】
図１３に示すように、まず、ｒｅａｄ  ａｄｄｒｅｓｓ生成部は、ｒｅａｄ  ｅｎａｂｌｅ生成部により生成され、ＲＡＭに入力される前のｒｅａｄ  ｅｎａｂｌｅであるｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ９０１）。
【００１４】
ｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１である場合（Ｓ９０１，ＹＥＳ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部は、ｒｅａｄ  ａｄｄｒｅｓが１１であるかどうかを判断する（Ｓ９０２）。
【００１５】
ｒｅａｄ  ａｄｄｒｅｓが１１である場合（Ｓ９０２，ＹＥＳ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部は、フリップフロップに保持される前のｒｅａｄ  ａｄｄｒｅｓｓであるｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔに０を代入する（Ｓ９０３）。
【００１６】
一方、ｒｅａｄ  ａｄｄｒｅｓｓが１１ではない場合（Ｓ９０２，ＮＯ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部は、ｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔにｒｅａｄ  ａｄｄｒｅｓｓに１を加算した値を代入する（Ｓ９０４）。
【００１７】
このように、ＲＡＭのアドレスの一部が冗長ブロックとして用いられる従来の制御方法によれば、データの読み出し毎にｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔがカウントアップされる。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００２−２７８８３１号公報
【特許文献２】特開２００３−２８８２６８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
しかしながら、上述した冗長ブロックを用いるアクセス制御によれば、データの読み出し毎にｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔが変更されるため、ＲＡＭのアドレスと書き込まれるデータの順序に対応関係がない。そのため、ｒｅａｄ  ａｄｄｒｅｓｓを一時的に保持するフリップフロップは、常にｒｅａｄ  ａｄｄｒｅｓｓを保持しなければならず、他の動作における値を保持するフリップフロップとして兼用できないという問題が生じる。
【００２０】
本発明は上述した問題点を解決するためになされたものであり、フリップフロップを他の論理と兼用することができるメモリ制御方法、メモリ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決するため、メモリ制御方法は、複数の格納領域を有するメモリに対して、先入れ先出しによるアクセス制御を行う方法であって、前記メモリに対するデータの書き込みにおける書き込み位置を選択する場合、前記メモリの格納領域のうち、少なくとも１つ以上の格納領域を有する格納ブロックにおける格納領域のアドレスと、前記格納ブロックに対して冗長化され、少なくとも１つ以上の格納領域を有する複数の冗長化ブロックのいずれかにおける格納領域のアドレスとを前記書き込み位置として選択し、前記データの書き込みにより前記メモリに書き込まれたデータの読み出しにおける読み出し位置を選択する場合、前記格納ブロックにおける格納領域のアドレスと、前記複数の冗長化ブロックのアドレスのうち、前記書き込み位置の選択において選択されたアドレスとを前記読み出し位置として選択する。
【発明の効果】
【００２２】
フリップフロップを他の論理と兼用することができる。
【図面の簡単な説明】
【００２３】
【図１】本実施の形態に係る集積回路の構成を示す。
【図２】ＲＡＭの構成及びアクセス制御の概要を示す。
【図３】制御部の構成を示す。
【図４】ＲＡＭと制御部とに係る構成を示す。
【図５】ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部の動作を示す。
【図６】ｒｅａｄ  ａｄｄｒｅｓｓ生成部の動作を示す。
【図７】制御部によるＲＡＭの制御タイミングを示す。
【図８】ＦＩＦＯによるアクセス制御の概要を示す。
【図９】従来のＲＡＭに対する制御タイミングを示す。
【図１０】ＲＡＭのアドレスの一部を冗長ブロックとして用いるアクセス制御の概要を示す。
【図１１】ＲＡＭのアドレスの一部を冗長ブロックとして用いるアクセス制御のタイミングを示す。
【図１２】アドレスの一部を冗長ブロックとして用いるＲＡＭに対する制御構成を示す。
【図１３】従来のｒｅａｄ  ａｄｄｒｅｓｓ生成部の動作を示す。
【発明を実施するための形態】
【００２４】
以下、本発明に係る各実施の形態について図面を用いて説明する。
【００２５】
まず、本実施の形態に係る集積回路の構成について説明する。図１は、本実施の形態に係る集積回路の構成を示す。
【００２６】
図１に示すように、本実施の形態に係る集積回路１は、処理回路１１、ＲＡＭ１２（メモリ）、制御部１３（メモリ制御装置）を有する。処理回路１１は、ＲＡＭ１２を用いて所定の処理を実行する。ＲＡＭ１２は、処理回路１１による所定の処理に係るデータを一時的に記憶する。また、制御部１３は、ＲＡＭ１２に対して、先入れ先出しによるアクセス制御を行う。
【００２７】
次に、ＲＡＭの構成及びアクセス制御の概要について説明する。図２は、ＲＡＭの構成及びアクセス制御の概要を示す。
【００２８】
図２に示すように、ＲＡＭ１２は、アドレス０〜１１により示されるそれぞれ１０ｂｉｔの容量を持つ格納領域を有する。また、ＲＡＭ１２において、アドレス０及び１は冗長ブロック１、アドレス２及び３は冗長ブロック２、アドレス４〜１１は固定ブロックとして制御部１３に制御される。冗長ブロック１及び２は、１回の書き込み及び読み出しが終わる毎に交互に切り替えられるブロックであり、最初のデータ及び２番目のデータが書き込まれ、読み出されるブロックである。また、固定ブロックは３〜１０番目のデータが書き込まれるブロックである。
【００２９】
このようなＲＡＭ１２において、まず、冗長ブロック１に最初のデータ及び２番目のデータが書き込まれ、固定ブロックに３〜１０番目のデータが書き込まれる。書き込まれたデータが読み出されると、冗長ブロック１が冗長ブロック２に切り替えられ、冗長ブロック２に最初のデータ及び２番目のデータが書き込まれ、固定ブロックに３〜１０番目のデータが書き込まれる。なお、冗長ブロックは、２つの格納領域を有する必要はなく、少なくとも１つ以上、且つ互いに同数の格納領域を有するブロックであれば良い。また、冗長ブロックの数は複数であれば良く、ＲＡＭのアドレス上のいずれの位置に配置されても構わない。しかし、冗長ブロックは、ＲＡＭ１２のアドレスの先頭または後尾、つまりＲＡＭの端部に含まれるアドレスが連続するように配置されることが望ましい。
【００３０】
次に、制御部の構成について説明する。図３は、制御部の構成を示す。
【００３１】
図３に示すように、制御部１３は、ｗｒｉｔｅ  ｅｎａｂｌｅ生成部１３１、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２（書き込み位置選択部）、ｗｒｉｔｅ用切り替えｂｉｔ生成部１３３（書き込み位置選択部）、ｒｅａｄ  ｅｎａｂｌｅ生成部１３４、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５（読み出し位置選択部）、ｒｅａｄ用切り替えｂｉｔ生成部１３６（読み出し位置選択部）を有する。
【００３２】
ｗｒｉｔｅ  ｅｎａｂｌｅ生成部１３１は、ＲＡＭ１２に対する１ｂｉｔのｗｒｉｔｅ  ｅｎａｂｌｅを生成する。また、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ＲＡＭ１２に対するｗｒｉｔｅ  ｐｏｉｎｔｅｒとして、４ｂｉｔのｗｒｉｔｅ  ａｄｄｒｅｓｓを生成する。また、ｗｒｉｔｅ用切り替えｂｉｔ生成部１３３は、ＲＡＭ１２へのデータの書き込みにおいて、冗長ブロック１及び２を切り替えるためのｗｒｉｔｅ用切り替えｂｉｔを生成する。また、ｒｅａｄ  ｅｎａｂｌｅ生成部１３４は、ＲＡＭ１２に対する１ｂｉｔのｒｅａｄ  ｅｎａｂｌｅを生成する。また、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ＲＡＭに対するｒｅａｄ  ｐｏｉｎｔｅｒとして、４ｂｉｔのｒｅａｄ  ａｄｄｒｅｓｓを生成する。また、ｒｅａｄ用切り替えｂｉｔ生成部１３６は、ＲＡＭ１２からのデータの読み出しにおいて、冗長ブロック１及び２を切り替えるためのｗｒｉｔｅ用切り替えｂｉｔを生成する。なお、冗長ブロックは、データの書き込みにおいて、ｗｒｉｔｅ用切り替えｂｉｔが０の場合は冗長ブロック１、ｗｒｉｔｅ用切り替えｂｉｔが１の場合は冗長ブロック２に切り替えられるものとする。また、冗長ブロックは、データの読み出しにおいて、ｒｅａｄ用切り替えｂｉｔが０の場合は冗長ブロック１、ｒｅａｄ用切り替えｂｉｔが１の場合は冗長ブロック２に切り替えられるものとする。また、ｒｅａｄ用切り替えｂｉｔ生成部１３６は、データの読み出しにおいて、データの書き込みにおいて切り替えられた冗長ブロックとなるようにｒｅａｄ用切り替えｂｉｔを生成する。
【００３３】
次に、ＲＡＭと制御部とに係る構成について説明する。図４は、ＲＡＭと制御部とに係る構成を示す。
【００３４】
図４に示すように、ｗｒｉｔｅ  ｅｎａｂｌｅ生成部１３１とＲＡＭ１２との間には、ｗｒｉｔｅ  ｅｎａｂｌｅを一時的に保持する１ｂｉｔのフリップフロップ１３１ａが設けられている。また、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２とＲＡＭ１２との間には、ｗｒｉｔｅ  ａｄｄｒｅｓｓを一時的に保持する４ｂｉｔのフリップフロップ１３２ａが設けられている。また、       ｗｒｉｔｅ用切り替えｂｉｔ生成部１３３とＲＡＭ１２との間には、ｗｒｉｔｅ用切り替えｂｉｔを一時的に保持する１ｂｉｔのフリップフロップ１３３ａが設けられている。また、ｒｅａｄ  ｅｎａｂｌｅ生成部１３４とＲＡＭ１２との間には、ｒｅａｄ  ｅｎａｂｌｅを一時的の保持する１ｂｉｔのフリップフロップ１３４ａが設けられている。また、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５とＲＡＭ１２との間には、ｒｅａｄ  ａｄｄｒｅｓｓを一時的に保持する４ｂｉｔのフリップフロップ１３５ａが設けられている。また、ｒｅａｄ用切り替えｂｉｔ生成部１３６とｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５との間には、ｒｅａｄ用切り替えｂｉｔを一時的に保持するフリップフロップ１３６ａが設けられている。また、ＲＡＭ１２に書き込まれるｗｒｉｔｅ  ｄａｔａを一時的に保持する１０ｂｉｔのフリップフロップ１３７が、ＲＡＭ１２へのｗｒｉｔｅ  ｄａｔａの入力経路に設けられている。また、ＲＡＭ１２から読み出されるｒｅａｄ  ｄａｔａを一時的に保持する１０ｂｉｔのフリップフロップ１３８が、ＲＡＭ１２からのｒｅａｄ  ｄａｔａの出力経路に設けられている。
【００３５】
また、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５とフリップフロップ１３５ａとの間には、セレクタ１３９が設けられている。このセレクタ１３９は、ｒｅａｄ  ｅｎａｂｌｅ生成部１３４からのｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅを受けた場合、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５からの信号を選択し、そうでない場合は、処理回路１１からの信号を選択する。この処理回路１１からの信号は、４ｂｉｔのｄａｔａとする。また、フリップフロップ１３５ａからの信号は、ＲＡＭ１２と処理回路１１へ出力される。
【００３６】
次に、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部の動作について説明する。図５は、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部の動作を示す。
【００３７】
図５に示すように、まず、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、フリップフロップ１３１ａに入力される前のｗｒｉｔｅ  ｅｎａｂｌｅであるｐｒｅ  ｗｒｉｔｅ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ１０１）。
【００３８】
ｐｒｅ  ｗｒｉｔｅ  ｅｎａｂｌｅが１である場合（Ｓ１０１，ＹＥＳ）、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ｗｒｉｔｅ用切り替えｂｉｔが０であるかどうかを判断する（Ｓ１０２）。
【００３９】
ｗｒｉｔｅ用切り替えｂｉｔが０である場合（Ｓ１０２，ＹＥＳ）、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ＲＡＭ１２に書き込まれるデータの順序を示すｄａｔａ  ｎｕｍｂｅｒが２より小さいかどうかを判断する（Ｓ１０３）。なお、ｄａｔａ  ｎｕｍｂｅｒは、最初のデータを０として、０〜９により示される。
【００４０】
ｄａｔａ  ｎｕｍｂｅｒが２より小さい場合（Ｓ１０３，ＹＥＳ）、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、フリップフロップ１３２ａに入力される前のｗｒｉｔｅ  ａｄｄｒｅｓｓであるｗｒｉｔｅ  ａｄｄｒｅｓｓ  ｎｅｘｔにｄａｔａ  ｎｕｍｂｅｒを代入する（Ｓ１０４）。次に、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ｗｒｉｔｅ  ａｄｄｒｅｓｓ  ｎｅｘｔを出力し（Ｓ１０５）、再度、ｐｒｅ  ｗｒｉｔｅ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ１０１）。
【００４１】
一方、ｄａｔａ  ｎｕｍｂｅｒが２より小さくない場合（Ｓ１０３，ＮＯ）、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ｄａｔａ  ｎｕｍｂｅｒに２を加算した値をｗｒｉｔｅ  ａｄｄｒｅｓｓ  ｎｅｘｔに代入する（Ｓ１０６）。次に、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ｗｒｉｔｅ  ａｄｄｒｅｓｓ  ｎｅｘｔを出力し（Ｓ１０５）、再度、ｐｒｅ  ｗｒｉｔｅ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ１０１）。
【００４２】
また、ステップＳ１０２において、ｗｒｉｔｅ用切り替えｂｉｔが０ではない場合（Ｓ１０２，ＮＯ）、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、ｄａｔａ  ｎｕｍｂｅｒに２を加算した値をｗｒｉｔｅ  ａｄｄｒｅｓｓ  ｎｅｘｔに代入する（Ｓ１０６）。
【００４３】
また、ステップＳ１０１において、ｐｒｅ  ｗｒｉｔｅ  ｅｎａｂｌｅが１ではない場合（Ｓ１０１，ＮＯ）、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２は、再度、ｐｒｅ  ｗｒｉｔｅ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ１０１）。
【００４４】
次に、ｒｅａｄ  ａｄｄｒｅｓｓ生成部の動作について説明する。図６は、ｒｅａｄ  ａｄｄｒｅｓｓ生成部の動作を示す。
【００４５】
図６に示すように、まず、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、フリップフロップ１３４ａに入力される前のｒｅａｄ  ｅｎａｂｌｅであるｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ２０１）。
【００４６】
ｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１である場合（Ｓ２０１，ＹＥＳ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ｒｅａｄ用切り替えｂｉｔが０であるかどうかを判断する（Ｓ２０２）。
【００４７】
ｒｅａｄ用切り替えｂｉｔが０である場合（Ｓ２０２，ＹＥＳ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ＲＡＭ１２に書き込まれるデータの順序を示すｄａｔａ  ｎｕｍｂｅｒが２より小さいかどうかを判断する（Ｓ２０３）。
【００４８】
ｄａｔａ  ｎｕｍｂｅｒが２より小さい場合（Ｓ２０３，ＹＥＳ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、フリップフロップ１３５ａに入力される前のｒｅａｄ  ａｄｄｒｅｓｓであるｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔにｄａｔａ  ｎｕｍｂｅｒを代入する（Ｓ２０４）。次に、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔを出力し（Ｓ２０５）、再度、ｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ２０１）。
【００４９】
一方、ｄａｔａ  ｎｕｍｂｅｒが２より小さくない場合（Ｓ２０３，ＮＯ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ｄａｔａ  ｎｕｍｂｅｒに２を加算した値をｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔに代入する（Ｓ２０６）。次に、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔを出力し（Ｓ２０５）、再度、ｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ２０１）。
【００５０】
また、ステップＳ２０２において、ｒｅａｄ用切り替えｂｉｔが０ではない場合（Ｓ２０２，ＮＯ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ｄａｔａ  ｎｕｍｂｅｒに２を加算した値をｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔに代入する（Ｓ２０６）。
【００５１】
また、ステップＳ２０１において、ｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１ではない場合（Ｓ２０１，ＮＯ）、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、再度、ｐｒｅ  ｒｅａｄ  ｅｎａｂｌｅが１であるかどうかを判断する（Ｓ２０１）。
【００５２】
上述したように、固定ブロックに対して冗長化された複数のブロックを切り替えることによって、冗長化されたアドレスの個数分だけ読み出し期間を延ばすとともに、データのアクセス順序とＲＡＭのアドレスとを対応付けることができる。また、冗長ブロックがＲＡＭのアドレスにおける先頭または後尾に連続して配置されることによって、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２及びｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５における処理の段階を低減させることができる。つまり、ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部１３２及びｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５の回路としての規模を縮小することができる。
【００５３】
次に、本実施の形態におけるｒｅａｄ  ｐｏｉｎｔｅｒの保持期間について説明する。図７は、制御部によるＲＡＭの制御タイミングを示す。
【００５４】
上述したようにＲＡＭのアドレスとアクセス順序との対応関係により、ｒｅａｄ  ａｄｄｒｅｓｓ生成部１３５は、ｒｅａｄ用切り替えｂｉｔとｄａｔａ  ｎｕｍｂｅｒに基づいて、ｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔを決定することができる。つまり、ｒｅａｄ  ａｄｄｒｅｓｓに基づかずに、ｒｅａｄ  ａｄｄｒｅｓｓ  ｎｅｘｔを決定することができるため、フリップフロップ１３５ａが、ｒｅａｄ  ａｄｄｒｅｓｓを保持し続ける必要がない。フリップフロップ１３５ａは、図７に示すように、データの読み出し期間のみｒｅａｄ  ｐｏｉｎｔｅｒとしてのｒｅａｄ  ａｄｄｒｅｓｓを保持すれば良い。つまり、データの読み出し期間以外におけるフリップフロップ１３５ａを他の論理により再利用することが可能となる。
【００５５】
なお、図７に示すように、本実施の形態において、ｗｒｉｔｅ  ｅｎａｂｌｅは、ｗｒｉｔｅ  ｅｎａｂｌｅ生成部１３１により、１回のｗｒｉｔｅアクセスにおいて、２０ｃｌｏｃｋの間隔で１０回出力される。また、ｒｅａｄ  ｅｎａｂｌｅは、あるｗｒｉｔｅアクセスから、次のｗｒｉｔｅアクセスにおいてｗｒｉｔｅ  ｐｏｉｎｔｅｒが固定ブロックを示すまでの間にｒｅａｄ  ｅｎａｂｌｅ生成部１３４により生成される。また、ｒｅａｄ  ｅｎａｂｌｅは、１回のｒｅａｄアクセスにおいて、１ｃｌｏｃｋの間隔で１０回出力される。つまり、ｒｅａｄアクセスは、１回のｗｒｉｔｅアクセス以下の期間に局所的になされる。
【００５６】
また、集積回路において、フリップフロップは、比較的コストが高いため、フリップフロップ１３５ａを他の論理と兼用することは、コストの削減につながる。また、ＲＡＭのアドレス数が多くなる程、フリップフロップ１３５ａのｂｉｔ数も多くなり、他の論理との兼用によって回路規模がより縮小される。
【００５７】
また、例えばＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のような、上位設計によって、内部論理を変更可能な集積回路において、フリップフロップの数は予め定まっている。また、上位設計においては、ハードウェア記述言語に作成された論理が回路として最適化される。例えば、回路の最適化として、フリップフロップを用いるタイミングが互いに重ならない異なる論理に対して、自動的に同じフリップフロップが割り当てられる。このことから、本発明によれば、上位設計される集積回路において、限られたフリップフロップを効率よく利用することができる。
【符号の説明】
【００５８】
１  集積回路、１１  処理回路、１２  ＲＡＭ、１３  制御部、１３１  ｗｒｉｔｅ  ｅｎａｂｌｅ生成部、１３２  ｗｒｉｔｅ  ａｄｄｒｅｓｓ生成部、１３３  ｗｒｉｔｅ用切り替えｂｉｔ生成部、１３４  ｒｅａｄ  ｅｎａｂｌｅ生成部、１３５  ｒｅａｄ  ａｄｄｒｅｓｓ生成部、１３６  ｒｅａｄ用切り替えｂｉｔ生成部、１３７，１３８，１３１ａ〜１３６ａ  フリップフロップ。
【図１】
2010262496.tif 000003
【図２】
2010262496.tif 000004
【図３】
2010262496.tif 000005
【図４】
2010262496.tif 000006
【図５】
2010262496.tif 000007
【図６】
2010262496.tif 000008
【図７】
2010262496.tif 000009
【図８】
2010262496.tif 000010
【図９】
2010262496.tif 000011
【図１０】
2010262496.tif 000012
【図１１】
2010262496.tif 000013
【図１２】
2010262496.tif 000014
【図１３】
2010262496.tif 000015