(57)【要約】【課題】  入力バス幅＜出力バス幅となるFIFOにおいて、データ処理単位によりFIFO内に有効データ格納量が出力バス幅に満たない半端な量しか存在しない場合に、データ処理単位に依存せずFIFO内有効データを正確に読み出したい。【解決手段】  FIFOに対してダミーデータの書き込み手段を設けて、出力バス幅に満たない分のデータをダミーデータで埋めることで、データ読み出しを可能とする。またダミーデータの書き込み回数から出力データのうち実際に有効なデータが何bitであるかを知ることができる。【選択図】  図４
2010020815.tif 000002
【特許請求の範囲】
【請求項１】
FIFOに対して任意の書き込みデータと、外部からの入力データを切り替えて出力するデータ切り替え手段と、
前記任意の書き込みデータを任意の回数書き込むための任意データ書き込み手段とを備えることを特徴とするFIFOアクセス回路。
【請求項２】
請求項１に記載のFIFOアクセス回路において、前記任意の書き込みデータ書き込み回数はFIFOの空きがなくなるまでであることを特徴とするFIFOアクセス回路。
【請求項３】
請求項２に記載のFIFOアクセス回路において、前記任意の書き込みデータ書き込み回数からFIFO内に格納されている外部からの入力データ量を検出することを特徴とするFIFOアクセス回路。
【請求項４】
請求項１〜請求項３のいずれかに記載のFIFOアクセス回路において、FIFOの入力と出力のデータバス幅が異なることを特徴とするFIFOアクセス回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、FIFO内に格納されている有効データ量に応じてアクセスを制御するFIFOアクセス回路に関するものである。
【背景技術】
【０００２】
FIFOは様々なデータ処理回路においてバッファとして用いられている。
【０００３】
図１に一般的なFIFOを含む回路ブロック図を示して、FIFO回路の動作について簡単に説明する。
【０００４】
102の書き込み制御回路と103読み出し制御回路の間でデータ送信を行う際にFIFOを使用している。101はデータ送信全体の制御を行うためのMPU、104はFIFO内のメモリアレイ105への書き込み及び読み出し動作の制御を行うためのFIFOアクセス制御回路、151は入力データ、152は出力データである。
【０００５】
図２に書き込み制御回路102の動作フローを示す。
【０００６】
書き込み制御回路102はMPU101から書き込み要求信号111のアサートにて書き込み要求を受ける(S201)と、入力データ151をFIFOに書き込むための制御を開始する。書き込み要求を受けた書き込み制御回路102はFIFOアクセス制御回路104からのフル信号115によりFIFOに空きがあるか否かを確認する(S202)。FIFOに空きが無い場合はフル信号115の確認を繰り返し、読み出し動作によりFIFOに空きができるのを待つ(S203)。FIFOに空きがある場合は入力データ151をFIFO書き込みデータ113として出力し、同時にFIFO書き込みトリガ114を出力する(S204)。また同時に書き込み完了トリガ122をMPU101に対して出力する(S205)。MPU101は書き込み完了トリガ122を受けて書き込み要求信号111をネゲートすることで書き込み処理は完了する(S206)。
【０００７】
図３に読み出し制御回路103の動作フローを示す。
【０００８】
読み出し制御回路103はMPU101から読み出し要求信号112のアサートにて読み出し要求を受ける(S301)と、FIFOからデータを取り出し出力データ152として出力するための制御を開始する。読み出し要求を受けた読み出し制御回路103はFIFOアクセス制御回路104からのエンプティ信号118によりFIFOに有効データが格納されているか否かを確認する(S302)。FIFOに有効データが格納されていない場合はエンプティ信号118の確認を繰り返し、書き込み動作により有効データが格納されるのを待つ(S303)。FIFOに有効データが格納されている場合はFIFO読み出しトリガ117を出力する(S304)。FIFO読み出しトリガを受けたFIFOアクセス制御回路104は有効データをFIFO読み出しデータ116として出力し、このデータを読み出し制御回路103は出力データ152としてラッチする(S305)。また同時に読み出し完了トリガ123をMPU101に対して出力する(S306)。MPU101は読み出し完了トリガ123を受けて読み出し要求信号112をネゲートすることで読み出し処理は完了する(S307)。
【０００９】
FIFOアクセス制御回路104内部には書き込み／読み出し対象となるメモリアドレスを管理しておりアドレスデータをデコードした結果を書き込みメモリ選択信号120及び読み出しメモリ選択信号121として出力する。また書き込みアドレスと読み出しアドレスを比較することでFIFO内の有効データ量を検出し、FIFO内に空きメモリが無い場合はフル信号115を、有効データが無い場合はエンプティ信号118をアサートする。
【００１０】
しかし上記の構成ではMPU101からFIFO内の有効データ格納量を確認することができず、効率的なデータ送信を行えないという問題があり、このような問題に対して、特許文献1〜特許文献4などにより、FIFO内の有効データ格納量を検出するための方法が提案されている。
【００１１】
例えば特許文献1においては、ライトアドレスとリードアドレスの差をMPUに出力することで有効データ量を検出することを提案している。
【００１２】
また特許文献2においては、ライトアドレスとリードアドレスの差からアクセス調停する回路を追加することでアクセス効率をあげることを提案している。
【００１３】
また特許文献3においては、メモリアレイ内のメモリそれぞれに有効データが格納されているか否かを示すレジスタを追加することを提案している。
【００１４】
また特許文献4においては、メモリアレイ内のメモリに書き込み時間データを追加することを提案している。
【特許文献１】特開平5-189955号公報
【特許文献２】特開2003-263883号公報
【特許文献３】特開平5-51931号公報
【特許文献４】特開平2-183487号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
特許文献1に提案されている方法にてFIFO内の有効データ格納量を検出することは可能である。しかしこれは入力データと出力データのバス幅が同じ場合においては有効であるが、入出力のバス幅が異なるFIFOにおいてはこの制御をこのまま行うことができない。
【００１６】
また上記入出力のバス幅が異なるFIFOにおいて、入力バス幅＜出力バス幅となる場合は、有効データ格納量が出力バス幅に満たない半端な量しか存在しない場合に、データを読み出すことができない。
【００１７】
例えば入力データバス幅が8bit、出力データバス幅が64bitである場合において、出力データを1回の読み出しに対して入力データは8回の書き込みが必要となる。データ処理単位によっては入力データの書き込み回数が8回単位で行われるとは限らず、このような場合には、出力データ64bit中に1回目のデータ処理における最終データと2回目のデータ処理における開始データとが混在することになる。
【課題を解決するための手段】
【００１８】
そこで本発明のFIFO制御方法はMPUから直接ダミーデータをフル信号がアサートされるまで書き込みを行う回路を追加することで、有効データの格納量を正確に検出し、同時にデータ処理単位にあわせたFIFOアクセス制御方法を提案するものである。
【発明の効果】
【００１９】
ダミーデータの書き込み回数から有効データの格納量を知ることができ、また同時に入力バス幅＜出力バス幅となる場合に、有効データ格納量が出力バス幅に満たない半端な量しか存在しない場合においてもデータを読み出すことができる。
【発明を実施するための最良の形態】
【００２０】
次に、本発明の詳細を実施例の記述に従って説明する。
【実施例１】
【００２１】
以下に図面を用いて、本発明のFIFO制御方法の一実施例を詳細に説明する。
【００２２】
図4に本発明のFIFOを含む回路ブロック図の一例を示す。
【００２３】
図4において図1と異なる点は、MPUからの任意のMPU書き込みデータ172と入力データ151とを選択して書き込みデータ173として出力するための入力データ選択回路106を備えたことと、入力データ選択回路105においていずれのデータを選択するかを決定するデータ選択信号171をMPU101より出力することと、MPUにてフル信号115をモニタすることである。
【００２４】
図5にMPU101のFIFO書き込み時の動作フローを示す。
【００２５】
まず通常のデータ書き込み時について説明する。MPU101は書き込みを行う(S501)にあたり、内部に備えたカウンタをクリアしMPU書き込みデータ172 を出力する(S502)。その後書き込み要求信号111をアサート(S503)し、書き込み動作を開始する。開始後は書き込み制御回路102より書き込み完了トリガ122が出力されるのを待つ(S504)。書き込み完了トリガ122を受けた時点で、現在の書き込みモードを確認(S505)し、通常書き込みモード時は後書き込み要求信号111をネゲート(S506)して書き込み動作を完了する。
【００２６】
次にダミーデータ書き込み時について説明する。S505までは通常データ書き込みと同様のフローであるが、ダミーデータ書き込み時は内部に備えたカウンタ値を+1する (S507)。その後書き込み要求信号111をネゲート(S508)して一旦書き込み処理を完了するが、ここでフル信号115の値を確認してFIFOに空きがあるか否かを判断する(S509)。もしFIFOに空きがあればS503〜S508の動作を繰り返す。FIFOに空きが無くなればフル信号115がアサートされるため書き込み動作を完了する。
【００２７】
上記構成において入力バス幅8bit、出力データバス幅が64bitである場合において、112bit分のデータ転送を行う場合のダミーデータ書き込み動作について説明する。
【００２８】
まずデータ転送開始時は通常データ書き込みモードにてデータ書き込みを行う。112bit中64bit分に関しては出力データバス幅の64bitに達しているため通常に読み出しを行うことができる。残りの48bit分に関してFIFOへの書き込みが終了した時点でMPU101は転送すべき全てのデータがFIFOに書き込み終えたことを検出し、ダミーデータ書き込みモードに切り替えてデータ書き込みを開始する。ダミーデータを2回書き終えたところでFIFO格納データ量は64bitとなり、フル信号115がアサートされるためダミーデータ書き込みを完了して、FIFO格納データ64bitの読み出しを行う。ここで内臓カウンタ値は2であるため読み出したデータのうち16bitがダミーデータであるとしてMPU101はその後の処理を行う。
【００２９】
上記のような出力データバス幅で割り切れない量のデータ転送は例えば、画像処理を行う際に画像処理を行う画像サイズ単位とは別の画像サイズ単位で画像内のドット数を計算したデータ生成を行う場合に発生する。いずれの結果もシステムのバスを経由して外部のRAMに書き込む場合に、システムのバス幅は画像処理を行う画像サイズ単位によって決定されており、FIFO出力バス幅もこれにあわせる必要がある。しかしドット数の計算データはこれとは異なる画像サイズ単位によって計算されるため、FIFO入力バス幅は出力バス幅と異なることになる。また画像処理を行う画像によりデータ量が決定されるため、出力データバス幅で割り切れない量のデータ転送が発生する。
【図面の簡単な説明】
【００３０】
【図１】一般的なFIFOを含む回路ブロック図。
【図２】書き込み制御回路102の動作フロー。
【図３】読み出し制御回路103の動作フロー。
【図４】本発明のFIFOを含む回路ブロック図の一例。
【図５】本発明のMPU101のFIFO書き込み時の動作フロー。
【符号の説明】
【００３１】
１０１  MPU
１０２  書き込み制御回路
１０３  読み出し制御回路
１０４  FIFOアクセス制御回路
１０５  メモリアレイ
１０６  入力データ選択回路
１１１  書き込み要求信号
１１２  読み出し要求信号
１１３  FIFO書き込みデータ
１１４  FIFO書き込みトリガ
１１５  フル信号
１１６  FIFO読み出しデータ
１１７  FIFO読み出しトリガ
１１８  エンプティ信号
１２０  書き込みメモリ選択信号
１２１  読み出しメモリ選択信号
１２２  書き込み完了トリガ
１２３  読み出し完了トリガ
１５１  入力データ
１５２  出力データ
１７１  データ選択信号
１７２  MPU書き込みデータ
１７３  書き込みデータ
【図１】
2010020815.tif 000003
【図２】
2010020815.tif 000004
【図３】
2010020815.tif 000005
【図４】
2010020815.tif 000006
【図５】
2010020815.tif 000007