JP2004206487A - Fifoメモリ回路 - Google Patents
Fifoメモリ回路 Download PDFInfo
- Publication number
- JP2004206487A JP2004206487A JP2002375771A JP2002375771A JP2004206487A JP 2004206487 A JP2004206487 A JP 2004206487A JP 2002375771 A JP2002375771 A JP 2002375771A JP 2002375771 A JP2002375771 A JP 2002375771A JP 2004206487 A JP2004206487 A JP 2004206487A
- Authority
- JP
- Japan
- Prior art keywords
- signal
- data
- input
- selector
- fifo
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】2つのFIFOメモリを制御してデータ転送の効率を上げ、必要に応じて双方向のデータ転送にも利用可能なFIFOメモリ回路を提供する。
【解決手段】第1と第2FIFOメモリ1、2とを備えて、データ転送のバッファリングを行うFIFOメモリ回路10は、さらに、切替信号fifo_selを受け、第1と第2FIFOメモリ1、2のいずれか一方を選択して、書込み信号writeの供給と入力データ信号Data_inとを中継する第1セレクタと、切替信号fifo_selを受け、第1と第2FIFOメモリ1、2のいずれか一方を選択して、読出し信号readの供給と出力データ信号Data_outとを中継する第2セレクタと、第1と第2FIFOメモリ1、2それぞれのエンプティ状態とフル状態を検出することにより第1セレクタ3と第2セレクタ4に切替信号fifo_selを送出する状態検出回路5とを備える。
【選択図】 図1
【解決手段】第1と第2FIFOメモリ1、2とを備えて、データ転送のバッファリングを行うFIFOメモリ回路10は、さらに、切替信号fifo_selを受け、第1と第2FIFOメモリ1、2のいずれか一方を選択して、書込み信号writeの供給と入力データ信号Data_inとを中継する第1セレクタと、切替信号fifo_selを受け、第1と第2FIFOメモリ1、2のいずれか一方を選択して、読出し信号readの供給と出力データ信号Data_outとを中継する第2セレクタと、第1と第2FIFOメモリ1、2それぞれのエンプティ状態とフル状態を検出することにより第1セレクタ3と第2セレクタ4に切替信号fifo_selを送出する状態検出回路5とを備える。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、データの転送時にバッファメモリとして動作するFIFOメモリ回路に関し、特に具体的には2つのFIFOメモリを有するFIFOメモリ回路に関する。
【0002】
【従来の技術】
図7は、従来のFIFOメモリ回路と使用される信号を示す図である。図7のFIFOメモリ回路では、FIFOメモリ回路100に入力される入力データ信号Data_inとともに書込み信号writeが転送元から入力され、FIFOメモリ101にデータが順次格納される。FIFOメモリがデータで満杯になると、FIFO_Full信号が出力されデータの入力が一旦停止する。同時に転送先から読出し信号readが供給され、先にFIFOメモリ101に入力されたデータが、Data_outの信号として転送先に送出されて行く。データが送出されてFIFOメモリ101が空になると、FIFO_Empty信号が転送元に出力されて、転送元からFIFOメモリ回路100へのデータ入力が再開される。
【0003】
通常、このような1つのFIFOメモリ101を有するFIFOメモリ回路100を、内部バスと外部インターフェース間に挿入し、バッファメモリとして利用することで、内部バスと外部インタフェースの速度差を吸収することができる。
【0004】
しかし、上記の説明のように、FIFOメモリ101が満杯にならないとデータの読み取りは開始せず、また、FIFOメモリ101が空にならないとFIFOメモリ回路100へのデータ書込みが開始しないため、全体的なデータ転送の速度が書込みと読込みの時間の総和となり、転送効率が低下する問題があった。あるいは、一方向のデータの転送のみ可能で、1つのFIFOメモリ回路では双方向のデータ転送は行えないという問題があった。
【0005】
特許文献1に、2つのFIFOメモリからなるFIFOメモリ回路が説明されている。このFIFOメモリ回路では、同一周期且つ非同期に2つのFIFOメモリに対して読み出しと書込みを行い、或いは、所定周期で2つのFIFOメモリに対して交互に読み出しと書込みをおこない、データ転送時の速度低下を防いでいる。
【0006】
また、特許文献2は、内部メモリの2つの領域をそれぞれ入力用と出力用のFIFOメモリとして割り当てることにより、双方向のデータ転送を内部メモリに割り当てた2つのFIFOメモリ領域を介してそれぞれ行う技術を開示している。
【0007】
【特許文献1】
特許第2978232号公報
【特許文献2】
特開平7−235926号公報
【0008】
【発明が解決しようとする課題】
しかし、特許文献1にある2つのFIFOメモリを交互に使用して一方向のデータ転送効率を上げるFIFOメモリ回路は、周期が一定であったり、或いは確定しているものであるため、FIFOメモリ回路の入力や出力の周期が一定でないデータや、転送速度が不定であるデータは取り扱うことが困難であり、予め入力側と出力側の転送周期が既知でありことが条件になっている。
【0009】
また、上記特許文献2に説明されている技術は、他の制御に使用される内部メモリの一部領域を入力用と出力用とにそれぞれ割り当てて使用するため、独立したFIFOメモリ回路として、任意の装置や回路に利用することは困難であり、汎用性や融通性に欠ける問題がある。
【0010】
さらに、上記の特許文献1は2つのFIFOメモリを一方向のデータ転送のみに使用するものであり、双方向のデータ転送は不可能である。特許文献2は一方向に1つのメモリ領域を、他方向にもう1つのメモリ領域を割り当て双方向のデータ転送を可能にしているが、1つの方向に2つのメモリ領域を利用して転送効率を上げるものではない。
【0011】
本発明は、斯かる実状に鑑みなされたものであり、2つのFIFOメモリを制御して1つの方向のデータ転送の効率を上げ、必要に応じて双方向のデータ転送にも利用可能なFIFOメモリ回路を提供することを目的とするものである。
【0012】
【課題を解決するための手段】
上記目的を達成するために、本発明では、入力されるデータが書込まれ、該データを読み出して出力する第1と第2FIFOメモリとを備えて、データ転送のバッファリングを行うFIFOメモリ回路において、切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して書込み信号と入力データ信号とを中継する第1セレクタと、前記切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して読出し信号と出力データ信号とを中継する第2セレクタと、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第1セレクタと第2セレクタに前記切替信号を送出する状態検出回路とを備えた構成を取る。
【0013】
また、前記状態検出回路は、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより、FIFOメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力する。
【0014】
さらに、FIFOメモリ回路へのデータ入力を第1系統から或いは第2系統からに切り替える外部からの系統切替信号により、第1系統からデータが入力される場合、前記書込み信号と入力データ信号は第1系統の書込み信号と入力データ信号に、前記読出し信号は第2系統の読出し信号にそれぞれ接続され、第2系統からデータが入力される場合、前記書込み信号と入力データ信号は第2系統の書込み信号と入力データ信号に、前記読出し信号は第1系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第1と第2系統の出力データ信号に接続される。
【0015】
また、本発明では、前記第1セレクタの入力側には第3セレクタの出力側が接続され、該第3セレクタには第1と第2系統の入力データ信号とが入力され、前記第1セレクタの入力側には第4セレクタの出力側が接続され、該第3セレクタには第1と第2系統の書込み信号が入力され、前記第2セレクタの入力側には第5セレクタの出力側が接続され、該第5セレクタには第1と第2系統の読出し信号信号が入力され、前記出力データ信号は第1と第2系統の出力データ信号に接続され、第1と第2系統のいずれかを切り替える系統切替信号により、前記第3と第4と第5セレクタは、それぞれ第1系統の入力データ信号と書込み信号と読出し信号か、或いは第2系統の入力データ信号と書込み信号と読出し信号かを選択する構成である。
【0016】
前記第1系統からデータの入力が行われるときは前記第2系統に対してデータの出力が行われ、前記第2系統からデータの入力が行われるときは前記第1系統に対してデータの出力が行われる構成である。
【0017】
さらに、前記第1と第2FIFOメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数である。
【0018】
【発明の実施の形態】
以下、本発明の詳細を添付図に基づいて説明する。図1は第1実施形態のFIFOメモリ回路のブロック図である。
【0019】
図1において、装置内部にある内部バスなどを便宜的に第1系統と称し、外部インターフェース部などを第2系統と称する。FIFOメモリ回路10は、第1のFIFOメモリ1(FIFO1)と、第2のFIFOメモリ2(FIFO2)と、入力側セレクタ3と、出力側セレクタ4と、状態検出回路5とから構成される。また、状態/制御信号として、入力側のデータ信号Data_inと、入力側の書込み信号writeと、出力側のデータ信号Data_outと、出力側データの読出し信号readと、FIFOメモリ回路10の入力可能状態を表す信号in_okと、FIFOメモリ回路10の出力可能状態を表す信号out_okとが外部から利用できる信号である。
【0020】
FIFOメモリ回路10の内部で参照される信号として、FIFO1が空の状態を表す信号fifo1_emptyと、FIFO1が満杯の状態を表す信号fifo1_fullと、FIFO2が空の状態を表す信号fifo2_emptyと、FIFO2が満杯の状態を表す信号fifo2_fullとがある。状態検出回路5は、これらの信号から、動作に必要なFIFO1またはFIFO2を選択する切替え信号fifo_selをセレクタ3、4に出力してFIFOメモリを切替える。さらに、状態検出回路5は、FIFO1とFIFO2の空きと満杯の状態を判断して、FIFOメモリ回路10としての状態を表す前記in_okとout_okのそれぞれの信号を出力する。
【0021】
図2は、FIFOメモリ回路10の前記状態/制御信号に関する状態遷移図であり、(a)はFIFOメモリの切り替え状態を、(b)はin_okの状態を、(c)はout_okの状態を表している。図2(a)で、切替え信号fifo_selが0の場合、FIFO1が選択され、FIFO1が満杯でFIFO2が空の場合は、切替え信号fifo_selが1になり、FIFO2が選択される。そして、FIFO2が満杯でFIFO1が空になると、切替え信号fifo_selが再び0になり、FIFO1が選択される。
【0022】
図2(b)に示すように、FIFO1或いはFIFO2またはその両方が空であり、FIFOメモリ回路10として入力が可能の場合、信号in_okが1になる。FIFOメモリ回路10が満杯になると、信号in_okが0になり、データの入力ができなくなる。その後、FIFO1或いはFIFO2またはその両方が空になると、信号in_okが再び1になり、データの入力が可能な状態になる。
【0023】
図2(c)の場合は、FIFO1とFIFO2が空であり、FIFOメモリ回路10として出力が不可能の場合、信号out_okが0になる。FIFO1或いはFIFO2またはその両方が満杯になると、信号in_okが1になり、データの出力が可能になる。
【0024】
以上の遷移状態のルールに基づき、図1に示した第1実施形態のFIFOメモリ回路10の具体的な動作を図3のタイミングチャートに沿って説明する。図3は、FIFOメモリ回路10を一方向のデータ転送に使用する場合のタイミングチャートである。なお、図3においては、図1で図示していないシステムのタイミングをとるシステムクロック信号sclkが使用され、他の信号のタイミングが決定される。また、同様にリセット信号resetにより、システム及びFIFOメモリ回路10が初期状態にセットされる。その他の信号は、図1の同じ名前の信号にそれぞれ対応する。
【0025】
まずreset信号によりFIFOメモリ回路10が初期化されると、FIFO1とFIFO2とがそれぞれ空になり、fifo1_emptyとfifo2_empty信号が出力され、状態検出回路5から図示しない第1系統にin_ok信号が出力される。この時、out_ok信号は0である。また、fifo_sel信号は0であり、入力側のセレクタ3によりFIFO1がデータ入力用FIFOメモリとして選択される。
【0026】
以上の初期化のあと、入力側の書込み信号writeとデータ信号Data_inが入力される。データの入力開始後、FIFO1からのfifo1_empty信号は解除される。その後、FIFO1が入力データにより満杯になると、FIFO1から状態検出回路5に対してfifo1_full信号が出力され、FIFO1へのデータの入力は終了する。しかし、FIFO2からfifo2_empty信号が検出されているので、fifo_sel信号が0から1に変わり、セレクタ3がFIFO2側に切り替わる。この場合、FIFO2はまだ空なので、状態検出回路5からのin_ok信号は維持される。
【0027】
引き続き入力される書込み信号writeとデータ信号Data_inは、セレクタ3により切り替わったFIFO2に入力される。この時、FIFO2から出力されているfifo2_empty信号は解除されて0になる。その後、FIFO2が満杯になった場合、状態検出回路5へfifo2_full信号が出力され、in_ok信号が解除されて0になり、FIFOメモリ回路10への入力が禁止される。
【0028】
FIFOメモリを1つしか備えていない従来のFIFOメモリ回路であれば、FIFOメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、fifo1_full信号が検出された(FIFO1が満杯になった)時点で、状態検出回路5は出力可能なデータがあると判断でき、out_ok信号を出力する。この信号により、図示しない出力側回路からread信号が入力され、セレクタ4がFIFO1に切り替わり、Data_out信号としてデータがFIFO1から出力され始める。この時、状態検出回路5へのfifo1_full信号は解除される。その後、データが全て出力されてFIFO1が空になると、fifo1_empty信号が状態検出回路5に出力されて、FIFO1へのデータ入力が可能な状態になる。
【0029】
前記の過程の途中で、つまり、FIFO1からデータの出力が行われている間に、第1系統からFIFO2へのデータ入力が終了すると、write信号が終了する。そうすると、fifo2_full信号が状態検出回路5に出力され、状態検出回路5は、FIFO1とFIFO2の両方にデータがあると判断してin_ok信号を解除し、入力ができない状態になる。その後、前記のようにFIFO1のデータ出力が完了し、fifo1_empty信号が状態検出回路5に出力されると、状態検出回路5はfifo_sel信号を0にすると同時に、データの入力が可能であると判断し、in_ok信号を第1系統に出力して、次のデータ待ちの状態になる。
【0030】
また、図3のタイミングチャートで明らかなように、FIFOメモリ回路10に入力されるデータと出力されるデータの速度(周期)は異なっている。この様な場合であっても、前記したように、状態信号の確認を行って動作をさせるため、効率の良いFIFOメモリ回路10へのデータの入出力が可能になる。
【0031】
さらに、転送するデータのサイズが常に固定されている場合、FIFO1とFIFO2の容量を同一とし、更にその合計容量をこのサイズの約数にすることにより、より効率の良い転送を実現できる。例えば、パソコンなどのハードディスクの場合、512バイトが1つの転送単位になる。そのため、FIFO1とFIFO2の容量をそれぞれ8バイトや16バイトにすると、転送完了時には、最後のデータがFIFO2に入力されるとfifo1_full、fifo2_fullとなり、また、最後のデータが取り出されるとfifo1_empty、fifo2_emptyとなる。このため、転送終了時にFIFOメモリ回路10にデータが残ることはなく、2つのFIFOメモリの切り替え回路の構成が容易になる。
【0032】
次に、本発明の第2実施形態を図4を参照して説明する。第2実施形態では、第1実施形態に用いた用いたFIFOメモリ回路10を2つ利用して、双方向のFIFOメモリ回路による転送を実現している。図4は、2つのFIFOメモリ回路10で双方向のデータ転送を実現するブロック図である。装置内部にある内部バスなどを便宜的に第1系統と称し、外部インターフェース部などを第2系統と称する。FIFOメモリ回路10を含むFIFOメモリ回路10aは例えば第1系統から第2系統への転送に利用され、FIFOメモリ回路10を含むFIFOメモリ回路10bは第2系統から第1系統への転送に利用される。
【0033】
この場合、FIFOメモリ回路10aと10bは互いに相互作用を及ぼすことなく、それぞれ独立して動作するため、FIFOメモリ回路10aの動作に関しては、前記第1実施形態に係わる説明が適用されるので、その動作説明は省略する。また、FIFOメモリ回路10bの動作に関しては、第2系統からの信号をそれぞれdata_in、write、in_okに接続し、第1系統からの信号をそれぞれdata_out、read、out_okに接続すれば、第1実施形態に係わる説明が適用することができるので、その動作説明は省略する。
【0034】
このように、双方向のデータ転送が同時に発生する場合、それぞれのデータ転送経路にFIFOメモリ回路10を使用することで、それぞれの経路で、入力側と出力側の速度に依存しないデータの転送を効率よく行うことが可能になる。また、3つ以上の独立したデータ転送経路があり、同時にデータが転送される場合であっても、それぞれの経路にFIFOメモリ回路10を使用することで同様なことが可能になる。
【0035】
次に本発明の第3実施形態を、図5と図6を参照して説明する。第2実施形態では双方向のデータ転送に、2つのFIFOメモリ回路10を使用することを説明したが、それぞれの方向のデータ転送が同時に発生しない場合が往々にしてある。例えば、ハードディスク装置などの記憶装置、或いは光ディスクを使用した書込み可能なCDやDVDなどは、データ書込み時と読み取り時に双方向のデータ転送は発生するが、同時には起こりえない構造になっている。このような場合に、本発明のFIFOメモリ回路10を使用することで、双方向のデータ転送を1つのFIFOメモリ回路10で共用することが可能となる。
【0036】
図5は、双方向のデータ転送にFIFOメモリ回路10を使用したブロック図である。装置内部にある内部バスなどを便宜的に第1系統と称し、外部インターフェース部などを第2系統と称する。FIFOメモリ回路10が有する信号は第1の実施形態で説明したとおりなので、その詳しい説明は省略し、双方向として利用するための付加的な回路と、外部から接続される信号について最初に説明する。
【0037】
図5において、セレクタ11は、2つの系統からの信号Ext_Data_inとInt_Data_inとを切り替えて、FIFOメモリ回路10の入力側のData_inに接続する。また、セレクタ12は、2つの系統からの信号Ext_writeとInt_writeとを切り替えて、FIFOメモリ回路10の入力側のwriteに接続する。セレクタ13は、2つの系統からの信号Ext_readとInt_readとを切り替えて、FIFOメモリ回路10の出力側のreadに接続する。
【0038】
また、セレクタ11、12、13を、前記した2つの系統のいずれかの信号に切り替える方向切替信号rwnが図示しないシステムの制御部から供給される。第1系統からの信号として、第1系統のデータをFIFOメモリ回路10送出するInt_Data_inと、そのデータの書込み信号Int_writeと、FIFOメモリ回路10の状態信号in_okが第1系統に取り込まれる際のInt_in_okと、データが第1系統に取り込まれる際のInt_Data_outと、その場合の読出し信号Int_readと、FIFOメモリ回路10の出力が可能な状態を示すout_okを第1系統に取り込む際の信号Int_out_okとがある。
【0039】
さらに、図外の第2系統の回路や装置が取り扱う信号として、第2系統からのデータを供給する信号Ext_Data_inと、そのデータをFIFOメモリ回路10に書込む信号Ext_writeと、FIFOメモリ回路10の状態信号in_okが第2系統に取り込まれる際のInt_in_okと、FIFOメモリ回路10からデータが第2系統に供給される信号Ext_Data_outと、そのデータをFIFOメモリ回路10から読み出すための信号Ext_readと、FIFOメモリ回路10の出力が可能な状態を示すread_okを外部装置に取り込む際の信号Ext_read_okとがある。
【0040】
セレクタ11は、rwn信号によりExt_data_inまたはInt_data_inのいずれかを選択して、FIFOメモリ回路10のdata_in信号に接続し、セレクタ12は、rwn信号によりExt_writeまたはInt_writeのいずれかを選択して、FIFOメモリ回路10のwrite信号に接続し、セレクタ13は、rwn信号によりExt_readまたはInt_readのいずれかを選択して、FIFOメモリ回路10のread信号に接続する。
【0041】
以上の説明に基づき、図5に示した第3実施形態のFIFOメモリ回路10の具体的な動作を図1と、図6のタイミングチャートに沿って説明する。図6は、1つのFIFOメモリ回路10を使用して双方向のデータ転送を行う場合のタイミングチャートである。なお、図6においては、図5で図示しないシステムのタイミングをとるシステムクロック信号sclkにより他の信号のタイミングが決定される。また、同様にシステムのリセット信号resetにより、システム及びFIFOメモリ回路10が初期状態にセットされる。その他の信号は、図1および図5の同じ名前の信号にそれぞれ対応する。
【0042】
まずreset信号によりシステムとFIFOメモリ回路10が初期化されると、rwn信号が0となり、セレクタ11〜13がそれぞれ、第1系統から第2系統へのデータ転送方向に切り替わる(図の左から右へのデータ転送)。そうすると、Int_data_inがdata_inに、Int_writeがwriteに、Ext_readがreadにそれぞれ接続される。この時、FIFO1とFIFO2とがそれぞれ空であるため、fifo1_emptyとfifo2_empty信号が出力され、状態検出回路5からin_ok信号がInt_in_okとして出力される。この時、out_ok、つまり、 Ext_out_ok信号は0であり、FIFOメモリ回路10からの出力はできない。また、fifo_sel信号は0であり、入力側のセレクタ3によりFIFO1が入力用FIFOメモリとして選択される。
【0043】
以上の初期化のあと、入力側の書込み信号In_writeとデータ信号In_Data_inが入力される。データの入力開始後、FIFO1からのfifo1_empty信号は解除される。その後、FIFO1が入力データにより満杯になると、FIFO1から状態検出回路5に対してfifo1_full信号が出力され、FIFO1へのデータの入力は終了する。しかし、FIFO2からfifo2_empty信号が検出されているので、fifo_sel信号が0から1に変わり、セレクタ3がFIFO2側に切り替わる。この場合、FIFO2はまだ空なので、状態検出回路5からのInt_in_ok信号は維持される。
【0044】
引き続き入力される書込み信号Int_writeとデータ信号Int_Data_in入力は、セレクタ3により切り替わったFIFO2に入力される。この時、FIFO2から出力されているfifo2_empty信号は解除されて0になる。その後、FIFO2が満杯になった場合、状態検出回路5へfifo2_full信号が出力され、Int_in_ok信号が解除されて0になり、入力が禁止される。
【0045】
FIFOメモリを1つしか備えていない従来のFIFOメモリ回路であれば、FIFOメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、fifo1_full信号が検出された時点で、状態検出回路5は出力可能なデータがあると判断でき、Ext_out_ok信号を出力する。この信号により、図示しない第2系統からExt_read信号が入力され、セレクタ4がFIFO1に切り替わり、Ext_Data_out信号としてデータがFIFO1から出力され始める。この時、状態検出回路5へのfifo1_full信号は解除される。その後、データが全て出力されてFIFO1が空になると、fifo1_empty信号が状態検出回路5に出力されるので、FIFO1へのデータ入力が可能な状態になる。
【0046】
前記の過程の途中で、つまり、FIFO1からデータの出力が行われている間に、第1系統からFIFO2へのデータ入力が終了すると、In_write信号が終了する。そうすると、fifo2_full信号が状態検出回路5に出力され、状態検出回路5は、FIFO1とFIFO2の両方にデータがあると判断してInt_in_ok信号を解除し、入力ができない状態になる。その後、前記のようにFIFO1のデータ出力が完了し、fifo1_empty信号が状態検出回路5に出力されると、状態検出回路5はfifo_sel信号を0にすると同時に、データの入力が可能であると判断し、Int_in_ok信号を第1系統に出力して、次のデータ待ちの状態になる。
【0047】
次に、データの転送方向が逆になった場合、すなわち、第2系統から第1系統へ(図の右から左へ)のデータ転送について説明する。この場合、前記したrwn信号が1になり、セレクタ11〜13がそれぞれ、第2系統から第1系統へのデータ転送方向に切り替わる。そうすると、Ext_data_inがdata_inに、Ext_writeがwriteに、In_readがreadにそれぞれ接続される。この時、第1系統から第2系統へのデータ転送は既に完了しているので、FIFO1とFIFO2とはそれぞれ空であるため、fifo1_emptyとfifo2_empty信号が出力され、状態検出回路5からin_ok信号がExt_in_okとして出力される。この時、In_out_ok信号は0であり、FIFOメモリ回路10からの出力はできない。また、fifo_sel信号は0であり、入力側のセレクタ3によりFIFO1が入力用FIFOメモリとして選択される。
【0048】
このあと、第2系統からの書込み信号Ext_writeとデータ信号Ext_Data_in入力される。データの入力開始後、FIFO1からのfifo1_empty信号は解除される。その後、FIFO1が入力データにより満杯になると、FIFO1から状態検出回路5に対してfifo1_full信号が出力され、FIFO1へのデータの入力は終了する。しかし、FIFO2からfifo2_empty信号が検出されているので、fifo_sel信号が0から1に変わり、セレクタ3がFIFO2側に切り替わる。この場合、FIFO2はまだ空なので、状態検出回路5からのExt_in_ok信号は維持される。
【0049】
引き続き入力される書込み信号Ext_writeとデータ信号Ext_Data_in入力は、セレクタ3により切り替わったFIFO2に入力される。この時、FIFO2から出力されているfifo2_empty信号は解除されて0になる。その後、FIFO2が満杯になった場合、状態検出回路5へfifo2_full信号が出力され、Ext_in_ok信号が解除されて0になり、第2系統からの入力が禁止される。
【0050】
FIFOメモリを1つしか備えていない従来のFIFOメモリ回路であれば、FIFOメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、fifo1_full信号が検出された時点で、状態検出回路5は出力可能なデータがあると判断でき、In_out_ok信号を出力する。この信号により、第1系統からIn_read信号が入力され、セレクタ4がFIFO1に切り替わり、In_Data_out信号としてデータがFIFO1から出力され始める。この時、状態検出回路5へのfifo1_full信号は解除される。その後、データが全て出力されてFIFO1が空になると、fifo1_empty信号が状態検出回路5に出力されて、FIFO1へのデータ入力が可能な状態になる。
【0051】
前記の過程の途中で、つまり、FIFO1からデータの出力が行われている間に、第2系統からのFIFO2へのデータ入力が終了すると、Ext_write信号が終了する。そうすると、fifo2_full信号が状態検出回路5に出力され、状態検出回路5は、FIFO1とFIFO2の両方にデータがあると判断してExt_in_ok信号を解除し、第2系統からデータ入力ができない状態になる。その後、前記のようにFIFO1のデータ出力が完了し、fifo1_empty信号が状態検出回路5に出力されると、状態検出回路5はfifo_sel信号を0にすると同時に、データの入力が可能であると判断し、Int_in_ok信号を入力側回路に出力して、データ待ちの状態になる。
【0052】
また、図6のタイミングチャートで明らかなように、FIFOメモリ回路10に入力されるデータと出力されるデータの速度(周期)は異なっている。この様な場合であっても、前記したように、状態信号の確認を行って動作をさせるため、効率の良いFIFOメモリ回路10へのデータの入出力が可能になる。
【0053】
【発明の効果】
本発明では、切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して、書込み信号の供給と入力データ信号とを中継する第1セレクタと、前記切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して、読出し信号の供給と出力データ信号とを中継する第2セレクタと、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第1セレクタと第2セレクタに切替信号を送出する状態検出回路とを備えているため、第1と第2FIFOメモリの管理をFIFOメモリ回路自体で行うことができ、FIFOメモリ回路が入力データで満杯になる前にデータを出力し、データ転送を効率よく行うことが可能になると同時に、入力されるデータと出力されるデータの速度や周期に差があってもその差異を吸収して確実にバッファリング動作を行うことが可能になる。
【0054】
また、前記状態検出回路は、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより、FIFOメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力するため、外部の回路は、第1と第2FIFOメモリの管理に関与することなく、データの書込みと読出しの指示を行うことができ、外部の回路構成と制御方法を簡素化することに貢献する。
【0055】
さらに、FIFOメモリ回路へのデータ入力を第1系統から或いは第2系統からに切り替える外部からの系統切替信号により、第1系統からデータが入力される場合、前記書込み信号と入力データ信号は第1系統の書込み信号と入力データ信号に、前記読出し信号は第2系統の読出し信号にそれぞれ接続され、第2系統からデータが入力される場合、前記書込み信号と入力データ信号は第2系統の書込み信号と入力データ信号に、前記読出し信号は第1系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第1と第2系統の出力データ信号に接続されるため、系統切替信号を発生してデータの転送方向を逆にできるので、双方向のデータ転送が同時に発生しない場合は、1つのFIFOメモリ回路をそれぞれの方向のデータ転送に共用して、小さな回路規模でコストダウンを実現し、さらに効率の良いデータ転送を行えるという優れた効果を奏する。
【0056】
さらに、前記第1と第2FIFOメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数になるように設定することにより、第1と第2FIFOの制御と、FIFOメモリ回路の内部回路構成を簡単にすることができる。
【図面の簡単な説明】
【図1】本第1実施形態のFIFOメモリ回路のブロック図である。
【図2】FIFOメモリ回路10の前記状態/制御信号に関する状態遷移図であり、(a)はFIFOメモリの切り替えを、(b)はin_okの状態を、(c)はout_okの状態を表している。
【図3】FIFOメモリ回路10を一方向のデータ転送に使用する場合のタイミングチャートである。
【図4】2つのFIFOメモリ回路で双方向のデータ転送を実現するブロック図である。
【図5】双方向のデータ転送にFIFOメモリ回路10を使用したブロック図である。
【図6】1つのFIFOメモリ回路10を使用して双方向のデータ転送を行う場合のタイミングチャートである。
【図7】従来のFIFOメモリ回路と使用される信号を示す図である。
【符号の説明】
3、4、11、12、13 セレクタ
1、2、101 FIFOメモリ
5 状態検出回路
10、10a、10b、100 FIFOメモリ回路
【発明の属する技術分野】
本発明は、データの転送時にバッファメモリとして動作するFIFOメモリ回路に関し、特に具体的には2つのFIFOメモリを有するFIFOメモリ回路に関する。
【0002】
【従来の技術】
図7は、従来のFIFOメモリ回路と使用される信号を示す図である。図7のFIFOメモリ回路では、FIFOメモリ回路100に入力される入力データ信号Data_inとともに書込み信号writeが転送元から入力され、FIFOメモリ101にデータが順次格納される。FIFOメモリがデータで満杯になると、FIFO_Full信号が出力されデータの入力が一旦停止する。同時に転送先から読出し信号readが供給され、先にFIFOメモリ101に入力されたデータが、Data_outの信号として転送先に送出されて行く。データが送出されてFIFOメモリ101が空になると、FIFO_Empty信号が転送元に出力されて、転送元からFIFOメモリ回路100へのデータ入力が再開される。
【0003】
通常、このような1つのFIFOメモリ101を有するFIFOメモリ回路100を、内部バスと外部インターフェース間に挿入し、バッファメモリとして利用することで、内部バスと外部インタフェースの速度差を吸収することができる。
【0004】
しかし、上記の説明のように、FIFOメモリ101が満杯にならないとデータの読み取りは開始せず、また、FIFOメモリ101が空にならないとFIFOメモリ回路100へのデータ書込みが開始しないため、全体的なデータ転送の速度が書込みと読込みの時間の総和となり、転送効率が低下する問題があった。あるいは、一方向のデータの転送のみ可能で、1つのFIFOメモリ回路では双方向のデータ転送は行えないという問題があった。
【0005】
特許文献1に、2つのFIFOメモリからなるFIFOメモリ回路が説明されている。このFIFOメモリ回路では、同一周期且つ非同期に2つのFIFOメモリに対して読み出しと書込みを行い、或いは、所定周期で2つのFIFOメモリに対して交互に読み出しと書込みをおこない、データ転送時の速度低下を防いでいる。
【0006】
また、特許文献2は、内部メモリの2つの領域をそれぞれ入力用と出力用のFIFOメモリとして割り当てることにより、双方向のデータ転送を内部メモリに割り当てた2つのFIFOメモリ領域を介してそれぞれ行う技術を開示している。
【0007】
【特許文献1】
特許第2978232号公報
【特許文献2】
特開平7−235926号公報
【0008】
【発明が解決しようとする課題】
しかし、特許文献1にある2つのFIFOメモリを交互に使用して一方向のデータ転送効率を上げるFIFOメモリ回路は、周期が一定であったり、或いは確定しているものであるため、FIFOメモリ回路の入力や出力の周期が一定でないデータや、転送速度が不定であるデータは取り扱うことが困難であり、予め入力側と出力側の転送周期が既知でありことが条件になっている。
【0009】
また、上記特許文献2に説明されている技術は、他の制御に使用される内部メモリの一部領域を入力用と出力用とにそれぞれ割り当てて使用するため、独立したFIFOメモリ回路として、任意の装置や回路に利用することは困難であり、汎用性や融通性に欠ける問題がある。
【0010】
さらに、上記の特許文献1は2つのFIFOメモリを一方向のデータ転送のみに使用するものであり、双方向のデータ転送は不可能である。特許文献2は一方向に1つのメモリ領域を、他方向にもう1つのメモリ領域を割り当て双方向のデータ転送を可能にしているが、1つの方向に2つのメモリ領域を利用して転送効率を上げるものではない。
【0011】
本発明は、斯かる実状に鑑みなされたものであり、2つのFIFOメモリを制御して1つの方向のデータ転送の効率を上げ、必要に応じて双方向のデータ転送にも利用可能なFIFOメモリ回路を提供することを目的とするものである。
【0012】
【課題を解決するための手段】
上記目的を達成するために、本発明では、入力されるデータが書込まれ、該データを読み出して出力する第1と第2FIFOメモリとを備えて、データ転送のバッファリングを行うFIFOメモリ回路において、切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して書込み信号と入力データ信号とを中継する第1セレクタと、前記切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して読出し信号と出力データ信号とを中継する第2セレクタと、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第1セレクタと第2セレクタに前記切替信号を送出する状態検出回路とを備えた構成を取る。
【0013】
また、前記状態検出回路は、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより、FIFOメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力する。
【0014】
さらに、FIFOメモリ回路へのデータ入力を第1系統から或いは第2系統からに切り替える外部からの系統切替信号により、第1系統からデータが入力される場合、前記書込み信号と入力データ信号は第1系統の書込み信号と入力データ信号に、前記読出し信号は第2系統の読出し信号にそれぞれ接続され、第2系統からデータが入力される場合、前記書込み信号と入力データ信号は第2系統の書込み信号と入力データ信号に、前記読出し信号は第1系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第1と第2系統の出力データ信号に接続される。
【0015】
また、本発明では、前記第1セレクタの入力側には第3セレクタの出力側が接続され、該第3セレクタには第1と第2系統の入力データ信号とが入力され、前記第1セレクタの入力側には第4セレクタの出力側が接続され、該第3セレクタには第1と第2系統の書込み信号が入力され、前記第2セレクタの入力側には第5セレクタの出力側が接続され、該第5セレクタには第1と第2系統の読出し信号信号が入力され、前記出力データ信号は第1と第2系統の出力データ信号に接続され、第1と第2系統のいずれかを切り替える系統切替信号により、前記第3と第4と第5セレクタは、それぞれ第1系統の入力データ信号と書込み信号と読出し信号か、或いは第2系統の入力データ信号と書込み信号と読出し信号かを選択する構成である。
【0016】
前記第1系統からデータの入力が行われるときは前記第2系統に対してデータの出力が行われ、前記第2系統からデータの入力が行われるときは前記第1系統に対してデータの出力が行われる構成である。
【0017】
さらに、前記第1と第2FIFOメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数である。
【0018】
【発明の実施の形態】
以下、本発明の詳細を添付図に基づいて説明する。図1は第1実施形態のFIFOメモリ回路のブロック図である。
【0019】
図1において、装置内部にある内部バスなどを便宜的に第1系統と称し、外部インターフェース部などを第2系統と称する。FIFOメモリ回路10は、第1のFIFOメモリ1(FIFO1)と、第2のFIFOメモリ2(FIFO2)と、入力側セレクタ3と、出力側セレクタ4と、状態検出回路5とから構成される。また、状態/制御信号として、入力側のデータ信号Data_inと、入力側の書込み信号writeと、出力側のデータ信号Data_outと、出力側データの読出し信号readと、FIFOメモリ回路10の入力可能状態を表す信号in_okと、FIFOメモリ回路10の出力可能状態を表す信号out_okとが外部から利用できる信号である。
【0020】
FIFOメモリ回路10の内部で参照される信号として、FIFO1が空の状態を表す信号fifo1_emptyと、FIFO1が満杯の状態を表す信号fifo1_fullと、FIFO2が空の状態を表す信号fifo2_emptyと、FIFO2が満杯の状態を表す信号fifo2_fullとがある。状態検出回路5は、これらの信号から、動作に必要なFIFO1またはFIFO2を選択する切替え信号fifo_selをセレクタ3、4に出力してFIFOメモリを切替える。さらに、状態検出回路5は、FIFO1とFIFO2の空きと満杯の状態を判断して、FIFOメモリ回路10としての状態を表す前記in_okとout_okのそれぞれの信号を出力する。
【0021】
図2は、FIFOメモリ回路10の前記状態/制御信号に関する状態遷移図であり、(a)はFIFOメモリの切り替え状態を、(b)はin_okの状態を、(c)はout_okの状態を表している。図2(a)で、切替え信号fifo_selが0の場合、FIFO1が選択され、FIFO1が満杯でFIFO2が空の場合は、切替え信号fifo_selが1になり、FIFO2が選択される。そして、FIFO2が満杯でFIFO1が空になると、切替え信号fifo_selが再び0になり、FIFO1が選択される。
【0022】
図2(b)に示すように、FIFO1或いはFIFO2またはその両方が空であり、FIFOメモリ回路10として入力が可能の場合、信号in_okが1になる。FIFOメモリ回路10が満杯になると、信号in_okが0になり、データの入力ができなくなる。その後、FIFO1或いはFIFO2またはその両方が空になると、信号in_okが再び1になり、データの入力が可能な状態になる。
【0023】
図2(c)の場合は、FIFO1とFIFO2が空であり、FIFOメモリ回路10として出力が不可能の場合、信号out_okが0になる。FIFO1或いはFIFO2またはその両方が満杯になると、信号in_okが1になり、データの出力が可能になる。
【0024】
以上の遷移状態のルールに基づき、図1に示した第1実施形態のFIFOメモリ回路10の具体的な動作を図3のタイミングチャートに沿って説明する。図3は、FIFOメモリ回路10を一方向のデータ転送に使用する場合のタイミングチャートである。なお、図3においては、図1で図示していないシステムのタイミングをとるシステムクロック信号sclkが使用され、他の信号のタイミングが決定される。また、同様にリセット信号resetにより、システム及びFIFOメモリ回路10が初期状態にセットされる。その他の信号は、図1の同じ名前の信号にそれぞれ対応する。
【0025】
まずreset信号によりFIFOメモリ回路10が初期化されると、FIFO1とFIFO2とがそれぞれ空になり、fifo1_emptyとfifo2_empty信号が出力され、状態検出回路5から図示しない第1系統にin_ok信号が出力される。この時、out_ok信号は0である。また、fifo_sel信号は0であり、入力側のセレクタ3によりFIFO1がデータ入力用FIFOメモリとして選択される。
【0026】
以上の初期化のあと、入力側の書込み信号writeとデータ信号Data_inが入力される。データの入力開始後、FIFO1からのfifo1_empty信号は解除される。その後、FIFO1が入力データにより満杯になると、FIFO1から状態検出回路5に対してfifo1_full信号が出力され、FIFO1へのデータの入力は終了する。しかし、FIFO2からfifo2_empty信号が検出されているので、fifo_sel信号が0から1に変わり、セレクタ3がFIFO2側に切り替わる。この場合、FIFO2はまだ空なので、状態検出回路5からのin_ok信号は維持される。
【0027】
引き続き入力される書込み信号writeとデータ信号Data_inは、セレクタ3により切り替わったFIFO2に入力される。この時、FIFO2から出力されているfifo2_empty信号は解除されて0になる。その後、FIFO2が満杯になった場合、状態検出回路5へfifo2_full信号が出力され、in_ok信号が解除されて0になり、FIFOメモリ回路10への入力が禁止される。
【0028】
FIFOメモリを1つしか備えていない従来のFIFOメモリ回路であれば、FIFOメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、fifo1_full信号が検出された(FIFO1が満杯になった)時点で、状態検出回路5は出力可能なデータがあると判断でき、out_ok信号を出力する。この信号により、図示しない出力側回路からread信号が入力され、セレクタ4がFIFO1に切り替わり、Data_out信号としてデータがFIFO1から出力され始める。この時、状態検出回路5へのfifo1_full信号は解除される。その後、データが全て出力されてFIFO1が空になると、fifo1_empty信号が状態検出回路5に出力されて、FIFO1へのデータ入力が可能な状態になる。
【0029】
前記の過程の途中で、つまり、FIFO1からデータの出力が行われている間に、第1系統からFIFO2へのデータ入力が終了すると、write信号が終了する。そうすると、fifo2_full信号が状態検出回路5に出力され、状態検出回路5は、FIFO1とFIFO2の両方にデータがあると判断してin_ok信号を解除し、入力ができない状態になる。その後、前記のようにFIFO1のデータ出力が完了し、fifo1_empty信号が状態検出回路5に出力されると、状態検出回路5はfifo_sel信号を0にすると同時に、データの入力が可能であると判断し、in_ok信号を第1系統に出力して、次のデータ待ちの状態になる。
【0030】
また、図3のタイミングチャートで明らかなように、FIFOメモリ回路10に入力されるデータと出力されるデータの速度(周期)は異なっている。この様な場合であっても、前記したように、状態信号の確認を行って動作をさせるため、効率の良いFIFOメモリ回路10へのデータの入出力が可能になる。
【0031】
さらに、転送するデータのサイズが常に固定されている場合、FIFO1とFIFO2の容量を同一とし、更にその合計容量をこのサイズの約数にすることにより、より効率の良い転送を実現できる。例えば、パソコンなどのハードディスクの場合、512バイトが1つの転送単位になる。そのため、FIFO1とFIFO2の容量をそれぞれ8バイトや16バイトにすると、転送完了時には、最後のデータがFIFO2に入力されるとfifo1_full、fifo2_fullとなり、また、最後のデータが取り出されるとfifo1_empty、fifo2_emptyとなる。このため、転送終了時にFIFOメモリ回路10にデータが残ることはなく、2つのFIFOメモリの切り替え回路の構成が容易になる。
【0032】
次に、本発明の第2実施形態を図4を参照して説明する。第2実施形態では、第1実施形態に用いた用いたFIFOメモリ回路10を2つ利用して、双方向のFIFOメモリ回路による転送を実現している。図4は、2つのFIFOメモリ回路10で双方向のデータ転送を実現するブロック図である。装置内部にある内部バスなどを便宜的に第1系統と称し、外部インターフェース部などを第2系統と称する。FIFOメモリ回路10を含むFIFOメモリ回路10aは例えば第1系統から第2系統への転送に利用され、FIFOメモリ回路10を含むFIFOメモリ回路10bは第2系統から第1系統への転送に利用される。
【0033】
この場合、FIFOメモリ回路10aと10bは互いに相互作用を及ぼすことなく、それぞれ独立して動作するため、FIFOメモリ回路10aの動作に関しては、前記第1実施形態に係わる説明が適用されるので、その動作説明は省略する。また、FIFOメモリ回路10bの動作に関しては、第2系統からの信号をそれぞれdata_in、write、in_okに接続し、第1系統からの信号をそれぞれdata_out、read、out_okに接続すれば、第1実施形態に係わる説明が適用することができるので、その動作説明は省略する。
【0034】
このように、双方向のデータ転送が同時に発生する場合、それぞれのデータ転送経路にFIFOメモリ回路10を使用することで、それぞれの経路で、入力側と出力側の速度に依存しないデータの転送を効率よく行うことが可能になる。また、3つ以上の独立したデータ転送経路があり、同時にデータが転送される場合であっても、それぞれの経路にFIFOメモリ回路10を使用することで同様なことが可能になる。
【0035】
次に本発明の第3実施形態を、図5と図6を参照して説明する。第2実施形態では双方向のデータ転送に、2つのFIFOメモリ回路10を使用することを説明したが、それぞれの方向のデータ転送が同時に発生しない場合が往々にしてある。例えば、ハードディスク装置などの記憶装置、或いは光ディスクを使用した書込み可能なCDやDVDなどは、データ書込み時と読み取り時に双方向のデータ転送は発生するが、同時には起こりえない構造になっている。このような場合に、本発明のFIFOメモリ回路10を使用することで、双方向のデータ転送を1つのFIFOメモリ回路10で共用することが可能となる。
【0036】
図5は、双方向のデータ転送にFIFOメモリ回路10を使用したブロック図である。装置内部にある内部バスなどを便宜的に第1系統と称し、外部インターフェース部などを第2系統と称する。FIFOメモリ回路10が有する信号は第1の実施形態で説明したとおりなので、その詳しい説明は省略し、双方向として利用するための付加的な回路と、外部から接続される信号について最初に説明する。
【0037】
図5において、セレクタ11は、2つの系統からの信号Ext_Data_inとInt_Data_inとを切り替えて、FIFOメモリ回路10の入力側のData_inに接続する。また、セレクタ12は、2つの系統からの信号Ext_writeとInt_writeとを切り替えて、FIFOメモリ回路10の入力側のwriteに接続する。セレクタ13は、2つの系統からの信号Ext_readとInt_readとを切り替えて、FIFOメモリ回路10の出力側のreadに接続する。
【0038】
また、セレクタ11、12、13を、前記した2つの系統のいずれかの信号に切り替える方向切替信号rwnが図示しないシステムの制御部から供給される。第1系統からの信号として、第1系統のデータをFIFOメモリ回路10送出するInt_Data_inと、そのデータの書込み信号Int_writeと、FIFOメモリ回路10の状態信号in_okが第1系統に取り込まれる際のInt_in_okと、データが第1系統に取り込まれる際のInt_Data_outと、その場合の読出し信号Int_readと、FIFOメモリ回路10の出力が可能な状態を示すout_okを第1系統に取り込む際の信号Int_out_okとがある。
【0039】
さらに、図外の第2系統の回路や装置が取り扱う信号として、第2系統からのデータを供給する信号Ext_Data_inと、そのデータをFIFOメモリ回路10に書込む信号Ext_writeと、FIFOメモリ回路10の状態信号in_okが第2系統に取り込まれる際のInt_in_okと、FIFOメモリ回路10からデータが第2系統に供給される信号Ext_Data_outと、そのデータをFIFOメモリ回路10から読み出すための信号Ext_readと、FIFOメモリ回路10の出力が可能な状態を示すread_okを外部装置に取り込む際の信号Ext_read_okとがある。
【0040】
セレクタ11は、rwn信号によりExt_data_inまたはInt_data_inのいずれかを選択して、FIFOメモリ回路10のdata_in信号に接続し、セレクタ12は、rwn信号によりExt_writeまたはInt_writeのいずれかを選択して、FIFOメモリ回路10のwrite信号に接続し、セレクタ13は、rwn信号によりExt_readまたはInt_readのいずれかを選択して、FIFOメモリ回路10のread信号に接続する。
【0041】
以上の説明に基づき、図5に示した第3実施形態のFIFOメモリ回路10の具体的な動作を図1と、図6のタイミングチャートに沿って説明する。図6は、1つのFIFOメモリ回路10を使用して双方向のデータ転送を行う場合のタイミングチャートである。なお、図6においては、図5で図示しないシステムのタイミングをとるシステムクロック信号sclkにより他の信号のタイミングが決定される。また、同様にシステムのリセット信号resetにより、システム及びFIFOメモリ回路10が初期状態にセットされる。その他の信号は、図1および図5の同じ名前の信号にそれぞれ対応する。
【0042】
まずreset信号によりシステムとFIFOメモリ回路10が初期化されると、rwn信号が0となり、セレクタ11〜13がそれぞれ、第1系統から第2系統へのデータ転送方向に切り替わる(図の左から右へのデータ転送)。そうすると、Int_data_inがdata_inに、Int_writeがwriteに、Ext_readがreadにそれぞれ接続される。この時、FIFO1とFIFO2とがそれぞれ空であるため、fifo1_emptyとfifo2_empty信号が出力され、状態検出回路5からin_ok信号がInt_in_okとして出力される。この時、out_ok、つまり、 Ext_out_ok信号は0であり、FIFOメモリ回路10からの出力はできない。また、fifo_sel信号は0であり、入力側のセレクタ3によりFIFO1が入力用FIFOメモリとして選択される。
【0043】
以上の初期化のあと、入力側の書込み信号In_writeとデータ信号In_Data_inが入力される。データの入力開始後、FIFO1からのfifo1_empty信号は解除される。その後、FIFO1が入力データにより満杯になると、FIFO1から状態検出回路5に対してfifo1_full信号が出力され、FIFO1へのデータの入力は終了する。しかし、FIFO2からfifo2_empty信号が検出されているので、fifo_sel信号が0から1に変わり、セレクタ3がFIFO2側に切り替わる。この場合、FIFO2はまだ空なので、状態検出回路5からのInt_in_ok信号は維持される。
【0044】
引き続き入力される書込み信号Int_writeとデータ信号Int_Data_in入力は、セレクタ3により切り替わったFIFO2に入力される。この時、FIFO2から出力されているfifo2_empty信号は解除されて0になる。その後、FIFO2が満杯になった場合、状態検出回路5へfifo2_full信号が出力され、Int_in_ok信号が解除されて0になり、入力が禁止される。
【0045】
FIFOメモリを1つしか備えていない従来のFIFOメモリ回路であれば、FIFOメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、fifo1_full信号が検出された時点で、状態検出回路5は出力可能なデータがあると判断でき、Ext_out_ok信号を出力する。この信号により、図示しない第2系統からExt_read信号が入力され、セレクタ4がFIFO1に切り替わり、Ext_Data_out信号としてデータがFIFO1から出力され始める。この時、状態検出回路5へのfifo1_full信号は解除される。その後、データが全て出力されてFIFO1が空になると、fifo1_empty信号が状態検出回路5に出力されるので、FIFO1へのデータ入力が可能な状態になる。
【0046】
前記の過程の途中で、つまり、FIFO1からデータの出力が行われている間に、第1系統からFIFO2へのデータ入力が終了すると、In_write信号が終了する。そうすると、fifo2_full信号が状態検出回路5に出力され、状態検出回路5は、FIFO1とFIFO2の両方にデータがあると判断してInt_in_ok信号を解除し、入力ができない状態になる。その後、前記のようにFIFO1のデータ出力が完了し、fifo1_empty信号が状態検出回路5に出力されると、状態検出回路5はfifo_sel信号を0にすると同時に、データの入力が可能であると判断し、Int_in_ok信号を第1系統に出力して、次のデータ待ちの状態になる。
【0047】
次に、データの転送方向が逆になった場合、すなわち、第2系統から第1系統へ(図の右から左へ)のデータ転送について説明する。この場合、前記したrwn信号が1になり、セレクタ11〜13がそれぞれ、第2系統から第1系統へのデータ転送方向に切り替わる。そうすると、Ext_data_inがdata_inに、Ext_writeがwriteに、In_readがreadにそれぞれ接続される。この時、第1系統から第2系統へのデータ転送は既に完了しているので、FIFO1とFIFO2とはそれぞれ空であるため、fifo1_emptyとfifo2_empty信号が出力され、状態検出回路5からin_ok信号がExt_in_okとして出力される。この時、In_out_ok信号は0であり、FIFOメモリ回路10からの出力はできない。また、fifo_sel信号は0であり、入力側のセレクタ3によりFIFO1が入力用FIFOメモリとして選択される。
【0048】
このあと、第2系統からの書込み信号Ext_writeとデータ信号Ext_Data_in入力される。データの入力開始後、FIFO1からのfifo1_empty信号は解除される。その後、FIFO1が入力データにより満杯になると、FIFO1から状態検出回路5に対してfifo1_full信号が出力され、FIFO1へのデータの入力は終了する。しかし、FIFO2からfifo2_empty信号が検出されているので、fifo_sel信号が0から1に変わり、セレクタ3がFIFO2側に切り替わる。この場合、FIFO2はまだ空なので、状態検出回路5からのExt_in_ok信号は維持される。
【0049】
引き続き入力される書込み信号Ext_writeとデータ信号Ext_Data_in入力は、セレクタ3により切り替わったFIFO2に入力される。この時、FIFO2から出力されているfifo2_empty信号は解除されて0になる。その後、FIFO2が満杯になった場合、状態検出回路5へfifo2_full信号が出力され、Ext_in_ok信号が解除されて0になり、第2系統からの入力が禁止される。
【0050】
FIFOメモリを1つしか備えていない従来のFIFOメモリ回路であれば、FIFOメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、fifo1_full信号が検出された時点で、状態検出回路5は出力可能なデータがあると判断でき、In_out_ok信号を出力する。この信号により、第1系統からIn_read信号が入力され、セレクタ4がFIFO1に切り替わり、In_Data_out信号としてデータがFIFO1から出力され始める。この時、状態検出回路5へのfifo1_full信号は解除される。その後、データが全て出力されてFIFO1が空になると、fifo1_empty信号が状態検出回路5に出力されて、FIFO1へのデータ入力が可能な状態になる。
【0051】
前記の過程の途中で、つまり、FIFO1からデータの出力が行われている間に、第2系統からのFIFO2へのデータ入力が終了すると、Ext_write信号が終了する。そうすると、fifo2_full信号が状態検出回路5に出力され、状態検出回路5は、FIFO1とFIFO2の両方にデータがあると判断してExt_in_ok信号を解除し、第2系統からデータ入力ができない状態になる。その後、前記のようにFIFO1のデータ出力が完了し、fifo1_empty信号が状態検出回路5に出力されると、状態検出回路5はfifo_sel信号を0にすると同時に、データの入力が可能であると判断し、Int_in_ok信号を入力側回路に出力して、データ待ちの状態になる。
【0052】
また、図6のタイミングチャートで明らかなように、FIFOメモリ回路10に入力されるデータと出力されるデータの速度(周期)は異なっている。この様な場合であっても、前記したように、状態信号の確認を行って動作をさせるため、効率の良いFIFOメモリ回路10へのデータの入出力が可能になる。
【0053】
【発明の効果】
本発明では、切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して、書込み信号の供給と入力データ信号とを中継する第1セレクタと、前記切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して、読出し信号の供給と出力データ信号とを中継する第2セレクタと、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第1セレクタと第2セレクタに切替信号を送出する状態検出回路とを備えているため、第1と第2FIFOメモリの管理をFIFOメモリ回路自体で行うことができ、FIFOメモリ回路が入力データで満杯になる前にデータを出力し、データ転送を効率よく行うことが可能になると同時に、入力されるデータと出力されるデータの速度や周期に差があってもその差異を吸収して確実にバッファリング動作を行うことが可能になる。
【0054】
また、前記状態検出回路は、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより、FIFOメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力するため、外部の回路は、第1と第2FIFOメモリの管理に関与することなく、データの書込みと読出しの指示を行うことができ、外部の回路構成と制御方法を簡素化することに貢献する。
【0055】
さらに、FIFOメモリ回路へのデータ入力を第1系統から或いは第2系統からに切り替える外部からの系統切替信号により、第1系統からデータが入力される場合、前記書込み信号と入力データ信号は第1系統の書込み信号と入力データ信号に、前記読出し信号は第2系統の読出し信号にそれぞれ接続され、第2系統からデータが入力される場合、前記書込み信号と入力データ信号は第2系統の書込み信号と入力データ信号に、前記読出し信号は第1系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第1と第2系統の出力データ信号に接続されるため、系統切替信号を発生してデータの転送方向を逆にできるので、双方向のデータ転送が同時に発生しない場合は、1つのFIFOメモリ回路をそれぞれの方向のデータ転送に共用して、小さな回路規模でコストダウンを実現し、さらに効率の良いデータ転送を行えるという優れた効果を奏する。
【0056】
さらに、前記第1と第2FIFOメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数になるように設定することにより、第1と第2FIFOの制御と、FIFOメモリ回路の内部回路構成を簡単にすることができる。
【図面の簡単な説明】
【図1】本第1実施形態のFIFOメモリ回路のブロック図である。
【図2】FIFOメモリ回路10の前記状態/制御信号に関する状態遷移図であり、(a)はFIFOメモリの切り替えを、(b)はin_okの状態を、(c)はout_okの状態を表している。
【図3】FIFOメモリ回路10を一方向のデータ転送に使用する場合のタイミングチャートである。
【図4】2つのFIFOメモリ回路で双方向のデータ転送を実現するブロック図である。
【図5】双方向のデータ転送にFIFOメモリ回路10を使用したブロック図である。
【図6】1つのFIFOメモリ回路10を使用して双方向のデータ転送を行う場合のタイミングチャートである。
【図7】従来のFIFOメモリ回路と使用される信号を示す図である。
【符号の説明】
3、4、11、12、13 セレクタ
1、2、101 FIFOメモリ
5 状態検出回路
10、10a、10b、100 FIFOメモリ回路
Claims (6)
- 入力されるデータが書込まれ、該データを読み出して出力する第1と第2FIFOメモリとを備えて、データ転送のバッファリングを行うFIFOメモリ回路において、
切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して書込み信号と入力データ信号とを中継する第1セレクタと、前記切替信号を受け、前記第1と第2FIFOメモリのいずれか一方を選択して読出し信号と出力データ信号とを中継する第2セレクタと、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第1セレクタと第2セレクタに前記切替信号を送出する状態検出回路とを備えたことを特徴とするFIFOメモリ回路。 - 前記状態検出回路は、前記第1と第2FIFOメモリそれぞれのエンプティ状態とフル状態を検出することにより、FIFOメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力することを特徴とする請求項1に記載のFIFOメモリ回路。
- FIFOメモリ回路へのデータ入力を第1系統から或いは第2系統からに切り替える外部からの系統切替信号により、第1系統からデータが入力される場合、前記書込み信号と入力データ信号は第1系統の書込み信号と入力データ信号に、前記読出し信号は第2系統の読出し信号にそれぞれ接続され、第2系統からデータが入力される場合、前記書込み信号と入力データ信号は第2系統の書込み信号と入力データ信号に、前記読出し信号は第1系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第1と第2系統の出力データ信号に接続されることを特徴とする請求項1または請求項2に記載のFIFOメモリ回路。
- 前記第1セレクタの入力側には第3セレクタの出力側が接続され、該第3セレクタには第1と第2系統の入力データ信号とが入力され、前記第1セレクタの入力側には第4セレクタの出力側が接続され、該第3セレクタには第1と第2系統の書込み信号が入力され、前記第2セレクタの入力側には第5セレクタの出力側が接続され、該第5セレクタには第1と第2系統の読出し信号信号が入力され、前記出力データ信号は第1と第2系統の出力データ信号に接続され、第1と第2系統のいずれかを切り替える系統切替信号により、前記第3と第4と第5セレクタは、それぞれ第1系統の入力データ信号と書込み信号と読出し信号か、或いは第2系統の入力データ信号と書込み信号と読出し信号かを選択することを特徴とする請求項1または請求項2に記載のFIFOメモリ回路。
- 前記第1系統からデータの入力が行われるときは前記第2系統に対してデータの出力が行われ、前記第2系統からデータの入力が行われるときは前記第1系統に対してデータの出力が行われることを特徴とする請求項3または請求項4のいずれかに記載のFIFOメモリ回路。
- 前記第1と第2FIFOメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数であることを特徴とする請求項1乃至請求項5のいずれかに記載のFIFOメモリ回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002375771A JP2004206487A (ja) | 2002-12-26 | 2002-12-26 | Fifoメモリ回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002375771A JP2004206487A (ja) | 2002-12-26 | 2002-12-26 | Fifoメモリ回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004206487A true JP2004206487A (ja) | 2004-07-22 |
Family
ID=32813402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002375771A Pending JP2004206487A (ja) | 2002-12-26 | 2002-12-26 | Fifoメモリ回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004206487A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006007801A1 (fr) * | 2004-07-23 | 2006-01-26 | Huawei Technologies Co., Ltd. | Memoire peps et procede d'ajustement d'adresses d'ecriture/lecture |
WO2008013209A1 (fr) * | 2006-07-28 | 2008-01-31 | Nec Corporation | Circuit de connexion de processeur, dispositif de traitement de données, dispositif opérationnel, et terminal de communications mobiles, et procédé de transfert de données les utilisant |
JP2010181915A (ja) * | 2009-02-03 | 2010-08-19 | Nec Corp | データ入出力装置 |
JP2012098884A (ja) * | 2010-11-01 | 2012-05-24 | Olympus Corp | データ処理装置および画像処理装置 |
US8904069B2 (en) | 2010-11-01 | 2014-12-02 | Olympus Corporation | Data processing apparatus and image processing apparatus |
JP2022528349A (ja) * | 2019-03-27 | 2022-06-10 | 无錫海斯凱尓医学技術有限公司 | データ記憶用の装置、方法及び読み取り可能な媒体 |
-
2002
- 2002-12-26 JP JP2002375771A patent/JP2004206487A/ja active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006007801A1 (fr) * | 2004-07-23 | 2006-01-26 | Huawei Technologies Co., Ltd. | Memoire peps et procede d'ajustement d'adresses d'ecriture/lecture |
CN102902641A (zh) * | 2006-07-28 | 2013-01-30 | 日本电气株式会社 | Cpu连接电路、数据处理装置、算术处理设备及相应方法 |
WO2008013209A1 (fr) * | 2006-07-28 | 2008-01-31 | Nec Corporation | Circuit de connexion de processeur, dispositif de traitement de données, dispositif opérationnel, et terminal de communications mobiles, et procédé de transfert de données les utilisant |
JPWO2008013209A1 (ja) * | 2006-07-28 | 2009-12-17 | 日本電気株式会社 | Cpu接続回路、データ処理装置、演算装置及びこれらを用いた携帯通信端末並びにデータ転送方法 |
JP5168144B2 (ja) * | 2006-07-28 | 2013-03-21 | 日本電気株式会社 | Cpu接続回路、データ処理装置、演算装置及びこれらを用いた携帯通信端末並びにデータ転送方法 |
CN101495980B (zh) * | 2006-07-28 | 2012-07-18 | 日本电气株式会社 | Cpu连接电路、数据处理装置、算术处理设备、使用这些模块的便携式通信终端及数据传送方法 |
US8355326B2 (en) | 2006-07-28 | 2013-01-15 | Nec Corporation | CPU connection circuit, data processing apparatus, arithmetic processing device, portable communication terminal using these modules and data transfer method |
JP2010181915A (ja) * | 2009-02-03 | 2010-08-19 | Nec Corp | データ入出力装置 |
JP2012098884A (ja) * | 2010-11-01 | 2012-05-24 | Olympus Corp | データ処理装置および画像処理装置 |
US8904069B2 (en) | 2010-11-01 | 2014-12-02 | Olympus Corporation | Data processing apparatus and image processing apparatus |
US9003132B2 (en) | 2010-11-01 | 2015-04-07 | Olympus Corporation | Data processing apparatus and image processing apparatus |
JP2022528349A (ja) * | 2019-03-27 | 2022-06-10 | 无錫海斯凱尓医学技術有限公司 | データ記憶用の装置、方法及び読み取り可能な媒体 |
JP7236172B2 (ja) | 2019-03-27 | 2023-03-09 | 无錫海斯凱尓医学技術有限公司 | データ記憶用の装置、方法及び読み取り可能な媒体 |
US11836098B2 (en) | 2019-03-27 | 2023-12-05 | Wuxi Hisky Medical Technologies Co., Ltd. | Data storage apparatus and method, and readable storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS5914778B2 (ja) | デ−タ処理装置 | |
US20030167368A1 (en) | Transmission control circuit, reception control circuit, communications control circuit, and communications control unit | |
JP2004206487A (ja) | Fifoメモリ回路 | |
KR100348545B1 (ko) | 통신 dma 장치 | |
JPH10116187A (ja) | マイクロコンピュータ | |
JP3700561B2 (ja) | バッファ制御装置 | |
JP2010198171A (ja) | Usbホストコントローラ、及びusbホストコントローラの制御方法 | |
US7716392B2 (en) | Computer system having an I/O module directly connected to a main storage for DMA transfer | |
JP5652866B2 (ja) | バス調停回路及びバス調停方法 | |
JP6631370B2 (ja) | マイクロコンピュータ及び電子制御装置 | |
JP2008118211A (ja) | データ転送装置及びデータ転送方法 | |
JPH07319840A (ja) | マルチcpu装置 | |
JP2000295295A (ja) | ブロック・データ転送用バッファメモリ及びシリアルデータ送受信システム | |
JP2004046891A (ja) | データ処理システム、データ処理装置、外部装置及びデータ伝送方法 | |
JP2803270B2 (ja) | Scsiホストアダプタ回路 | |
JP3651672B2 (ja) | 演算処理システム、特に通信装置のための演算処理システム | |
JP2821176B2 (ja) | 情報処理装置 | |
JP2002229929A (ja) | メモリアクセスコントロール方法及びメモリアクセスコントロール装置 | |
JP2002055937A (ja) | Usb装置 | |
JP2980163B2 (ja) | データ転送方式 | |
JP2565301B2 (ja) | メモリコピー回路 | |
JP2005309711A (ja) | データ転送制御用lsi装置及びそのlsi装置を搭載したデジタルカメラシステム並びにそのデジタルカメラシステムの制御方法 | |
JPH11175312A (ja) | データ転送制御装置 | |
JP2002215564A (ja) | 情報入出力装置 | |
JPH09274594A (ja) | リトライ可能なデータ転送システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070220 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070911 |