(57)【要約】【課題】所定のデータバス幅を持つレジスタ入力データを詰めて書き込むことができ、メモリの使用効率を改善し、データ通信装置の転送速度を所定値に維持できる半導体回路及びそれを用いたデータ通信装置を実現する。【解決手段】半導体回路において状態遷移回路１０は、データ書き込み前のデータ格納状態及び入力される書き込みデータの有効な単位、例えば、有効なバイトに応じて、ＦＩＦＯのデータ格納状態を示す状態信号ＳＴＡを生成し、この状態信号に応じて、バレルシフタ２０は書き込みデータ及び当該書き込みデータの有効な単位を示すバイトイネーブル信号ＥＮＢをそれぞれシフトし、シフト後のイネーブル信号に応じて、アドレス生成回路３１〜３４によりＦＩＦＯの各メモリアレイにおける書き込みアドレスを生成するので、当該書き込みアドレスに従って、ＦＩＦＯの各メモリアレイにシフト後の書き込みデータを書き込む。【選択図】　　図２
2004094865.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータバス幅を持つ記憶手段に上記データバス幅に依存しない単位数の入力データを書き込む半導体回路であって、
上記記憶手段におけるデータの格納状態を示す状態信号を生成する状態遷移手段と、
上記状態信号に応じて、上記入力データと当該入力データの有効な単位を示すイネーブル信号をそれぞれ所定の単位だけシフトするシフト手段と、
上記シフト手段によって出力された上記イネーブル信号に応じて、上記記憶手段における書き込みアドレスを生成するアドレス生成手段と、
上記アドレス生成手段によって生成された上記書き込みアドレスに従って、上記シフト手段によりシフトされた上記入力データを上記記憶手段に書き込む書き込み手段と
を有する半導体回路。
【請求項２】
上記状態遷移手段は、上記記憶手段のデータ格納状態を示す状態信号を保持する保持手段と、
上記保持手段によって保持されている上記状態信号と、上記入力データの有効な単位を示すイネーブル信号に応じて、書き込み後の上記記憶手段のデータ格納状態を示す状態信号を生成する組合せ手段と
を有する請求項１記載の半導体回路。
【請求項３】
上記記憶手段は、上記データバス幅に応じた数のメモリアレイが設けられ、
上記アドレス生成手段は、上記記憶手段の上記各メモリアレイごとに上記書き込みアドレスを生成する
請求項１記載の半導体回路。
【請求項４】
上記アドレス生成手段は、上記書き込みアドレスを保持する保持手段と、
上記保持手段によって保持されている上記書き込みアドレスに書き込みごとにアドレスが進む単位だけ加算する加算手段と、
上記加算手段の加算結果または上記保持手段に保持されている上記書き込みアドレスの何れかを上記シフト手段によってシフトされた上記イネーブル信号に基づき選択する選択手段と
を有する請求項１記載の半導体回路。
【請求項５】
所定のデータバス幅を有する記憶手段に上記データバス幅に依存しない単位数の入力データを保持し、当該記憶手段から上記保持データを順次読み出して送信するデータ通信装置であって、
上記入力データを上記記憶手段に書き込む書き込み制御手段と、
上記記憶手段から保持データを順次読み出す読み出し手段と、
上記読み出し手段によって読み出したデータを送信する送信手段と
を有し、上記書き込み制御手段は、
上記記憶手段におけるデータの格納状態を示す状態信号を生成する状態遷移手段と、
上記状態信号に応じて、上記入力データと当該入力データの有効な単位を示すイネーブル信号をそれぞれ所定の単位だけシフトするシフト手段と、
上記シフト手段より出力された上記イネーブル信号に応じて、上記記憶手段における書き込みアドレスを生成すアドレス生成手段と、
上記アドレス生成手段によって生成された上記書き込みアドレスに従って、上記シフト手段によりシフトされた上記入力データを上記記憶手段に書き込む書き込み手段と
を有するデータ通信装置。
【請求項６】
上記状態遷移手段は、上記記憶手段のデータ格納状態を示す状態信号を保持する保持手段と、
上記保持手段によって保持されている上記状態信号と、上記入力データの有効な単位を示すイネーブル信号に応じて、書き込み後の上記記憶手段のデータ格納状態を示す状態信号を生成する組合せ手段と
を有する請求項５記載のデータ通信装置。
【請求項７】
上記記憶手段は、上記データバス幅に応じた数のメモリアレイが設けられ、
上記アドレス生成手段は、上記記憶手段の上記各メモリアレイごとに上記書き込みアドレスを生成する
請求項５記載のデータ通信装置。
【請求項８】
上記アドレス生成手段は、上記書き込みアドレスを保持する保持手段と、
上記保持手段によって保持されている上記書き込みアドレスに書き込みごとにアドレスが進む単位だけ加算する加算手段と、
上記加算手段の加算結果または上記保持手段に保持されている上記書き込みアドレスの何れかを上記シフト手段によってシフトされた上記イネーブル信号に基づき選択する選択手段と
を有する請求項５記載のデータ通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定のデータバス幅を持つレジスタなどの記憶手段にそれぞれ異なるバイト数のデータを書き込むバイト詰め機能を有する半導体回路に関するものである。
【０００２】
【従来の技術】
複数バイトのデータバス幅を持つレジスタ、例えば、ＦＩＦＯ（Ｆｉｒｓｔ　ｉｎ　Ｆｉｒｓｔ　ｏｕｔ）において、アプリケーションによって、データバス幅と異なるバイト数の入力データを書き込む場合がある。従来では、データバス幅を書き込みの最小単位にするか、またはデータバスに対してバイトごとに有効ビット（Ｖａｌｉｄ　ｂｉｔ）を付加して書き込みデータのバイト数を示す。
【０００３】
データバス幅を書き込みの最小単位にすると、データバス幅と異なるバイト数のデータが入力された場合、例えば、データバス幅より小さいバイト数のデータが入力された場合、書き込みをデータバス幅で行われるので、ＦＩＦＯの領域に有効なデータがない空き領域を生じてしまう。
図１５に示すように、例えば、ＦＩＦＯのデータバス幅が４バイトの場合、入力データが３バイトに続き、４バイトが入力されるとき、最初のデータが３バイトにもかかわらず、書き込みの単位がＦＩＦＯのデータバス幅４バイトなので、ＦＩＦＯに３バイトのデータを書き込み、次に４バイトのデータを書き込むと、最初の３バイトのデータの後ろに１バイト分の空き領域が生じてしまう。
【０００４】
【発明が解決しようとする課題】
このように、上述した従来の書き込み方式によれば、ＦＩＦＯに空き領域が発生し、メモリの利用効率が低下する。また、ＦＩＦＯに書き込んだデータを通信装置によって送信する場合、例えば、一定のデータ転送速度を基準にＦＩＦＯの蓄積データを順次読み出して送信する場合、空き領域が存在することによって、データの実質的な転送レートが目標値より低くなる。即ち、ＦＩＦＯにある空きデータ領域により、データ転送レートを一定に保つことが難しくなる。
この問題を回避するため、例えば、上述したようにデータバスに対して、バイト毎にデータの有効性を示す有効ビットを付加した場合、ＦＩＦＯからデータを読み出すとき、バイトごとに有効ビットをモニタして、有効データであるか否かを判断して、データ転送を行うので、回路の処理負担が大きくなり、高速なデータ転送には適用できないという不利益がある。
【０００５】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、所定のデータバス幅を持つレジスタに当該データバス幅と異なるバイト数の入力データを空き領域を生ずることなく書き込むことができ、メモリの使用効率を改善し、データ通信装置のデータ転送を所望の速度に維持できる半導体回路及びそれを用いたデータ通信装置を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明の半導体回路は、所定のデータバス幅を持つ記憶手段に上記データバス幅に依存しない単位数の入力データを書き込む半導体回路であって、上記記憶手段におけるデータの格納状態を示す状態信号を生成する状態遷移手段と、上記状態信号に応じて、上記入力データと当該入力データの有効な単位を示すイネーブル信号をそれぞれ所定の単位だけシフトするシフト手段と、シフト手段によって出力された上記イネーブル信号に応じて、上記記憶手段における書き込みアドレスを生成するアドレス生成手段と、上記アドレス生成手段によって生成された上記書き込みアドレスに従って、上記シフト手段によりシフトされた上記入力データを上記記憶手段に書き込む書き込み手段とを有する。
【０００７】
また、本発明では、好適には、上記状態遷移手段は、上記記憶手段のデータ格納状態を示す状態信号を保持する保持手段と、上記保持手段によって保持されている上記状態信号と、上記入力データの有効な単位を示すイネーブル信号に応じて、書き込み後の上記記憶手段のデータ格納状態を示す状態信号を生成する組合せ手段とを有する。
【０００８】
また、本発明では、好適には、上記記憶手段は、上記データバス幅に応じた数のメモリアレイが設けられ、上記アドレス生成手段は、上記記憶手段の上記各メモリアレイごとに上記書き込みアドレスを生成する。
【０００９】
また、本発明では、好適には、上記アドレス生成手段は、上記書き込みアドレスを保持する保持手段と、上記保持手段によって保持されている上記書き込みアドレスに書き込みごとにアドレスが進む単位だけ加算する加算手段と、上記加算手段の加算結果または上記保持手段に保持されている上記書き込みアドレスの何れかを上記シフト手段によってシフトされた上記イネーブル信号に基づき選択する選択手段とを有する。
【００１０】
さらに、本発明のデータ通信装置は、所定のデータバス幅を有する記憶手段に上記データバス幅に依存しない単位数の入力データを保持し、当該記憶手段から上記保持データを順次読み出して送信するデータ通信装置であって、上記入力データを上記記憶手段に書き込む書き込み制御手段と、上記記憶手段から保持データを順次読み出す読み出し手段と、上記読み出し手段によって読み出したデータを送信する送信手段とを有し、上記書き込み制御手段は、上記記憶手段におけるデータの格納状態を示す状態信号を生成する状態遷移手段と、上記状態信号に応じて、上記入力データと当該入力データの有効な単位を示すイネーブル信号をそれぞれ所定の単位だけシフトするシフト手段と、上記シフト手段より出力された上記イネーブル信号に応じて、上記記憶手段における書き込みアドレスを生成すアドレス生成手段と、上記アドレス生成手段によって生成された上記書き込みアドレスに従って、上記シフト手段によりシフトされた上記入力データを上記記憶手段に書き込む書き込み手段とを有する。
【００１１】
本発明によれば、半導体回路において状態遷移手段は、データ書き込み前のデータ格納状態及び入力される書き込みデータの有効な単位、例えば、有効なバイトに応じて、記憶手段のデータ格納状態を示す状態信号を生成し、この状態信号に応じて、シフト手段は書き込みデータ及び当該書き込みデータの有効な単位を示すイネーブル信号をそれぞれ所定のシフト単位だけシフトし、さらに、シフト後のイネーブル信号に応じて、アドレス生成手段により記憶手段の各メモリアレイにおける書き込みアドレスを生成するので、当該書き込みアドレスに従って、記憶手段の各メモリアレイにシフト後の書き込みデータを書き込むことで、当該記憶手段のデータバス幅と異なる単位数の書き込みデータが入力されても、入力データを詰めて記憶手段に書き込まれるので、空き領域を発生することなくデータの書き込みを実現される。
【００１２】
【発明の実施の形態】
図１は本発明に係る半導体回路の一実施形態を示す構成図であり、本発明の半導体回路を用いたデータ通信装置の一構成例を示すブロック図である。
本実施形態のデータ通信装置は、例えば、ＩＥＥＥ８０２．１１規格に基づき、データ転送を行う無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ　Ｌｏｃａｌ　Ａｒｅａ　Ｎｅｔｗｏｒｋ　）の送受信装置である。
【００１３】
図示のように、本例のデータ通信装置は、メディアアクセスコントロール（ＭＡＣ：Ｍｅｄｉｕｍ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌ　）１００、ホストインターフェース１１０、メモリ１２０、物理層（ＰＨＹ：Ｐｈｙｓｉｃａｌ　Ｌａｙｅｒ）１３０、及び送受信部１４０によって構成されている。
【００１４】
メディアアクセスコントロール（以下、便宜上ＭＡＣと略して表記する）１００は、他の各部分を制御する機能を有し、データ通信装置全体の動作を制御するのに用いられる。図示のように、ＭＡＣ１００には、ホストインターフェース１１０との送受信データを格納するＦＩＦＯ１０２、物理層１３０との送受信データを格納するＦＩＦＯ１０４、及びＦＩＦＯ１０２と１０４を制御するＦＩＦＯ制御回路１０６が備えられている。
なお、ＦＩＦＯ制御回路１０６及び当該ＦＩＦＯ制御回路の制御を受けてデータの書き込みと読み出しを行うＦＩＦＯ１０２及び／またはＦＩＦＯ１０４は、本発明の半導体回路を構成する。
【００１５】
ホストインターフェース１１０は、アプリケーション側からデータを受け取り、これをＦＩＦＯ１０２を介してＭＡＣ１００に転送し、または、ＭＡＣ１００からの転送データをＦＩＦＯ１０２を介して受け取り、これをアプリケーション側に転送する。アプリケーション側からＭＡＣ１００のＦＩＦＯ１０２にデータを転送する場合、データを提供するアプリケーションによって、ＦＩＦＯ１０２の固有のデータバス幅と異なるバイト数のデータを送信単位としてＦＩＦＯ１０２に送信する場合がある。
【００１６】
メモリ１２０は、ＭＡＣ１００に設けられているＦＩＦＯ１０２とＦＩＦＯ１０４の蓄積データを記憶する。例えば、ＭＡＣ１００がホストインターフェース１１０からデータを入力するとき、入力データがＦＩＦＯ１０２に蓄積され、さらにＦＩＦＯ１０２からメモリ１２０に転送される。逆に、ＭＡＣ１００がホストインターフェース１１０にデータを送信するとき、メモリ１２０に保持された送信データがＦＩＦＯ１０２に転送され、そして、ＦＩＦＯ１０２からホストインターフェース１１０に出力される。
なお、図１では、メモリ１２０がＭＡＣ１００とは別個に設けられているが、ＭＡＣ１００の内部に設けることもできる。
【００１７】
物理層１３０は、ＦＩＦＯ１０４を介して、ＭＡＣ１００との間データの送受信を行う。例えば、図１に示すデータ通信装置が他の装置に対してデータを送信するとき、物理層１３０は、ＦＩＦＯ１０４からデータを受けて、それに対して所望の処理を加えたのち、送受信部１４０に出力する。逆に、データ通信装置が他の装置からデータを受信するとき、受信装置１４０によって受信したデータが物理装置１３０に転送され、物理層１３０は受信したデータに対して所定の処理を行い、処理結果をＦＩＦＯ１０４を介して、ＭＡＣ１００に送信する。
【００１８】
送受信部１４０は、他のデータ通信装置に対して信号の送受信を行う。送信するとき、物理相層１３０から転送されてくるデータに対して、データ通信規格で決められた変調方式で変調し、所定の無線チャネルを通じて変調信号を送信する。また、受信するとき、他の通信装置によって送信された電波信号を受信して、受信信号を通信規格によって決められた変調及び復調方式に従って復調し、得られたデータを物理層１３０を介して、ＭＡＣ１００に転送する。
【００１９】
次に、本実施形態におけるＦＩＦＯ制御回路１０６について説明する。
本実施形態において、ＭＡＣ１００に設けられているＦＩＦＯ１０２とＦＩＦＯ１０４は、それぞれ固定のデータバス幅を有する。しかし、ホストインターフェース１１０及び物理層１３０から転送されてくるデータは、これらのＦＩＦＯのデータバス幅と異なるバイト数で入力されることがある。
このため、ＦＩＦＯのデータバス幅を単位として入力データをＦＩＦＯ１０２または１０４に格納する場合、データバス幅以下のバイト数のデータを受け取ったとき、ＦＩＦＯ１０２または１０４には、空き領域が生じてしまう。
【００２０】
本実施形態のＦＩＦＯ制御回路１０６は、入力されるデータのバイト数に応じて、ＦＩＦＯ１０２または１０４へのデータの書き込みを制御することにより、これらのＦＩＦＯに空き領域を生じることなくデータを格納させる。
【００２１】
図２は、ＦＩＦＯ制御回路１０６の一構成例を示している。図２において、ＦＩＦＯ制御回路１０６の制御を受けて動作するＦＩＦＯは、例えば、ＭＡＣ１００に設けられているＦＩＦＯ１０２または１０４の何れかである。図２では、ＦＩＦＯ１０２を例に示している。
【００２２】
図示のように、ＦＩＦＯ制御回路１０６は、状態遷移回路１０、バレルシフタ２０、及びアドレス生成回路３１，３２，３３，３４によって構成されている。状態遷移回路１０は、書き込みバイトイネーブル信号ＥＮＢ及び書き込み前の状態信号に応じて、書き込み後のＦＩＦＯの状態を示す状態信号ＳＴＡを生成し、バレルシフタ２０に出力する。
【００２３】
バレルシフタ２０は、状態遷移回路１０からの状態信号ＳＴＡに応じて、書き込みデータＤｉｎをシフトし、シフト後のデータＤＯ３　，ＤＯ２　，ＤＯ１　及びＤＯ０　をＦＩＦＯ１０２に出力する。また、バレルシフタ２０は、状態遷移回路１０からの状態信号ＳＴＡに応じて、書き込みバイトイネーブル信号ＥＮＢをシフトし、シフト後の書き込みバイトイネーブル信号ＥＯ３　，ＥＯ２　，ＥＯ１　及びＥＯ０　をアドレス生成回路３１〜３４に出力する。
【００２４】
アドレス生成回路３１，３２，３３，３４は、それぞれＦＩＦＯ１０２に設けられているメモリアレイ４１，４２，４３，４４に対応して設けられている。これらのアドレス生成回路は、バレルシフタ２０から出力される書き込みバイトイネーブル信号ＥＯ３　，ＥＯ２　，ＥＯ１　及びＥＯ０　に応じて、メモリアレイ４１〜４４における書き込みアドレスＷＡ３　〜ＷＡ０　を生成する。
【００２５】
ＦＩＦＯ１０２（または１０４）は、図示のように、複数のメモリアレイ４１〜４４によって構成されている。各メモリアレイにおいて、バイト単位でデータの書き込み及び読み出しが行われる。書き込みのとき、各メモリアレイは、対応するアドレス生成回路によって生成された書き込みアドレスＷＡ３　〜ＷＡ０　に応じて、指定されたメモリに書き込みデータＤＯ３　〜ＤＯ０　を書き込む。読み出しのとき、それぞれのメモリアレイに格納されているデータが読み出し選択回路５０によって選択されて、外部に出力される。
【００２６】
なお、図２に示すＦＩＦＯ１０２は、４バイトのデータバス幅を有する。即ち、ＦＩＦＯ１０２は、４つのメモリアレイ４１〜４４によって構成されており、同時に４バイトのデータを書き込むことができる。ただし、本発明では、この構成に限定されるものではなく、ＦＩＦＯのデータバス幅を任意の値にすることができる。この場合、ＦＩＦＯにはデータバス幅に応じた数のメモリアレイが設けられ、また、ＦＩＦＯ制御回路１０６にもＦＩＦＯのデータバス幅に応じた数のアドレス生成回路が設けられる。さらに、バレルシフタ２０もそれに応じた構成となる。
【００２７】
以下、本実施形態のＦＩＦＯ制御回路１０６の各構成部分について説明する。
図３は、状態遷移回路１０の一構成例を示す回路図である。
図示のように、状態遷移回路１０は、組合せ回路１１とフリップフロップ１２によって構成されている。
【００２８】
組合せ回路１１は、書き込みバイトイネーブル信号ＥＮＢ及び前回の状態信号に応じて、遷移後の状態信号ＳＴＡを生成し、フリップフロップ１２によって保持させる。
フリップフロップ１２は、例えば、Ｄ型のフリップフロップによって構成されている。フリップフロップ１２には、組合せ回路１１によって生成される状態信号ＳＴＡが保持されている。フリップフロップ１２によって保持されている状態信号ＳＴＡがバレルシフタ２０に出力される。
【００２９】
図４は、遷移前の状態信号ＳＴＡ、書き込みバイトイネーブル信号ＥＮＢ及び遷移後の状態信号ＳＴＡを示している。
図示のように、遷移前の状態として、例えば、ＦＩＦＯのデータバス幅に対応した４バイトＤ３，Ｄ２，Ｄ１，Ｄ０がすべて空き状態にあるとする。書き込みバイトイネーブル信号ＥＮＢは、例えば、ＦＩＦＯのデータバス幅に対応して、４ビットのデータからなる。即ち、書き込みデータＤｉｎに応じて、書き込みバイトイネーブル信号ＥＮＢの各ビットが設定される。書き込みデータＤｉｎに有効なバイトに対応するビットに「１」が設定され、無効のバイト、即ち、データが入っていないバイトに対応するビットに「０」が設定される。
【００３０】
図４に示すように、書き込みバイトイネーブル信号ＥＮＢに応じて、遷移後の状態信号ＳＴＡがそれぞれ４つの状態のうち何れか１つを示す。例えば、書き込みデータＤｉｎの４バイトのすべてが有効なデータである場合、書き込みバイトイネーブル信号ＥＮＢが「１１１１」に設定される。遷移後のＦＩＦＯには、データバス幅に対応する４バイト分のメモリがすべて書き込まれるので、ＦＩＦＯは遷移前の状態、即ち、状態１に戻る。また、書き込みデータＤｉｎの４バイトのデータがすべて無効なデータである場合には、書き込みバイトイネーブル信号ＥＮＢが「００００」に設定される。この場合、ＦＩＦＯに実際の書き込みが行われないので、ＦＩＦＯは前の状態、即ち、状態１に保持される。
【００３１】
次に、書き込みデータＤｉｎのうち、１バイトのみが有効である場合、書き込み後、ＦＩＦＯの４バイト分のメモリのうち、１バイトのみが書き込まれ、他の３バイトが空き領域となる。即ち、図４に示す状態２となる。
同様に、書き込みデータＤｉｎがそれぞれ２バイトまたは３バイトが有効である場合、書き込み後ＦＩＦＯはそれぞれ図４に示す状態３及び状態４となる。
【００３２】
組合せ回路１１は、状態遷移前の状態信号ＳＴＡと書き込みバイトイネーブル信号ＥＮＢに応じて、状態遷移後の状態信号ＳＴＡを生成する論理回路によって構成されている。
なお、本実施形態のＦＩＦＯ制御回路において、状態信号ＳＴＡは、書き込み後のＦＩＦＯの各メモリアレイに格納されている書き込みデータの状況に対応して、４ビットのデータから構成するか、または、図４に示す４つの状態、即ち、状態１〜状態４を表す、例えば２ビットのデータから構成することもできる。
【００３３】
また、図４には、遷移前の状態として、状態１のみを示しているが、他の状態に対して、書き込みバイトイネーブル信号ＥＮＢに応じて遷移後の状態がそれぞれ決まる。このため、状態遷移回路１０における組合せ回路１１は、遷移前の４つの状態と４つの書き込みバイトイネーブル信号ＥＮＢからなる１６の組合せに対して、それぞれ遷移後の状態を示す状態信号ＳＴＡを出力する。
【００３４】
組合せ回路１１から出力される遷移後の状態信号ＳＴＡが、フリップフロップ１２によって保持される。フリップフロップ１２に保持されている遷移後の状態信号ＳＴＡが組合せ回路１１に出力するとともに、バレルシフタ２０にも出力される。
【００３５】
図５は、バレルシフタ２０の入力信号と出力信号を示すブロック図である。図示のように、バレルシフタ２０には、書き込みデータＤｉｎ、書き込みバイトイネーブル信号ＥＮＢ、及び状態遷移回路１０から出力される状態信号ＳＴＡが入力される。そして、バレルシフタ２０は、これらの入力データ及び入力信号に応じて、書き込みデータＤｉｎ及び書き込みバイトイネーブル信号ＥＮＢをシフトし、シフト後の書き込みデータＤＯ３　，ＤＯ２　，ＤＯ１　，ＤＯ０　及びシフト後の書き込みバイトイネーブル信号ＥＯ３　，ＥＯ２　，ＥＯ１　，ＥＯ０　を出力する。
即ち、バレルシフタ２０には、図５に示すように、書き込みデータＤｉｎをシフトする書き込みデータシフト部２２と、書き込みバイトイネーブル信号ＥＮＢをシフトする書き込みバイトイネーブル信号シフト部２４が含まれている。以下、それぞれの部分回路について説明する。
【００３６】
図６は、書き込みデータＤｉｎをシフトする書き込みデータシフト部２２の一構成例を示す回路図である。図示のように、書き込みデータシフト部２２は、選択回路２０１，２０２，２０３及び２０４によって構成されている。
【００３７】
選択回路２０１〜２０４は、書き込みデータＤｉｎの４バイトのうち、状態信号ＳＴＡに応じて、何れか１バイトを選択する。図６に示すように、各選択回路は、端子Ｓから入力される状態信号ＳＴＡに応じて、データ入力端子Ａ，Ｂ，Ｃ，Ｄから入力される４バイトのデータのうち、何れか１バイトを選択して端子Ｙに出力する。
【００３８】
例えば、状態信号ＳＴＡが状態１を示すとき、選択回路２０１〜２０４は、それぞれデータ入力端子Ａから入力される１バイトのデータを選択し、状態信号ＳＴＡが状態２を示すとき、選択回路２０１〜２０４は、それぞれデータ入力端子Ｂから入力される１バイトのデータを選択し、状態信号ＳＴＡが状態３を示すとき、選択回路２０１〜２０４は、それぞれデータ入力端子Ｃから入力される１バイトのデータを選択し、状態信号ＳＴＡが状態４を示すとき、選択回路２０１〜２０４は、それぞれデータ入力端子Ｄから入力される１バイトのデータを選択する。
選択回路２０１〜２０４によって選択された１バイトずつのデータがそれぞれシフト後書き込みデータＤＯ３　，ＤＯ２　，ＤＯ１　及びＤＯ０　としてＦＩＦＯに出力される。
【００３９】
図６に示すように、入力される書き込みデータの各バイトがそれぞれＤ３，Ｄ２，Ｄ１，Ｄ０で表記される。即ち、符号Ｄ３〜Ｄ０はそれぞれ１バイトのデータを示す。
図７は、図６に示す書き込みデータシフト部２２のシフト動作を示す図である。図７において、状態１〜状態４それぞれに、ＦＩＦＯのデータ格納状態及びシフト後の書き込みデータの各バイトＤ０３　〜ＤＯ０　を示している。
【００４０】
状態１の場合、図７に示すように、シフト後に書き込みデータＤｉｎの各バイトが変化しない。
状態２の場合、図示のように、シフト後に書き込みデータＤｉｎが１バイト分左にシフトされる。
状態３の場合、図示のように、シフト後に書き込みデータＤｉｎが２バイト分左にシフトされる。
そして、状態４の場合、図示のように、シフト後に書き込みデータＤｉｎが３バイト分左にシフトされる。
【００４１】
図７に示すように、状態１では、データバス幅に対応する４バイト分のＦＩＦＯのメモリアレイがすべて空きである。状態２は、４バイト分のメモリアレイのうち、右側の１バイト分だけデータが格納され、他の３バイトが空き領域となる。同様に、状態３と状態４は、それぞれ２バイトまたは３バイト分のデータがＦＩＦＯのメモリアレイに格納されている。
【００４２】
このため、バレルシフタ２０において、状態１のとき、書き込みデータＤｉｎの順序が変化しないので、４バイトの書き込みデータが入力されるときの順番でＦＩＦＯ１０２に出力され、ＦＩＦＯ１０２のメモリアレイ４１〜４４にそれぞれ書き込まれる。状態２のとき、書き込みデータＤｉｎが１バイト分だけ左にシフトしてＦＩＦＯ１０２に出力される。状態３のとき、書き込みデータＤｉｎが２バイト分だけ左にシフトしてＦＩＦＯ１０２に出力される。そして、状態４のとき、書き込みデータＤｉｎが３バイト分だけ左にシフトしてＦＩＦＯ１０２に出力される。
【００４３】
このように、バレルシフタ２０において、状態信号ＳＴＡに応じて、入力される書き込みデータＤｉｎに対して所定のバイト数だけシフトしたデータをＦＩＦＯ１０２に出力することにより、ＦＩＦＯ１０２において書き込みバイトイネーブル信号ＥＮＢに応じて指定されたバイトだけメモリアレイに書き込む。この結果、ＦＩＦＯのデータバス幅と異なるバイト数の書き込みデータＤｉｎが入力されても、ＦＩＦＯ１０２の各メモリアレイに隙間なくデータを書き込みことができる。
【００４４】
図８は、バレルシフタ２０のうち、書き込みバイトイネーブル信号ＥＮＢをシフトする書き込みバイトイネーブルシフト部２４の一構成例を示す回路図である。図示のように、書き込みバイトイネーブルシフト部２４は、選択回路２１１，２１２，２１３及び２１４によって構成されている。図示のように、書き込みバイトイネーブルシフト部２４は、図６に示す書き込みデータシフト部２２とほぼ同じ構成を有する。ただし、選択回路２１１〜２１４は、４ビットの書き込みバイトイネーブル信号ＥＮＢからそれぞれ１ビットを選択して出力する。即ち、図８において、符号Ｅ３，Ｅ２，Ｅ１及びＥ０はそれぞれ１ビットのデータを示す。
【００４５】
図８に示すように、本実施形態において、書き込みバイトイネーブル信号ＥＮＢは、ＦＩＦＯのデータバス幅に応じて、例えば、４ビットからなる。この４ビットのデータの各ビットが、書き込みデータＤｉｎが有効なバイトを示している。例えば、書き込みデータＤｉｎが２バイトの場合、書き込みバイトイネーブル信号ＥＮＢが「００１１」となり、書き込みデータＤｉｎが４バイトの場合、書き込みバイトイネーブル信号ＥＮＢが「１１１１」となる。
【００４６】
書き込みバイトイネーブルシフト部２４は、上述した書き込みデータシフト部２２と同様に、状態信号ＳＴＡに応じて所定のビット数だけシフトした書き込みバイトイネーブル信号をＦＩＦＯ１０２に出力する。
【００４７】
書き込みバイトイネーブルシフト部２４によって、書き込みバイトイネーブル信号ＥＮＢを所定のビットだけシフトした結果ＥＯ３　〜ＥＯ０　と、書き込みデータシフト部２２によってシフトされた書き込みデータＤＯ３　〜ＤＯ０　がともにＦＩＦＯ１０２に出力される。ＦＩＦＯ１０２において、アドレス生成回路によって生成された書き込みアドレスに応じて、書き込みデータの有効なバイトのみがメモリアレイに書き込まれるので、空き領域を発生させることなく書き込みデータをＦＩＦＯ１０２に格納することができる。
【００４８】
次に、アドレス生成回路３１〜３４について説明する。
図９は、アドレス生成回路の一構成例を示す回路図である。アドレス生成回路３１〜３４は、同じ構成を有し、ＦＩＦＯ１０２のメモリアレイ４１〜４４にそれぞれ対応して設けられている。例えば、アドレス生成回路３１によって生成される書き込みアドレスＷＡ３　は、メモリアレイ４１の書き込みメモリを指示し、アドレス生成回路３４によって生成される書き込みアドレスＷＡ０　は、メモリアレイ４４の書き込みメモリを指示する。
なお、図９において、アドレス生成回路３１を例に示している。他のアドレス生成回路は、これと同じ構成を有し、同じ動作を行う。
【００４９】
図９に示すように、アドレス生成回路３１は、加算器３０１、選択回路３０２及びフリップフロップ３０３によって構成されている。
フリップフロップ３０３は、例えば、Ｄ型フリップフロップによって構成される。フリップフロップ３０３には、ＦＩＦＯ１０２のメモリアレイ４１に対して、書き込みを行うメモリを指示する書き込みアドレスＷＡ３　が格納されている。
【００５０】
加算器３０１は、フリップフロップ３０３に格納されている書き込みアドレスＷＡ３　に対して、書き込みごとに進むアドレス分、例えば、「１」を加算し、加算結果を選択回路３０２に出力する。
選択回路３０２は、フリップフロップ３０３に格納されている書き込みアドレスＷＡ３　または、加算器３０１から出力された新しいアドレスの何れかを、バレルシフタ２０から入力されるシフト後の書き込みバイトイネーブル信号ＥＯ３　に応じて選択し、選択結果をフリップフロップ３０３に出力する。例えば、シフト後の書き込みバイトイネーブル信号ＥＯ１　が「１」のとき、加算器３０１の加算結果が選択され、逆に、シフト後の書き込みバイトイネーブル信号ＥＯ１　が「０」のとき、フリップフロップ３０３の出力が選択される。このため、書き込みバイトイネーブル信号ＥＯ１　が「１」のとき、書き込みアドレスＷＡ３　が更新され、逆に書き込みバイトイネーブル信号ＥＯ１　が「０」のとき、書き込みアドレスＷＡ３　がそのまま保持される。
【００５１】
上述したように、アドレス生成回路３１において、書き込みバイトイネーブル信号ＥＯ１　に応じて、書き込みアドレスＷＡ３　を更新される。即ち、シフト後の書き込みデータＤＯ１　が有効である場合、書き込みアドレスＷＡ３　が更新され、当該更新されたアドレスによって指示されたメモリにシフト後の書き込みデータＤＯ１　が書き込まれる。一方、シフト後の書き込みデータＤＯ１　が有効ではない場合、メモリアレイ４１においては、データの書き込みが行われないので、書き込みアドレスＷＡ３　が更新されない。
【００５２】
以上、本実施形態のＦＩＦＯ制御回路の各部分回路について、それぞれの構成について説明した。次に、具体的な書き込みデータ例を用いて、本実施形態のＦＩＦＯ制御回路の全体の動作について説明する。
ここで、書き込み動作の一例として、例えば、ＦＩＦＯ１０２が状態１において、１回目の書き込みにより３バイトの書き込みデータが書き込まれ、そして、２回目の書き込みにより４バイトの書き込みデータが書き込かれる動作について説明する。
【００５３】
図１０は、この一連の書き込み動作を示すタイミングチャートである。以下、図１０を参照しつつ、ＦＩＦＯ制御回路１０６及びＦＩＦＯ１０２の動作について説明する。
まず、１回目の書き込みにおいて、３バイトの書き込みデータＤｉｎがＦＩＦＯ制御回路１０６のバレルシフタ２０に入力される。これに伴って、書き込みバイトイネーブル信号ＥＮＢが入力される。このとき、書き込みバイトイネーブル信号ＥＮＢは、３バイトの書き込みデータに対応して、「０１１１」に設定されている。
【００５４】
次に、ＦＩＦＯ制御回路１０６において、状態遷移回路１０が書き込みバイトイネーブル信号ＥＮＢと遷移前の状態信号ＳＴＡに応じて、遷移後の状態信号ＳＴＡを出力する。ここで、遷移前の状態信号ＳＴＡが状態１を示しているため、遷移後の状態信号ＳＴＡが書き込みバイトイネーブル信号ＥＮＢに従って、状態４を示す信号が出力される。
【００５５】
ここで、３バイトの書き込みがＦＩＦＯ１０２において最初の書き込みであるとすると、アドレス生成回路３１〜３４によって、書き込みアドレスＷＡ３　〜ＷＡ０　として、「００００」が出力される。即ち、ＦＩＦＯ１０２において、メモリアレイ４１〜４４の先頭のメモリに対して、１回目の書き込みが行われる。
【００５６】
図１１は、１回目の書き込みにおいてバレルシフタ２０による書き込みデータＤｉｎ及び書き込みバイトイネーブル信号ＥＮＢのシフト動作を示す図である。図１１（ａ）は、入力される書き込みデータＤｉｎ及びシフト後の書き込みデータＤＯ３　，ＤＯ２　，ＤＯ１　，ＤＯ０　を示している。また、同図（ｂ）は、入力される書き込みバイトイネーブル信号ＥＮＢ及びシフト後の書き込みバイトイネーブル信号ＥＯ３　，ＥＯ２　，ＥＯ１　，ＥＯ０　を示している。図示のように、書き込み前にＦＩＦＯ１０２が状態１にあるので、書き込みデータ及び書き込みバイトイネーブル信号がシフトされず、そのままバレルシフタ２０によって出力される。
【００５７】
そして、図１２は、１回目の書き込み終了後ＦＩＦＯ１０２のデータの格納状況を示している。図示のように、書き込みデータＤｉｎがＦＩＦＯ１０２のデータバス幅より小さく、３バイトだったので、書き込みの結果、ＦＩＦＯ１０２に３バイトのデータが格納される。
【００５８】
次に、２回目の書き込みにおいて、４バイトの書き込みデータＤｉｎが入力される。このとき、書き込みバイトイネーブル信号ＥＮＢが「１１１１」となる。状態遷移回路１０において、前回の書き込み後の状態信号及び今回の書き込みバイトイネーブル信号ＥＮＢに応じて、遷移後の状態信号ＳＴＡが生成される。２回目の書き込みデータＤｉｎがＦＩＦＯのデータバス幅と同じく４バイトなので、遷移後の状態が遷移前の状態と同じく、状態４である。
【００５９】
バレルシフタ２０において、状態遷移回路１０からの状態信号ＳＴＡに応じて、入力される書き込みデータＤｉｎ及び書き込みバイトイネーブル信号ＥＮＢがそれぞれシフトされる。
図１３は、バレルシフタ２０による書き込みデータＤｉｎ及び書き込みバイトイネーブル信号ＥＮＢのシフト動作を示している。図１３（ａ）は、入力される書き込みデータＤｉｎ及びシフト後の書き込みデータＤＯ３　，ＤＯ２　，ＤＯ１　，ＤＯ０　を示している。また、同図（ｂ）は、入力される書き込みバイトイネーブル信号ＥＮＢ及びシフト後の書き込みバイトイネーブル信号ＥＯ３　，ＥＯ２　，ＥＯ１，ＥＯ０　を示している。図示のように、書き込み前にＦＩＦＯ１０２が状態４にあるので、書き込みデータ及び書き込みバイトイネーブル信号がそれぞれ３回だけシフトされる。即ち、シフト後の書き込みデータは、「Ｄ０，Ｄ３，Ｄ２，Ｄ１」となる。また、シフト後のイネーブル信号がシフト前と同じく、「１１１１」となる。
【００６０】
アドレス生成回路３１〜３４において、バレルシフタ２０から出力される書き込みバイトイネーブル信号ＥＯ３　，ＥＯ２　，ＥＯ１　とＥＯ０　に応じて、書き込みアドレスＷＡ３　〜ＷＡ０　が生成される。
１回目の書き込みにおいて、ＦＩＦＯ１０２に３バイトのデータが書き込まれたので、２回目の書き込みにおいて、４つの書き込みデータＷＡ３　〜ＷＡ０　のうち、ＷＡ３　が１回目のときと同じアドレスに保持され、ＷＡ２　，ＷＡ１　とＷＡ０が更新される。このため、２回目の書き込みにおいて、バレルシフタ２０から出力される４バイトの書き込みデータＤＯ３　，ＤＯ２　，ＤＯ１　及びＤＯ０　のうち、データＤＯ３　がＦＩＦＯ１０２の最初の行に書き込まれ、他の３つのデータＤＯ２　，ＤＯ１　及びＤＯ０　がＦＩＦＯ１０２の２行目に書き込まれる。
【００６１】
図１４は、２回目の書き込みが終了したときにＦＩＦＯ１０２の格納データを示す図である。図示のように、１回目の書き込みにおいて、３バイトのデータがＦＩＦＯ１０２に書き込まれ、２回目の書き込みによって、さらに４バイトのデータがＦＩＦＯ１０２に書き込まれる。２回目の書き込みのとき、シフトされた書き込みデータがバレルシフタ２０から出力され、さらに、書き込みバイトイネーブル信号に応じてＦＩＦＯ１０２の各メモリアレイに対して書き込みアドレスが生成されるので、２回目の書き込み後、ＦＩＦＯ１０２には空き領域を生じることなく、書き込みデータが順次詰めて格納される。
【００６２】
以上説明したように、本実施形態によれば、入力される書き込みデータＤｉｎのバイト数及びＦＩＦＯにおける前回書き込み後の状態に応じて、バレルシフタ２０において、入力される書き込みデータＤｉｎを所定のバイト数だけシフトし、さらに、入力される書き込みバイトイネーブル信号ＥＮＢの各ビットを所定のビット数だけシフトする。そして、ＦＩＦＯの各メモリアレイに対応するアドレス生成回路３１〜３４により、バレルシフタ２０によってシフトしたあとの書き込みバイトイネーブル信号に応じて、各メモリアレイにおける書き込みアドレスＷＡ３　〜ＷＡ０　をそれぞれ生成するので、ＦＩＦＯのデータバス幅と異なるバイト数の書き込みデータＤｉｎが入力された場合でも、空き領域を生じることなく書き込みデータの各バイトを詰めて書き込むことができる。
【００６３】
【発明の効果】
以上説明したように、本発明の半導体回路及びそれを用いたデータ通信装置によれば、ＦＩＦＯにデータバス幅と異なるバイト数のデータが入力される場合、ＦＩＦＯにおけるデータの格納状態及び書き込みデータのバイト数に応じて、書き込みデータ及び書き込みバイトイネーブル信号を適宜シフトし、そして、ＦＩＦＯの各メモリアレイにそれぞれ独立に書き込みアドレスを生成することにより、ＦＩＦＯのデータバス幅と異なるバイト数のデータが入力されても、空き領域を生じることなく入力データを詰めてＦＩＦＯに格納することができ、メモリの利用効率を向上させるとともに、データ通信を所望の転送速度で行うことができる利点がある。
【図面の簡単な説明】
【図１】本発明に係る半導体回路を用いたデータ通信装置の一実施形態を示す構成図である。
【図２】ＦＩＦＯ制御回路とＦＩＦＯを含む部分回路を示す回路図である。
【図３】状態遷移回路の一構成例を示す回路図である。
【図４】書き込みバイトイネーブル信号及び書き込みによる状態の遷移を示す図である。
【図５】バレルシフタの入力信号と出力信号を示すブロック図である。
【図６】バレルシフタにおける書き込みデータシフト部の一構成例を示す回路図である。
【図７】書き込みデータシフト部のシフト動作を示す図である。
【図８】バレルシフタにおける書き込みバイトイネーブルシフト部の一構成例を示す回路図である。
【図９】アドレス生成回路の一構成例を示す回路図である。
【図１０】書き込み動作の一例を示すタイミングチャートである。
【図１１】３バイトの入力データを書き込む場合、バレルシフタにける書き込みデータ及び書き込みバイトイネーブル信号のシフト状況を示す図である。
【図１２】３バイトのデータを書き込んだあとのＦＩＦＯの状態を示す図である。
【図１３】４バイトの入力データを書き込む場合、バレルシフタにおける書き込みデータ及び書き込みバイトイネーブル信号のシフト状況を示す図である。
【図１４】４バイトのデータを書き込んだあとのＦＩＦＯの状態を示す図である。
【図１５】従来の書き込みによるＦＩＦＯの格納データの一例を示す図である。
【符号の説明】
１００…メディアアクセスコントロール（ＭＡＣ）、１０２，１０４…ＦＩＦＯ、１０６…ＦＩＦＯ制御回路、１１０…ホストインターフェース、１２０…メモリ、１３０…物理層（ＰＨＹ）、１４０…送受信部、１０…状態遷移回路、２０…バレルシフタ、３１，３２，３３，３４…アドレス生成回路、４１，４２，４３，４４…メモリアレイ、５０…読み出し選択回路。
【図１】
2004094865.tif 000003
【図２】
2004094865.tif 000004
【図３】
2004094865.tif 000005
【図４】
2004094865.tif 000006
【図５】
2004094865.tif 000007
【図６】
2004094865.tif 000008
【図７】
2004094865.tif 000009
【図８】
2004094865.tif 000010
【図９】
2004094865.tif 000011
【図１０】
2004094865.tif 000012
【図１１】
2004094865.tif 000013
【図１２】
2004094865.tif 000014
【図１３】
2004094865.tif 000015
【図１４】
2004094865.tif 000016
【図１５】
2004094865.tif 000017