(57)【要約】【課題】回路規模の増大を抑制しつつデータ容量を増加させることが可能なＦＩＦＯ回路を含む半導体装置を提供すること。【解決手段】データを記憶するシングルポート型の記憶部（１１）と、記憶部（１１）の書き込みデータ（ＦＩＦＯ  Ｉｎｐｕｔ）または読み出しデータ（ＦＩＦＯ  Ｏｕｔｐｕｔ）を一時的に格納するフリップフロップ１２と、記憶部１１における書き込み動作と読み出し動作との重複を回避するように、フリップフロップ１２に格納されたデータ信号の記憶部１１への書き込みタイミングまたは前記記憶部からの読み出しタイミングを制御する制御部（１４、４０）と、を含む。【選択図】図１
2020160632.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するシングルポート型の記憶部と、
前記記憶部の書き込みデータまたは読み出しデータを一時的に格納するフリップフロップと、
前記記憶部における書き込み動作と読み出し動作との重複を回避するように、前記フリップフロップに格納されたデータ信号の前記記憶部への書き込みタイミングまたは前記記憶部からの読み出しタイミングを制御する制御部と、
を含む半導体装置。
【請求項２】
前記制御部は、前記記憶部の書き込みおよび読み出しに際し、書き込み制御信号に基づいて書き込みアドレスを制御し、読み出し制御信号に基づいて読み出しアドレスを制御するアドレス制御部、および書き込みイネーブル信号および読み出しイネーブル信号に基づいて前記書き込みタイミングまたは前記読み出しタイミングを決定する信号を前記書き込み制御信号または前記読み出し制御信号として出力する生成部を備える
請求項１に記載の半導体装置。
【請求項３】
前記フリップフロップは、前記記憶部のデータ書き込み用ポートに接続されるとともに、データ入力に前記書き込みデータが入力され、クロック入力に前記書き込みイネーブル信号とクロック信号の論理積が入力される第１のＤ型フリップフロップを備え、
前記生成部は前記書き込みタイミングを決定する信号を前記書き込み制御信号として出力し、
前記アドレス制御部には前記読み出し制御信号として前記読み出しイネーブル信号が入力される
請求項２に記載の半導体装置。
【請求項４】
前記フリップフロップは、前記記憶部のデータ読み出し用ポートに接続されるとともに、データ入力に前記読み出しデータが入力され、クロック入力に前記読み出し制御信号とクロック信号の論理積が入力される第２のＤ型フリップフロップ、およびデータ入力に前記第２のＤ型フリップフロップの出力が入力されクロック入力に前記読み出しイネーブル信号と前記クロック信号の論理積が入力される第３のＤ型フリップフロップを備え、
前記生成部は前記読み出しタイミングを決定する信号を前記読み出し制御信号として出力し、
前記アドレス制御部には前記書き込み制御信号として前記書き込みイネーブル信号が入力される
請求項２に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、特にＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）回路を含む半導体装置に関する。
【背景技術】
【０００２】
ＦＩＦＯ回路に関連して、特許文献１には、入力レジスタ（ＲＥＧ１）１１０、デュアルポートＲＡＭ（Ｄｐｏｒｔ ＲＡＭ）１２０、第１の中間レジスタ（ＲＥＧ２）１３１、第２の中間レジスタ（ＲＥＧ３）１３２、出力レジスタ（ＲＥＧ４）１４０、選択回路（ＭＵＸ）１５０、ライトポインタ部（Wpointer）１６０、ライトレディ信号生成部（ＷＲＤＹ Gen）１７０、リードポインタ部（Rpointer）１８０およびリードレディ信号生成部（ＲＲＤＹ Gen）１９０を有するＦＩＦＯメモリ装置１００が開示されている。
【０００３】
特許文献１にみるように、従来、ＦＩＦＯ回路はデュアルポートＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用いるのが一般的である。また、小容量であればＤＦＦ（Ｄ型フリップフロップ）で構成する場合もある。図５は、デュアルポートＲＡＭを用いたＦＩＦＯ回路の要点を抜き出して示した従来技術に係るＦＩＦＯ回路５０を示すブロック図である。図５に示すように、ＦＩＦＯ回路５０は、デュアルポートＲＡＭ（図５では、「Ｄｕａｌ−Ｐｏｒｔ−ＲＡＭ」と表記）５１、書き込みポインタ（図５では、「Ｗｒｉｔｅ−Ｐｏｉｎｔｅｒ」と表記）５２、読み出しポインタ（図５では、「Ｒｅａｄ−Ｐｏｉｎｔｅｒ」と表記）５３を含んで構成されている。
【０００４】
ＦＩＦＯ回路５０において、ＦＩＦＯ入力データ（図５では、「ＦＩＦＯ  Ｉｎｐｕｔ」と表記）がデータ書き込み用ポート（図５では、「ｄａｔａ−ｉｎ（ｐｏｒｔ−１）」と表記）から入力され、ＦＩＦＯ出力データ（図５では、「ＦＩＦＯ  Ｏｕｔｐｕｔ」と表記）がデータ読み出し用ポート（図５では、「ｄａｔａ−ｏｕｔ（ｐｏｒｔ−２）」と表記）から出力される。書き込みイネーブル信号（図５では、「ｗｒｉｔｅ＿ｅｎａｂｌｅ」と表記）が書き込みポインタ５２、およびデュアルポートＲＡＭ５１の書き込みイネーブルポートｗｅに入力され、読み出しイネーブル信号（図５では、「ｒｅａｄ＿ｅｎａｂｌｅ」と表記）が読み出しポインタ５３、およびデュアルポートＲＡＭ５１の読み出しイネーブルポートｒｅに入力されている。書き込みポインタ５２は、書き込みイネーブル信号write_enableを受け書き込みアドレスをデュアルポートＲＡＭ５１のアドレスポート１（図５では、「ａｄｄｒｅｓｓｌ（ｐｏｒｔ−１）」と表記）に出力し、読み出しポインタ５３は、読み出しイネーブル信号read_enableを受け読み出しアドレスをデュアルポートＲＡＭ５１のアドレスポート２（図５では、「ａｄｄｒｅｓｓ２（ｐｏｒｔ−２）」と表記）に出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１６２１５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術において、ＤＦＦを用いた構成のＦＩＦＯ回路は大容量には適していない。一方、デュアルポートＲＡＭ５１を用いたＦＩＦＯ回路５０は、大容量向きではあるが、回路規模が大きくなりがちであるという欠点があり、また２つのポート（書き込みイネーブルポートｗｅ、読み出しイネーブルポートｒｅ）からのデュアルポートＲＡＭ５１への書き込み、読み出しのタイミングが被らないようにする（重複しないようにする）などの注意が必要な場合もある。
【０００７】
昨今のＦＩＦＯ回路を搭載した半導体装置の大規模化、大容量化に鑑みると、ＦＩＦＯ回路自体も回路規模の増大を抑制しつつデータ容量を増加させることが求められている。
一方、ＦＩＦＯ回路を用いた回路には様々な用途向けのものがあり、用途によっては、入力のタイミングと、出力のタイミングとの関係において必ずしも完全非同期を要求されない場合もある。つまり、書き込みタイミング、あるいは読み出しタイミングの一方に、ある程度の規則性がある用途を前提に、シングルポートＲＡＭでＦＩＦＯ回路が構成されれば、回路規模の増大を抑制しつつデータ容量を増加させることが可能になると考えられる。しかしながら、特許文献１も含めて従来このような検討はなされてこなかった。
【０００８】
本発明は、上述した課題を解決するためになされたものであり、回路規模の増大を抑制しつつデータ容量を増加させることが可能なＦＩＦＯ回路を含む半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る半導体装置は、データを記憶するシングルポート型の記憶部と、前記記憶部の書き込みデータまたは読み出しデータを一時的に格納するフリップフロップと、前記記憶部における書き込み動作と読み出し動作との重複を回避するように、前記フリップフロップに格納されたデータ信号の前記記憶部への書き込みタイミングまたは前記記憶部からの読み出しタイミングを制御する制御部と、を含むものである。
【発明の効果】
【００１０】
本発明によれば、回路規模の増大を抑制しつつデータ容量を増加させることが可能なＦＩＦＯ回路を含む半導体装置を提供することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る半導体装置の構成の一例を示すブロック図である。
【図２】第１の実施の形態に係る半導体装置の各部の動作を示すタイミングチャートである。
【図３】第２の実施の形態に係る半導体装置の構成の一例を示すブロック図である。
【図４】第２の実施の形態に係る半導体装置の各部の動作を示すタイミングチャートである。
【図５】従来技術に係るＦＩＦＯ回路を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、本発明を実施するための形態について詳細に説明する。以下の実施の形態では本発明に係る半導体装置としてＦＩＦＯ回路を例示して説明する。
【００１３】
［第１の実施の形態］
図１に示すように、本実施の形態に係る半導体装置１０は、シングルポートRAM（図１では、「Single-port-RAM(SRAM)」と表記）１１、DFF（図１では、「D-F/F」と表記）１２、AND回路１３、アドレス制御回路１４、および書き込みRAM信号生成部４０を含んで構成されている。また、書き込みRAM信号生成部４０は、AND回路１５、OR回路１６、DFF１７、およびAND回路１８を含んで構成されている。
【００１４】
図１において、FIFO入力データ（図１では、「FIFO Input」と表記）は、DFF１２のD入力に接続され、DFF１２のQ出力はシングルポートRAM１１のデータ書き込み用ポート（図１では、「data-in」と表記）に接続され、シングルポートRAM１１のデータ読み出し用ポート（図１では、「data-out」と表記）にFIFO出力データ（図１では、「FIFO Output」と表記）が接続される。
【００１５】
DFF１２のクロック入力には、書き込みイネーブル（図１では、「write_enable」と表記）信号とクロック（図１では、「clk」と表記）信号のAND回路１３による論理積が接続される。シングルポートRAM１１の書き込みイネーブルポート（図１では、「we」と表記）には書き込みRAM（図１では、「write_ram」と表記）信号が接続され、シングルポートRAM１１の読み出しイネーブルポート（図１では、「re」と表記）には読み出しイネーブル（図１では、「read_enable」と表記）信号が接続される。また、シングルポートRAM１１のアドレスポート（図１では、「address」と表記）にはアドレス制御回路１４（図１では、「Address-Pointer」と表記）が接続され、書き込みアドレスは書き込みRAM信号write_ramで制御され、読み出しアドレスは読み出しイネーブル信号read_enableで制御される。
【００１６】
一方、書き込みRAM信号生成部４０の構成は以下のようになっている。すなわち、書き込みRAM信号write ramはAND回路１８の出力に接続され、AND回路１８の一方の入力には読み出しイネーブル信号read enableの反転信号が接続され、他方の入力には、DFF１７のQ出力が接続される。書き込みRAM信号write ramはDFF１７の同期リセット（図１では、「sync reset」と表記）にも接続される。一方、AND回路１５の入力には読み出しイネーブル信号read enableとDFF１７のQ出力が接続され、AND回路１５の出力はOR回路１６の一方の入力に接続され、OR回路１６の他方の入力には書き込みイネーブル信号write_enableが接続され、OR回路１６の出力にはDFF１７のD入力が接続される。また、DFF１７のクロック入力にはクロック信号clkが接続される。そして、本実施の形態に係る半導体装置１０では、書き込みイネーブル信号write_enableの代わりに書き込みRAM信号write ramが書き込みイネーブルポートwe、およびアドレス制御回路１４に入力される。このことによって、シングルポートRAMを用いているにもかかわらず、半導体装置１０では、書き込みのタイミングと読み出しタイミングとが被ること（重複すること）が回避されている。
【００１７】
図２を参照して、半導体装置１０の動作について説明する。図２は、半導体装置１０の各部の波形を示すタイミングチャートであり、（ａ）はクロック信号clkの波形を、（ｂ）は読み出しイネーブル信号read_eanbleの波形を、（ｃ）は書き込みイネーブル信号write_enableの波形を、（ｄ）は書き込みRAM信号write_ramの波形を、（ｅ）はFIFO入力データFIFO Inputの波形を、（ｆ）はDFF１２の出力波形を、各々示している。
【００１８】
まず、読み出しイネーブル信号read_enableが"L"レベルの状態で、書き込みイネーブル信号write_enableに"H"パルスが入力されると、シングルポートRAM１１への書き込みデータであるFIFO入力データFIFO InputはDFF１２にラッチされ、次のクロック信号clkの立ち上がりで書き込みRAM信号write_ramが"H"パルスを出力し、DFF１２にラッチされたFIFO入力データがシングルポートRAM１１に書き込まれる（時刻ｔ１）。
【００１９】
次に、読み出しイネーブル信号read_enableが"H"レベルの状態で書き込みイネーブル信号write_enableに"H"レベルが入力された場合、シングルポートRAM１１への書き込みデータであるFIFO入力データFIFO Inputは一旦DFF１２にラッチされるが、シングルポートRAM１１は読み込み中なのでシングルポートRAM１１への書き込み動作は行なわない（時刻ｔ２）。そして、読み出しイネーブル信号read_enableが"L"レベルになると書き込みRAM信号write_ramが"H"パルスを出力し、DFF１２にラッチされていたFIFO入力データFIFO InputがシングルポートRAM１１に書き込まれる（時刻ｔ３）。半導体装置１０では、書き込みRAM信号生成部４０で生成された書き込みRAM信号write_ramの作用によって、以上の動作が制御されている。
【００２０】
以上のように、本実施の形態に係る半導体装置１０によれば、大容量かつ小面積のFIFO回路を実現することができる。なお、半導体装置１０の具体的な設計においては、FIFO回路からの読み出しサイクルに１クロック以上のインターバル（間隔）があるか、または、読み出しサイクルにインターバルがなくても２回以上連続で書き込みタイミングに重なることがない用途に用いるようにしてもよい。本実施の形態に係る半導体装置１０は、例えば、書き込み側がシリアルインタフェースで読み出し側がパラレルインタフェースのような、書き込み間隔が広く読み出し間隔が狭い場合に、特に好適に用いることができる。
【００２１】
［第２の実施の形態］
図３を参照して、本実施の形態に係る半導体装置１０Ａについて説明する。半導体装置１０Ａも、半導体装置１０と同様本発明に係る半導体装置をＦＩＦＯ回路に適用した形態であり、書き込みRAM信号を生成する代わりに、読み出しRAM信号を生成している点が主に異なる。従って、半導体装置１０と同様の構成には同じ符号を付して、詳細な説明を省略する場合がある。
【００２２】
図３に示すように、半導体装置１０Ａは、半導体装置１０と比較して、書き込みRAM信号生成部４０の代わりに読み出しRAM信号生成部４０Ａを備え、DFF１２、AND回路１３の代わりにDFF１９、２０、AND回路２１、２２を備えている。
【００２３】
FIFO入力データFIFO Inputは、シングルポートRAM１１のデータ書き込み用ポートdata-inに接続され、シングルポートRAM１１のデータ読み出し用ポートdata-outにはDFF１９のD入力が接続され、DFF１９のQ出力はDFF２０のD入力に接続され、DFF２０のQ出力は半導体装置１０の（すなわち、FIFO回路の）FIFO出力データFIFO Outputが接続される。DFF１９のクロック入力には、AND回路２１によるクロック信号clkと書き込みRAM信号read_ramとの論理積が接続され、DFF２０のクロック入力には、AND回路２２によるクロック信号clkと読み出しイネーブル信号read_enableとの論理積が接続される。
【００２４】
シングルポートRAM１１の書き込みイネーブルポートweには書き込みイネーブル信号write_enableが接続され、シングルポートRAM１１の読み出しイネーブルポートreには読み出しRAM信号read_ramが接続され、シングルポートRAM１１のアドレスポートaddressにはアドレス制御回路１４が接続される。つまり、半導体装置１０Ａの動作におけるアドレスは書き込みイネーブル信号write_enableと読み出しRAM信号read_ramで制御される。
【００２５】
読み出しRAM信号生成部４０Ａの構成は以下のようになっている。すなわち、読み出しRAM信号read_ramはAND回路１８の出力に接続され、AND回路１８の一方の入力には書き込みイネーブル信号write_enableの反転信号が接続され、他方の入力には、DFF１７のQ出力が接続される。読み出しRAM信号read_ramはDFF１７の同期リセットsync resetにも接続される。AND回路１５の入力には書き込みイネーブル信号write_enableとDFF１７のQ出力が接続され、AND回路１５の出力はOR回路１６の一方の入力に接続され、OR回路１６の他方の入力には読み出しイネーブル信号read_enableが接続され、OR回路１６の出力にはDFF１７のD入力が接続される。DFF１７のクロック入力にはクロック信号clkが接続される。
【００２６】
図４を参照して、半導体装置１０Ａの動作について説明する。図４は、半導体装置１０Ａの各部の波形を示すタイミングチャートであり、（ａ）はクロック信号clkの波形を、（ｂ）は読み出しイネーブル信号read_eanbleの波形を、（ｃ）は読み出しRAM信号read_ramの波形を、（ｄ）は書き込みイネーブル信号write_enableの波形を、（ｅ）はDFF１９の出力波形を、（ｆ）はFIFO出力データFIFO Outputの波形を、各々示している。
【００２７】
まず、書き込みイネーブル信号write_enableが"L"レベルの状態で、読み出しイネーブル信号read_enableに"H"パルスが入力されると、DFF１９に格納されていたデータがFIFO出力データFIFO OutputとしてDFF２０にラッチされる。次のクロック信号clkの立ち上がりで読み出しRAM信号read_ramが"H"パルスを出力し、シングルポートRAM１１に格納されていたデータがDFF１９にラッチされて次のFIFO出力データFIFO Outputが準備された状態になる（時刻ｔ１）。
【００２８】
次に書き込みイネーブル信号write_enableが"H"レベルの状態で読み出しイネーブル信号read_enableに"H"レベルが入力された場合、読み出しイネーブル信号read_enableに"H"パルスが入力されると、DFF１９に格納されていたデータがFIFO出力データFIFO OutputとしてDFF２０にラッチされるが、シングルポートRAM１１はデータの書き込み中なので、次のクロック信号clkの立ち上がりで読み出しRAM信号read_ramは"H"レベルにならず、シングルポートRAM１１からデータは読みだされず、DFF１９の値も更新されない（時刻ｔ２）。
【００２９】
次に、書き込みイネーブル信号write_enableが"L"レベルになると読み出しRAM信号read_ramが"H"パルスを出力し、シングルポートRAM１１から読みだしたデータをDFF１９にラッチして次のFIFO出力データを準備する（時刻ｔ３）。
【００３０】
以上のように、本実施の形態に係る半導体装置１０Ａによれば、大容量かつ小面積のFIFO回路を実現することができる。なお、半導体装置１０Ａの具体的な設計においては、FIFO回路からの書き込みサイクルに１クロック以上のインターバルがあるか、または、書き込みサイクルにインターバルがなくても２回以上連続で読み出しタイミングに重なることがない用途に用いるようにしてもよい。本実施の形態に係る半導体装置１０Ａは、例えば、読み出し側がシリアルインタフェースで書き込み側がパラレルインタフェースのような、読み出し間隔が広く書き込み間隔が狭い場合に、特に好適に用いることができる。
【００３１】
なお、上記第１の実施の形態では、データ書き込み用ポートdata-inに一つのDFF１２を接続する形態を例示して説明したが、二つ以上のDFFを接続してアクセスタイミングの自由度を広げてもよい。
【００３２】
また、上記第２の実施の形態では、データ読み出し用ポートdata-outに二つのDFF１９、２０を接続する形態を例示して説明したが、３つ以上のDFFを接続してアクセスタイミングの自由度を広げてもよい。
【００３３】
上記各実施の形態で示した回路構成はあくまで一例にすぎず、同様の機能を有する別の回路を適宜用いることができる。
【符号の説明】
【００３４】
１０、１０Ａ  半導体装置
１１    シングルポートＲＡＭ
１２    ＤＦＦ
１３    ＡＮＤ回路
１４    アドレス制御回路
１５    ＡＮＤ回路
１６    ＯＲ回路
１７    ＤＦＦ
１８    ＡＮＤ回路
１９、２０  ＤＦＦ
２１、２２  ＡＮＤ回路
４０    書き込みRAM信号生成部
４０Ａ  読み出しRAM信号生成部
５０    ＦＩＦＯ回路
５１    デュアルポートＲＡＭ
５２    書き込みポインタ
５３    読み出しポインタ
【図１】
2020160632.tif 000003
【図２】
2020160632.tif 000004
【図３】
2020160632.tif 000005
【図４】
2020160632.tif 000006
【図５】
2020160632.tif 000007