JP3926524B2 - Fifo記憶装置 - Google Patents
Fifo記憶装置 Download PDFInfo
- Publication number
- JP3926524B2 JP3926524B2 JP31511299A JP31511299A JP3926524B2 JP 3926524 B2 JP3926524 B2 JP 3926524B2 JP 31511299 A JP31511299 A JP 31511299A JP 31511299 A JP31511299 A JP 31511299A JP 3926524 B2 JP3926524 B2 JP 3926524B2
- Authority
- JP
- Japan
- Prior art keywords
- port memory
- data
- memory
- port
- read
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Communication Control (AREA)
Description
【発明の属する技術分野】
本発明はデータの記憶装置であって、特に、データの先入れ先出し(FIFO)機能を有するデータ記憶装置に関する。
【0002】
【従来の技術】
一般に、画像データや音声データを処理する情報処理機器において、装置または回路ブロック間でのデータ転送時の動作タイミングを調整するために、入力側動作と出力側動作が非同期に実現できるFIFO(First In First Out)型の記憶装置が使用されている。図18は一般的なFIFO型の記憶装置の構成を示した図である。図に示すように、FIFOメモリ2は、データの入力(書き込み)と出力(読み出し)とが同時に(すなわち、互いに非同期に)行なえるデュアルポートメモリ23を備えており、このデュアルポートメモリ23に対するデータの入力、出力動作はそれぞれの制御部24、26により非同期に制御される。
【0003】
【発明が解決しようとする課題】
しかし、一般にデュアルポートメモリは、シングルポートメモリに比べて回路規模が大きくまた高価であるため、FIFO型記憶装置の回路規模が大きくなり、製造コストも高くなる。このため、シングルポートメモリを用いたFIFO型記憶装置がある。
【0004】
シングルポートメモリを用いたFIFO型記憶装置の一つとして特開平8−137741号公報に開示された発明がある。この従来の発明では、シングルポートメモリを用いてFIFO型記憶装置を構成している。具体的には、外部から入力した書き込みパルス又は読み出しパルスより小さい幅の制御信号をそれぞれ生成し、それらの制御信号により、書きこみ/読み出し動作を制御するようにしている。しかし、この従来発明では、FIFO動作で連続したアクセスを行なうためには、入出力動作における速い方の動作周波数の更に2倍以上の周波数で動作可能なシングルポートメモリを用いる必要がある。そのために高価な高速メモリが必要になるか、または、アクセス速度の制限を低くしなければならないという問題がある。また、この従来発明では、速い動作周波数で動作させない場合であっても、バースト転送が不可能であるという問題を有している。
【0005】
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、回路規模を低く押さえかつ安価に構成できるFIFO型記憶装置を提供することにある。
【0006】
【課題を解決するための手段】
本発明に係るFIFO装置は、第1のクロックに同期して入力ポートを介して入力したデータを、その入力順に第2のクロックに同期して出力ポートを介して出力する記憶装置である。そのFIFO記憶装置は、一時にデータの書き込み又は読み出し動作のいずれかのみが可能なメモリ素子であって、入力したデータを出力のために保持するシングルポートメモリと、データの書き込み又は読み出し動作を非同期に実行可能なメモリ素子であって、シングルポートメモリ及び外部装置との間でデータを非同期に転送するデュアルポートメモリと、シングルポートメモリ及びデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備えた。
【0007】
上記のFIFO装置において、入力ポートがシングルポートメモリに接続され、出力ポートがデュアルポートメモリに接続されてもよい。このとき、制御手段は、入力ポートを介して入力したデータを第1のクロックに同期してシングルポートメモリに書きこみ、シングルポートメモリへ書き込みを行なわない期間においては、第1のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこむ。また、制御手段は、外部装置からデュアルポートメモリへ読み出し要求があったときに、第2のクロックに同期してデュアルポートメモリからデータを読み出して出力ポートを介して出力するように、両メモリを制御する。
【0008】
上記のFIFO装置において、シングルポートメモリの動作周波数は入力ポートに接続される外部装置の動作周波数に等しく、デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しくするようにしてもよい。
【0009】
また、上記制御手段は、デュアルポートメモリがエンプティであるか否かを示すエンプティ信号を出力してもよい。このとき、制御手段は、デュアルポートメモリにおいて、次にデータの読み出しを開始するアドレスが、次にデータの書き込みを開始するアドレスに、その差が所定値以内になるように追いついたときに、デュアルポートメモリがエンプティであると判定するようにしてもよい。さらに、制御手段は、デュアルポートメモリのエンプティを判定するための所定値を格納する格納手段を備えてもよく、その所定値は外部より変更可とする。
【0010】
また、上記のFIFO装置において、入力ポートがデュアルポートメモリに接続され、出力ポートがシングルポートメモリに接続されてもよい。このとき、制御手段は、入力ポートを介して入力したデータを第1のクロックに同期してデュアルポートメモリに書きこみ、一方、外部装置からシングルポートメモリへ読み出し要求があったときに、第2のクロックに同期してシングルポートメモリからデータを読み出して出力ポートを介して出力し、シングルポートメモリからデータの読み出しを行なわない期間において、第1のクロックに同期してデュアルポートメモリに蓄えられたデータを読み出してシングルポートメモリに書き込むように、両メモリを制御する。
【0011】
また、シングルポートメモリの動作周波数は、出力ポートに接続される外部装置の動作周波数に等しく、上記デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しくするようにしてもよい。
【0012】
制御手段は、デュアルポートメモリがフルであるか否かを示すフル信号を出力するようにしてもよい。このとき、制御手段は、デュアルポートメモリにおいて、次にデータの書き込みを開始するアドレスが、次にデータの読み出しを開始するアドレスに、その差が所定値以内になるように追いついたときに、デュアルポートメモリがフルであると判定するようにしてもよい。また、制御手段はデュアルポートメモリのフルを判定するための所定値を格納する格納手段を備えてもよく、その所定値は外部より変更できるようにする。
【0013】
FIFO装置において、入力ポート又は出力ポートに接続されるインタフェースは、例えば、IEEE1394インタフェースであってもよい。また、FIFO装置においては、デュアルポートメモリの記憶容量を、シングルポートメモリの記憶容量よりも小さく設定するのが好ましい。また、シングルポートメモリの記憶容量とデュアルポートメモリの記憶容量との合計が、入力ポートに接続されるインタフェースにより規定されるパケットの最大サイズ以上になるように設定するのが好ましい。
【0014】
【発明の実施の形態】
以下、添付の図面を参照し、本発明に係るFIFO型メモリの実施形態について詳細に説明する。
【0015】
なお、以下に説明するFIFO型メモリ(以下「FIFOメモリ」という。)は、転送データを格納する記憶手段としてシングルポートメモリを有し、さらに、FIFOメモリ全体としての非同期動作を実現するために、シングルポートメモリと、入力または出力ポートとの間のデータの非同期転送手段としてデュアルポートメモリを備える。したがって、シングルポートメモリの記憶容量は、FIFO型メモリ全体の記憶容量とほぼ同等の容量に設定し、デュアルポートメモリの記憶容量は、データの非同期転送に必要な最小限の容量に設定する。このように、シングルポートメモリとデュアルポートメモリを組み合わせ、かつ、デュアルポートメモリの容量を低く抑えることにより、回路規模、製造コストの増大を抑えたFIFO型メモリを実現できる。以下にその詳細を説明する。
【0016】
(第1の実施形態)
<FIFOメモリの構成>
図1に本実施形態におけるFIFOメモリの構成を示す。図1に示すように、FIFOメモリ1は入力ポートAと出力ポートBを有しており、さらに、一時に入力または出力動作のいずれかが可能なシングルポートメモリ(以下「1ポートメモリ」という。)11と、同時にデータの入出力が可能な非同期デュアルポートメモリ(以下「2ポートメモリ」という。)13と、FIFOメモリ1へ入力したデータの書き込みを制御する入力制御部14と、2ポートメモリ13からのデータの出力を制御する出力制御部16とを備える。1ポートメモリ11の容量値は、FIFOメモリ1全体で要求される容量とほぼ同等の値に設定し、2ポートメモリ13の値は、2ポートメモリの回路規模を低減するために非同期転送において必要とされる最小限の容量値、したがって、1ポートメモリ11の容量より大幅に少ない値に設定するのが好ましい。
【0017】
図1に示すFIFOメモリ1は、IEEE1394のリンク層とそれ以上の層との間のインターフェースにおいて使用され、IEEE1394インタフェース側(以下「リンク側」という。)から、他のインタフェース側(以下「DMA側」という)へデータを転送する際に使用可能なメモリである。図1に示すFIFOメモリは、このようにリンク側からのデータを受信するため受信型と呼ぶ。このため、図1の構成では、入力ポートA側に1ポートメモリ11を、出力ポートB側に2ポートメモリ13を配置している。
【0018】
図2は、図1に示すFIFOメモリ1のさらに具体的な構成を示した図であり、FIFOメモリ1に対する各種制御信号及びデータ等を詳細に示している。
【0019】
図2において、1ポートメモリ11は33ビット×1024ワードのクロック同期式のシングルポートRAMで構成される。但し、この1ポートRAM11はデータの入力/出力のためのデータバスをそれぞれ別々に有している。2ポートメモリ13は、33ビット×32ワードの非同期2ポートを持ったレジスタファイルで構成されている。また、図1に示す入力制御部14は、図2においてはリンク側とFIFOメモリ間のデータをインターフェースする回路部であるLコントローラ15により構成される。また、図1に示す出力制御部17は、図2においてはDMA側とFIFOメモリ1間のデータをインターフェースする回路ブロックであるDコントローラ17により構成される。さらに、FIFOメモリ1はレジスタ19を有しており、その値は外部から読み出し、書き込みが可能である。
【0020】
<FIFOメモリの制御信号、データバス>
図2に示すFIFOメモリに対する制御信号及びデータは以下のとおりである。なお、信号名の最後に付加される「B」の表記は、その信号がアクティブ・ローで動作することを意味する。また、説明の便宜上、信号名又はデータ名と、それを搬送する信号線名又はデータバス名は同じものを使用する。
LCLK:リンク側の制御クロック。
LWRB:リンク側からFIFOメモリ1へのデータの書き込み要求信号。
LEOP:書きこむパケットデータが最終のデータであることを示す信号。
LDT[31:0]:FIFOメモリ1への書き込みデータ。32ビット幅を持つ。
FFUL:FIFOメモリ1の書き込みのための空き容量がなく、データの書き込みができない状態、すなわち、フル(FULL)になったことを示す信号。したがって、FFULが“HIGH”の期間にリンク側はFIFOメモリへ新しいデータを書き込んではいけない。
DCLK:DMA側の制御クロック。
FRREQB:DMA側からのFIFOメモリ1へのデータ読み出し要求信号。
FRACKB:FIFOメモリ1からDMA側への読み出し要求に対するアクノリッジ信号。
FRWAIT:DMA側がデータ読み出し要求を出力している期間において、データの読み出しをストップさせたい期間を制御するための読み出し停止信号。
FREOP:パケットの最終データであることを示すパケット終了信号(以下「EOP信号」という)。
FRDT[31:0]:FIFOメモリ1から読み出されたデータ。32ビット幅を有する。
FCK:1ポートメモリ11を制御するためのクロック。
FAD[9:0]:1ポートメモリ11のアドレス。
FIDT[32:0]:1ポートメモリ11への入力データ。32ビット目(FIDT[32])には、そのデータがパケットの最終データであることを示すビット(EOP)を含む。
FWEB:1ポートメモリ11に対するデータの書き込み要求信号。
FODT[32:0]:1ポートメモリ11からの出力データ。32ビット目(FODT[32])には、そのデータがパケットの最終データであることを示すビット(EOP)を含む。
RWDT[32:0]:2ポートメモリ13へ入力される1ポートメモリ11からの出力データ(FODT[32:0])。
RWAD[4:0]:2ポートメモリ13にデータを書き込む際の書き込みアドレス。
RWRB:2ポートメモリ13への書き込み要求信号。
RRAD[4:0]:2ポートメモリ13からデータを読み出す際の読み出しアドレス。バイナリコードで表現されている。
RRDT[32:0]:2ポートメモリ13から読み出したデータ。32ビット目には、EOPを示すビットを含む。
RRAG[4:0]:読み出しアドレスRRAD[4:0]のグレイコード値。Dコントローラ17からLコントローラ15に入力される。
RSTB:DMA側から読み出し要求があった時に、クロックDCLKに同期して1クロックの期間のみ「LOW」になるスタート信号。
REMP:2ポートメモリ13に蓄えられたデータが、ある規則のもとで、メモリにて読み出されるデータがない状態すなわちエンプティ(EMPTY)であることを示す信号。
【0021】
<FIFOメモリの動作の概要>
以上のように構成されるFIFOメモリ1は、一方のインタフェース(IEEE1394)側からのデータ入力と、他方のインタフェース(DMA)側へ出力とを非同期に行うことを可能とする。つまり、IEEE1394側から入力ポートAを介して入力されたデータは1ポートメモリ11に書き込まれ、蓄えられる。この1ポートメモリ11へのデータ書き込みが行なわれていない間、1ポートメモリに蓄えられたデータが順次読み出され、2ポートメモリ13に書き込まれる。2ポートメモリ13に書き込まれたデータは、DMA側からの読み出し要求にしたがい読み出され、出力ポートBを介して出力される。このとき、2ポートメモリ13は非同期動作が可能なため、1ポートメモリ11からのデータを書き込み動作中においてもデータの読み出しは可能である。かかる各メモリ11、13の動作はLコントローラ15、Dコントローラ17により以下のように制御される。
【0022】
すなわち、Lコントローラ15は、IEEE1394側からデータ書き込み要求があれば、1ポートメモリ11へデータを書き込み、1ポートメモリ11へのデータを書き込みを行なわない期間において、1ポートメモリ11から2ポートメモリへデータを転送するよう制御する。このとき、Lコントローラ15は、1ポートメモリ11及び2ポートメモリ13のフル状態/エンプティ状態を確認しながら、書き込み/読み出し動作を制御する。すなわち、メモリ11、13がフルであれば書き込み動作を行なわず、エンプティであれば読み出し動作を行なわないように制御する。このように、Lコントローラ15はIEEE1394側からの書き込み要求を優先して行なうようにメモリ11、13を制御する。これによりIEEE1394側からのバースト転送を可能にする。一方、Dコントローラ17は、DMA側からの読み出し要求にしたがい、2ポートメモリ13からデータを読み出し、出力するようにメモリ13を制御する。このとき、Dコントローラ17は、Lコントローラ15からのエンプティ信号REMPに基き2ポートメモリ13のエンプティを判断しながら2ポートメモリ13の読み出し動作を制御する。
【0023】
以下、これらの動作を行うLコントローラ15、Dコントローラ17について詳細に説明する。
【0024】
<Dコントローラの構成・動作>
図3は、Dコントローラ17の詳細な構成を示した図である。Dコントローラ17は、制御部31と、グレイコードで計数するグレイコードカウンタ33と、グレイコードをバイナリコードに変換するグレイ−バイナリ変換器(G/B変換器)35とを備える。さらに、Dコントローラ17は、信号RSTBを生成するためのDフリップフロップ37とORゲート38とを備える。グレイコードカウンタ33はクロックDCLKに同期してカウントアップしていくことにより読み出しアドレスを生成する。また、グレイコードカウンタ33は制御部31からのイネーブル信号によりその停止/作動が制御される。このように、グレイコードカウンタを用いるのは、Lコントローラ15においてアドレスの変化点においてアドレスが参照された場合であってもアドレスの誤差を最小に抑制するためである。
【0025】
Dコントローラ17の動作を説明する。
FIFOメモリ1に対してDMA側からの読み出し要求があると、読み出し要求信号FRREQBが立下り、この立下りによりDフリップフロップ37とORゲート38により、DCLKクロックで1パルス期間だけ“LOW”となるスタート信号RSTBが生成される。このRSTB信号は制御部31に入力され、制御部31では読み出し要求信号FRREQB、読み出し停止信号FRWAIT、読み出しデータRRDT[32:0]及びエンプティ信号REMPに基いて、読み出しデータFRDT[31:0]、アクノリッジ信号FRACKB、パケット終了信号FREOP及びカウントアップイネーブル信号が生成される。ここで、カウントアップイネーブル信号とは、グレイ−バイナリ変換器33のカウントアップ動作の作動/停止を制御する信号である。また、前述のようにデータFRDT[31:0]とデータRRDT[31:0]とは同じものである。パケット終了信号FREOPの値は、データRRDTの最後のビット(33番目のビット)の値(RRDT[32])である。また、アドレスRRAG[4:0]はグレイ−バイナリカウンタ35の出力であり、信号RSTBによりリセットされる。そして、アドレスRRAD[4:0]は、グレイコードで表されるRRAG[4:0]の値をグレイ−バイナリカウンタ35でバイナリコードに変換した値である。
【0026】
<Lコントローラの構成・動作>
図4に、Lコントローラ15の構成図を示す。Lコントローラ15は、制御部41と、グレイコードをバイナリコードに変換するグレイ−バイナリ変換器(G/B変換器)43と、バイナリカウンタ45と、Dフリップフロップ47b〜47dと、ORゲート49とを備える。Dフリップフロップ47b〜47dとORゲート49とは、スタート信号LSTBを生成する。
【0027】
Lコントローラ15の動作を説明する。
Lコントローラ15において、Dコントローラ17から入力されるアドレスRRAG[4:0]は、クロック信号LCLKに同期してフリップフロップ47aでラッチされた後、グレイ−バイナリ変換器43でグレイコードからバイナリコードに変換され、アドレスLRAD[4:0]として制御部41に入力される。同様に、Dコントローラ17から入力されるスタート信号RSTBをクロックLCLKで同期化した信号LSTBも制御部41に入力される。また、書き込み要求信号LWRB、パケット終了信号LEOP、データ信号LDT[31:0]、データ信号FODT[32]及びアドレス信号RWAD[4:0]も制御部41に入力され、制御部41はバイナリカウンタ45のカウントアップ動作の作動/停止を制御するイネーブル信号、フル信号FFUL、クロックFCK、アドレス信号FAD[9:0]、データ信号FIDT[32:0]、書き込み要求信号FWEB、エンプティ信号REMP及び書き込み要求信号RWRBを出力する。ここで、データ信号FIDT[32:0]は、データ信号LDT[31:0]のデータに、信号LEOPのデータを付加したものである。また、アドレス信号RWADはバイナリカウンタ45の出力であり、信号LSTBによりリセットされる。
【0028】
<2ポートメモリのエンプティ状態の判断>
Lコントローラ15の制御部41は、2ポートメモリ13のエンプティ状態を示すエンプティ信号REMPを出力する。エンプティ状態であるか否かの判断は次のように行なう。すなわち、Lコントローラ15の制御部41は、2ポートメモリ13において、次にデータの読み出しを開始するアドレスである読み出し開始アドレスと、次にデータの書き込みを開始するアドレスである書き込み開始アドレスとを比較し、書き込みアドレスが読み出しアドレスよりも大きく、かつ、それらのアドレスの差が所定値より小さくなったときに、すなわち、読み出しアドレスが書き込みアドレスに所定値以内に追いついてきたときに、エンプティであると判断する。
【0029】
このように、読み出し開始アドレスと書き込み開始アドレスとの差分を用いてエンプティ状態を判断するようにしたのは、2ポートメモリ13においては、読み出し動作と書き込み動作とが非同期に行なわれることから、エンプティ状態の判断動作中に読み出しアドレスが進行してしまうことがあり、エンプティ状態でないと判断されたにもかかわらず、実際の読み出し時にはエンプティ状態となってしまうことがある。そこで、エンプティ状態の判断動作中のアドレスの進行を考慮し、読み出しアドレスが書き込みアドレスに所定量以上近づいたときにエンプティであると判断するようにしている。
【0030】
具体的には、本実施形態では、以下のような式で生成されるwREMP信号をまず求め、その後、この信号wREMPをクロックLCLKで同期化してエンプティ信号REMPを得る。なお、次式はRTL言語にしたがっている。
ここで、「RRAD」は2ポートメモリ13に対する読み出し開始アドレスであり、「RWAD」は2ポートメモリ13に対する書き込み開始アドレスである。
【0031】
また、「REVAL」はエンプティ状態の判断基準となる3ビットの可変値(REVAL[2:0])であり、レジスタ19に格納されている。この値は外部より変更できる。また、上式において、書き込み開始アドレス(RWAD)と読み出し開始アドレス(RRAD)とを最初に比較して場合分けを行なっているが、これは、書き込みアドレス(RWAD)が2ポートメモリのメモリ空間の最大アドレスを超えて先頭のアドレスに戻り、読み出し開始アドレス(RRAD)が書き込み開始アドレス(RWAD)よりも大きくなる場合があるので、このような場合でも、それらのアドレス間の差分を正しく求め、信号wREMPを矛盾なく求められるようにする意図からである。
【0032】
<2ポートメモリのフル状態の判断>
また、Lコントローラ15の制御部41は、2ポートメモリ13のフル状態を示す信号RFUL(図示せず)を出力する。フル状態であるか否かの判断は、2ポートメモリ13における読み出し側開始アドレスが書き込み側開始アドレスよりも大きく且つそれらの差が所定値よりも小さいときに、すなわち、読み出し側開始アドレスに書き込み側開始アドレスが所定値以内に追いついてきたときに、フル状態であると判断する。より具体的には、フル信号RFULは以下の式で生成される。
【0033】
<1ポートメモリのフル状態、エンプティ状態の判断>
Lコントローラ15の制御部41は、1ポートメモリ11において次にデータの書き込みを開始するアドレスである書き込み側開始アドレス“WRSA[9:0]”と、次にデータの読み出しを開始するアドレスである読み出し側開始アドレス“RDSA[9:0]”とを管理している(図5参照)。これらのアドレスは、1ポートメモリ11にデータを書き込んだとき、また、データを読み出したときにそれぞれインクリメントされるようになっている。制御部41は、これらの書き込み側開始アドレス(WRSA)と読み出し側開始アドレス(RDSA)を比較して、1ポートメモリ11がフル状態であることを示す信号FFULと、1ポートメモリ11がエンプティ状態であることを示す信号FEMP(図示せず)とを制御する。
【0034】
<1ポートメモリにおけるデータ格納状態>
図5は1ポートメモリ11内にどのようにデータが蓄えられるかを示した図である。図5に示すようにIEEE1394で規定されたさまざまな種類のパケットデータが1ポートメモリ11に格納される。ところで、IEEE1394のデータは“クワドレット”という32ビットデータで処理され、パケットの終わりにはパケットの切れ目を示す1ビットのEOP(End of Packet)コードが必要であるため、図5に示すように1ポートメモリ11のデータ幅は33(=32+1)ビットとなる。また、2ポートメモリ13も同様の理由により33ビット幅である。
【0035】
<タイミングチャートによる動作説明>
次に、前述のように構成されるFIFOメモリの具体的な動作を図6から図9のタイミングチャートを用いて説明する。なお、以下の具体例では、エンプティ状態を規定する所定値REVALの値は「2」としている。
【0036】
a.格納データがあるときに読み出し要求があった場合のタイミングチャート
図6は、1ポートメモリ11において、ある程度データが蓄えられている場合に、FIFOメモリ1に対して、DMA側からデータのリード要求が来たときのタイミングチャートである。
【0037】
図6に示すように、DMA側の制御クロックDCLKと、リンク側の制御クロックLCLKとは非同期である。すなわち、図6において、アドレス信号RRADから上の信号がクロックDCLKに同期し、アドレス信号LRAGから下の信号がクロックLCLKに同期している。
【0038】
まず、DMA側のタイミングTD2で、DMA側からリード要求があると、信号FRREQBが“LOW”に変化する。それにより、Dコントローラ17内のフリップフロップ37とORゲート38により、信号RSTBはタイミングTD2でクロックDCLKの1クロック期間の間、“LOW”に制御される。それにともない、Dコントローラ17内の全ての制御信号及びカウンタ等が初期化される。そのため、2ポートメモリ13のリードアドレスの元になるグレイコード値を示す値RRAGが“0”になり、また、それに伴い2ポートメモリ13の読み出しアドレスRRADが“0”になる。
【0039】
一方、リンク側のタイミングTL2では、信号RSTBをクロックLCLKに同期させた信号LSTBを生成する。信号LSTBは、クロックLCLKの1クロックの間“LOW”に制御され、Lコントローラ15内の全ての制御信号及びカウンタ等が初期化される。そこで、2ポートメモリ13の書き込みアドレスRWADが“0”になる。そして、既に1ポートメモリ11内には、ある程度データが蓄えられているため、リンク側からFIFOメモリ1への書き込み要求信号LWRBの“LOW”期間でないタイミングTL3〜TL7、TL9、TL11及びTL13において、1ポートメモリの読み出しアドレスRDSA“RS0”からアドレス“RS1”、“RS2”…へデータが順に読み出されれて2ポートメモリ13に順次書き込まれる。
【0040】
タイミングTL2からTL5までの間、2ポートメモリ13への書き込みアドレスRWADと、読み出しアドレスLRADとの差は、REVAL値(「2」)よりも小さいため、タイミングTL3からTL6までの間、信号REMPは「HIGH」に制御される。信号REMPは「HIGH」に制御されたときは、エンプティ状態であると判断し、2ポートメモリ13からの読み出しは行なわれない。
【0041】
その後、データの書き込みにしたがい、2ポートメモリ13への書き込みアドレスRWADがカウントアップされ、タイミングTL6で、アドレスRWADと、読み出しアドレスLRADとの差(3=3−0)が、REVAL値「2」より大きくなる。すると、タイミングTL7で信号REMPが「LOW」に制御される。そのため、Dコントローラ17は、エンプティ状態ではなく、読み出しデータが存在すると判断し、タイミングTD8から信号FRACKBを“LOW”にすると同時に、順次2ポートメモリ13の読み出しアドレスの元になるグレイコードカウンタ値(RRAG)をカウントアップし、それに伴って読み出しアドレスRRADがインクリメントされていく。
【0042】
その後、タイミングTL12で、2ポートメモリ13への書き込みアドレスRWAD「7」と、2ポートメモリ13からの読み出しアドレスLRAD「5」の差が2となり、REVAL値「2」以下になるため、タイミングTL13から信号REMPが「HIGH」に制御される。そのため、タイミングTD15で、アクノリッジ信号FRACKBは“HIGH”になり、2ポートメモリ13の読み出し動作は停止する。
【0043】
また、図6においては、タイミングTL2で、リンク側の制御により書き込み信号LWRBが「LOW」に制御され、これにより、データバスLDTにパケットAの最終データ(「PAE」)が出力され、リンク側からFIFOメモリ1へデータが書き込まれる。その後、タイミングTL8、TL10及びTL12で次のパケットBがFIFOメモリ1に書き込まれる。その際、1ポートメモリ11の書き込みアドレスWRSAは「WS0」から順次インクリメントされる。
【0044】
b.格納データがないときに読み出し要求があった場合のタイミングチャート
図7は、1ポートメモリ11内にデータがまったく無い状態でFIFOメモリに対して、リンク側からデータの読み出し要求があった場合のタイミングチャートである。
【0045】
図7において、DMA側のタイミングTD1以前からFIFOデータのリード要求があるため、タイミングTD1の時点から既に、読み出し要求信号FRREQBは“LOW”である。そして、既にアドレス信号RRAG、RRAD、LRAG、LRAD及びRWADは全て初期化されて“0”である。そこで、リンク側のタイミングTL2でリンク側からFIFOメモリ1に新しいパケットを書き込み始め、タイミングTL4、TL6、TL8、TL10及びTL12とデータが1ポートメモリ11に書き込まれる。
【0046】
そして、1ポートメモリ11にデータが書き込まれるため、タイミングTL3でFEMP信号は“LOW”になりエンプティ状態でなくなったと判断される。そのため、タイミングTL3では1ポートメモリ11からデータが読み出されて2ポートメモリ13に書き込まれる(図中、「FODT」、「RWDT」の値参照)。そのため、タイミングTL4で、再び信号FEMPが「HIGH」になる。タイミングTL4及びTL5、タイミングTL6及びTL7、タイミングTL8及びTL9、タイミングTL10及びTL11、タイミングTL12及びTL13と同様に1ポートメモリ11に一つデータが書き込まれ、そして次のタイミングで1ポートメモリ11から2ポートメモリ13にデータが転送されるという動作が繰り返される。
【0047】
そして、タイミングTL8からRWADとLRADとの差がREVAL値「2」より大きくなるため(例えば、タイミングTL8では3(=3−0))、タイミングTL9から信号REMPが“LOW”になる。それに伴い、DMA側のタイミングTD10でFRACKBが“LOW”になり、タイミングTD10〜TD13においてDMA側にRGFのデータが出力される。そして、タイミングTL11からRWADとLRADの差がREVAL値“2”以下になるため(例えば、タイミングTL11では2(=4−2))、タイミングTL12から信号REMPが「HIGH」になる。そのため、タイミングTD14からアクノリッジ信号FRACKBが「HIGH」にされ、2ポートメモリ13からのデータの読み出しは停止される。
【0048】
c.読み出しの中止要求があった場合、または、デュアルポートへの書き込みの停止要求があった場合のタイミングチャート
図8は、FIFOメモリ1からデータを読み出し中にDMA側から読み出しの中止要求によりデータの読み出しが止められる場合、及び、2ポートメモリ13内のデータがフル状態に近づいて1ポートメモリ11から2ポートメモリ13へのデータの書き込みがストップされるときのタイミングチャートである。DMA側からの読み出しの中止要求は、読みこみ中止信号FWAITにより行なわれる。
【0049】
タイミングTL2、TL4、TL6、TL8、TL10及びTL12と順次パケットデータが1ポートメモリ11へ書き込まれる。また、タイミングTD3〜TD6の期間、読みこみ中止信号FWAITが「HIGH」にされる。そのため、FIFOメモリからのデータ読み出しはストップされ、アドレス信号であるRRAG及びRRADは変化しない。そして、タイミングTD7及びTD8で再びFIFOメモリ1からデータが読み出され、また、タイミングTD9〜TD11でFIFOメモリ1からのデータ読み出しがストップされる。そして、タイミングTD12から再びFIFOメモリ1でデータが読み出される。その時、タイミングTL6及びTL7で、読み出しアドレスLRADと書き込みアドレスRWADの差が1以下になるため、フル信号RFULが「HIGH」になる。それにより、タイミングTL7での2ポートメモリ13への書き込みが禁止される。
【0050】
d.パケットの読み出し終了時のタイミングチャート
図9は、FIFOメモリ1からのデータの読み出しにおいて、一パケットの読み出しが終了する場合の動作のタイミングチャートである。なお、図9においては、タイミングTL9において1ポートメモリ11から読み出されるパケットデータR9が一連のデータの最後のデータであるとする。
【0051】
図9において、タイミングTD2〜TD4の期間、DMA側から読み出し待機信号FRWAITが「HIGH」にされており、これにより、FIFOメモリ1からの読み出しがストップする。そして、タイミングTL3で、書き込みアドレスRWADと、読み出しアドレスLRADとの差がREVAL値「2」以下になるため、タイミングTL4ではエンプティ信号REMPが「HIGH」になる。そのためタイミングTD4では、アクノリッジ信号FRACKBが「HIGH」になるが、既に停止信号FRWAITによってFIFOに対するデータ読み出しをストップされているため、動作としては影響がない。
【0052】
そして、タイミングTL7からアドレスRWADとLRADの差がREVAL値「2」以下になるため、タイミングTL8からエンプティ信号REMPが「HIGH」になる。これにより1ポートメモリ11からの読み出しは停止する。ここで、タイミングTL9において、1ポートメモリ11からの読み出されるパケットデータRWDTの33ビット目(RWDT[32])すなわちEOPを参照し、それが最後のパケットであると判断する。それにより、それ以後の読み出すべきパケットのデータはないことが分かる。
【0053】
そこで、FIFOメモリ1からの読み出しをストップする制御信号の元となるエンプティ信号REMPは、タイミングTL10から強制的に「LOW」に制御される。これにより、タイミングTD9からアクノリッジ信号FRACKBが「HIGH」になりFIFOメモリ1の読み出しがストップしていたのが、タイミングTD11から再びアクノリッジ信号FRACKBが「LOW」に制御され、FIFOメモリ1からのデータ読み出しが再開される。そして、タイミングTD12においてFIFOメモリ1から読み出されたデータはパケットの最終データであることを示すEOP信号FREOPが「HIGH」であるため、タイミングTD13からアクノリッジ信号FRACKBは「HIGH」に制御される。また、DMA側は、EOP信号FREOPを参照してタイミングTD12でパケットの最終データを読み出したことを認識し、読み出し要求信号FRREQBを、タイミングTD13から「HIGH」に制御する。このようにして一つのパケットの読み出しが終了する。
【0054】
また、図6〜図9のタイミングチャートにおいて、フル状態(フル信号FFULが「HIGH」)が発生した場合、つまり、1ポートメモリ11内に全て有効なデータが蓄えられたときは、FIFOメモリ1全体がフル状態であるということでリンク側はフル信号FFULが「LOW」になるまではデータの書き込みを行わないように書き込み信号LWRBを制御する。
【0055】
(第2の実施形態)
<FIFOメモリの構成>
本実施形態のFIFOメモリは、第1の実施形態のものと同様にIEEE1394のリンク層とそれ以上の層との間のインターフェースに使用できるものである。その回路構成を図10に示す。
【0056】
図10に示すように、本実施形態のFIFOメモリ1’は、第1の実施形態におけるFIFOメモリ1と同様に、1ポートメモリ11と、2ポートメモリ13と、入力制御部14’と、出力制御部16’とからなる。第1の実施形態のFIFOメモリ1では、1ポートメモリ11を入力側に、2ポートメモリ13を出力側に配置していたが、本実施形態のFIFOメモリ1’は1ポートメモリ11を出力側に、2ポートメモリ13を入力側に配置した構成としている。
【0057】
図11は、図1に示すFIFOメモリ1’のさらに詳細な構成を示した図である。FIFOメモリ1’は、DMA側からリンク側へ転送するデータを蓄えるFIFO型メモリである。このようにリンク側へデータを送信するため、このFIFOメモリ1’を送信型と呼ぶ。
【0058】
図11において、1ポートメモリ11、2ポートメモリ13は第1の実施の形態の場合と同様である。入力制御部14’(図10参照)は、DMA側とFIFOメモリ間のデータをインターフェースする回路部であるDコントローラ17’により構成され、出力制御部16’は、リンク側とFIFOメモリ1’間のデータをインターフェースする回路ブロックであるLコントローラ15’により構成される。さらに、FIFOメモリ1’は、外部から読み出し/書き込み可能な値を格納するレジスタ19’を有している。
【0059】
<FIFOメモリ(送信型)の制御信号、データ>
以下に、本実施形態のFIFOメモリ1’に対する制御信号、データを説明する。なお、信号名の最後に付加される「B」の表記は、その信号がアクティブ・ローで動作することを意味する。また、説明の便宜上、信号名又はデータ名と、それを搬送する信号線名又はデータバス名は同じものを使用する。
【0060】
LCLK:リンク側の制御クロック。
FRDB:リンク側からFIFOメモリ1’へのデータの読み出し要求信号。
FEOP:読み出されるデータがパケットデータの最終データかどうかを示す信号。
FDT[31:0]:FIFOメモリ1’からの32ビット幅の読み出しデータ。
FEMP:FIFOメモリ1’がエンプティかどうかを示す信号。したがってFEMPが「LOW」の期間にリンク側はFIFOメモリ1’から新しいデータの読み出しができる。
DCLK:DMA側の制御クロック。
FWREQB:DMA側からのFIFOメモリ1’へのデータ書き込み要求信号。
FWACKB:書き込み要求に対するアクノリッジ信号。
FWDTVL:DMA側が書き込みを行うとしているデータが有効なデータであるかどうかを検証した結果を示す信号。
FWEOP:パケットの最終データであることを示す制御信号。
FWDT[31:0]:FIFOメモリ1’の32ビット幅の書き込みデータ。
FCK:1ポートメモリ11を制御するクロック。
FAD[8:0]:1ポートメモリ11のアドレス。
FWEB:1ポートメモリ11に対する書き込み要求信号。
FODT[32:0]:1ポートメモリ11から読み出されたデータ。32ビット目(FODT[32])には、そのデータがパケットの最終データであることを示すビット(EOP)を含む。
FIDT[32:0]:1ポートメモリ11へ書きこまれるデータ。32ビット目(FIDT[32])には、そのデータがパケットの最終データであることを示すビット(EOP)を含む。
RRDT[32:0]:2ポートメモリ13から読み出されたデータであり、FIDT[32:0]と同じ。
RRAD[4:0]:2ポートメモリ13からデータを読み出す際の読み出しアドレス。
RWRB:Dコントローラからの2ポートメモリ13への書き込み要求信号。
RWAD[4:0]:2ポートメモリ13の書き込みアドレス。バイナリコードで表現されている。
RWDT[32:0]:2ポートメモリ13への書き込みデータ。
RWAG[4:0]:アドレスRWAD[4:0]のグレイコード値であり、Dコントローラ17’からLコントローラ15’に入力される。
RSTB:DMA側からの読み出し要求があった時に、クロックDCLKの1周期分のみ「LOW」になるスタート信号。
RFUL:2ポートメモリ13に蓄えられたデータが、ある規則のもとでフル状態であることを示す信号。
【0061】
<FIFOメモリの動作の概要>
以上のように構成されるFIFOメモリ1’は、一方のインタフェース(DMA)側からのデータ入力と、他方のインタフェース(IEEE1394)側へ出力とを非同期に行うことを可能とする。つまり、DMA側から入力ポートAを介して入力されたデータは2ポートメモリ11に書き込まれ、蓄えられる。この2ポートメモリ11へ蓄えられたデータは、1ポートメモリ13からデータが読み出されていない期間において、1ポートメモリ13に書き込まれる。一方、1ポートメモリ11においては、IEEE1394側からの読み出し要求にしたがい、蓄えられているデータが順次読み出され、出力ポートBを介して出力される。これらの各メモリ11、13の動作はLコントローラ15’、Dコントローラ17’により以下のように制御される。
【0062】
すなわち、Lコントローラ15’は、IEEE1394側からデータ読み出し要求があれば、1ポートメモリ11からデータを読み出し、1ポートメモリ11からデータを読み出さない期間において、2ポートメモリ13から1ポートメモリへデータを転送するように制御する。このとき、Lコントローラ15’は、1ポートメモリ11及び2ポートメモリ13のフル状態/エンプティ状態を確認しながら、書き込み/読み出し動作を制御する。Lコントローラ15はIEEE1394側からの読み出し要求を優先して行なうようにメモリ11、13を制御する。一方、Dコントローラ17’は、DMA側からの書き込み要求にしたがい、2ポートメモリ13へデータを書き込むようにメモリ13を制御する。このとき、Dコントローラ17’は、Lコントローラ15’からのフル信号RFULに基き2ポートメモリ13のフルを判断しながら2ポートメモリ13への書き込み動作を制御する。
【0063】
以下、これらの動作を行うLコントローラ15’、Dコントローラ17’について詳細に説明する。
【0064】
<Dコントローラの構成・動作>
図12にDコントローラ17’の構成を示す。Dコントローラ17’は、第1の実施形態の場合と同様に、制御部31と、グレイコードで計数するグレイコードカウンタ33と、グレイコードをバイナリコードに変換するグレイ−バイナリ変換器(G/B変換器)35とを備える。さらに、Dコントローラ17は、RSTB信号を生成するためのDフリップフロップ37とORゲート38とを備える。グレイコードカウンタ33はクロックDCLKに同期して2ポートメモリ13に対する書き込みアドレスを生成する。
【0065】
このように構成されるDコントローラ17’において、DMA側からの書き込み要求があった時(信号FWREQBの立ち下がり時)に、フリップフロップ37及びORゲート38により、クロックDCLKの1パルス分“LOW”期間となるスタート信号RSTBが生成される。この信号RSTBは制御部31に入力される。制御部31は、書き込み要求信号FWREQB、書き込みデータ検証信号FWDTVL、書き込みデータFWDT[31:0]、パケット終了信号FWEOP及びフル信号RFUL信号から、書き込みデータRWDT[32:0]、書き込みアクノリッジ信号FWACKB、書き込み要求信号RWRB及びカウントアップイネーブル信号を生成する。カウントアップイネーブル信号は、グレイコードカウンタ33のカウントアップ動作の停止/作動を制御する制御信号である。ここで、2ポートメモリへ13の書き込みデータRWDT[32:0]は、DAM側からの入力データFWDT[31:0]に、パケット終了信号FWEOPの値を付加したものである。RWAG[4:0]はグレイコードカウンタ33の出力であり、信号RSTBでリセットされる。アドレスRWAD[4:0]は、グレイコードで表現されるRWAG[4:0]の値をバイナリコードに変換した値である。
【0066】
<Lコントローラの構成>
図13に、Lコントローラ15’の回路構成を示す。Lコントローラ15’は、第1の実施の形態の場合と同様に、制御部41と、グレイ−バイナリ変換器(G/B変換器)43と、バイナリカウンタ45と、Dフリップフロップ47b〜47dと、ORゲート49とを備える。
【0067】
このように構成されるLコントローラ15’において、Dコントローラ17’から入力されるアドレスRWAG[4:0]は、クロックLCLKに同期してフリップフロップ47aでラッチされた後、グレイ−バイナリ変換器43でバイナリコードに変換され、アドレスLWAD[4:0]となり、制御部41に入力される。同様に、Dコントローラ17’から入力されるスタート信号RSTBをクロックLCLKで同期化した信号LSTBも制御部41に入力される。また、読み出し要求信号FRDB、読み出しデータ信号FODT[32:0]及びアドレス信号RRAD[4:0]も、制御部41に入力される。制御部41は、バイナリカウンタ45のカウント動作を制御するカウントアップイネーブル信号、データ信号FDT[31:0]、パケット終了信号FEOP、エンプティ信号FEMP、クロックFCK、アドレス信号FAD[8:0]、書き込み要求信号FWEB及びフル信号RFULを出力する。ただし、データ信号FDT[31:0]はデータ信号FODT[31:0]と等しく、パケット終了信号FEOPの値はFODT[32]と等しい。また、アドレス信号RRADの値はバイナリカウンタ45においてクロックLCLKに同期して得られる出力であり、信号LSTBでリセットされる。
【0068】
<2ポートメモリのフル状態の判断>
Lコントローラ15’の制御部41は、2ポートメモリ13のフル状態を示すフル信号RFULを生成する。具体的には、フル信号RFULを、第1の実施形の場合と同様にして、所定の基準値「RFVAL[2:0]」を用いて以下のような式で生成される信号wRFULを求め、その信号wRFULをクロックLCLKで同期化して生成する。
ここで、RRADは2ポートメモリ13における読み出し開始アドレスであり、RWADは書き込み開始アドレスである。基準値RFVALの値はレジスタ19’に格納され、レジスタ19’の値は外部より変更可能である。
【0069】
<2ポートメモリのエンプティ状態の判断>
また、Lコントローラ15’の制御部41は、その内部で使用する制御信号として、2ポートメモリ13に蓄えられたデータがエンプティであるか否かを示す信号REMP(図示せず)を管理している。2ポートメモリ13がエンプティか否かの判断は次にように行なう。すなわち、2ポートメモリ13に対する読み出し開始アドレスと書き込み開始アドレスとが等しくなったときにエンプティであると判断し、信号REMPを「HIGH」にする。具体的には、信号RMEPは、読み出し開始アドレスRRADと書き込み開始アドレスRWADとから以下の式で生成される。
REMP = (RRAD == RWAD);
なお、本実施形態の例では、読み出し開始アドレス(RRAD)と書き込み開始アドレス(RWAD)とが等しいときに単純に2ポートメモリ13がエンプティであると判断している。
【0070】
<1ポートメモリのフル状態、エンプティ状態の判断>
また、Lコントローラ15’の制御部41は、1ポートメモリ11の書き込み側のアドレス「WRSA[8:0]」、読み出し側のアドレス「RDSA[8:0]」をそれぞれ管理しており、1ポートメモリ11にデータを書きこんだ時、データを読み出した時にそれぞれのアドレスをインクリメントする。これらのアドレスに基き、制御部41は1ポートメモリ11がエンプティであることを示す信号FEMPと、1ポートメモリ11がフルであることを示す信号FFUL(図示せず)を制御する。
【0071】
<1ポートメモリにおけるデータ格納状態>
図14は、本実施形態において1ポートメモリ11内にどのようにデータが蓄えられるかを示した図である。図14に示すように、1ポートメモリ11は、IEEE1394で規定されたAsynchronousのパケットデータを格納することができる。また、第1の実施の形態の場合と同様、本実施形態における1ポートメモリ11、2ポートメモリ13のデータ幅は33ビットである。
【0072】
<タイミングチャートによる動作説明>
前述のFIFOメモリ1’のいくつかの動作におけるタイミングチャートを図15、図16及び図17に示す。なお、これらのタイミングチャートでは、2ポートメモリ13のフル状態の判断基準値RFVALは「2」としている。
【0073】
a.書き込み要求による書き込み後、すぐに読み出される場合のタイミングチャート
図15は、DMA側からFIFOデータへの書き込み要求があり、新しいパケットデータが蓄えられ、その後、そのデータがすぐにリンク側から読み出される場合のタイミングチャートである。
【0074】
図15に示すように、DMA側の制御クロックDCLKとリンク側の制御クロックLCLKは非同期である。まず、DMA側のタイミングTD3で書き込み要求信号FWREQBが「LOW」に変化して書き込み要求が発生する。そのタイミングTD3において、スタート信号RSTBがクロックDCLKの1クロック分“LOW”になる。そのスタート信号RSTBにより、Dコントローラ17’内の全ての制御信号及びカウンタ等が初期化される。その初期化により、2ポートメモリ13の書き込みアドレスの元になるグレイコード値のRWAGが「0」になり、また、それに伴い2ポートメモリ13の書き込みアドレスRWADが「0」になる。
【0075】
また、リンク側クロックLCLKのタイミングTL3では、スタート信号RSTBをクロックLCLKに同期させた信号LSTBにおいて1クロック分の「LOW」期間が発生する。このスタート信号LSTBにより、Lコントローラ15’内の全ての制御信号及びカウンター等が初期化される。その初期化により、2ポートメモリ13の読み出しアドレスRRADが「0」になる。そして、タイミングTD4〜TD7及びTD9〜TD14の間、書き込み要求信号FWREQB、アクノリッジ信号FWACKB及びフル信号RFULが「LOW」であり、データ有効信号FWDTVLが「HIGH」であるので、2ポートメモリ13にデータ信号FWDT[31:0]によるデータが書き込まれる。そして、タイミングTD8ではデータ有効信号FWDTVLが「LOW」であるため、データ信号FWDT[31:0]のデータが有効でないデータであると判断され、2ポートメモリ13にはデータが書き込まれず、また、アドレスRWAGの値はカウントアップされない。このとき、Dコントローラ17’はデータ有効信号FWDTVLに基きデータが有効でないと判断し、グレイコードカウンタ33がカウントアップを停止するようにカウントアップイネーブル信号を制御している。
【0076】
また、タイミングTL5から、2ポートメモリ13に対する書き込みアドレスLWADと読み出しアドレスRRADとが等しくなくなるため、エンプティ信号REMPは「LOW」になる。そこで、2ポートメモリ13から順次データがリードされ1ポートメモリ11に書きこまれる。それと同時に書き込み開始アドレスWRSAもインクリメントされる。しかし、タイミングTL9では、書き込みアドレスLWADと読み出しアドレスRRADの値が等しくなるため、エンプティ信号REMPが「HIGH」になり2ポートメモリ13がエンプティと判断され、これにより2ポートメモリ13から1ポートメモリ11への書き込みはストップされる。また、1ポートメモリ11において、タイミングTL10から現在書き込み中の新しいパケットデータが読み出され始めるが、そのため、タイミングTL10及びTL12でも、2ポートメモリ13から1ポートメモリ11へのデータの書き込みは停止される。また、1ポートメモリ11に対する読み出し開始アドレスRDSA[8:0]は、リンク側からデータが読み出されると同時にインクリメントされる。
【0077】
b.2ポートメモリがフル状態に近づき、書き込みが停止される場合のタイミングチャート
図16は、1ポートメモリ11内のデータがフル状態になり、次に、2ポートメモリ13内のデータがフル状態に近づいて2ポートメモリ13から1ポートメモリ11へのデータが書き込まれる場合、及び、DMA側からの新しいデータの書き込みが停止される場合のタイミングチャートを示す。
【0078】
図16において、タイミングTL1、TL5、TL9及びTL13でリンク側からFIFOメモリ1’に対して読み出し要求があり(信号FRDBが「LOW」)、且つ、書き込み開始アドレスWRSAと読み出し開始アドレスRDSAとはタイミングTL4から等しくなり、1ポートメモリ11のフル信号FFULが「HIGH」になるため、2ポートメモリ13から1ポートメモリ13へのデータの書き込みが停止される。
【0079】
しかし、タイミングTL5でリンク側からデータが読み出されてアドレスRDSA[8:0]はインクリメントされるため、フル信号FFULが「LOW」になり、再び、タイミングTL6で、2ポートメモリ13から1ポートメモリ11へデータが書き込まれる。同様に、タイミングTL7〜TL9及びTL11〜TL13では、2ポートメモリ13から1ポートメモリ11へのデータの書き込みが停止され、タイミングTL10では2ポートメモリ13から1ポートメモリ11へデータが書き込まれる。
【0080】
また、DMA側から2ポートメモリ13へのデータの書き込みにおいて、タイミングTL2〜TL6で、読み出しアドレスRRADと書き込みLWADとの差が基準値RFVALである「2」以下になるため、タイミングTL3〜TL7でフル信号RFULが“HIGH”になる。それにより、タイミングTD4〜TD8でアクノリッジ信号FWACKBが“HIGH”になりDMA側から2ポートメモリ13への書き込みは停止される。しかし、タイミングTL7〜TL9までは、再び、読み出しアドレスRRADと書き込みアドレスLWADとの差が所定値RFVALである「2」より大きくなるため、タイミングTL8〜TL10ではフル信号RFULが“LOW”になる。そのため、タイミングTD9〜TD11では、アクノリッジ信号FWACKBが“LOW”になり、DMA側から2ポートメモリ13へ書き込みがなされる。そして、タイミングTD12〜TD14においては、同様の理由によりアクノリッジ信号FWACKBが“HIGH”になり、DMA側から2ポートメモリ13へのデータの書き込みはストップされる。
【0081】
c.データ書き込みが終了する場合のタイミングチャート
図17は、FIFOメモリ1’へのパケットデータの書き込みを終了する場合のタイミングチャートである。
【0082】
全体的な動作は前述の図15及び図16に示すタイミングチャートの場合と同様であるが、異なる点はタイミングTD8でDMA側から2ポートメモリ13へデータが書き込まれているが、その時のEOP信号FWEOPは「HIGH」であるため、このデータがこのパケットの最終データであることが分かる。そして、DMA側は、最終データを書きこんだので、タイミングTD9から書き込み要求信号FWREQBを「HIGH」にする。これにより、Dコントローラ17’はアクノリッジ信号FWACKBをタイミングTD10から「HIGH」にする。しかし、2ポートメモリ13から1ポートメモリ11へのデータの書き込みは終了していないため、継続して動作しタイミングTL11から、書き込みアドレスLWADと、読み出しアドレスRRDAとが同じ値になり、2ポートメモリ11から1ポートメモリ13へのデータの書き込みが終了する。
【0083】
以上のように、上記第1及び第2の実施形態に示したFIFOメモリは、データを蓄える機能を回路規模の小さいシングルポートメモリで実現し、非同期に転送する機能を非同期デュアルポートメモリにより実現し、シングルポートメモリの記憶容量をFIFOメモリ全体で必要とされる容量に設定し、非同期デュアルポートメモリの記憶容量をデータの転送に必要な最小限のサイズに設定する。これにより、FIFOメモリ全体の回路規模を低減することができる。例えば、0.35μプロセスを用いた場合を考えると、33ビット×1024ワードの非同期デュアルポートRAMだけを用いた場合は約2.16mm平方のサイズが必要であるが、第1の実施形態の例では、33ビット×1024ワードのシングルポートRAMは約1.2mm平方であり、33ビット×32ワードのデュアルポートメモリ(レジスタファイル)は約0.14mm平方であるので、合計しても約1.34mm平方のサイズで構成でき、回路規模を低減できる。
【0084】
また、本実施形態のFIFOメモリでは、シングルポートメモリの動作周波数はそのシングルポートメモリに接続される外部の動作周波数と同じであり、非同期デュアルポートメモリの動作周波数は、非同期の入出力の高速側の動作周波数に設定できるので、従来の技術で示したような高速動作を要するメモリを必要とせず、より安価なメモリを用いることができる。
【0085】
また、上記実施形態においては、所定値REVALやRFVALをレジスタに設定し、これらの値を外部から変更できるようにした。FIFOメモリをパーソナルコンピュータのPCIバスと接続して使用するような場合を考えると、PCIバス側の動作周波数は通常0〜33Mhzで可変に使用できるため、入出力間の非同期タイミングの関係が変化する場合がある。その際、お互いの非同期なインタフェース間でやり取りする信号、例えば本実施形態での信号REMPや信号RFULのようなメモリのフル及びエンプティを知らせる信号は、非同期メモリの書き込みアドレスと読み出しアドレスの差分を考慮して生成されなければならない。しかし、実際のメモリのフル及びエンプティとなるアドレスを用いて計算すると、計算結果が求まった時点では、既にアドレスが進行してしまって誤動作するおそれがある。そこで、実際のフル及びエンプティとなるアドレスより所定数だけ手前のアドレスを用いて、フル及びエンプティを判断する。その際の所定数は、FIFOメモリに対する入出力側の両インタフェースの周波数に応じて最適な値に設定するのが好ましい。そこで、上記のように、所定値REVALやRFVALをレジスタに設定し、これらの値を外部から可変にするようにした。これにより、これらの値を、接続するインタフェースの非同期の周波数に応じて変更できるようにし、メモリの効率的な使用を実現する。
【0086】
(変形例)
なお、上記の実施形態では、非同期2ポートメモリとして非同期2ポートレジスタファイルの代わりに非同期2ポートRAMを用いても同様の回路構成で実現できる。また、1ポートメモリは、入出力データバスが一つにまとめられた1ポートRAMを用いても同様にして実現できる。
【0087】
また、1ポートメモリの記憶容量と2ポートメモリの記憶容量との合計した値を、入力ポートに接続するインタフェースで規定される最大パケットサイズ以上に設定するのが好ましい。
【0088】
これは次の理由からである。すなわち、IEEE1394におけるAsynchronousパケットの最大サイズは32Bytesのヘッダー部と2048Bytesのデータ部とを合せた2080Bytesであるため、IEEE1394のシリアルバスに接続する機器にFIFOメモリを用いる場合に、Asynchronousパケットに対して必要となるメモリサイズは2080Bytesである。また、Isochronousパケットに対しては、16Bytesのヘッダ部と4096Bytesのデータ部とを合せた4112Bytesが必要となる。ここで、メモリのサイズを考えると、一般にメモリサイズは通常2のべき乗の値である。そのため、従来技術で示したような一つのメモリ素子だけで構成する非同期FIFOメモリでは、必要なメモリサイズはそれぞれ2080Bytes及び4112Bytesで十分であるにもかかわらず、このメモリ容量を確保するためには、4096Bytes及び8192Bytesの容量のメモリを使用する必要がある。このため、メモリサイズが大きくなりすぎ、かつ、無駄なメモリ領域が存在することになる。
【0089】
しかしながら、本発明では、1ポートメモリと2ポートメモリとを合せたメモリ容量を利用できる。したがって、1ポートメモリの容量と2ポートメモリの容量との合計が、IEEE1394で規定される最大パケットサイズ以上であれば、1つ当りのメモリの容量を小さくすることができる。例えば、メモリ幅を33ビットのところを32ビットで考えると、第2の実施形態の場合では、2つのメモリの合計サイズは、2176(=2048+128)Bytes、第1の実施形態の場合では、4224(=4096+128)Bytesとなり、前述のパケット最大サイズ(それぞれ、2080、4096Bytes)をカバーする。これにより、シングルポートメモリの容量を一段上の大きなサイズに変更する必要がなく、回路規模の増大を抑えることができ、かつ、メモリの効率的な使用を実現できる。
【0090】
【発明の効果】
本発明によれば、FIFO型記憶装置をデータ保持動作を回路規模の小さいシングルポートメモリで実現し、非同期動作をシングルポートメモリより記憶容量の小さい非同期2ポートメモリで構成することにより、FIFO型記憶装置全体の回路規模を小さくできる。
【0091】
また、本発明によれば、シングルポートメモリやデュアルポートメモリ等のメモリ素子のフル及びエンプティを判断する際の判断基準値を外部から変更できるような構成としたため、使用環境に応じた最適な値に判断基準となる値に設定することができ、より効率的にメモリ素子を使用することができる。
【0092】
また、本発明によれば、シングルポートメモリとデュアルポートメモリの双方の記憶容量を合計した容量をインタフェースで規定される最大パケットサイズ以上に設定する。したがって、双方のメモリ容量を合計した容量をFIFO装置全体の容量として利用することができるため、シングルポートメモリの容量を増大させる必要がなく、メモリ素子を効率的に使用することができる。
【図面の簡単な説明】
【図1】 本発明に係る第1の実施形態におけるFIFOメモリ(受信型)の構成図。
【図2】 第1の実施形態におけるFIFOメモリの詳細な構成図。
【図3】 第1の実施形態におけるDコントローラの構成図。
【図4】 第1の実施形態におけるLコントローラの構成図。
【図5】 第1の実施形態における1ポートメモリ内のパケットデータの格納の様子を説明した図(図中、ハッチング部分がデータ格納部分)。
【図6】 第1の実施形態におけるタイミングチャートa。(格納データがあるときに読み出し要求があった場合)
【図7】 第1の実施形態におけるタイミングチャートb。(格納データがないときに読み出し要求があった場合)
【図8】 第1の実施形態におけるタイミングチャートc。(読み出しの中止要求があった場合、または、デュアルポートへの書き込みの停止要求があった場合)
【図9】 第1の実施形態におけるタイミングチャートd。(パケットの読み出し終了時)
【図10】 本発明に係る第2の実施形態におけるFIFOメモリ(送信型)の構成図。
【図11】 第2の実施形態におけるFIFOメモリの詳細な構成図。
【図12】 第2の実施形態におけるDコントローラの構成図。
【図13】 第2の実施形態におけるLコントローラの構成図。
【図14】 第2の実施形態における1ポートメモリ内のパケットデータの格納の様子を説明した図(図中、ハッチング部分がデータ格納部分)。
【図15】 第2の実施形態におけるタイミングチャートa。(書き込み要求による書き込み後、すぐに読み出される場合)
【図16】 第2の実施形態におけるタイミングチャートb。(2ポートメモリがフル状態に近づき、書き込みが停止される場合)
【図17】 第2の実施形態におけるタイミングチャートc。(データ書き込みが終了する場合)
【図18】 従来の2ポートメモリのみを用いたFIFOメモリの構成図。
【符号の説明】
1,1’ FIFOメモリ
11 シングルポートメモリ
13 デュアルポートメモリ
14,14’ 入力制御部
15,15’ Dコントローラ
16,16’ 出力制御部
17,17’ Lコントローラ
19,19’ レジスタ
43 グレイ/バイナリ変換器
Claims (16)
- 第1のクロックに同期して入力ポートを介して入力したデータを、その入力順に第2のクロックに同期して出力ポートを介して出力する記憶装置において、
一時にデータの書き込み又は読み出し動作のいずれかのみが可能なメモリ素子であって、入力したデータを出力のために保持するシングルポートメモリと、
データの書き込み又は読み出し動作を非同期に実行可能なメモリ素子であって、上記シングルポートメモリ及び外部装置との間でデータを非同期に転送するデュアルポートメモリと、
上記シングルポートメモリ及びデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備え、
上記入力ポートが上記シングルポートメモリに接続し、上記出力ポートが上記デュアルポートメモリに接続し、
上記制御手段は、入力ポートを介して入力したデータを第1のクロックに同期してシングルポートメモリに書きこみ、シングルポートメモリへ書き込みを行なわない期間において、第1のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこみ、また、外部装置からデュアルポートメモリへ読み出し要求があったときに、第2のクロックに同期してデュアルポートメモリからデータを読み出して出力ポートを介して出力するように、両メモリを制御する
ことを特徴とするFIFO記憶装置。 - 上記制御手段は、FIFO記憶装置に対する書き込み要求に基づいて、シングルポートメモリへ書き込みを行なわない期間において、第1のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこむことを特徴とする請求項1記載のFIFO記憶装置。
- 上記シングルポートメモリの動作周波数は、入力ポートに接続される外部装置の動作周波数に等しく、上記デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しいことを特徴とする請求項2記載のFIFO記憶装置。
- 上記制御手段は、上記デュアルポートメモリがエンプティであるか否かを示すエンプティ信号を出力することを特徴とする請求項2記載のFIFO記憶装置。
- 上記制御手段は、上記デュアルポートメモリにおいて、次にデータの読み出しを開始するアドレスが、次にデータの書き込みを開始するアドレスに、その差が所定値以内になるように追いついたときに、上記デュアルポートメモリがエンプティであると判定することを特徴とする請求項4記載のFIFO記憶装置。
- 上記制御手段はデュアルポートメモリのエンプティを判定するための上記所定値を格納する格納手段を備え、該所定値は外部より変更可であることを特徴とする請求項5記載のFIFO記憶装置。
- 上記入力ポートに接続されるインタフェースは、IEEE1394インタフェースであることを特徴とする請求項2記載のFIFO記憶装置。
- 第1のクロックに同期して入力ポートを介して入力したデータを、その入力順に第2のクロックに同期して出力ポートを介して出力する記憶装置において、
一時にデータの書き込み又は読み出し動作のいずれかのみが可能なメモリ素子であって、入力したデータを出力のために保持するシングルポートメモリと、
データの書き込み又は読み出し動作を非同期に実行可能なメモリ素子であって、上記シングルポートメモリ及び外部装置との間でデータを非同期に転送するデュアルポートメモリと、
上記シングルポートメモリ及びデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備え、
上記入力ポートが上記デュアルポートメモリに接続し、上記出力ポートが上記シングルポートメモリに接続し、
上記制御手段は、入力ポートを介して入力したデータを第1のクロックに同期してデュアルポートメモリに書きこみ、一方、外部装置からシングルポートメモリへ読み出し要求があったときに、第2のクロックに同期してシングルポートメモリからデータを読み出して出力ポートを介して出力し、シングルポートメモリからデータの読み出しを行なわない期間において、第1のクロックに同期してデュアルポートメモリに蓄えられたデータを読み出してシングルポートメモリに書き込むように、両メモリを制御する
ことを特徴とする請求項1記載のFIFO記憶装置。 - 上記シングルポートメモリの動作周波数は、出力ポートに接続される外部装置の動作周波数に等しく、上記デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しいことを特徴とする請求項8記載のFIFO記憶装置。
- 上記制御手段は、上記デュアルポートメモリがフルであるか否かを示すフル信号を出力することを特徴とする請求項8記載のFIFO記憶装置。
- 上記制御手段は、上記デュアルポートメモリにおいて、次にデータの書き込みを開始するアドレスが、次にデータの読み出しを開始するアドレスに、その差が所定値以内になるように追いついたときに、上記デュアルポートメモリがフルであると判定することを特徴とする請求項10記載のFIFO記憶装置。
- 上記制御手段はデュアルポートメモリのフルを判定するための上記所定値を格納する格納手段を備え、該所定値は外部より変更可であることを特徴とする請求項11記載のFIFO記憶装置。
- 上記出力ポートに接続されるインタフェースは、IEEE1394インタフェースであることを特徴とする請求項8記載のFIFO記憶装置。
- 上記制御手段は、前記外部装置からの読み出し要求に基づいて、シングルポートメモリからデータの読み出しを行なわない期間において、第1のクロックに同期してデュアルポートメモリに蓄えられたデータを読み出してシングルポートメモリに書き込むことを特徴とする請求項8記載のFIFO記憶装置。
- 上記デュアルポートメモリの記憶容量を、上記シングルポートメモリの記憶容量よりも小さく設定することを特徴とする請求項1ないし請求項14のいずれか1つに記載のFIFO記憶装置。
- 上記シングルポートメモリの記憶容量と上記デュアルポートメモリの記憶容量との合計が、上記入力ポートに接続されるインタフェースにより規定されるパケットの最大サイズ以上に設定することを特徴とする請求項15記載のFIFO記憶装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31511299A JP3926524B2 (ja) | 1999-11-05 | 1999-11-05 | Fifo記憶装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31511299A JP3926524B2 (ja) | 1999-11-05 | 1999-11-05 | Fifo記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001134421A JP2001134421A (ja) | 2001-05-18 |
JP3926524B2 true JP3926524B2 (ja) | 2007-06-06 |
Family
ID=18061573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31511299A Expired - Fee Related JP3926524B2 (ja) | 1999-11-05 | 1999-11-05 | Fifo記憶装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3926524B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2005069152A1 (ja) * | 2004-01-13 | 2007-12-27 | セイコーインスツル株式会社 | メモリインタフェース装置、メモリインタフェース方法、およびモデム装置 |
JP4569163B2 (ja) * | 2004-05-07 | 2010-10-27 | 富士ゼロックス株式会社 | データ入出力装置およびデータ入出力方法 |
KR20090049349A (ko) * | 2007-11-13 | 2009-05-18 | 삼성전자주식회사 | 데이터 처리장치 및 그 제어방법 |
JP5518103B2 (ja) * | 2010-02-09 | 2014-06-11 | 三菱電機株式会社 | 伝送制御装置及び前記伝送制御装置を備えたplc |
-
1999
- 1999-11-05 JP JP31511299A patent/JP3926524B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001134421A (ja) | 2001-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5884099A (en) | Control circuit for a buffer memory to transfer data between systems operating at different speeds | |
US20020184453A1 (en) | Data bus system including posted reads and writes | |
JP3645584B2 (ja) | データ転送同期装置 | |
US7107393B1 (en) | Systems and method for transferring data asynchronously between clock domains | |
JP2009502072A (ja) | FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 | |
JP3926524B2 (ja) | Fifo記憶装置 | |
EP0695988A2 (en) | A first-in first-out memory | |
US20080320178A1 (en) | DMA transfer apparatus | |
US20210157759A1 (en) | Data Transmission System Capable of Transmitting a Great Amount of Data | |
JP3559272B2 (ja) | 3段通信バッファを利用した通信装置 | |
US7899955B2 (en) | Asynchronous data buffer | |
JP4346506B2 (ja) | 先入れ先出しメモリ及びそれを用いた記憶媒体制御装置 | |
JP2597040B2 (ja) | Fifoメモリ装置 | |
JP4569163B2 (ja) | データ入出力装置およびデータ入出力方法 | |
JPH03108182A (ja) | メモリー制御装置及びメモリー制御方法 | |
KR100188940B1 (ko) | 단일 메모리를 이용한 이중스택의 제어장치 및 데이터 전송 방법 | |
US6865654B2 (en) | Device for interfacing asynchronous data using first-in-first-out | |
JP4281367B2 (ja) | データ転送制御回路、電子機器及びデータ転送制御方法 | |
JP3592169B2 (ja) | 非同期データ転送制御装置および非同期データ転送制御方法 | |
JP2000003332A (ja) | 双方向バスサイズ変換回路 | |
JP3626584B2 (ja) | バッファメモリー占有量検出回路 | |
JP4400432B2 (ja) | 非同期fifoパケット通信装置 | |
JP3435780B2 (ja) | 通信方法、送信装置及び受信装置 | |
JP2006172395A (ja) | データ転送制御装置及びデータ転送制御システム | |
JPH08197788A (ja) | プリンタ制御装置の画像データ読出し回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040825 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061010 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061017 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061218 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070228 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110309 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120309 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130309 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140309 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |